chordia-ui 3.7.2 → 3.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CustomFilterChips.cjs.js +1 -1
- package/dist/CustomFilterChips.cjs.js.map +1 -1
- package/dist/CustomFilterChips.es.js +239 -125
- package/dist/CustomFilterChips.es.js.map +1 -1
- package/dist/DataTable2.cjs.js +2 -0
- package/dist/DataTable2.cjs.js.map +1 -0
- package/dist/DataTable2.es.js +1863 -0
- package/dist/DataTable2.es.js.map +1 -0
- package/dist/components/UpdatedInteractionDetails.cjs.js +2 -2
- package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
- package/dist/components/UpdatedInteractionDetails.es.js +14 -13
- package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
- package/dist/components/data.cjs.js +1 -1
- package/dist/components/data.cjs.js.map +1 -1
- package/dist/components/data.es.js +157 -153
- package/dist/components/data.es.js.map +1 -1
- package/dist/components/performance.cjs.js +1 -1
- package/dist/components/performance.cjs.js.map +1 -1
- package/dist/components/performance.es.js +1900 -480
- package/dist/components/performance.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +94 -89
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx +13 -13
- package/src/components/UpdatedInteractionDetails/UpdatedThreads.jsx +1 -0
- package/src/components/common/CustomFilterChips.jsx +5 -1
- package/src/components/common/Pagination.jsx +152 -39
- package/src/components/data/DataTable2.jsx +2449 -0
- package/src/components/data/DataTableFilters2.jsx +186 -0
- package/src/components/data/index.js +2 -0
- package/src/components/index.js +2 -2
- package/src/components/performance/PerformanceDetailsPage.jsx +940 -0
- package/src/components/performance/PerformancePanel.jsx +423 -297
- package/src/components/performance/SupervisorSelect.jsx +386 -0
- package/src/components/performance/index.js +3 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const r=require("react/jsx-runtime"),F=require("react"),E=require("lucide-react");function C({page:s=1,pageSize:a=10,totalCount:u=0,currentDataLength:g=0,onPageChange:c,onPageSizeChange:h,pageSizeOptions:d=[10,20,50,100],className:b="",showRecordCounter:e=!0,showPageSizeSelector:i=!0}){const t=Math.ceil(u/a),o=(s-1)*a+1,x=Math.min((s-1)*a+g,u),[m,j]=F.useState(!1),$=F.useRef(null);F.useEffect(()=>{if(!m)return;const n=p=>{$.current&&!$.current.contains(p.target)&&j(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[m]);const w=F.useMemo(()=>{if(t<=1)return[];const n=[];if(t<=7)for(let l=1;l<=t;l+=1)n.push(l);else{n.push(1);let l=Math.max(2,s-2),R=Math.min(t-1,s+2);s<=3&&(R=5),s>=t-2&&(l=t-4),l>2&&n.push("ellipsis-start");for(let v=l;v<=R;v+=1)n.push(v);R<t-1&&n.push("ellipsis-end"),n.push(t)}return n},[s,t]);if(!c||t===0)return null;const B=i&&typeof h=="function",S={fontFamily:"var(--font-sans)",fontSize:16,lineHeight:"24px",color:"#323232"},y={height:24,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0 8px",borderRadius:10,fontFamily:"var(--font-sans)",fontSize:12,lineHeight:"16px",border:"1px solid #E6E6E6",background:"#FFFFFF",color:"#0B0B0B",cursor:"pointer",gap:4,whiteSpace:"nowrap"};return r.jsxs("div",{className:b,style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 0",gap:16,background:"transparent"},children:[r.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:16},children:[B&&r.jsxs("div",{ref:$,style:{position:"relative",display:"inline-flex",alignItems:"center",gap:8},children:[r.jsx("span",{style:S,children:"Result per page"}),r.jsxs("button",{type:"button",onClick:()=>j(n=>!n),"aria-haspopup":"listbox","aria-expanded":m,style:{...y,minWidth:47},children:[a,r.jsx(E.ChevronDown,{size:12,strokeWidth:1.75})]}),m&&r.jsx("div",{role:"listbox",style:{position:"absolute",bottom:"calc(100% + 4px)",right:0,zIndex:30,background:"#FFFFFF",border:"1px solid #E6E6E6",borderRadius:10,boxShadow:"0 8px 24px rgba(11, 11, 11, 0.10)",padding:4,display:"flex",flexDirection:"column",gap:2,minWidth:60},children:d.map(n=>{const p=n===a;return r.jsx("button",{type:"button",role:"option","aria-selected":p,onClick:()=>{h(n),j(!1)},style:{background:p?"#F2F2F0":"transparent",border:"none",padding:"6px 10px",borderRadius:6,fontFamily:"var(--font-sans)",fontSize:13,color:"#0B0B0B",textAlign:"left",cursor:"pointer"},children:n},n)})})]}),e&&r.jsx("span",{style:S,children:x>0?`${o}-${x} of ${u}`:`0 of ${u}`})]}),r.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[r.jsxs("button",{type:"button",onClick:()=>c(s-1),disabled:s<=1,"aria-label":"Previous page",style:{...y,opacity:s<=1?.5:1,cursor:s<=1?"default":"pointer"},children:[r.jsx(E.ChevronLeft,{size:12,strokeWidth:1.75}),"Back"]}),w.map((n,p)=>{if(n==="ellipsis-start"||n==="ellipsis-end")return r.jsx("span",{"aria-hidden":"true",style:{fontFamily:"var(--font-sans)",fontSize:12,color:"#676767",padding:"0 4px",userSelect:"none"},children:"…"},`ellipsis-${p}`);const l=n===s;return r.jsx("button",{type:"button",onClick:()=>c(n),"aria-label":`Go to page ${n}`,"aria-current":l?"page":void 0,style:{...y,minWidth:22,padding:"0 6px",background:l?"#0B0B0B":"#FFFFFF",border:l?"none":"1px solid #E6E6E6",color:l?"#FFFFFF":"#0B0B0B"},children:n},n)}),r.jsxs("button",{type:"button",onClick:()=>c(s+1),disabled:s>=t,"aria-label":"Next page",style:{...y,opacity:s>=t?.5:1,cursor:s>=t?"default":"pointer"},children:["Next",r.jsx(E.ChevronRight,{size:12,strokeWidth:1.75})]})]})]})}function f(s){return s.replace(/([A-Z])/g," $1").replace(/_/g," ").replace(/^./,a=>a.toUpperCase()).trim()}function A({filters:s,onChange:a,onClear:u,customFilters:g=[],fieldOptions:c={},className:h=""}){const d=[],b=(e,i)=>{if(c[e]&&Array.isArray(c[e])){const t=c[e].find(o=>{const x=typeof o=="object"?o.value!==void 0?o.value:o.id:o;return x===i||String(x)===String(i)});if(t)return typeof t=="object"&&(t.label||t.value)||String(t)}return String(i)};return Object.entries(s||{}).forEach(([e,i])=>{if(Array.isArray(i)&&i.length){const t=i.map(o=>b(e,o));d.push({key:e,label:`${f(e)}: ${t.join(", ")}`,onRemove:()=>{const o={...s};delete o[e],a(o)}})}else if(typeof i=="string"&&i.trim()!==""){const t=b(e,i),o=e==="contact_id"?"Contact Id":`${f(e)}: ${t}`;d.push({key:e,label:o,onRemove:()=>a({...s,[e]:""})})}}),Object.entries(s||{}).forEach(([e,i])=>{if(i&&typeof i=="object"&&(i.min!=null||i.max!=null)){const t=i.min!=null&&i.max!=null?`${f(e)}: ${i.min}–${i.max}`:i.min!=null?`${f(e)} ≥ ${i.min}`:`${f(e)} ≤ ${i.max}`;d.push({key:e,label:t,onRemove:()=>{const o={...s};delete o[e],a(o)}})}}),(g||[]).forEach(e=>{e&&e.active&&d.push({key:e.key,label:e.label,onRemove:e.onRemove})}),d.length?r.jsxs("div",{className:`flex flex-wrap items-center gap-4 ${h}`,children:[d.map(e=>r.jsxs("span",{className:"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors",children:[e.label,r.jsx("button",{onClick:e.onRemove,className:"ml-2 text-gray-500 hover:text-black transition-colors flex items-center",type:"button",children:r.jsx("span",{className:"relative top-[-1px]",children:"×"})})]},e.key)),r.jsxs("button",{onClick:u,className:"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5",type:"button",children:[r.jsx("span",{className:"text-red-600",children:"×"}),r.jsx("span",{children:"Clear"})]})]}):null}exports.CustomFilterChips=A;exports.Pagination=C;
|
|
2
2
|
//# sourceMappingURL=CustomFilterChips.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomFilterChips.cjs.js","sources":["../src/components/common/Pagination.jsx","../src/components/common/CustomFilterChips.jsx"],"sourcesContent":[" \"use client\";\n\nimport React, { useMemo } from \"react\";\n\n/**\n * Pagination Component\n * @param {number} page - current page number (1-based)\n * @param {number} pageSize - rows per page\n * @param {number} totalCount - total row count (for pagination)\n * @param {number} currentDataLength - length of current page's data array\n * @param {function} onPageChange - function(newPage) for pagination\n * @param {function} onPageSizeChange - function(newPageSize) for changing rows/page\n * @param {Array} pageSizeOptions - array of page size options (default: [10, 20, 50, 100])\n * @param {string} className - additional CSS classes\n * @param {boolean} showRecordCounter - whether to show the record counter (default: true)\n * @param {boolean} showPageSizeSelector - whether to show the page size selector (default: true)\n */\nexport default function Pagination({\n page = 1,\n pageSize = 10,\n totalCount = 0,\n currentDataLength = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n className = \"\",\n showRecordCounter = true,\n showPageSizeSelector = true,\n}) {\n const totalPages = Math.ceil(totalCount / pageSize);\n\n const currentRecordStart = (page - 1) * pageSize + 1;\n const currentRecordEnd = Math.min(\n (page - 1) * pageSize + currentDataLength,\n totalCount\n );\n\n const pageNumbers = useMemo(() => {\n if (totalPages <= 1) return [];\n\n const pages = [];\n const maxVisiblePages = 7;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i += 1) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n let startPage = Math.max(2, page - 2);\n let endPage = Math.min(totalPages - 1, page + 2);\n\n if (page <= 3) {\n endPage = 5;\n }\n\n if (page >= totalPages - 2) {\n startPage = totalPages - 4;\n }\n\n if (startPage > 2) {\n pages.push(\"ellipsis-start\");\n }\n\n for (let i = startPage; i <= endPage; i += 1) {\n pages.push(i);\n }\n\n if (endPage < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n\n pages.push(totalPages);\n }\n\n return pages;\n }, [page, totalPages]);\n\n if (!onPageChange || totalPages === 0) {\n return null;\n }\n\n const shouldShowPageSizeSelector =\n showPageSizeSelector && typeof onPageSizeChange === \"function\";\n\n return (\n <div\n className={`flex items-center justify-between px-3 py-3 gap-4 bg-[white] rounded-b-lg ${className}`}\n >\n <div className=\"flex items-center gap-4\">\n {shouldShowPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-gray-700\">Rows per page:</span>\n <select\n className=\"border border-gray-300 rounded px-2 py-1 text-sm bg-white text-gray-700\"\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n {showRecordCounter && (\n <span className=\"text-sm text-gray-700\">\n Showing{\" \"}\n {currentRecordEnd > 0\n ? `${currentRecordStart}-${currentRecordEnd}`\n : 0}{\" \"}\n of {totalCount}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n < Previous\n </button>\n\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis-start\" || pageNum === \"ellipsis-end\") {\n return (\n <button\n key={`ellipsis-${index}`}\n className=\"w-8 h-8 rounded-full text-gray-500 flex items-center justify-center cursor-default\"\n disabled\n aria-hidden=\"true\"\n >\n <span className=\"text-xs\">...</span>\n </button>\n );\n }\n\n const isActive = pageNum === page;\n\n return (\n <button\n key={pageNum}\n className={`w-8 h-8 rounded-full flex items-center justify-center transition-colors text-sm font-medium ${\n isActive\n ? \"bg-green-2 text-black font-semibold\"\n : \"bg-white border border-gray-300 text-gray-700 hover:bg-gray-50\"\n }`}\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n })}\n\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n Next >\n </button>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React from \"react\";\n\nfunction formatLabel(key) {\n return key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/_/g, \" \")\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\nexport default function CustomFilterChips({\n filters,\n onChange,\n onClear,\n customFilters = [],\n fieldOptions = {},\n className = \"\",\n}) {\n const chips = [];\n\n const getDisplayLabel = (key, value) => {\n if (fieldOptions[key] && Array.isArray(fieldOptions[key])) {\n const option = fieldOptions[key].find((opt) => {\n const optValue =\n typeof opt === \"object\"\n ? opt.value !== undefined\n ? opt.value\n : opt.id\n : opt;\n return optValue === value || String(optValue) === String(value);\n });\n if (option) {\n return typeof option === \"object\"\n ? option.label || option.value || String(option)\n : String(option);\n }\n }\n return String(value);\n };\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (Array.isArray(value) && value.length) {\n const displayValues = value.map((v) => getDisplayLabel(key, v));\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValues.join(\", \")}`,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n } else if (typeof value === \"string\" && value.trim() !== \"\") {\n const displayValue = getDisplayLabel(key, value);\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValue}`,\n onRemove: () => onChange({ ...filters, [key]: \"\" }),\n });\n }\n });\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (\n value &&\n typeof value === \"object\" &&\n (value.min != null || value.max != null)\n ) {\n const label =\n value.min != null && value.max != null\n ? `${formatLabel(key)}: ${value.min}\\u2013${value.max}`\n : value.min != null\n ? `${formatLabel(key)} \\u2265 ${value.min}`\n : `${formatLabel(key)} \\u2264 ${value.max}`;\n chips.push({\n key,\n label,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n }\n });\n\n (customFilters || []).forEach((filterObj) => {\n if (filterObj && filterObj.active) {\n chips.push({\n key: filterObj.key,\n label: filterObj.label,\n onRemove: filterObj.onRemove,\n });\n }\n });\n\n if (!chips.length) return null;\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`}>\n {chips.map((c) => (\n <span\n key={c.key}\n className=\"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors\"\n >\n {c.label}\n <button\n onClick={c.onRemove}\n className=\"ml-2 text-gray-500 hover:text-black transition-colors flex items-center\"\n type=\"button\"\n >\n <span className=\"relative top-[-1px]\">×</span>\n </button>\n </span>\n ))}\n <button\n onClick={onClear}\n className=\"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5\"\n type=\"button\"\n >\n <span className=\"text-red-600\">×</span>\n <span>Clear</span>\n </button>\n </div>\n );\n}\n\n"],"names":["Pagination","page","pageSize","totalCount","currentDataLength","onPageChange","onPageSizeChange","pageSizeOptions","className","showRecordCounter","showPageSizeSelector","totalPages","currentRecordStart","currentRecordEnd","pageNumbers","useMemo","pages","i","startPage","endPage","shouldShowPageSizeSelector","jsxs","jsx","e","size","pageNum","index","isActive","formatLabel","key","str","CustomFilterChips","filters","onChange","onClear","customFilters","fieldOptions","chips","getDisplayLabel","value","option","opt","optValue","displayValues","v","newFilters","displayValue","label","filterObj","c"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CustomFilterChips.cjs.js","sources":["../src/components/common/Pagination.jsx","../src/components/common/CustomFilterChips.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { ChevronDown, ChevronLeft, ChevronRight } from \"lucide-react\";\n\n/**\n * Pagination Component (Figma DS — node 218:7058)\n * @param {number} page - current page number (1-based)\n * @param {number} pageSize - rows per page\n * @param {number} totalCount - total row count (for pagination)\n * @param {number} currentDataLength - length of current page's data array\n * @param {function} onPageChange - function(newPage) for pagination\n * @param {function} onPageSizeChange - function(newPageSize) for changing rows/page\n * @param {Array} pageSizeOptions - array of page size options (default: [10, 20, 50, 100])\n * @param {string} className - additional CSS classes\n * @param {boolean} showRecordCounter - whether to show the record counter (default: true)\n * @param {boolean} showPageSizeSelector - whether to show the page size selector (default: true)\n */\nexport default function Pagination({\n page = 1,\n pageSize = 10,\n totalCount = 0,\n currentDataLength = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n className = \"\",\n showRecordCounter = true,\n showPageSizeSelector = true,\n}) {\n const totalPages = Math.ceil(totalCount / pageSize);\n\n const currentRecordStart = (page - 1) * pageSize + 1;\n const currentRecordEnd = Math.min(\n (page - 1) * pageSize + currentDataLength,\n totalCount\n );\n\n const [pageSizeOpen, setPageSizeOpen] = useState(false);\n const pageSizeRef = useRef(null);\n\n useEffect(() => {\n if (!pageSizeOpen) return;\n const onMouseDown = (e) => {\n if (pageSizeRef.current && !pageSizeRef.current.contains(e.target)) {\n setPageSizeOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", onMouseDown);\n return () => document.removeEventListener(\"mousedown\", onMouseDown);\n }, [pageSizeOpen]);\n\n const pageNumbers = useMemo(() => {\n if (totalPages <= 1) return [];\n\n const pages = [];\n const maxVisiblePages = 7;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i += 1) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n let startPage = Math.max(2, page - 2);\n let endPage = Math.min(totalPages - 1, page + 2);\n\n if (page <= 3) {\n endPage = 5;\n }\n\n if (page >= totalPages - 2) {\n startPage = totalPages - 4;\n }\n\n if (startPage > 2) {\n pages.push(\"ellipsis-start\");\n }\n\n for (let i = startPage; i <= endPage; i += 1) {\n pages.push(i);\n }\n\n if (endPage < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n\n pages.push(totalPages);\n }\n\n return pages;\n }, [page, totalPages]);\n\n if (!onPageChange || totalPages === 0) {\n return null;\n }\n\n const shouldShowPageSizeSelector =\n showPageSizeSelector && typeof onPageSizeChange === \"function\";\n\n const labelStyle = {\n fontFamily: \"var(--font-sans)\",\n fontSize: 16,\n lineHeight: \"24px\",\n color: \"#323232\",\n };\n\n const pillBase = {\n height: 24,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"0 8px\",\n borderRadius: 10,\n fontFamily: \"var(--font-sans)\",\n fontSize: 12,\n lineHeight: \"16px\",\n border: \"1px solid #E6E6E6\",\n background: \"#FFFFFF\",\n color: \"#0B0B0B\",\n cursor: \"pointer\",\n gap: 4,\n whiteSpace: \"nowrap\",\n };\n\n return (\n <div\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 0\",\n gap: 16,\n background: \"transparent\",\n }}\n >\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 16 }}>\n {shouldShowPageSizeSelector && (\n <div ref={pageSizeRef} style={{ position: \"relative\", display: \"inline-flex\", alignItems: \"center\", gap: 8 }}>\n <span style={labelStyle}>Result per page</span>\n <button\n type=\"button\"\n onClick={() => setPageSizeOpen((v) => !v)}\n aria-haspopup=\"listbox\"\n aria-expanded={pageSizeOpen}\n style={{ ...pillBase, minWidth: 47 }}\n >\n {pageSize}\n <ChevronDown size={12} strokeWidth={1.75} />\n </button>\n {pageSizeOpen && (\n <div\n role=\"listbox\"\n style={{\n position: \"absolute\",\n bottom: \"calc(100% + 4px)\",\n right: 0,\n zIndex: 30,\n background: \"#FFFFFF\",\n border: \"1px solid #E6E6E6\",\n borderRadius: 10,\n boxShadow: \"0 8px 24px rgba(11, 11, 11, 0.10)\",\n padding: 4,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n minWidth: 60,\n }}\n >\n {pageSizeOptions.map((size) => {\n const selected = size === pageSize;\n return (\n <button\n key={size}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n onClick={() => {\n onPageSizeChange(size);\n setPageSizeOpen(false);\n }}\n style={{\n background: selected ? \"#F2F2F0\" : \"transparent\",\n border: \"none\",\n padding: \"6px 10px\",\n borderRadius: 6,\n fontFamily: \"var(--font-sans)\",\n fontSize: 13,\n color: \"#0B0B0B\",\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n {size}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n {showRecordCounter && (\n <span style={labelStyle}>\n {currentRecordEnd > 0\n ? `${currentRecordStart}-${currentRecordEnd} of ${totalCount}`\n : `0 of ${totalCount}`}\n </span>\n )}\n </div>\n\n <div style={{ display: \"inline-flex\", alignItems: \"center\", gap: 6 }}>\n <button\n type=\"button\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n style={{\n ...pillBase,\n opacity: page <= 1 ? 0.5 : 1,\n cursor: page <= 1 ? \"default\" : \"pointer\",\n }}\n >\n <ChevronLeft size={12} strokeWidth={1.75} />\n Back\n </button>\n\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis-start\" || pageNum === \"ellipsis-end\") {\n return (\n <span\n key={`ellipsis-${index}`}\n aria-hidden=\"true\"\n style={{\n fontFamily: \"var(--font-sans)\",\n fontSize: 12,\n color: \"#676767\",\n padding: \"0 4px\",\n userSelect: \"none\",\n }}\n >\n …\n </span>\n );\n }\n\n const isActive = pageNum === page;\n return (\n <button\n key={pageNum}\n type=\"button\"\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n style={{\n ...pillBase,\n minWidth: 22,\n padding: \"0 6px\",\n background: isActive ? \"#0B0B0B\" : \"#FFFFFF\",\n border: isActive ? \"none\" : \"1px solid #E6E6E6\",\n color: isActive ? \"#FFFFFF\" : \"#0B0B0B\",\n }}\n >\n {pageNum}\n </button>\n );\n })}\n\n <button\n type=\"button\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n style={{\n ...pillBase,\n opacity: page >= totalPages ? 0.5 : 1,\n cursor: page >= totalPages ? \"default\" : \"pointer\",\n }}\n >\n Next\n <ChevronRight size={12} strokeWidth={1.75} />\n </button>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\n\nfunction formatLabel(key) {\n return key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/_/g, \" \")\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\nexport default function CustomFilterChips({\n filters,\n onChange,\n onClear,\n customFilters = [],\n fieldOptions = {},\n className = \"\",\n}) {\n const chips = [];\n\n const getDisplayLabel = (key, value) => {\n if (fieldOptions[key] && Array.isArray(fieldOptions[key])) {\n const option = fieldOptions[key].find((opt) => {\n const optValue =\n typeof opt === \"object\"\n ? opt.value !== undefined\n ? opt.value\n : opt.id\n : opt;\n return optValue === value || String(optValue) === String(value);\n });\n if (option) {\n return typeof option === \"object\"\n ? option.label || option.value || String(option)\n : String(option);\n }\n }\n return String(value);\n };\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (Array.isArray(value) && value.length) {\n const displayValues = value.map((v) => getDisplayLabel(key, v));\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValues.join(\", \")}`,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n } else if (typeof value === \"string\" && value.trim() !== \"\") {\n const displayValue = getDisplayLabel(key, value);\n const label =\n key === \"contact_id\"\n ? \"Contact Id\"\n : `${formatLabel(key)}: ${displayValue}`;\n chips.push({\n key,\n label,\n onRemove: () => onChange({ ...filters, [key]: \"\" }),\n });\n }\n });\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (\n value &&\n typeof value === \"object\" &&\n (value.min != null || value.max != null)\n ) {\n const label =\n value.min != null && value.max != null\n ? `${formatLabel(key)}: ${value.min}\\u2013${value.max}`\n : value.min != null\n ? `${formatLabel(key)} \\u2265 ${value.min}`\n : `${formatLabel(key)} \\u2264 ${value.max}`;\n chips.push({\n key,\n label,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n }\n });\n\n (customFilters || []).forEach((filterObj) => {\n if (filterObj && filterObj.active) {\n chips.push({\n key: filterObj.key,\n label: filterObj.label,\n onRemove: filterObj.onRemove,\n });\n }\n });\n\n if (!chips.length) return null;\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`}>\n {chips.map((c) => (\n <span\n key={c.key}\n className=\"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors\"\n >\n {c.label}\n <button\n onClick={c.onRemove}\n className=\"ml-2 text-gray-500 hover:text-black transition-colors flex items-center\"\n type=\"button\"\n >\n <span className=\"relative top-[-1px]\">×</span>\n </button>\n </span>\n ))}\n <button\n onClick={onClear}\n className=\"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5\"\n type=\"button\"\n >\n <span className=\"text-red-600\">×</span>\n <span>Clear</span>\n </button>\n </div>\n );\n}\n\n"],"names":["Pagination","page","pageSize","totalCount","currentDataLength","onPageChange","onPageSizeChange","pageSizeOptions","className","showRecordCounter","showPageSizeSelector","totalPages","currentRecordStart","currentRecordEnd","pageSizeOpen","setPageSizeOpen","useState","pageSizeRef","useRef","useEffect","onMouseDown","e","pageNumbers","useMemo","pages","i","startPage","endPage","shouldShowPageSizeSelector","labelStyle","pillBase","jsxs","jsx","v","ChevronDown","size","selected","ChevronLeft","pageNum","index","isActive","ChevronRight","formatLabel","key","str","CustomFilterChips","filters","onChange","onClear","customFilters","fieldOptions","chips","getDisplayLabel","value","option","opt","optValue","displayValues","newFilters","displayValue","label","filterObj","c"],"mappings":"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"}
|
|
@@ -1,111 +1,225 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useMemo as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { jsxs as c, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { useState as C, useRef as j, useEffect as A, useMemo as I } from "react";
|
|
3
|
+
import { ChevronDown as k, ChevronLeft as M, ChevronRight as P } from "lucide-react";
|
|
4
|
+
function z({
|
|
5
|
+
page: r = 1,
|
|
6
|
+
pageSize: a = 10,
|
|
7
|
+
totalCount: f = 0,
|
|
8
|
+
currentDataLength: g = 0,
|
|
9
|
+
onPageChange: d,
|
|
10
|
+
onPageSizeChange: b,
|
|
11
|
+
pageSizeOptions: p = [10, 20, 50, 100],
|
|
12
|
+
className: x = "",
|
|
12
13
|
showRecordCounter: e = !0,
|
|
13
|
-
showPageSizeSelector:
|
|
14
|
+
showPageSizeSelector: i = !0
|
|
14
15
|
}) {
|
|
15
|
-
const
|
|
16
|
-
(
|
|
17
|
-
|
|
18
|
-
), $ =
|
|
19
|
-
|
|
16
|
+
const t = Math.ceil(f / a), o = (r - 1) * a + 1, h = Math.min(
|
|
17
|
+
(r - 1) * a + g,
|
|
18
|
+
f
|
|
19
|
+
), [y, $] = C(!1), v = j(null);
|
|
20
|
+
A(() => {
|
|
21
|
+
if (!y)
|
|
22
|
+
return;
|
|
23
|
+
const n = (u) => {
|
|
24
|
+
v.current && !v.current.contains(u.target) && $(!1);
|
|
25
|
+
};
|
|
26
|
+
return document.addEventListener("mousedown", n), () => document.removeEventListener("mousedown", n);
|
|
27
|
+
}, [y]);
|
|
28
|
+
const w = I(() => {
|
|
29
|
+
if (t <= 1)
|
|
20
30
|
return [];
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
for (let
|
|
24
|
-
|
|
31
|
+
const n = [];
|
|
32
|
+
if (t <= 7)
|
|
33
|
+
for (let l = 1; l <= t; l += 1)
|
|
34
|
+
n.push(l);
|
|
25
35
|
else {
|
|
26
|
-
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
for (let
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
n.push(1);
|
|
37
|
+
let l = Math.max(2, r - 2), E = Math.min(t - 1, r + 2);
|
|
38
|
+
r <= 3 && (E = 5), r >= t - 2 && (l = t - 4), l > 2 && n.push("ellipsis-start");
|
|
39
|
+
for (let S = l; S <= E; S += 1)
|
|
40
|
+
n.push(S);
|
|
41
|
+
E < t - 1 && n.push("ellipsis-end"), n.push(t);
|
|
32
42
|
}
|
|
33
|
-
return
|
|
34
|
-
}, [
|
|
35
|
-
if (!
|
|
43
|
+
return n;
|
|
44
|
+
}, [r, t]);
|
|
45
|
+
if (!d || t === 0)
|
|
36
46
|
return null;
|
|
37
|
-
const
|
|
38
|
-
|
|
47
|
+
const B = i && typeof b == "function", R = {
|
|
48
|
+
fontFamily: "var(--font-sans)",
|
|
49
|
+
fontSize: 16,
|
|
50
|
+
lineHeight: "24px",
|
|
51
|
+
color: "#323232"
|
|
52
|
+
}, F = {
|
|
53
|
+
height: 24,
|
|
54
|
+
display: "inline-flex",
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
justifyContent: "center",
|
|
57
|
+
padding: "0 8px",
|
|
58
|
+
borderRadius: 10,
|
|
59
|
+
fontFamily: "var(--font-sans)",
|
|
60
|
+
fontSize: 12,
|
|
61
|
+
lineHeight: "16px",
|
|
62
|
+
border: "1px solid #E6E6E6",
|
|
63
|
+
background: "#FFFFFF",
|
|
64
|
+
color: "#0B0B0B",
|
|
65
|
+
cursor: "pointer",
|
|
66
|
+
gap: 4,
|
|
67
|
+
whiteSpace: "nowrap"
|
|
68
|
+
};
|
|
69
|
+
return /* @__PURE__ */ c(
|
|
39
70
|
"div",
|
|
40
71
|
{
|
|
41
|
-
className:
|
|
72
|
+
className: x,
|
|
73
|
+
style: {
|
|
74
|
+
display: "flex",
|
|
75
|
+
alignItems: "center",
|
|
76
|
+
justifyContent: "space-between",
|
|
77
|
+
padding: "12px 0",
|
|
78
|
+
gap: 16,
|
|
79
|
+
background: "transparent"
|
|
80
|
+
},
|
|
42
81
|
children: [
|
|
43
|
-
/* @__PURE__ */
|
|
44
|
-
|
|
45
|
-
/* @__PURE__ */
|
|
46
|
-
/* @__PURE__ */
|
|
47
|
-
"
|
|
82
|
+
/* @__PURE__ */ c("div", { style: { display: "inline-flex", alignItems: "center", gap: 16 }, children: [
|
|
83
|
+
B && /* @__PURE__ */ c("div", { ref: v, style: { position: "relative", display: "inline-flex", alignItems: "center", gap: 8 }, children: [
|
|
84
|
+
/* @__PURE__ */ s("span", { style: R, children: "Result per page" }),
|
|
85
|
+
/* @__PURE__ */ c(
|
|
86
|
+
"button",
|
|
48
87
|
{
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
88
|
+
type: "button",
|
|
89
|
+
onClick: () => $((n) => !n),
|
|
90
|
+
"aria-haspopup": "listbox",
|
|
91
|
+
"aria-expanded": y,
|
|
92
|
+
style: { ...F, minWidth: 47 },
|
|
93
|
+
children: [
|
|
94
|
+
a,
|
|
95
|
+
/* @__PURE__ */ s(k, { size: 12, strokeWidth: 1.75 })
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
),
|
|
99
|
+
y && /* @__PURE__ */ s(
|
|
100
|
+
"div",
|
|
101
|
+
{
|
|
102
|
+
role: "listbox",
|
|
103
|
+
style: {
|
|
104
|
+
position: "absolute",
|
|
105
|
+
bottom: "calc(100% + 4px)",
|
|
106
|
+
right: 0,
|
|
107
|
+
zIndex: 30,
|
|
108
|
+
background: "#FFFFFF",
|
|
109
|
+
border: "1px solid #E6E6E6",
|
|
110
|
+
borderRadius: 10,
|
|
111
|
+
boxShadow: "0 8px 24px rgba(11, 11, 11, 0.10)",
|
|
112
|
+
padding: 4,
|
|
113
|
+
display: "flex",
|
|
114
|
+
flexDirection: "column",
|
|
115
|
+
gap: 2,
|
|
116
|
+
minWidth: 60
|
|
117
|
+
},
|
|
118
|
+
children: p.map((n) => {
|
|
119
|
+
const u = n === a;
|
|
120
|
+
return /* @__PURE__ */ s(
|
|
121
|
+
"button",
|
|
122
|
+
{
|
|
123
|
+
type: "button",
|
|
124
|
+
role: "option",
|
|
125
|
+
"aria-selected": u,
|
|
126
|
+
onClick: () => {
|
|
127
|
+
b(n), $(!1);
|
|
128
|
+
},
|
|
129
|
+
style: {
|
|
130
|
+
background: u ? "#F2F2F0" : "transparent",
|
|
131
|
+
border: "none",
|
|
132
|
+
padding: "6px 10px",
|
|
133
|
+
borderRadius: 6,
|
|
134
|
+
fontFamily: "var(--font-sans)",
|
|
135
|
+
fontSize: 13,
|
|
136
|
+
color: "#0B0B0B",
|
|
137
|
+
textAlign: "left",
|
|
138
|
+
cursor: "pointer"
|
|
139
|
+
},
|
|
140
|
+
children: n
|
|
141
|
+
},
|
|
142
|
+
n
|
|
143
|
+
);
|
|
144
|
+
})
|
|
53
145
|
}
|
|
54
146
|
)
|
|
55
147
|
] }),
|
|
56
|
-
e && /* @__PURE__ */
|
|
57
|
-
"Showing",
|
|
58
|
-
" ",
|
|
59
|
-
u > 0 ? `${i}-${u}` : 0,
|
|
60
|
-
" ",
|
|
61
|
-
"of ",
|
|
62
|
-
b
|
|
63
|
-
] })
|
|
148
|
+
e && /* @__PURE__ */ s("span", { style: R, children: h > 0 ? `${o}-${h} of ${f}` : `0 of ${f}` })
|
|
64
149
|
] }),
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ c("div", { style: { display: "inline-flex", alignItems: "center", gap: 6 }, children: [
|
|
151
|
+
/* @__PURE__ */ c(
|
|
67
152
|
"button",
|
|
68
153
|
{
|
|
69
|
-
|
|
70
|
-
onClick: () =>
|
|
71
|
-
disabled:
|
|
154
|
+
type: "button",
|
|
155
|
+
onClick: () => d(r - 1),
|
|
156
|
+
disabled: r <= 1,
|
|
72
157
|
"aria-label": "Previous page",
|
|
73
|
-
|
|
158
|
+
style: {
|
|
159
|
+
...F,
|
|
160
|
+
opacity: r <= 1 ? 0.5 : 1,
|
|
161
|
+
cursor: r <= 1 ? "default" : "pointer"
|
|
162
|
+
},
|
|
163
|
+
children: [
|
|
164
|
+
/* @__PURE__ */ s(M, { size: 12, strokeWidth: 1.75 }),
|
|
165
|
+
"Back"
|
|
166
|
+
]
|
|
74
167
|
}
|
|
75
168
|
),
|
|
76
|
-
|
|
77
|
-
if (
|
|
78
|
-
return /* @__PURE__ */
|
|
79
|
-
"
|
|
169
|
+
w.map((n, u) => {
|
|
170
|
+
if (n === "ellipsis-start" || n === "ellipsis-end")
|
|
171
|
+
return /* @__PURE__ */ s(
|
|
172
|
+
"span",
|
|
80
173
|
{
|
|
81
|
-
className: "w-8 h-8 rounded-full text-gray-500 flex items-center justify-center cursor-default",
|
|
82
|
-
disabled: !0,
|
|
83
174
|
"aria-hidden": "true",
|
|
84
|
-
|
|
175
|
+
style: {
|
|
176
|
+
fontFamily: "var(--font-sans)",
|
|
177
|
+
fontSize: 12,
|
|
178
|
+
color: "#676767",
|
|
179
|
+
padding: "0 4px",
|
|
180
|
+
userSelect: "none"
|
|
181
|
+
},
|
|
182
|
+
children: "…"
|
|
85
183
|
},
|
|
86
|
-
`ellipsis-${
|
|
184
|
+
`ellipsis-${u}`
|
|
87
185
|
);
|
|
88
|
-
const
|
|
89
|
-
return /* @__PURE__ */
|
|
186
|
+
const l = n === r;
|
|
187
|
+
return /* @__PURE__ */ s(
|
|
90
188
|
"button",
|
|
91
189
|
{
|
|
92
|
-
|
|
93
|
-
onClick: () =>
|
|
94
|
-
"aria-label": `Go to page ${
|
|
95
|
-
"aria-current":
|
|
96
|
-
|
|
190
|
+
type: "button",
|
|
191
|
+
onClick: () => d(n),
|
|
192
|
+
"aria-label": `Go to page ${n}`,
|
|
193
|
+
"aria-current": l ? "page" : void 0,
|
|
194
|
+
style: {
|
|
195
|
+
...F,
|
|
196
|
+
minWidth: 22,
|
|
197
|
+
padding: "0 6px",
|
|
198
|
+
background: l ? "#0B0B0B" : "#FFFFFF",
|
|
199
|
+
border: l ? "none" : "1px solid #E6E6E6",
|
|
200
|
+
color: l ? "#FFFFFF" : "#0B0B0B"
|
|
201
|
+
},
|
|
202
|
+
children: n
|
|
97
203
|
},
|
|
98
|
-
|
|
204
|
+
n
|
|
99
205
|
);
|
|
100
206
|
}),
|
|
101
|
-
/* @__PURE__ */
|
|
207
|
+
/* @__PURE__ */ c(
|
|
102
208
|
"button",
|
|
103
209
|
{
|
|
104
|
-
|
|
105
|
-
onClick: () =>
|
|
106
|
-
disabled:
|
|
210
|
+
type: "button",
|
|
211
|
+
onClick: () => d(r + 1),
|
|
212
|
+
disabled: r >= t,
|
|
107
213
|
"aria-label": "Next page",
|
|
108
|
-
|
|
214
|
+
style: {
|
|
215
|
+
...F,
|
|
216
|
+
opacity: r >= t ? 0.5 : 1,
|
|
217
|
+
cursor: r >= t ? "default" : "pointer"
|
|
218
|
+
},
|
|
219
|
+
children: [
|
|
220
|
+
"Next",
|
|
221
|
+
/* @__PURE__ */ s(P, { size: 12, strokeWidth: 1.75 })
|
|
222
|
+
]
|
|
109
223
|
}
|
|
110
224
|
)
|
|
111
225
|
] })
|
|
@@ -113,101 +227,101 @@ function A({
|
|
|
113
227
|
}
|
|
114
228
|
);
|
|
115
229
|
}
|
|
116
|
-
function
|
|
117
|
-
return
|
|
230
|
+
function m(r) {
|
|
231
|
+
return r.replace(/([A-Z])/g, " $1").replace(/_/g, " ").replace(/^./, (a) => a.toUpperCase()).trim();
|
|
118
232
|
}
|
|
119
|
-
function
|
|
120
|
-
filters:
|
|
121
|
-
onChange:
|
|
122
|
-
onClear:
|
|
123
|
-
customFilters:
|
|
124
|
-
fieldOptions:
|
|
125
|
-
className:
|
|
233
|
+
function D({
|
|
234
|
+
filters: r,
|
|
235
|
+
onChange: a,
|
|
236
|
+
onClear: f,
|
|
237
|
+
customFilters: g = [],
|
|
238
|
+
fieldOptions: d = {},
|
|
239
|
+
className: b = ""
|
|
126
240
|
}) {
|
|
127
|
-
const
|
|
128
|
-
if (
|
|
129
|
-
const
|
|
130
|
-
const
|
|
131
|
-
return
|
|
241
|
+
const p = [], x = (e, i) => {
|
|
242
|
+
if (d[e] && Array.isArray(d[e])) {
|
|
243
|
+
const t = d[e].find((o) => {
|
|
244
|
+
const h = typeof o == "object" ? o.value !== void 0 ? o.value : o.id : o;
|
|
245
|
+
return h === i || String(h) === String(i);
|
|
132
246
|
});
|
|
133
|
-
if (
|
|
134
|
-
return typeof
|
|
247
|
+
if (t)
|
|
248
|
+
return typeof t == "object" && (t.label || t.value) || String(t);
|
|
135
249
|
}
|
|
136
|
-
return String(
|
|
250
|
+
return String(i);
|
|
137
251
|
};
|
|
138
|
-
return Object.entries(
|
|
139
|
-
if (Array.isArray(
|
|
140
|
-
const
|
|
141
|
-
|
|
252
|
+
return Object.entries(r || {}).forEach(([e, i]) => {
|
|
253
|
+
if (Array.isArray(i) && i.length) {
|
|
254
|
+
const t = i.map((o) => x(e, o));
|
|
255
|
+
p.push({
|
|
142
256
|
key: e,
|
|
143
|
-
label: `${
|
|
257
|
+
label: `${m(e)}: ${t.join(", ")}`,
|
|
144
258
|
onRemove: () => {
|
|
145
|
-
const
|
|
146
|
-
delete
|
|
259
|
+
const o = { ...r };
|
|
260
|
+
delete o[e], a(o);
|
|
147
261
|
}
|
|
148
262
|
});
|
|
149
|
-
} else if (typeof
|
|
150
|
-
const
|
|
151
|
-
|
|
263
|
+
} else if (typeof i == "string" && i.trim() !== "") {
|
|
264
|
+
const t = x(e, i), o = e === "contact_id" ? "Contact Id" : `${m(e)}: ${t}`;
|
|
265
|
+
p.push({
|
|
152
266
|
key: e,
|
|
153
|
-
label:
|
|
154
|
-
onRemove: () =>
|
|
267
|
+
label: o,
|
|
268
|
+
onRemove: () => a({ ...r, [e]: "" })
|
|
155
269
|
});
|
|
156
270
|
}
|
|
157
|
-
}), Object.entries(
|
|
158
|
-
if (
|
|
159
|
-
const
|
|
160
|
-
|
|
271
|
+
}), Object.entries(r || {}).forEach(([e, i]) => {
|
|
272
|
+
if (i && typeof i == "object" && (i.min != null || i.max != null)) {
|
|
273
|
+
const t = i.min != null && i.max != null ? `${m(e)}: ${i.min}–${i.max}` : i.min != null ? `${m(e)} ≥ ${i.min}` : `${m(e)} ≤ ${i.max}`;
|
|
274
|
+
p.push({
|
|
161
275
|
key: e,
|
|
162
|
-
label:
|
|
276
|
+
label: t,
|
|
163
277
|
onRemove: () => {
|
|
164
|
-
const
|
|
165
|
-
delete
|
|
278
|
+
const o = { ...r };
|
|
279
|
+
delete o[e], a(o);
|
|
166
280
|
}
|
|
167
281
|
});
|
|
168
282
|
}
|
|
169
|
-
}), (
|
|
170
|
-
e && e.active &&
|
|
283
|
+
}), (g || []).forEach((e) => {
|
|
284
|
+
e && e.active && p.push({
|
|
171
285
|
key: e.key,
|
|
172
286
|
label: e.label,
|
|
173
287
|
onRemove: e.onRemove
|
|
174
288
|
});
|
|
175
|
-
}),
|
|
176
|
-
|
|
289
|
+
}), p.length ? /* @__PURE__ */ c("div", { className: `flex flex-wrap items-center gap-4 ${b}`, children: [
|
|
290
|
+
p.map((e) => /* @__PURE__ */ c(
|
|
177
291
|
"span",
|
|
178
292
|
{
|
|
179
293
|
className: "bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors",
|
|
180
294
|
children: [
|
|
181
295
|
e.label,
|
|
182
|
-
/* @__PURE__ */
|
|
296
|
+
/* @__PURE__ */ s(
|
|
183
297
|
"button",
|
|
184
298
|
{
|
|
185
299
|
onClick: e.onRemove,
|
|
186
300
|
className: "ml-2 text-gray-500 hover:text-black transition-colors flex items-center",
|
|
187
301
|
type: "button",
|
|
188
|
-
children: /* @__PURE__ */
|
|
302
|
+
children: /* @__PURE__ */ s("span", { className: "relative top-[-1px]", children: "×" })
|
|
189
303
|
}
|
|
190
304
|
)
|
|
191
305
|
]
|
|
192
306
|
},
|
|
193
307
|
e.key
|
|
194
308
|
)),
|
|
195
|
-
/* @__PURE__ */
|
|
309
|
+
/* @__PURE__ */ c(
|
|
196
310
|
"button",
|
|
197
311
|
{
|
|
198
|
-
onClick:
|
|
312
|
+
onClick: f,
|
|
199
313
|
className: "h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5",
|
|
200
314
|
type: "button",
|
|
201
315
|
children: [
|
|
202
|
-
/* @__PURE__ */
|
|
203
|
-
/* @__PURE__ */
|
|
316
|
+
/* @__PURE__ */ s("span", { className: "text-red-600", children: "×" }),
|
|
317
|
+
/* @__PURE__ */ s("span", { children: "Clear" })
|
|
204
318
|
]
|
|
205
319
|
}
|
|
206
320
|
)
|
|
207
321
|
] }) : null;
|
|
208
322
|
}
|
|
209
323
|
export {
|
|
210
|
-
|
|
211
|
-
|
|
324
|
+
D as C,
|
|
325
|
+
z as P
|
|
212
326
|
};
|
|
213
327
|
//# sourceMappingURL=CustomFilterChips.es.js.map
|