UNPKG

@progress/kendo-react-scheduler

Version:

React Scheduler brings the functionality of Outlook's Calendar to a single UI component. KendoReact Scheduler package

9 lines (8 loc) 5.77 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("react"),j=require("prop-types"),B=require("../../components/BaseView.js"),s=require("@progress/kendo-date-math"),_=require("@progress/kendo-react-common"),z=require("../common/VerticalResourceIterator.js"),O=require("../common/HorizontalResourceIterator.js"),D=require("../../utils/index.js"),q=require("../../messages/index.js"),F=require("../../slots/SchedulerEditSlot.js"),W=require("@progress/kendo-react-intl"),p=require("../../constants/index.js"),K=require("../../services/rangeService.js"),Z=require("../../services/slotsService.js"),L=require("../../services/occurrenceService.js"),G=require("../../services/itemsService.js"),J=require("../../components/ShowMoreItemsButton.js"),Q=require("../../items/SchedulerEditItem.js"),d=require("../../context/SchedulerContext.js"),P=require("../../context/SchedulerResourceIteratorContext.js"),X=require("../../components/DateHeaderCell.js");function ee(e){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const i=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(c,o,i.get?i:{enumerable:!0,get:()=>e[o]})}}return c.default=e,Object.freeze(c)}const r=ee(U),te={skeleton:"dd"},I=e=>{const{group:c,timezone:o,resources:i}=d.useSchedulerPropsContext(),y=e.editItem||Q.SchedulerEditItem,f=e.editSlot||F.SchedulerEditSlot,[S]=d.useSchedulerDataContext(),[E,C]=d.useSchedulerDateContext(),[,k]=d.useSchedulerActiveViewContext(),b=d.useSchedulerViewsContext(),T=d.useSchedulerGroupsContext(),w=d.useSchedulerOrientationContext(),l=d.useSchedulerDateRangeContext(),$=W.useInternationalization(),x=d.useSchedulerFieldsContext(),M=e.itemsPerSlot||A.itemsPerSlot,m=r.useMemo(()=>K.toRanges(l,{step:s.MS_PER_DAY*p.DAYS_IN_WEEK_COUNT,timezone:o}),[l.start.getTime(),l.end.getTime(),o]),h=r.useMemo(()=>Z.toSlots(l,{step:s.MS_PER_DAY},{groups:T,ranges:m}),[l.start.getTime(),l.end.getTime(),T,m]),v=r.useMemo(()=>L.toOccurrences(S,{dateRange:l,fields:x,timezone:o}),[S,l.start.getTime(),l.end.getTime(),x,o]),g=r.useMemo(()=>G.toItems(v,{timezone:o},{groups:T,ranges:m}),[v,o,T,m]),Y=r.useCallback(t=>{const n=b.find(u=>u.props.name==="day");!k||!n||!n.props.name||!t.target.slot||(k(n.props.name,t),C(t.target.slot.start,t))},[k,b]);r.useMemo(()=>D.mapItemsToSlots(g,h,!0),[g,h]),r.useMemo(()=>D.mapSlotsToItems(g,h,!0),[g,h]);const V=r.createElement(P.SchedulerResourceIteratorContext.Consumer,null,({groupIndex:t})=>r.createElement("div",{className:"k-scheduler-row",key:t},h.filter(n=>n.group.index===t&&n.range.index===0).map((n,u)=>r.createElement(X.DateHeaderCell,{as:e.dateHeaderCell,key:u,"data-dayslot-index":u,date:s.ZonedDate.fromLocalDate(new Date(n.zonedEnd.getTime()-(n.zonedEnd.getTime()-n.zonedStart.getTime())/2),o),start:n.start,end:n.end,format:{skeleton:"EEEE"}})))),N=r.createElement(P.SchedulerResourceIteratorContext.Consumer,null,({groupIndex:t})=>m.map((n,u)=>r.createElement("div",{className:"k-scheduler-row",key:u},h.filter(a=>a.group.index===t&&a.range.index===u).map((a,R,H)=>r.createElement(f,{slot:e.slot,viewSlot:e.viewSlot,key:R,form:e.form,...a,expandable:{offsetTop:30,offsetBottom:M<a.items.length?15:0},onDataAction:e.onDataAction,col:w==="horizontal"?H.length*(t||0)+R:R,row:w==="horizontal"?u:m.length*(t||0)+u,editable:e.editable,className:_.classNames({"k-other-month":a.start.getMonth()<E.getMonth()||a.start.getMonth()>E.getMonth()})},r.createElement("span",{className:"k-link k-nav-day"},$.formatDate(new Date(a.end.getTime()-(a.end.getTime()-a.start.getTime())/2),te)),M<a.items.length&&r.createElement(J.ShowMoreItemsButton,{slot:a,onClick:Y}))))));return r.createElement(B.BaseView,{props:e,slots:h,ranges:m,className:_.classNames("k-scheduler-monthview",e.className)},r.createElement("div",{className:"k-scheduler-head"},w==="horizontal"?r.createElement(O.HorizontalResourceIterator,{nested:!0,resources:i,group:c},V):r.createElement(z.VerticalResourceIterator,{resources:i,group:c},V)),r.createElement("div",{className:"k-scheduler-body"},w==="horizontal"?r.createElement(O.HorizontalResourceIterator,{resources:i,group:c},N):r.createElement(z.VerticalResourceIterator,{nested:!0,resources:i,group:c},N),g.filter(t=>t.order===null||t.order<M).sort(D.orderSort).map(t=>r.createElement(y,{item:e.item,viewItem:e.viewItem,form:e.form,key:t.isRecurring?`${t.uid}:${t.group.index}:${t.range.index}:${t.originalStart}`:`${t.uid}:${t.group.index}:${t.range.index}`,...t,onDataAction:e.onDataAction,style:{transform:"translateY(30px)"},vertical:!1,editable:e.editable,ignoreIsAllDay:!0}))))},re=({intl:e,date:c,timezone:o})=>{const i=s.firstDayInWeek(s.firstDayOfMonth(s.getDate(c)),e.firstDay()),y=s.addDays(s.firstDayInWeek(s.lastDayOfMonth(s.getDate(c)),e.firstDay()),p.DAYS_IN_WEEK_COUNT),f=s.ZonedDate.fromUTCDate(D.toUTCDateTime(i),o),S=s.ZonedDate.fromUTCDate(D.toUTCDateTime(y),o),E=new Date(f.getTime()),C=new Date(S.getTime());return{start:E,end:C,zonedStart:f,zonedEnd:S}},A={name:"month",dateRange:re,slotDuration:24*60,slotDivision:1,itemsPerSlot:2,numberOfDays:31,title:e=>e.toLanguageString(q.monthViewTitle,q.messages[q.monthViewTitle]),selectedDateFormat:"{0:Y}",selectedShortDateFormat:"{0:Y}"},oe={itemsPerSlot:j.number};I.propTypes=oe;I.displayName="KendoReactSchedulerMonthView";exports.MonthView=I;exports.monthViewDefaultProps=A;