@teamco/ischeduler-mui 2.0.16 → 2.0.17

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/index.cjs.js CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@teamco/ischeduler-core`),l=require(`react`);l=s(l,1);let u=require(`@mui/material`),d=require(`@mui/x-date-pickers/DateTimePicker`),f=require(`@mui/x-date-pickers/LocalizationProvider`),p=require(`@mui/x-date-pickers/AdapterDayjs`),m=require(`dayjs`);m=s(m,1);let h=require(`react/jsx-runtime`),g=require(`@mui/icons-material/CalendarMonth`);g=s(g,1);let _=require(`@mui/icons-material/Settings`);_=s(_,1);let v=require(`@mui/icons-material/Add`);v=s(v,1);let y=require(`@mui/icons-material/DateRange`);y=s(y,1);let b=require(`@mui/icons-material/Close`);b=s(b,1);let x=require(`@mui/icons-material/Save`);x=s(x,1);let S=require(`@mui/icons-material/MoreVert`);S=s(S,1);let C=require(`@mui/icons-material/Refresh`);C=s(C,1);let w=require(`@mui/icons-material/Delete`);w=s(w,1);let T=require(`@mui/icons-material/Edit`);T=s(T,1);var E=e=>{let{t}=(0,c.useSchedulerContext)(),{min:n=1,label:r,disabled:i,durationTypes:a=[],exclude:o=[],typeValue:s,periodValue:l,onTypeChange:d,onValueChange:f}=e;return(0,h.jsxs)(u.Box,{sx:{display:`flex`,gap:1,width:`100%`},children:[(0,h.jsxs)(u.FormControl,{fullWidth:!0,size:`small`,children:[(0,h.jsx)(u.InputLabel,{id:`duration-type-label`,children:t(`scheduler.meta.period`)}),(0,h.jsx)(u.Select,{labelId:`duration-type-label`,value:s||``,label:t(`scheduler.meta.period`),disabled:i,onChange:e=>d?.(e.target.value),children:a.filter(e=>!o.includes(e)).map(e=>(0,h.jsx)(u.MenuItem,{value:e,children:c.EDurationTypes[e]},String(e)))})]}),(0,h.jsx)(u.TextField,{fullWidth:!0,size:`small`,type:`number`,label:r,value:l??``,disabled:i,slotProps:{htmlInput:{min:n}},onChange:e=>f?.(parseInt(e.target.value,10))})]})},D=e=>{let{options:t,value:n=[],onChange:r,disabled:i,loading:a,label:o,error:s,helperText:c}=e;return(0,h.jsxs)(u.Box,{children:[o&&(0,h.jsx)(u.Typography,{variant:`caption`,color:s?`error`:`textSecondary`,sx:{mb:.5,display:`block`},children:o}),(0,h.jsx)(u.ToggleButtonGroup,{value:n,onChange:(e,t)=>{r?.(t??[])},disabled:i||a,size:`small`,exclusive:!1,sx:{flexWrap:`wrap`,gap:.5,"& .MuiToggleButtonGroup-grouped":{margin:0,border:`1px solid rgba(0, 0, 0, 0.12) !important`,borderRadius:`4px !important`}},children:t.map(e=>(0,h.jsx)(u.ToggleButton,{value:e.value,sx:{minWidth:40,px:1},children:e.label},e.key))}),c&&(0,h.jsx)(u.FormHelperText,{error:s,children:c})]})},O=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r=[],onChange:i,disabled:a,setOccurs:o,scheduler:s}=e,d=(0,l.useRef)(s);(0,l.useEffect)(()=>{d.current=s},[s]);let f=(0,l.useMemo)(()=>Object.keys(c.EDays).map(e=>t(`scheduler.weekdays.short.${c.EDays[e].toLowerCase()}`)),[t]),p=(0,l.useMemo)(()=>Object.keys(c.EDays).map(e=>t(`scheduler.weekdays.${c.EDays[e].toLowerCase()}`)),[t]),m=e=>e.map((t,n)=>e[(n+c.CFirstDayIdx)%7]),g=m(f),_=m(p),v=g.map((e,t)=>{let n=_[t],r=(0,c.getKeyFromEnum)(c.EDays,n);return{key:`${e}-${t}`,label:e,value:r}}),y=(0,l.useCallback)(e=>{if(i){let n=e;i(n);let r=d.current,a={...r,repeat:{...r.repeat,weekly:{days:n}}};(0,c.handleDurationValueChange)(a.duration,a,o,t)}},[i,o,t]);return(0,h.jsx)(u.Box,{children:(0,h.jsx)(D,{label:t(`scheduler.days`),options:v,value:r,onChange:y,disabled:a,loading:n})})},k=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r,onChange:i,onWeeklyChange:a,disabled:o,setOccurs:s,scheduler:d}=e,f=(0,l.useRef)(d);(0,l.useEffect)(()=>{f.current=d},[d]);let p=r?.type||`DAY`,m=(e,n)=>{if(n!==null&&i){let e={...r,type:n,...n===`PERIOD`&&!r?.weekDay?{weekDay:`FIRST`}:{}};i(e);let a=f.current,o={...a,repeat:{...a.repeat,monthly:e}};n===`DAY`?(0,c.handleSelectWeeklyDay)(o.duration.period,o,s,t):(0,c.handleDurationValueChange)(o.duration,o,s,t)}},v=e=>{if(i){let n={...r,monthDay:e};i(n);let a=f.current;(0,c.handleSelectWeeklyDay)(e,{...a,repeat:{...a.repeat,monthly:n}},s,t)}},y=(e,n)=>{if(n!==null&&i){let e={...r,weekDay:n};i(e);let a=f.current,o={...a,repeat:{...a.repeat,monthly:e}};(0,c.handleDurationValueChange)(o.duration,o,s,t)}},b=[{value:`FIRST`,label:t(`scheduler.day.first`)},{value:`SECOND`,label:t(`scheduler.day.second`)},{value:`THIRD`,label:t(`scheduler.day.third`)},{value:`FOURTH`,label:t(`scheduler.day.fourth`)},{value:`LAST`,label:t(`scheduler.day.last`)}];return(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,h.jsxs)(u.ToggleButtonGroup,{value:p,exclusive:!0,onChange:m,disabled:o||n,size:`small`,children:[(0,h.jsxs)(u.ToggleButton,{value:`DAY`,"aria-label":`day`,children:[(0,h.jsx)(g.default,{fontSize:`small`,sx:{mr:1}}),t(`scheduler.day`)]}),(0,h.jsxs)(u.ToggleButton,{value:`PERIOD`,"aria-label":`period`,children:[(0,h.jsx)(_.default,{fontSize:`small`,sx:{mr:1}}),t(`scheduler.meta.period`)]})]}),p===`DAY`?(0,h.jsx)(u.TextField,{label:t(`scheduler.day`),type:`number`,size:`small`,value:r?.monthDay??``,disabled:o||n,slotProps:{htmlInput:{min:1,max:31}},onChange:e=>v(parseInt(e.target.value,10)),sx:{width:120}}):(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,h.jsx)(u.ToggleButtonGroup,{value:r?.weekDay||``,exclusive:!0,onChange:y,disabled:o||n,size:`small`,sx:{flexWrap:`wrap`},children:b.map(e=>(0,h.jsx)(u.ToggleButton,{value:e.value,children:e.label},e.value))}),(0,h.jsx)(O,{value:d.repeat?.weekly?.days,onChange:e=>{a?.(e)},disabled:o,setOccurs:s,scheduler:d})]})]})},A=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r,onChange:i,disabled:a,setOccurs:o,scheduler:s,repeatMonthly:d,onMonthlyChange:f,onWeeklyChange:p}=e,m=(0,l.useRef)(s);(0,l.useEffect)(()=>{m.current=s},[s]);let g=(0,l.useMemo)(()=>Object.keys(c.EMonths).map(e=>t(`scheduler.months.${c.EMonths[e].toLowerCase()}`)),[t]),_=(0,l.useMemo)(()=>Object.keys(c.EMonths).map(e=>t(`scheduler.months.short.${c.EMonths[e].toLowerCase()}`)),[t]),v=Object.keys(c.EMonths).map((e,t)=>({key:`${e}-${t}`,label:(0,h.jsx)(u.Tooltip,{title:g[t],children:(0,h.jsx)(`span`,{children:_[t]})}),value:e}));return(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,h.jsx)(D,{label:t(`scheduler.months`),options:v,value:r?.months||[],onChange:e=>{if(i){let n=e,a={...r,months:n};i(a);let s=m.current,l={...s,repeat:{...s.repeat,yearly:a}};(0,c.handleDurationValueChange)(l.duration,l,o,t)}},disabled:a,loading:n}),(0,h.jsx)(k,{value:d,onChange:f,onWeeklyChange:p,disabled:a,setOccurs:o,scheduler:s})]})},j=e=>{let{disabled:t,value:n,startedAt:r,onChange:i}=e,{t:a}=(0,c.useSchedulerContext)(),o=r?(0,m.default)(r).add(1,`day`):(0,m.default)();return(0,h.jsx)(d.DateTimePicker,{label:a(`scheduler.duration.endDate`),value:n??null,onChange:i,disabled:t||!r,minDateTime:o,slotProps:{textField:{size:`small`,fullWidth:!0}}})},M=e=>{let{t}=(0,c.useSchedulerContext)(),{min:n=1,value:r,onChange:i,disabled:a=!1}=e;return(0,h.jsx)(u.TextField,{fullWidth:!0,size:`small`,type:`number`,label:t(`scheduler.occurrences`),value:r??``,disabled:a,slotProps:{htmlInput:{min:n}},onChange:e=>i?.(parseInt(e.target.value,10))})},N=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r,onChange:i,disabled:a=!1,durationTypes:o=Object.keys(c.EDurationTypes),discountTypes:s=Object.keys(c.EDiscountType),schedulerType:g}=e,_=(0,l.useMemo)(()=>g===c.ESchedulerPrefix.SALE?c.DEFAULT_SALE_SCHEDULER:c.DEFAULT_DISCOUNT_SCHEDULER,[g]),[v,y]=(0,l.useState)(()=>r??_),b=r??v,[x,S]=(0,l.useState)(`0`),[C,w]=(0,l.useState)(null),[T,D]=(0,l.useState)(r);r!==T&&(y(r??_),D(r)),(0,l.useEffect)(()=>{b.range?.startedAt&&(0,c.handleChangeStartDate)((0,m.default)(b.range.startedAt),w),b.duration&&(0,c.handleDurationValueChange)(b.duration,b,S,t)},[b,t]);let N=(e,t)=>{let n=e.split(`.`),r=(e,t,n)=>{if(t.length===1)return{...e,[t[0]]:n};let[i,...a]=t;return{...e,[i]:r(e[i]??{},a,n)}},a=r(b,n,t);y(a),i?.(a)};return(0,h.jsx)(f.LocalizationProvider,{dateAdapter:p.AdapterDayjs,children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:3,py:2},children:[[c.ESchedulerPrefix.DISCOUNT,c.ESchedulerPrefix.TRIAL_DISCOUNT].includes(g)&&(0,h.jsx)(u.Grid2,{container:!0,spacing:2,children:(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,gap:1},children:[(0,h.jsxs)(u.FormControl,{fullWidth:!0,size:`small`,children:[(0,h.jsx)(u.InputLabel,{children:t(`scheduler.meta.discount`)}),(0,h.jsx)(u.Select,{value:b.discount?.type||``,label:t(`scheduler.meta.discount`),disabled:a||n,onChange:e=>N(`discount.type`,e.target.value),children:s.map(e=>(0,h.jsx)(u.MenuItem,{value:e,children:c.EDiscountType[e]},String(e)))})]}),(0,h.jsx)(u.TextField,{fullWidth:!0,size:`small`,type:`number`,label:t(`scheduler.meta.discount`),value:b.discount?.value??``,disabled:a||n,onChange:e=>N(`discount.value`,parseInt(e.target.value,10))})]})})}),(0,h.jsxs)(u.Grid2,{container:!0,spacing:2,children:[(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsx)(E,{label:t(`scheduler.duration`),disabled:a||n,typeValue:b.duration?.type,periodValue:b.duration?.period,durationTypes:o,required:!0,onTypeChange:e=>N(`duration.type`,e),onValueChange:e=>N(`duration.period`,e)})}),(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsx)(d.DateTimePicker,{label:t(`scheduler.startedAt`),value:(0,m.default)(b.range?.startedAt),onChange:e=>N(`range.startedAt`,e),disabled:a||n,slotProps:{textField:{size:`small`,fullWidth:!0}}})})]}),b.duration?.type===`WEEK`&&(0,h.jsx)(O,{value:b.repeat?.weekly?.days,onChange:e=>N(`repeat.weekly.days`,e),disabled:a,setOccurs:S,scheduler:b}),b.duration?.type===`MONTH`&&(0,h.jsx)(k,{value:b.repeat?.monthly,onChange:e=>N(`repeat.monthly`,e),onWeeklyChange:e=>N(`repeat.weekly.days`,e),disabled:a,setOccurs:S,scheduler:b}),b.duration?.type===`YEAR`&&(0,h.jsx)(A,{value:b.repeat?.yearly,onChange:e=>N(`repeat.yearly`,e),disabled:a,setOccurs:S,scheduler:b,repeatMonthly:b.repeat?.monthly,onMonthlyChange:e=>N(`repeat.monthly`,e),onWeeklyChange:e=>N(`repeat.weekly.days`,e)}),(0,h.jsxs)(u.Grid2,{container:!0,spacing:2,children:[(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsxs)(u.FormControl,{fullWidth:!0,size:`small`,children:[(0,h.jsx)(u.InputLabel,{children:t(`scheduler.duration.end`)}),(0,h.jsx)(u.Select,{value:b.range?.endReason?.type||``,label:t(`scheduler.duration.end`),disabled:a,onChange:e=>N(`range.endReason.type`,e.target.value),children:[{label:t(`scheduler.duration.end.day`),value:c.CEndReasonTypes[0]},{label:t(`scheduler.duration.end.after`),value:c.CEndReasonTypes[1]},{label:t(`scheduler.duration.end.no`),value:c.CEndReasonTypes[2]}].map(e=>(0,h.jsx)(u.MenuItem,{value:e.value,children:e.label},e.value))})]})}),(0,h.jsxs)(u.Grid2,{size:{xs:12,sm:6},children:[b.range?.endReason?.type===c.CEndReasonTypes[0]&&(0,h.jsx)(j,{value:(0,m.default)(b.range?.endReason?.expiredAt),startedAt:(0,m.default)(b.range?.startedAt),onChange:e=>N(`range.endReason.expiredAt`,e),disabled:a}),b.range?.endReason?.type===c.CEndReasonTypes[1]&&(0,h.jsx)(M,{value:b.range?.endReason?.occurrences,onChange:e=>N(`range.endReason.occurrences`,e),disabled:a})]})]}),(0,h.jsx)(u.Typography,{variant:`body2`,sx:{fontStyle:`italic`,color:`text.secondary`},dangerouslySetInnerHTML:{__html:t(`scheduler.result`,{occurs:x,startAt:C??``})}})]})})},P=e=>{let{t,permissions:n}=(0,c.useSchedulerContext)(),{loading:r,className:i,isEdit:a,disabled:o,size:s=`small`,color:l=`primary`,icon:d=(0,h.jsx)(x.default,{fontSize:`small`}),type:f=`button`,variant:p=`contained`,onClick:m}=e;if(!(a?n.canUpdate:n.canCreate))return null;let g=t(a?`actions.update`:`actions.save`);return(0,h.jsx)(u.Button,{type:f,size:s,variant:p,className:i,disabled:o||r,startIcon:r?(0,h.jsx)(u.CircularProgress,{size:16,color:`inherit`}):d,onClick:m,color:l,children:g})},F=({schedulerType:e,disabled:t,onSuccess:n,setDirty:r,dirty:i,isCreating:a,setIsCreating:o,buttonProps:s,open:d,onOpenChange:f,showButton:p=!0})=>{let{t:m,loading:g,permissions:_,onCreate:v,limit:x=c.DEFAULT_SCHEDULERS_LIMIT}=(0,c.useSchedulerContext)(),[S,C]=(0,l.useState)(!1),w=d===void 0?S:d,T=e=>{f?f(e):C(e)},E=(0,l.useMemo)(()=>e===c.ESchedulerPrefix.SALE?c.DEFAULT_SALE_SCHEDULER:c.DEFAULT_DISCOUNT_SCHEDULER,[e]),[D,O]=(0,l.useState)(E);if((0,l.useEffect)(()=>{w&&O(E)},[w,E]),!_.canCreate)return null;let k=()=>{T(!0)},A=()=>{T(!1),r(!1)},j=async()=>{try{o(!0);let t={id:`new-${Date.now()}`,...D,type:e,[c.CNsDiscount]:e===c.ESchedulerPrefix.SALE?null:D?.[c.CNsDiscount]};v&&await v(e,t),n?.(t),T(!1),r(!1)}catch(e){console.error(`Failed to save scheduler:`,e)}finally{o(!1)}};return(0,h.jsxs)(h.Fragment,{children:[p&&(0,h.jsx)(u.Tooltip,{title:t?m(`scheduler.limited`,{limit:x}):``,children:(0,h.jsx)(`span`,{children:(0,h.jsx)(u.Button,{variant:`text`,size:`small`,...s,disabled:t||g,onClick:k,sx:{textTransform:`none`,p:0,minWidth:`auto`,...s?.sx},children:m(`scheduler`)})})}),(0,h.jsx)(u.Drawer,{anchor:`right`,open:w,onClose:A,slotProps:{paper:{sx:{width:{xs:`100%`,sm:600},p:0}}},children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,h.jsxs)(u.Box,{sx:{p:2,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(y.default,{color:`primary`}),(0,h.jsx)(u.Typography,{variant:`h6`,children:m(`scheduler`)})]}),(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(P,{loading:g||a,disabled:t||!i,onClick:j}),(0,h.jsx)(u.IconButton,{onClick:A,size:`small`,children:(0,h.jsx)(b.default,{})})]})]}),(0,h.jsx)(u.Divider,{}),(0,h.jsx)(u.Box,{sx:{p:3,flexGrow:1,overflowY:`auto`},children:(0,h.jsx)(N,{schedulerType:e,value:D,onChange:e=>{O(e),r(!0)},disabled:t})})]})})]})},I=e=>{let{t}=(0,c.useSchedulerContext)(),{selectedColumns:n=[],columnsList:r=[],onChange:i}=e;if(!r?.length)return(0,h.jsx)(h.Fragment,{});let a=t(`table.hideColumns`);return(0,h.jsxs)(u.FormControl,{sx:{m:1,minWidth:250},size:`small`,children:[(0,h.jsx)(u.InputLabel,{id:`hide-columns-label`,children:a}),(0,h.jsx)(u.Select,{labelId:`hide-columns-label`,id:`hide-columns-select`,multiple:!0,value:n,onChange:e=>{let t=e.target.value,n=typeof t==`string`?t.split(`,`):t;n.length<1||i?.(n)},input:(0,h.jsx)(u.OutlinedInput,{label:a}),renderValue:e=>e.map(e=>r.find(t=>t.value===e)?.label??e).join(`, `),sx:{maxHeight:40},children:r.map(e=>(0,h.jsxs)(u.MenuItem,{value:e.value,children:[(0,h.jsx)(u.Checkbox,{checked:n.indexOf(e.value)>-1,size:`small`}),(0,h.jsx)(u.ListItemText,{primary:e.label})]},e.value))})]})},L=e=>{let{loading:t,t:n}=(0,c.useSchedulerContext)(),{children:r,items:i=[],onRefresh:a}=e,[o,s]=(0,l.useState)(null),d=!!o,f=e=>{s(e.currentTarget)},p=()=>{s(null)};return(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,justifyContent:`flex-end`,gap:1,mb:1},children:[r,(0,h.jsx)(u.IconButton,{"aria-label":`more`,id:`toolbar-button`,"aria-controls":d?`toolbar-menu`:void 0,"aria-expanded":d?`true`:void 0,"aria-haspopup":`true`,onClick:f,size:`small`,children:t?(0,h.jsx)(u.CircularProgress,{size:20}):(0,h.jsx)(S.default,{})}),(0,h.jsxs)(u.Menu,{id:`toolbar-menu`,anchorEl:o,open:d,onClose:p,slotProps:{list:{"aria-labelledby":`toolbar-button`}},children:[i.map((e,t)=>(0,h.jsxs)(u.MenuItem,{onClick:()=>{e.onClick&&e.onClick(),p()},children:[e.icon&&(0,h.jsx)(u.ListItemIcon,{children:e.icon}),typeof e.label==`string`?(0,h.jsx)(u.ListItemText,{children:e.label}):(0,h.jsx)(u.Box,{sx:{flexGrow:1,display:`flex`},children:e.label})]},t)),i.length>0&&a&&(0,h.jsx)(u.Divider,{}),a&&(0,h.jsxs)(u.MenuItem,{onClick:()=>{a(),p()},children:[(0,h.jsx)(u.ListItemIcon,{children:(0,h.jsx)(C.default,{fontSize:`small`})}),(0,h.jsx)(u.ListItemText,{children:n(`toolbar.refresh`)})]})]})]})},R={ACTIVE:`success`,DEACTIVATED:`default`,DELETED:`error`,PROCESSING:`info`,PENDING:`warning`,APPROVED:`success`,PUBLISHED:`primary`},z=({status:e})=>(0,h.jsx)(u.Chip,{label:String(e),size:`small`,color:R[e]||`default`,variant:`outlined`}),B=e=>{let{t,permissions:n}=(0,c.useSchedulerContext)(),{entity:r,disabled:i,onDelete:a,showLabel:o=!1}=e,[s,d]=(0,l.useState)(!1);if(!r||!n.canDelete)return null;let f=e=>{e.stopPropagation(),d(!0)},p=e=>{e.stopPropagation(),d(!1)};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u.Tooltip,{title:t(`actions.delete`),children:(0,h.jsx)(`span`,{children:(0,h.jsxs)(u.IconButton,{color:`error`,size:`small`,onClick:f,disabled:i,children:[(0,h.jsx)(w.default,{fontSize:`small`}),o&&t(`actions.delete`)]})})}),(0,h.jsxs)(u.Dialog,{open:s,onClose:p,onClick:e=>e.stopPropagation(),children:[(0,h.jsx)(u.DialogTitle,{children:t(`actions.delete`)}),(0,h.jsx)(u.DialogContent,{children:(0,h.jsx)(u.DialogContentText,{children:t(`actions.confirm.delete`)})}),(0,h.jsxs)(u.DialogActions,{children:[(0,h.jsx)(u.Button,{onClick:p,size:`small`,children:t(`actions.cancel`)}),(0,h.jsx)(u.Button,{onClick:e=>{e.stopPropagation(),a?.(r),d(!1)},color:`error`,variant:`contained`,size:`small`,autoFocus:!0,children:t(`actions.delete`)})]})]})]})},V=e=>{let{t,permissions:n}=(0,c.useSchedulerContext)(),{entity:r,disabled:i,onEdit:a,showLabel:o=!1}=e;return!r||!n.canUpdate?null:(0,h.jsx)(u.Tooltip,{title:t(`actions.edit`),children:(0,h.jsx)(`span`,{children:(0,h.jsxs)(u.IconButton,{color:`primary`,size:`small`,onClick:e=>{e.stopPropagation(),a?.(r)},disabled:i,children:[(0,h.jsx)(T.default,{fontSize:`small`}),o&&t(`actions.edit`)]})})})},H=e=>(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:e?.days.map((e,t)=>(0,h.jsx)(u.Chip,{label:e,size:`small`,variant:`outlined`,color:`primary`},t))}),U=(e,t)=>e?.type===`PERIOD`?(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:t?.days.map((t,n)=>(0,h.jsx)(u.Chip,{label:`${e.weekDay} ${t}`,size:`small`,variant:`outlined`,color:`secondary`},n))}):(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(0,h.jsx)(u.Chip,{label:e?.monthDay?.toString(),size:`small`,variant:`outlined`,color:`info`},`monthDay`)}),W=(e,t,n)=>(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:.5},children:[U(t,n),(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:e?.months?.map((e,t)=>(0,h.jsx)(u.Chip,{label:e,size:`small`,variant:`outlined`,color:`warning`},t))})]}),G=e=>{let{disabled:t,schedulerType:n,currency:r,t:i,onEdit:a,onDelete:o}=e;return[{id:`index`,key:`index`,label:`#`,minWidth:50},{id:`duration`,key:`duration`,label:i(`scheduler.meta.duration`),minWidth:120,format:e=>{let t=e;return`${t?.period} (${t?.type})`}},{id:`repeat`,key:`repeat`,label:i(`scheduler.duration`),minWidth:200,format:(e,t)=>{let{duration:n,repeat:r}=t,{weekly:i,monthly:a,yearly:o}=r;switch(n?.type){case`WEEK`:return H(i);case`MONTH`:return U(a,i);case`YEAR`:return W(o,a,i);default:return null}}},[c.ESchedulerPrefix.DISCOUNT,c.ESchedulerPrefix.TRIAL_DISCOUNT].includes(n)?{id:`discount`,key:`discount`,label:i(`scheduler.meta.discount`),minWidth:120,format:e=>{let t=e;return t?t.type===`PERCENT`?`${t.value}${c.CDiscountTypeValues[t.type]}`:(0,c.numberToCurrency)(t.value,r??`USD`):`—`}}:null,{id:`status`,key:`status`,label:i(`scheduler.status`),minWidth:120,align:`center`,concealable:!0,format:e=>(0,h.jsx)(z,{status:e})},{id:`updatedAt`,key:`updatedAt`,label:i(`scheduler.updatedAt`),minWidth:180,align:`center`,concealable:!0,format:e=>{let t=e;return(0,h.jsx)(`span`,{children:t?.updatedAt?(0,c.tsToLocaleDateTime)((0,m.default)(t.updatedAt).toDate()):`—`})}},a||o?{id:`actions`,key:`actions`,label:i(`table.actions`),minWidth:100,align:`center`,format:(e,n)=>(0,h.jsxs)(u.Box,{sx:{display:`flex`,justifyContent:`center`,gap:.5},children:[a&&(0,h.jsx)(V,{onEdit:a,disabled:t,entity:n}),o&&(0,h.jsx)(B,{onDelete:o,entity:n,disabled:t})]})}:null].filter(Boolean)},K=e=>e.map((e,t)=>({...e,key:e.id||t.toString(),index:t+1})),q=()=>({title:`#`,dataIndex:`index`,key:`index`,width:50}),J=e=>({title:e(`table.actions`),key:`actions`,width:100}),Y=e=>{let{type:t,title:n,disabled:r,readOnlyFields:i=[],currency:a,onRefresh:o}=e,{schedulers:s,loading:d,limit:f=c.DEFAULT_SCHEDULERS_LIMIT,disabled:p,t:m,permissions:g,onUpdate:_,onDelete:x}=(0,c.useSchedulerContext)(),S=r??p,[C,w]=(0,l.useState)(new Set),[T,E]=(0,l.useState)(!1),[D,O]=(0,l.useState)(!1),[k,A]=(0,l.useState)(!1),[j,M]=(0,l.useState)(!1),[R,z]=(0,l.useState)(!1),[B,V]=(0,l.useState)(null),[H,U]=(0,l.useState)(0),[W,q]=(0,l.useState)(10),J=(0,l.useMemo)(()=>{let e=s[t]??[];return C.size>0&&(e=e.filter(e=>!e.id||!C.has(e.id))),K(e)},[s,t,C]),Y=J.length>=f,X=(0,l.useCallback)(e=>{V(JSON.parse(JSON.stringify(e))),z(!0),O(!1)},[]),ee=async()=>{if(!(!B||!_))try{await _(t,B),z(!1),V(null),O(!1),o?.()}catch(e){console.error(`Failed to update scheduler:`,e)}},Z=(0,l.useCallback)(async e=>{if(e.id?.startsWith(`new-`)){w(t=>{let n=new Set(t);return e.id&&n.add(e.id),n});return}x&&e.id&&(await x(t,e.id),o?.())},[x,t,o]),{filteredColumns:Q,columnsList:te,selectedColumns:ne,setSelectedColumns:re}=(0,c.useColumnsToggle)((0,l.useMemo)(()=>G({disabled:S,schedulerType:t,entities:J,currency:a,t:m,onEdit:g.canUpdate?X:void 0,onDelete:g.canDelete?Z:void 0}),[S,t,J,a,m,g,X,Z])),ie=(e,t)=>{U(t)},ae=e=>{q(parseInt(e.target.value,10)),U(0)},$=J.slice(H*W,H*W+W);return(0,h.jsxs)(u.Paper,{sx:{width:`100%`,overflow:`hidden`,mb:2},children:[(0,h.jsx)(u.Box,{sx:{p:2,display:`flex`,alignItems:`center`,justifyContent:`flex-end`,gap:2},children:(0,h.jsx)(L,{onRefresh:o,items:g.canCreate&&!Y?[{label:m(`scheduler`),icon:(0,h.jsx)(v.default,{}),onClick:()=>M(!0)}]:[],children:(0,h.jsx)(I,{columnsList:te,selectedColumns:ne,onChange:re})})}),(0,h.jsx)(F,{open:j,onOpenChange:M,showButton:!1,schedulerType:t,setDirty:E,dirty:T,isCreating:k,setIsCreating:A,onSuccess:()=>o?.()}),(0,h.jsx)(u.TableContainer,{sx:{maxHeight:440},children:(0,h.jsxs)(u.Table,{stickyHeader:!0,"aria-label":`schedulers table`,size:`small`,children:[(0,h.jsx)(u.TableHead,{children:(0,h.jsx)(u.TableRow,{children:Q.filter(e=>!e.hidden).map(e=>(0,h.jsx)(u.TableCell,{align:e.align,style:{minWidth:e.minWidth},children:e.label},e.id))})}),(0,h.jsxs)(u.TableBody,{children:[$.map(e=>(0,h.jsx)(u.TableRow,{hover:!0,role:`checkbox`,tabIndex:-1,children:Q.filter(e=>!e.hidden).map(t=>{let n=t.id.includes(`.`)?t.id.split(`.`).reduce((e,t)=>e?.[t],e):e[t.id];return(0,h.jsx)(u.TableCell,{align:t.align,children:t.format?t.format(n,e):n},t.id)})},e.key)),$.length===0&&(0,h.jsx)(u.TableRow,{children:(0,h.jsx)(u.TableCell,{colSpan:Q.length,align:`center`,sx:{py:3},children:(0,h.jsx)(u.Typography,{variant:`body2`,color:`text.secondary`,children:`No items found`})})})]})]})}),(0,h.jsx)(u.TablePagination,{rowsPerPageOptions:[5,10,25,100],component:`div`,count:J.length,rowsPerPage:W,page:H,onPageChange:ie,onRowsPerPageChange:ae}),(0,h.jsx)(u.Drawer,{anchor:`right`,open:R,onClose:()=>{z(!1),V(null)},slotProps:{paper:{sx:{width:{xs:`100%`,sm:600},p:0}}},children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,h.jsxs)(u.Box,{sx:{p:2,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(y.default,{color:`primary`}),(0,h.jsx)(u.Typography,{variant:`h6`,children:n??m(`scheduler`)})]}),(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(P,{isEdit:!0,loading:d,disabled:S||!D||k,onClick:ee}),(0,h.jsx)(u.IconButton,{onClick:()=>z(!1),size:`small`,children:(0,h.jsx)(b.default,{})})]})]}),(0,h.jsx)(u.Divider,{}),(0,h.jsx)(u.Box,{sx:{p:3,flexGrow:1,overflowY:`auto`},children:R&&B&&(0,h.jsx)(N,{schedulerType:t,value:B,onChange:e=>{V(e),O(!0)},disabled:S,readOnlyFields:i})})]})})]})};exports.Scheduler=N,exports.SchedulerDrawerButton=F,exports.SchedulersList=Y,exports.actionField=J,exports.indexColumn=q,exports.indexable=K,Object.keys(c).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return c[e]}})});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@teamco/ischeduler-core`),l=require(`react`);l=s(l,1);let u=require(`@mui/material`),d=require(`@mui/x-date-pickers/DateTimePicker`),f=require(`@mui/x-date-pickers/LocalizationProvider`),p=require(`@mui/x-date-pickers/AdapterDayjs`),m=require(`dayjs`);m=s(m,1);let h=require(`react/jsx-runtime`),g=require(`@mui/icons-material/CalendarMonth`);g=s(g,1);let _=require(`@mui/icons-material/Settings`);_=s(_,1);let v=require(`@mui/icons-material/Add`);v=s(v,1);let y=require(`@mui/icons-material/DateRange`);y=s(y,1);let b=require(`@mui/icons-material/Close`);b=s(b,1);let x=require(`@mui/icons-material/Save`);x=s(x,1);let S=require(`@mui/icons-material/MoreVert`);S=s(S,1);let C=require(`@mui/icons-material/Refresh`);C=s(C,1);let w=require(`@mui/icons-material/Delete`);w=s(w,1);let T=require(`@mui/icons-material/Edit`);T=s(T,1);var E=e=>{let{t}=(0,c.useSchedulerContext)(),{min:n=1,label:r,disabled:i,durationTypes:a=[],exclude:o=[],typeValue:s,periodValue:l,onTypeChange:d,onValueChange:f}=e;return(0,h.jsxs)(u.Box,{sx:{display:`flex`,gap:1,width:`100%`},children:[(0,h.jsxs)(u.FormControl,{fullWidth:!0,size:`small`,children:[(0,h.jsx)(u.InputLabel,{id:`duration-type-label`,children:t(`scheduler.meta.period`)}),(0,h.jsx)(u.Select,{labelId:`duration-type-label`,value:s||``,label:t(`scheduler.meta.period`),disabled:i,onChange:e=>d?.(e.target.value),children:a.filter(e=>!o.includes(e)).map(e=>(0,h.jsx)(u.MenuItem,{value:e,children:c.EDurationTypes[e]},String(e)))})]}),(0,h.jsx)(u.TextField,{fullWidth:!0,size:`small`,type:`number`,label:r,value:l??``,disabled:i,slotProps:{htmlInput:{min:n}},onChange:e=>f?.(parseInt(e.target.value,10))})]})},D=e=>{let{options:t,value:n=[],onChange:r,disabled:i,loading:a,label:o,error:s,helperText:c}=e;return(0,h.jsxs)(u.Box,{children:[o&&(0,h.jsx)(u.Typography,{variant:`caption`,color:s?`error`:`textSecondary`,sx:{mb:.5,display:`block`},children:o}),(0,h.jsx)(u.ToggleButtonGroup,{value:n,onChange:(e,t)=>{r?.(t??[])},disabled:i||a,size:`small`,exclusive:!1,sx:{flexWrap:`wrap`,gap:.5,"& .MuiToggleButtonGroup-grouped":{margin:0,border:`1px solid rgba(0, 0, 0, 0.12) !important`,borderRadius:`4px !important`}},children:t.map(e=>(0,h.jsx)(u.ToggleButton,{value:e.value,sx:{minWidth:40,px:1},children:e.label},e.key))}),c&&(0,h.jsx)(u.FormHelperText,{error:s,children:c})]})},O=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r=[],onChange:i,disabled:a,setOccurs:o,scheduler:s}=e,d=(0,l.useRef)(s);(0,l.useEffect)(()=>{d.current=s},[s]);let f=(0,l.useMemo)(()=>Object.keys(c.EDays).map(e=>t(`scheduler.weekdays.short.${c.EDays[e].toLowerCase()}`)),[t]),p=(0,l.useMemo)(()=>Object.keys(c.EDays).map(e=>t(`scheduler.weekdays.${c.EDays[e].toLowerCase()}`)),[t]),m=e=>e.map((t,n)=>e[(n+c.CFirstDayIdx)%7]),g=m(f),_=m(p),v=g.map((e,t)=>{let n=_[t],r=(0,c.getKeyFromEnum)(c.EDays,n);return{key:`${e}-${t}`,label:e,value:r}}),y=(0,l.useCallback)(e=>{if(i){let n=e;i(n);let r=d.current,a={...r,repeat:{...r.repeat,weekly:{days:n}}};(0,c.handleDurationValueChange)(a.duration,a,o,t)}},[i,o,t]);return(0,h.jsx)(u.Box,{children:(0,h.jsx)(D,{label:t(`scheduler.days`),options:v,value:r,onChange:y,disabled:a,loading:n})})},k=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r,onChange:i,onWeeklyChange:a,disabled:o,setOccurs:s,scheduler:d}=e,f=(0,l.useRef)(d);(0,l.useEffect)(()=>{f.current=d},[d]);let p=r?.type||`DAY`,m=(e,n)=>{if(n!==null&&i){let e={...r,type:n,...n===`PERIOD`&&!r?.weekDay?{weekDay:`FIRST`}:{}};i(e);let a=f.current,o={...a,repeat:{...a.repeat,monthly:e}};n===`DAY`?(0,c.handleSelectWeeklyDay)(o.duration.period,o,s,t):(0,c.handleDurationValueChange)(o.duration,o,s,t)}},v=e=>{if(i){let n={...r,monthDay:e};i(n);let a=f.current;(0,c.handleSelectWeeklyDay)(e,{...a,repeat:{...a.repeat,monthly:n}},s,t)}},y=(e,n)=>{if(n!==null&&i){let e={...r,weekDay:n};i(e);let a=f.current,o={...a,repeat:{...a.repeat,monthly:e}};(0,c.handleDurationValueChange)(o.duration,o,s,t)}},b=[{value:`FIRST`,label:t(`scheduler.day.first`)},{value:`SECOND`,label:t(`scheduler.day.second`)},{value:`THIRD`,label:t(`scheduler.day.third`)},{value:`FOURTH`,label:t(`scheduler.day.fourth`)},{value:`LAST`,label:t(`scheduler.day.last`)}];return(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,h.jsxs)(u.ToggleButtonGroup,{value:p,exclusive:!0,onChange:m,disabled:o||n,size:`small`,children:[(0,h.jsxs)(u.ToggleButton,{value:`DAY`,"aria-label":`day`,children:[(0,h.jsx)(g.default,{fontSize:`small`,sx:{mr:1}}),t(`scheduler.day`)]}),(0,h.jsxs)(u.ToggleButton,{value:`PERIOD`,"aria-label":`period`,children:[(0,h.jsx)(_.default,{fontSize:`small`,sx:{mr:1}}),t(`scheduler.meta.period`)]})]}),p===`DAY`?(0,h.jsx)(u.TextField,{label:t(`scheduler.day`),type:`number`,size:`small`,value:r?.monthDay??``,disabled:o||n,slotProps:{htmlInput:{min:1,max:31}},onChange:e=>v(parseInt(e.target.value,10)),sx:{width:120}}):(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,h.jsx)(u.ToggleButtonGroup,{value:r?.weekDay||``,exclusive:!0,onChange:y,disabled:o||n,size:`small`,sx:{flexWrap:`wrap`},children:b.map(e=>(0,h.jsx)(u.ToggleButton,{value:e.value,children:e.label},e.value))}),(0,h.jsx)(O,{value:d.repeat?.weekly?.days,onChange:e=>{a?.(e)},disabled:o,setOccurs:s,scheduler:d})]})]})},A=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r,onChange:i,disabled:a,setOccurs:o,scheduler:s,repeatMonthly:d,onMonthlyChange:f,onWeeklyChange:p}=e,m=(0,l.useRef)(s);(0,l.useEffect)(()=>{m.current=s},[s]);let g=(0,l.useMemo)(()=>Object.keys(c.EMonths).map(e=>t(`scheduler.months.${c.EMonths[e].toLowerCase()}`)),[t]),_=(0,l.useMemo)(()=>Object.keys(c.EMonths).map(e=>t(`scheduler.months.short.${c.EMonths[e].toLowerCase()}`)),[t]),v=Object.keys(c.EMonths).map((e,t)=>({key:`${e}-${t}`,label:(0,h.jsx)(u.Tooltip,{title:g[t],children:(0,h.jsx)(`span`,{children:_[t]})}),value:e}));return(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,h.jsx)(D,{label:t(`scheduler.months`),options:v,value:r?.months||[],onChange:e=>{if(i){let n=e,a={...r,months:n};i(a);let s=m.current,l={...s,repeat:{...s.repeat,yearly:a}};(0,c.handleDurationValueChange)(l.duration,l,o,t)}},disabled:a,loading:n}),(0,h.jsx)(k,{value:d,onChange:f,onWeeklyChange:p,disabled:a,setOccurs:o,scheduler:s})]})},j=e=>{let{disabled:t,value:n,startedAt:r,onChange:i}=e,{t:a}=(0,c.useSchedulerContext)(),o=r?(0,m.default)(r).add(1,`day`):(0,m.default)();return(0,h.jsx)(d.DateTimePicker,{label:a(`scheduler.duration.endDate`),value:n??null,onChange:i,disabled:t||!r,minDateTime:o,slotProps:{textField:{size:`small`,fullWidth:!0}}})},M=e=>{let{t}=(0,c.useSchedulerContext)(),{min:n=1,value:r,onChange:i,disabled:a=!1}=e;return(0,h.jsx)(u.TextField,{fullWidth:!0,size:`small`,type:`number`,label:t(`scheduler.occurrences`),value:r??``,disabled:a,slotProps:{htmlInput:{min:n}},onChange:e=>i?.(parseInt(e.target.value,10))})},N=e=>{let{t,loading:n}=(0,c.useSchedulerContext)(),{value:r,onChange:i,disabled:a=!1,durationTypes:o=Object.keys(c.EDurationTypes),discountTypes:s=Object.keys(c.EDiscountType),schedulerType:g}=e,_=(0,l.useMemo)(()=>g===c.ESchedulerPrefix.SALE?c.DEFAULT_SALE_SCHEDULER:c.DEFAULT_DISCOUNT_SCHEDULER,[g]),[v,y]=(0,l.useState)(()=>r??_),b=r??v,[x,S]=(0,l.useState)(`0`),[C,w]=(0,l.useState)(null),[T,D]=(0,l.useState)(r);r!==T&&(y(r??_),D(r)),(0,l.useEffect)(()=>{b.range?.startedAt&&(0,c.handleChangeStartDate)((0,m.default)(b.range.startedAt),w),b.duration&&(0,c.handleDurationValueChange)(b.duration,b,S,t)},[b,t]);let N=(e,t)=>{let n=e.split(`.`),r=(e,t,n)=>{if(t.length===1)return{...e,[t[0]]:n};let[i,...a]=t;return{...e,[i]:r(e[i]??{},a,n)}},a=r(b,n,t);y(a),i?.(a)};return(0,h.jsx)(f.LocalizationProvider,{dateAdapter:p.AdapterDayjs,children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:3,py:2},children:[[c.ESchedulerPrefix.DISCOUNT,c.ESchedulerPrefix.TRIAL_DISCOUNT].includes(g)&&(0,h.jsx)(u.Grid2,{container:!0,spacing:2,children:(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,gap:1},children:[(0,h.jsxs)(u.FormControl,{fullWidth:!0,size:`small`,children:[(0,h.jsx)(u.InputLabel,{children:t(`scheduler.meta.discount`)}),(0,h.jsx)(u.Select,{value:b.discount?.type||``,label:t(`scheduler.meta.discount`),disabled:a||n,onChange:e=>N(`discount.type`,e.target.value),children:s.map(e=>(0,h.jsx)(u.MenuItem,{value:e,children:c.EDiscountType[e]},String(e)))})]}),(0,h.jsx)(u.TextField,{fullWidth:!0,size:`small`,type:`number`,label:t(`scheduler.meta.discount`),value:b.discount?.value??``,disabled:a||n,onChange:e=>N(`discount.value`,parseInt(e.target.value,10))})]})})}),(0,h.jsxs)(u.Grid2,{container:!0,spacing:2,children:[(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsx)(E,{label:t(`scheduler.duration`),disabled:a||n,typeValue:b.duration?.type,periodValue:b.duration?.period,durationTypes:o,required:!0,onTypeChange:e=>N(`duration.type`,e),onValueChange:e=>N(`duration.period`,e)})}),(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsx)(d.DateTimePicker,{label:t(`scheduler.startedAt`),value:(0,m.default)(b.range?.startedAt),onChange:e=>N(`range.startedAt`,e),disabled:a||n,slotProps:{textField:{size:`small`,fullWidth:!0}}})})]}),b.duration?.type===`WEEK`&&(0,h.jsx)(O,{value:b.repeat?.weekly?.days,onChange:e=>N(`repeat.weekly.days`,e),disabled:a,setOccurs:S,scheduler:b}),b.duration?.type===`MONTH`&&(0,h.jsx)(k,{value:b.repeat?.monthly,onChange:e=>N(`repeat.monthly`,e),onWeeklyChange:e=>N(`repeat.weekly.days`,e),disabled:a,setOccurs:S,scheduler:b}),b.duration?.type===`YEAR`&&(0,h.jsx)(A,{value:b.repeat?.yearly,onChange:e=>N(`repeat.yearly`,e),disabled:a,setOccurs:S,scheduler:b,repeatMonthly:b.repeat?.monthly,onMonthlyChange:e=>N(`repeat.monthly`,e),onWeeklyChange:e=>N(`repeat.weekly.days`,e)}),(0,h.jsxs)(u.Grid2,{container:!0,spacing:2,children:[(0,h.jsx)(u.Grid2,{size:{xs:12,sm:6},children:(0,h.jsxs)(u.FormControl,{fullWidth:!0,size:`small`,children:[(0,h.jsx)(u.InputLabel,{children:t(`scheduler.duration.end`)}),(0,h.jsx)(u.Select,{value:b.range?.endReason?.type||``,label:t(`scheduler.duration.end`),disabled:a,onChange:e=>N(`range.endReason.type`,e.target.value),children:[{label:t(`scheduler.duration.end.day`),value:c.CEndReasonTypes[0]},{label:t(`scheduler.duration.end.after`),value:c.CEndReasonTypes[1]},{label:t(`scheduler.duration.end.no`),value:c.CEndReasonTypes[2]}].map(e=>(0,h.jsx)(u.MenuItem,{value:e.value,children:e.label},e.value))})]})}),(0,h.jsxs)(u.Grid2,{size:{xs:12,sm:6},children:[b.range?.endReason?.type===c.CEndReasonTypes[0]&&(0,h.jsx)(j,{value:(0,m.default)(b.range?.endReason?.expiredAt),startedAt:(0,m.default)(b.range?.startedAt),onChange:e=>N(`range.endReason.expiredAt`,e),disabled:a}),b.range?.endReason?.type===c.CEndReasonTypes[1]&&(0,h.jsx)(M,{value:b.range?.endReason?.occurrences,onChange:e=>N(`range.endReason.occurrences`,e),disabled:a})]})]}),(0,h.jsx)(u.Typography,{variant:`body2`,sx:{fontStyle:`italic`,color:`text.secondary`},dangerouslySetInnerHTML:{__html:t(`scheduler.result`,{occurs:x,startAt:C??``})}})]})})},P=e=>{let{t,permissions:n}=(0,c.useSchedulerContext)(),{loading:r,className:i,isEdit:a,disabled:o,size:s=`small`,color:l=`primary`,icon:d=(0,h.jsx)(x.default,{fontSize:`small`}),type:f=`button`,variant:p=`contained`,onClick:m}=e;if(!(a?n.canUpdate:n.canCreate))return null;let g=t(a?`actions.update`:`actions.save`);return(0,h.jsx)(u.Button,{type:f,size:s,variant:p,className:i,disabled:o||r,startIcon:r?(0,h.jsx)(u.CircularProgress,{size:16,color:`inherit`}):d,onClick:m,color:l,children:g})},F=({schedulerType:e,disabled:t,onSuccess:n,setDirty:r,dirty:i,isCreating:a,setIsCreating:o,buttonProps:s,open:d,onOpenChange:f,showButton:p=!0})=>{let{t:m,loading:g,permissions:_,onCreate:v,limit:x=c.DEFAULT_SCHEDULERS_LIMIT}=(0,c.useSchedulerContext)(),[S,C]=(0,l.useState)(!1),w=d===void 0?S:d,T=e=>{f?f(e):C(e)},E=(0,l.useMemo)(()=>e===c.ESchedulerPrefix.SALE?c.DEFAULT_SALE_SCHEDULER:c.DEFAULT_DISCOUNT_SCHEDULER,[e]),[D,O]=(0,l.useState)(E);if((0,l.useEffect)(()=>{w&&O(E)},[w,E]),!_.canCreate)return null;let k=()=>{T(!0)},A=()=>{T(!1),r(!1)},j=async()=>{try{o(!0);let t={id:`new-${Date.now()}`,...D,type:e,[c.CNsDiscount]:e===c.ESchedulerPrefix.SALE?null:D?.[c.CNsDiscount]};v&&await v(e,t),n?.(t),T(!1),r(!1)}catch(e){console.error(`Failed to save scheduler:`,e)}finally{o(!1)}};return(0,h.jsxs)(h.Fragment,{children:[p&&(0,h.jsx)(u.Tooltip,{title:t?m(`scheduler.limited`,{limit:x}):``,children:(0,h.jsx)(`span`,{children:(0,h.jsx)(u.Button,{variant:`text`,size:`small`,...s,disabled:t||g,onClick:k,sx:{textTransform:`none`,p:0,minWidth:`auto`,...s?.sx},children:m(`scheduler`)})})}),(0,h.jsx)(u.Drawer,{anchor:`right`,open:w,onClose:A,slotProps:{paper:{sx:{width:{xs:`100%`,sm:600},p:0}}},children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,h.jsxs)(u.Box,{sx:{p:2,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(y.default,{color:`primary`}),(0,h.jsx)(u.Typography,{variant:`h6`,children:m(`scheduler`)})]}),(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(P,{loading:g||a,disabled:t||!i,onClick:j}),(0,h.jsx)(u.IconButton,{onClick:A,size:`small`,children:(0,h.jsx)(b.default,{})})]})]}),(0,h.jsx)(u.Divider,{}),(0,h.jsx)(u.Box,{sx:{p:3,flexGrow:1,overflowY:`auto`},children:(0,h.jsx)(N,{schedulerType:e,value:D,onChange:e=>{O(e),r(!0)},disabled:t})})]})})]})},I=e=>{let{t}=(0,c.useSchedulerContext)(),{selectedColumns:n=[],columnsList:r=[],onChange:i}=e;if(!r?.length)return(0,h.jsx)(h.Fragment,{});let a=t(`table.hideColumns`);return(0,h.jsxs)(u.FormControl,{sx:{m:1,minWidth:250},size:`small`,children:[(0,h.jsx)(u.InputLabel,{id:`hide-columns-label`,children:a}),(0,h.jsx)(u.Select,{labelId:`hide-columns-label`,id:`hide-columns-select`,multiple:!0,value:n,onChange:e=>{let t=e.target.value,n=typeof t==`string`?t.split(`,`):t;n.length<1||i?.(n)},input:(0,h.jsx)(u.OutlinedInput,{label:a}),renderValue:e=>e.map(e=>r.find(t=>t.value===e)?.label??e).join(`, `),sx:{maxHeight:40},children:r.map(e=>(0,h.jsxs)(u.MenuItem,{value:e.value,children:[(0,h.jsx)(u.Checkbox,{checked:n.indexOf(e.value)>-1,size:`small`}),(0,h.jsx)(u.ListItemText,{primary:e.label})]},e.value))})]})},L=e=>{let{loading:t,t:n}=(0,c.useSchedulerContext)(),{children:r,items:i=[],onRefresh:a}=e,[o,s]=(0,l.useState)(null),d=!!o,f=e=>{s(e.currentTarget)},p=()=>{s(null)};return(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,justifyContent:`flex-end`,gap:1,mb:1},children:[r,(0,h.jsx)(u.IconButton,{"aria-label":`more`,id:`toolbar-button`,"aria-controls":d?`toolbar-menu`:void 0,"aria-expanded":d?`true`:void 0,"aria-haspopup":`true`,onClick:f,size:`small`,children:t?(0,h.jsx)(u.CircularProgress,{size:20}):(0,h.jsx)(S.default,{})}),(0,h.jsxs)(u.Menu,{id:`toolbar-menu`,anchorEl:o,open:d,onClose:p,slotProps:{list:{"aria-labelledby":`toolbar-button`}},children:[i.map((e,t)=>(0,h.jsxs)(u.MenuItem,{onClick:()=>{e.onClick&&e.onClick(),p()},children:[e.icon&&(0,h.jsx)(u.ListItemIcon,{children:e.icon}),typeof e.label==`string`?(0,h.jsx)(u.ListItemText,{children:e.label}):(0,h.jsx)(u.Box,{sx:{flexGrow:1,display:`flex`},children:e.label})]},t)),i.length>0&&a&&(0,h.jsx)(u.Divider,{}),a&&(0,h.jsxs)(u.MenuItem,{onClick:()=>{a(),p()},children:[(0,h.jsx)(u.ListItemIcon,{children:(0,h.jsx)(C.default,{fontSize:`small`})}),(0,h.jsx)(u.ListItemText,{children:n(`toolbar.refresh`)})]})]})]})},R={ACTIVE:`success`,DEACTIVATED:`default`,DELETED:`error`,PROCESSING:`info`,PENDING:`warning`,APPROVED:`success`,PUBLISHED:`primary`},z=({status:e})=>(0,h.jsx)(u.Chip,{label:String(e),size:`small`,color:R[e]||`default`,variant:`outlined`}),B=e=>{let{t,permissions:n}=(0,c.useSchedulerContext)(),{entity:r,disabled:i,onDelete:a,showLabel:o=!1}=e,[s,d]=(0,l.useState)(!1);if(!r||!n.canDelete)return null;let f=e=>{e.stopPropagation(),d(!0)},p=e=>{e.stopPropagation(),d(!1)};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(u.Tooltip,{title:t(`actions.delete`),children:(0,h.jsx)(`span`,{children:(0,h.jsxs)(u.IconButton,{color:`error`,size:`small`,onClick:f,disabled:i,children:[(0,h.jsx)(w.default,{fontSize:`small`}),o&&t(`actions.delete`)]})})}),(0,h.jsxs)(u.Dialog,{open:s,onClose:p,onClick:e=>e.stopPropagation(),children:[(0,h.jsx)(u.DialogTitle,{children:t(`actions.delete`)}),(0,h.jsx)(u.DialogContent,{children:(0,h.jsx)(u.DialogContentText,{children:t(`actions.confirm.delete`)})}),(0,h.jsxs)(u.DialogActions,{children:[(0,h.jsx)(u.Button,{onClick:p,size:`small`,children:t(`actions.cancel`)}),(0,h.jsx)(u.Button,{onClick:e=>{e.stopPropagation(),a?.(r),d(!1)},color:`error`,variant:`contained`,size:`small`,autoFocus:!0,children:t(`actions.delete`)})]})]})]})},V=e=>{let{t,permissions:n}=(0,c.useSchedulerContext)(),{entity:r,disabled:i,onEdit:a,showLabel:o=!1}=e;return!r||!n.canUpdate?null:(0,h.jsx)(u.Tooltip,{title:t(`actions.edit`),children:(0,h.jsx)(`span`,{children:(0,h.jsxs)(u.IconButton,{color:`primary`,size:`small`,onClick:e=>{e.stopPropagation(),a?.(r)},disabled:i,children:[(0,h.jsx)(T.default,{fontSize:`small`}),o&&t(`actions.edit`)]})})})},H=e=>(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:e?.days.map((e,t)=>(0,h.jsx)(u.Chip,{label:e,size:`small`,variant:`outlined`,color:`primary`},t))}),U=(e,t)=>e?.type===`PERIOD`?(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:t?.days.map((t,n)=>(0,h.jsx)(u.Chip,{label:`${e.weekDay} ${t}`,size:`small`,variant:`outlined`,color:`secondary`},n))}):(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(0,h.jsx)(u.Chip,{label:e?.monthDay?.toString(),size:`small`,variant:`outlined`,color:`info`},`monthDay`)}),W=(e,t,n)=>(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,gap:.5},children:[U(t,n),(0,h.jsx)(u.Box,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:e?.months?.map((e,t)=>(0,h.jsx)(u.Chip,{label:e,size:`small`,variant:`outlined`,color:`warning`},t))})]}),G=e=>{let{disabled:t,schedulerType:n,currency:r,t:i,onEdit:a,onDelete:o}=e;return[{id:`index`,key:`index`,label:`#`,minWidth:50},{id:`duration`,key:`duration`,label:i(`scheduler.meta.duration`),minWidth:120,format:e=>{let t=e;return`${t?.period} (${t?.type})`}},{id:`repeat`,key:`repeat`,label:i(`scheduler.duration`),minWidth:200,format:(e,t)=>{let{duration:n,repeat:r}=t,{weekly:i,monthly:a,yearly:o}=r;switch(n?.type){case`WEEK`:return H(i);case`MONTH`:return U(a,i);case`YEAR`:return W(o,a,i);default:return null}}},[c.ESchedulerPrefix.DISCOUNT,c.ESchedulerPrefix.TRIAL_DISCOUNT].includes(n)?{id:`discount`,key:`discount`,label:i(`scheduler.meta.discount`),minWidth:120,format:e=>{let t=e;return t?t.type===`PERCENT`?`${t.value}${c.CDiscountTypeValues[t.type]}`:(0,c.numberToCurrency)(t.value,r??`USD`):`—`}}:null,{id:`status`,key:`status`,label:i(`scheduler.status`),minWidth:120,align:`center`,concealable:!0,format:e=>(0,h.jsx)(z,{status:e})},{id:`updatedAt`,key:`updatedAt`,label:i(`scheduler.updatedAt`),minWidth:180,align:`center`,concealable:!0,format:e=>{let t=e;return(0,h.jsx)(`span`,{children:t?.updatedAt?(0,c.tsToLocaleDateTime)((0,m.default)(t.updatedAt).toDate()):`—`})}},a||o?{id:`actions`,key:`actions`,label:i(`table.actions`),minWidth:100,align:`center`,format:(e,n)=>(0,h.jsxs)(u.Box,{sx:{display:`flex`,justifyContent:`center`,gap:.5},children:[a&&(0,h.jsx)(V,{onEdit:a,disabled:t,entity:n}),o&&(0,h.jsx)(B,{onDelete:o,entity:n,disabled:t})]})}:null].filter(Boolean)},K=e=>e.map((e,t)=>({...e,key:e.id||t.toString(),index:t+1})),q=()=>({title:`#`,dataIndex:`index`,key:`index`,width:50}),J=e=>({title:e(`table.actions`),key:`actions`,width:100}),Y=e=>{let{type:t,title:n,disabled:r,readOnlyFields:i=[],currency:a,onRefresh:o}=e,{schedulers:s,loading:d,limit:f=c.DEFAULT_SCHEDULERS_LIMIT,disabled:p,t:m,permissions:g,onUpdate:_,onDelete:x}=(0,c.useSchedulerContext)(),S=r??p,[C,w]=(0,l.useState)(new Set),[T,E]=(0,l.useState)(!1),[D,O]=(0,l.useState)(!1),[k,A]=(0,l.useState)(!1),[j,M]=(0,l.useState)(!1),[R,z]=(0,l.useState)(!1),[B,V]=(0,l.useState)(null),[H,U]=(0,l.useState)(0),[W,q]=(0,l.useState)(10),J=(0,l.useMemo)(()=>{let e=s[t]??[];return C.size>0&&(e=e.filter(e=>!e.id||!C.has(e.id))),K(e)},[s,t,C]),Y=J.length>=f,X=(0,l.useCallback)(e=>{V(JSON.parse(JSON.stringify(e))),z(!0),O(!1)},[]),ee=(0,l.useCallback)(async()=>{if(!(!B||!_))try{await _(t,B),z(!1),V(null),O(!1),o?.()}catch(e){console.error(`Failed to update scheduler:`,e)}},[B,_,t,o]),Z=(0,l.useCallback)(async e=>{if(e.id?.startsWith(`new-`)){w(t=>{let n=new Set(t);return e.id&&n.add(e.id),n});return}x&&e.id&&(await x(t,e.id),o?.())},[x,t,o]),{filteredColumns:Q,columnsList:te,selectedColumns:ne,setSelectedColumns:re}=(0,c.useColumnsToggle)((0,l.useMemo)(()=>G({disabled:S,schedulerType:t,entities:J,currency:a,t:m,onEdit:g.canUpdate?X:void 0,onDelete:g.canDelete?Z:void 0}),[S,t,J,a,m,g,X,Z])),ie=(e,t)=>{U(t)},ae=e=>{q(parseInt(e.target.value,10)),U(0)},$=J.slice(H*W,H*W+W);return(0,h.jsxs)(u.Paper,{sx:{width:`100%`,overflow:`hidden`,mb:2},children:[(0,h.jsx)(u.Box,{sx:{p:2,display:`flex`,alignItems:`center`,justifyContent:`flex-end`,gap:2},children:(0,h.jsx)(L,{onRefresh:o,items:g.canCreate&&!Y?[{label:m(`scheduler`),icon:(0,h.jsx)(v.default,{}),onClick:()=>M(!0)}]:[],children:(0,h.jsx)(I,{columnsList:te,selectedColumns:ne,onChange:re})})}),(0,h.jsx)(F,{open:j,onOpenChange:M,showButton:!1,schedulerType:t,setDirty:E,dirty:T,isCreating:k,setIsCreating:A,onSuccess:()=>o?.()}),(0,h.jsx)(u.TableContainer,{sx:{maxHeight:440},children:(0,h.jsxs)(u.Table,{stickyHeader:!0,"aria-label":`schedulers table`,size:`small`,children:[(0,h.jsx)(u.TableHead,{children:(0,h.jsx)(u.TableRow,{children:Q.filter(e=>!e.hidden).map(e=>(0,h.jsx)(u.TableCell,{align:e.align,style:{minWidth:e.minWidth},children:e.label},e.id))})}),(0,h.jsxs)(u.TableBody,{children:[$.map(e=>(0,h.jsx)(u.TableRow,{hover:!0,role:`checkbox`,tabIndex:-1,children:Q.filter(e=>!e.hidden).map(t=>{let n=t.id.includes(`.`)?t.id.split(`.`).reduce((e,t)=>e?.[t],e):e[t.id];return(0,h.jsx)(u.TableCell,{align:t.align,children:t.format?t.format(n,e):n},t.id)})},e.key)),$.length===0&&(0,h.jsx)(u.TableRow,{children:(0,h.jsx)(u.TableCell,{colSpan:Q.length,align:`center`,sx:{py:3},children:(0,h.jsx)(u.Typography,{variant:`body2`,color:`text.secondary`,children:`No items found`})})})]})]})}),(0,h.jsx)(u.TablePagination,{rowsPerPageOptions:[5,10,25,100],component:`div`,count:J.length,rowsPerPage:W,page:H,onPageChange:ie,onRowsPerPageChange:ae}),(0,h.jsx)(u.Drawer,{anchor:`right`,open:R,onClose:()=>{z(!1),V(null)},slotProps:{paper:{sx:{width:{xs:`100%`,sm:600},p:0}}},children:(0,h.jsxs)(u.Box,{sx:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,h.jsxs)(u.Box,{sx:{p:2,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(y.default,{color:`primary`}),(0,h.jsx)(u.Typography,{variant:`h6`,children:n??m(`scheduler`)})]}),(0,h.jsxs)(u.Box,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,h.jsx)(P,{isEdit:!0,loading:d,disabled:S||!D||k,onClick:ee}),(0,h.jsx)(u.IconButton,{onClick:()=>z(!1),size:`small`,children:(0,h.jsx)(b.default,{})})]})]}),(0,h.jsx)(u.Divider,{}),(0,h.jsx)(u.Box,{sx:{p:3,flexGrow:1,overflowY:`auto`},children:R&&B&&(0,h.jsx)(N,{schedulerType:t,value:B,onChange:e=>{V(e),O(!0)},disabled:S,readOnlyFields:i})})]})})]})};exports.Scheduler=N,exports.SchedulerDrawerButton=F,exports.SchedulersList=Y,exports.actionField=J,exports.indexColumn=q,exports.indexable=K,Object.keys(c).forEach(function(e){e!==`default`&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return c[e]}})});
package/dist/index.es.js CHANGED
@@ -1003,13 +1003,18 @@ var we = (e) => {
1003
1003
  _
1004
1004
  ]), U = H.length >= u, ne = b((e) => {
1005
1005
  I(JSON.parse(JSON.stringify(e))), P(!0), O(!1);
1006
- }, []), W = async () => {
1006
+ }, []), W = b(async () => {
1007
1007
  if (!(!F || !m)) try {
1008
1008
  await m(t, F), P(!1), I(null), O(!1), s?.();
1009
1009
  } catch (e) {
1010
1010
  console.error("Failed to update scheduler:", e);
1011
1011
  }
1012
- }, K = b(async (e) => {
1012
+ }, [
1013
+ F,
1014
+ m,
1015
+ t,
1016
+ s
1017
+ ]), K = b(async (e) => {
1013
1018
  if (e.id?.startsWith("new-")) {
1014
1019
  x((t) => {
1015
1020
  let n = new Set(t);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamco/ischeduler-mui",
3
- "version": "2.0.16",
3
+ "version": "2.0.17",
4
4
  "description": "iScheduler UI components for React + MUI (Material UI)",
5
5
  "license": "MIT",
6
6
  "repository": {