@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.15 kB
JavaScript
/**
* @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 P=require("react"),U=require("prop-types"),$=require("../../components/BaseView.js"),b=require("../common/VerticalResourceIterator.js"),c=require("../../messages/index.js"),L=require("../../constants/index.js"),s=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 r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const n=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(r,a,n.get?n:{enumerable:!0,get:()=>t[a]})}}return r.default=t,Object.freeze(r)}const e=Z(P),q=t=>{const{group:r,timezone:a,resources:n}=D.useSchedulerPropsContext(),T=t.editTask||Y.SchedulerEditTask,f=t.editSlot||G.SchedulerEditSlot,m=e.useRef(null),i=N.useDir(m),u=V.useInternationalization(),d=V.useLocalization(),[v]=D.useSchedulerDataContext(),y=D.useSchedulerGroupsContext(),A=D.useSchedulerFieldsContext(),l=D.useSchedulerDateRangeContext(),g=e.useMemo(()=>j.toRanges(l,{step:s.MS_PER_DAY,timezone:a}),[l.start.getTime(),l.end.getTime(),a]),h=e.useMemo(()=>K.toSlots(l,{step:s.MS_PER_DAY},{groups:y,ranges:g}),[l.start.getTime(),l.end.getTime(),a,y,g]),_=e.useMemo(()=>W.toOccurrences(v,{dateRange:l,fields:A,timezone:a}),[v,l.start.getTime(),l.end.getTime(),A,a]),k=e.useMemo(()=>F.toItems(_,{timezone:a},{groups:y,ranges:g}),[_,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(b.VerticalResourceIterator,{resources:n,group:r},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(c.dateTitle,c.messages[c.dateTitle])),e.createElement("div",{className:"k-scheduler-cell k-heading-cell k-group-cell k-scheduler-timecolumn"},d.toLanguageString(c.timeTitle,c.messages[c.timeTitle])),e.createElement("div",{className:"k-scheduler-cell k-heading-cell k-scheduler-eventcolumn"},d.toLanguageString(c.eventTitle,c.messages[c.eventTitle])))))),e.createElement("div",{className:"k-scheduler-body"},e.createElement(b.VerticalResourceIterator,{resources:n,group:r,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(f,{...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,I)=>e.createElement("div",{className:"k-scheduler-row",key:I},e.createElement("div",{className:"k-scheduler-cell k-scheduler-timecolumn"},e.createElement("div",null,E.tail&&e.createElement(N.IconWrap,{name:i==="rtl"?"caret-alt-right":"caret-alt-left",icon:i==="rtl"?w.caretAltRightIcon:w.caretAltLeftIcon}),E.isAllDay?d.toLanguageString(c.allDay,c.messages[c.allDay]):B(u,E),E.head&&e.createElement(N.IconWrap,{name:i==="rtl"?"caret-alt-left":"caret-alt-right",icon:i==="rtl"?w.caretAltLeftIcon:w.caretAltRightIcon}))),e.createElement("div",{className:"k-scheduler-cell"},e.createElement(T,{key:`${C}:${I}`,...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(c.noEvents,c.messages[c.noEvents])))))))))},B=(t,r)=>{let a="{0:t}-{1:t}";return r.head?a="{0:t}":r.tail&&(a="{1:t}"),t.format(a,r.zonedStart,r.zonedEnd)},x=t=>s.getDate(t),H=(t,r)=>s.getDate(s.addDays(t,r||1)),J=({intl:t,date:r,numberOfDays:a=1,timezone:n})=>{const T=s.ZonedDate.fromLocalDate(r,n),f=a===L.DAYS_IN_WEEK_COUNT?x(s.firstDayInWeek(T,t.firstDay())):x(T),m=H(f,a),i=s.ZonedDate.fromUTCDate(R.toUTCDateTime(f),n),u=s.ZonedDate.fromUTCDate(R.toUTCDateTime(m),n),d=new Date(i.getTime()),v=new Date(u.getTime());return{start:d,end:v,zonedStart:i,zonedEnd:u}},Q={name:"agenda",title:t=>t.toLanguageString(c.agendaViewTitle,c.messages[c.agendaViewTitle]),dateRange:J,selectedDateFormat:"{0:D} - {1:D}",selectedShortDateFormat:"{0:d} - {1:d}",slotDuration:60*24,slotDivision:1,numberOfDays:L.DAYS_IN_WEEK_COUNT},X={title:U.any};q.propTypes=X;q.displayName="KendoReactSchedulerAgendaView";exports.AgendaView=q;exports.agendaViewDefaultProps=Q;