@soppiya/app-bridge 1.1.9 → 1.2.1

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.
@@ -84,7 +84,7 @@ const ArticlesPicker = ({ title = "Articles", initialIds = [], limit = 1 / 0, ok
84
84
  /*#__PURE__*/ jsx(Box, {
85
85
  children: /*#__PURE__*/ jsx(Image, {
86
86
  size: "xs",
87
- url: String(article.image?.url)
87
+ url: article.image?.url ? article.image?.url : ""
88
88
  })
89
89
  })
90
90
  ]
@@ -83,7 +83,7 @@ const BlogsPicker = ({ title = "Blogs", initialIds = [], limit = 1 / 0, okButton
83
83
  /*#__PURE__*/ jsx(Box, {
84
84
  children: /*#__PURE__*/ jsx(Image, {
85
85
  size: "xs",
86
- url: String(blog.image?.url ?? "")
86
+ url: blog.image?.url ? blog.image?.url : ""
87
87
  })
88
88
  })
89
89
  ]
@@ -82,7 +82,7 @@ const CollectionPicker = ({ title = "Collections", initialIds = [], limit = 1 /
82
82
  /*#__PURE__*/ jsx(Box, {
83
83
  children: /*#__PURE__*/ jsx(Image, {
84
84
  size: "xs",
85
- url: String(collection.image?.url)
85
+ url: collection.image?.url ? collection.image?.url : ""
86
86
  })
87
87
  })
88
88
  ]
@@ -83,7 +83,7 @@ const PagesPicker = ({ title = "Pages", initialIds = [], limit = 1 / 0, okButton
83
83
  /*#__PURE__*/ jsx(Box, {
84
84
  children: /*#__PURE__*/ jsx(Image, {
85
85
  size: "xs",
86
- url: String(page.image?.url)
86
+ url: page.image?.url ? page.image?.url : ""
87
87
  })
88
88
  })
89
89
  ]
@@ -84,7 +84,7 @@ const ProductsPicker = ({ title = "Products", initialIds = [], limit = 1 / 0, ok
84
84
  /*#__PURE__*/ jsx(Box, {
85
85
  children: /*#__PURE__*/ jsx(Image, {
86
86
  size: "xs",
87
- url: String(product.image?.url)
87
+ url: product.image?.url ? product.image?.url : ""
88
88
  })
89
89
  })
90
90
  ]
@@ -0,0 +1,8 @@
1
+ export declare const regionQuery: import("@graphql-typed-document-node/core").TypedDocumentNode<import("../../../shared/graphql/graphql")._RegionsQuery, import("../../../shared/graphql/graphql").Exact<{
2
+ filterKeys?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql")._RegionFilterKeys>;
3
+ query?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["String"]["input"]>;
4
+ after?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["ID"]["input"]>;
5
+ before?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["ID"]["input"]>;
6
+ first?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["Int"]["input"]>;
7
+ last?: import("../../../shared/graphql/graphql").InputMaybe<import("../../../shared/graphql/graphql").Scalars["Int"]["input"]>;
8
+ }>>;
@@ -0,0 +1,18 @@
1
+ import { graphql } from "../../../shared/graphql/index.js";
2
+ const regionQuery = graphql(`query _regions($filterKeys: _RegionFilterKeys, $query: String, $after: ID, $before: ID, $first: Int, $last: Int) {
3
+ _regions(filterKeys: $filterKeys, query: $query, after: $after, before: $before, first: $first, last: $last) {
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 { regionQuery };
File without changes
File without changes
@@ -0,0 +1,25 @@
1
+ import { _RegionFilterKeys } from "../../../shared/graphql/graphql";
2
+ type Props = {
3
+ skip?: boolean;
4
+ first?: number;
5
+ query?: string | null;
6
+ filterKeys?: _RegionFilterKeys;
7
+ };
8
+ export declare const useRegion: (props?: Props) => {
9
+ regions: {
10
+ __typename: "_Region";
11
+ _id?: string | null;
12
+ name?: string | null;
13
+ }[];
14
+ pageInfo: {
15
+ __typename: "PageInfo";
16
+ endCursor?: string | null;
17
+ hasNextPage?: boolean | null;
18
+ hasPreviousPage?: boolean | null;
19
+ startCursor?: string | null;
20
+ } | null | undefined;
21
+ isLoadingRegion: boolean;
22
+ error: import("@apollo/client").ErrorLike | undefined;
23
+ fetchMoreRegions: () => void;
24
+ };
25
+ export {};
@@ -0,0 +1,48 @@
1
+ import { useQuery } from "@apollo/client/react";
2
+ import { useRef } from "react";
3
+ import { regionQuery } from "../api/query.js";
4
+ const useRegion = (props = {})=>{
5
+ const { skip, first, query, filterKeys } = props;
6
+ const refArray = useRef([]);
7
+ const { data, loading: isLoadingRegion, error, fetchMore } = useQuery(regionQuery, {
8
+ skip,
9
+ variables: {
10
+ first,
11
+ query,
12
+ filterKeys
13
+ }
14
+ });
15
+ const regions = data?._regions?.edges?.map((edge)=>edge?.node).filter((node)=>null != node) ?? refArray.current;
16
+ const pageInfo = data?._regions?.pageInfo;
17
+ const fetchMoreRegions = ()=>{
18
+ if (!pageInfo?.hasNextPage) return;
19
+ fetchMore({
20
+ variables: {
21
+ first,
22
+ query,
23
+ after: pageInfo.endCursor,
24
+ filterKeys
25
+ },
26
+ updateQuery (prev, { fetchMoreResult }) {
27
+ if (!fetchMoreResult._regions?.edges || !prev._regions?.edges) return prev;
28
+ return {
29
+ _regions: {
30
+ ...fetchMoreResult._regions,
31
+ edges: [
32
+ ...prev._regions.edges,
33
+ ...fetchMoreResult._regions.edges
34
+ ]
35
+ }
36
+ };
37
+ }
38
+ });
39
+ };
40
+ return {
41
+ regions,
42
+ pageInfo,
43
+ isLoadingRegion,
44
+ error,
45
+ fetchMoreRegions
46
+ };
47
+ };
48
+ export { useRegion };
@@ -0,0 +1,11 @@
1
+ type Props = {
2
+ title?: string;
3
+ initialIds?: string[];
4
+ countries?: string[];
5
+ limit?: number;
6
+ okButtonLoading?: boolean;
7
+ onClose?: () => void;
8
+ onOk?: (countries: string[]) => void;
9
+ };
10
+ declare const RegionPicker: ({ title, initialIds, countries, limit, okButtonLoading, onClose, onOk }: Props) => import("react/jsx-runtime").JSX.Element;
11
+ export default RegionPicker;
@@ -0,0 +1,110 @@
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 { useRegion } from "../model/useRegion.js";
9
+ const RegionPicker = ({ title, initialIds, countries, limit = 1 / 0, okButtonLoading, onClose, onOk })=>{
10
+ const [selectedRegion, setSelectedRegion] = useState(initialIds ?? []);
11
+ const { query, debounceQuery, onChangeQuery } = useFilterQuery();
12
+ const { regions, pageInfo, isLoadingRegion, fetchMoreRegions, error } = useRegion({
13
+ first: 20,
14
+ query: debounceQuery,
15
+ filterKeys: {
16
+ _countries: countries
17
+ }
18
+ });
19
+ const isReached = limit !== 1 / 0 && selectedRegion.length >= limit;
20
+ const isDisabled = limit !== 1 / 0 && selectedRegion.length > limit;
21
+ const handleSelectCustomer = (customerId)=>{
22
+ if (selectedRegion.includes(customerId)) return void setSelectedRegion((prev)=>prev.filter((id)=>customerId !== id));
23
+ if (isReached) return;
24
+ setSelectedRegion((prev)=>[
25
+ ...prev,
26
+ customerId
27
+ ]);
28
+ };
29
+ const handleOk = ()=>{
30
+ if (lodash.isFunction(onOk)) onOk(selectedRegion);
31
+ };
32
+ const buttonsJSX = /*#__PURE__*/ jsx(InlineStack, {
33
+ gap: 50,
34
+ justifyContent: "end",
35
+ children: /*#__PURE__*/ jsx(Button, {
36
+ loading: okButtonLoading,
37
+ disabled: lodash.isEmpty(selectedRegion) || isDisabled,
38
+ onClick: handleOk,
39
+ children: "Add"
40
+ })
41
+ });
42
+ return /*#__PURE__*/ jsx(Modal, {
43
+ open: true,
44
+ title: title ? title : "Region Picker",
45
+ bodyPadding: 0,
46
+ buttons: buttonsJSX,
47
+ onClose: onClose,
48
+ children: /*#__PURE__*/ jsxs(BlockStack, {
49
+ children: [
50
+ /*#__PURE__*/ jsx(Box, {
51
+ padding: 60,
52
+ children: /*#__PURE__*/ jsx(Input, {
53
+ size: "sm",
54
+ type: "search",
55
+ value: query ?? "",
56
+ onChange: (event)=>onChangeQuery(event.target.value)
57
+ })
58
+ }),
59
+ isLoadingRegion ? /*#__PURE__*/ jsx(InlineStack, {
60
+ justifyContent: "center",
61
+ padding: 80,
62
+ children: /*#__PURE__*/ jsx(Spinner, {
63
+ size: "md"
64
+ })
65
+ }) : /*#__PURE__*/ jsxs(BlockStack, {
66
+ children: [
67
+ regions.map((region)=>/*#__PURE__*/ jsx(InlineStack, {
68
+ stack: "full",
69
+ className: classnames('lg:cursor-pointer border-t border-t-[#ebebeb]!', {
70
+ 'bg-[#f1f1f1ab] cursor-default!': !selectedRegion.includes(region._id) && isReached
71
+ }),
72
+ gapX: 60,
73
+ padding: 60,
74
+ onClick: ()=>handleSelectCustomer(String(region._id)),
75
+ children: /*#__PURE__*/ jsx(BlockStack, {
76
+ children: /*#__PURE__*/ jsxs(InlineStack, {
77
+ alignItems: "center",
78
+ gapX: 70,
79
+ children: [
80
+ /*#__PURE__*/ jsx(Box, {
81
+ children: /*#__PURE__*/ jsx(Checkbox, {
82
+ disabled: !selectedRegion.includes(region._id) && isReached,
83
+ checked: selectedRegion.includes(String(region._id)),
84
+ onChange: ()=>{}
85
+ })
86
+ }),
87
+ /*#__PURE__*/ jsx(InlineStack, {
88
+ gapX: 50,
89
+ children: /*#__PURE__*/ jsx(Text, {
90
+ size: "md",
91
+ weight: "medium",
92
+ className: "capitalize!",
93
+ children: region.name
94
+ })
95
+ })
96
+ ]
97
+ })
98
+ })
99
+ })),
100
+ pageInfo?.hasNextPage && /*#__PURE__*/ jsx(InfinityScroll, {
101
+ onFetch: fetchMoreRegions
102
+ })
103
+ ]
104
+ })
105
+ ]
106
+ })
107
+ });
108
+ };
109
+ const ui_RegionPicker = RegionPicker;
110
+ export { ui_RegionPicker as default };
@@ -0,0 +1,19 @@
1
+ declare const meta: {
2
+ title: string;
3
+ component: ({ title, initialIds, countries, limit, okButtonLoading, onClose, onOk }: {
4
+ title?: string;
5
+ initialIds?: string[];
6
+ countries?: string[];
7
+ limit?: number;
8
+ okButtonLoading?: boolean;
9
+ onClose?: () => void;
10
+ onOk?: (countries: string[]) => void;
11
+ }) => import("react/jsx-runtime").JSX.Element;
12
+ };
13
+ export default meta;
14
+ export declare const Default: {
15
+ args: {
16
+ primary: boolean;
17
+ label: string;
18
+ };
19
+ };
@@ -0,0 +1,13 @@
1
+ import RegionPicker from "./RegionPicker.js";
2
+ const meta = {
3
+ title: "Example/RegionPicker",
4
+ component: RegionPicker
5
+ };
6
+ const RegionPicker_stories = meta;
7
+ const Default = {
8
+ args: {
9
+ primary: true,
10
+ label: "Button"
11
+ }
12
+ };
13
+ export { Default, RegionPicker_stories as default };
@@ -84,7 +84,7 @@ const VariantsPicker = ({ title = "Variants", initialIds = [], limit = 1 / 0, ok
84
84
  /*#__PURE__*/ jsx(Box, {
85
85
  children: /*#__PURE__*/ jsx(Image, {
86
86
  size: "xs",
87
- url: String(variant.image?.url)
87
+ url: variant.image?.url ? variant.image?.url : ""
88
88
  })
89
89
  })
90
90
  ]
@@ -28,6 +28,7 @@ type Documents = {
28
28
  "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;
29
29
  "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;
30
30
  "\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;
31
+ "query _regions($filterKeys: _RegionFilterKeys, $query: String, $after: ID, $before: ID, $first: Int, $last: Int) {\n _regions(filterKeys: $filterKeys, query: $query, after: $after, before: $before, first: $first, last: $last) {\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._RegionsDocument;
31
32
  "query CustomerSegments($after: ID, $before: ID, $first: Int, $last: Int, $query: String, $filterKeys: CustomerSegmentFilterKeys) {\n customerSegments(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.CustomerSegmentsDocument;
32
33
  "\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;
33
34
  };
@@ -109,6 +110,10 @@ export declare function graphql(source: "query Pages($filterKeys: PageFilterKeys
109
110
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
110
111
  */
111
112
  export declare function graphql(source: "\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 documents)["\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"];
113
+ /**
114
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
115
+ */
116
+ export declare function graphql(source: "query _regions($filterKeys: _RegionFilterKeys, $query: String, $after: ID, $before: ID, $first: Int, $last: Int) {\n _regions(filterKeys: $filterKeys, query: $query, after: $after, before: $before, first: $first, last: $last) {\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 _regions($filterKeys: _RegionFilterKeys, $query: String, $after: ID, $before: ID, $first: Int, $last: Int) {\n _regions(filterKeys: $filterKeys, query: $query, after: $after, before: $before, first: $first, last: $last) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n name\n }\n }\n }\n}"];
112
117
  /**
113
118
  * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
114
119
  */
@@ -1,4 +1,4 @@
1
- import { AddMediasDocument, ArticlesDocument, BlogsDocument, CollectionsDocument, CustomerSegmentsDocument, CustomersDocument, DeleteMediasDocument, LinklistsDocument, MediaUsageDocument, MediasDocument, MetafieldsDocument, MetaobjectEntriesDocument, MetaobjectsDocument, PagesDocument, ProductsDocument, StoragePlanDocument, VariantsDocument, _CountriesDocument } from "./graphql.js";
1
+ import { AddMediasDocument, ArticlesDocument, BlogsDocument, CollectionsDocument, CustomerSegmentsDocument, CustomersDocument, DeleteMediasDocument, LinklistsDocument, MediaUsageDocument, MediasDocument, MetafieldsDocument, MetaobjectEntriesDocument, MetaobjectsDocument, PagesDocument, ProductsDocument, StoragePlanDocument, VariantsDocument, _CountriesDocument, _RegionsDocument } from "./graphql.js";
2
2
  const documents = {
3
3
  "query Articles($filterKeys: ArticleFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {\n articles(filterKeys: $filterKeys, after: $after, before: $before, first: $first, last: $last, query: $query) {\n edges {\n node {\n _id\n title\n image {\n _id\n url\n }\n }\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n}": ArticlesDocument,
4
4
  "query Blogs($filterKeys: BlogFilterKeys, $after: ID, $before: ID, $first: Int, $last: Int, $query: String) {\n blogs(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}": BlogsDocument,
@@ -16,6 +16,7 @@ const documents = {
16
16
  "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}": MetaobjectsDocument,
17
17
  "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}": PagesDocument,
18
18
  "\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": ProductsDocument,
19
+ "query _regions($filterKeys: _RegionFilterKeys, $query: String, $after: ID, $before: ID, $first: Int, $last: Int) {\n _regions(filterKeys: $filterKeys, query: $query, after: $after, before: $before, first: $first, last: $last) {\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n edges {\n node {\n _id\n name\n }\n }\n }\n}": _RegionsDocument,
19
20
  "query CustomerSegments($after: ID, $before: ID, $first: Int, $last: Int, $query: String, $filterKeys: CustomerSegmentFilterKeys) {\n customerSegments(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}": CustomerSegmentsDocument,
20
21
  "\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": VariantsDocument
21
22
  };