UNPKG

@progress/kendo-vue-dateinputs

Version:
9 lines (8 loc) 5.13 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 i=require("vue"),b=require("@progress/kendo-vue-intl"),p=require("@progress/kendo-date-math"),l=require("@progress/kendo-vue-buttons"),V=require("./CalendarHeaderTitle.js"),n=require("../../messages/main.js"),o=require("../models/NavigationAction.js"),s=require("../../utils.js"),C=require("../../defaults.js"),a=require("@progress/kendo-vue-common"),c=require("@progress/kendo-svg-icons");function u(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!i.isVNode(e)}const N=i.defineComponent({name:"KendoCalendarHeader",inheritAttrs:!1,inject:{kendoLocalizationService:{default:null}},emits:["titleclick","todayclick","nextclick","prevclick"],props:{activeView:{type:Number,required:!0},currentDate:{type:Date,required:!0},focusedDate:{type:Date,required:!0},headerTitle:{type:[String,Object,Function],default:function(){}},max:{type:Date,default:function(){return s.MAX_DATE}},min:{type:Date,default:function(){return C.MIN_DATE}},bus:Object,service:Object,rangeLength:{type:Number,default:1},tabIndex:{type:Number,default:0},onTodayClick:Function,onNextClick:Function,onPrevClick:Function,onTitleClick:Function},data(){return{currentRtl:!1}},mounted(){this.currentRtl=a.isRtl(this.$el)},computed:{navigate(){return this.$props.bus.canMoveUp(this.$props.activeView)},todayIsInRange(){return s.isInRange(s.getToday(),p.getDate(this.$props.min),p.getDate(this.$props.max))}},methods:{getTitle(){if(!this.$props.currentDate)return"";const e=this.$props.rangeLength-1,t=this.$props.service.title(this.$props.currentDate),r=this.$props.service.addToDate(this.$props.currentDate,e);return e<1||!this.$props.service.isInRange(r,this.$props.min,this.$props.max)?t:`${t} - ${this.$props.service.title(r)}`},handleTitleClick(e){this.navigate&&(this.$props.bus.moveUp(this.$props.activeView,e),this.$emit("titleclick",e))},canNavigate(e){if(!this.$props.service)return!1;const t=this.$props.service.move(this.$props.focusedDate,e);return this.$props.min<=t&&t<=this.$props.max||this.$props.service.isInSameView(t,this.$props.min)||this.$props.service.isInSameView(t,this.$props.max)},move(e){return this.clampDate(this.$props.service.move(this.$props.focusedDate,e))},clampDate(e){return s.dateInRange(e,this.$props.min,this.$props.max)},handleNextClick(e){const t={event:e,value:this.move(o.Action.NextView),target:this};this.$emit("nextclick",t)},handlePrevClick(e){const t={event:e,value:this.move(o.Action.PrevView),target:this};this.$emit("prevclick",t)},handleTodayClick(e){if(!this.todayIsInRange)return;this.$props.bus.moveToBottom(this.$props.activeView);const t={event:e,value:s.dateInRange(s.getToday(),this.$props.min,this.$props.max),target:this};this.$emit("todayclick",t)},todayKeyDown(e){const{keyCode:t}=e;t===a.Keys.enter&&this.handleTodayClick(e)}},setup(){return{kendoLocalizationService:i.inject("kendoLocalizationService",{})}},render(){this._localization=b.provideLocalizationService(this);const e=this._localization.toLanguageString(n.today,n.messages[n.today]),t=this.getTitle(),r=this._localization.toLanguageString(n.prevView,n.messages[n.prevView]),d=this._localization.toLanguageString(n.nextView,n.messages[n.nextView]),v=!this.canNavigate(o.Action.PrevView),g=!this.canNavigate(o.Action.NextView),m=a.classNames("k-calendar-title",{"k-disabled":!this.navigate}),k=a.classNames("k-calendar-nav-today",{"k-disabled":!this.todayIsInRange});let h;const $=i.createVNode(V.CalendarHeaderTitle,{value:t,view:this.$props.activeView,class:m,onClick:this.handleTitleClick},u(t)?t:{default:()=>[t]});h=a.getTemplate.call(this,{h:i.h,template:this.$props.headerTitle,defaultRendering:$});const f=i.createVNode(l.Button,{fillMode:"flat",themeColor:"base",class:k,tabIndex:this.$props.tabIndex,onKeydown:this.todayKeyDown,onClick:this.handleTodayClick},u(e)?e:{default:()=>[e]}),y=a.getTemplate.call(this,{h:i.h,defaultRendering:f});return i.createVNode("div",{class:"k-calendar-header k-hstack",style:this.$attrs.style},[h,i.createVNode("span",{class:"k-spacer"},null),i.createVNode("span",{class:"k-calendar-nav k-hstack"},[i.createVNode(l.Button,{type:"button",icon:this.currentRtl?"chevron-right":"chevron-left",svgIcon:this.currentRtl?c.chevronRightIcon:c.chevronLeftIcon,size:this.$props.size,fillMode:"flat",class:"k-calendar-nav-pre",disabled:v,"aria-label":r,title:r,onClick:this.handlePrevClick},null),y,i.createVNode(l.Button,{type:"button",icon:this.currentRtl?"chevron-left":"chevron-right",svgIcon:this.currentRtl?c.chevronLeftIcon:c.chevronRightIcon,size:this.$props.size,fillMode:"flat",class:"k-calendar-nav-next",disabled:g,"aria-label":d,title:d,onClick:this.handleNextClick},null)])])}});exports.Header=N;