@gem-sdk/pages 1.46.2 → 1.47.0-dev.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.
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var core = require('@gem-sdk/core');
7
7
  var SwitchView = require('./SwitchView.js');
8
+ var InteractionSelectOnPageHeader = require('./InteractionSelectOnPageHeader.js');
8
9
 
9
10
  const defaultMargin = {
10
11
  desktop: '16px',
@@ -21,6 +22,7 @@ const sizeCheck = {
21
22
  const Header = (props)=>{
22
23
  const { pageType, isOriginTemplate } = props;
23
24
  const layoutSetting = core.useShopStore((s)=>s.layoutSettings);
25
+ const isSelectOnPage = core.usePageStore((s)=>s.interactionData?.isSelectOnPage);
24
26
  const activeHeader = layoutSetting?.showHeader || isOriginTemplate;
25
27
  const headerColor = activeHeader ? HEADER_ON_COLOR : HEADER_OFF_COLOR;
26
28
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -177,7 +179,8 @@ const Header = (props)=>{
177
179
  })
178
180
  ]
179
181
  })
180
- })
182
+ }),
183
+ isSelectOnPage && /*#__PURE__*/ jsxRuntime.jsx(InteractionSelectOnPageHeader.default, {})
181
184
  ]
182
185
  });
183
186
  };
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var core = require('@gem-sdk/core');
7
+
8
+ const InteractionSelectOnPageHeader = ()=>{
9
+ const selectType = core.usePageStore((s)=>s.interactionData?.selectType);
10
+ const setInteractionSelectType = core.usePageStore((s)=>s.setInteractionSelectType);
11
+ const setInteractionIsSelectOnPage = core.usePageStore((s)=>s.setInteractionIsSelectOnPage);
12
+ const closeSelectOnPage = ()=>{
13
+ setInteractionIsSelectOnPage(false);
14
+ const event = new CustomEvent('editor:interaction:change-select-on-page', {
15
+ bubbles: true,
16
+ detail: false
17
+ });
18
+ window.dispatchEvent(event);
19
+ };
20
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
21
+ children: [
22
+ /*#__PURE__*/ jsxRuntime.jsxs("header", {
23
+ className: "gp-flex gp-justify-between gp-h-10 gp-fixed gp-top-0 gp-left-0 gp-w-full gp-z-100",
24
+ children: [
25
+ /*#__PURE__*/ jsxRuntime.jsx("div", {
26
+ className: "gp-h-10 gp-w-10"
27
+ }),
28
+ /*#__PURE__*/ jsxRuntime.jsxs("section", {
29
+ className: "gp-flex gp-bg-[#3C67FF]/[0.15] gp-items-center gp-h-full gp-rounded-b-lg gp-p-1 gp-gap-1",
30
+ children: [
31
+ /*#__PURE__*/ jsxRuntime.jsx("button", {
32
+ onClick: ()=>setInteractionSelectType('element'),
33
+ className: `gp-h-8 gp-w-[132px] gp-items-center gp-justify-center gp-text-[12px] gp-leading-5 gp-font-medium gp-flex gp-rounded-[6px] ${selectType === 'element' ? 'gp-bg-[#3C67FF] gp-text-[#F9F9F9]' : 'gp-text-[#3C67FF]'}`,
34
+ children: "Select an element"
35
+ }),
36
+ /*#__PURE__*/ jsxRuntime.jsx("button", {
37
+ onClick: ()=>setInteractionSelectType('page'),
38
+ className: `gp-h-8 gp-w-[132px] gp-items-center gp-justify-center gp-text-[12px] gp-leading-5 gp-font-medium gp-flex gp-rounded-[6px] ${selectType === 'page' ? 'gp-bg-[#3C67FF] gp-text-[#F9F9F9]' : 'gp-text-[#3C67FF]'}`,
39
+ children: "Choose entire page"
40
+ })
41
+ ]
42
+ }),
43
+ /*#__PURE__*/ jsxRuntime.jsx("button", {
44
+ onClick: closeSelectOnPage,
45
+ className: "gp-h-10 gp-w-10 gp-bg-[#3C67FF]/[0.15] gp-flex gp-items-center gp-justify-center gp-rounded-bl-lg",
46
+ children: /*#__PURE__*/ jsxRuntime.jsx("svg", {
47
+ width: "20",
48
+ height: "20",
49
+ viewBox: "0 0 20 20",
50
+ fill: "none",
51
+ xmlns: "http://www.w3.org/2000/svg",
52
+ children: /*#__PURE__*/ jsxRuntime.jsx("path", {
53
+ d: "M3.94194 3.05806C3.69786 2.81398 3.30214 2.81398 3.05806 3.05806C2.81398 3.30214 2.81398 3.69786 3.05806 3.94194L9.11612 10L3.05806 16.0581C2.81398 16.3021 2.81398 16.6979 3.05806 16.9419C3.30214 17.186 3.69786 17.186 3.94194 16.9419L10 10.8839L16.0581 16.9419C16.3021 17.186 16.6979 17.186 16.9419 16.9419C17.186 16.6979 17.186 16.3021 16.9419 16.0581L10.8839 10L16.9419 3.94194C17.186 3.69786 17.186 3.30214 16.9419 3.05806C16.6979 2.81398 16.3021 2.81398 16.0581 3.05806L10 9.11612L3.94194 3.05806Z",
54
+ fill: "#3C67FF"
55
+ })
56
+ })
57
+ })
58
+ ]
59
+ }),
60
+ /*#__PURE__*/ jsxRuntime.jsx("div", {
61
+ className: "gp-h-full gp-w-full gp-fixed gp-top-0 gp-left-0 gp-border-[#3C67FF] gp-border-[2px]"
62
+ })
63
+ ]
64
+ });
65
+ };
66
+
67
+ exports.default = InteractionSelectOnPageHeader;
@@ -36,6 +36,8 @@ const Toolbox = ()=>{
36
36
  const changeCreateThemeSectionCount = core.useShopStore((s)=>s.changeCreateThemeSectionCount);
37
37
  const changeShopPlan = core.useShopStore((s)=>s.changeShopPlan);
38
38
  const clearModal = core.useModalStore((s)=>s.clearModal);
39
+ const setInteractionIsSelectOnPage = core.usePageStore((s)=>s.setInteractionIsSelectOnPage);
40
+ const setInteractionItem = core.usePageStore((s)=>s.setInteractionItem);
39
41
  const fonts = react.useMemo(()=>genFonts.getFontsFromDataBuilder(state), [
40
42
  state
41
43
  ]);
@@ -329,6 +331,18 @@ const Toolbox = ()=>{
329
331
  }, [
330
332
  setSalePageProductId
331
333
  ]);
334
+ const onUpdateInteractionIsSelectOnPage = react.useCallback((e)=>{
335
+ const isSelectOnPage = e.detail;
336
+ setInteractionIsSelectOnPage(isSelectOnPage);
337
+ }, [
338
+ setInteractionIsSelectOnPage
339
+ ]);
340
+ const onUpdateInteractionItem = react.useCallback((e)=>{
341
+ const interactionItem = e.detail;
342
+ setInteractionItem(interactionItem);
343
+ }, [
344
+ setInteractionItem
345
+ ]);
332
346
  react.useEffect(()=>{
333
347
  if (fonts) {
334
348
  setFontsToHead('google-font-element', fonts);
@@ -356,6 +370,8 @@ const Toolbox = ()=>{
356
370
  window.addEventListener('update-item-attribute', onUpdateItemAttribute);
357
371
  window.addEventListener('set-product-offer', onUpdateProductOffers);
358
372
  window.addEventListener('update-sale-page-product-id', onUpdateSalePageProductId);
373
+ window.addEventListener('update-interaction-is-select-on-page', onUpdateInteractionIsSelectOnPage);
374
+ window.addEventListener('update-interaction-item', onUpdateInteractionItem);
359
375
  return ()=>{
360
376
  window.removeEventListener('update-shop-info', onChangeShopInfo);
361
377
  window.removeEventListener('revalidate-query', onRevalidateQuery);
@@ -375,6 +391,8 @@ const Toolbox = ()=>{
375
391
  window.removeEventListener('update-item-attribute', onUpdateItemAttribute);
376
392
  window.removeEventListener('set-product-offer', onUpdateProductOffers);
377
393
  window.removeEventListener('update-sale-page-product-id', onUpdateSalePageProductId);
394
+ window.removeEventListener('update-interaction-is-select-on-page', onUpdateInteractionIsSelectOnPage);
395
+ window.removeEventListener('update-interaction-item', onUpdateInteractionItem);
378
396
  };
379
397
  }, [
380
398
  onAddEntity,
@@ -395,7 +413,9 @@ const Toolbox = ()=>{
395
413
  onUpdateItemName,
396
414
  onUpdateItemAttribute,
397
415
  onUpdateProductOffers,
398
- onUpdateSalePageProductId
416
+ onUpdateSalePageProductId,
417
+ onUpdateInteractionItem,
418
+ onUpdateInteractionIsSelectOnPage
399
419
  ]);
400
420
  return /*#__PURE__*/ jsxRuntime.jsx("div", {
401
421
  className: "toolbox"
@@ -1,6 +1,7 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { useShopStore, cls, makeStyleResponsive } from '@gem-sdk/core';
2
+ import { useShopStore, usePageStore, cls, makeStyleResponsive } from '@gem-sdk/core';
3
3
  import Devices from './SwitchView.js';
4
+ import InteractionSelectOnPageHeader from './InteractionSelectOnPageHeader.js';
4
5
 
5
6
  const defaultMargin = {
6
7
  desktop: '16px',
@@ -17,6 +18,7 @@ const sizeCheck = {
17
18
  const Header = (props)=>{
18
19
  const { pageType, isOriginTemplate } = props;
19
20
  const layoutSetting = useShopStore((s)=>s.layoutSettings);
21
+ const isSelectOnPage = usePageStore((s)=>s.interactionData?.isSelectOnPage);
20
22
  const activeHeader = layoutSetting?.showHeader || isOriginTemplate;
21
23
  const headerColor = activeHeader ? HEADER_ON_COLOR : HEADER_OFF_COLOR;
22
24
  return /*#__PURE__*/ jsxs(Fragment, {
@@ -173,7 +175,8 @@ const Header = (props)=>{
173
175
  })
174
176
  ]
175
177
  })
176
- })
178
+ }),
179
+ isSelectOnPage && /*#__PURE__*/ jsx(InteractionSelectOnPageHeader, {})
177
180
  ]
178
181
  });
179
182
  };
@@ -0,0 +1,63 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { usePageStore } from '@gem-sdk/core';
3
+
4
+ const InteractionSelectOnPageHeader = ()=>{
5
+ const selectType = usePageStore((s)=>s.interactionData?.selectType);
6
+ const setInteractionSelectType = usePageStore((s)=>s.setInteractionSelectType);
7
+ const setInteractionIsSelectOnPage = usePageStore((s)=>s.setInteractionIsSelectOnPage);
8
+ const closeSelectOnPage = ()=>{
9
+ setInteractionIsSelectOnPage(false);
10
+ const event = new CustomEvent('editor:interaction:change-select-on-page', {
11
+ bubbles: true,
12
+ detail: false
13
+ });
14
+ window.dispatchEvent(event);
15
+ };
16
+ return /*#__PURE__*/ jsxs(Fragment, {
17
+ children: [
18
+ /*#__PURE__*/ jsxs("header", {
19
+ className: "gp-flex gp-justify-between gp-h-10 gp-fixed gp-top-0 gp-left-0 gp-w-full gp-z-100",
20
+ children: [
21
+ /*#__PURE__*/ jsx("div", {
22
+ className: "gp-h-10 gp-w-10"
23
+ }),
24
+ /*#__PURE__*/ jsxs("section", {
25
+ className: "gp-flex gp-bg-[#3C67FF]/[0.15] gp-items-center gp-h-full gp-rounded-b-lg gp-p-1 gp-gap-1",
26
+ children: [
27
+ /*#__PURE__*/ jsx("button", {
28
+ onClick: ()=>setInteractionSelectType('element'),
29
+ className: `gp-h-8 gp-w-[132px] gp-items-center gp-justify-center gp-text-[12px] gp-leading-5 gp-font-medium gp-flex gp-rounded-[6px] ${selectType === 'element' ? 'gp-bg-[#3C67FF] gp-text-[#F9F9F9]' : 'gp-text-[#3C67FF]'}`,
30
+ children: "Select an element"
31
+ }),
32
+ /*#__PURE__*/ jsx("button", {
33
+ onClick: ()=>setInteractionSelectType('page'),
34
+ className: `gp-h-8 gp-w-[132px] gp-items-center gp-justify-center gp-text-[12px] gp-leading-5 gp-font-medium gp-flex gp-rounded-[6px] ${selectType === 'page' ? 'gp-bg-[#3C67FF] gp-text-[#F9F9F9]' : 'gp-text-[#3C67FF]'}`,
35
+ children: "Choose entire page"
36
+ })
37
+ ]
38
+ }),
39
+ /*#__PURE__*/ jsx("button", {
40
+ onClick: closeSelectOnPage,
41
+ className: "gp-h-10 gp-w-10 gp-bg-[#3C67FF]/[0.15] gp-flex gp-items-center gp-justify-center gp-rounded-bl-lg",
42
+ children: /*#__PURE__*/ jsx("svg", {
43
+ width: "20",
44
+ height: "20",
45
+ viewBox: "0 0 20 20",
46
+ fill: "none",
47
+ xmlns: "http://www.w3.org/2000/svg",
48
+ children: /*#__PURE__*/ jsx("path", {
49
+ d: "M3.94194 3.05806C3.69786 2.81398 3.30214 2.81398 3.05806 3.05806C2.81398 3.30214 2.81398 3.69786 3.05806 3.94194L9.11612 10L3.05806 16.0581C2.81398 16.3021 2.81398 16.6979 3.05806 16.9419C3.30214 17.186 3.69786 17.186 3.94194 16.9419L10 10.8839L16.0581 16.9419C16.3021 17.186 16.6979 17.186 16.9419 16.9419C17.186 16.6979 17.186 16.3021 16.9419 16.0581L10.8839 10L16.9419 3.94194C17.186 3.69786 17.186 3.30214 16.9419 3.05806C16.6979 2.81398 16.3021 2.81398 16.0581 3.05806L10 9.11612L3.94194 3.05806Z",
50
+ fill: "#3C67FF"
51
+ })
52
+ })
53
+ })
54
+ ]
55
+ }),
56
+ /*#__PURE__*/ jsx("div", {
57
+ className: "gp-h-full gp-w-full gp-fixed gp-top-0 gp-left-0 gp-border-[#3C67FF] gp-border-[2px]"
58
+ })
59
+ ]
60
+ });
61
+ };
62
+
63
+ export { InteractionSelectOnPageHeader as default };
@@ -32,6 +32,8 @@ const Toolbox = ()=>{
32
32
  const changeCreateThemeSectionCount = useShopStore((s)=>s.changeCreateThemeSectionCount);
33
33
  const changeShopPlan = useShopStore((s)=>s.changeShopPlan);
34
34
  const clearModal = useModalStore((s)=>s.clearModal);
35
+ const setInteractionIsSelectOnPage = usePageStore((s)=>s.setInteractionIsSelectOnPage);
36
+ const setInteractionItem = usePageStore((s)=>s.setInteractionItem);
35
37
  const fonts = useMemo(()=>getFontsFromDataBuilder(state), [
36
38
  state
37
39
  ]);
@@ -325,6 +327,18 @@ const Toolbox = ()=>{
325
327
  }, [
326
328
  setSalePageProductId
327
329
  ]);
330
+ const onUpdateInteractionIsSelectOnPage = useCallback((e)=>{
331
+ const isSelectOnPage = e.detail;
332
+ setInteractionIsSelectOnPage(isSelectOnPage);
333
+ }, [
334
+ setInteractionIsSelectOnPage
335
+ ]);
336
+ const onUpdateInteractionItem = useCallback((e)=>{
337
+ const interactionItem = e.detail;
338
+ setInteractionItem(interactionItem);
339
+ }, [
340
+ setInteractionItem
341
+ ]);
328
342
  useEffect(()=>{
329
343
  if (fonts) {
330
344
  setFontsToHead('google-font-element', fonts);
@@ -352,6 +366,8 @@ const Toolbox = ()=>{
352
366
  window.addEventListener('update-item-attribute', onUpdateItemAttribute);
353
367
  window.addEventListener('set-product-offer', onUpdateProductOffers);
354
368
  window.addEventListener('update-sale-page-product-id', onUpdateSalePageProductId);
369
+ window.addEventListener('update-interaction-is-select-on-page', onUpdateInteractionIsSelectOnPage);
370
+ window.addEventListener('update-interaction-item', onUpdateInteractionItem);
355
371
  return ()=>{
356
372
  window.removeEventListener('update-shop-info', onChangeShopInfo);
357
373
  window.removeEventListener('revalidate-query', onRevalidateQuery);
@@ -371,6 +387,8 @@ const Toolbox = ()=>{
371
387
  window.removeEventListener('update-item-attribute', onUpdateItemAttribute);
372
388
  window.removeEventListener('set-product-offer', onUpdateProductOffers);
373
389
  window.removeEventListener('update-sale-page-product-id', onUpdateSalePageProductId);
390
+ window.removeEventListener('update-interaction-is-select-on-page', onUpdateInteractionIsSelectOnPage);
391
+ window.removeEventListener('update-interaction-item', onUpdateInteractionItem);
374
392
  };
375
393
  }, [
376
394
  onAddEntity,
@@ -391,7 +409,9 @@ const Toolbox = ()=>{
391
409
  onUpdateItemName,
392
410
  onUpdateItemAttribute,
393
411
  onUpdateProductOffers,
394
- onUpdateSalePageProductId
412
+ onUpdateSalePageProductId,
413
+ onUpdateInteractionItem,
414
+ onUpdateInteractionIsSelectOnPage
395
415
  ]);
396
416
  return /*#__PURE__*/ jsx("div", {
397
417
  className: "toolbox"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/pages",
3
- "version": "1.46.2",
3
+ "version": "1.47.0-dev.4",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -26,10 +26,10 @@
26
26
  "next": "latest"
27
27
  },
28
28
  "devDependencies": {
29
- "@gem-sdk/core": "1.46.1",
30
- "@gem-sdk/plugin-cookie-bar": "1.46.0",
31
- "@gem-sdk/plugin-quick-view": "1.46.0",
32
- "@gem-sdk/plugin-sticky-add-to-cart": "1.46.0"
29
+ "@gem-sdk/core": "1.47.0-dev.4",
30
+ "@gem-sdk/plugin-cookie-bar": "1.47.0-dev.4",
31
+ "@gem-sdk/plugin-quick-view": "1.47.0-dev.4",
32
+ "@gem-sdk/plugin-sticky-add-to-cart": "1.47.0-dev.4"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "next": ">=13"