@fast-simon/dashboard-utilities 1.0.39 → 1.0.41

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.
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { ProductLabelType } from "../../@types/productLabel";
3
+ export interface Props {
4
+ position?: number;
5
+ label?: ProductLabelType;
6
+ isUnpublished?: boolean;
7
+ onlyUnpublished?: boolean;
8
+ sellable?: boolean;
9
+ }
10
+ declare const ProductLabel: React.FC<Props>;
11
+ export default ProductLabel;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classes from './styles.module.css';
3
+ import { labelToColorDict } from "./utils";
4
+ const ProductLabel = ({ position, label, isUnpublished, onlyUnpublished, sellable }) => {
5
+ return (_jsxs("div", Object.assign({ className: classes.productLabelContainer }, { children: [_jsxs("div", Object.assign({ className: classes.badgesContainer }, { children: [!onlyUnpublished && label &&
6
+ _jsx("div", Object.assign({ className: classes.labelText, style: { backgroundColor: labelToColorDict[label], color: "white" } }, { children: label })), isUnpublished &&
7
+ _jsx("div", Object.assign({ className: classes.labelText, style: { backgroundColor: labelToColorDict['Unpublished'], color: "white", marginTop: "2px" } }, { children: "Unpublished" })), !sellable && !isUnpublished &&
8
+ _jsx("div", Object.assign({ className: classes.labelText, style: { backgroundColor: 'black', color: "white", marginTop: "2px" } }, { children: "Out of Stock" }))] })), !onlyUnpublished && position !== undefined && (_jsx("div", Object.assign({ className: classes.productPosition }, { children: position })))] })));
9
+ };
10
+ export default ProductLabel;
11
+ //# sourceMappingURL=ProductLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductLabel.js","sourceRoot":"","sources":["../../../src/components/ProductLabel/ProductLabel.tsx"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAYzC,MAAM,YAAY,GAAoB,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAC,EAAE,EAAE;IAClG,OAAO,CACH,6BAAK,SAAS,EAAE,OAAO,CAAC,qBAAqB,iBACzC,6BAAK,SAAS,EAAE,OAAO,CAAC,eAAe,iBAClC,CAAC,eAAe,IAAI,KAAK;wBACtB,4BAAK,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAC,eAAe,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAC,gBAC/F,KAAK,IACJ,EAET,aAAa;wBACV,4BAAK,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAC,eAAe,EAAE,gBAAgB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAC,iCAExH,EAET,CAAC,QAAQ,IAAI,CAAC,aAAa;wBACxB,4BAAK,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAC,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAC,kCAEhG,KAER,EACL,CAAC,eAAe,IAAI,QAAQ,KAAK,SAAS,IAAI,CAC3C,4BAAK,SAAS,EAAE,OAAO,CAAC,eAAe,gBAAG,QAAQ,IAAO,CAC5D,KAEC,CACT,CAAC;AACN,CAAC,CAAA;AACD,eAAe,YAAY,CAAC","sourcesContent":["import React from 'react';\r\nimport classes from './styles.module.css';\r\nimport {labelToColorDict} from \"./utils\";\r\nimport {ProductLabelType} from \"../../@types/productLabel\";\r\n\r\nexport interface Props {\r\n position?: number;\r\n label?: ProductLabelType;\r\n isUnpublished?: boolean;\r\n\r\n onlyUnpublished?: boolean;\r\n sellable?: boolean;\r\n}\r\n\r\nconst ProductLabel: React.FC<Props> = ({position, label, isUnpublished, onlyUnpublished, sellable}) => {\r\n return (\r\n <div className={classes.productLabelContainer}>\r\n <div className={classes.badgesContainer}>\r\n {!onlyUnpublished && label &&\r\n <div className={classes.labelText} style={{backgroundColor: labelToColorDict[label], color: \"white\"}}>\r\n {label}\r\n </div>\r\n }\r\n {isUnpublished &&\r\n <div className={classes.labelText} style={{backgroundColor: labelToColorDict['Unpublished'], color: \"white\", marginTop: \"2px\"}}>\r\n Unpublished\r\n </div>\r\n }\r\n {!sellable && !isUnpublished &&\r\n <div className={classes.labelText} style={{backgroundColor: 'black', color: \"white\", marginTop: \"2px\"}}>\r\n Out of Stock\r\n </div>\r\n }\r\n </div>\r\n {!onlyUnpublished && position !== undefined && (\r\n <div className={classes.productPosition}>{position}</div>\r\n )}\r\n\r\n </div>\r\n );\r\n}\r\nexport default ProductLabel;\r\n"]}
@@ -0,0 +1 @@
1
+ export { default } from "./ProductLabel";
@@ -0,0 +1,2 @@
1
+ export { default } from "./ProductLabel";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ProductLabel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export { default } from \"./ProductLabel\";\r\n"]}
@@ -0,0 +1,42 @@
1
+ .productLabelContainer {
2
+ width: inherit;
3
+ font-size: 12px;
4
+ display: flex;
5
+ align-items: center;
6
+ flex-direction: row;
7
+ position: absolute;
8
+ justify-content: space-between;
9
+ top: 6px;
10
+ }
11
+
12
+ .productPosition {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ margin-right: 6px;
17
+ padding: 5px 5px;
18
+ border-radius: 50px;
19
+ border: 1px solid #00000017;
20
+ background-color: #ffffffc9;
21
+ min-width: 16px;
22
+ min-height: 16px;
23
+ width: fit-content;
24
+ height: fit-content;
25
+ }
26
+
27
+ .productLabelContainerWithText {
28
+ color: white;
29
+ }
30
+
31
+ .labelText {
32
+ display: flex;
33
+ justify-content: center;
34
+ padding: 4px 4px;
35
+ border-radius: 0 4px 4px 0;
36
+ }
37
+
38
+ .badgesContainer {
39
+ display: flex;
40
+ flex-direction: column;
41
+ justify-content: space-between;
42
+ }
@@ -0,0 +1,8 @@
1
+ export declare const labelToColorDict: {
2
+ Promoted: string;
3
+ Selected: string;
4
+ Pinned: string;
5
+ Buried: string;
6
+ Hidden: string;
7
+ Unpublished: string;
8
+ };
@@ -0,0 +1,9 @@
1
+ export const labelToColorDict = {
2
+ 'Promoted': '#008847',
3
+ 'Selected': '#008847',
4
+ 'Pinned': '#0093E5',
5
+ 'Buried': '#EA0C19',
6
+ 'Hidden': '#EA0C19',
7
+ 'Unpublished': '#880000d1'
8
+ };
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/ProductLabel/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,aAAa,EAAE,WAAW;CAC7B,CAAA","sourcesContent":["export const labelToColorDict = {\r\n 'Promoted': '#008847',\r\n 'Selected': '#008847',\r\n 'Pinned': '#0093E5',\r\n 'Buried': '#EA0C19',\r\n 'Hidden': '#EA0C19',\r\n 'Unpublished': '#880000d1'\r\n}"]}
@@ -0,0 +1,5 @@
1
+ interface SelectCardProps {
2
+ numSelected: number;
3
+ }
4
+ declare const SelectCard: ({ numSelected }: SelectCardProps) => import("react/jsx-runtime").JSX.Element;
5
+ export default SelectCard;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classes from "./styles.module.css";
3
+ const SelectCard = ({ numSelected }) => {
4
+ return (_jsx("div", Object.assign({ className: classes.selectCardContainer }, { children: _jsx("div", Object.assign({ className: classes.selectCardText }, { children: numSelected })) })));
5
+ };
6
+ export default SelectCard;
7
+ //# sourceMappingURL=SelectCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectCard.js","sourceRoot":"","sources":["../../../src/components/SelectCard/SelectCard.tsx"],"names":[],"mappings":";AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAM1C,MAAM,UAAU,GAAG,CAAC,EAAE,WAAW,EAAmB,EAAE,EAAE;IACtD,OAAO,CACL,4BAAK,SAAS,EAAE,OAAO,CAAC,mBAAmB,gBACzC,4BAAK,SAAS,EAAE,OAAO,CAAC,cAAc,gBAAG,WAAW,IAAO,IACvD,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import classes from \"./styles.module.css\";\r\n\r\ninterface SelectCardProps {\r\n numSelected: number;\r\n}\r\n\r\nconst SelectCard = ({ numSelected }: SelectCardProps) => {\r\n return (\r\n <div className={classes.selectCardContainer}>\r\n <div className={classes.selectCardText}>{numSelected}</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SelectCard;\r\n"]}
@@ -0,0 +1 @@
1
+ export { default } from "./SelectCard";
@@ -0,0 +1,2 @@
1
+ export { default } from "./SelectCard";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SelectCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { default } from \"./SelectCard\";\r\n"]}
@@ -0,0 +1,21 @@
1
+ .selectCardContainer {
2
+ width: 100%;
3
+ height: 100%;
4
+ position: relative;
5
+ background: rgba(255, 255, 255, 0.8);
6
+ backdrop-filter: blur(10px);
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ flex-direction: column;
11
+ border: 2px solid #ebebeb;
12
+ border-radius: 6px;
13
+ transition: border ease-in-out 150ms;
14
+ cursor: pointer;
15
+ }
16
+
17
+ .selectCardText {
18
+ font-size: 48px;
19
+ font-weight: 900;
20
+ text-align: center;
21
+ }
package/dist/index.d.ts CHANGED
@@ -15,12 +15,17 @@ import BackOfficeFiltersMenu from './components/BackOfficeFiltersMenu';
15
15
  import InStoreFiltersMenu from './components/InStoreFiltersMenu';
16
16
  import DndContextWrapper from './components/DragAndDrop/DndContextWrapper';
17
17
  import Droppable from './components/DragAndDrop/Droppable';
18
+ import ProductLabel from './components/ProductLabel/ProductLabel';
18
19
  import { SortableItem } from './components/DragAndDrop/SortableItem';
19
20
  import ProductGrid from "./components/productGrid/ProductGrid";
21
+ import SelectCard from "./components/SelectCard/SelectCard";
20
22
  import RenderIfVisible from "./components/RenderIfVisible";
21
23
  import { useDragToSelect } from "./utils/useDragToSelect";
24
+ import { CustomTagsFilters } from "./utils/customTagsFilters";
25
+ import { useProductsPerRow } from "./utils/useProductsPerRow";
22
26
  import { LandingPage } from "./services/landingPage";
23
27
  import { FullTextSearch } from "./services/search";
28
+ import { getFormatProducts } from "./services/getFormatProducts";
24
29
  import { useFastState, useFastStateFunctions } from "./components/FastSimonApi";
25
30
  import { ServerProduct } from "./@types/product";
26
31
  import { FullTextServerResponseAll } from "./@types/results";
@@ -30,4 +35,4 @@ import MainTheme from "./components/FastSimonApi";
30
35
  import { FeaturedRanking } from "@fast-simon/utilities/lib/@types/product";
31
36
  import { Products } from "./services/products";
32
37
  export type { MenuItemName, CustomClasses, SideMenuType, SideMenuItem, ProductLabelType, Banner, EditorProduct, IconProps, ServerProduct, FullTextServerResponseAll, smartCollectionsResults, FeaturedRanking };
33
- export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products };
38
+ export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard };
package/dist/index.js CHANGED
@@ -12,15 +12,20 @@ import BackOfficeFiltersMenu from './components/BackOfficeFiltersMenu';
12
12
  import InStoreFiltersMenu from './components/InStoreFiltersMenu';
13
13
  import DndContextWrapper from './components/DragAndDrop/DndContextWrapper';
14
14
  import Droppable from './components/DragAndDrop/Droppable';
15
+ import ProductLabel from './components/ProductLabel/ProductLabel';
15
16
  import { SortableItem } from './components/DragAndDrop/SortableItem';
16
17
  import ProductGrid from "./components/productGrid/ProductGrid";
18
+ import SelectCard from "./components/SelectCard/SelectCard";
17
19
  import RenderIfVisible from "./components/RenderIfVisible";
18
20
  import { useDragToSelect } from "./utils/useDragToSelect";
21
+ import { CustomTagsFilters } from "./utils/customTagsFilters";
22
+ import { useProductsPerRow } from "./utils/useProductsPerRow";
19
23
  import { LandingPage } from "./services/landingPage";
20
24
  import { FullTextSearch } from "./services/search";
25
+ import { getFormatProducts } from "./services/getFormatProducts";
21
26
  import { useFastState, useFastStateFunctions } from "./components/FastSimonApi";
22
27
  import FastSimonApi from "./components/FastSimonApi/FastSimonApi";
23
28
  import MainTheme from "./components/FastSimonApi";
24
29
  import { Products } from "./services/products";
25
- export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products };
30
+ export { BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible, useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon, RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct, useFastState, useFastStateFunctions, FastSimonApi, MainTheme, Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard };
26
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAS,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAgB,eAAe,EAAC,MAAM,wBAAwB,CAAA;AAGrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,qBAAqB,MAAM,oCAAoC,CAAA;AACtE,OAAO,kBAAkB,MAAM,iCAAiC,CAAA;AAChE,OAAO,iBAAiB,MAAM,4CAA4C,CAAA;AAC1E,OAAO,SAAS,MAAM,oCAAoC,CAAA;AAC1D,OAAO,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAA;AAClE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAC,MAAM,2BAA2B,CAAA;AAI7E,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAkB9C,OAAO,EACH,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EACnH,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAC3H,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAC,YAAY,EAAE,qBAAqB,EAAC,YAAY,EAAC,SAAS,EAC9H,QAAQ,EACX,CAAC","sourcesContent":["import {CustomClasses, SideMenuType, SideMenuItem, MenuItemName} from \"./@types/sideMenu\"\r\nimport {ProductLabelType} from \"./@types/productLabel\"\r\nimport {videoFormats, Banner} from \"./@types/banner\"\r\nimport {EditorProduct, isEditorProduct} from \"./@types/editorProduct\"\r\nimport {IconProps} from \"./@types/iconProps\"\r\n\r\nimport {BackOfficeFiltersIcon} from \"./icons/BackOfficeFiltersIcon\"\r\nimport {BannersIcon} from \"./icons/BannersIcon\"\r\nimport {HelpIcon} from \"./icons/HelpIcon\"\r\nimport {InStoreFiltersIcon} from \"./icons/InStoreFiltersIcon\"\r\nimport {PromoteIcon} from \"./icons/PromoteIcon\"\r\nimport {RemoveIcon} from \"./icons/RemoveIcon\"\r\nimport {RestoreIcon} from \"./icons/RestoreIcon\"\r\nimport {GeneralIcon} from \"./icons/GeneralIcon\"\r\nimport BackOfficeFiltersMenu from './components/BackOfficeFiltersMenu'\r\nimport InStoreFiltersMenu from './components/InStoreFiltersMenu'\r\nimport DndContextWrapper from './components/DragAndDrop/DndContextWrapper'\r\nimport Droppable from './components/DragAndDrop/Droppable'\r\nimport {SortableItem} from './components/DragAndDrop/SortableItem'\r\nimport ProductGrid from \"./components/productGrid/ProductGrid\";\r\nimport RenderIfVisible from \"./components/RenderIfVisible\";\r\nimport {useDragToSelect} from \"./utils/useDragToSelect\";\r\nimport { LandingPage } from \"./services/landingPage\";\r\nimport { FullTextSearch } from \"./services/search\";\r\nimport {useFastState, useFastStateFunctions} from \"./components/FastSimonApi\"\r\nimport { ServerProduct } from \"./@types/product\"\r\nimport { FullTextServerResponseAll } from \"./@types/results\"\r\nimport { smartCollectionsResults } from \"./@types/categories\"\r\nimport FastSimonApi from \"./components/FastSimonApi/FastSimonApi\"\r\nimport MainTheme from \"./components/FastSimonApi\"\r\nimport { FeaturedRanking } from \"@fast-simon/utilities/lib/@types/product\"\r\nimport { Products } from \"./services/products\"\r\n// export * from './components';\r\n\r\nexport type {\r\n MenuItemName,\r\n CustomClasses,\r\n SideMenuType,\r\n SideMenuItem,\r\n ProductLabelType,\r\n Banner,\r\n EditorProduct,\r\n IconProps,\r\n ServerProduct,\r\n FullTextServerResponseAll,\r\n smartCollectionsResults,\r\n FeaturedRanking\r\n};\r\n\r\nexport {\r\n BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible,\r\n useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon,\r\n RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct,useFastState, useFastStateFunctions,FastSimonApi,MainTheme,\r\n Products\r\n};"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAS,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAgB,eAAe,EAAC,MAAM,wBAAwB,CAAA;AAGrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAA;AAC/C,OAAO,qBAAqB,MAAM,oCAAoC,CAAA;AACtE,OAAO,kBAAkB,MAAM,iCAAiC,CAAA;AAChE,OAAO,iBAAiB,MAAM,4CAA4C,CAAA;AAC1E,OAAO,SAAS,MAAM,oCAAoC,CAAA;AAC1D,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAA;AAClE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAC,MAAM,2BAA2B,CAAA;AAI7E,OAAO,YAAY,MAAM,wCAAwC,CAAA;AACjE,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAkB9C,OAAO,EACH,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EACnH,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAC3H,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAC,YAAY,EAAE,qBAAqB,EAAC,YAAY,EAAC,SAAS,EAC9H,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAC9F,CAAC","sourcesContent":["import {CustomClasses, SideMenuType, SideMenuItem, MenuItemName} from \"./@types/sideMenu\"\r\nimport {ProductLabelType} from \"./@types/productLabel\"\r\nimport {videoFormats, Banner} from \"./@types/banner\"\r\nimport {EditorProduct, isEditorProduct} from \"./@types/editorProduct\"\r\nimport {IconProps} from \"./@types/iconProps\"\r\n\r\nimport {BackOfficeFiltersIcon} from \"./icons/BackOfficeFiltersIcon\"\r\nimport {BannersIcon} from \"./icons/BannersIcon\"\r\nimport {HelpIcon} from \"./icons/HelpIcon\"\r\nimport {InStoreFiltersIcon} from \"./icons/InStoreFiltersIcon\"\r\nimport {PromoteIcon} from \"./icons/PromoteIcon\"\r\nimport {RemoveIcon} from \"./icons/RemoveIcon\"\r\nimport {RestoreIcon} from \"./icons/RestoreIcon\"\r\nimport {GeneralIcon} from \"./icons/GeneralIcon\"\r\nimport BackOfficeFiltersMenu from './components/BackOfficeFiltersMenu'\r\nimport InStoreFiltersMenu from './components/InStoreFiltersMenu'\r\nimport DndContextWrapper from './components/DragAndDrop/DndContextWrapper'\r\nimport Droppable from './components/DragAndDrop/Droppable'\r\nimport ProductLabel from './components/ProductLabel/ProductLabel'\r\nimport {SortableItem} from './components/DragAndDrop/SortableItem'\r\nimport ProductGrid from \"./components/productGrid/ProductGrid\";\r\nimport SelectCard from \"./components/SelectCard/SelectCard\";\r\nimport RenderIfVisible from \"./components/RenderIfVisible\";\r\nimport {useDragToSelect} from \"./utils/useDragToSelect\";\r\nimport {CustomTagsFilters} from \"./utils/customTagsFilters\";\r\nimport {useProductsPerRow} from \"./utils/useProductsPerRow\";\r\nimport { LandingPage } from \"./services/landingPage\";\r\nimport { FullTextSearch } from \"./services/search\";\r\nimport { getFormatProducts } from \"./services/getFormatProducts\";\r\nimport {useFastState, useFastStateFunctions} from \"./components/FastSimonApi\"\r\nimport { ServerProduct } from \"./@types/product\"\r\nimport { FullTextServerResponseAll } from \"./@types/results\"\r\nimport { smartCollectionsResults } from \"./@types/categories\"\r\nimport FastSimonApi from \"./components/FastSimonApi/FastSimonApi\"\r\nimport MainTheme from \"./components/FastSimonApi\"\r\nimport { FeaturedRanking } from \"@fast-simon/utilities/lib/@types/product\"\r\nimport { Products } from \"./services/products\"\r\n// export * from './components';\r\n\r\nexport type {\r\n MenuItemName,\r\n CustomClasses,\r\n SideMenuType,\r\n SideMenuItem,\r\n ProductLabelType,\r\n Banner,\r\n EditorProduct,\r\n IconProps,\r\n ServerProduct,\r\n FullTextServerResponseAll,\r\n smartCollectionsResults,\r\n FeaturedRanking\r\n};\r\n\r\nexport {\r\n BackOfficeFiltersMenu, InStoreFiltersMenu, Droppable, DndContextWrapper, SortableItem, ProductGrid, RenderIfVisible,\r\n useDragToSelect, LandingPage, FullTextSearch, BackOfficeFiltersIcon, BannersIcon, HelpIcon, InStoreFiltersIcon, PromoteIcon,\r\n RestoreIcon, RemoveIcon, GeneralIcon, videoFormats, isEditorProduct,useFastState, useFastStateFunctions,FastSimonApi,MainTheme,\r\n Products, getFormatProducts, useProductsPerRow, ProductLabel, CustomTagsFilters, SelectCard\r\n};"]}
@@ -0,0 +1,13 @@
1
+ import { CategoryNavigationResponse } from "../@types/categoriesNavigation";
2
+ interface Props {
3
+ uuid: string;
4
+ storeID: number;
5
+ collectionID?: string;
6
+ productIDS: string[];
7
+ }
8
+ export declare const getFormatProducts: ({ uuid, storeID, collectionID, productIDS }: Props) => Promise<{
9
+ data: CategoryNavigationResponse;
10
+ getFacets: () => Promise<import("@fast-simon/utilities").Facet[]>;
11
+ }>;
12
+ export declare const getFormatProductsFacetsOnly: ({ uuid, storeID, collectionID, productIDS }: Props) => Promise<import("@fast-simon/utilities").Facet[]>;
13
+ export {};
@@ -0,0 +1,44 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var _a;
11
+ import { fastSimonGet } from "./API";
12
+ import { transformFacetsOnlyData } from "./search";
13
+ const BASE_URL = (_a = import.meta.env.VITE_SERVING_BASE_URL) !== null && _a !== void 0 ? _a : "https://internal-v3joil6oqa-uc.a.run.app/search";
14
+ export const getFormatProducts = ({ uuid, storeID, collectionID, productIDS }) => __awaiter(void 0, void 0, void 0, function* () {
15
+ const params = {
16
+ UUID: uuid,
17
+ store_id: storeID,
18
+ category_id: collectionID,
19
+ facets_required: 1,
20
+ products: JSON.stringify(productIDS).replace(/["'\[\]]/g, "")
21
+ };
22
+ const res = yield fastSimonGet(BASE_URL, 'get_format_products_editor', params);
23
+ return {
24
+ data: res,
25
+ getFacets: () => __awaiter(void 0, void 0, void 0, function* () {
26
+ return ((res === null || res === void 0 ? void 0 : res.facets_completed) ? transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes) :
27
+ yield getFormatProductsFacetsOnly({
28
+ uuid, storeID, collectionID, productIDS
29
+ }));
30
+ })
31
+ };
32
+ });
33
+ export const getFormatProductsFacetsOnly = ({ uuid, storeID, collectionID, productIDS }) => __awaiter(void 0, void 0, void 0, function* () {
34
+ const params = {
35
+ UUID: uuid,
36
+ store_id: storeID,
37
+ category_id: collectionID,
38
+ facets_required: 2,
39
+ products: JSON.stringify(productIDS).replace(/["'\[\]]/g, "")
40
+ };
41
+ const res = yield fastSimonGet(BASE_URL, 'get_format_products_editor', params);
42
+ return transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes);
43
+ });
44
+ //# sourceMappingURL=getFormatProducts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFormatProducts.js","sourceRoot":"","sources":["../../src/services/getFormatProducts.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACnC,OAAO,EAAC,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAEjD,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,mCAAI,iDAAiD,CAAC;AAU5G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAO,EACI,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,UAAU,EACN,EAAE,EAAE;IAEhD,MAAM,MAAM,GAAG;QACX,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,CAAC;QAClB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;KAChE,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAA6B,QAAQ,EAAE,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAE3G,OAAO;QACH,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,GAAS,EAAE;YAAC,OAAA,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,gBAAgB,EAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACzG,MAAM,2BAA2B,CAAC;oBAC9B,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU;iBAC1C,CAAC,CAAC,CAAA;UAAA;KACV,CAAC;AACN,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAO,EACN,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,UAAU,EACN,EAAE,EAAE;IAEhD,MAAM,MAAM,GAAG;QACX,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,CAAC;QAClB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;KAChE,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAA6B,QAAQ,EAAE,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAE3G,OAAO,uBAAuB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvE,CAAC,CAAA,CAAA","sourcesContent":["import {CategoryNavigationResponse} from \"../@types/categoriesNavigation\";\r\nimport {fastSimonGet} from \"./API\";\r\nimport {transformFacetsOnlyData} from \"./search\";\r\n\r\nconst BASE_URL = import.meta.env.VITE_SERVING_BASE_URL ?? \"https://internal-v3joil6oqa-uc.a.run.app/search\";\r\n\r\ninterface Props {\r\n uuid: string;\r\n storeID: number;\r\n collectionID?: string;\r\n\r\n productIDS: string[];\r\n}\r\n\r\nexport const getFormatProducts = async ({\r\n uuid,\r\n storeID,\r\n collectionID,\r\n productIDS\r\n }: Props) => {\r\n\r\n const params = {\r\n UUID: uuid,\r\n store_id: storeID,\r\n category_id: collectionID,\r\n facets_required: 1,\r\n products: JSON.stringify(productIDS).replace(/[\"'\\[\\]]/g, \"\")\r\n };\r\n const res = await fastSimonGet<CategoryNavigationResponse>(BASE_URL, 'get_format_products_editor', params);\r\n\r\n return {\r\n data: res,\r\n getFacets: async () => (res?.facets_completed ? transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes) :\r\n await getFormatProductsFacetsOnly({\r\n uuid, storeID, collectionID, productIDS\r\n }))\r\n };\r\n}\r\n\r\nexport const getFormatProductsFacetsOnly = async ({\r\n uuid,\r\n storeID,\r\n collectionID,\r\n productIDS\r\n }: Props) => {\r\n\r\n const params = {\r\n UUID: uuid,\r\n store_id: storeID,\r\n category_id: collectionID,\r\n facets_required: 2,\r\n products: JSON.stringify(productIDS).replace(/[\"'\\[\\]]/g, \"\")\r\n };\r\n const res = await fastSimonGet<CategoryNavigationResponse>(BASE_URL, 'get_format_products_editor', params);\r\n\r\n return transformFacetsOnlyData(res.facets, res.avoid_tag_prefixes);\r\n}"]}
@@ -29,9 +29,10 @@ export const useDragToSelect = ({ areaRef, selectables, areaId, onSelectCommitte
29
29
  callback_object.event.target.localName === "svg") {
30
30
  return;
31
31
  }
32
+ const targetClassName = callback_object.event.target.className;
32
33
  if (callback_object.event.target.classList.contains("material-symbols-outlined") ||
33
- callback_object.event.target.className.includes("icon") ||
34
- callback_object.event.target.className.includes("Tooltip")) {
34
+ (typeof targetClassName === 'string' && targetClassName.includes("icon")) ||
35
+ (typeof targetClassName === 'string' && targetClassName.includes("Tooltip"))) {
35
36
  return;
36
37
  }
37
38
  setSelected(callback_object.items);
@@ -1 +1 @@
1
- {"version":3,"file":"useDragToSelect.js","sourceRoot":"","sources":["../../src/utils/useDragToSelect.ts"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport DragSelect from \"dragselect\";\r\ninterface Props {\r\n areaRef: React.RefObject<HTMLDivElement>;\r\n selectables: HTMLElement[];\r\n areaId: string;\r\n onSelectCommitted?: (selectedIDS: string[]) => void;\r\n onSelect: (ids: Record<string, number>) => void;\r\n isDragAndDropActive: boolean;\r\n disabled?: boolean;\r\n onDispatch: (key: string, value: any) => void;\r\n}\r\nexport const useDragToSelect = ({\r\n areaRef,\r\n selectables,\r\n areaId,\r\n onSelectCommitted,\r\n onSelect,\r\n isDragAndDropActive,\r\n disabled,\r\n onDispatch,\r\n}: Props) => {\r\n\r\n const [dragselect, setDragSelect] = React.useState<DragSelect>();\r\n\r\n const [prevSelectables, setPrevSelectables] = useState<HTMLElement[]>([]);\r\n\r\n const setSelected = useCallback(\r\n (items: HTMLElement[]) => {\r\n const selected = items.map((el: HTMLElement) => {\r\n const wrapper =\r\n el.closest(\".main-product-container\") ||\r\n el.querySelector(\".main-product-container\");\r\n return {\r\n id: wrapper?.getAttribute(\"product-id\"),\r\n pos: wrapper?.getAttribute(\"product-index\"),\r\n };\r\n });\r\n const ids: Record<string, number> = {};\r\n selected.forEach((el: any) => {\r\n const id = el.id.includes(\"_\")\r\n ? el.id.split(\"_\")[1]\r\n : String(el.id);\r\n ids[id] = parseInt(el.pos);\r\n });\r\n\r\n onSelect(ids);\r\n },\r\n [onSelect]\r\n );\r\n\r\n const onselect = (callback_object: any) => {\r\n if (\r\n (window as any).isDragAndDropActive ||\r\n callback_object?.isDragging ||\r\n !callback_object.event?.target ||\r\n callback_object.event.target.localName === \"svg\"\r\n ) {\r\n return;\r\n }\r\n if (\r\n callback_object.event.target.classList.contains(\r\n \"material-symbols-outlined\"\r\n ) ||\r\n callback_object.event.target.className.includes(\"icon\") ||\r\n callback_object.event.target.className.includes(\"Tooltip\")\r\n ) {\r\n return;\r\n }\r\n\r\n setSelected(callback_object.items);\r\n };\r\n\r\n const commit = (callback_object: any) => {\r\n onDispatch(\"setIsDragToSelectActive\", false);\r\n if (\r\n callback_object?.isDragging ||\r\n (window as any).isDragAndDropActive\r\n ) {\r\n const area = document.getElementById(areaId) as HTMLElement;\r\n if (area) {\r\n area.style.userSelect = \"\";\r\n area.style.webkitUserSelect = \"\";\r\n }\r\n dragselect?.clearSelection();\r\n return;\r\n }\r\n if (\r\n callback_object?.event?.target?.closest?.(\".main-product-container\")\r\n ) {\r\n return;\r\n }\r\n onselect(callback_object);\r\n dragselect?.clearSelection();\r\n };\r\n\r\n const onSelectStart = (callback_object: any) => {\r\n onDispatch(\"setIsDragToSelectActive\", true);\r\n\r\n if (\r\n !callback_object?.isDragging &&\r\n !(window as any).isDragAndDropActive &&\r\n callback_object.items.length !== 1\r\n ) {\r\n dragselect?.clearSelection();\r\n }\r\n if (window.getSelection) {\r\n window.getSelection()?.removeAllRanges?.();\r\n } else if (document.getSelection) {\r\n document.getSelection()?.empty?.();\r\n }\r\n const area = document.getElementById(areaId) as HTMLElement;\r\n if (area) {\r\n area.style.userSelect = \"none\";\r\n area.style.webkitUserSelect = \"none\";\r\n }\r\n };\r\n\r\n const onscroll = (callback_object: any) => {\r\n if (\r\n callback_object?.items?.length > 1 &&\r\n !(window as any).isDragAndDropActive\r\n ) {\r\n setSelected(callback_object.items);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n dragselect?.subscribe(\"dragmove\", onselect);\r\n dragselect?.subscribe(\"callback\", commit);\r\n dragselect?.subscribe(\"dragstart\", onSelectStart);\r\n dragselect?.subscribe(\"autoscroll\", onscroll);\r\n return () => {\r\n dragselect?.unsubscribe(\"dragmove\", onselect);\r\n dragselect?.unsubscribe(\"callback\", commit);\r\n dragselect?.unsubscribe(\"dragstart\", onSelectStart);\r\n dragselect?.unsubscribe(\"autoscroll\", onscroll);\r\n };\r\n }, [dragselect, setSelected]);\r\n\r\n useEffect(() => {\r\n const prevIds = prevSelectables.map((el: HTMLElement) => {\r\n const wrapper = el.closest(\".main-product-container\");\r\n return wrapper?.getAttribute(\"product-id\");\r\n });\r\n const currentIds = selectables.map((el: HTMLElement) => {\r\n const wrapper = el.closest(\".main-product-container\");\r\n return wrapper?.getAttribute(\"product-id\");\r\n });\r\n\r\n if (!dragselect && areaRef.current) {\r\n if (onSelectCommitted) {\r\n console.log(\"init dragselect\");\r\n }\r\n setDragSelect(\r\n new DragSelect({\r\n selectables: selectables as HTMLElement[],\r\n area: document.getElementById(areaId) as HTMLElement,\r\n autoScrollSpeed: 15,\r\n overflowTolerance: { x: 0, y: 0 },\r\n })\r\n );\r\n } else if (\r\n dragselect &&\r\n JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&\r\n !isDragAndDropActive\r\n ) {\r\n dragselect.setSettings({\r\n selectables: selectables as HTMLElement[],\r\n overflowTolerance: { x: 0, y: 0 },\r\n });\r\n setPrevSelectables(selectables);\r\n }\r\n }, [selectables, areaRef, disabled, isDragAndDropActive]);\r\n\r\n useEffect(() => {\r\n const mousedownCallback = (e: any) => {\r\n if (e.target.closest(\"#page_top\")) {\r\n return;\r\n }\r\n if (\r\n e.target.closest(\".actions-bar-container\") ||\r\n e.target.closest(\".scroll-to-top-btn\") ||\r\n e.target.closest(\".paste-button-container\")\r\n ) {\r\n return;\r\n }\r\n if (!e.target?.closest(\"#\" + areaId)) {\r\n onDispatch(\"setIsCutting\", false);\r\n onDispatch(\"setSelectedProducts\", []);\r\n onSelect({});\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", mousedownCallback);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", mousedownCallback);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.querySelectorAll(\".ds-selector-area\").forEach((el: any) => {\r\n el.style.visibility = isDragAndDropActive ? \"hidden\" : \"visible\";\r\n });\r\n }, [isDragAndDropActive]);\r\n\r\n useEffect(() => {\r\n if (dragselect && disabled) {\r\n dragselect.clearSelection();\r\n dragselect.setSettings({\r\n selectables: [],\r\n area: document.createElement(\"div\"),\r\n overflowTolerance: { x: 0, y: 0 },\r\n });\r\n } else if (dragselect && disabled === false) {\r\n dragselect.setSettings({\r\n selectables: selectables as HTMLElement[],\r\n area: document.getElementById(areaId) as HTMLElement,\r\n overflowTolerance: { x: 0, y: 0 },\r\n });\r\n }\r\n }, [dragselect, disabled]);\r\n};\r\n"]}
1
+ {"version":3,"file":"useDragToSelect.js","sourceRoot":"","sources":["../../src/utils/useDragToSelect.ts"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport DragSelect from \"dragselect\";\r\ninterface Props {\r\n areaRef: React.RefObject<HTMLDivElement>;\r\n selectables: HTMLElement[];\r\n areaId: string;\r\n onSelectCommitted?: (selectedIDS: string[]) => void;\r\n onSelect: (ids: Record<string, number>) => void;\r\n isDragAndDropActive: boolean;\r\n disabled?: boolean;\r\n onDispatch: (key: string, value: any) => void;\r\n}\r\nexport const useDragToSelect = ({\r\n areaRef,\r\n selectables,\r\n areaId,\r\n onSelectCommitted,\r\n onSelect,\r\n isDragAndDropActive,\r\n disabled,\r\n onDispatch,\r\n}: Props) => {\r\n\r\n const [dragselect, setDragSelect] = React.useState<DragSelect>();\r\n\r\n const [prevSelectables, setPrevSelectables] = useState<HTMLElement[]>([]);\r\n\r\n const setSelected = useCallback(\r\n (items: HTMLElement[]) => {\r\n const selected = items.map((el: HTMLElement) => {\r\n const wrapper =\r\n el.closest(\".main-product-container\") ||\r\n el.querySelector(\".main-product-container\");\r\n return {\r\n id: wrapper?.getAttribute(\"product-id\"),\r\n pos: wrapper?.getAttribute(\"product-index\"),\r\n };\r\n });\r\n const ids: Record<string, number> = {};\r\n selected.forEach((el: any) => {\r\n const id = el.id.includes(\"_\")\r\n ? el.id.split(\"_\")[1]\r\n : String(el.id);\r\n ids[id] = parseInt(el.pos);\r\n });\r\n\r\n onSelect(ids);\r\n },\r\n [onSelect]\r\n );\r\n\r\n const onselect = (callback_object: any) => {\r\n if (\r\n (window as any).isDragAndDropActive ||\r\n callback_object?.isDragging ||\r\n !callback_object.event?.target ||\r\n callback_object.event.target.localName === \"svg\"\r\n ) {\r\n return;\r\n }\r\n const targetClassName = callback_object.event.target.className;\r\n\r\n if (\r\n callback_object.event.target.classList.contains(\"material-symbols-outlined\") ||\r\n (typeof targetClassName === 'string' && targetClassName.includes(\"icon\")) ||\r\n (typeof targetClassName === 'string' && targetClassName.includes(\"Tooltip\"))\r\n ) {\r\n return;\r\n }\r\n\r\n setSelected(callback_object.items);\r\n };\r\n\r\n const commit = (callback_object: any) => {\r\n onDispatch(\"setIsDragToSelectActive\", false);\r\n if (\r\n callback_object?.isDragging ||\r\n (window as any).isDragAndDropActive\r\n ) {\r\n const area = document.getElementById(areaId) as HTMLElement;\r\n if (area) {\r\n area.style.userSelect = \"\";\r\n area.style.webkitUserSelect = \"\";\r\n }\r\n dragselect?.clearSelection();\r\n return;\r\n }\r\n if (\r\n callback_object?.event?.target?.closest?.(\".main-product-container\")\r\n ) {\r\n return;\r\n }\r\n onselect(callback_object);\r\n dragselect?.clearSelection();\r\n };\r\n\r\n const onSelectStart = (callback_object: any) => {\r\n onDispatch(\"setIsDragToSelectActive\", true);\r\n\r\n if (\r\n !callback_object?.isDragging &&\r\n !(window as any).isDragAndDropActive &&\r\n callback_object.items.length !== 1\r\n ) {\r\n dragselect?.clearSelection();\r\n }\r\n if (window.getSelection) {\r\n window.getSelection()?.removeAllRanges?.();\r\n } else if (document.getSelection) {\r\n document.getSelection()?.empty?.();\r\n }\r\n const area = document.getElementById(areaId) as HTMLElement;\r\n if (area) {\r\n area.style.userSelect = \"none\";\r\n area.style.webkitUserSelect = \"none\";\r\n }\r\n };\r\n\r\n const onscroll = (callback_object: any) => {\r\n if (\r\n callback_object?.items?.length > 1 &&\r\n !(window as any).isDragAndDropActive\r\n ) {\r\n setSelected(callback_object.items);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n dragselect?.subscribe(\"dragmove\", onselect);\r\n dragselect?.subscribe(\"callback\", commit);\r\n dragselect?.subscribe(\"dragstart\", onSelectStart);\r\n dragselect?.subscribe(\"autoscroll\", onscroll);\r\n return () => {\r\n dragselect?.unsubscribe(\"dragmove\", onselect);\r\n dragselect?.unsubscribe(\"callback\", commit);\r\n dragselect?.unsubscribe(\"dragstart\", onSelectStart);\r\n dragselect?.unsubscribe(\"autoscroll\", onscroll);\r\n };\r\n }, [dragselect, setSelected]);\r\n\r\n useEffect(() => {\r\n const prevIds = prevSelectables.map((el: HTMLElement) => {\r\n const wrapper = el.closest(\".main-product-container\");\r\n return wrapper?.getAttribute(\"product-id\");\r\n });\r\n const currentIds = selectables.map((el: HTMLElement) => {\r\n const wrapper = el.closest(\".main-product-container\");\r\n return wrapper?.getAttribute(\"product-id\");\r\n });\r\n\r\n if (!dragselect && areaRef.current) {\r\n if (onSelectCommitted) {\r\n console.log(\"init dragselect\");\r\n }\r\n setDragSelect(\r\n new DragSelect({\r\n selectables: selectables as HTMLElement[],\r\n area: document.getElementById(areaId) as HTMLElement,\r\n autoScrollSpeed: 15,\r\n overflowTolerance: { x: 0, y: 0 },\r\n })\r\n );\r\n } else if (\r\n dragselect &&\r\n JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&\r\n !isDragAndDropActive\r\n ) {\r\n dragselect.setSettings({\r\n selectables: selectables as HTMLElement[],\r\n overflowTolerance: { x: 0, y: 0 },\r\n });\r\n setPrevSelectables(selectables);\r\n }\r\n }, [selectables, areaRef, disabled, isDragAndDropActive]);\r\n\r\n useEffect(() => {\r\n const mousedownCallback = (e: any) => {\r\n if (e.target.closest(\"#page_top\")) {\r\n return;\r\n }\r\n if (\r\n e.target.closest(\".actions-bar-container\") ||\r\n e.target.closest(\".scroll-to-top-btn\") ||\r\n e.target.closest(\".paste-button-container\")\r\n ) {\r\n return;\r\n }\r\n if (!e.target?.closest(\"#\" + areaId)) {\r\n onDispatch(\"setIsCutting\", false);\r\n onDispatch(\"setSelectedProducts\", []);\r\n onSelect({});\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", mousedownCallback);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", mousedownCallback);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.querySelectorAll(\".ds-selector-area\").forEach((el: any) => {\r\n el.style.visibility = isDragAndDropActive ? \"hidden\" : \"visible\";\r\n });\r\n }, [isDragAndDropActive]);\r\n\r\n useEffect(() => {\r\n if (dragselect && disabled) {\r\n dragselect.clearSelection();\r\n dragselect.setSettings({\r\n selectables: [],\r\n area: document.createElement(\"div\"),\r\n overflowTolerance: { x: 0, y: 0 },\r\n });\r\n } else if (dragselect && disabled === false) {\r\n dragselect.setSettings({\r\n selectables: selectables as HTMLElement[],\r\n area: document.getElementById(areaId) as HTMLElement,\r\n overflowTolerance: { x: 0, y: 0 },\r\n });\r\n }\r\n }, [dragselect, disabled]);\r\n};\r\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const useProductsPerRow: () => {
2
+ productsPerRow: number;
3
+ };
@@ -0,0 +1,19 @@
1
+ import { useEffect, useState } from "react";
2
+ const PRODUCTS_PER_ROW_KEY = 'fs-products-per-row';
3
+ export const useProductsPerRow = () => {
4
+ const [productsPerRow, setProductsPerRow] = useState(Number(localStorage.getItem(PRODUCTS_PER_ROW_KEY)) || 4);
5
+ const set = (e) => {
6
+ setProductsPerRow(e.detail.productsPerRow);
7
+ localStorage.setItem(PRODUCTS_PER_ROW_KEY, e.detail.productsPerRow);
8
+ };
9
+ useEffect(() => {
10
+ document.addEventListener('editor-products-per-row', set);
11
+ return () => {
12
+ document.removeEventListener('editor-products-per-row', set);
13
+ };
14
+ }, []);
15
+ return {
16
+ productsPerRow
17
+ };
18
+ };
19
+ //# sourceMappingURL=useProductsPerRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProductsPerRow.js","sourceRoot":"","sources":["../../src/utils/useProductsPerRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE1C,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAElC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9G,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAE;QACnB,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC3C,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxE,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,cAAc;KACjB,CAAA;AACL,CAAC,CAAA","sourcesContent":["import {useEffect, useState} from \"react\";\r\n\r\nconst PRODUCTS_PER_ROW_KEY = 'fs-products-per-row';\r\nexport const useProductsPerRow = () => {\r\n\r\n const [productsPerRow, setProductsPerRow] = useState(Number(localStorage.getItem(PRODUCTS_PER_ROW_KEY)) || 4);\r\n\r\n const set = (e: any) => {\r\n setProductsPerRow(e.detail.productsPerRow);\r\n localStorage.setItem(PRODUCTS_PER_ROW_KEY, e.detail.productsPerRow);\r\n }\r\n\r\n useEffect(() => {\r\n document.addEventListener('editor-products-per-row', set);\r\n return () => {\r\n document.removeEventListener('editor-products-per-row', set);\r\n };\r\n }, []);\r\n\r\n return {\r\n productsPerRow\r\n }\r\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fast-simon/dashboard-utilities",
3
- "version": "1.0.39",
3
+ "version": "1.0.41",
4
4
  "scripts": {
5
5
  "dev": "vite",
6
6
  "preview": "vite preview",