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) 6.14 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 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 P=require("react"),U=require("prop-types"),$=require("../../components/BaseView.js"),A=require("../common/VerticalResourceIterator.js"),n=require("../../messages/index.js"),L=require("../../constants/index.js"),l=require("@progress/kendo-date-math"),N=require("@progress/kendo-react-common"),V=require("@progress/kendo-react-intl"),j=require("../../services/rangeService.js"),W=require("../../services/occurrenceService.js"),F=require("../../services/itemsService.js"),R=require("../../utils/index.js"),Y=require("../../tasks/SchedulerEditTask.js"),G=require("../../slots/SchedulerEditSlot.js"),D=require("../../context/SchedulerContext.js"),M=require("../../context/SchedulerResourceIteratorContext.js"),w=require("@progress/kendo-svg-icons"),K=require("../../services/slotsService.js"),z=require("../../hooks/useCellSync.js");function Z(t){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(c,a,r.get?r:{enumerable:!0,get:()=>t[a]})}}return c.default=t,Object.freeze(c)}const e=Z(P),q=t=>{const{group:c,timezone:a,resources:r}=D.useSchedulerPropsContext(),T=t.editTask||Y.SchedulerEditTask,v=t.editSlot||G.SchedulerEditSlot,m=e.useRef(null),i=N.useDir(m),u=V.useInternationalization(),d=V.useLocalization(),[f]=D.useSchedulerDataContext(),y=D.useSchedulerGroupsContext(),_=D.useSchedulerFieldsContext(),s=D.useSchedulerDateRangeContext(),g=e.useMemo(()=>j.toRanges(s,{step:l.MS_PER_DAY,timezone:a}),[s.start.getTime(),s.end.getTime(),a]),h=e.useMemo(()=>K.toSlots(s,{step:l.MS_PER_DAY},{groups:y,ranges:g}),[s.start.getTime(),s.end.getTime(),a,y,g]),I=e.useMemo(()=>W.toOccurrences(f,{dateRange:s,fields:_,timezone:a}),[f,s.start.getTime(),s.end.getTime(),_,a]),k=e.useMemo(()=>F.toItems(I,{timezone:a},{groups:y,ranges:g}),[I,a,y,g]),p=e.useMemo(()=>N.classNames("k-scheduler-agendaview",t.className),[t.className]);return z.useCellSync({element:m,selector:".k-scheduler-datecolumn",explicitDepth:!1}),z.useCellSync({element:m,selector:".k-scheduler-timecolumn",explicitDepth:!1}),e.useMemo(()=>R.mapItemsToSlots(k,h,!0),[k,h]),e.useMemo(()=>R.mapSlotsToItems(k,h,!0),[k,h]),e.createElement($.BaseView,{ref:m,id:t.id,style:t.style,className:p,props:t,slots:k,ranges:g},e.createElement("div",{className:"k-scheduler-head"},e.createElement(A.VerticalResourceIterator,{resources:r,group:c},e.createElement(M.SchedulerResourceIteratorContext.Consumer,null,({groupIndex:S})=>e.createElement("div",{className:"k-scheduler-row",key:S},e.createElement("div",{className:"k-scheduler-cell k-heading-cell k-group-cell k-scheduler-datecolumn"},d.toLanguageString(n.dateTitle,n.messages[n.dateTitle])),e.createElement("div",{className:"k-scheduler-cell k-heading-cell k-group-cell k-scheduler-timecolumn"},d.toLanguageString(n.timeTitle,n.messages[n.timeTitle])),e.createElement("div",{className:"k-scheduler-cell k-heading-cell k-scheduler-eventcolumn"},d.toLanguageString(n.eventTitle,n.messages[n.eventTitle])))))),e.createElement("div",{className:"k-scheduler-body"},e.createElement(A.VerticalResourceIterator,{resources:r,group:c,nested:!0},e.createElement(M.SchedulerResourceIteratorContext.Consumer,null,({groupIndex:S})=>h.filter(o=>o.group.index===(S||0)).map((o,C,O)=>e.createElement("div",{className:"k-scheduler-row k-scheduler-content",key:`${S}:${C}`},e.createElement(v,{...o,editable:t.editable,row:O.length*(S||0)+C,col:0,slot:t.slot,viewSlot:t.viewSlot,className:"k-scheduler-datecolumn k-group-cell"},e.createElement("div",null,e.createElement("strong",{className:"k-scheduler-agendaday"},u.formatDate(o.zonedStart,"dd")),e.createElement("em",{className:"k-scheduler-agendaweek"},u.formatDate(o.zonedStart,"EEEE")),e.createElement("span",{className:"k-scheduler-agendadate"},u.formatDate(o.zonedStart,"y")))),e.createElement("div",{className:"k-scheduler-cell k-group-content"},o.items.length?o.items.map((E,b)=>e.createElement("div",{className:"k-scheduler-row",key:b},e.createElement("div",{className:"k-scheduler-cell k-scheduler-timecolumn"},e.createElement("div",null,E.tail&&e.createElement(N.IconWrap,{name:i==="rtl"?"chevron-right":"chevron-left",icon:i==="rtl"?w.chevronRightIcon:w.chevronLeftIcon}),E.isAllDay?d.toLanguageString(n.allDay,n.messages[n.allDay]):B(u,E),E.head&&e.createElement(N.IconWrap,{name:i==="rtl"?"chevron-left":"chevron-right",icon:i==="rtl"?w.chevronLeftIcon:w.chevronRightIcon}))),e.createElement("div",{className:"k-scheduler-cell"},e.createElement(T,{key:`${C}:${b}`,...E,onDataAction:t.onDataAction,task:t.task,viewTask:t.viewTask,editable:t.editable})))):e.createElement("div",{className:"k-scheduler-cell k-heading-cell k-group-cell"},d.toLanguageString(n.noEvents,n.messages[n.noEvents])))))))))},B=(t,c)=>{let a="{0:t}-{1:t}";return c.head?a="{0:t}":c.tail&&(a="{1:t}"),t.format(a,c.zonedStart,c.zonedEnd)},x=t=>l.getDate(t),H=(t,c)=>l.getDate(l.addDays(t,c||1)),J=({intl:t,date:c,numberOfDays:a=1,timezone:r})=>{const T=l.ZonedDate.fromLocalDate(c,r),v=a===L.DAYS_IN_WEEK_COUNT?x(l.firstDayInWeek(T,t.firstDay())):x(T),m=H(v,a),i=l.ZonedDate.fromUTCDate(R.toUTCDateTime(v),r),u=l.ZonedDate.fromUTCDate(R.toUTCDateTime(m),r),d=new Date(i.getTime()),f=new Date(u.getTime());return{start:d,end:f,zonedStart:i,zonedEnd:u}},Q={name:"agenda",title:t=>t.toLanguageString(n.agendaViewTitle,n.messages[n.agendaViewTitle]),dateRange:J,selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}",slotDuration:1440,slotDivision:1,numberOfDays:L.DAYS_IN_WEEK_COUNT},X={title:U.any};q.propTypes=X;q.displayName="KendoReactSchedulerAgendaView";exports.AgendaView=q;exports.agendaViewDefaultProps=Q;