ekm-ui 0.4.28 → 0.4.30

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.
@@ -10,8 +10,7 @@ Browserslist: caniuse-lite is outdated. Please run:
10
10
  npx update-browserslist-db@latest
11
11
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
12
12
  DTS Build start
13
- "HiArchive", "HiCurrencyDollar", "HiInbox", "HiLogout", "HiOutlineTicket", "HiShoppingBag", "HiUserCircle", "HiUsers" and "HiViewGrid" are imported from external module "react-icons/hi" but never used in "dist/chunk-XXP5K6Y4.js".
14
- DTS ⚡️ Build success in 70066ms
13
+ DTS ⚡️ Build success in 67882ms
15
14
  DTS dist/index.d.ts 3.59 KB
16
15
  DTS dist/footer-heart-icon.d.ts 70.00 B
17
16
  DTS dist/accordion.d.ts 2.25 KB
@@ -88,24 +87,25 @@ Browserslist: caniuse-lite is outdated. Please run:
88
87
  DTS dist/featurePageComponents/mini-feature-block.d.ts 254.00 B
89
88
  DTS dist/file-picker/file-listing.d.ts 992.00 B
90
89
  DTS dist/product-picker/product-listing.d.ts 890.00 B
90
+ "HiArchive", "HiCurrencyDollar", "HiInbox", "HiLogout", "HiOutlineTicket", "HiShoppingBag", "HiUserCircle", "HiUsers" and "HiViewGrid" are imported from external module "react-icons/hi" but never used in "dist/chunk-XXP5K6Y4.js".
91
+ ESM dist/product-picker/product-modal.css 123.58 KB
92
+ ESM dist/file-picker/file-picker.css 123.58 KB
93
+ ESM dist/layout/layout.css 123.57 KB
94
+ ESM dist/country-picker/country-modal.css 123.58 KB
91
95
  ESM dist/stacked-list-item.css 123.58 KB
92
96
  ESM dist/table-result-block.css 123.58 KB
93
97
  ESM dist/index.css 123.57 KB
94
98
  ESM dist/card-payment-block.css 123.58 KB
95
99
  ESM dist/drag-and-drop.css 123.58 KB
96
- ESM dist/product-picker/product-modal.css 123.58 KB
97
- ESM dist/file-picker/file-picker.css 123.58 KB
98
- ESM dist/layout/layout.css 123.57 KB
99
- ESM dist/country-picker/country-modal.css 123.58 KB
100
+ ESM dist/product-picker/product-modal.css.map 175.52 KB
101
+ ESM dist/file-picker/file-picker.css.map 175.52 KB
102
+ ESM dist/layout/layout.css.map 175.52 KB
103
+ ESM dist/country-picker/country-modal.css.map 175.52 KB
100
104
  ESM dist/stacked-list-item.css.map 175.52 KB
101
105
  ESM dist/table-result-block.css.map 175.52 KB
102
106
  ESM dist/index.css.map 175.52 KB
103
107
  ESM dist/card-payment-block.css.map 175.52 KB
104
108
  ESM dist/drag-and-drop.css.map 175.52 KB
105
- ESM dist/product-picker/product-modal.css.map 175.52 KB
106
- ESM dist/file-picker/file-picker.css.map 175.52 KB
107
- ESM dist/layout/layout.css.map 175.52 KB
108
- ESM dist/country-picker/country-modal.css.map 175.52 KB
109
109
  ESM dist/chunk-Z4LPO673.js 1.34 KB
110
110
  ESM dist/sort/sort.js 176.00 B
111
111
  ESM dist/table-header/table-header.js 284.00 B
@@ -174,7 +174,7 @@ Browserslist: caniuse-lite is outdated. Please run:
174
174
  ESM dist/dashboard-notification.js 238.00 B
175
175
  ESM dist/date-range-picker.js 347.00 B
176
176
  ESM dist/drag-and-drop.js 2.12 KB
177
- ESM dist/chunk-ZJIHNQR7.js 29.10 KB
177
+ ESM dist/chunk-WXFNCMLF.js 29.10 KB
178
178
  ESM dist/chunk-52VBZOHL.js 2.06 KB
179
179
  ESM dist/chunk-HE5X7TRV.js 75.66 KB
180
180
  ESM dist/chunk-YZ2YZSNQ.js 2.37 KB
@@ -183,7 +183,7 @@ Browserslist: caniuse-lite is outdated. Please run:
183
183
  ESM dist/chunk-GVNUAH45.js 347.00 B
184
184
  ESM dist/chunk-Y2TFSCAU.js 790.00 B
185
185
  ESM dist/chunk-KRMPO53Y.js 6.72 KB
186
- ESM dist/chunk-PZAUAV7G.js 4.47 KB
186
+ ESM dist/chunk-22RUXGYW.js 4.46 KB
187
187
  ESM dist/chunk-7XYO4SF6.js 3.59 KB
188
188
  ESM dist/chunk-HVNLAQA6.js 1.81 KB
189
189
  ESM dist/chunk-LWTESXND.js 1.57 KB
@@ -319,7 +319,7 @@ Browserslist: caniuse-lite is outdated. Please run:
319
319
  ESM dist/dashboard-notification.js.map 51.00 B
320
320
  ESM dist/date-range-picker.js.map 51.00 B
321
321
  ESM dist/drag-and-drop.js.map 51.00 B
322
- ESM dist/chunk-ZJIHNQR7.js.map 81.10 KB
322
+ ESM dist/chunk-WXFNCMLF.js.map 81.10 KB
323
323
  ESM dist/chunk-52VBZOHL.js.map 4.67 KB
324
324
  ESM dist/chunk-YZ2YZSNQ.js.map 5.68 KB
325
325
  ESM dist/chunk-THOZT55U.js.map 5.31 KB
@@ -327,7 +327,7 @@ Browserslist: caniuse-lite is outdated. Please run:
327
327
  ESM dist/chunk-GVNUAH45.js.map 525.00 B
328
328
  ESM dist/chunk-Y2TFSCAU.js.map 1.85 KB
329
329
  ESM dist/chunk-KRMPO53Y.js.map 14.11 KB
330
- ESM dist/chunk-PZAUAV7G.js.map 10.07 KB
330
+ ESM dist/chunk-22RUXGYW.js.map 9.89 KB
331
331
  ESM dist/chunk-7XYO4SF6.js.map 10.15 KB
332
332
  ESM dist/chunk-HVNLAQA6.js.map 5.19 KB
333
333
  ESM dist/chunk-LWTESXND.js.map 2.48 KB
@@ -396,4 +396,4 @@ Browserslist: caniuse-lite is outdated. Please run:
396
396
  ESM dist/chunk-TJMI4DH2.js.map 117.04 KB
397
397
  ESM dist/chunk-6LHL364H.js.map 62.53 KB
398
398
  ESM dist/chunk-HE5X7TRV.js.map 711.41 KB
399
- ESM ⚡️ Build success in 74258ms
399
+ ESM ⚡️ Build success in 74366ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ekm-ui
2
2
 
3
+ ## 0.4.30
4
+
5
+ ### Patch Changes
6
+
7
+ - aee7b2df: Fix loading issue on product picker
8
+
3
9
  ## 0.4.28
4
10
 
5
11
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- export { h as CardPaymentBlock } from './chunk-ZJIHNQR7.js';
1
+ export { h as CardPaymentBlock } from './chunk-WXFNCMLF.js';
2
2
  import './chunk-52VBZOHL.js';
3
3
  import './chunk-HE5X7TRV.js';
4
4
  import './chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import './chunk-7Q6OMA2A.js';
7
7
  import './chunk-GVNUAH45.js';
8
8
  import './chunk-Y2TFSCAU.js';
9
9
  import './chunk-KRMPO53Y.js';
10
- import './chunk-PZAUAV7G.js';
10
+ import './chunk-22RUXGYW.js';
11
11
  import './chunk-7XYO4SF6.js';
12
12
  import './chunk-HVNLAQA6.js';
13
13
  import './chunk-LWTESXND.js';
@@ -0,0 +1,12 @@
1
+ import { a as a$1 } from './chunk-ANU7OAPA.js';
2
+ import { a } from './chunk-6LHL364H.js';
3
+ import { e } from './chunk-Z4LPO673.js';
4
+ import x from 'pluralize';
5
+ import { useRef, useState, useEffect } from 'react';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ var s=e(a(),1);function h(e){var o,l;return `${((o=window.resourceSettings)==null?void 0:o.imageBasePath)||""}${e}?v=${((l=window.resourceSettings)==null?void 0:l.version)||""}`}function P({products:e,isMore:o,selected:l,page:g,pages:u,callback:c}){let r=useRef(),[n,d]=useState(!1);useEffect(()=>{let a=document.querySelector("#product-list");return a&&!a.hasAttribute("scroll")&&r.current.addEventListener("scroll",i),r.current!=null&&(r.current.scrollTop=0),()=>{let f=document.querySelector("#product-list");f&&f.hasAttribute("scroll")&&r.current.removeEventListener("scroll",i);}},[]),useEffect(()=>{n&&d(!1);},[e]);let i=()=>{if(!o)return;let a=r.current.scrollHeight-r.current.offsetHeight;Math.floor(r.current.scrollTop)>a&&!n&&(d(!0),c({type:"FETCH_DATA",payload:!0}));},y=a=>{c({type:"SELECTION",payload:a});};return jsxs("div",{id:"product-list",ref:r,className:"h-[500px] overflow-y-auto rounded-md border",children:[(e||[]).map(a=>jsx(p,{product:a,selected:l.has(a.ProductId),callback:y},`product-row-${a.ProductId}`)),o&&g<u&&n&&jsx(k,{})]})}function p({product:e,selected:o,callback:l}){var u,c,r,n,d;let g=i=>{l(e.ProductId);};return jsxs("div",{className:`mb-1 mt-1 flex items-center pb-4 pt-4 ${o&&"bg-blue-50"} cursor-pointer justify-between border-b border-gray-100 st-productRow`,onClick:g,children:[jsxs("div",{className:"ml-3 flex items-center",children:[jsx("div",{className:"flex-shrink-0",children:jsx(a$1,{id:`cb-prod-${e.ProductId}`,name:e.Name,checked:o,onChange:()=>{}})}),jsx("div",{className:"ml-4 st-image",children:e.ImagePath&&e.ImageName!=="[URL-DownloadRequested]"?jsx("img",{className:"h-10 w-10 rounded-sm",src:e.ImagePath,alt:e.Name,onError:i=>{i.target.onerror=null,i.target.src=`${h("/admin/Content/images/no-image-discount.png")}`;}}):jsx("img",{src:h("/admin/Content/images/no-image-discount.png"),alt:e.Name,className:"h-10 w-10 rounded-sm"})}),jsxs("div",{className:"ml-4",children:[jsx("div",{className:" font-medium text-gray-900 st-name",children:e.Name}),((u=e.Categories)==null?void 0:u.length)>0?jsx("div",{className:"text-xs text-gray-500 st-category",children:`${e.CategoryName} & ${x("other",e.Categories.length,!0)}`}):jsx("div",{className:"text-xs text-gray-500 st-category",children:e.CategoryName})]})]}),jsx("div",{className:"ml-4 flex-shrink-0 st-price",children:jsx("span",{className:"mr-3 text-sm text-gray-500",children:`${(r=(c=globalThis.globalSettings)==null?void 0:c.CurrencySymbol)!=null?r:"\xA3"}${e.Price.toFixed((d=(n=globalThis.globalSettings)==null?void 0:n.CurrencyExponent)!=null?d:2)}`})})]})}P.propTypes={products:s.default.array,isMore:s.default.bool,selected:s.default.instanceOf(Set),page:s.default.number,pages:s.default.number,callback:s.default.func};p.propTypes={product:s.default.object,selected:s.default.bool,callback:s.default.func};function k(){return jsx("div",{className:"mb-1 mt-1 flex justify-center pb-4 pt-4",children:jsx("div",{role:"status",children:jsxs("svg",{"aria-hidden":"true",className:"inline-block h-8 w-8 animate-spin fill-gray-600 text-gray-200 dark:fill-gray-300 dark:text-gray-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),jsx("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]})})})}
9
+
10
+ export { P as a };
11
+ //# sourceMappingURL=out.js.map
12
+ //# sourceMappingURL=chunk-22RUXGYW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/product-picker/product-listing.tsx"],"names":["import_prop_types","pluralize","useEffect","useRef","useState","jsx","jsxs","BuildImageUrl","imageUrl","_a","_b","Listing","products","isMore","selected","page","pages","callback","scrollRef","showLoader","setShowLoader","element","handleScroll","offset","handleProductSelection","id","p","ProductRow","InfiniteLoader","product","_c","_d","_e","e","Checkbox","PropTypes"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport pluralize from \"pluralize\";\nimport PropTypes from \"prop-types\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Checkbox } from \"../checkbox\";\n// FOR USE WITH THE PRODUCT PICKER COMPONENT - ONLY\n\nfunction BuildImageUrl(imageUrl) {\n return `${window.resourceSettings?.imageBasePath || ''}${imageUrl}?v=${window.resourceSettings?.version || ''}`;\n}\n\nexport function Listing({\n products,\n isMore,\n selected,\n page,\n pages,\n callback,\n}) {\n const scrollRef = useRef();\n const [showLoader, setShowLoader] = useState(false);\n\n useEffect(() => {\n const element = document.querySelector(\"#product-list\");\n if (element && !element.hasAttribute(\"scroll\"))\n scrollRef.current.addEventListener(\"scroll\", handleScroll);\n if (scrollRef.current != null) scrollRef.current.scrollTop = 0;\n return () => {\n const element = document.querySelector(\"#product-list\");\n if (element && element.hasAttribute(\"scroll\"))\n scrollRef.current.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n\n useEffect(() => {\n if(showLoader) setShowLoader(false)\n }, [products])\n\n const handleScroll = () => {\n if (!isMore) return;\n const offset =\n scrollRef.current.scrollHeight - scrollRef.current.offsetHeight;\n const scroll = Math.floor(scrollRef.current.scrollTop);\n if (scroll > offset && !showLoader) {\n setShowLoader(true);\n callback({ type: \"FETCH_DATA\", payload: true });\n }\n };\n\n const handleProductSelection = (id) => {\n callback({ type: \"SELECTION\", payload: id });\n };\n\n return (\n <div\n id=\"product-list\"\n ref={scrollRef}\n className={`h-[500px] overflow-y-auto rounded-md border`}\n >\n {(products || []).map((p) => {\n return (\n <ProductRow\n key={`product-row-${p.ProductId}`}\n product={p}\n selected={selected.has(p.ProductId)}\n callback={handleProductSelection}\n />\n );\n })}\n {isMore && page < pages && showLoader && <InfiniteLoader />}\n </div>\n );\n}\n\nfunction ProductRow({ product, selected, callback }) {\n const handleProductSelection = (e) => {\n callback(product.ProductId);\n };\n return (\n <div\n className={`mb-1 mt-1 flex items-center pb-4 pt-4 ${\n selected && \"bg-blue-50\"\n } cursor-pointer justify-between border-b border-gray-100 st-productRow`}\n onClick={handleProductSelection}\n >\n <div className=\"ml-3 flex items-center\">\n <div className=\"flex-shrink-0\">\n <Checkbox\n id={`cb-prod-${product.ProductId}`}\n name={product.Name}\n checked={selected}\n onChange={() => {}}\n />\n </div>\n <div className=\"ml-4 st-image\">\n {product.ImagePath && product.ImageName !== \"[URL-DownloadRequested]\" ? (\n <img\n className=\"h-10 w-10 rounded-sm\"\n src={product.ImagePath}\n alt={product.Name}\n onError={(e) => {\n e.target.onerror = null;\n e.target.src = `${BuildImageUrl(\n \"/admin/Content/images/no-image-discount.png\"\n )}`;\n }}\n />\n ) : (\n <img\n src={BuildImageUrl(\"/admin/Content/images/no-image-discount.png\")}\n alt={product.Name}\n className=\"h-10 w-10 rounded-sm\"\n />\n )}\n </div>\n <div className=\"ml-4\">\n <div className=\" font-medium text-gray-900 st-name\">{product.Name}</div>\n {product.Categories?.length > 0 ? (\n <div className=\"text-xs text-gray-500 st-category\">{`${\n product.CategoryName\n } & ${pluralize(\"other\", product.Categories.length, true)}`}</div>\n ) : (\n <div className=\"text-xs text-gray-500 st-category\">{product.CategoryName}</div>\n )}\n </div>\n </div>\n <div className=\"ml-4 flex-shrink-0 st-price\">\n <span className=\"mr-3 text-sm text-gray-500\">{`${\n globalThis.globalSettings?.CurrencySymbol ?? '£'\n }${product.Price.toFixed(\n globalThis.globalSettings?.CurrencyExponent ?? 2\n )}`}</span>\n </div>\n </div>\n );\n}\n\nListing.propTypes = {\n /** Array of products to list */\n products: PropTypes.array,\n /** Boolean to indicate if there are more products to load */\n isMore: PropTypes.bool,\n /** Set of selected ids */\n selected: PropTypes.instanceOf(Set),\n /** Current page */\n page: PropTypes.number,\n /** Total number of pages */\n pages: PropTypes.number,\n /** Callback function to handle events */\n callback: PropTypes.func,\n};\n\nProductRow.propTypes = {\n /** Product object to display */\n product: PropTypes.object,\n /** Boolean to indicate if the file is selected */\n selected: PropTypes.bool,\n /** Callback function to handle events */\n callback: PropTypes.func,\n};\n\nfunction InfiniteLoader() {\n return (\n <div className=\"mb-1 mt-1 flex justify-center pb-4 pt-4\">\n <div role=\"status\">\n <svg\n aria-hidden=\"true\"\n className=\"inline-block h-8 w-8 animate-spin fill-gray-600 text-gray-200 dark:fill-gray-300 dark:text-gray-600\"\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n </svg>\n </div>\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { a as a$i } from './chunk-PZAUAV7G.js';
1
+ import { a as a$i } from './chunk-22RUXGYW.js';
2
2
  import { a as a$f } from './chunk-7XYO4SF6.js';
3
3
  import { a as a$9, b as b$1 } from './chunk-HVNLAQA6.js';
4
4
  import { a as a$j } from './chunk-U26NV6PE.js';
@@ -33,4 +33,4 @@ function Je({cardPayment:r,enablePayPal:e}){return jsxs(a$4,{className:"border-0
33
33
 
34
34
  export { lr as a, Cr as b, se as c, He as d, K as e, Ue as f, sr as g, Je as h };
35
35
  //# sourceMappingURL=out.js.map
36
- //# sourceMappingURL=chunk-ZJIHNQR7.js.map
36
+ //# sourceMappingURL=chunk-WXFNCMLF.js.map
@@ -1,4 +1,4 @@
1
- export { g as CountryPicker } from '../chunk-ZJIHNQR7.js';
1
+ export { g as CountryPicker } from '../chunk-WXFNCMLF.js';
2
2
  import '../chunk-52VBZOHL.js';
3
3
  import '../chunk-HE5X7TRV.js';
4
4
  import '../chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import '../chunk-7Q6OMA2A.js';
7
7
  import '../chunk-GVNUAH45.js';
8
8
  import '../chunk-Y2TFSCAU.js';
9
9
  import '../chunk-KRMPO53Y.js';
10
- import '../chunk-PZAUAV7G.js';
10
+ import '../chunk-22RUXGYW.js';
11
11
  import '../chunk-7XYO4SF6.js';
12
12
  import '../chunk-HVNLAQA6.js';
13
13
  import '../chunk-LWTESXND.js';
@@ -1,4 +1,4 @@
1
- export { c as DragAndDrop } from './chunk-ZJIHNQR7.js';
1
+ export { c as DragAndDrop } from './chunk-WXFNCMLF.js';
2
2
  import './chunk-52VBZOHL.js';
3
3
  import './chunk-HE5X7TRV.js';
4
4
  import './chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import './chunk-7Q6OMA2A.js';
7
7
  import './chunk-GVNUAH45.js';
8
8
  import './chunk-Y2TFSCAU.js';
9
9
  import './chunk-KRMPO53Y.js';
10
- import './chunk-PZAUAV7G.js';
10
+ import './chunk-22RUXGYW.js';
11
11
  import './chunk-7XYO4SF6.js';
12
12
  import './chunk-HVNLAQA6.js';
13
13
  import './chunk-LWTESXND.js';
@@ -1,4 +1,4 @@
1
- export { d as FilePicker } from '../chunk-ZJIHNQR7.js';
1
+ export { d as FilePicker } from '../chunk-WXFNCMLF.js';
2
2
  import '../chunk-52VBZOHL.js';
3
3
  import '../chunk-HE5X7TRV.js';
4
4
  import '../chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import '../chunk-7Q6OMA2A.js';
7
7
  import '../chunk-GVNUAH45.js';
8
8
  import '../chunk-Y2TFSCAU.js';
9
9
  import '../chunk-KRMPO53Y.js';
10
- import '../chunk-PZAUAV7G.js';
10
+ import '../chunk-22RUXGYW.js';
11
11
  import '../chunk-7XYO4SF6.js';
12
12
  import '../chunk-HVNLAQA6.js';
13
13
  import '../chunk-LWTESXND.js';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { h as CardPaymentBlock, g as CountryPicker, c as DragAndDrop, d as FilePicker, b as Layout, f as ProductPicker, a as StackedListItem, e as TableResultBlock } from './chunk-ZJIHNQR7.js';
1
+ export { h as CardPaymentBlock, g as CountryPicker, c as DragAndDrop, d as FilePicker, b as Layout, f as ProductPicker, a as StackedListItem, e as TableResultBlock } from './chunk-WXFNCMLF.js';
2
2
  export { a as Sort } from './chunk-52VBZOHL.js';
3
3
  export { a as TableHeader } from './chunk-HE5X7TRV.js';
4
4
  export { b as ToastProvider, c as useToast } from './chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ export { a as NBUI_Container } from './chunk-7Q6OMA2A.js';
7
7
  export { a as NBUI_Footer } from './chunk-GVNUAH45.js';
8
8
  export { a as NBUI_Page_Layout } from './chunk-Y2TFSCAU.js';
9
9
  export { a as Pagination } from './chunk-KRMPO53Y.js';
10
- import './chunk-PZAUAV7G.js';
10
+ import './chunk-22RUXGYW.js';
11
11
  export { a as Search } from './chunk-7XYO4SF6.js';
12
12
  export { b as Sidebar } from './chunk-HVNLAQA6.js';
13
13
  export { a as NBUI_Card_Form } from './chunk-LWTESXND.js';
@@ -1,4 +1,4 @@
1
- export { b as Layout } from '../chunk-ZJIHNQR7.js';
1
+ export { b as Layout } from '../chunk-WXFNCMLF.js';
2
2
  import '../chunk-52VBZOHL.js';
3
3
  import '../chunk-HE5X7TRV.js';
4
4
  import '../chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import '../chunk-7Q6OMA2A.js';
7
7
  import '../chunk-GVNUAH45.js';
8
8
  import '../chunk-Y2TFSCAU.js';
9
9
  import '../chunk-KRMPO53Y.js';
10
- import '../chunk-PZAUAV7G.js';
10
+ import '../chunk-22RUXGYW.js';
11
11
  import '../chunk-7XYO4SF6.js';
12
12
  import '../chunk-HVNLAQA6.js';
13
13
  import '../chunk-LWTESXND.js';
@@ -1,4 +1,4 @@
1
- export { a as Listing } from '../chunk-PZAUAV7G.js';
1
+ export { a as Listing } from '../chunk-22RUXGYW.js';
2
2
  import '../chunk-ANU7OAPA.js';
3
3
  import '../chunk-TJMI4DH2.js';
4
4
  import '../chunk-6LHL364H.js';
@@ -1,4 +1,4 @@
1
- export { f as ProductPicker } from '../chunk-ZJIHNQR7.js';
1
+ export { f as ProductPicker } from '../chunk-WXFNCMLF.js';
2
2
  import '../chunk-52VBZOHL.js';
3
3
  import '../chunk-HE5X7TRV.js';
4
4
  import '../chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import '../chunk-7Q6OMA2A.js';
7
7
  import '../chunk-GVNUAH45.js';
8
8
  import '../chunk-Y2TFSCAU.js';
9
9
  import '../chunk-KRMPO53Y.js';
10
- import '../chunk-PZAUAV7G.js';
10
+ import '../chunk-22RUXGYW.js';
11
11
  import '../chunk-7XYO4SF6.js';
12
12
  import '../chunk-HVNLAQA6.js';
13
13
  import '../chunk-LWTESXND.js';
@@ -1,4 +1,4 @@
1
- export { a as StackedListItem } from './chunk-ZJIHNQR7.js';
1
+ export { a as StackedListItem } from './chunk-WXFNCMLF.js';
2
2
  import './chunk-52VBZOHL.js';
3
3
  import './chunk-HE5X7TRV.js';
4
4
  import './chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import './chunk-7Q6OMA2A.js';
7
7
  import './chunk-GVNUAH45.js';
8
8
  import './chunk-Y2TFSCAU.js';
9
9
  import './chunk-KRMPO53Y.js';
10
- import './chunk-PZAUAV7G.js';
10
+ import './chunk-22RUXGYW.js';
11
11
  import './chunk-7XYO4SF6.js';
12
12
  import './chunk-HVNLAQA6.js';
13
13
  import './chunk-LWTESXND.js';
@@ -1,4 +1,4 @@
1
- export { e as TableResultBlock } from './chunk-ZJIHNQR7.js';
1
+ export { e as TableResultBlock } from './chunk-WXFNCMLF.js';
2
2
  import './chunk-52VBZOHL.js';
3
3
  import './chunk-HE5X7TRV.js';
4
4
  import './chunk-YZ2YZSNQ.js';
@@ -7,7 +7,7 @@ import './chunk-7Q6OMA2A.js';
7
7
  import './chunk-GVNUAH45.js';
8
8
  import './chunk-Y2TFSCAU.js';
9
9
  import './chunk-KRMPO53Y.js';
10
- import './chunk-PZAUAV7G.js';
10
+ import './chunk-22RUXGYW.js';
11
11
  import './chunk-7XYO4SF6.js';
12
12
  import './chunk-HVNLAQA6.js';
13
13
  import './chunk-LWTESXND.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ekm-ui",
3
- "version": "0.4.28",
3
+ "version": "0.4.30",
4
4
  "sideEffects": [
5
5
  "**/*.css"
6
6
  ],
@@ -41,8 +41,7 @@ export function Listing({
41
41
  const offset =
42
42
  scrollRef.current.scrollHeight - scrollRef.current.offsetHeight;
43
43
  const scroll = Math.floor(scrollRef.current.scrollTop);
44
- // the '-2 & +2' is used as a buffer, otherwise '==' positioning of the scroll becomes too accurate.
45
- if (scroll == offset || scroll + 2 == offset || scroll - 2 == offset) {
44
+ if (scroll > offset && !showLoader) {
46
45
  setShowLoader(true);
47
46
  callback({ type: "FETCH_DATA", payload: true });
48
47
  }
@@ -1,12 +0,0 @@
1
- import { a as a$1 } from './chunk-ANU7OAPA.js';
2
- import { a } from './chunk-6LHL364H.js';
3
- import { e } from './chunk-Z4LPO673.js';
4
- import x from 'pluralize';
5
- import { useRef, useState, useEffect } from 'react';
6
- import { jsxs, jsx } from 'react/jsx-runtime';
7
-
8
- var s=e(a(),1);function h(e){var o,l;return `${((o=window.resourceSettings)==null?void 0:o.imageBasePath)||""}${e}?v=${((l=window.resourceSettings)==null?void 0:l.version)||""}`}function P({products:e,isMore:o,selected:l,page:f,pages:g,callback:c}){let a=useRef(),[d,m]=useState(!1);useEffect(()=>{let r=document.querySelector("#product-list");return r&&!r.hasAttribute("scroll")&&a.current.addEventListener("scroll",n),a.current!=null&&(a.current.scrollTop=0),()=>{let i=document.querySelector("#product-list");i&&i.hasAttribute("scroll")&&a.current.removeEventListener("scroll",n);}},[]),useEffect(()=>{d&&m(!1);},[e]);let n=()=>{if(!o)return;let r=a.current.scrollHeight-a.current.offsetHeight,i=Math.floor(a.current.scrollTop);(i==r||i+2==r||i-2==r)&&(m(!0),c({type:"FETCH_DATA",payload:!0}));},y=r=>{c({type:"SELECTION",payload:r});};return jsxs("div",{id:"product-list",ref:a,className:"h-[500px] overflow-y-auto rounded-md border",children:[(e||[]).map(r=>jsx(p,{product:r,selected:l.has(r.ProductId),callback:y},`product-row-${r.ProductId}`)),o&&f<g&&d&&jsx(k,{})]})}function p({product:e,selected:o,callback:l}){var g,c,a,d,m;let f=n=>{l(e.ProductId);};return jsxs("div",{className:`mb-1 mt-1 flex items-center pb-4 pt-4 ${o&&"bg-blue-50"} cursor-pointer justify-between border-b border-gray-100 st-productRow`,onClick:f,children:[jsxs("div",{className:"ml-3 flex items-center",children:[jsx("div",{className:"flex-shrink-0",children:jsx(a$1,{id:`cb-prod-${e.ProductId}`,name:e.Name,checked:o,onChange:()=>{}})}),jsx("div",{className:"ml-4 st-image",children:e.ImagePath&&e.ImageName!=="[URL-DownloadRequested]"?jsx("img",{className:"h-10 w-10 rounded-sm",src:e.ImagePath,alt:e.Name,onError:n=>{n.target.onerror=null,n.target.src=`${h("/admin/Content/images/no-image-discount.png")}`;}}):jsx("img",{src:h("/admin/Content/images/no-image-discount.png"),alt:e.Name,className:"h-10 w-10 rounded-sm"})}),jsxs("div",{className:"ml-4",children:[jsx("div",{className:" font-medium text-gray-900 st-name",children:e.Name}),((g=e.Categories)==null?void 0:g.length)>0?jsx("div",{className:"text-xs text-gray-500 st-category",children:`${e.CategoryName} & ${x("other",e.Categories.length,!0)}`}):jsx("div",{className:"text-xs text-gray-500 st-category",children:e.CategoryName})]})]}),jsx("div",{className:"ml-4 flex-shrink-0 st-price",children:jsx("span",{className:"mr-3 text-sm text-gray-500",children:`${(a=(c=globalThis.globalSettings)==null?void 0:c.CurrencySymbol)!=null?a:"\xA3"}${e.Price.toFixed((m=(d=globalThis.globalSettings)==null?void 0:d.CurrencyExponent)!=null?m:2)}`})})]})}P.propTypes={products:s.default.array,isMore:s.default.bool,selected:s.default.instanceOf(Set),page:s.default.number,pages:s.default.number,callback:s.default.func};p.propTypes={product:s.default.object,selected:s.default.bool,callback:s.default.func};function k(){return jsx("div",{className:"mb-1 mt-1 flex justify-center pb-4 pt-4",children:jsx("div",{role:"status",children:jsxs("svg",{"aria-hidden":"true",className:"inline-block h-8 w-8 animate-spin fill-gray-600 text-gray-200 dark:fill-gray-300 dark:text-gray-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),jsx("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]})})})}
9
-
10
- export { P as a };
11
- //# sourceMappingURL=out.js.map
12
- //# sourceMappingURL=chunk-PZAUAV7G.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/product-picker/product-listing.tsx"],"names":["import_prop_types","pluralize","useEffect","useRef","useState","jsx","jsxs","BuildImageUrl","imageUrl","_a","_b","Listing","products","isMore","selected","page","pages","callback","scrollRef","showLoader","setShowLoader","element","handleScroll","offset","scroll","handleProductSelection","id","p","ProductRow","InfiniteLoader","product","_c","_d","_e","e","Checkbox","PropTypes"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport pluralize from \"pluralize\";\nimport PropTypes from \"prop-types\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Checkbox } from \"../checkbox\";\n// FOR USE WITH THE PRODUCT PICKER COMPONENT - ONLY\n\nfunction BuildImageUrl(imageUrl) {\n return `${window.resourceSettings?.imageBasePath || ''}${imageUrl}?v=${window.resourceSettings?.version || ''}`;\n}\n\nexport function Listing({\n products,\n isMore,\n selected,\n page,\n pages,\n callback,\n}) {\n const scrollRef = useRef();\n const [showLoader, setShowLoader] = useState(false);\n\n useEffect(() => {\n const element = document.querySelector(\"#product-list\");\n if (element && !element.hasAttribute(\"scroll\"))\n scrollRef.current.addEventListener(\"scroll\", handleScroll);\n if (scrollRef.current != null) scrollRef.current.scrollTop = 0;\n return () => {\n const element = document.querySelector(\"#product-list\");\n if (element && element.hasAttribute(\"scroll\"))\n scrollRef.current.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n\n useEffect(() => {\n if(showLoader) setShowLoader(false)\n }, [products])\n\n const handleScroll = () => {\n if (!isMore) return;\n const offset =\n scrollRef.current.scrollHeight - scrollRef.current.offsetHeight;\n const scroll = Math.floor(scrollRef.current.scrollTop);\n // the '-2 & +2' is used as a buffer, otherwise '==' positioning of the scroll becomes too accurate.\n if (scroll == offset || scroll + 2 == offset || scroll - 2 == offset) {\n setShowLoader(true);\n callback({ type: \"FETCH_DATA\", payload: true });\n }\n };\n\n const handleProductSelection = (id) => {\n callback({ type: \"SELECTION\", payload: id });\n };\n\n return (\n <div\n id=\"product-list\"\n ref={scrollRef}\n className={`h-[500px] overflow-y-auto rounded-md border`}\n >\n {(products || []).map((p) => {\n return (\n <ProductRow\n key={`product-row-${p.ProductId}`}\n product={p}\n selected={selected.has(p.ProductId)}\n callback={handleProductSelection}\n />\n );\n })}\n {isMore && page < pages && showLoader && <InfiniteLoader />}\n </div>\n );\n}\n\nfunction ProductRow({ product, selected, callback }) {\n const handleProductSelection = (e) => {\n callback(product.ProductId);\n };\n return (\n <div\n className={`mb-1 mt-1 flex items-center pb-4 pt-4 ${\n selected && \"bg-blue-50\"\n } cursor-pointer justify-between border-b border-gray-100 st-productRow`}\n onClick={handleProductSelection}\n >\n <div className=\"ml-3 flex items-center\">\n <div className=\"flex-shrink-0\">\n <Checkbox\n id={`cb-prod-${product.ProductId}`}\n name={product.Name}\n checked={selected}\n onChange={() => {}}\n />\n </div>\n <div className=\"ml-4 st-image\">\n {product.ImagePath && product.ImageName !== \"[URL-DownloadRequested]\" ? (\n <img\n className=\"h-10 w-10 rounded-sm\"\n src={product.ImagePath}\n alt={product.Name}\n onError={(e) => {\n e.target.onerror = null;\n e.target.src = `${BuildImageUrl(\n \"/admin/Content/images/no-image-discount.png\"\n )}`;\n }}\n />\n ) : (\n <img\n src={BuildImageUrl(\"/admin/Content/images/no-image-discount.png\")}\n alt={product.Name}\n className=\"h-10 w-10 rounded-sm\"\n />\n )}\n </div>\n <div className=\"ml-4\">\n <div className=\" font-medium text-gray-900 st-name\">{product.Name}</div>\n {product.Categories?.length > 0 ? (\n <div className=\"text-xs text-gray-500 st-category\">{`${\n product.CategoryName\n } & ${pluralize(\"other\", product.Categories.length, true)}`}</div>\n ) : (\n <div className=\"text-xs text-gray-500 st-category\">{product.CategoryName}</div>\n )}\n </div>\n </div>\n <div className=\"ml-4 flex-shrink-0 st-price\">\n <span className=\"mr-3 text-sm text-gray-500\">{`${\n globalThis.globalSettings?.CurrencySymbol ?? '£'\n }${product.Price.toFixed(\n globalThis.globalSettings?.CurrencyExponent ?? 2\n )}`}</span>\n </div>\n </div>\n );\n}\n\nListing.propTypes = {\n /** Array of products to list */\n products: PropTypes.array,\n /** Boolean to indicate if there are more products to load */\n isMore: PropTypes.bool,\n /** Set of selected ids */\n selected: PropTypes.instanceOf(Set),\n /** Current page */\n page: PropTypes.number,\n /** Total number of pages */\n pages: PropTypes.number,\n /** Callback function to handle events */\n callback: PropTypes.func,\n};\n\nProductRow.propTypes = {\n /** Product object to display */\n product: PropTypes.object,\n /** Boolean to indicate if the file is selected */\n selected: PropTypes.bool,\n /** Callback function to handle events */\n callback: PropTypes.func,\n};\n\nfunction InfiniteLoader() {\n return (\n <div className=\"mb-1 mt-1 flex justify-center pb-4 pt-4\">\n <div role=\"status\">\n <svg\n aria-hidden=\"true\"\n className=\"inline-block h-8 w-8 animate-spin fill-gray-600 text-gray-200 dark:fill-gray-300 dark:text-gray-600\"\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n </svg>\n </div>\n </div>\n );\n}\n"]}