@gem-sdk/core 2.0.0-dev.569 → 2.0.0-dev.584

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.
@@ -138,7 +138,7 @@ const ComponentToolbarPreview = (props)=>{
138
138
  productId
139
139
  ]);
140
140
  const linkEditArticle = react.useMemo(()=>{
141
- return articleUid ? `${linkShopDefault}/articles/${articleUid}` : '';
141
+ return articleUid ? `${linkShopDefault}/articles/${articleUid.replace('gid://shopify/Article/', '')}` : '';
142
142
  }, [
143
143
  articleUid,
144
144
  linkShopDefault
@@ -132,6 +132,11 @@ const createProductStoreProvider = (data)=>zustand.createStore((set, get)=>({
132
132
  set({
133
133
  hasPreSelected: value
134
134
  });
135
+ },
136
+ setIsChangeSelectedOption: (value)=>{
137
+ set({
138
+ isChangeSelectedOption: value
139
+ });
135
140
  }
136
141
  }));
137
142
  const ProductProvider = ({ children, product, initialVariantId, quantity = 1, isSyncProduct })=>{
@@ -128,6 +128,8 @@ const useSelectedOption = ()=>{
128
128
  const selectedOptions = ProductContext.useProductStore((s)=>s.selectedOptions);
129
129
  const forceSelectedOption = ProductContext.useProductStore((s)=>s.forceSelectedOption);
130
130
  const isSyncProduct = ProductContext.useProductStore((s)=>s.isSyncProduct);
131
+ const isChangeSelectedOption = ProductContext.useProductStore((s)=>s.isChangeSelectedOption);
132
+ const setIsChangeSelectedOption = ProductContext.useProductStore((s)=>s.setIsChangeSelectedOption);
131
133
  const updateOption = react.useCallback((optionId, optionValue, productId, noEmit)=>{
132
134
  if (!noEmit && isSyncProduct) {
133
135
  const setOption = new CustomEvent('set-selected-option', {
@@ -143,9 +145,11 @@ const useSelectedOption = ()=>{
143
145
  window.dispatchEvent(setOption);
144
146
  }
145
147
  setSelectedOption(optionId, optionValue);
148
+ setIsChangeSelectedOption(true);
146
149
  }, [
150
+ isSyncProduct,
147
151
  setSelectedOption,
148
- isSyncProduct
152
+ setIsChangeSelectedOption
149
153
  ]);
150
154
  const forceOption = react.useCallback((selectedOption, productId, noEmit)=>{
151
155
  if (!noEmit && isSyncProduct) {
@@ -166,6 +170,7 @@ const useSelectedOption = ()=>{
166
170
  isSyncProduct
167
171
  ]);
168
172
  return react.useMemo(()=>({
173
+ isChangeSelectedOption,
169
174
  selectedOptions,
170
175
  setSelectedOption: updateOption,
171
176
  forceSelectedOption: forceOption
@@ -134,7 +134,7 @@ const ComponentToolbarPreview = (props)=>{
134
134
  productId
135
135
  ]);
136
136
  const linkEditArticle = useMemo(()=>{
137
- return articleUid ? `${linkShopDefault}/articles/${articleUid}` : '';
137
+ return articleUid ? `${linkShopDefault}/articles/${articleUid.replace('gid://shopify/Article/', '')}` : '';
138
138
  }, [
139
139
  articleUid,
140
140
  linkShopDefault
@@ -130,6 +130,11 @@ const createProductStoreProvider = (data)=>createStore((set, get)=>({
130
130
  set({
131
131
  hasPreSelected: value
132
132
  });
133
+ },
134
+ setIsChangeSelectedOption: (value)=>{
135
+ set({
136
+ isChangeSelectedOption: value
137
+ });
133
138
  }
134
139
  }));
135
140
  const ProductProvider = ({ children, product, initialVariantId, quantity = 1, isSyncProduct })=>{
@@ -126,6 +126,8 @@ const useSelectedOption = ()=>{
126
126
  const selectedOptions = useProductStore((s)=>s.selectedOptions);
127
127
  const forceSelectedOption = useProductStore((s)=>s.forceSelectedOption);
128
128
  const isSyncProduct = useProductStore((s)=>s.isSyncProduct);
129
+ const isChangeSelectedOption = useProductStore((s)=>s.isChangeSelectedOption);
130
+ const setIsChangeSelectedOption = useProductStore((s)=>s.setIsChangeSelectedOption);
129
131
  const updateOption = useCallback((optionId, optionValue, productId, noEmit)=>{
130
132
  if (!noEmit && isSyncProduct) {
131
133
  const setOption = new CustomEvent('set-selected-option', {
@@ -141,9 +143,11 @@ const useSelectedOption = ()=>{
141
143
  window.dispatchEvent(setOption);
142
144
  }
143
145
  setSelectedOption(optionId, optionValue);
146
+ setIsChangeSelectedOption(true);
144
147
  }, [
148
+ isSyncProduct,
145
149
  setSelectedOption,
146
- isSyncProduct
150
+ setIsChangeSelectedOption
147
151
  ]);
148
152
  const forceOption = useCallback((selectedOption, productId, noEmit)=>{
149
153
  if (!noEmit && isSyncProduct) {
@@ -164,6 +168,7 @@ const useSelectedOption = ()=>{
164
168
  isSyncProduct
165
169
  ]);
166
170
  return useMemo(()=>({
171
+ isChangeSelectedOption,
167
172
  selectedOptions,
168
173
  setSelectedOption: updateOption,
169
174
  forceSelectedOption: forceOption
@@ -34812,6 +34812,8 @@ type ProductContextProps = {
34812
34812
  setShouldRequireUploadMessage: (value: boolean) => void;
34813
34813
  useProductCompareAtPrice?: boolean;
34814
34814
  setUseProductCompareAtPrice: (value?: boolean) => void;
34815
+ isChangeSelectedOption?: boolean;
34816
+ setIsChangeSelectedOption: (value: boolean) => void;
34815
34817
  };
34816
34818
  type ProductProviderProps = Pick<ProductContextProps, 'product' | 'quantity' | 'selectedOptions' | 'isSyncProduct'> & {
34817
34819
  initialVariantId?: string;
@@ -36127,7 +36129,7 @@ type Option$4<T> = {
36127
36129
  maxOption?: number;
36128
36130
  subTitle?: string;
36129
36131
  };
36130
- type Mapped$5<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? {
36132
+ type BaseSelect<K> = {
36131
36133
  id: K;
36132
36134
  label?: string;
36133
36135
  info?: string;
@@ -36145,35 +36147,34 @@ type Mapped$5<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? {
36145
36147
  active?: boolean;
36146
36148
  };
36147
36149
  placeholder?: string;
36150
+ controlOption?: string;
36151
+ };
36152
+ type ResponsiveSelect<K, T, U> = BaseSelect<K> & {
36148
36153
  type: 'select';
36149
36154
  options: Option$4<T>[];
36150
36155
  devices?: ResponsiveConfig<U>;
36151
- } : {
36152
- id: K;
36153
- label?: string;
36154
- info?: string;
36155
- hyperlinkInfo?: HyperlinkInfo;
36156
- hideOnMode?: {
36157
- responsive?: boolean;
36158
- mobileOnly?: boolean;
36159
- };
36160
- hide?: boolean;
36161
- state?: {
36162
- normal?: boolean;
36163
- hover?: boolean;
36164
- focus?: boolean;
36165
- active?: boolean;
36166
- };
36167
- placeholder?: string;
36168
- type: 'select';
36169
- options: Option$4<T>[];
36156
+ };
36157
+ type ResponsiveSelectCustom<K, T, U> = BaseSelect<K> & {
36158
+ type: 'select-custom-options';
36159
+ options?: Option$4<T>[];
36160
+ devices?: ResponsiveConfig<U>;
36161
+ };
36162
+ type SimpleSelectBase<K, T> = BaseSelect<K> & {
36170
36163
  default?: T;
36171
- isFullWidth?: boolean;
36172
36164
  showSelectedIcon?: boolean;
36173
36165
  showSelectedSvg?: boolean;
36174
36166
  fixWidth?: boolean;
36175
36167
  disableSelectedText?: boolean;
36176
36168
  };
36169
+ type SimpleSelect<K, T> = SimpleSelectBase<K, T> & {
36170
+ type: 'select';
36171
+ options: Option$4<T>[];
36172
+ };
36173
+ type SimpleSelectCustom<K, T> = SimpleSelectBase<K, T> & {
36174
+ type: 'select-custom-options';
36175
+ options?: Option$4<T>[];
36176
+ };
36177
+ type Mapped$5<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? ResponsiveSelect<K, T, U> | ResponsiveSelectCustom<K, T, U> : SimpleSelect<K, T> | SimpleSelectCustom<K, T>;
36177
36178
  type SelectControlType<T> = {
36178
36179
  [K in keyof T]-?: Mapped$5<K, T[K]>;
36179
36180
  }[keyof T];
@@ -47820,6 +47821,7 @@ declare const useHasPreSelected: () => {
47820
47821
  setHasPreSelected: (value: boolean) => void;
47821
47822
  };
47822
47823
  declare const useSelectedOption: () => {
47824
+ isChangeSelectedOption: boolean | undefined;
47823
47825
  selectedOptions: Record<string, string> | undefined;
47824
47826
  setSelectedOption: (optionId?: Maybe$1<string>, optionValue?: Maybe$1<string>, productId?: Maybe$1<string>, noEmit?: boolean) => void;
47825
47827
  forceSelectedOption: (selectedOption?: Record<string, string>, productId?: Maybe$1<string>, noEmit?: boolean) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/core",
3
- "version": "2.0.0-dev.569",
3
+ "version": "2.0.0-dev.584",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@gem-sdk/adapter-shopify": "2.0.0-dev.324",
31
- "@gem-sdk/styles": "2.0.0-dev.569",
31
+ "@gem-sdk/styles": "2.0.0-dev.571",
32
32
  "@types/classnames": "^2.3.1"
33
33
  },
34
34
  "dependencies": {