@soppiya/app-bridge 1.1.5 → 1.1.7
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/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/components/media/Media.js +7 -7
- package/dist/components/meta-data/api/query.js +3 -0
- package/dist/components/meta-data/model/meta.types.js +3 -1
- package/dist/components/meta-data/model/useGetMetaFields.d.ts +4 -0
- package/dist/components/meta-data/ui/MetaData.stories.d.ts +1 -0
- package/dist/components/meta-data/ui/MetaData.stories.js +22 -1
- package/dist/components/meta-data/ui/MetaDataItem.js +22 -0
- package/dist/components/meta-data/ui/MetaobjectRefMetaField.d.ts +3 -0
- package/dist/components/meta-data/ui/MetaobjectRefMetaField.js +30 -0
- package/dist/components/meta-data/ui/SingleLineTextMetaField.js +10 -9
- package/dist/components/metaobjects-entries-picker/index.d.ts +1 -0
- package/dist/components/metaobjects-entries-picker/index.js +2 -0
- package/dist/components/metaobjects-entries-picker/ui/MetaobjectEntriesPicker.d.ts +10 -0
- package/dist/components/{metafield-entries/ui/MetaobjectEntries.js → metaobjects-entries-picker/ui/MetaobjectEntriesPicker.js} +3 -3
- package/dist/components/{metafield-entries/ui/MetaobjectEntries.stories.d.ts → metaobjects-entries-picker/ui/MetaobjectEntriesPicker.stories.d.ts} +1 -1
- package/dist/components/metaobjects-entries-picker/ui/MetaobjectEntriesPicker.stories.js +10 -0
- package/dist/components/metaobjects-picker/api/query.d.ts +8 -0
- package/dist/components/metaobjects-picker/api/query.js +18 -0
- package/dist/components/metaobjects-picker/index.d.ts +1 -0
- package/dist/components/metaobjects-picker/index.js +2 -0
- package/dist/components/metaobjects-picker/model/useMetaobjects.d.ts +24 -0
- package/dist/components/metaobjects-picker/model/useMetaobjects.js +45 -0
- package/dist/components/metaobjects-picker/ui/MetaobjectsPicker.d.ts +9 -0
- package/dist/components/metaobjects-picker/ui/MetaobjectsPicker.js +104 -0
- package/dist/components/metaobjects-picker/ui/MetaobjectsPicker.stories.d.ts +14 -0
- package/dist/components/metaobjects-picker/ui/MetaobjectsPicker.stories.js +10 -0
- package/dist/shared/graphql/gql.d.ts +7 -2
- package/dist/shared/graphql/gql.js +3 -2
- package/dist/shared/graphql/graphql.d.ts +71 -25
- package/dist/shared/graphql/graphql.js +318 -8
- package/dist/styles.css +20 -15
- package/package.json +1 -1
- package/dist/components/metafield-entries/index.d.ts +0 -0
- package/dist/components/metafield-entries/index.js +0 -0
- package/dist/components/metafield-entries/ui/MetaobjectEntries.d.ts +0 -10
- package/dist/components/metafield-entries/ui/MetaobjectEntries.stories.js +0 -10
- package/dist/components/metafields-picker/api/query.d.ts +0 -0
- package/dist/components/metafields-picker/api/query.js +0 -0
- package/dist/components/metafields-picker/index.d.ts +0 -0
- package/dist/components/metafields-picker/index.js +0 -0
- package/dist/components/metafields-picker/model/useMetafields.d.ts +0 -0
- package/dist/components/metafields-picker/model/useMetafields.js +0 -0
- package/dist/components/metafields-picker/ui/MetafieldsPicker.d.ts +0 -2
- package/dist/components/metafields-picker/ui/MetafieldsPicker.js +0 -7
- package/dist/components/metafields-picker/ui/MetafieldsPicker.stories.d.ts +0 -6
- package/dist/components/metafields-picker/ui/MetafieldsPicker.stories.js +0 -8
- /package/dist/components/{metafield-entries → metaobjects-entries-picker}/api/query.d.ts +0 -0
- /package/dist/components/{metafield-entries → metaobjects-entries-picker}/api/query.js +0 -0
- /package/dist/components/{metafield-entries → metaobjects-entries-picker}/model/useMetaobjectEntries.d.ts +0 -0
- /package/dist/components/{metafield-entries → metaobjects-entries-picker}/model/useMetaobjectEntries.js +0 -0
|
@@ -4,6 +4,8 @@ export * from "./collections-pciker";
|
|
|
4
4
|
export * from "./link-list-picker";
|
|
5
5
|
export * from "./media";
|
|
6
6
|
export * from "./meta-data";
|
|
7
|
+
export * from "./metaobjects-entries-picker";
|
|
8
|
+
export * from "./metaobjects-picker";
|
|
7
9
|
export * from "./pages-picker";
|
|
8
10
|
export * from "./products-picker";
|
|
9
11
|
export * from "./savebar";
|
package/dist/components/index.js
CHANGED
|
@@ -4,6 +4,8 @@ export * from "./collections-pciker/index.js";
|
|
|
4
4
|
export * from "./link-list-picker/index.js";
|
|
5
5
|
export * from "./media/index.js";
|
|
6
6
|
export * from "./meta-data/index.js";
|
|
7
|
+
export * from "./metaobjects-entries-picker/index.js";
|
|
8
|
+
export * from "./metaobjects-picker/index.js";
|
|
7
9
|
export * from "./pages-picker/index.js";
|
|
8
10
|
export * from "./products-picker/index.js";
|
|
9
11
|
export * from "./savebar/index.js";
|
|
@@ -98,7 +98,7 @@ const Media_Media = ({ title = "Media", types = [
|
|
|
98
98
|
alignItems: "center",
|
|
99
99
|
children: [
|
|
100
100
|
/*#__PURE__*/ jsxs(BlockStack, {
|
|
101
|
-
className: "
|
|
101
|
+
className: "max-w-[150px]! w-full",
|
|
102
102
|
gapY: 30,
|
|
103
103
|
children: [
|
|
104
104
|
/*#__PURE__*/ jsxs(InlineStack, {
|
|
@@ -192,7 +192,7 @@ const Media_Media = ({ title = "Media", types = [
|
|
|
192
192
|
children: [
|
|
193
193
|
/*#__PURE__*/ jsx(Button, {
|
|
194
194
|
color: "primary",
|
|
195
|
-
className: "
|
|
195
|
+
className: "px-2!",
|
|
196
196
|
onClick: ()=>ref.current?.click(),
|
|
197
197
|
children: /*#__PURE__*/ jsx(SoppiyaIcon, {
|
|
198
198
|
size: "sm",
|
|
@@ -250,7 +250,7 @@ const Media_Media = ({ title = "Media", types = [
|
|
|
250
250
|
children: /*#__PURE__*/ jsx(Button, {
|
|
251
251
|
variant: "outline",
|
|
252
252
|
color: "secondary",
|
|
253
|
-
className: "
|
|
253
|
+
className: "px-2!",
|
|
254
254
|
onClick: toggleView,
|
|
255
255
|
children: /*#__PURE__*/ jsx(SoppiyaIcon, {
|
|
256
256
|
size: "sm",
|
|
@@ -262,7 +262,7 @@ const Media_Media = ({ title = "Media", types = [
|
|
|
262
262
|
children: /*#__PURE__*/ jsx(Button, {
|
|
263
263
|
variant: "outline",
|
|
264
264
|
color: "secondary",
|
|
265
|
-
className: "
|
|
265
|
+
className: "px-2!",
|
|
266
266
|
disabled: !isMediaSelected,
|
|
267
267
|
loading: isDeletingMedias,
|
|
268
268
|
onClick: handleDeleteMedias,
|
|
@@ -308,7 +308,7 @@ const Media_Media = ({ title = "Media", types = [
|
|
|
308
308
|
/*#__PURE__*/ jsxs(BlockStack, {
|
|
309
309
|
gapY: 90,
|
|
310
310
|
className: classnames("max-h-[calc(100dvh-300px)] overflow-x-hidden overflow-y-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden", {
|
|
311
|
-
"md
|
|
311
|
+
"md:w-[calc(100%-300px)]! lg:w-[calc(100%-336px)]!": Boolean(preview)
|
|
312
312
|
}),
|
|
313
313
|
children: [
|
|
314
314
|
/*#__PURE__*/ jsx(Box, {
|
|
@@ -316,8 +316,8 @@ const Media_Media = ({ title = "Media", types = [
|
|
|
316
316
|
children: /*#__PURE__*/ jsx(Box, {
|
|
317
317
|
className: classnames("grid", {
|
|
318
318
|
"grid-cols-[repeat(1,1fr)]": view === View.List,
|
|
319
|
-
"grid-cols-[repeat(auto-fill,minmax(150px,1fr))] md:grid-cols-[repeat(auto-fill,minmax(117px,1fr))]
|
|
320
|
-
"gap-
|
|
319
|
+
"grid-cols-[repeat(auto-fill,minmax(150px,1fr))] md:grid-cols-[repeat(auto-fill,minmax(117px,1fr))] rounded-md! gap-5 lg:gap-[35px]": view === View.Grid,
|
|
320
|
+
"gap-5": view === View.Grid && Boolean(preview)
|
|
321
321
|
}),
|
|
322
322
|
children: medias.map((media)=>/*#__PURE__*/ jsx(MediaItem, {
|
|
323
323
|
view: view,
|
|
@@ -8,6 +8,7 @@ class Meta {
|
|
|
8
8
|
variant_ref: "Variants",
|
|
9
9
|
page_ref: "Pages",
|
|
10
10
|
blog_ref: "Blogs",
|
|
11
|
+
metaobject_ref_ref: "Meatobject",
|
|
11
12
|
single_line_text: "Text",
|
|
12
13
|
multiline_text: "Multiline text",
|
|
13
14
|
boolean: "Boolean",
|
|
@@ -24,7 +25,8 @@ class Meta {
|
|
|
24
25
|
"variant_ref",
|
|
25
26
|
"page_ref",
|
|
26
27
|
"article_ref",
|
|
27
|
-
"blog_ref"
|
|
28
|
+
"blog_ref",
|
|
29
|
+
"metaobject_ref"
|
|
28
30
|
];
|
|
29
31
|
return refTypes.includes(type);
|
|
30
32
|
}
|
|
@@ -6,6 +6,10 @@ export declare const useGetMetaFields: (scope?: MetafieldScope[]) => {
|
|
|
6
6
|
entry?: import("../../../shared/graphql/graphql").MetafieldEntryType | null;
|
|
7
7
|
name?: string | null;
|
|
8
8
|
type?: import("../../../shared/graphql/graphql").MetafieldType | null;
|
|
9
|
+
metaobject_reference?: {
|
|
10
|
+
__typename: "Metaobject";
|
|
11
|
+
_id?: string | null;
|
|
12
|
+
} | null;
|
|
9
13
|
} | null | undefined)[];
|
|
10
14
|
loading: boolean;
|
|
11
15
|
metaFieldsError: import("@apollo/client").ErrorLike | undefined;
|
|
@@ -8,3 +8,4 @@ export declare const Variant: () => import("react/jsx-runtime").JSX.Element;
|
|
|
8
8
|
export declare const Blog: () => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export declare const Page: () => import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
export declare const Collection: () => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const Metaobject: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -141,4 +141,25 @@ const Collection = ()=>{
|
|
|
141
141
|
})
|
|
142
142
|
});
|
|
143
143
|
};
|
|
144
|
-
|
|
144
|
+
const Metaobject = ()=>{
|
|
145
|
+
const [product, setProduct] = useState([]);
|
|
146
|
+
const handleChange = (field)=>{
|
|
147
|
+
setProduct((prev)=>{
|
|
148
|
+
const exists = prev.find((f)=>f.metafield === field.metafield);
|
|
149
|
+
if (!exists) return [
|
|
150
|
+
...prev,
|
|
151
|
+
field
|
|
152
|
+
];
|
|
153
|
+
return prev.map((f)=>f.metafield === field.metafield ? field : f);
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
return /*#__PURE__*/ jsx(Card, {
|
|
157
|
+
padding: 70,
|
|
158
|
+
children: /*#__PURE__*/ jsx(MetaData, {
|
|
159
|
+
scope: "collection",
|
|
160
|
+
metafieldsData: product,
|
|
161
|
+
onChange: handleChange
|
|
162
|
+
})
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
export { Article, Blog, Collection, Metaobject, Page, Product, Variant, MetaData_stories as default };
|
|
@@ -3,6 +3,7 @@ import { Button, Card, InlineStack, SoppiyaIcon, Text } from "@soppiya/elementus
|
|
|
3
3
|
import ArticlesPicker from "../../articles-picker/ui/ArticlesPicker.js";
|
|
4
4
|
import BlogsPicker from "../../blogs-picker/ui/BlogsPicker.js";
|
|
5
5
|
import CollectionPicker from "../../collections-pciker/ui/CollectionPicker.js";
|
|
6
|
+
import { MetaobjectEntriesPicker } from "../../metaobjects-entries-picker/index.js";
|
|
6
7
|
import PagesPicker from "../../pages-picker/ui/PagesPicker.js";
|
|
7
8
|
import { ProductsPicker } from "../../products-picker/index.js";
|
|
8
9
|
import { VariantsPicker } from "../../variants-picker/index.js";
|
|
@@ -19,6 +20,7 @@ import ColorMetaField from "./ColorMetaField.js";
|
|
|
19
20
|
import DateAndTimeMetaField from "./DateAndTimeMetaField.js";
|
|
20
21
|
import DateMetaField from "./DateMetaField.js";
|
|
21
22
|
import MetaDataTypePopup from "./MetaDataTypePopup.js";
|
|
23
|
+
import MetaobjectRefMetaField from "./MetaobjectRefMetaField.js";
|
|
22
24
|
import MultilineTextMetaField from "./MultilineTextMetaField.js";
|
|
23
25
|
import NumberMetaField from "./NumberMetaField.js";
|
|
24
26
|
import PageRefMetaField from "./PageRefMetaField.js";
|
|
@@ -28,6 +30,7 @@ import VariantRefMetaField from "./VariantRefMetaField.js";
|
|
|
28
30
|
const MetaDataItem_MetaDataItem = ({ metaField, value = [], onChange })=>{
|
|
29
31
|
const [activeMetaField, setActiveMetaField] = useState(null);
|
|
30
32
|
const [visibleExplorer, setVisibleExplorer] = useState("");
|
|
33
|
+
const [metaobjectRef, setMetaobjectRef] = useState([]);
|
|
31
34
|
const metaFieldRef = useClickAway(()=>visibleExplorer ? null : setActiveMetaField(null));
|
|
32
35
|
const isRefType = meta_types.isRefType(metaField.type);
|
|
33
36
|
let MetaFieldJSX;
|
|
@@ -65,6 +68,9 @@ const MetaDataItem_MetaDataItem = ({ metaField, value = [], onChange })=>{
|
|
|
65
68
|
case "blog_ref":
|
|
66
69
|
MetaFieldJSX = BlogRefMetaField;
|
|
67
70
|
break;
|
|
71
|
+
case "metaobject_ref":
|
|
72
|
+
MetaFieldJSX = MetaobjectRefMetaField;
|
|
73
|
+
break;
|
|
68
74
|
case "boolean":
|
|
69
75
|
MetaFieldJSX = BooleanMetaField;
|
|
70
76
|
break;
|
|
@@ -99,6 +105,15 @@ const MetaDataItem_MetaDataItem = ({ metaField, value = [], onChange })=>{
|
|
|
99
105
|
case "article_ref":
|
|
100
106
|
setVisibleExplorer("article");
|
|
101
107
|
break;
|
|
108
|
+
case "metaobject_ref":
|
|
109
|
+
setVisibleExplorer("metaobject");
|
|
110
|
+
if (metaField.metaobject_reference?._id) {
|
|
111
|
+
console.log(metaField.metaobject_reference?._id);
|
|
112
|
+
setMetaobjectRef([
|
|
113
|
+
String(metaField.metaobject_reference._id)
|
|
114
|
+
]);
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
102
117
|
default:
|
|
103
118
|
isFunction(onChange) && onChange(value.concat(""));
|
|
104
119
|
}
|
|
@@ -249,6 +264,13 @@ const MetaDataItem_MetaDataItem = ({ metaField, value = [], onChange })=>{
|
|
|
249
264
|
limit: "multiple" === metaField.entry ? 1 / 0 : 1,
|
|
250
265
|
onClose: ()=>setVisibleExplorer(""),
|
|
251
266
|
onOk: handleSelectExplorerItems
|
|
267
|
+
}),
|
|
268
|
+
"metaobject" === visibleExplorer && /*#__PURE__*/ jsx(MetaobjectEntriesPicker, {
|
|
269
|
+
initialIds: value,
|
|
270
|
+
limit: "multiple" === metaField.entry ? 1 / 0 : 1,
|
|
271
|
+
onClose: ()=>setVisibleExplorer(""),
|
|
272
|
+
onOk: handleSelectExplorerItems,
|
|
273
|
+
metaobjects: metaobjectRef
|
|
252
274
|
})
|
|
253
275
|
]
|
|
254
276
|
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMetaobjectEntries } from "../../metaobjects-entries-picker/model/useMetaobjectEntries.js";
|
|
3
|
+
import { Loading } from "../../../shared/loading/index.js";
|
|
4
|
+
import { InlineStack, Text } from "@soppiya/elementus";
|
|
5
|
+
const MetaobjectRefMetaField = ({ value, children })=>{
|
|
6
|
+
const { metaobjectEntries, isLoadingMetaobjectEntries } = useMetaobjectEntries({
|
|
7
|
+
skip: !value,
|
|
8
|
+
filterKeys: {
|
|
9
|
+
cursors: value?.split(",")
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
if (isLoadingMetaobjectEntries) return /*#__PURE__*/ jsx(Loading, {});
|
|
13
|
+
return metaobjectEntries?.map((metaobjectEntry)=>/*#__PURE__*/ jsxs(InlineStack, {
|
|
14
|
+
justifyContent: "space-between",
|
|
15
|
+
children: [
|
|
16
|
+
/*#__PURE__*/ jsx(InlineStack, {
|
|
17
|
+
gapX: 70,
|
|
18
|
+
alignItems: "center",
|
|
19
|
+
children: /*#__PURE__*/ jsx(Text, {
|
|
20
|
+
size: "md",
|
|
21
|
+
weight: "regular",
|
|
22
|
+
children: metaobjectEntry.title
|
|
23
|
+
})
|
|
24
|
+
}),
|
|
25
|
+
children
|
|
26
|
+
]
|
|
27
|
+
}, metaobjectEntry._id));
|
|
28
|
+
};
|
|
29
|
+
const ui_MetaobjectRefMetaField = MetaobjectRefMetaField;
|
|
30
|
+
export { ui_MetaobjectRefMetaField as default };
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Input } from "@soppiya/elementus";
|
|
3
|
-
const SingleLineTextMetaField_SingleLineTextMetaField = ({ entry, value, children, onChange })=>/*#__PURE__*/ jsxs(
|
|
2
|
+
import { InlineStack, Input } from "@soppiya/elementus";
|
|
3
|
+
const SingleLineTextMetaField_SingleLineTextMetaField = ({ entry, value, children, onChange })=>/*#__PURE__*/ jsxs(InlineStack, {
|
|
4
|
+
justifyContent: "space-between",
|
|
5
|
+
gapX: 70,
|
|
4
6
|
children: [
|
|
5
|
-
/*#__PURE__*/ jsx(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
})
|
|
7
|
+
/*#__PURE__*/ jsx(InlineStack, {
|
|
8
|
+
stack: "full",
|
|
9
|
+
children: /*#__PURE__*/ jsx(Input, {
|
|
10
|
+
size: "sm",
|
|
11
|
+
value: value,
|
|
12
|
+
onChange: (e)=>onChange(e.target.value)
|
|
12
13
|
})
|
|
13
14
|
}),
|
|
14
15
|
"multiple" === entry && children
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as MetaobjectEntriesPicker } from "./ui/MetaobjectEntriesPicker";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
title?: string;
|
|
3
|
+
initialIds?: string[];
|
|
4
|
+
limit?: number;
|
|
5
|
+
metaobjects?: string[];
|
|
6
|
+
onClose?: () => void;
|
|
7
|
+
onOk?: (metaobjectEntries: string[]) => void;
|
|
8
|
+
};
|
|
9
|
+
declare const MetaobjectEntriesPicker: ({ title, initialIds, limit, metaobjects, onClose, onOk }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default MetaobjectEntriesPicker;
|
|
@@ -6,7 +6,7 @@ import classnames from "classnames";
|
|
|
6
6
|
import lodash from "lodash";
|
|
7
7
|
import { useState } from "react";
|
|
8
8
|
import { useMetaobjectEntries } from "../model/useMetaobjectEntries.js";
|
|
9
|
-
const
|
|
9
|
+
const MetaobjectEntriesPicker = ({ title = "Metaobject entries", initialIds = [], limit = 1 / 0, metaobjects = [], onClose, onOk })=>{
|
|
10
10
|
const [selectedMetaobjectEntries, setSelectedMetaobjectEntries] = useState(initialIds);
|
|
11
11
|
const { query, debounceQuery, onChangeQuery } = useFilterQuery();
|
|
12
12
|
const { metaobjectEntries, isLoadingMetaobjectEntries, fetchMoreMetaobjectEntries, pageInfo } = useMetaobjectEntries({
|
|
@@ -104,5 +104,5 @@ const MetaobjectEntries_MetaobjectEntries = ({ title = "Metaobject entries", ini
|
|
|
104
104
|
})
|
|
105
105
|
});
|
|
106
106
|
};
|
|
107
|
-
const
|
|
108
|
-
export {
|
|
107
|
+
const ui_MetaobjectEntriesPicker = MetaobjectEntriesPicker;
|
|
108
|
+
export { ui_MetaobjectEntriesPicker as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import MetaobjectEntriesPicker from "./MetaobjectEntriesPicker.js";
|
|
2
|
+
const meta = {
|
|
3
|
+
title: "Example/MetaobjectEntriesPicker",
|
|
4
|
+
component: MetaobjectEntriesPicker
|
|
5
|
+
};
|
|
6
|
+
const MetaobjectEntriesPicker_stories = meta;
|
|
7
|
+
const Default = {
|
|
8
|
+
args: {}
|
|
9
|
+
};
|
|
10
|
+
export { Default, MetaobjectEntriesPicker_stories as default };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const metaobjectQuery: import("@graphql-typed-document-node/core").TypedDocumentNode<import("../../../shared/graphql/graphql").MetaobjectsQuery, import("../../../shared/graphql/graphql").Exact<{
|
|
2
|
+
filterKeys?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").MetaobjectFilterKeys>;
|
|
3
|
+
after?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["ID"]["input"]>;
|
|
4
|
+
before?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["ID"]["input"]>;
|
|
5
|
+
first?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["Int"]["input"]>;
|
|
6
|
+
last?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["Int"]["input"]>;
|
|
7
|
+
query?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["String"]["input"]>;
|
|
8
|
+
}>>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { graphql } from "../../../shared/graphql/index.js";
|
|
2
|
+
const metaobjectQuery = graphql(`query Metaobjects($filterKeys: MetaobjectFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {
|
|
3
|
+
metaobjects(filterKeys: $filterKeys, after: $after, before: $before, first: $first, last: $last, query: $query) {
|
|
4
|
+
pageInfo {
|
|
5
|
+
endCursor
|
|
6
|
+
hasNextPage
|
|
7
|
+
hasPreviousPage
|
|
8
|
+
startCursor
|
|
9
|
+
}
|
|
10
|
+
edges {
|
|
11
|
+
node {
|
|
12
|
+
_id
|
|
13
|
+
name
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}`);
|
|
18
|
+
export { metaobjectQuery };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as MetaobjectsPicker } from "./ui/MetaobjectsPicker";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MetaobjectFilterKeys } from "../../../shared/graphql/graphql";
|
|
2
|
+
type Props = {
|
|
3
|
+
skip?: boolean;
|
|
4
|
+
first?: number;
|
|
5
|
+
query?: string | null;
|
|
6
|
+
filterKeys?: MetaobjectFilterKeys;
|
|
7
|
+
};
|
|
8
|
+
export declare const useMetaobjects: (props?: Props) => {
|
|
9
|
+
metaobjects: {
|
|
10
|
+
__typename: "Metaobject";
|
|
11
|
+
_id?: string | null;
|
|
12
|
+
name?: string | null;
|
|
13
|
+
}[] | undefined;
|
|
14
|
+
isMetaobjectsLoading: boolean;
|
|
15
|
+
pageInfo: {
|
|
16
|
+
__typename: "PageInfo";
|
|
17
|
+
endCursor?: string | null;
|
|
18
|
+
hasNextPage?: boolean | null;
|
|
19
|
+
hasPreviousPage?: boolean | null;
|
|
20
|
+
startCursor?: string | null;
|
|
21
|
+
} | null | undefined;
|
|
22
|
+
fetchMoreMetaobjects: () => void;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useQuery } from "@apollo/client/react";
|
|
2
|
+
import { metaobjectQuery } from "../api/query.js";
|
|
3
|
+
const useMetaobjects = (props = {})=>{
|
|
4
|
+
const { skip, first, query, filterKeys } = props;
|
|
5
|
+
const { data, loading: isMetaobjectsLoading, error, fetchMore } = useQuery(metaobjectQuery, {
|
|
6
|
+
skip,
|
|
7
|
+
variables: {
|
|
8
|
+
first,
|
|
9
|
+
query,
|
|
10
|
+
filterKeys
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const metaobjects = data?.metaobjects?.edges?.map((edge)=>edge?.node).filter((node)=>null != node);
|
|
14
|
+
const pageInfo = data?.metaobjects?.pageInfo;
|
|
15
|
+
const fetchMoreMetaobjects = ()=>{
|
|
16
|
+
if (!pageInfo?.hasNextPage) return;
|
|
17
|
+
fetchMore({
|
|
18
|
+
variables: {
|
|
19
|
+
first,
|
|
20
|
+
query,
|
|
21
|
+
filterKeys,
|
|
22
|
+
after: pageInfo.endCursor
|
|
23
|
+
},
|
|
24
|
+
updateQuery (prev, { fetchMoreResult }) {
|
|
25
|
+
if (!fetchMoreResult.metaobjects?.edges || !prev.metaobjects?.edges) return prev;
|
|
26
|
+
return {
|
|
27
|
+
metaobjects: {
|
|
28
|
+
...fetchMoreResult.metaobjects,
|
|
29
|
+
edges: [
|
|
30
|
+
...prev.metaobjects.edges,
|
|
31
|
+
...fetchMoreResult.metaobjects.edges
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
metaobjects,
|
|
40
|
+
isMetaobjectsLoading,
|
|
41
|
+
pageInfo,
|
|
42
|
+
fetchMoreMetaobjects
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export { useMetaobjects };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
title?: string;
|
|
3
|
+
initialIds?: string[];
|
|
4
|
+
limit?: number;
|
|
5
|
+
onClose?: () => void;
|
|
6
|
+
onOk?: (metaobjectEntries: string[]) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const MetaobjectsPicker: ({ title, initialIds, limit, onClose, onOk }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default MetaobjectsPicker;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { InfinityScroll } from "../../infinity-scroll/index.js";
|
|
3
|
+
import { useFilterQuery } from "../../../shared/lib/index.js";
|
|
4
|
+
import { BlockStack, Box, Button, Checkbox, InlineStack, Input, Modal, Spinner, Text } from "@soppiya/elementus";
|
|
5
|
+
import classnames from "classnames";
|
|
6
|
+
import lodash from "lodash";
|
|
7
|
+
import { useState } from "react";
|
|
8
|
+
import { useMetaobjects } from "../model/useMetaobjects.js";
|
|
9
|
+
const MetaobjectsPicker = ({ title = "Metaobjects", initialIds = [], limit = 1 / 0, onClose, onOk })=>{
|
|
10
|
+
const [selectedMetaobject, setSelectedMetaobject] = useState(initialIds);
|
|
11
|
+
const { query, debounceQuery, onChangeQuery } = useFilterQuery();
|
|
12
|
+
const { metaobjects, isMetaobjectsLoading, fetchMoreMetaobjects, pageInfo } = useMetaobjects({
|
|
13
|
+
first: 20,
|
|
14
|
+
query: debounceQuery
|
|
15
|
+
});
|
|
16
|
+
const isReached = limit !== 1 / 0 && selectedMetaobject.length >= limit;
|
|
17
|
+
const isDisabled = limit !== 1 / 0 && selectedMetaobject.length > limit;
|
|
18
|
+
const handleSelectedMetaobject = (metaobjectId)=>{
|
|
19
|
+
if (selectedMetaobject?.includes(metaobjectId)) return void setSelectedMetaobject((prev)=>prev.filter((id)=>metaobjectId !== id));
|
|
20
|
+
if (isReached) return;
|
|
21
|
+
setSelectedMetaobject((prev)=>[
|
|
22
|
+
...prev,
|
|
23
|
+
metaobjectId
|
|
24
|
+
]);
|
|
25
|
+
};
|
|
26
|
+
const handleOk = ()=>{
|
|
27
|
+
if (lodash.isFunction(onOk)) onOk(selectedMetaobject);
|
|
28
|
+
};
|
|
29
|
+
const ButtonJSX = /*#__PURE__*/ jsx(InlineStack, {
|
|
30
|
+
justifyContent: "end",
|
|
31
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
32
|
+
disabled: lodash.isEmpty(selectedMetaobject) || isDisabled,
|
|
33
|
+
onClick: handleOk,
|
|
34
|
+
children: "Add"
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
return /*#__PURE__*/ jsx(Modal, {
|
|
38
|
+
open: true,
|
|
39
|
+
title: title,
|
|
40
|
+
buttons: ButtonJSX,
|
|
41
|
+
bodyPadding: 0,
|
|
42
|
+
onClose: onClose,
|
|
43
|
+
children: /*#__PURE__*/ jsxs(BlockStack, {
|
|
44
|
+
children: [
|
|
45
|
+
/*#__PURE__*/ jsx(Box, {
|
|
46
|
+
padding: 60,
|
|
47
|
+
children: /*#__PURE__*/ jsx(Input, {
|
|
48
|
+
size: "sm",
|
|
49
|
+
type: "search",
|
|
50
|
+
value: query ?? "",
|
|
51
|
+
onChange: (event)=>onChangeQuery(event.target.value)
|
|
52
|
+
})
|
|
53
|
+
}),
|
|
54
|
+
isMetaobjectsLoading ? /*#__PURE__*/ jsx(InlineStack, {
|
|
55
|
+
justifyContent: "center",
|
|
56
|
+
padding: 80,
|
|
57
|
+
children: /*#__PURE__*/ jsx(Spinner, {
|
|
58
|
+
size: "md"
|
|
59
|
+
})
|
|
60
|
+
}) : /*#__PURE__*/ jsxs(BlockStack, {
|
|
61
|
+
children: [
|
|
62
|
+
metaobjects?.map((metaobjects)=>/*#__PURE__*/ jsxs(InlineStack, {
|
|
63
|
+
stack: "full",
|
|
64
|
+
className: classnames('lg:cursor-pointer border-t border-t-[#ebebeb]!', {
|
|
65
|
+
'bg-[#f1f1f1ab] cursor-default!': !selectedMetaobject.includes(metaobjects._id) && isReached
|
|
66
|
+
}),
|
|
67
|
+
gapX: 60,
|
|
68
|
+
padding: 60,
|
|
69
|
+
onClick: ()=>handleSelectedMetaobject(String(metaobjects._id)),
|
|
70
|
+
children: [
|
|
71
|
+
/*#__PURE__*/ jsx(InlineStack, {
|
|
72
|
+
alignItems: "center",
|
|
73
|
+
gapX: 60,
|
|
74
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
75
|
+
children: /*#__PURE__*/ jsx(Checkbox, {
|
|
76
|
+
disabled: !selectedMetaobject.includes(metaobjects._id) && isReached,
|
|
77
|
+
checked: selectedMetaobject.includes(String(metaobjects._id)),
|
|
78
|
+
onChange: ()=>{}
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
}),
|
|
82
|
+
/*#__PURE__*/ jsx(BlockStack, {
|
|
83
|
+
gapY: 30,
|
|
84
|
+
justifyContent: "center",
|
|
85
|
+
children: /*#__PURE__*/ jsx(Text, {
|
|
86
|
+
size: "sm",
|
|
87
|
+
color: "secondary",
|
|
88
|
+
truncate: "truncate-1",
|
|
89
|
+
children: metaobjects.name
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
}, metaobjects._id)),
|
|
94
|
+
pageInfo?.hasNextPage && /*#__PURE__*/ jsx(InfinityScroll, {
|
|
95
|
+
onFetch: fetchMoreMetaobjects
|
|
96
|
+
})
|
|
97
|
+
]
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
const ui_MetaobjectsPicker = MetaobjectsPicker;
|
|
104
|
+
export { ui_MetaobjectsPicker as default };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const meta: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: ({ title, initialIds, limit, onClose, onOk }: {
|
|
4
|
+
title?: string;
|
|
5
|
+
initialIds?: string[];
|
|
6
|
+
limit?: number;
|
|
7
|
+
onClose?: () => void;
|
|
8
|
+
onOk?: (metaobjectEntries: string[]) => void;
|
|
9
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
export declare const Default: {
|
|
13
|
+
args: {};
|
|
14
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import MetaobjectsPicker from "./MetaobjectsPicker.js";
|
|
2
|
+
const meta = {
|
|
3
|
+
title: "Example/MetaobjectsPicker",
|
|
4
|
+
component: MetaobjectsPicker
|
|
5
|
+
};
|
|
6
|
+
const MetaobjectsPicker_stories = meta;
|
|
7
|
+
const Default = {
|
|
8
|
+
args: {}
|
|
9
|
+
};
|
|
10
|
+
export { Default, MetaobjectsPicker_stories as default };
|
|
@@ -21,8 +21,9 @@ type Documents = {
|
|
|
21
21
|
"\n query MediaUsage {\n mediaUsage\n }\n": typeof types.MediaUsageDocument;
|
|
22
22
|
"\n mutation AddMedias($input: [Upload!]!) {\n addMedias(input: $input) {\n _id\n file_name\n url\n size\n }\n }\n": typeof types.AddMediasDocument;
|
|
23
23
|
"\n mutation DeleteMedias($cursors: [ID!]!) {\n deleteMedias(cursors: $cursors) {\n message\n }\n }\n": typeof types.DeleteMediasDocument;
|
|
24
|
-
"query Metafields($filterKeys: MetafieldFilterKeys, $first: Int) {\n metafields(filterKeys: $filterKeys, first: $first) {\n edges {\n node {\n _id\n entry\n name\n type\n }\n }\n }\n}": typeof types.MetafieldsDocument;
|
|
24
|
+
"query Metafields($filterKeys: MetafieldFilterKeys, $first: Int) {\n metafields(filterKeys: $filterKeys, first: $first) {\n edges {\n node {\n _id\n entry\n name\n type\n metaobject_reference {\n _id\n }\n }\n }\n }\n}": typeof types.MetafieldsDocument;
|
|
25
25
|
"query MetaobjectEntries($after: ID, $before: ID, $first: Int, $last: Int, $query: String, $filterKeys: MetaobjectEntryFilterKeys) {\n metaobjectEntries(after: $after, before: $before, first: $first, last: $last, query: $query, filterKeys: $filterKeys) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n title\n }\n }\n }\n}": typeof types.MetaobjectEntriesDocument;
|
|
26
|
+
"query Metaobjects($filterKeys: MetaobjectFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {\n metaobjects(filterKeys: $filterKeys, after: $after, before: $before, first: $first, last: $last, query: $query) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n name\n }\n }\n }\n}": typeof types.MetaobjectsDocument;
|
|
26
27
|
"query Pages($filterKeys: PageFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {\n pages(filterKeys: $filterKeys, after: $after, before: $before, first: $first, last: $last, query: $query) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n title\n image {\n _id\n url\n }\n }\n }\n }\n}": typeof types.PagesDocument;
|
|
27
28
|
"\n query Products($after: ID, $before: ID, $first: Int, $last: Int, $query: String,$filterKeys: ProductFilterKeys) {\n products(after: $after, before: $before, first: $first, last: $last, query: $query,filterKeys: $filterKeys) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n title\n image {\n _id\n url\n }\n }\n }\n }\n }\n": typeof types.ProductsDocument;
|
|
28
29
|
"\n query Variants($after: ID, $before: ID, $first: Int, $last: Int, $query: String,$filterKeys: VariantFilterKeys) {\n variants(after: $after, before: $before, first: $first, last: $last, query: $query,filterKeys: $filterKeys) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n option1\n option2\n option3\n image {\n _id\n url\n }\n product {\n _id\n title\n }\n }\n }\n }\n }\n": typeof types.VariantsDocument;
|
|
@@ -80,11 +81,15 @@ export declare function graphql(source: "\n mutation DeleteMedias($cursors: [ID
|
|
|
80
81
|
/**
|
|
81
82
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
82
83
|
*/
|
|
83
|
-
export declare function graphql(source: "query Metafields($filterKeys: MetafieldFilterKeys, $first: Int) {\n metafields(filterKeys: $filterKeys, first: $first) {\n edges {\n node {\n _id\n entry\n name\n type\n }\n }\n }\n}"): (typeof documents)["query Metafields($filterKeys: MetafieldFilterKeys, $first: Int) {\n metafields(filterKeys: $filterKeys, first: $first) {\n edges {\n node {\n _id\n entry\n name\n type\n }\n }\n }\n}"];
|
|
84
|
+
export declare function graphql(source: "query Metafields($filterKeys: MetafieldFilterKeys, $first: Int) {\n metafields(filterKeys: $filterKeys, first: $first) {\n edges {\n node {\n _id\n entry\n name\n type\n metaobject_reference {\n _id\n }\n }\n }\n }\n}"): (typeof documents)["query Metafields($filterKeys: MetafieldFilterKeys, $first: Int) {\n metafields(filterKeys: $filterKeys, first: $first) {\n edges {\n node {\n _id\n entry\n name\n type\n metaobject_reference {\n _id\n }\n }\n }\n }\n}"];
|
|
84
85
|
/**
|
|
85
86
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
86
87
|
*/
|
|
87
88
|
export declare function graphql(source: "query MetaobjectEntries($after: ID, $before: ID, $first: Int, $last: Int, $query: String, $filterKeys: MetaobjectEntryFilterKeys) {\n metaobjectEntries(after: $after, before: $before, first: $first, last: $last, query: $query, filterKeys: $filterKeys) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n title\n }\n }\n }\n}"): (typeof documents)["query MetaobjectEntries($after: ID, $before: ID, $first: Int, $last: Int, $query: String, $filterKeys: MetaobjectEntryFilterKeys) {\n metaobjectEntries(after: $after, before: $before, first: $first, last: $last, query: $query, filterKeys: $filterKeys) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n title\n }\n }\n }\n}"];
|
|
89
|
+
/**
|
|
90
|
+
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
91
|
+
*/
|
|
92
|
+
export declare function graphql(source: "query Metaobjects($filterKeys: MetaobjectFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {\n metaobjects(filterKeys: $filterKeys, after: $after, before: $before, first: $first, last: $last, query: $query) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n name\n }\n }\n }\n}"): (typeof documents)["query Metaobjects($filterKeys: MetaobjectFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {\n metaobjects(filterKeys: $filterKeys, after: $after, before: $before, first: $first, last: $last, query: $query) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n name\n }\n }\n }\n}"];
|
|
88
93
|
/**
|
|
89
94
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
90
95
|
*/
|