PluginProbe
Tiered Pricing Table for WooCommerce / 6.5.0
Tiered Pricing Table for WooCommerce v6.5.0
8.0.2 7.1.7 7.1.5 7.1.4 7.1.1 6.5.0 6.4.0 6.1.0 trunk 1.0 1.1 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0 2.3.1 2.3.2 2.3.3 All 91 releases
tier-pricing-table / src / Addons / Tools / build / index.js

index.js in Tiered Pricing Table for WooCommerce 6.5.0, at src/Addons/Tools/build/index.js

1 lines 17.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (()=>{"use strict";var e={n:t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a},d:(t,a)=>{for(var l in a)e.o(a,l)&&!e.o(t,l)&&Object.defineProperty(t,l,{enumerable:!0,get:a[l]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,a=window.wp.element,l=window.wp.components,n=window.wp.i18n,i=window.wp.primitives,r=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})),o=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"})),s=window.wp.apiFetch;var c=e.n(s);const p=({label:e,type:i,selectedElements:r,onElementsChange:o})=>{const[s,p]=(0,a.useState)([]),[m,d]=(0,a.useState)(!1),[g,u]=(0,a.useState)({}),[b,h]=(0,a.useState)(null);return(0,a.useEffect)(()=>{const e={...g};r.forEach(t=>{const a=`${t.name} (#${t.id})`;e[a]=t}),u(e)},[]),(0,t.createElement)("div",{style:{marginBottom:"20px"}},(0,t.createElement)(l.FormTokenField,{label:e,value:r.map(e=>`${e.name} (#${e.id})`),suggestions:s,onInputChange:e=>{if(b&&clearTimeout(b),!e||e.length<3)return void p([]);const t=setTimeout(()=>{d(!0);const t="product"===i?`/wc/v3/products?search=${encodeURIComponent(e)}&per_page=10`:`/wc/v3/products/categories?search=${encodeURIComponent(e)}&per_page=10`;c()({path:t}).then(e=>{const t=[],a={...g};e.forEach(e=>{const l=`${e.name} (#${e.id})`;t.push(l),a[l]=e}),p(t),u(a),d(!1)}).catch(()=>d(!1))},500);h(t)},onChange:e=>{const t=e.map(e=>g[e]||null).filter(Boolean);o(t)},maxLength:100,__experimentalShowHowTo:!1,messages:{added:(0,n.__)("Item added","tier-pricing-table"),removed:(0,n.__)("Item removed","tier-pricing-table"),remove:(0,n.__)("Remove item","tier-pricing-table")}}),m&&(0,t.createElement)(l.Spinner,{style:{marginTop:"-10px",display:"block"}}))};function m(){const[e,i]=(0,a.useState)(!1),[r,s]=(0,a.useState)(!1),[m,d]=(0,a.useState)("none"),[g,u]=(0,a.useState)([]),[b,h]=(0,a.useState)([]),[y,_]=(0,a.useState)([]),[E,f]=(0,a.useState)(!1),[x,v]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),[S,k]=(0,a.useState)([]),[T,B]=(0,a.useState)(!0),[R,P]=(0,a.useState)(null);(0,a.useEffect)(()=>{c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities"}).then(e=>{if(e.roles){const t=e.roles.map(e=>({label:e.name,value:e.key}));k(t)}B(!1)}).catch(()=>{B(!1)})},[]);const N=e||"all"===m||"specific"===m&&g.length>0||r||E||x;return(0,t.createElement)("div",{className:"tpt-tools-app"},R&&(0,t.createElement)(l.Notice,{status:R.type,onRemove:()=>P(null)},R.message),(0,t.createElement)(l.Card,null,(0,t.createElement)(l.CardHeader,null,(0,t.createElement)("h3",{style:{margin:0}},(0,n.__)("Clean Up & Reset Options","tier-pricing-table"))),(0,t.createElement)(l.CardBody,null,(0,t.createElement)("p",{style:{backgroundColor:"#fcf0f1",color:"#d63638",padding:"12px 16px",borderLeft:"4px solid #d63638",borderRadius:"4px",marginTop:"0",marginBottom:"20px"}},(0,t.createElement)("strong",null,(0,n.__)("Warning:","tier-pricing-table"))," ",(0,n.__)("The actions below will permanently delete data from your database. Please make a backup before proceeding.","tier-pricing-table")),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("1. Product Level Data","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Remove tiered pricing rules directly attached to individual products.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,n.__)("Clean Standard Tiered Pricing Data","tier-pricing-table"),checked:e,onChange:i}),(0,t.createElement)("h4",{style:{marginTop:"15px",marginBottom:"10px"}},(0,n.__)("Customer Based Data","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,n.__)("Clean All Customer Based Pricing Data","tier-pricing-table"),checked:r,onChange:s}),(0,t.createElement)("h4",{style:{marginTop:"15px",marginBottom:"10px"}},(0,n.__)("Role Based Data","tier-pricing-table")),(0,t.createElement)(l.RadioControl,{selected:m,options:[{label:(0,n.__)("Do not clean role based data","tier-pricing-table"),value:"none"},{label:(0,n.__)("Clean all roles","tier-pricing-table"),value:"all"},{label:(0,n.__)("Select specific roles to clean","tier-pricing-table"),value:"specific"}],onChange:e=>d(e)}),"specific"===m&&(T?(0,t.createElement)(l.Spinner,{style:{marginTop:"10px"}}):(0,t.createElement)("div",{style:{display:"flex",flexDirection:"column",gap:"8px",marginTop:"10px",marginLeft:"25px",paddingLeft:"15px",borderLeft:"2px solid #e2e8f0"}},S.map(e=>(0,t.createElement)(l.CheckboxControl,{key:e.value,label:e.label,checked:g.includes(e.value),onChange:()=>{return t=e.value,void u(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t]);var t}})))),(e||"none"!==m||r)&&(0,t.createElement)("div",{style:{marginTop:"20px",padding:"15px",background:"#f8fafc",borderRadius:"4px",border:"1px solid #e2e8f0"}},(0,t.createElement)("h4",{style:{marginTop:0,marginBottom:"5px"}},(0,n.__)("Filters (Optional)","tier-pricing-table")),(0,t.createElement)("p",{style:{color:"#64748b",fontSize:"0.9em",marginTop:0,marginBottom:"15px"}},(0,n.__)("Leave blank to apply the cleanup to all products. Otherwise, select specific categories or products.","tier-pricing-table")),(0,t.createElement)(p,{label:(0,n.__)("Select Categories","tier-pricing-table"),type:"category",selectedElements:b,onElementsChange:h}),(0,t.createElement)(p,{label:(0,n.__)("Select Products","tier-pricing-table"),type:"product",selectedElements:y,onElementsChange:_})))),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("2. Global Pricing Rules","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Global pricing rules apply to multiple products at once.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,t.createElement)("span",{style:{color:"#d63638",fontWeight:"500"}},(0,n.__)("Delete all Global Pricing Rules","tier-pricing-table")),checked:E,onChange:f}))),(0,t.createElement)(l.Panel,{className:"tpt-cleanup-panel",style:{marginBottom:"20px"}},(0,t.createElement)(l.PanelBody,{title:(0,n.__)("3. Plugin Settings","tier-pricing-table"),initialOpen:!0},(0,t.createElement)("p",{style:{color:"#64748b",marginTop:0,marginBottom:"15px"}},(0,n.__)("Reset general settings, labels, and table column configurations.","tier-pricing-table")),(0,t.createElement)(l.CheckboxControl,{label:(0,t.createElement)("span",{style:{color:"#d63638",fontWeight:"500"}},(0,n.__)("Reset all plugin settings to defaults","tier-pricing-table")),checked:x,onChange:v}))),(0,t.createElement)("div",{style:{marginTop:"30px",borderTop:"1px solid #e2e8f0",paddingTop:"20px",display:"flex",alignItems:"center"}},(0,t.createElement)(l.Button,{isPrimary:!0,isDestructive:!0,icon:o,isBusy:C,disabled:C||!N,onClick:async()=>{if(!confirm((0,n.__)("Are you sure you want to delete the selected data? This action cannot be undone.","tier-pricing-table")))return;w(!0),P(null);const t=[];let a=[],l=!1;if(e||"none"!==m||r){const i={clean_standard:e,clean_users:r,clean_all_roles:"all"===m,roles:"specific"===m?g:[],categories:b.map(e=>e.id),products:y.map(e=>e.id)};t.push(c()({path:"/tier-pricing-table/features/tools/v1/cleanup",method:"POST",data:i}).then(e=>{e.success?a.push(e.message||(0,n.__)("Product data cleaned up.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)}))}if(E&&t.push(c()({path:"/tier-pricing-table/features/tools/v1/delete_global_rules",method:"POST"}).then(e=>{e.success?a.push(e.message||(0,n.__)("Global rules deleted.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)})),x&&t.push(c()({path:"/tier-pricing-table/features/tools/v1/reset_settings",method:"POST"}).then(e=>{e.success?a.push(e.message||(0,n.__)("Settings reset to default.","tier-pricing-table")):(l=!0,a.push(e.message))}).catch(e=>{l=!0,a.push(e.message)})),0!==t.length){try{await Promise.all(t),l?P({type:"error",message:a.join(" ")}):(P({type:"success",message:a.join(" ")}),i(!1),s(!1),d("none"),u([]),h([]),_([]),f(!1),v(!1))}catch(e){P({type:"error",message:(0,n.__)("An unexpected error occurred.","tier-pricing-table")})}w(!1)}else w(!1)},style:{padding:"8px 24px"}},C?(0,n.__)("Processing...","tier-pricing-table"):(0,n.__)("Execute Cleanup","tier-pricing-table")),!N&&(0,t.createElement)("span",{style:{marginLeft:"15px",color:"#64748b",fontSize:"0.9em"}},(0,n.__)("Select at least one option above to proceed.","tier-pricing-table"))))))}const d=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"})),g=(0,t.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,t.createElement)(i.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"}));function u(){const[e,i]=(0,a.useState)([]),[r,s]=(0,a.useState)([]),[p,m]=(0,a.useState)(!0),[u,b]=(0,a.useState)(null),[h,y]=(0,a.useState)(!1),[_,E]=(0,a.useState)(null),[f,x]=(0,a.useState)({key:"",name:"",capabilities:{}}),[v,C]=(0,a.useState)(!1),[w,S]=(0,a.useState)(""),[k,T]=(0,a.useState)(""),B=()=>{m(!0),c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities"}).then(e=>{i(e.roles),s(e.all_capabilities),m(!1)}).catch(e=>{b({type:"error",message:e.message||"Failed to load roles."}),m(!1)})};(0,a.useEffect)(()=>{B()},[]);const R=["administrator","editor","author","contributor","subscriber"],P=r.filter(e=>e.toLowerCase().includes(k.toLowerCase()));return(0,t.createElement)("div",{className:"tpt-roles-management"},u&&(0,t.createElement)(l.Notice,{status:u.type,onRemove:()=>b(null)},u.message),(0,t.createElement)(l.Card,null,(0,t.createElement)(l.CardHeader,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"15px 20px"}},(0,t.createElement)("h3",{style:{margin:0}},(0,n.__)("Roles and Capabilities","tier-pricing-table")),(0,t.createElement)(l.Button,{isPrimary:!0,icon:d,onClick:()=>{E(null),x({key:"",name:"",capabilities:{}}),S(""),y(!0)}},(0,n.__)("Add New Role","tier-pricing-table"))),(0,t.createElement)(l.CardBody,{style:{padding:"0"}},p?(0,t.createElement)(l.Spinner,null):(0,t.createElement)("div",{className:"tpt-modern-table",style:{borderRadius:"4px",border:"none",overflow:"hidden",boxShadow:"0 1px 2px rgba(0,0,0,0.05)"}},(0,t.createElement)("div",{style:{display:"grid",gridTemplateColumns:"2fr 2fr 1fr 1fr",padding:"12px 20px",background:"#f8f9fa",borderBottom:"1px solid #e2e4e7",fontWeight:600,color:"#1e1e1e",fontSize:"13px",textTransform:"uppercase",letterSpacing:"0.5px"}},(0,t.createElement)("div",null,(0,n.__)("Role Name","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Role Key","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Capabilities Count","tier-pricing-table")),(0,t.createElement)("div",null,(0,n.__)("Actions","tier-pricing-table"))),(0,t.createElement)("div",{style:{display:"flex",flexDirection:"column"}},e.map((a,i)=>(0,t.createElement)("div",{key:a.key,style:{display:"grid",gridTemplateColumns:"2fr 2fr 1fr 1fr",padding:"15px 20px",alignItems:"center",borderBottom:i<e.length-1?"1px solid #e2e4e7":"none",background:"#fff",transition:"background 0.2s"},onMouseEnter:e=>e.currentTarget.style.background="#fafafa",onMouseLeave:e=>e.currentTarget.style.background="#fff"},(0,t.createElement)("div",null,(0,t.createElement)("strong",{style:{fontSize:"14px",color:"#1d2327"}},a.name)),(0,t.createElement)("div",null,(0,t.createElement)("code",{style:{background:"#f0f0f1",padding:"4px 8px",borderRadius:"4px",color:"#2271b1",fontSize:"13px"}},a.key)),(0,t.createElement)("div",null,(0,t.createElement)("span",{style:{background:"#e4f0f6",color:"#006ea6",padding:"4px 10px",borderRadius:"20px",fontSize:"12px",fontWeight:600}},a.capabilities?Object.keys(a.capabilities).filter(e=>a.capabilities[e]).length:0)),(0,t.createElement)("div",null,(0,t.createElement)(l.Flex,{gap:2},(0,t.createElement)(l.FlexItem,null,(0,t.createElement)(l.Button,{isSecondary:!0,variant:"tertiary",icon:g,onClick:()=>(e=>{E(e);const t={};e.capabilities&&Object.keys(e.capabilities).forEach(a=>{e.capabilities[a]&&(t[a]=!0)}),x({key:e.key,name:e.name,capabilities:t}),y(!0)})(a)},(0,n.__)("Edit","tier-pricing-table"))),!R.includes(a.key)&&(0,t.createElement)(l.FlexItem,null,(0,t.createElement)(l.Button,{isDestructive:!0,variant:"tertiary",icon:o,onClick:()=>(e=>{confirm(`Are you sure you want to delete the role "${e.name}"?`)&&c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities",method:"DELETE",data:{key:e.key}}).then(e=>{e.success?(b({type:"success",message:e.message}),B()):b({type:"error",message:e.message})}).catch(e=>{b({type:"error",message:e.message})})})(a)},(0,n.__)("Delete","tier-pricing-table"))))))))))),h&&(0,t.createElement)(l.Modal,{title:_?(0,n.__)("Edit Role Capabilities","tier-pricing-table"):(0,n.__)("Create New Role","tier-pricing-table"),onRequestClose:()=>y(!1),style:{width:"800px",maxWidth:"90vw"}},(0,t.createElement)("div",{style:{marginBottom:"20px"}},(0,t.createElement)(l.TextControl,{label:(0,n.__)("Role Name","tier-pricing-table"),value:f.name,onChange:e=>x(t=>({...t,name:e})),disabled:!!_}),(0,t.createElement)(l.TextControl,{label:(0,n.__)("Role Key (e.g., custom_role)","tier-pricing-table"),value:f.key,onChange:e=>x(t=>({...t,key:e.toLowerCase().replace(/[^a-z0-9_]/g,"")})),disabled:!!_}),!_&&(0,t.createElement)("div",{style:{marginTop:"15px"}},(0,t.createElement)(l.SelectControl,{label:(0,n.__)("Copy capabilities from existing role","tier-pricing-table"),value:w,options:[{label:(0,n.__)("Select a role...","tier-pricing-table"),value:""},...e.map(e=>({label:e.name,value:e.key}))],onChange:t=>{if(S(t),!t)return void x(e=>({...e,capabilities:{}}));const a=e.find(e=>e.key===t);if(a){const e={};a.capabilities&&Object.keys(a.capabilities).forEach(t=>{a.capabilities[t]&&(e[t]=!0)}),x(t=>({...t,capabilities:e}))}}}))),(0,t.createElement)("hr",null),(0,t.createElement)("h3",null,(0,n.__)("Capabilities","tier-pricing-table")),(0,t.createElement)("div",{style:{marginBottom:"15px"}},(0,t.createElement)(l.SearchControl,{value:k,onChange:T,placeholder:(0,n.__)("Search capabilities...","tier-pricing-table")})),(0,t.createElement)("div",{style:{maxHeight:"300px",overflowY:"auto",border:"1px solid #ddd",padding:"10px"}},P.map(e=>(0,t.createElement)(l.CheckboxControl,{key:e,label:e,style:{marginBottom:"5px"},checked:!!f.capabilities[e],onChange:()=>(e=>{x(t=>({...t,capabilities:{...t.capabilities,[e]:!t.capabilities[e]}}))})(e)}))),(0,t.createElement)("div",{style:{marginTop:"20px",display:"flex",justifyContent:"flex-end",gap:"10px"}},(0,t.createElement)(l.Button,{isSecondary:!0,onClick:()=>y(!1)},(0,n.__)("Cancel","tier-pricing-table")),(0,t.createElement)(l.Button,{isPrimary:!0,isBusy:v,disabled:v,onClick:()=>{if(!f.key||!f.name)return void alert("Key and Name are required.");C(!0);const e=Object.keys(f.capabilities).filter(e=>f.capabilities[e]),t={key:f.key,name:f.name,capabilities:e},a=_?"PUT":"POST";c()({path:"/tier-pricing-table/features/tools/v1/roles_capabilities",method:a,data:t}).then(e=>{e.success?(b({type:"success",message:e.message}),y(!1),B()):b({type:"error",message:e.message}),C(!1)}).catch(e=>{b({type:"error",message:e.message}),C(!1)})}},(0,n.__)("Save Role","tier-pricing-table")))))}function b(){const e=window.location.hash?window.location.hash.replace("#",""):"roles";return(0,t.createElement)("div",{className:"tpt-tools-app",style:{background:"#fff",padding:"20px",borderRadius:"4px",margin:"15px 0"}},(0,t.createElement)(l.TabPanel,{className:"tpt-tools-tabs",activeClass:"is-active",initialTabName:e,onSelect:e=>{window.location.hash=e},tabs:[{name:"roles",title:(0,t.createElement)("span",{style:{display:"flex",alignItems:"center",gap:"8px"}},(0,t.createElement)(l.Icon,{icon:r,size:18})," ",(0,n.__)("Roles Management","tier-pricing-table")),className:"tpt-tab-roles"},{name:"cleanup",title:(0,t.createElement)("span",{style:{display:"flex",alignItems:"center",gap:"8px"}},(0,t.createElement)(l.Icon,{icon:o,size:18})," ",(0,n.__)("Data Clean Up","tier-pricing-table")),className:"tpt-tab-cleanup"}]},e=>(0,t.createElement)("div",{style:{marginTop:"20px"}},"cleanup"===e.name&&(0,t.createElement)(m,null),"roles"===e.name&&(0,t.createElement)(u,null))))}document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("tiered-pricing__feature__tools");e&&(0,a.createRoot)(e).render((0,t.createElement)(b,null))})})();