@fast-simon/dashboard-utilities 1.0.96 → 1.0.98

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.
Files changed (277) hide show
  1. package/dist/@types/autocomplete.d.ts +58 -58
  2. package/dist/@types/autocomplete.js +1 -1
  3. package/dist/@types/autocomplete.js.map +1 -1
  4. package/dist/@types/banner.d.ts +7 -7
  5. package/dist/@types/banner.js +1 -1
  6. package/dist/@types/banner.js.map +1 -1
  7. package/dist/@types/categories.d.ts +113 -113
  8. package/dist/@types/categories.js +1 -1
  9. package/dist/@types/categories.js.map +1 -1
  10. package/dist/@types/categoriesNavigation.d.ts +27 -27
  11. package/dist/@types/categoriesNavigation.js +1 -1
  12. package/dist/@types/categoriesNavigation.js.map +1 -1
  13. package/dist/@types/context.d.ts +49 -49
  14. package/dist/@types/context.js +1 -1
  15. package/dist/@types/context.js.map +1 -1
  16. package/dist/@types/currency.d.ts +1 -1
  17. package/dist/@types/currency.js +1 -1
  18. package/dist/@types/currency.js.map +1 -1
  19. package/dist/@types/editorProduct.d.ts +26 -26
  20. package/dist/@types/editorProduct.js +5 -5
  21. package/dist/@types/editorProduct.js.map +1 -1
  22. package/dist/@types/facets.d.ts +59 -59
  23. package/dist/@types/facets.js +18 -18
  24. package/dist/@types/facets.js.map +1 -1
  25. package/dist/@types/iconProps.d.ts +9 -9
  26. package/dist/@types/iconProps.js +1 -1
  27. package/dist/@types/iconProps.js.map +1 -1
  28. package/dist/@types/narrow.d.ts +7 -7
  29. package/dist/@types/narrow.js +1 -1
  30. package/dist/@types/narrow.js.map +1 -1
  31. package/dist/@types/product.d.ts +160 -160
  32. package/dist/@types/product.js +7 -7
  33. package/dist/@types/product.js.map +1 -1
  34. package/dist/@types/productLabel.d.ts +1 -1
  35. package/dist/@types/productLabel.js +1 -1
  36. package/dist/@types/promoTile.d.ts +11 -11
  37. package/dist/@types/promoTile.js +1 -1
  38. package/dist/@types/promoTile.js.map +1 -1
  39. package/dist/@types/results.d.ts +142 -142
  40. package/dist/@types/results.js +1 -1
  41. package/dist/@types/results.js.map +1 -1
  42. package/dist/@types/sideMenu.d.ts +19 -19
  43. package/dist/@types/sideMenu.js +1 -1
  44. package/dist/@types/sideMenu.js.map +1 -1
  45. package/dist/@types/sortBy.d.ts +3 -3
  46. package/dist/@types/sortBy.js +1 -1
  47. package/dist/@types/sortBy.js.map +1 -1
  48. package/dist/@types/widget.d.ts +8 -8
  49. package/dist/@types/widget.js +1 -1
  50. package/dist/@types/widget.js.map +1 -1
  51. package/dist/App.d.ts +3 -3
  52. package/dist/App.js +14 -14
  53. package/dist/App.js.map +1 -1
  54. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.d.ts +9 -9
  55. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js +73 -73
  56. package/dist/components/BackOfficeFiltersMenu/BackOfficeFiltersMenu.js.map +1 -1
  57. package/dist/components/BackOfficeFiltersMenu/index.d.ts +1 -1
  58. package/dist/components/BackOfficeFiltersMenu/index.js +1 -1
  59. package/dist/components/BackOfficeFiltersMenu/index.js.map +1 -1
  60. package/dist/components/BackOfficeFiltersMenu/styles.module.css +9 -9
  61. package/dist/components/BackOfficeFiltersMenu/utils.d.ts +7 -7
  62. package/dist/components/BackOfficeFiltersMenu/utils.js +238 -238
  63. package/dist/components/BackOfficeFiltersMenu/utils.js.map +1 -1
  64. package/dist/components/CheckboxFilter/Checkbox/Checkbox.d.ts +10 -10
  65. package/dist/components/CheckboxFilter/Checkbox/Checkbox.js +6 -6
  66. package/dist/components/CheckboxFilter/Checkbox/Checkbox.js.map +1 -1
  67. package/dist/components/CheckboxFilter/CheckboxFilter.d.ts +6 -6
  68. package/dist/components/CheckboxFilter/CheckboxFilter.js +8 -8
  69. package/dist/components/CheckboxFilter/CheckboxFilter.js.map +1 -1
  70. package/dist/components/CheckboxFilter/styles.module.css +4 -4
  71. package/dist/components/DragAndDrop/DndContextWrapper.d.ts +19 -19
  72. package/dist/components/DragAndDrop/DndContextWrapper.js +30 -30
  73. package/dist/components/DragAndDrop/DndContextWrapper.js.map +1 -1
  74. package/dist/components/DragAndDrop/Droppable.d.ts +7 -7
  75. package/dist/components/DragAndDrop/Droppable.js +9 -9
  76. package/dist/components/DragAndDrop/Droppable.js.map +1 -1
  77. package/dist/components/DragAndDrop/SortableItem.d.ts +13 -13
  78. package/dist/components/DragAndDrop/SortableItem.js +38 -38
  79. package/dist/components/DragAndDrop/SortableItem.js.map +1 -1
  80. package/dist/components/DragAndDrop/styles.module.css +15 -15
  81. package/dist/components/FacetItem/FacetItem.d.ts +13 -13
  82. package/dist/components/FacetItem/FacetItem.js +39 -39
  83. package/dist/components/FacetItem/FacetItem.js.map +1 -1
  84. package/dist/components/FacetItem/styles.module.css +54 -54
  85. package/dist/components/FastSimonApi/FastSimonApi.d.ts +39 -39
  86. package/dist/components/FastSimonApi/FastSimonApi.js +605 -605
  87. package/dist/components/FastSimonApi/FastSimonApi.js.map +1 -1
  88. package/dist/components/FastSimonApi/context.d.ts +62 -62
  89. package/dist/components/FastSimonApi/context.js +9 -9
  90. package/dist/components/FastSimonApi/context.js.map +1 -1
  91. package/dist/components/FastSimonApi/index.d.ts +3 -3
  92. package/dist/components/FastSimonApi/index.js +2 -2
  93. package/dist/components/FastSimonApi/index.js.map +1 -1
  94. package/dist/components/FastSimonApi/reducer.d.ts +458 -458
  95. package/dist/components/FastSimonApi/reducer.js +76 -76
  96. package/dist/components/FastSimonApi/reducer.js.map +1 -1
  97. package/dist/components/FromToFilter/From/From.d.ts +17 -17
  98. package/dist/components/FromToFilter/From/From.js +21 -21
  99. package/dist/components/FromToFilter/From/From.js.map +1 -1
  100. package/dist/components/FromToFilter/FromToFilter.d.ts +14 -14
  101. package/dist/components/FromToFilter/FromToFilter.js +57 -57
  102. package/dist/components/FromToFilter/FromToFilter.js.map +1 -1
  103. package/dist/components/FromToFilter/To/To.d.ts +18 -18
  104. package/dist/components/FromToFilter/To/To.js +22 -22
  105. package/dist/components/FromToFilter/To/To.js.map +1 -1
  106. package/dist/components/FromToFilter/styles.module.css +33 -33
  107. package/dist/components/FromToFilter/utils.d.ts +25 -25
  108. package/dist/components/FromToFilter/utils.js +6 -6
  109. package/dist/components/FromToFilter/utils.js.map +1 -1
  110. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.d.ts +10 -10
  111. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js +33 -33
  112. package/dist/components/InStoreFiltersMenu/InStoreFiltersMenu.js.map +1 -1
  113. package/dist/components/InStoreFiltersMenu/index.d.ts +1 -1
  114. package/dist/components/InStoreFiltersMenu/index.js +1 -1
  115. package/dist/components/InStoreFiltersMenu/index.js.map +1 -1
  116. package/dist/components/InStoreFiltersMenu/styles.module.css +9 -9
  117. package/dist/components/Input/Input.d.ts +22 -22
  118. package/dist/components/Input/Input.js +48 -48
  119. package/dist/components/Input/Input.js.map +1 -1
  120. package/dist/components/Input/index.d.ts +1 -1
  121. package/dist/components/Input/index.js +1 -1
  122. package/dist/components/Input/index.js.map +1 -1
  123. package/dist/components/Input/styles.module.css +2 -2
  124. package/dist/components/LastReceivedDateFilter/LastReceivedDate.d.ts +9 -9
  125. package/dist/components/LastReceivedDateFilter/LastReceivedDate.js +87 -87
  126. package/dist/components/LastReceivedDateFilter/LastReceivedDate.js.map +1 -1
  127. package/dist/components/LastReceivedDateFilter/styles.module.css +40 -40
  128. package/dist/components/LastReceivedDateFilter/utils.d.ts +3 -3
  129. package/dist/components/LastReceivedDateFilter/utils.js +42 -42
  130. package/dist/components/LastReceivedDateFilter/utils.js.map +1 -1
  131. package/dist/components/ProductLabel/ProductLabel.d.ts +11 -11
  132. package/dist/components/ProductLabel/ProductLabel.js +10 -10
  133. package/dist/components/ProductLabel/ProductLabel.js.map +1 -1
  134. package/dist/components/ProductLabel/index.d.ts +1 -1
  135. package/dist/components/ProductLabel/index.js +1 -1
  136. package/dist/components/ProductLabel/index.js.map +1 -1
  137. package/dist/components/ProductLabel/styles.module.css +41 -41
  138. package/dist/components/ProductLabel/utils.d.ts +8 -8
  139. package/dist/components/ProductLabel/utils.js +8 -8
  140. package/dist/components/ProductLabel/utils.js.map +1 -1
  141. package/dist/components/RadioFilter/Radio/Radio.d.ts +10 -10
  142. package/dist/components/RadioFilter/Radio/Radio.js +6 -6
  143. package/dist/components/RadioFilter/Radio/Radio.js.map +1 -1
  144. package/dist/components/RadioFilter/RadioFilter.d.ts +9 -9
  145. package/dist/components/RadioFilter/RadioFilter.js +44 -44
  146. package/dist/components/RadioFilter/RadioFilter.js.map +1 -1
  147. package/dist/components/RadioFilter/styles.module.css +22 -22
  148. package/dist/components/RadioFilter/utils.d.ts +1 -1
  149. package/dist/components/RadioFilter/utils.js +7 -7
  150. package/dist/components/RadioFilter/utils.js.map +1 -1
  151. package/dist/components/ReactDatePicker/ReactDatePicker.d.ts +11 -11
  152. package/dist/components/ReactDatePicker/ReactDatePicker.js +15 -15
  153. package/dist/components/ReactDatePicker/ReactDatePicker.js.map +1 -1
  154. package/dist/components/ReactDatePicker/index.d.ts +1 -1
  155. package/dist/components/ReactDatePicker/index.js +1 -1
  156. package/dist/components/ReactDatePicker/index.js.map +1 -1
  157. package/dist/components/ReactDatePicker/styles.module.css +2 -2
  158. package/dist/components/RenderIfVisible/RenderIfVisible.d.ts +12 -12
  159. package/dist/components/RenderIfVisible/RenderIfVisible.js +58 -58
  160. package/dist/components/RenderIfVisible/RenderIfVisible.js.map +1 -1
  161. package/dist/components/RenderIfVisible/index.d.ts +1 -1
  162. package/dist/components/RenderIfVisible/index.js +1 -1
  163. package/dist/components/RenderIfVisible/index.js.map +1 -1
  164. package/dist/components/ScrollToTop/ScrollToTop.d.ts +6 -6
  165. package/dist/components/ScrollToTop/ScrollToTop.js +27 -27
  166. package/dist/components/ScrollToTop/ScrollToTop.js.map +1 -1
  167. package/dist/components/ScrollToTop/styles.module.css +18 -18
  168. package/dist/components/SelectCard/SelectCard.d.ts +5 -5
  169. package/dist/components/SelectCard/SelectCard.js +6 -6
  170. package/dist/components/SelectCard/SelectCard.js.map +1 -1
  171. package/dist/components/SelectCard/index.d.ts +1 -1
  172. package/dist/components/SelectCard/index.js +1 -1
  173. package/dist/components/SelectCard/index.js.map +1 -1
  174. package/dist/components/SelectCard/styles.module.css +20 -20
  175. package/dist/components/SingleFilter/SingleFilter.d.ts +11 -11
  176. package/dist/components/SingleFilter/SingleFilter.js +89 -89
  177. package/dist/components/SingleFilter/SingleFilter.js.map +1 -1
  178. package/dist/components/SingleFilter/styles.module.css +23 -23
  179. package/dist/components/SingleFilter/utils.d.ts +3 -3
  180. package/dist/components/SingleFilter/utils.js +41 -41
  181. package/dist/components/SingleFilter/utils.js.map +1 -1
  182. package/dist/components/SliderFilter/SliderFilter.d.ts +20 -20
  183. package/dist/components/SliderFilter/SliderFilter.js +45 -45
  184. package/dist/components/SliderFilter/SliderFilter.js.map +1 -1
  185. package/dist/components/SliderFilter/index.d.ts +1 -1
  186. package/dist/components/SliderFilter/index.js +1 -1
  187. package/dist/components/SliderFilter/index.js.map +1 -1
  188. package/dist/components/SliderFilter/styles.module.css +15 -15
  189. package/dist/components/Tooltip/Tooltip.d.ts +8 -8
  190. package/dist/components/Tooltip/Tooltip.js +8 -8
  191. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  192. package/dist/components/Tooltip/styles.module.css +33 -33
  193. package/dist/components/common.d.ts +23 -23
  194. package/dist/components/common.js +30 -30
  195. package/dist/components/common.js.map +1 -1
  196. package/dist/components/productGrid/ProductGrid.d.ts +11 -11
  197. package/dist/components/productGrid/ProductGrid.js +32 -32
  198. package/dist/components/productGrid/ProductGrid.js.map +1 -1
  199. package/dist/components/productGrid/index.d.ts +1 -1
  200. package/dist/components/productGrid/index.js +1 -1
  201. package/dist/components/productGrid/index.js.map +1 -1
  202. package/dist/components/productGrid/styles.module.css +25 -25
  203. package/dist/icons/BackOfficeFiltersIcon.d.ts +2 -2
  204. package/dist/icons/BackOfficeFiltersIcon.js +6 -6
  205. package/dist/icons/BackOfficeFiltersIcon.js.map +1 -1
  206. package/dist/icons/BannersIcon.d.ts +2 -2
  207. package/dist/icons/BannersIcon.js +6 -6
  208. package/dist/icons/BannersIcon.js.map +1 -1
  209. package/dist/icons/GeneralIcon.d.ts +2 -2
  210. package/dist/icons/GeneralIcon.js +6 -6
  211. package/dist/icons/GeneralIcon.js.map +1 -1
  212. package/dist/icons/HelpIcon.d.ts +7 -7
  213. package/dist/icons/HelpIcon.js +4 -4
  214. package/dist/icons/HelpIcon.js.map +1 -1
  215. package/dist/icons/InStoreFiltersIcon.d.ts +2 -2
  216. package/dist/icons/InStoreFiltersIcon.js +6 -6
  217. package/dist/icons/InStoreFiltersIcon.js.map +1 -1
  218. package/dist/icons/PromoteIcon.d.ts +2 -2
  219. package/dist/icons/PromoteIcon.js +6 -6
  220. package/dist/icons/PromoteIcon.js.map +1 -1
  221. package/dist/icons/RemoveIcon.d.ts +2 -2
  222. package/dist/icons/RemoveIcon.js +6 -6
  223. package/dist/icons/RemoveIcon.js.map +1 -1
  224. package/dist/icons/RestoreIcon.d.ts +2 -2
  225. package/dist/icons/RestoreIcon.js +6 -6
  226. package/dist/icons/RestoreIcon.js.map +1 -1
  227. package/dist/icons/styles.module.css +60 -60
  228. package/dist/index.d.ts +41 -41
  229. package/dist/index.js +32 -32
  230. package/dist/index.js.map +1 -1
  231. package/dist/main.d.ts +1 -1
  232. package/dist/main.js +5 -5
  233. package/dist/main.js.map +1 -1
  234. package/dist/services/API.d.ts +21 -21
  235. package/dist/services/API.js +49 -49
  236. package/dist/services/API.js.map +1 -1
  237. package/dist/services/autocomplete.d.ts +4 -4
  238. package/dist/services/autocomplete.js +25 -25
  239. package/dist/services/autocomplete.js.map +1 -1
  240. package/dist/services/getFormatProducts.d.ts +13 -13
  241. package/dist/services/getFormatProducts.js +43 -43
  242. package/dist/services/getFormatProducts.js.map +1 -1
  243. package/dist/services/landingPage.d.ts +28 -28
  244. package/dist/services/landingPage.js +86 -86
  245. package/dist/services/landingPage.js.map +1 -1
  246. package/dist/services/products.d.ts +9 -9
  247. package/dist/services/products.js +30 -30
  248. package/dist/services/products.js.map +1 -1
  249. package/dist/services/search.d.ts +13 -13
  250. package/dist/services/search.js +113 -113
  251. package/dist/services/search.js.map +1 -1
  252. package/dist/services/smartCollections.d.ts +5 -5
  253. package/dist/services/smartCollections.js +44 -44
  254. package/dist/services/smartCollections.js.map +1 -1
  255. package/dist/utils/customTagsFilters.d.ts +4 -4
  256. package/dist/utils/customTagsFilters.js +9 -9
  257. package/dist/utils/customTagsFilters.js.map +1 -1
  258. package/dist/utils/getCacheSettings.d.ts +16 -16
  259. package/dist/utils/getCacheSettings.js +25 -25
  260. package/dist/utils/getCacheSettings.js.map +1 -1
  261. package/dist/utils/getInternalURL.d.ts +1 -1
  262. package/dist/utils/getInternalURL.js +7 -7
  263. package/dist/utils/getInternalURL.js.map +1 -1
  264. package/dist/utils/getLSVectorSearch.d.ts +4 -4
  265. package/dist/utils/getLSVectorSearch.js +8 -8
  266. package/dist/utils/getLSVectorSearch.js.map +1 -1
  267. package/dist/utils/useDragToSelect.d.ts +13 -13
  268. package/dist/utils/useDragToSelect.js +172 -172
  269. package/dist/utils/useDragToSelect.js.map +1 -1
  270. package/dist/utils/useProductsPerRow.d.ts +3 -3
  271. package/dist/utils/useProductsPerRow.js +18 -18
  272. package/dist/utils/useProductsPerRow.js.map +1 -1
  273. package/package.json +64 -64
  274. package/dist/components/CheckboxFilter/Checkbox/styles.module.css +0 -143
  275. package/dist/components/FromToFilter/From/styles.module.css +0 -9
  276. package/dist/components/FromToFilter/To/styles.module.css +0 -9
  277. package/dist/components/RadioFilter/Radio/styles.module.css +0 -145
@@ -1,173 +1,173 @@
1
- import React, { useCallback, useEffect, useState } from "react";
2
- import DragSelect from "dragselect";
3
- export const useDragToSelect = ({ areaRef, selectables, areaId, onSelectCommitted, onSelect, isDragAndDropActive, disabled, onDispatch, }) => {
4
- const [dragselect, setDragSelect] = React.useState();
5
- const [prevSelectables, setPrevSelectables] = useState([]);
6
- const setSelected = useCallback((items) => {
7
- const selected = items.map((el) => {
8
- const wrapper = el.closest(".main-product-container") ||
9
- el.querySelector(".main-product-container");
10
- return {
11
- id: wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id"),
12
- pos: wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-index"),
13
- };
14
- });
15
- const ids = {};
16
- selected.forEach((el) => {
17
- const id = el.id.includes("_")
18
- ? el.id.split("_")[1]
19
- : String(el.id);
20
- ids[id] = parseInt(el.pos);
21
- });
22
- onSelect(ids);
23
- }, [onSelect]);
24
- const onselect = (callback_object) => {
25
- var _a;
26
- if (window.isDragAndDropActive ||
27
- (callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) ||
28
- !((_a = callback_object.event) === null || _a === void 0 ? void 0 : _a.target) ||
29
- callback_object.event.target.localName === "svg") {
30
- return;
31
- }
32
- const targetClassName = callback_object.event.target.className;
33
- if (callback_object.event.target.classList.contains("material-symbols-outlined") ||
34
- (typeof targetClassName === 'string' && targetClassName.includes("icon")) ||
35
- (typeof targetClassName === 'string' && targetClassName.includes("Tooltip"))) {
36
- return;
37
- }
38
- setSelected(callback_object.items);
39
- };
40
- const commit = (callback_object) => {
41
- var _a, _b, _c;
42
- onDispatch("setIsDragToSelectActive", false);
43
- if ((callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) ||
44
- window.isDragAndDropActive) {
45
- const area = document.getElementById(areaId);
46
- if (area) {
47
- area.style.userSelect = "";
48
- area.style.webkitUserSelect = "";
49
- }
50
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
51
- return;
52
- }
53
- if ((_c = (_b = (_a = callback_object === null || callback_object === void 0 ? void 0 : callback_object.event) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.closest) === null || _c === void 0 ? void 0 : _c.call(_b, ".main-product-container")) {
54
- return;
55
- }
56
- onselect(callback_object);
57
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
58
- };
59
- const onSelectStart = (callback_object) => {
60
- var _a, _b, _c, _d;
61
- onDispatch("setIsDragToSelectActive", true);
62
- if (!(callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) &&
63
- !window.isDragAndDropActive &&
64
- callback_object.items.length !== 1) {
65
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
66
- }
67
- if (window.getSelection) {
68
- (_b = (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges) === null || _b === void 0 ? void 0 : _b.call(_a);
69
- }
70
- else if (document.getSelection) {
71
- (_d = (_c = document.getSelection()) === null || _c === void 0 ? void 0 : _c.empty) === null || _d === void 0 ? void 0 : _d.call(_c);
72
- }
73
- const area = document.getElementById(areaId);
74
- if (area) {
75
- area.style.userSelect = "none";
76
- area.style.webkitUserSelect = "none";
77
- }
78
- };
79
- const onscroll = (callback_object) => {
80
- var _a;
81
- if (((_a = callback_object === null || callback_object === void 0 ? void 0 : callback_object.items) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
82
- !window.isDragAndDropActive) {
83
- setSelected(callback_object.items);
84
- }
85
- };
86
- useEffect(() => {
87
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("dragmove", onselect);
88
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("callback", commit);
89
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("dragstart", onSelectStart);
90
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("autoscroll", onscroll);
91
- return () => {
92
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("dragmove", onselect);
93
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("callback", commit);
94
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("dragstart", onSelectStart);
95
- dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("autoscroll", onscroll);
96
- };
97
- }, [dragselect, setSelected]);
98
- useEffect(() => {
99
- const prevIds = prevSelectables.map((el) => {
100
- const wrapper = el.closest(".main-product-container");
101
- return wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id");
102
- });
103
- const currentIds = selectables.map((el) => {
104
- const wrapper = el.closest(".main-product-container");
105
- return wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id");
106
- });
107
- if (!dragselect && areaRef.current) {
108
- if (onSelectCommitted) {
109
- console.log("init dragselect");
110
- }
111
- setDragSelect(new DragSelect({
112
- selectables: selectables,
113
- area: document.getElementById(areaId),
114
- autoScrollSpeed: 15,
115
- overflowTolerance: { x: 0, y: 0 },
116
- }));
117
- }
118
- else if (dragselect &&
119
- JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&
120
- !isDragAndDropActive) {
121
- dragselect.setSettings({
122
- selectables: selectables,
123
- overflowTolerance: { x: 0, y: 0 },
124
- });
125
- setPrevSelectables(selectables);
126
- }
127
- }, [selectables, areaRef, disabled, isDragAndDropActive]);
128
- useEffect(() => {
129
- const mousedownCallback = (e) => {
130
- var _a;
131
- if (e.target.closest("#page_top")) {
132
- return;
133
- }
134
- if (e.target.closest(".actions-bar-container") ||
135
- e.target.closest(".scroll-to-top-btn") ||
136
- e.target.closest(".paste-button-container")) {
137
- return;
138
- }
139
- if (!((_a = e.target) === null || _a === void 0 ? void 0 : _a.closest("#" + areaId))) {
140
- onDispatch("setIsCutting", false);
141
- onDispatch("setSelectedProducts", []);
142
- onSelect({});
143
- }
144
- };
145
- document.addEventListener("mousedown", mousedownCallback);
146
- return () => {
147
- document.removeEventListener("mousedown", mousedownCallback);
148
- };
149
- }, []);
150
- useEffect(() => {
151
- document.querySelectorAll(".ds-selector-area").forEach((el) => {
152
- el.style.visibility = isDragAndDropActive ? "hidden" : "visible";
153
- });
154
- }, [isDragAndDropActive]);
155
- useEffect(() => {
156
- if (dragselect && disabled) {
157
- dragselect.clearSelection();
158
- dragselect.setSettings({
159
- selectables: [],
160
- area: document.createElement("div"),
161
- overflowTolerance: { x: 0, y: 0 },
162
- });
163
- }
164
- else if (dragselect && disabled === false) {
165
- dragselect.setSettings({
166
- selectables: selectables,
167
- area: document.getElementById(areaId),
168
- overflowTolerance: { x: 0, y: 0 },
169
- });
170
- }
171
- }, [dragselect, disabled]);
172
- };
1
+ import React, { useCallback, useEffect, useState } from "react";
2
+ import DragSelect from "dragselect";
3
+ export const useDragToSelect = ({ areaRef, selectables, areaId, onSelectCommitted, onSelect, isDragAndDropActive, disabled, onDispatch, }) => {
4
+ const [dragselect, setDragSelect] = React.useState();
5
+ const [prevSelectables, setPrevSelectables] = useState([]);
6
+ const setSelected = useCallback((items) => {
7
+ const selected = items.map((el) => {
8
+ const wrapper = el.closest(".main-product-container") ||
9
+ el.querySelector(".main-product-container");
10
+ return {
11
+ id: wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id"),
12
+ pos: wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-index"),
13
+ };
14
+ });
15
+ const ids = {};
16
+ selected.forEach((el) => {
17
+ const id = el.id.includes("_")
18
+ ? el.id.split("_")[1]
19
+ : String(el.id);
20
+ ids[id] = parseInt(el.pos);
21
+ });
22
+ onSelect(ids);
23
+ }, [onSelect]);
24
+ const onselect = (callback_object) => {
25
+ var _a;
26
+ if (window.isDragAndDropActive ||
27
+ (callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) ||
28
+ !((_a = callback_object.event) === null || _a === void 0 ? void 0 : _a.target) ||
29
+ callback_object.event.target.localName === "svg") {
30
+ return;
31
+ }
32
+ const targetClassName = callback_object.event.target.className;
33
+ if (callback_object.event.target.classList.contains("material-symbols-outlined") ||
34
+ (typeof targetClassName === 'string' && targetClassName.includes("icon")) ||
35
+ (typeof targetClassName === 'string' && targetClassName.includes("Tooltip"))) {
36
+ return;
37
+ }
38
+ setSelected(callback_object.items);
39
+ };
40
+ const commit = (callback_object) => {
41
+ var _a, _b, _c;
42
+ onDispatch("setIsDragToSelectActive", false);
43
+ if ((callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) ||
44
+ window.isDragAndDropActive) {
45
+ const area = document.getElementById(areaId);
46
+ if (area) {
47
+ area.style.userSelect = "";
48
+ area.style.webkitUserSelect = "";
49
+ }
50
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
51
+ return;
52
+ }
53
+ if ((_c = (_b = (_a = callback_object === null || callback_object === void 0 ? void 0 : callback_object.event) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.closest) === null || _c === void 0 ? void 0 : _c.call(_b, ".main-product-container")) {
54
+ return;
55
+ }
56
+ onselect(callback_object);
57
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
58
+ };
59
+ const onSelectStart = (callback_object) => {
60
+ var _a, _b, _c, _d;
61
+ onDispatch("setIsDragToSelectActive", true);
62
+ if (!(callback_object === null || callback_object === void 0 ? void 0 : callback_object.isDragging) &&
63
+ !window.isDragAndDropActive &&
64
+ callback_object.items.length !== 1) {
65
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.clearSelection();
66
+ }
67
+ if (window.getSelection) {
68
+ (_b = (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges) === null || _b === void 0 ? void 0 : _b.call(_a);
69
+ }
70
+ else if (document.getSelection) {
71
+ (_d = (_c = document.getSelection()) === null || _c === void 0 ? void 0 : _c.empty) === null || _d === void 0 ? void 0 : _d.call(_c);
72
+ }
73
+ const area = document.getElementById(areaId);
74
+ if (area) {
75
+ area.style.userSelect = "none";
76
+ area.style.webkitUserSelect = "none";
77
+ }
78
+ };
79
+ const onscroll = (callback_object) => {
80
+ var _a;
81
+ if (((_a = callback_object === null || callback_object === void 0 ? void 0 : callback_object.items) === null || _a === void 0 ? void 0 : _a.length) > 1 &&
82
+ !window.isDragAndDropActive) {
83
+ setSelected(callback_object.items);
84
+ }
85
+ };
86
+ useEffect(() => {
87
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("dragmove", onselect);
88
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("callback", commit);
89
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("dragstart", onSelectStart);
90
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.subscribe("autoscroll", onscroll);
91
+ return () => {
92
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("dragmove", onselect);
93
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("callback", commit);
94
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("dragstart", onSelectStart);
95
+ dragselect === null || dragselect === void 0 ? void 0 : dragselect.unsubscribe("autoscroll", onscroll);
96
+ };
97
+ }, [dragselect, setSelected]);
98
+ useEffect(() => {
99
+ const prevIds = prevSelectables.map((el) => {
100
+ const wrapper = el.closest(".main-product-container");
101
+ return wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id");
102
+ });
103
+ const currentIds = selectables.map((el) => {
104
+ const wrapper = el.closest(".main-product-container");
105
+ return wrapper === null || wrapper === void 0 ? void 0 : wrapper.getAttribute("product-id");
106
+ });
107
+ if (!dragselect && areaRef.current) {
108
+ if (onSelectCommitted) {
109
+ console.log("init dragselect");
110
+ }
111
+ setDragSelect(new DragSelect({
112
+ selectables: selectables,
113
+ area: document.getElementById(areaId),
114
+ autoScrollSpeed: 15,
115
+ overflowTolerance: { x: 0, y: 0 },
116
+ }));
117
+ }
118
+ else if (dragselect &&
119
+ JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&
120
+ !isDragAndDropActive) {
121
+ dragselect.setSettings({
122
+ selectables: selectables,
123
+ overflowTolerance: { x: 0, y: 0 },
124
+ });
125
+ setPrevSelectables(selectables);
126
+ }
127
+ }, [selectables, areaRef, disabled, isDragAndDropActive]);
128
+ useEffect(() => {
129
+ const mousedownCallback = (e) => {
130
+ var _a;
131
+ if (e.target.closest("#page_top")) {
132
+ return;
133
+ }
134
+ if (e.target.closest(".actions-bar-container") ||
135
+ e.target.closest(".scroll-to-top-btn") ||
136
+ e.target.closest(".paste-button-container")) {
137
+ return;
138
+ }
139
+ if (!((_a = e.target) === null || _a === void 0 ? void 0 : _a.closest("#" + areaId))) {
140
+ onDispatch("setIsCutting", false);
141
+ onDispatch("setSelectedProducts", []);
142
+ onSelect({});
143
+ }
144
+ };
145
+ document.addEventListener("mousedown", mousedownCallback);
146
+ return () => {
147
+ document.removeEventListener("mousedown", mousedownCallback);
148
+ };
149
+ }, []);
150
+ useEffect(() => {
151
+ document.querySelectorAll(".ds-selector-area").forEach((el) => {
152
+ el.style.visibility = isDragAndDropActive ? "hidden" : "visible";
153
+ });
154
+ }, [isDragAndDropActive]);
155
+ useEffect(() => {
156
+ if (dragselect && disabled) {
157
+ dragselect.clearSelection();
158
+ dragselect.setSettings({
159
+ selectables: [],
160
+ area: document.createElement("div"),
161
+ overflowTolerance: { x: 0, y: 0 },
162
+ });
163
+ }
164
+ else if (dragselect && disabled === false) {
165
+ dragselect.setSettings({
166
+ selectables: selectables,
167
+ area: document.getElementById(areaId),
168
+ overflowTolerance: { x: 0, y: 0 },
169
+ });
170
+ }
171
+ }, [dragselect, disabled]);
172
+ };
173
173
  //# sourceMappingURL=useDragToSelect.js.map
@@ -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 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"]}
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\";\nimport DragSelect from \"dragselect\";\ninterface Props {\n areaRef: React.RefObject<HTMLDivElement>;\n selectables: HTMLElement[];\n areaId: string;\n onSelectCommitted?: (selectedIDS: string[]) => void;\n onSelect: (ids: Record<string, number>) => void;\n isDragAndDropActive: boolean;\n disabled?: boolean;\n onDispatch: (key: string, value: any) => void;\n}\nexport const useDragToSelect = ({\n areaRef,\n selectables,\n areaId,\n onSelectCommitted,\n onSelect,\n isDragAndDropActive,\n disabled,\n onDispatch,\n}: Props) => {\n\n const [dragselect, setDragSelect] = React.useState<DragSelect>();\n\n const [prevSelectables, setPrevSelectables] = useState<HTMLElement[]>([]);\n\n const setSelected = useCallback(\n (items: HTMLElement[]) => {\n const selected = items.map((el: HTMLElement) => {\n const wrapper =\n el.closest(\".main-product-container\") ||\n el.querySelector(\".main-product-container\");\n return {\n id: wrapper?.getAttribute(\"product-id\"),\n pos: wrapper?.getAttribute(\"product-index\"),\n };\n });\n const ids: Record<string, number> = {};\n selected.forEach((el: any) => {\n const id = el.id.includes(\"_\")\n ? el.id.split(\"_\")[1]\n : String(el.id);\n ids[id] = parseInt(el.pos);\n });\n\n onSelect(ids);\n },\n [onSelect]\n );\n\n const onselect = (callback_object: any) => {\n if (\n (window as any).isDragAndDropActive ||\n callback_object?.isDragging ||\n !callback_object.event?.target ||\n callback_object.event.target.localName === \"svg\"\n ) {\n return;\n }\n const targetClassName = callback_object.event.target.className;\n\n if (\n callback_object.event.target.classList.contains(\"material-symbols-outlined\") ||\n (typeof targetClassName === 'string' && targetClassName.includes(\"icon\")) ||\n (typeof targetClassName === 'string' && targetClassName.includes(\"Tooltip\"))\n ) {\n return;\n }\n\n setSelected(callback_object.items);\n };\n\n const commit = (callback_object: any) => {\n onDispatch(\"setIsDragToSelectActive\", false);\n if (\n callback_object?.isDragging ||\n (window as any).isDragAndDropActive\n ) {\n const area = document.getElementById(areaId) as HTMLElement;\n if (area) {\n area.style.userSelect = \"\";\n area.style.webkitUserSelect = \"\";\n }\n dragselect?.clearSelection();\n return;\n }\n if (\n callback_object?.event?.target?.closest?.(\".main-product-container\")\n ) {\n return;\n }\n onselect(callback_object);\n dragselect?.clearSelection();\n };\n\n const onSelectStart = (callback_object: any) => {\n onDispatch(\"setIsDragToSelectActive\", true);\n\n if (\n !callback_object?.isDragging &&\n !(window as any).isDragAndDropActive &&\n callback_object.items.length !== 1\n ) {\n dragselect?.clearSelection();\n }\n if (window.getSelection) {\n window.getSelection()?.removeAllRanges?.();\n } else if (document.getSelection) {\n document.getSelection()?.empty?.();\n }\n const area = document.getElementById(areaId) as HTMLElement;\n if (area) {\n area.style.userSelect = \"none\";\n area.style.webkitUserSelect = \"none\";\n }\n };\n\n const onscroll = (callback_object: any) => {\n if (\n callback_object?.items?.length > 1 &&\n !(window as any).isDragAndDropActive\n ) {\n setSelected(callback_object.items);\n }\n };\n\n useEffect(() => {\n dragselect?.subscribe(\"dragmove\", onselect);\n dragselect?.subscribe(\"callback\", commit);\n dragselect?.subscribe(\"dragstart\", onSelectStart);\n dragselect?.subscribe(\"autoscroll\", onscroll);\n return () => {\n dragselect?.unsubscribe(\"dragmove\", onselect);\n dragselect?.unsubscribe(\"callback\", commit);\n dragselect?.unsubscribe(\"dragstart\", onSelectStart);\n dragselect?.unsubscribe(\"autoscroll\", onscroll);\n };\n }, [dragselect, setSelected]);\n\n useEffect(() => {\n const prevIds = prevSelectables.map((el: HTMLElement) => {\n const wrapper = el.closest(\".main-product-container\");\n return wrapper?.getAttribute(\"product-id\");\n });\n const currentIds = selectables.map((el: HTMLElement) => {\n const wrapper = el.closest(\".main-product-container\");\n return wrapper?.getAttribute(\"product-id\");\n });\n\n if (!dragselect && areaRef.current) {\n if (onSelectCommitted) {\n console.log(\"init dragselect\");\n }\n setDragSelect(\n new DragSelect({\n selectables: selectables as HTMLElement[],\n area: document.getElementById(areaId) as HTMLElement,\n autoScrollSpeed: 15,\n overflowTolerance: { x: 0, y: 0 },\n })\n );\n } else if (\n dragselect &&\n JSON.stringify(prevIds) !== JSON.stringify(currentIds) &&\n !isDragAndDropActive\n ) {\n dragselect.setSettings({\n selectables: selectables as HTMLElement[],\n overflowTolerance: { x: 0, y: 0 },\n });\n setPrevSelectables(selectables);\n }\n }, [selectables, areaRef, disabled, isDragAndDropActive]);\n\n useEffect(() => {\n const mousedownCallback = (e: any) => {\n if (e.target.closest(\"#page_top\")) {\n return;\n }\n if (\n e.target.closest(\".actions-bar-container\") ||\n e.target.closest(\".scroll-to-top-btn\") ||\n e.target.closest(\".paste-button-container\")\n ) {\n return;\n }\n if (!e.target?.closest(\"#\" + areaId)) {\n onDispatch(\"setIsCutting\", false);\n onDispatch(\"setSelectedProducts\", []);\n onSelect({});\n }\n };\n\n document.addEventListener(\"mousedown\", mousedownCallback);\n return () => {\n document.removeEventListener(\"mousedown\", mousedownCallback);\n };\n }, []);\n\n useEffect(() => {\n document.querySelectorAll(\".ds-selector-area\").forEach((el: any) => {\n el.style.visibility = isDragAndDropActive ? \"hidden\" : \"visible\";\n });\n }, [isDragAndDropActive]);\n\n useEffect(() => {\n if (dragselect && disabled) {\n dragselect.clearSelection();\n dragselect.setSettings({\n selectables: [],\n area: document.createElement(\"div\"),\n overflowTolerance: { x: 0, y: 0 },\n });\n } else if (dragselect && disabled === false) {\n dragselect.setSettings({\n selectables: selectables as HTMLElement[],\n area: document.getElementById(areaId) as HTMLElement,\n overflowTolerance: { x: 0, y: 0 },\n });\n }\n }, [dragselect, disabled]);\n};\n"]}
@@ -1,3 +1,3 @@
1
- export declare const useProductsPerRow: () => {
2
- productsPerRow: number;
3
- };
1
+ export declare const useProductsPerRow: () => {
2
+ productsPerRow: number;
3
+ };
@@ -1,19 +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
- };
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
19
  //# sourceMappingURL=useProductsPerRow.js.map
@@ -1 +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}"]}
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\";\n\nconst PRODUCTS_PER_ROW_KEY = 'fs-products-per-row';\nexport const useProductsPerRow = () => {\n\n const [productsPerRow, setProductsPerRow] = useState(Number(localStorage.getItem(PRODUCTS_PER_ROW_KEY)) || 4);\n\n const set = (e: any) => {\n setProductsPerRow(e.detail.productsPerRow);\n localStorage.setItem(PRODUCTS_PER_ROW_KEY, e.detail.productsPerRow);\n }\n\n useEffect(() => {\n document.addEventListener('editor-products-per-row', set);\n return () => {\n document.removeEventListener('editor-products-per-row', set);\n };\n }, []);\n\n return {\n productsPerRow\n }\n}"]}
package/package.json CHANGED
@@ -1,64 +1,64 @@
1
- {
2
- "name": "@fast-simon/dashboard-utilities",
3
- "version": "1.0.96",
4
- "scripts": {
5
- "dev": "vite",
6
- "preview": "vite preview",
7
- "build": "tsc -p tsconfig-build.json",
8
- "prepublishOnly": "npm version patch && npm run build",
9
- "postbuild": "copyfiles -u 2 src/components/**/*.css dist/components && copyfiles -u 2 src/icons/**/*.css dist/icons && copyfiles -u 2 src/assets/**/*.gif dist/assets"
10
- },
11
- "main": "dist/index.js",
12
- "module": "dist/index.js",
13
- "types": "dist/index.d.ts",
14
- "files": [
15
- "dist"
16
- ],
17
- "dependencies": {
18
- "@babel/core": "^7.20.12",
19
- "@dnd-kit/core": "^6.0.8",
20
- "@dnd-kit/modifiers": "^6.0.1",
21
- "@dnd-kit/sortable": "^7.0.2",
22
- "@dnd-kit/utilities": "^3.2.1",
23
- "@emotion/react": "11.4.1",
24
- "@fast-simon/logger": "^1.0.0",
25
- "@fast-simon/utilities": "^1.0.19",
26
- "@radix-ui/react-accordion": "^1.1.1",
27
- "@stripe/react-stripe-js": "^1.7.0",
28
- "@stripe/stripe-js": "^1.22.0",
29
- "@tippyjs/react": "^4.2.6",
30
- "classnames": "^2.3.1",
31
- "clsx": "^1.1.1",
32
- "dragselect": "^2.7.4",
33
- "fast-simon-sdk": "^1.2.60",
34
- "lucide-react": "^0.223.0",
35
- "moment": "^2.29.1",
36
- "rc-slider": "^10.1.1",
37
- "react-datepicker": "^4.10.0",
38
- "react-jss": "^10.10.0",
39
- "react-select": "^5.2.1",
40
- "tss-react": "^3.6.0",
41
- "usehooks-ts": "^2.9.1"
42
- },
43
- "devDependencies": {
44
- "@types/node": "^18.13.0",
45
- "@types/react": "^17.0.33",
46
- "@types/react-datepicker": "^4.10.0",
47
- "@types/react-dom": "^17.0.10",
48
- "@types/react-modal": "^3.13.1",
49
- "@types/react-router-dom": "^5.1.5",
50
- "@vitejs/plugin-react": "^1.0.7",
51
- "axios": "^0.24.0",
52
- "copyfiles": "^2.4.1",
53
- "dotenv": "^11.0.0",
54
- "prettier": "^2.8.4",
55
- "react": "^17.0.2",
56
- "react-datepicker": "^4.10.0",
57
- "react-dom": "^17.0.2",
58
- "react-modal": "3.14.4",
59
- "react-router-dom": "^5.2.0",
60
- "rimraf": "^3.0.2",
61
- "typescript": "^4.4.4",
62
- "vite": "^2.7.2"
63
- }
64
- }
1
+ {
2
+ "name": "@fast-simon/dashboard-utilities",
3
+ "version": "1.0.98",
4
+ "scripts": {
5
+ "dev": "vite",
6
+ "preview": "vite preview",
7
+ "build": "tsc -p tsconfig-build.json",
8
+ "prepublishOnly": "npm version patch && npm run build",
9
+ "postbuild": "copyfiles -u 2 src/components/**/*.css dist/components && copyfiles -u 2 src/icons/**/*.css dist/icons && copyfiles -u 2 src/assets/**/*.gif dist/assets"
10
+ },
11
+ "main": "dist/index.js",
12
+ "module": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "dependencies": {
18
+ "@babel/core": "^7.20.12",
19
+ "@dnd-kit/core": "^6.0.8",
20
+ "@dnd-kit/modifiers": "^6.0.1",
21
+ "@dnd-kit/sortable": "^7.0.2",
22
+ "@dnd-kit/utilities": "^3.2.1",
23
+ "@emotion/react": "11.4.1",
24
+ "@fast-simon/logger": "^1.0.0",
25
+ "@fast-simon/utilities": "^1.0.19",
26
+ "@radix-ui/react-accordion": "^1.1.1",
27
+ "@stripe/react-stripe-js": "^1.7.0",
28
+ "@stripe/stripe-js": "^1.22.0",
29
+ "@tippyjs/react": "^4.2.6",
30
+ "classnames": "^2.3.1",
31
+ "clsx": "^1.1.1",
32
+ "dragselect": "^2.7.4",
33
+ "fast-simon-sdk": "^1.2.60",
34
+ "lucide-react": "^0.223.0",
35
+ "moment": "^2.29.1",
36
+ "rc-slider": "^10.1.1",
37
+ "react-datepicker": "^4.10.0",
38
+ "react-jss": "^10.10.0",
39
+ "react-select": "^5.2.1",
40
+ "tss-react": "^3.6.0",
41
+ "usehooks-ts": "^2.9.1"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^18.13.0",
45
+ "@types/react": "^17.0.33",
46
+ "@types/react-datepicker": "^4.10.0",
47
+ "@types/react-dom": "^17.0.10",
48
+ "@types/react-modal": "^3.13.1",
49
+ "@types/react-router-dom": "^5.1.5",
50
+ "@vitejs/plugin-react": "^1.0.7",
51
+ "axios": "^0.24.0",
52
+ "copyfiles": "^2.4.1",
53
+ "dotenv": "^11.0.0",
54
+ "prettier": "^2.8.4",
55
+ "react": "^17.0.2",
56
+ "react-datepicker": "^4.10.0",
57
+ "react-dom": "^17.0.2",
58
+ "react-modal": "3.14.4",
59
+ "react-router-dom": "^5.2.0",
60
+ "rimraf": "^3.0.2",
61
+ "typescript": "^4.4.4",
62
+ "vite": "^2.7.2"
63
+ }
64
+ }