{"version":3,"sources":["webpack:///../../../src/components/VAlert/VAlert.ts","webpack:///../../../../src/components/VCalendar/mixins/times.ts","webpack:///../../../../src/components/VCalendar/modes/common.ts","webpack:///../../../../src/components/VCalendar/modes/stack.ts","webpack:///../../../../src/components/VCalendar/modes/column.ts","webpack:///../../../../src/components/VCalendar/modes/index.ts","webpack:///../../../../src/components/VCalendar/util/props.ts","webpack:///../../../../src/components/VCalendar/mixins/calendar-base.ts","webpack:///../../../../src/components/VCalendar/util/events.ts","webpack:///../../../../src/components/VCalendar/mixins/calendar-with-events.ts","webpack:///../../../src/components/VCalendar/VCalendarWeekly.ts","webpack:///../../../src/components/VCalendar/VCalendarMonthly.ts","webpack:///../../../../src/components/VCalendar/mixins/calendar-with-intervals.ts","webpack:///../../../src/components/VCalendar/VCalendarDaily.ts","webpack:///../../../../src/components/VCalendar/util/parser.ts","webpack:///../../../src/components/VCalendar/VCalendarCategory.ts","webpack:///../../../src/components/VCalendar/VCalendar.ts","webpack:///./src/views/comercial/calendario_agenda_comercial.vue","webpack:///src/views/comercial/calendario_agenda_comercial.vue","webpack:///./src/views/comercial/calendario_agenda_comercial.vue?675f","webpack:///./src/views/comercial/calendario_agenda_comercial.vue?cfe1","webpack:///../../../src/components/VRadioGroup/VRadioGroup.ts","webpack:///../../../src/components/VForm/VForm.ts","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/components/VRadioGroup/VRadio.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts","webpack:///./src/components/agenda/ConfirmarVisita.vue","webpack:///src/components/agenda/ConfirmarVisita.vue","webpack:///./src/components/agenda/ConfirmarVisita.vue?fffd","webpack:///./src/components/agenda/ConfirmarVisita.vue?9d4d","webpack:///../../../src/mixins/mouse/index.ts","webpack:///./src/views/comercial/calendario_agenda_comercial.vue?c737","webpack:///../../../src/mixins/selectable/index.ts"],"names":["mixins","VSheet","Toggleable","Transitionable","extend","name","props","border","type","String","validator","val","includes","closeLabel","default","coloredBorder","Boolean","dense","dismissible","closeIcon","icon","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","computedColor","$createElement","__cachedDismissible","color","iconColor","VBtn","small","attrs","$vuetify","lang","t","on","click","isActive","VIcon","__cachedIcon","computedIcon","classes","options","call","hasColoredIcon","hasText","undefined","isDark","Themeable","created","$attrs","hasOwnProperty","breaking","methods","genWrapper","children","getSlot","genContent","$scopedSlots","close","toggle","genAlert","role","listeners$","style","styles","directives","setColor","setTextColor","render","h","transition","origin","mode","Vue","now","validateTimestamp","times","parseTimestamp","today","parsedNow","watch","updateTimes","setPresent","present","past","future","getNow","updateDay","updateTime","parseDate","Date","target","date","year","month","day","weekday","time","hour","minute","MILLIS_IN_DAY","getVisuals","events","minStart","visuals","map","event","columnCount","column","left","width","sort","a","b","Math","max","startTimestampIdentifier","endTimestampIdentifier","hasOverlap","s0","e0","s1","e1","exclude","setColumnCount","groups","forEach","group","groupVisual","length","getRange","getDayRange","startIdentifier","endIdentifier","getNormalizedRange","dayStart","min","getOpenGroup","start","end","timed","i","intersected","k","groupStart","groupEnd","getOverlapGroupHandler","firstWeekday","handler","reset","dayEvents","getTimestampIdentifier","visual","targetGroup","push","FULL_WIDTH","DEFAULT_OFFSET","WIDTH_MULTIPLIER","stack","overlapThreshold","getGroups","nodes","child","getNode","index","getNextIndex","parent","getParent","sibling","addTime","getOverlappingRange","grand","grandNext","calculateBounds","node","columns","getMaxChildIndex","spaceLeft","spaceWidth","offset","columnWidthMultiplier","getColumnWidthMultiplier","columnOffset","columnWidth","hasFullWidth","maxColumn","minColumn","reduce","c","getOverlappingIndices","indices","other","indexMin","indexMax","returnFirstColumn","overlapping","first","n","filter","added","childMax","identifier","minutes","removeMinutes","totalMinutes","addHours","floor","addMinutes","CalendarEventOverlapModes","base","Number","validate","weekdays","Array","validateWeekdays","hideHeader","shortWeekdays","weekdayFormat","Function","dayFormat","intervals","maxDays","shortIntervals","intervalHeight","validateNumber","intervalWidth","intervalMinutes","firstInterval","firstTime","Object","validateTime","intervalCount","intervalFormat","intervalStyle","showIntervalLabel","weeks","localeFirstDayOfYear","minWeeks","shortMonths","showMonthOnFirst","showWeek","monthFormat","calendar","category","categories","categoryText","categoryHideDynamic","categoryShowAll","categoryForInvalid","categoryDays","x","isFinite","parseInt","eventStart","eventEnd","eventTimed","eventCategory","eventHeight","eventColor","eventTextColor","eventName","eventOverlapThreshold","eventOverlapMode","eventMore","eventMoreText","eventRipple","eventMarginBottom","input","split","isArray","ints","DAYS_IN_WEEK","visited","wrapped","d","Colorable","Localable","Mouse","Times","Resize","parsedWeekdays","weekdaySkips","getWeekdaySkips","weekdaySkipsReverse","reversed","slice","reverse","parsedStart","parsedEnd","days","createDayList","dayFormatter","timeZone","createNativeLocaleFormatter","currentLocale","_tms","_short","weekdayFormatter","longOptions","shortOptions","short","getRelativeClasses","timestamp","outside","getStartOfWeek","getEndOfWeek","getFormatter","locale","parseEvent","startProperty","endProperty","startInput","endInput","startParsed","endParsed","isTimedless","updateHasTime","getDayIdentifier","endOffset","hasTime","allDay","isEventOn","dayIdentifier","isEventHiddenOn","isEventStart","isEventOverlapping","WIDTH_FULL","WIDTH_START","MINUTES_IN_DAY","CalendarBase","ripple","noEvents","parsedEvents","parsedEventOverlapThreshold","eventTimedFunction","eventCategoryFunction","eventTextColorFunction","eventNameFunction","timedEvent","eventModeFunction","eventWeekdays","categoryMode","eventColorFunction","e","formatTime","withTime","ampm","formatter","updateEventVisibility","eventsMap","getEventsMap","more","parentBounds","getBoundingClientRect","last","eventsSorted","bottom","hidden","hide","display","innerHTML","elements","$refs","el","getAttribute","parentElement","genDayEvent","week","weekdayIdentifier","scope","eventParsed","genEvent","height","key","ref","refInFor","genTimedEvent","timeDelta","top","timeToY","scopeInput","slot","background","overlapsNoon","singline","diffMinutes","timeSummary","eventSummary","delimiter","getDefaultMouseEventHandlers","nativeEvent","_a","genName","genPlaceholder","genMore","getVisibleEvents","isEventForCategory","categoryName","getEventsForDay","getEventsForDayAll","getEventsForDayTimed","getScopedSlots","isNode","getSlotChildren","getter","mapper","mapped","slots","slotDay","slotDayHeader","slotDayBody","concat","themeClasses","parsedMinWeeks","minDays","MAX_SAFE_INTEGER","todayWeek","monthFormatter","isOutside","genHead","genHeadDays","header","genHeadDay","unshift","genWeeks","weekDays","genWeek","getWeekNumber","weekNumber","weekNodes","genDay","genWeekNumber","determineDay","genDayLabel","genDayLabelButton","hasMonth","fab","depressed","getMouseEventHandlers","stop","prevent","result","genDayMonth","dragstart","preventDefault","VCalendarWeekly","getStartOfMonth","getEndOfMonth","parsedFirstInterval","parsedIntervalMinutes","parsedIntervalCount","parsedIntervalHeight","parseFloat","parsedFirstTime","parseTime","firstMinute","bodyHeight","count","createIntervalList","intervalFormatter","shortHourOptions","tms","showIntervalLabelDefault","interval","isFirst","intervalStyleDefault","_interval","getTimestampAtEvent","copyTimestamp","bounds","currentTarget","baseMinutes","touchEvent","mouseEvent","touches","changedTouches","clientY","addIntervals","updateMinutes","getSlotScope","minutesToPixels","scrollToTime","y","pane","scrollArea","scrollTop","clamp","gap","CalendarWithIntervals","scrollPush","mounted","init","$nextTick","onResize","getScrollPush","area","offsetWidth","marginRight","genHeadIntervals","convertToUnit","genHeadWeekday","genHeadDayLabel","genDayHeader","genHeadDayButton","genBody","genScrollArea","genPane","genDayContainer","genBodyIntervals","genDays","genDayIntervals","genDayBody","genDayInterval","styler","genIntervalLabels","genIntervalLabel","shower","show","label","modifiers","quiet","parsedCategoryText","getParsedCategories","VCalendarDaily","parsedCategories","genDayHeaderCategory","getCategoryScope","cat","headerTitle","genDayHeaderCategoryTitle","j","fill","v","categoryIndex","genDayBodyCategory","CalendarWithEvents","lastStart","lastEnd","parsedValue","parsedCategoryDays","renderProps","around","component","VCalendarMonthly","relativeDays","nextDay","updateFormatted","VCalendarCategory","getCategoryList","Error","title","spanYears","spanMonths","monthShortFormatter","monthLongFormatter","checkChange","updated","window","requestAnimationFrame","$emit","move","amount","moved","forward","mover","prevDay","limit","DAYS_IN_MONTH_MAX","DAY_MIN","updateWeekday","updateRelative","timestampToDate","getTime","next","prev","$children","required","categoryMap","categoryLength","ev","$props","$listeners","click:date","scopedSlots","model","callback","expression","permisoRoles","_vm","filtro","dataFiltros","asesores","staticStyle","_c","$event","fn","_s","$$v","selectedElement","selectedOpen","_v","_e","selectedEvent","formatDate","correo","confirmar_visita","modalActualizar","datos_formulario","menuDate","fecha","inicia","$set","horariosFinal","rules","vacio","staticRenderFns","DateTime","components","LoadingIndicator","ConfirmarVisita","types","focus","horariosInicial","monthName","diaActual","toFormat","mesActual","toISO","loading","showInfo","agencias","dataAsesores","agencia","asesor","termina","observacion","expandFilter","loadingFiltros","rol","datosCalendarioAgendaVisitas","axiosInstance","get","params","then","res","item","retraso","rnd","catch","err","console","error","Swal","fire","finally","getClendarioFiltros","random","getEventColor","fromFormat","charAt","toUpperCase","toLowerCase","formatHour","period","formattedHour","horariosVisitas","horarios","hora","minuto","hora12","toString","padStart","hora24","getHorariosFinal","indexInicial","findIndex","_","closeEvent","showEvent","open","stopPropagation","getColorText","visitaConfirmada","actualizarDatosVista","actualizarVisita","form","put","id_agenda","id_estado","actualizarFechaVista","resetValidation","filtrarAsesores","find","mapState","informacion_usuario","id_cargo","baseMixins","BaseItemGroup","VInput","provide","radioGroup","row","genDefaultSlot","id","computedId","genInputSlot","genLabel","for","tag","onClick","vnode","_b","attrs$","BindsAttrs","RegistrableProvide","inheritAttrs","disabled","lazyValidation","readonly","inputs","watchers","errorBag","errors","values","deep","immediate","watchInput","watcher","$watch","_uid","valid","shouldValidate","resetErrorBag","setTimeout","register","unregister","found","unwatch","$delete","novalidate","submit","genRipple","center","Rippleable","GroupableFactory","offIcon","onIcon","isFocused","isDisabled","groupClasses","Selectable","hasLabel","hasState","isReadonly","computedName","rippleState","validationState","genInput","args","VLabel","focused","genRadio","radioAttrs","onFocus","onBlur","onChange","onKeydown","mergeListeners","VTextField","autoGrow","noResize","rowHeight","isNaN","rows","noResizeHandle","calculateInputHeight","removeProperty","lazyValue","scrollHeight","minHeight","onInput","onKeyDown","keyCode","defaultMenuProps","VSelectMenuProps","offsetY","offsetOverflow","VSelect","autoSelectFirst","queryText","itemText","toLocaleLowerCase","indexOf","hideNoData","menuProps","noFilter","searchInput","lazySearch","selectedIndex","computedItems","filteredItems","selectedValues","selectedItems","getValue","hasDisplayedItems","hideSelected","some","hasItem","currentRange","selectedItem","getText","isSearching","internalSearch","allItems","getPropertyFromItem","set","isAnyValueAllowed","isDirty","searchIsDirty","multiple","menuCanShow","$_menuProps","contentClass","trim","valueComparator","internalValue","listData","items","virtualizedItems","document","addEventListener","onCopy","select","removeEventListener","blur","updateSelf","isMenuActive","hasSlot","oldVal","activateMenu","setSearch","destroyed","onFilteredItemsChanged","preSelectedItem","menu","listIndex","setMenuIndex","getTiles","onInternalSearchChanged","updateMenuDimensions","updateDimensions","changeSelectedIndex","keyCodes","right","backspace","delete","deleteCurrentItem","curIndex","curItem","isInteractive","getDisabled","lastIndex","nextIndex","nextItem","selectItem","setValue","clearableCallback","mergeData","getObjectValueByPath","autocomplete","domProps","genSelections","isAppendInner","badInput","validity","ctrlKey","home","onSpaceDown","onTabDown","onUpDown","setSelectedItems","currentItem","currentItemText","clipboardData","setData","arguments","radioButtons","data_form","selectProductos","closeShowConfirmarVisita","muestras","estado_visita","tipo","id_usuario","showConfirmarVisita","productos","interes_producto","productos_visita","catalogo","muestra","tipo_muestra","selectMuestra","usuario_correo","token","confirmarVisita","localStorage","getItem","agendarVisita","formConfirmar","post","log","openShowConfirmarVisita","obtenerProductos","config","headers","suffix","getData","eventFirst","listeners","keys","endsWith","acc","eventOptions","prefix","passive","once","capture","button","buttons","classSeparator","eventTargetClasses","className","currentTargets","elementsFromPoint","clientX","isSameNode","dispatchEvent","TouchEvent","targetTouches","Comparable","prop","inputValue","falseValue","trueValue","hasColor","appIsDark","isMultiple","assign","checked","change","keydown"],"mappings":"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","file":"js/chunk-184a1859.ba1f8057.js","sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n getSlot(this, 'prepend') || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n getSlot(this, 'append'),\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, getSlot(this))\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","import Vue from 'vue'\n\nimport {\n validateTimestamp,\n parseTimestamp,\n parseDate,\n} from '../util/timestamp'\nimport { CalendarTimestamp } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'times',\n\n props: {\n now: {\n type: String,\n validator: validateTimestamp,\n },\n },\n\n data: () => ({\n times: {\n now: parseTimestamp('0000-00-00 00:00', true),\n today: parseTimestamp('0000-00-00', true),\n },\n }),\n\n computed: {\n parsedNow (): CalendarTimestamp | null {\n return this.now ? parseTimestamp(this.now, true) : null\n },\n },\n\n watch: {\n parsedNow: 'updateTimes',\n },\n\n created () {\n this.updateTimes()\n this.setPresent()\n },\n\n methods: {\n setPresent (): void {\n this.times.now.present = this.times.today.present = true\n this.times.now.past = this.times.today.past = false\n this.times.now.future = this.times.today.future = false\n },\n updateTimes (): void {\n const now: CalendarTimestamp = this.parsedNow || this.getNow()\n this.updateDay(now, this.times.now)\n this.updateTime(now, this.times.now)\n this.updateDay(now, this.times.today)\n },\n getNow (): CalendarTimestamp {\n return parseDate(new Date())\n },\n updateDay (now: CalendarTimestamp, target: CalendarTimestamp): void {\n if (now.date !== target.date) {\n target.year = now.year\n target.month = now.month\n target.day = now.day\n target.weekday = now.weekday\n target.date = now.date\n }\n },\n updateTime (now: CalendarTimestamp, target: CalendarTimestamp): void {\n if (now.time !== target.time) {\n target.hour = now.hour\n target.minute = now.minute\n target.time = now.time\n }\n },\n },\n})\n","import { CalendarEventParsed, CalendarEventVisual, CalendarTimestamp } from 'vuetify/types'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\nconst MILLIS_IN_DAY = 86400000\n\nexport type GetRange = (event: CalendarEventParsed) => [number, number]\n\nexport function getVisuals (events: CalendarEventParsed[], minStart = 0): CalendarEventVisual[] {\n const visuals = events.map(event => ({\n event,\n columnCount: 0,\n column: 0,\n left: 0,\n width: 100,\n }))\n\n visuals.sort((a, b) => {\n return (Math.max(minStart, a.event.startTimestampIdentifier) - Math.max(minStart, b.event.startTimestampIdentifier)) ||\n (b.event.endTimestampIdentifier - a.event.endTimestampIdentifier)\n })\n\n return visuals\n}\n\nexport interface ColumnGroup {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\nexport function hasOverlap (s0: number, e0: number, s1: number, e1: number, exclude = true): boolean {\n return exclude ? !(s0 >= e1 || e0 <= s1) : !(s0 > e1 || e0 < s1)\n}\n\nexport function setColumnCount (groups: ColumnGroup[]) {\n groups.forEach(group => {\n group.visuals.forEach(groupVisual => {\n groupVisual.columnCount = groups.length\n })\n })\n}\n\nexport function getRange (event: CalendarEventParsed): [number, number] {\n return [event.startTimestampIdentifier, event.endTimestampIdentifier]\n}\n\nexport function getDayRange (event: CalendarEventParsed): [number, number] {\n return [event.startIdentifier, event.endIdentifier]\n}\n\nexport function getNormalizedRange (event: CalendarEventParsed, dayStart: number): [number, number] {\n return [Math.max(dayStart, event.startTimestampIdentifier), Math.min(dayStart + MILLIS_IN_DAY, event.endTimestampIdentifier)]\n}\n\nexport function getOpenGroup (groups: ColumnGroup[], start: number, end: number, timed: boolean) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n let intersected = false\n\n if (hasOverlap(start, end, group.start, group.end, timed)) {\n for (let k = 0; k < group.visuals.length; k++) {\n const groupVisual = group.visuals[k]\n const [groupStart, groupEnd] = timed ? getRange(groupVisual.event) : getDayRange(groupVisual.event)\n\n if (hasOverlap(start, end, groupStart, groupEnd, timed)) {\n intersected = true\n break\n }\n }\n }\n\n if (!intersected) {\n return i\n }\n }\n\n return -1\n}\n\nexport function getOverlapGroupHandler (firstWeekday: number) {\n const handler = {\n groups: [] as ColumnGroup[],\n min: -1,\n max: -1,\n reset: () => {\n handler.groups = []\n handler.min = handler.max = -1\n },\n getVisuals: (day: CalendarTimestamp, dayEvents: CalendarEventParsed[], timed: boolean, reset = false) => {\n if (day.weekday === firstWeekday || reset) {\n handler.reset()\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n\n visuals.forEach(visual => {\n const [start, end] = timed ? getRange(visual.event) : getDayRange(visual.event)\n\n if (handler.groups.length > 0 && !hasOverlap(start, end, handler.min, handler.max, timed)) {\n setColumnCount(handler.groups)\n handler.reset()\n }\n\n let targetGroup = getOpenGroup(handler.groups, start, end, timed)\n\n if (targetGroup === -1) {\n targetGroup = handler.groups.length\n\n handler.groups.push({ start, end, visuals: [] })\n }\n\n const target = handler.groups[targetGroup]\n target.visuals.push(visual)\n target.start = Math.min(target.start, start)\n target.end = Math.max(target.end, end)\n\n visual.column = targetGroup\n\n if (handler.min === -1) {\n handler.min = start\n handler.max = end\n } else {\n handler.min = Math.min(handler.min, start)\n handler.max = Math.max(handler.max, end)\n }\n })\n\n setColumnCount(handler.groups)\n\n if (timed) {\n handler.reset()\n }\n\n return visuals\n },\n }\n\n return handler\n}\n","import { CalendarEventOverlapMode, CalendarEventVisual } from 'vuetify/types'\nimport { getOverlapGroupHandler, getVisuals, hasOverlap, getNormalizedRange } from './common'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\ninterface Group {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\ninterface Node {\n parent: Node | null\n sibling: boolean\n index: number\n visual: CalendarEventVisual\n start: number\n end: number\n children: Node[]\n}\n\nconst FULL_WIDTH = 100\n\nconst DEFAULT_OFFSET = 5\n\nconst WIDTH_MULTIPLIER = 1.7\n\n/**\n * Variation of column mode where events can be stacked. The priority of this\n * mode is to stack events together taking up the least amount of space while\n * trying to ensure the content of the event is always visible as well as its\n * start and end. A sibling column has intersecting event content and must be\n * placed beside each other. Non-sibling columns are offset by 5% from the\n * previous column. The width is scaled by 1.7 so the events overlap and\n * whitespace is reduced. If there is a hole in columns the event width is\n * scaled up so it intersects with the next column. The columns have equal\n * width in the space they are given. If the event doesn't have any to the\n * right of it that intersect with it's content it's right side is extended\n * to the right side.\n */\n\nexport const stack: CalendarEventOverlapMode = (events, firstWeekday, overlapThreshold) => {\n const handler = getOverlapGroupHandler(firstWeekday)\n\n // eslint-disable-next-line max-statements\n return (day, dayEvents, timed, reset) => {\n if (!timed) {\n return handler.getVisuals(day, dayEvents, timed, reset)\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n const groups = getGroups(visuals, dayStart)\n\n for (const group of groups) {\n const nodes: Node[] = []\n\n for (const visual of group.visuals) {\n const child = getNode(visual, dayStart)\n const index = getNextIndex(child, nodes)\n\n if (index === false) {\n const parent = getParent(child, nodes)\n if (parent) {\n child.parent = parent\n child.sibling = hasOverlap(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold))\n child.index = parent.index + 1\n parent.children.push(child)\n }\n } else {\n const [parent] = getOverlappingRange(child, nodes, index - 1, index - 1)\n const children = getOverlappingRange(child, nodes, index + 1, index + nodes.length, true)\n\n child.children = children\n child.index = index\n\n if (parent) {\n child.parent = parent\n child.sibling = hasOverlap(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold))\n parent.children.push(child)\n }\n\n for (const grand of children) {\n if (grand.parent === parent) {\n grand.parent = child\n }\n\n const grandNext = grand.index - child.index <= 1\n if (grandNext && child.sibling &&\n hasOverlap(child.start, addTime(child.start, overlapThreshold), grand.start, grand.end)) {\n grand.sibling = true\n }\n }\n }\n\n nodes.push(child)\n }\n\n calculateBounds(nodes, overlapThreshold)\n }\n\n visuals.sort((a, b) => (a.left - b.left) || (a.event.startTimestampIdentifier - b.event.startTimestampIdentifier))\n\n return visuals\n }\n}\n\nfunction calculateBounds (nodes: Node[], overlapThreshold: number) {\n for (const node of nodes) {\n const { visual, parent } = node\n const columns = getMaxChildIndex(node) + 1\n const spaceLeft = parent ? parent.visual.left : 0\n const spaceWidth = FULL_WIDTH - spaceLeft\n const offset = Math.min(DEFAULT_OFFSET, FULL_WIDTH / columns)\n const columnWidthMultiplier = getColumnWidthMultiplier(node, nodes)\n const columnOffset = spaceWidth / (columns - node.index + 1)\n const columnWidth = spaceWidth / (columns - node.index + (node.sibling ? 1 : 0)) * columnWidthMultiplier\n\n if (parent) {\n visual.left = node.sibling\n ? spaceLeft + columnOffset\n : spaceLeft + offset\n }\n\n visual.width = hasFullWidth(node, nodes, overlapThreshold)\n ? FULL_WIDTH - visual.left\n : Math.min(FULL_WIDTH - visual.left, columnWidth * WIDTH_MULTIPLIER)\n }\n}\n\nfunction getColumnWidthMultiplier (node: Node, nodes: Node[]): number {\n if (!node.children.length) {\n return 1\n }\n\n const maxColumn = node.index + nodes.length\n const minColumn = node.children.reduce((min, c) => Math.min(min, c.index), maxColumn)\n\n return minColumn - node.index\n}\n\nfunction getOverlappingIndices (node: Node, nodes: Node[]): number[] {\n const indices: number[] = []\n for (const other of nodes) {\n if (hasOverlap(node.start, node.end, other.start, other.end)) {\n indices.push(other.index)\n }\n }\n return indices\n}\n\nfunction getNextIndex (node: Node, nodes: Node[]): number | false {\n const indices = getOverlappingIndices(node, nodes)\n indices.sort()\n\n for (let i = 0; i < indices.length; i++) {\n if (i < indices[i]) {\n return i\n }\n }\n return false\n}\n\nfunction getOverlappingRange (node: Node, nodes: Node[], indexMin: number, indexMax: number, returnFirstColumn = false): Node[] {\n const overlapping: Node[] = []\n for (const other of nodes) {\n if (other.index >= indexMin && other.index <= indexMax && hasOverlap(node.start, node.end, other.start, other.end)) {\n overlapping.push(other)\n }\n }\n if (returnFirstColumn && overlapping.length > 0) {\n const first = overlapping.reduce((min, n) => Math.min(min, n.index), overlapping[0].index)\n return overlapping.filter(n => n.index === first)\n }\n return overlapping\n}\n\nfunction getParent (node: Node, nodes: Node[]): Node | null {\n let parent: Node | null = null\n for (const other of nodes) {\n if (hasOverlap(node.start, node.end, other.start, other.end) && (parent === null || other.index > parent.index)) {\n parent = other\n }\n }\n return parent\n}\n\nfunction hasFullWidth (node: Node, nodes: Node[], overlapThreshold: number): boolean {\n for (const other of nodes) {\n if (other !== node &&\n other.index > node.index &&\n hasOverlap(node.start, addTime(node.start, overlapThreshold), other.start, other.end)) {\n return false\n }\n }\n\n return true\n}\n\nfunction getGroups (visuals: CalendarEventVisual[], dayStart: number): Group[] {\n const groups: Group[] = []\n\n for (const visual of visuals) {\n const [start, end] = getNormalizedRange(visual.event, dayStart)\n let added = false\n\n for (const group of groups) {\n if (hasOverlap(start, end, group.start, group.end)) {\n group.visuals.push(visual)\n group.end = Math.max(group.end, end)\n added = true\n break\n }\n }\n\n if (!added) {\n groups.push({ start, end, visuals: [visual] })\n }\n }\n\n return groups\n}\n\nfunction getNode (visual: CalendarEventVisual, dayStart: number): Node {\n const [start, end] = getNormalizedRange(visual.event, dayStart)\n\n return {\n parent: null,\n sibling: true,\n index: 0,\n visual,\n start,\n end,\n children: [],\n }\n}\n\nfunction getMaxChildIndex (node: Node): number {\n let max = node.index\n for (const child of node.children) {\n const childMax = getMaxChildIndex(child)\n if (childMax > max) {\n max = childMax\n }\n }\n return max\n}\n\nfunction addTime (identifier: number, minutes: number): number {\n const removeMinutes = identifier % 100\n const totalMinutes = removeMinutes + minutes\n const addHours = Math.floor(totalMinutes / 60)\n const addMinutes = totalMinutes % 60\n\n return identifier - removeMinutes + addHours * 100 + addMinutes\n}\n","import { CalendarEventOverlapMode } from 'vuetify/types'\nimport { getOverlapGroupHandler } from './common'\n\nconst FULL_WIDTH = 100\n\nexport const column: CalendarEventOverlapMode = (events, firstWeekday, overlapThreshold) => {\n const handler = getOverlapGroupHandler(firstWeekday)\n\n return (day, dayEvents, timed, reset) => {\n const visuals = handler.getVisuals(day, dayEvents, timed, reset)\n\n if (timed) {\n visuals.forEach(visual => {\n visual.left = visual.column * FULL_WIDTH / visual.columnCount\n visual.width = FULL_WIDTH / visual.columnCount\n })\n }\n\n return visuals\n }\n}\n","import { CalendarEventOverlapMode } from 'vuetify/types'\nimport { stack } from './stack'\nimport { column } from './column'\n\nexport const CalendarEventOverlapModes: Record = {\n stack,\n column,\n}\n","\nimport { validateTimestamp, parseDate, DAYS_IN_WEEK, validateTime } from './timestamp'\nimport { PropType } from 'vue'\nimport { CalendarEvent, CalendarFormatter, CalendarTimestamp, CalendarEventOverlapMode, CalendarEventNameFunction, CalendarEventColorFunction, CalendarEventCategoryFunction, CalendarEventTimedFunction, CalendarCategoryTextFunction, CalendarCategory } from 'vuetify/types'\nimport { CalendarEventOverlapModes } from '../modes'\nimport { PropValidator } from 'vue/types/options'\n\nexport default {\n base: {\n start: {\n type: [String, Number, Date],\n validate: validateTimestamp,\n default: () => parseDate(new Date()).date,\n },\n end: {\n type: [String, Number, Date],\n validate: validateTimestamp,\n },\n weekdays: {\n type: [Array, String] as PropType,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n validate: validateWeekdays,\n },\n hideHeader: {\n type: Boolean,\n },\n shortWeekdays: {\n type: Boolean,\n default: true,\n },\n weekdayFormat: {\n type: Function as PropType,\n default: null,\n },\n dayFormat: {\n type: Function as PropType,\n default: null,\n },\n },\n intervals: {\n maxDays: {\n type: Number,\n default: 7,\n },\n shortIntervals: {\n type: Boolean,\n default: true,\n },\n intervalHeight: {\n type: [Number, String],\n default: 48,\n validate: validateNumber,\n },\n intervalWidth: {\n type: [Number, String],\n default: 60,\n validate: validateNumber,\n },\n intervalMinutes: {\n type: [Number, String],\n default: 60,\n validate: validateNumber,\n },\n firstInterval: {\n type: [Number, String],\n default: 0,\n validate: validateNumber,\n },\n firstTime: {\n type: [Number, String, Object],\n validate: validateTime,\n },\n intervalCount: {\n type: [Number, String],\n default: 24,\n validate: validateNumber,\n },\n intervalFormat: {\n type: Function as PropType,\n default: null,\n },\n intervalStyle: {\n type: Function as PropType<(interval: CalendarTimestamp) => object>,\n default: null,\n },\n showIntervalLabel: {\n type: Function as PropType<(interval: CalendarTimestamp) => boolean>,\n default: null,\n },\n },\n weeks: {\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n minWeeks: {\n validate: validateNumber,\n default: 1,\n },\n shortMonths: {\n type: Boolean,\n default: true,\n },\n showMonthOnFirst: {\n type: Boolean,\n default: true,\n },\n showWeek: Boolean,\n monthFormat: {\n type: Function as PropType,\n default: null,\n },\n },\n calendar: {\n type: {\n type: String,\n default: 'month',\n },\n value: {\n type: [String, Number, Date] as PropType,\n validate: validateTimestamp,\n },\n },\n category: {\n categories: {\n type: [Array, String] as PropType,\n default: '',\n },\n categoryText: {\n type: [String, Function] as PropType,\n },\n categoryHideDynamic: {\n type: Boolean,\n },\n categoryShowAll: {\n type: Boolean,\n },\n categoryForInvalid: {\n type: String,\n default: '',\n },\n categoryDays: {\n type: [Number, String],\n default: 1,\n validate: (x: any) => isFinite(parseInt(x)) && parseInt(x) > 0,\n },\n },\n events: {\n events: {\n type: Array,\n default: () => [],\n } as PropValidator,\n eventStart: {\n type: String,\n default: 'start',\n },\n eventEnd: {\n type: String,\n default: 'end',\n },\n eventTimed: {\n type: [String, Function] as PropType,\n default: 'timed',\n },\n eventCategory: {\n type: [String, Function] as PropType,\n default: 'category',\n },\n eventHeight: {\n type: Number,\n default: 20,\n },\n eventColor: {\n type: [String, Function] as PropType,\n default: 'primary',\n },\n eventTextColor: {\n type: [String, Function] as PropType,\n default: 'white',\n },\n eventName: {\n type: [String, Function] as PropType,\n default: 'name',\n },\n eventOverlapThreshold: {\n type: [String, Number],\n default: 60,\n },\n eventOverlapMode: {\n type: [String, Function],\n default: 'stack',\n validate: (mode: any) => mode in CalendarEventOverlapModes || typeof mode === 'function',\n } as PropValidator<'stack' | 'column' | CalendarEventOverlapMode>,\n eventMore: {\n type: Boolean,\n default: true,\n },\n eventMoreText: {\n type: String,\n default: '$vuetify.calendar.moreEvents',\n },\n eventRipple: {\n type: [Boolean, Object],\n default: null,\n },\n eventMarginBottom: {\n type: Number,\n default: 1,\n },\n },\n}\n\nexport function validateNumber (input: any): boolean {\n return isFinite(parseInt(input))\n}\n\nexport function validateWeekdays (input: string | (number | string)[]): boolean {\n if (typeof input === 'string') {\n input = input.split(',')\n }\n\n if (Array.isArray(input)) {\n const ints = input.map(x => parseInt(x))\n\n if (ints.length > DAYS_IN_WEEK || ints.length === 0) {\n return false\n }\n\n const visited: Record = {}\n let wrapped = false\n\n for (let i = 0; i < ints.length; i++) {\n const x = ints[i]\n\n if (!isFinite(x) || x < 0 || x >= DAYS_IN_WEEK) {\n return false\n }\n\n if (i > 0) {\n const d = x - ints[i - 1]\n if (d < 0) {\n if (wrapped) {\n return false\n }\n wrapped = true\n } else if (d === 0) {\n return false\n }\n }\n\n if (visited[x]) {\n return false\n }\n visited[x] = true\n }\n\n return true\n }\n\n return false\n}\n","\n// Mixins\nimport mixins from '../../../util/mixins'\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Mouse from '../../../mixins/mouse'\nimport Themeable from '../../../mixins/themeable'\nimport Times from './times'\n\n// Directives\nimport Resize from '../../../directives/resize'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTimestamp,\n getWeekdaySkips,\n createDayList,\n createNativeLocaleFormatter,\n getStartOfWeek,\n getEndOfWeek,\n getTimestampIdentifier,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\nexport default mixins(\n Colorable,\n Localable,\n Mouse,\n Themeable,\n Times\n/* @vue/component */\n).extend({\n name: 'calendar-base',\n\n directives: {\n Resize,\n },\n\n props: props.base,\n\n computed: {\n parsedWeekdays (): number[] {\n return Array.isArray(this.weekdays)\n ? this.weekdays\n : (this.weekdays || '').split(',').map(x => parseInt(x, 10))\n },\n weekdaySkips (): number[] {\n return getWeekdaySkips(this.parsedWeekdays)\n },\n weekdaySkipsReverse (): number [] {\n const reversed = this.weekdaySkips.slice()\n reversed.reverse()\n return reversed\n },\n parsedStart (): CalendarTimestamp {\n return parseTimestamp(this.start, true)\n },\n parsedEnd (): CalendarTimestamp {\n const start = this.parsedStart\n const end: CalendarTimestamp = this.end ? parseTimestamp(this.end) || start : start\n\n return getTimestampIdentifier(end) < getTimestampIdentifier(start) ? start : end\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips\n )\n },\n dayFormatter (): CalendarFormatter {\n if (this.dayFormat) {\n return this.dayFormat as CalendarFormatter\n }\n\n const options = { timeZone: 'UTC', day: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, _short) => options\n )\n },\n weekdayFormatter (): CalendarFormatter {\n if (this.weekdayFormat) {\n return this.weekdayFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', weekday: 'long' }\n const shortOptions = { timeZone: 'UTC', weekday: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n getRelativeClasses (timestamp: CalendarTimestamp, outside = false): object {\n return {\n 'v-present': timestamp.present,\n 'v-past': timestamp.past,\n 'v-future': timestamp.future,\n 'v-outside': outside,\n }\n },\n getStartOfWeek (timestamp: CalendarTimestamp): CalendarTimestamp {\n return getStartOfWeek(timestamp, this.parsedWeekdays, this.times.today)\n },\n getEndOfWeek (timestamp: CalendarTimestamp): CalendarTimestamp {\n return getEndOfWeek(timestamp, this.parsedWeekdays, this.times.today)\n },\n getFormatter (options: object): CalendarFormatter {\n return createNativeLocaleFormatter(\n this.locale,\n (_tms, _short) => options\n )\n },\n },\n})\n","import {\n parseTimestamp,\n getDayIdentifier,\n getTimestampIdentifier,\n isTimedless,\n updateHasTime,\n} from './timestamp'\nimport { CalendarTimestamp, CalendarEvent, CalendarEventParsed } from 'vuetify/types'\n\nexport function parseEvent (\n input: CalendarEvent,\n index: number,\n startProperty: string,\n endProperty: string,\n timed = false,\n category: string | false = false,\n): CalendarEventParsed {\n const startInput = input[startProperty]\n const endInput = input[endProperty]\n const startParsed: CalendarTimestamp = parseTimestamp(startInput, true)\n const endParsed: CalendarTimestamp = (endInput ? parseTimestamp(endInput, true) : startParsed)\n const start: CalendarTimestamp = isTimedless(startInput)\n ? updateHasTime(startParsed, timed)\n : startParsed\n const end: CalendarTimestamp = isTimedless(endInput)\n ? updateHasTime(endParsed, timed)\n : endParsed\n const startIdentifier: number = getDayIdentifier(start)\n const startTimestampIdentifier: number = getTimestampIdentifier(start)\n const endIdentifier: number = getDayIdentifier(end)\n const endOffset: number = start.hasTime ? 0 : 2359\n const endTimestampIdentifier: number = getTimestampIdentifier(end) + endOffset\n const allDay = !start.hasTime\n\n return { input, start, startIdentifier, startTimestampIdentifier, end, endIdentifier, endTimestampIdentifier, allDay, index, category }\n}\n\nexport function isEventOn (event: CalendarEventParsed, dayIdentifier: number): boolean {\n return dayIdentifier >= event.startIdentifier && dayIdentifier <= event.endIdentifier\n}\n\nexport function isEventHiddenOn (event: CalendarEventParsed, day: CalendarTimestamp): boolean {\n return event.end.time === '00:00' && event.end.date === day.date && event.start.date !== day.date\n}\n\nexport function isEventStart (event: CalendarEventParsed, day: CalendarTimestamp, dayIdentifier: number, firstWeekday: number): boolean {\n return dayIdentifier === event.startIdentifier || (firstWeekday === day.weekday && isEventOn(event, dayIdentifier))\n}\n\nexport function isEventOverlapping (event: CalendarEventParsed, startIdentifier: number, endIdentifier: number): boolean {\n return startIdentifier <= event.endIdentifier && endIdentifier >= event.startIdentifier\n}\n","// Styles\nimport './calendar-with-events.sass'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n// Directives\nimport ripple from '../../../directives/ripple'\n\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n CalendarEventOverlapModes,\n} from '../modes'\nimport {\n getDayIdentifier, diffMinutes,\n} from '../util/timestamp'\nimport {\n parseEvent,\n isEventStart,\n isEventOn,\n isEventOverlapping,\n isEventHiddenOn,\n} from '../util/events'\nimport {\n CalendarTimestamp,\n CalendarEventParsed,\n CalendarEventVisual,\n CalendarEventColorFunction,\n CalendarEventNameFunction,\n CalendarEventTimedFunction,\n CalendarDaySlotScope,\n CalendarDayBodySlotScope,\n CalendarEventOverlapMode,\n CalendarEvent,\n CalendarEventCategoryFunction,\n CalendarCategory,\n} from 'vuetify/types'\n\n// Types\ntype VEventGetter = (day: D) => CalendarEventParsed[]\n\ntype VEventVisualToNode = (visual: CalendarEventVisual, day: D) => VNode | false\n\ntype VEventsToNodes = (\n day: D,\n getter: VEventGetter,\n mapper: VEventVisualToNode,\n timed: boolean) => VNode[] | undefined\n\ntype VDailyEventsMap = {\n [date: string]: {\n parent: HTMLElement\n more: HTMLElement | null\n events: HTMLElement[]\n }\n}\n\ninterface VEventScopeInput {\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\nconst WIDTH_FULL = 100\nconst WIDTH_START = 95\nconst MINUTES_IN_DAY = 1440\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-events',\n\n directives: {\n ripple,\n },\n\n props: {\n ...props.events,\n ...props.calendar,\n ...props.category,\n },\n\n computed: {\n noEvents (): boolean {\n return this.events.length === 0\n },\n parsedEvents (): CalendarEventParsed[] {\n return this.events.map(this.parseEvent)\n },\n parsedEventOverlapThreshold (): number {\n return parseInt(this.eventOverlapThreshold)\n },\n eventTimedFunction (): CalendarEventTimedFunction {\n return typeof this.eventTimed === 'function'\n ? this.eventTimed\n : event => !!event[this.eventTimed as string]\n },\n eventCategoryFunction (): CalendarEventCategoryFunction {\n return typeof this.eventCategory === 'function'\n ? this.eventCategory\n : event => event[this.eventCategory as string]\n },\n eventTextColorFunction (): CalendarEventColorFunction {\n return typeof this.eventTextColor === 'function'\n ? this.eventTextColor\n : () => this.eventTextColor as string\n },\n eventNameFunction (): CalendarEventNameFunction {\n return typeof this.eventName === 'function'\n ? this.eventName\n : (event, timedEvent) => event.input[this.eventName as string] as string || ''\n },\n eventModeFunction (): CalendarEventOverlapMode {\n return typeof this.eventOverlapMode === 'function'\n ? this.eventOverlapMode\n : CalendarEventOverlapModes[this.eventOverlapMode]\n },\n eventWeekdays (): number[] {\n return this.parsedWeekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n },\n\n methods: {\n eventColorFunction (e: CalendarEvent): string {\n return typeof this.eventColor === 'function'\n ? this.eventColor(e)\n : e.color || this.eventColor\n },\n parseEvent (input: CalendarEvent, index = 0): CalendarEventParsed {\n return parseEvent(\n input,\n index,\n this.eventStart,\n this.eventEnd,\n this.eventTimedFunction(input),\n this.categoryMode ? this.eventCategoryFunction(input) : false,\n )\n },\n formatTime (withTime: CalendarTimestamp, ampm: boolean): string {\n const formatter = this.getFormatter({\n timeZone: 'UTC',\n hour: 'numeric',\n minute: withTime.minute > 0 ? 'numeric' : undefined,\n })\n\n return formatter(withTime, true)\n },\n updateEventVisibility () {\n if (this.noEvents || !this.eventMore) {\n return\n }\n\n const eventHeight = this.eventHeight\n const eventsMap = this.getEventsMap()\n\n for (const date in eventsMap) {\n const { parent, events, more } = eventsMap[date]\n if (!more) {\n break\n }\n\n const parentBounds = parent.getBoundingClientRect()\n const last = events.length - 1\n const eventsSorted = events.map(event => ({\n event,\n bottom: event.getBoundingClientRect().bottom,\n })).sort((a, b) => a.bottom - b.bottom)\n let hidden = 0\n\n for (let i = 0; i <= last; i++) {\n const bottom = eventsSorted[i].bottom\n const hide = i === last\n ? (bottom > parentBounds.bottom)\n : (bottom + eventHeight > parentBounds.bottom)\n\n if (hide) {\n eventsSorted[i].event.style.display = 'none'\n hidden++\n }\n }\n\n if (hidden) {\n more.style.display = ''\n more.innerHTML = this.$vuetify.lang.t(this.eventMoreText, hidden)\n } else {\n more.style.display = 'none'\n }\n }\n },\n getEventsMap (): VDailyEventsMap {\n const eventsMap: VDailyEventsMap = {}\n const elements = this.$refs.events as HTMLElement[]\n\n if (!elements || !elements.forEach) {\n return eventsMap\n }\n\n elements.forEach(el => {\n const date = el.getAttribute('data-date')\n if (el.parentElement && date) {\n if (!(date in eventsMap)) {\n eventsMap[date] = {\n parent: el.parentElement,\n more: null,\n events: [],\n }\n }\n if (el.getAttribute('data-more')) {\n eventsMap[date].more = el\n } else {\n eventsMap[date].events.push(el)\n el.style.display = ''\n }\n }\n })\n\n return eventsMap\n },\n genDayEvent ({ event }: CalendarEventVisual, day: CalendarDaySlotScope): VNode {\n const eventHeight = this.eventHeight\n const eventMarginBottom = this.eventMarginBottom\n const dayIdentifier = getDayIdentifier(day)\n const week = day.week\n const start = dayIdentifier === event.startIdentifier\n let end = dayIdentifier === event.endIdentifier\n let width = WIDTH_START\n\n if (!this.categoryMode) {\n for (let i = day.index + 1; i < week.length; i++) {\n const weekdayIdentifier = getDayIdentifier(week[i])\n if (event.endIdentifier >= weekdayIdentifier) {\n width += WIDTH_FULL\n end = end || weekdayIdentifier === event.endIdentifier\n } else {\n end = true\n break\n }\n }\n }\n const scope = { eventParsed: event, day, start, end, timed: false }\n\n return this.genEvent(event, scope, false, {\n staticClass: 'v-event',\n class: {\n 'v-event-start': start,\n 'v-event-end': end,\n },\n style: {\n height: `${eventHeight}px`,\n width: `${width}%`,\n 'margin-bottom': `${eventMarginBottom}px`,\n },\n attrs: {\n 'data-date': day.date,\n },\n key: event.index,\n ref: 'events',\n refInFor: true,\n })\n },\n genTimedEvent ({ event, left, width }: CalendarEventVisual, day: CalendarDayBodySlotScope): VNode | false {\n if (day.timeDelta(event.end) < 0 || day.timeDelta(event.start) >= 1 || isEventHiddenOn(event, day)) {\n return false\n }\n\n const dayIdentifier = getDayIdentifier(day)\n const start = event.startIdentifier >= dayIdentifier\n const end = event.endIdentifier > dayIdentifier\n const top = start ? day.timeToY(event.start) : 0\n const bottom = end ? day.timeToY(MINUTES_IN_DAY) : day.timeToY(event.end)\n const height = Math.max(this.eventHeight, bottom - top)\n const scope = { eventParsed: event, day, start, end, timed: true }\n\n return this.genEvent(event, scope, true, {\n staticClass: 'v-event-timed',\n style: {\n top: `${top}px`,\n height: `${height}px`,\n left: `${left}%`,\n width: `${width}%`,\n },\n })\n },\n genEvent (event: CalendarEventParsed, scopeInput: VEventScopeInput, timedEvent: boolean, data: VNodeData): VNode {\n const slot = this.$scopedSlots.event\n const text = this.eventTextColorFunction(event.input)\n const background = this.eventColorFunction(event.input)\n const overlapsNoon = event.start.hour < 12 && event.end.hour >= 12\n const singline = diffMinutes(event.start, event.end) <= this.parsedEventOverlapThreshold\n const formatTime = this.formatTime\n const timeSummary = () => formatTime(event.start, overlapsNoon) + ' - ' + formatTime(event.end, true)\n const eventSummary = () => {\n const name = this.eventNameFunction(event, timedEvent)\n if (event.start.hasTime) {\n if (timedEvent) {\n const time = timeSummary()\n const delimiter = singline ? ', ' : this.$createElement('br')\n\n return this.$createElement('span', { staticClass: 'v-event-summary' }, [\n this.$createElement('strong', [name]),\n delimiter,\n time,\n ])\n } else {\n const time = formatTime(event.start, true)\n\n return this.$createElement('span', { staticClass: 'v-event-summary' }, [\n this.$createElement('strong', [time]),\n ' ',\n name,\n ])\n }\n }\n\n return this.$createElement('span', { staticClass: 'v-event-summary' }, [name])\n }\n\n const scope = {\n ...scopeInput,\n event: event.input,\n outside: scopeInput.day.outside,\n singline,\n overlapsNoon,\n formatTime,\n timeSummary,\n eventSummary,\n }\n\n return this.$createElement('div',\n this.setTextColor(text,\n this.setBackgroundColor(background, {\n on: this.getDefaultMouseEventHandlers(':event', nativeEvent => ({ ...scope, nativeEvent })),\n directives: [{\n name: 'ripple',\n value: this.eventRipple ?? true,\n }],\n ...data,\n })\n ), slot\n ? slot(scope)\n : [this.genName(eventSummary)]\n )\n },\n genName (eventSummary: () => string | VNode): VNode {\n return this.$createElement('div', {\n staticClass: 'pl-1',\n }, [eventSummary()])\n },\n genPlaceholder (day: CalendarTimestamp): VNode {\n const height = this.eventHeight + this.eventMarginBottom\n\n return this.$createElement('div', {\n style: {\n height: `${height}px`,\n },\n attrs: {\n 'data-date': day.date,\n },\n ref: 'events',\n refInFor: true,\n })\n },\n genMore (day: CalendarDaySlotScope): VNode {\n const eventHeight = this.eventHeight\n const eventMarginBottom = this.eventMarginBottom\n\n return this.$createElement('div', {\n staticClass: 'v-event-more pl-1',\n class: {\n 'v-outside': day.outside,\n },\n attrs: {\n 'data-date': day.date,\n 'data-more': 1,\n },\n directives: [{\n name: 'ripple',\n value: this.eventRipple ?? true,\n }],\n on: this.getDefaultMouseEventHandlers(':more', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n\n style: {\n display: 'none',\n height: `${eventHeight}px`,\n 'margin-bottom': `${eventMarginBottom}px`,\n },\n ref: 'events',\n refInFor: true,\n })\n },\n getVisibleEvents (): CalendarEventParsed[] {\n const start = getDayIdentifier(this.days[0])\n const end = getDayIdentifier(this.days[this.days.length - 1])\n\n return this.parsedEvents.filter(\n event => isEventOverlapping(event, start, end)\n )\n },\n isEventForCategory (event: CalendarEventParsed, category: CalendarCategory): boolean {\n return !this.categoryMode ||\n (typeof category === 'object' && category.categoryName &&\n category.categoryName === event.category) ||\n (typeof event.category === 'string' && category === event.category) ||\n (typeof event.category !== 'string' && category === null)\n },\n getEventsForDay (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = this.eventWeekdays[0]\n\n return this.parsedEvents.filter(\n event => isEventStart(event, day, identifier, firstWeekday)\n )\n },\n getEventsForDayAll (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = this.eventWeekdays[0]\n\n return this.parsedEvents.filter(\n event => event.allDay &&\n (this.categoryMode ? isEventOn(event, identifier) : isEventStart(event, day, identifier, firstWeekday)) &&\n this.isEventForCategory(event, day.category)\n )\n },\n getEventsForDayTimed (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n return this.parsedEvents.filter(\n event => !event.allDay &&\n isEventOn(event, identifier) &&\n this.isEventForCategory(event, day.category)\n )\n },\n getScopedSlots () {\n if (this.noEvents) {\n return { ...this.$scopedSlots }\n }\n\n const mode = this.eventModeFunction(\n this.parsedEvents,\n this.eventWeekdays[0],\n this.parsedEventOverlapThreshold\n )\n\n const isNode = (input: VNode | false): input is VNode => !!input\n const getSlotChildren: VEventsToNodes = (day, getter, mapper, timed) => {\n const events = getter(day)\n const visuals = mode(day, events, timed, this.categoryMode)\n\n if (timed) {\n return visuals.map(visual => mapper(visual, day)).filter(isNode)\n }\n\n const children: VNode[] = []\n\n visuals.forEach((visual, index) => {\n while (children.length < visual.column) {\n children.push(this.genPlaceholder(day))\n }\n\n const mapped = mapper(visual, day)\n if (mapped) {\n children.push(mapped)\n }\n })\n\n return children\n }\n\n const slots = this.$scopedSlots\n const slotDay = slots.day\n const slotDayHeader = slots['day-header']\n const slotDayBody = slots['day-body']\n\n return {\n ...slots,\n day: (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, this.getEventsForDay, this.genDayEvent, false)\n if (children && children.length > 0 && this.eventMore) {\n children.push(this.genMore(day))\n }\n if (slotDay) {\n const slot = slotDay(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-header': (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, this.getEventsForDayAll, this.genDayEvent, false)\n\n if (slotDayHeader) {\n const slot = slotDayHeader(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-body': (day: CalendarDayBodySlotScope) => {\n const events = getSlotChildren(day, this.getEventsForDayTimed, this.genTimedEvent, true)\n let children: VNode[] = [\n this.$createElement('div', {\n staticClass: 'v-event-timed-container',\n }, events),\n ]\n\n if (slotDayBody) {\n const slot = slotDayBody(day)\n if (slot) {\n children = children.concat(slot)\n }\n }\n return children\n },\n }\n },\n },\n})\n","// Styles\nimport './VCalendarWeekly.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarBase from './mixins/calendar-base'\n\n// Util\nimport { getSlot } from '../../util/helpers'\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport props from './util/props'\nimport {\n createDayList,\n getDayIdentifier,\n createNativeLocaleFormatter,\n} from './util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'v-calendar-weekly',\n\n props: props.weeks,\n\n computed: {\n staticClass (): string {\n return 'v-calendar-weekly'\n },\n classes (): object {\n return this.themeClasses\n },\n parsedMinWeeks (): number {\n return parseInt(this.minWeeks)\n },\n days (): CalendarTimestamp[] {\n const minDays = this.parsedMinWeeks * this.parsedWeekdays.length\n const start = this.getStartOfWeek(this.parsedStart)\n const end = this.getEndOfWeek(this.parsedEnd)\n\n return createDayList(\n start,\n end,\n this.times.today,\n this.weekdaySkips,\n Number.MAX_SAFE_INTEGER,\n minDays\n )\n },\n todayWeek (): CalendarTimestamp[] {\n const today = this.times.today\n const start = this.getStartOfWeek(today)\n const end = this.getEndOfWeek(today)\n\n return createDayList(\n start,\n end,\n today,\n this.weekdaySkips,\n this.parsedWeekdays.length,\n this.parsedWeekdays.length\n )\n },\n monthFormatter (): CalendarFormatter {\n if (this.monthFormat) {\n return this.monthFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', month: 'long' }\n const shortOptions = { timeZone: 'UTC', month: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n isOutside (day: CalendarTimestamp): boolean {\n const dayIdentifier = getDayIdentifier(day)\n\n return dayIdentifier < getDayIdentifier(this.parsedStart) ||\n dayIdentifier > getDayIdentifier(this.parsedEnd)\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head',\n attrs: {\n role: 'row',\n },\n }, this.genHeadDays())\n },\n genHeadDays (): VNode[] {\n const header = this.todayWeek.map(this.genHeadDay)\n\n if (this.showWeek) {\n header.unshift(this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head-weeknumber',\n }))\n }\n\n return header\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n const outside = this.isOutside(this.days[index])\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n key: day.date,\n staticClass: 'v-calendar-weekly__head-weekday',\n class: this.getRelativeClasses(day, outside),\n attrs: {\n role: 'columnheader',\n },\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genWeeks (): VNode[] {\n const days = this.days\n const weekDays = this.parsedWeekdays.length\n const weeks: VNode[] = []\n\n for (let i = 0; i < days.length; i += weekDays) {\n weeks.push(this.genWeek(days.slice(i, i + weekDays), this.getWeekNumber(days[i])))\n }\n\n return weeks\n },\n genWeek (week: CalendarTimestamp[], weekNumber: number): VNode {\n const weekNodes = week.map((day, index) => this.genDay(day, index, week))\n\n if (this.showWeek) {\n weekNodes.unshift(this.genWeekNumber(weekNumber))\n }\n\n return this.$createElement('div', {\n key: week[0].date,\n staticClass: 'v-calendar-weekly__week',\n attrs: {\n role: 'row',\n },\n }, weekNodes)\n },\n getWeekNumber (determineDay: CalendarTimestamp) {\n return weekNumber(\n determineDay.year,\n determineDay.month - 1,\n determineDay.day,\n this.parsedWeekdays[0],\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__weeknumber',\n }, [\n this.$createElement('small', String(weekNumber)),\n ])\n },\n genDay (day: CalendarTimestamp, index: number, week: CalendarTimestamp[]): VNode {\n const outside = this.isOutside(day)\n\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-weekly__day',\n class: this.getRelativeClasses(day, outside),\n attrs: {\n role: 'cell',\n },\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, [\n this.genDayLabel(day),\n ...(getSlot(this, 'day', () => ({ outside, index, week, ...day })) || []),\n ])\n },\n genDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__day-label',\n }, getSlot(this, 'day-label', day) || [this.genDayLabelButton(day)])\n },\n genDayLabelButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n const hasMonth = day.day === 1 && this.showMonthOnFirst\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n small: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => ({ nativeEvent, ...day })),\n }, hasMonth\n ? this.monthFormatter(day, this.shortMonths) + ' ' + this.dayFormatter(day, false)\n : this.dayFormatter(day, false)\n )\n },\n genDayMonth (day: CalendarTimestamp): VNode | string {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-weekly__day-month',\n }), getSlot(this, 'day-month', day) || this.monthFormatter(day, this.shortMonths))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: this.staticClass,\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n }, [\n !this.hideHeader ? this.genHead() : '',\n ...this.genWeeks(),\n ])\n },\n})\n","// Styles\nimport './VCalendarWeekly.sass'\n\n// Mixins\nimport VCalendarWeekly from './VCalendarWeekly'\n\n// Util\nimport { parseTimestamp, getStartOfMonth, getEndOfMonth } from './util/timestamp'\nimport { CalendarTimestamp } from 'vuetify/types'\n\n/* @vue/component */\nexport default VCalendarWeekly.extend({\n name: 'v-calendar-monthly',\n\n computed: {\n staticClass (): string {\n return 'v-calendar-monthly v-calendar-weekly'\n },\n parsedStart (): CalendarTimestamp {\n return getStartOfMonth(parseTimestamp(this.start, true))\n },\n parsedEnd (): CalendarTimestamp {\n return getEndOfMonth(parseTimestamp(this.end, true))\n },\n },\n\n})\n","\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTime,\n copyTimestamp,\n updateMinutes,\n createDayList,\n createIntervalList,\n createNativeLocaleFormatter,\n VTime,\n MINUTES_IN_DAY,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter, CalendarDayBodySlotScope } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-intervals',\n\n props: props.intervals,\n\n computed: {\n parsedFirstInterval (): number {\n return parseInt(this.firstInterval)\n },\n parsedIntervalMinutes (): number {\n return parseInt(this.intervalMinutes)\n },\n parsedIntervalCount (): number {\n return parseInt(this.intervalCount)\n },\n parsedIntervalHeight (): number {\n return parseFloat(this.intervalHeight)\n },\n parsedFirstTime (): number | false {\n return parseTime(this.firstTime)\n },\n firstMinute (): number {\n const time = this.parsedFirstTime\n\n return time !== false && time >= 0 && time <= MINUTES_IN_DAY\n ? time\n : this.parsedFirstInterval * this.parsedIntervalMinutes\n },\n bodyHeight (): number {\n return this.parsedIntervalCount * this.parsedIntervalHeight\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips,\n this.maxDays\n )\n },\n intervals (): CalendarTimestamp[][] {\n const days: CalendarTimestamp[] = this.days\n const first: number = this.firstMinute\n const minutes: number = this.parsedIntervalMinutes\n const count: number = this.parsedIntervalCount\n const now: CalendarTimestamp = this.times.now\n\n return days.map(d => createIntervalList(d, first, minutes, count, now))\n },\n intervalFormatter (): CalendarFormatter {\n if (this.intervalFormat) {\n return this.intervalFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', hour: '2-digit', minute: '2-digit' }\n const shortOptions = { timeZone: 'UTC', hour: 'numeric', minute: '2-digit' }\n const shortHourOptions = { timeZone: 'UTC', hour: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (tms, short) => short ? (tms.minute === 0 ? shortHourOptions : shortOptions) : longOptions\n )\n },\n },\n\n methods: {\n showIntervalLabelDefault (interval: CalendarTimestamp): boolean {\n const first: CalendarTimestamp = this.intervals[0][0]\n const isFirst: boolean = first.hour === interval.hour && first.minute === interval.minute\n return !isFirst\n },\n intervalStyleDefault (_interval: CalendarTimestamp): object | undefined {\n return undefined\n },\n getTimestampAtEvent (e: MouseEvent | TouchEvent, day: CalendarTimestamp): CalendarTimestamp {\n const timestamp: CalendarTimestamp = copyTimestamp(day)\n const bounds = (e.currentTarget as HTMLElement).getBoundingClientRect()\n const baseMinutes: number = this.firstMinute\n const touchEvent: TouchEvent = e as TouchEvent\n const mouseEvent: MouseEvent = e as MouseEvent\n const touches: TouchList = touchEvent.changedTouches || touchEvent.touches\n const clientY: number = touches && touches[0] ? touches[0].clientY : mouseEvent.clientY\n const addIntervals: number = (clientY - bounds.top) / this.parsedIntervalHeight\n const addMinutes: number = Math.floor(addIntervals * this.parsedIntervalMinutes)\n const minutes: number = baseMinutes + addMinutes\n\n return updateMinutes(timestamp, minutes, this.times.now)\n },\n getSlotScope (timestamp: CalendarTimestamp): CalendarDayBodySlotScope {\n const scope = copyTimestamp(timestamp) as any\n scope.timeToY = this.timeToY\n scope.timeDelta = this.timeDelta\n scope.minutesToPixels = this.minutesToPixels\n scope.week = this.days\n return scope\n },\n scrollToTime (time: VTime): boolean {\n const y = this.timeToY(time)\n const pane = this.$refs.scrollArea as HTMLElement\n\n if (y === false || !pane) {\n return false\n }\n\n pane.scrollTop = y\n\n return true\n },\n minutesToPixels (minutes: number): number {\n return minutes / this.parsedIntervalMinutes * this.parsedIntervalHeight\n },\n timeToY (time: VTime, clamp = true): number | false {\n let y = this.timeDelta(time)\n\n if (y !== false) {\n y *= this.bodyHeight\n\n if (clamp) {\n if (y < 0) {\n y = 0\n }\n if (y > this.bodyHeight) {\n y = this.bodyHeight\n }\n }\n }\n\n return y\n },\n timeDelta (time: VTime): number | false {\n const minutes = parseTime(time)\n\n if (minutes === false) {\n return false\n }\n\n const min: number = this.firstMinute\n const gap: number = this.parsedIntervalCount * this.parsedIntervalMinutes\n\n return (minutes - min) / gap\n },\n },\n})\n","// Styles\nimport './VCalendarDaily.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarWithIntervals from './mixins/calendar-with-intervals'\n\n// Util\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { CalendarTimestamp } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarWithIntervals.extend({\n name: 'v-calendar-daily',\n\n directives: { Resize },\n\n data: () => ({\n scrollPush: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-calendar-daily': true,\n ...this.themeClasses,\n }\n },\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init () {\n this.$nextTick(this.onResize)\n },\n onResize () {\n this.scrollPush = this.getScrollPush()\n },\n getScrollPush (): number {\n const area = this.$refs.scrollArea as HTMLElement\n const pane = this.$refs.pane as HTMLElement\n\n return area && pane ? (area.offsetWidth - pane.offsetWidth) : 0\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__head',\n style: {\n marginRight: this.scrollPush + 'px',\n },\n }, [\n this.genHeadIntervals(),\n ...this.genHeadDays(),\n ])\n },\n genHeadIntervals (): VNode {\n const width: string | undefined = convertToUnit(this.intervalWidth)\n\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__intervals-head',\n style: {\n width,\n },\n }, getSlot(this, 'interval-header'))\n },\n genHeadDays (): VNode[] {\n return this.days.map(this.genHeadDay)\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily_head-day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...this.getSlotScope(day) }\n }),\n }, [\n this.genHeadWeekday(day),\n this.genHeadDayLabel(day),\n ...this.genDayHeader(day, index),\n ])\n },\n genDayHeader (day: CalendarTimestamp, index: number): VNode[] {\n return getSlot(this, 'day-header', () => ({\n week: this.days, ...day, index,\n })) || []\n },\n genHeadWeekday (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-daily_head-weekday',\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genHeadDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily_head-day-label',\n }, getSlot(this, 'day-label-header', day) || [this.genHeadDayButton(day)])\n },\n genHeadDayButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, this.dayFormatter(day, false))\n },\n genBody (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__body',\n }, [\n this.genScrollArea(),\n ])\n },\n genScrollArea (): VNode {\n return this.$createElement('div', {\n ref: 'scrollArea',\n staticClass: 'v-calendar-daily__scroll-area',\n }, [\n this.genPane(),\n ])\n },\n genPane (): VNode {\n return this.$createElement('div', {\n ref: 'pane',\n staticClass: 'v-calendar-daily__pane',\n style: {\n height: convertToUnit(this.bodyHeight),\n },\n }, [\n this.genDayContainer(),\n ])\n },\n genDayContainer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__day-container',\n }, [\n this.genBodyIntervals(),\n ...this.genDays(),\n ])\n },\n genDays (): VNode[] {\n return this.days.map(this.genDay)\n },\n genDay (day: CalendarTimestamp, index: number): VNode {\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', nativeEvent => {\n return { nativeEvent, ...this.getSlotScope(this.getTimestampAtEvent(nativeEvent, day)) }\n }),\n }, [\n ...this.genDayIntervals(index),\n ...this.genDayBody(day),\n ])\n },\n genDayBody (day: CalendarTimestamp): VNode[] {\n return getSlot(this, 'day-body', () => this.getSlotScope(day)) || []\n },\n genDayIntervals (index: number): VNode[] {\n return this.intervals[index].map(this.genDayInterval)\n },\n genDayInterval (interval: CalendarTimestamp): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const styler = this.intervalStyle || this.intervalStyleDefault\n\n const data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: {\n height,\n ...styler(interval),\n },\n\n }\n\n const children = getSlot(this, 'interval', () => this.getSlotScope(interval))\n\n return this.$createElement('div', data, children)\n },\n genBodyIntervals (): VNode {\n const width: string | undefined = convertToUnit(this.intervalWidth)\n const data = {\n staticClass: 'v-calendar-daily__intervals-body',\n style: {\n width,\n },\n on: this.getDefaultMouseEventHandlers(':interval', nativeEvent => {\n return { nativeEvent, ...this.getTimestampAtEvent(nativeEvent, this.parsedStart) }\n }),\n }\n\n return this.$createElement('div', data, this.genIntervalLabels())\n },\n genIntervalLabels (): VNode[] | null {\n if (!this.intervals.length) return null\n\n return this.intervals[0].map(this.genIntervalLabel)\n },\n genIntervalLabel (interval: CalendarTimestamp): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const short: boolean = this.shortIntervals\n const shower = this.showIntervalLabel || this.showIntervalLabelDefault\n const show = shower(interval)\n const label = show ? this.intervalFormatter(interval, short) : undefined\n\n return this.$createElement('div', {\n key: interval.time,\n staticClass: 'v-calendar-daily__interval',\n style: {\n height,\n },\n }, [\n this.$createElement('div', {\n staticClass: 'v-calendar-daily__interval-text',\n }, label),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize,\n }],\n }, [\n !this.hideHeader ? this.genHead() : '',\n this.genBody(),\n ])\n },\n})\n","import { CalendarCategory, CalendarCategoryTextFunction } from 'types'\n\nexport function parsedCategoryText (\n category: CalendarCategory,\n categoryText: string | CalendarCategoryTextFunction\n): string {\n return typeof categoryText === 'string' && typeof category === 'object' && category\n ? category[categoryText]\n : typeof categoryText === 'function'\n ? categoryText(category)\n : category\n}\n\nexport function getParsedCategories (\n categories: CalendarCategory | CalendarCategory[],\n categoryText: string | CalendarCategoryTextFunction\n): CalendarCategory[] {\n if (typeof categories === 'string') return categories.split(/\\s*,\\s/)\n if (Array.isArray(categories)) {\n return categories.map((category: CalendarCategory) => {\n if (typeof category === 'string') return category\n\n const categoryName = typeof category.categoryName === 'string'\n ? category.categoryName\n : parsedCategoryText(category, categoryText)\n return { ...category, categoryName }\n })\n }\n return []\n}\n","// Styles\nimport './VCalendarCategory.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport VCalendarDaily from './VCalendarDaily'\n\n// Util\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { CalendarCategory, CalendarTimestamp } from 'types'\nimport props from './util/props'\nimport { getParsedCategories } from './util/parser'\n\n/* @vue/component */\nexport default VCalendarDaily.extend({\n name: 'v-calendar-category',\n\n props: props.category,\n\n computed: {\n classes (): object {\n return {\n 'v-calendar-daily': true,\n 'v-calendar-category': true,\n ...this.themeClasses,\n }\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n methods: {\n genDayHeader (day: CalendarTimestamp, index: number): VNode[] {\n const data = {\n staticClass: 'v-calendar-category__columns',\n }\n const scope = {\n week: this.days, ...day, index,\n }\n\n const children = this.parsedCategories.map(category => {\n return this.genDayHeaderCategory(day, this.getCategoryScope(scope, category))\n })\n\n return [this.$createElement('div', data, children)]\n },\n getCategoryScope (scope: any, category: CalendarCategory) {\n const cat = typeof category === 'object' && category &&\n category.categoryName === this.categoryForInvalid ? null : category\n return {\n ...scope,\n category: cat,\n }\n },\n genDayHeaderCategory (day: CalendarTimestamp, scope: any): VNode {\n const headerTitle = typeof scope.category === 'object' ? scope.category.categoryName : scope.category\n return this.$createElement('div', {\n staticClass: 'v-calendar-category__column-header',\n on: this.getDefaultMouseEventHandlers(':day-category', e => {\n return this.getCategoryScope(this.getSlotScope(day), scope.category)\n }),\n }, [\n getSlot(this, 'category', scope) || this.genDayHeaderCategoryTitle(headerTitle),\n getSlot(this, 'day-header', scope),\n ])\n },\n genDayHeaderCategoryTitle (categoryName: string | null) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-category__category',\n }, categoryName === null ? this.categoryForInvalid : categoryName)\n },\n genDays (): VNode[] {\n const days: VNode[] = []\n this.days.forEach((d, j) => {\n const day = new Array(this.parsedCategories.length || 1)\n day.fill(d)\n days.push(...day.map((v, i) => this.genDay(v, j, i)))\n })\n return days\n },\n genDay (day: CalendarTimestamp, index: number, categoryIndex: number): VNode {\n const category = this.parsedCategories[categoryIndex]\n return this.$createElement('div', {\n key: day.date + '-' + categoryIndex,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', e => {\n return this.getSlotScope(this.getTimestampAtEvent(e, day))\n }),\n }, [\n ...this.genDayIntervals(index, category),\n ...this.genDayBody(day, category),\n ])\n },\n genDayIntervals (index: number, category: CalendarCategory): VNode[] {\n return this.intervals[index].map(v => this.genDayInterval(v, category))\n },\n genDayInterval (interval: CalendarTimestamp, category: CalendarCategory): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const styler = this.intervalStyle || this.intervalStyleDefault\n\n const data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: {\n height,\n ...styler({ ...interval, category }),\n },\n }\n\n const children = getSlot(this, 'interval', () =>\n this.getCategoryScope(this.getSlotScope(interval), category)\n )\n\n return this.$createElement('div', data, children)\n },\n genDayBody (day: CalendarTimestamp, category: CalendarCategory): VNode[] {\n const data = {\n staticClass: 'v-calendar-category__columns',\n }\n\n const children = [this.genDayBodyCategory(day, category)]\n\n return [this.$createElement('div', data, children)]\n },\n genDayBodyCategory (day: CalendarTimestamp, category: CalendarCategory): VNode {\n const data = {\n staticClass: 'v-calendar-category__column',\n on: this.getDefaultMouseEventHandlers(':time-category', e => {\n return this.getCategoryScope(this.getSlotScope(this.getTimestampAtEvent(e, day)), category)\n }),\n }\n\n const children = getSlot(this, 'day-body', () => this.getCategoryScope(this.getSlotScope(day), category))\n\n return this.$createElement('div', data, children)\n },\n },\n})\n","// Styles\n// import '../../stylus/components/_calendar-daily.styl'\n\n// Types\nimport { VNode, Component } from 'vue'\n\n// Mixins\nimport CalendarWithEvents from './mixins/calendar-with-events'\n\n// Util\nimport props from './util/props'\nimport {\n DAYS_IN_MONTH_MAX,\n DAY_MIN,\n DAYS_IN_WEEK,\n parseTimestamp,\n validateTimestamp,\n relativeDays,\n nextDay,\n prevDay,\n copyTimestamp,\n updateFormatted,\n updateWeekday,\n updateRelative,\n getStartOfMonth,\n getEndOfMonth,\n VTime,\n VTimestampInput,\n timestampToDate,\n} from './util/timestamp'\n\n// Calendars\nimport VCalendarMonthly from './VCalendarMonthly'\nimport VCalendarDaily from './VCalendarDaily'\nimport VCalendarWeekly from './VCalendarWeekly'\nimport VCalendarCategory from './VCalendarCategory'\nimport { CalendarTimestamp, CalendarFormatter, CalendarCategory } from 'vuetify/types'\nimport { getParsedCategories } from './util/parser'\n\n// Types\ninterface VCalendarRenderProps {\n start: CalendarTimestamp\n end: CalendarTimestamp\n component: string | Component\n maxDays: number\n weekdays: number[]\n categories: CalendarCategory[]\n}\n\n/* @vue/component */\nexport default CalendarWithEvents.extend({\n name: 'v-calendar',\n\n props: {\n ...props.calendar,\n ...props.weeks,\n ...props.intervals,\n ...props.category,\n },\n\n data: () => ({\n lastStart: null as CalendarTimestamp | null,\n lastEnd: null as CalendarTimestamp | null,\n }),\n\n computed: {\n parsedValue (): CalendarTimestamp {\n return (validateTimestamp(this.value)\n ? parseTimestamp(this.value, true)\n : (this.parsedStart || this.times.today))\n },\n parsedCategoryDays (): number {\n return parseInt(this.categoryDays) || 1\n },\n renderProps (): VCalendarRenderProps {\n const around = this.parsedValue\n let component: any = null\n let maxDays = this.maxDays\n let weekdays = this.parsedWeekdays\n let categories = this.parsedCategories\n let start = around\n let end = around\n switch (this.type) {\n case 'month':\n component = VCalendarMonthly\n start = getStartOfMonth(around)\n end = getEndOfMonth(around)\n break\n case 'week':\n component = VCalendarDaily\n start = this.getStartOfWeek(around)\n end = this.getEndOfWeek(around)\n maxDays = 7\n break\n case 'day':\n component = VCalendarDaily\n maxDays = 1\n weekdays = [start.weekday]\n break\n case '4day':\n component = VCalendarDaily\n end = relativeDays(copyTimestamp(end), nextDay, 3)\n updateFormatted(end)\n maxDays = 4\n weekdays = [\n start.weekday,\n (start.weekday + 1) % 7,\n (start.weekday + 2) % 7,\n (start.weekday + 3) % 7,\n ]\n break\n case 'custom-weekly':\n component = VCalendarWeekly\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'custom-daily':\n component = VCalendarDaily\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'category':\n const days = this.parsedCategoryDays\n\n component = VCalendarCategory\n end = relativeDays(copyTimestamp(end), nextDay, days)\n updateFormatted(end)\n maxDays = days\n weekdays = []\n\n for (let i = 0; i < days; i++) {\n weekdays.push((start.weekday + i) % 7)\n }\n\n categories = this.getCategoryList(categories)\n break\n default:\n throw new Error(this.type + ' is not a valid Calendar type')\n }\n\n return { component, start, end, maxDays, weekdays, categories }\n },\n eventWeekdays (): number[] {\n return this.renderProps.weekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n title (): string {\n const { start, end } = this.renderProps\n const spanYears = start.year !== end.year\n const spanMonths = spanYears || start.month !== end.month\n\n if (spanYears) {\n return this.monthShortFormatter(start, true) + ' ' + start.year + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n }\n\n if (spanMonths) {\n return this.monthShortFormatter(start, true) + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n } else {\n return this.monthLongFormatter(start, false) + ' ' + start.year\n }\n },\n monthLongFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'long',\n })\n },\n monthShortFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'short',\n })\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n\n watch: {\n renderProps: 'checkChange',\n },\n\n mounted () {\n this.updateEventVisibility()\n this.checkChange()\n },\n\n updated () {\n window.requestAnimationFrame(this.updateEventVisibility)\n },\n\n methods: {\n checkChange (): void {\n const { lastStart, lastEnd } = this\n const { start, end } = this.renderProps\n if (!lastStart || !lastEnd ||\n start.date !== lastStart.date ||\n end.date !== lastEnd.date) {\n this.lastStart = start\n this.lastEnd = end\n this.$emit('change', { start, end })\n }\n },\n move (amount = 1): void {\n const moved = copyTimestamp(this.parsedValue)\n const forward = amount > 0\n const mover = forward ? nextDay : prevDay\n const limit = forward ? DAYS_IN_MONTH_MAX : DAY_MIN\n let times = forward ? amount : -amount\n\n while (--times >= 0) {\n switch (this.type) {\n case 'month':\n moved.day = limit\n mover(moved)\n break\n case 'week':\n relativeDays(moved, mover, DAYS_IN_WEEK)\n break\n case 'day':\n relativeDays(moved, mover, 1)\n break\n case '4day':\n relativeDays(moved, mover, 4)\n break\n case 'category':\n relativeDays(moved, mover, this.parsedCategoryDays)\n break\n }\n }\n\n updateWeekday(moved)\n updateFormatted(moved)\n updateRelative(moved, this.times.now)\n\n if (this.value instanceof Date) {\n this.$emit('input', timestampToDate(moved))\n } else if (typeof this.value === 'number') {\n this.$emit('input', timestampToDate(moved).getTime())\n } else {\n this.$emit('input', moved.date)\n }\n\n this.$emit('moved', moved)\n },\n next (amount = 1): void {\n this.move(amount)\n },\n prev (amount = 1): void {\n this.move(-amount)\n },\n timeToY (time: VTime, clamp = true): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeToY) {\n return c.timeToY(time, clamp)\n } else {\n return false\n }\n },\n timeDelta (time: VTime): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeDelta) {\n return c.timeDelta(time)\n } else {\n return false\n }\n },\n minutesToPixels (minutes: number): number {\n const c = this.$children[0] as any\n\n if (c && c.minutesToPixels) {\n return c.minutesToPixels(minutes)\n } else {\n return -1\n }\n },\n scrollToTime (time: VTime): boolean {\n const c = this.$children[0] as any\n\n if (c && c.scrollToTime) {\n return c.scrollToTime(time)\n } else {\n return false\n }\n },\n parseTimestamp (input: VTimestampInput, required?: false): CalendarTimestamp | null {\n return parseTimestamp(input, required, this.times.now)\n },\n timestampToDate (timestamp: CalendarTimestamp): Date {\n return timestampToDate(timestamp)\n },\n getCategoryList (categories: CalendarCategory[]): CalendarCategory[] {\n if (!this.noEvents) {\n const categoryMap: any = categories.reduce((map: any, category, index) => {\n if (typeof category === 'object' && category.categoryName) map[category.categoryName] = { index, count: 0 }\n else if (typeof category === 'string') map[category] = { index, count: 0 }\n return map\n }, {})\n\n if (!this.categoryHideDynamic || !this.categoryShowAll) {\n let categoryLength = categories.length\n\n this.parsedEvents.forEach(ev => {\n let category = ev.category\n\n if (typeof category !== 'string') {\n category = this.categoryForInvalid\n }\n\n if (!category) {\n return\n }\n\n if (category in categoryMap) {\n categoryMap[category].count++\n } else if (!this.categoryHideDynamic) {\n categoryMap[category] = {\n index: categoryLength++,\n count: 1,\n }\n }\n })\n }\n\n if (!this.categoryShowAll) {\n for (const category in categoryMap) {\n if (categoryMap[category].count === 0) {\n delete categoryMap[category]\n }\n }\n }\n\n categories = categories.filter((category: CalendarCategory) => {\n if (typeof category === 'object' && category.categoryName) {\n return categoryMap.hasOwnProperty(category.categoryName)\n } else if (typeof category === 'string') {\n return categoryMap.hasOwnProperty(category)\n }\n return false\n })\n }\n return categories\n },\n },\n\n render (h): VNode {\n const { start, end, maxDays, component, weekdays, categories } = this.renderProps\n\n return h(component, {\n staticClass: 'v-calendar',\n class: {\n 'v-calendar-events': !this.noEvents,\n },\n props: {\n ...this.$props,\n start: start.date,\n end: end.date,\n maxDays,\n weekdays,\n categories,\n },\n attrs: {\n role: 'grid',\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.updateEventVisibility,\n }],\n on: {\n ...this.$listeners,\n\n 'click:date': (day: CalendarTimestamp, e?: MouseEvent) => {\n if (this.$listeners.input) {\n this.$emit('input', day.date)\n }\n if (this.$listeners['click:date']) {\n this.$emit('click:date', day, e)\n }\n },\n },\n scopedSlots: this.getScopedSlots(),\n })\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('div',{staticClass:\"d-flex mb-5\"},[_c('div',{staticClass:\"mt-5 mr-3 d-flex\"},[_c('v-expand-x-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expandFilter),expression:\"expandFilter\"}],staticClass:\"pl-3\",staticStyle:{\"width\":\"100%\"}},[_c('h3',{staticClass:\"mt-2\"},[_vm._v(\"Filtrar\")]),_c('v-select',{attrs:{\"items\":_vm.types,\"dense\":\"\",\"outlined\":\"\",\"label\":\"Tipo\",\"item-text\":\"type\",\"item-value\":\"value\"},model:{value:(_vm.type),callback:function ($$v) {_vm.type=$$v},expression:\"type\"}}),(_vm.permisoRoles.includes(_vm.rol) && _vm.dataFiltros.agencias.length > 1)?_c('v-select',{attrs:{\"items\":_vm.dataFiltros.agencias,\"dense\":\"\",\"outlined\":\"\",\"label\":\"Agencia\",\"item-text\":\"agencia\",\"item-value\":\"id\",\"clearable\":\"\",\"loading\":_vm.loadingFiltros},on:{\"change\":_vm.filtrarAsesores},model:{value:(_vm.filtro.agencia),callback:function ($$v) {_vm.$set(_vm.filtro, \"agencia\", $$v)},expression:\"filtro.agencia\"}}):_vm._e(),(_vm.permisoRoles.includes(_vm.rol))?_c('v-autocomplete',{attrs:{\"label\":\"Asesor Comercial\",\"items\":_vm.dataFiltros.asesores,\"dense\":\"\",\"outlined\":\"\",\"item-text\":\"nombre\",\"item-value\":\"id\",\"clearable\":\"\",\"loading\":_vm.loadingFiltros},on:{\"change\":_vm.datosCalendarioAgendaVisitas},model:{value:(_vm.filtro.asesor),callback:function ($$v) {_vm.$set(_vm.filtro, \"asesor\", $$v)},expression:\"filtro.asesor\"}}):_vm._e()],1)]),_c('div',{staticClass:\"px-2 d-flex flex-column\",staticStyle:{\"border-right\":\"1px solid #e0e0e0e0\"}},[_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mb-4\",attrs:{\"icon\":\"\",\"color\":\"primary\",\"loading\":_vm.loadingFiltros},on:{\"click\":function($event){_vm.expandFilter = !_vm.expandFilter}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-filter\")])],1)]}}])},[_c('span',[_vm._v(\"Filtrar\")])])],1)],1),_c('div',{staticStyle:{\"width\":\"100%\"}},[_c('v-layout',{staticClass:\"ma-2\",attrs:{\"row\":\"\",\"justify-space-between\":\"\",\"align-center\":\"\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"outlined\":\"\",\"color\":\"primary\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.$refs.calendar.prev()}}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),(_vm.$refs.calendar)?_c('h3',{staticClass:\"my-0 text-uppercase text-center\"},[_vm._v(_vm._s(_vm.$refs.calendar.title))]):_vm._e(),_c('v-btn',{attrs:{\"icon\":\"\",\"outlined\":\"\",\"color\":\"primary\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.$refs.calendar.next()}}},[_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('v-calendar',{ref:\"calendar\",attrs:{\"focus\":_vm.focus,\"weekdays\":_vm.weekday,\"type\":_vm.type,\"events\":_vm.events,\"event-color\":_vm.getEventColor,\"event-overlap-mode\":_vm.mode,\"event-overlap-threshold\":30,\"first-interval\":6,\"interval-count\":15,\"locale\":\"es\"},on:{\"click:event\":_vm.showEvent},scopedSlots:_vm._u([{key:\"day-label\",fn:function({ day, month }){return [(day === 1)?_c('div',[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.monthName[month - 1].toLocaleUpperCase()))]),_c('br')]):_vm._e(),(day === _vm.diaActual && month === _vm.mesActual)?_c('v-btn',{staticClass:\"pa-3 mx-auto orange\",staticStyle:{\"width\":\"30px\",\"height\":\"30px\"},attrs:{\"fab\":\"\",\"elevation\":0}},[_c('span',{staticClass:\"font-weight-bold white--text\"},[_vm._v(_vm._s(day))])]):_c('v-btn',{staticStyle:{\"width\":\"30px\",\"height\":\"30px\"},attrs:{\"fab\":\"\",\"elevation\":0}},[_vm._v(_vm._s(day))])]}},{key:\"event\",fn:function({ event }){return [_c('div',{class:`ml-1 pa-1 d-flex align-center rounded item-event`},[(_vm.type === _vm.month)?_c('v-icon',{staticClass:\"mr-1\",attrs:{\"size\":10,\"color\":event.color}},[_vm._v(\" \"+_vm._s(event.retraso ? \"mdi-alert\" : \"mdi-circle\")+\" \")]):_vm._e(),_c('p',{class:`mb-0 text-truncate ${_vm.getColorText(event.color)} ${event.confirmar_visita ? 'text-decoration-line-through' : ''}`},[_c('b',[_vm._v(_vm._s(_vm.getTime(event.start)))]),_vm._v(\" \"+_vm._s(event.name))])],1)]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}),(_vm.selectedOpen)?_c('v-menu',{attrs:{\"offset-x\":\"\",\"close-on-content-click\":false,\"activator\":_vm.selectedElement},model:{value:(_vm.selectedOpen),callback:function ($$v) {_vm.selectedOpen=$$v},expression:\"selectedOpen\"}},[_c('v-alert',{staticClass:\"ma-0\",staticStyle:{\"max-width\":\"400px\"},attrs:{\"border\":\"left\",\"colored-border\":\"\",\"color\":_vm.selectedEvent.color}},[_c('div',{staticClass:\"d-flex\",attrs:{\"row\":\"\"}},[_c('div',{staticClass:\"py-0\",staticStyle:{\"width\":\"90%\"}},[_c('div',{staticClass:\"mt-1 mb-3 mr-3 d-flex justify-space-between align-center\"},[_c('h3',{staticClass:\"mb-0\"},[_vm._v(\"Visita\")]),(_vm.selectedEvent.confirmar_visita)?_c('v-chip',{attrs:{\"color\":\"success\"}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" Visita confirmada \")],1):_vm._e(),(_vm.selectedEvent.retraso)?_c('v-chip',{attrs:{\"color\":\"error\"}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-alert\")]),_vm._v(\" Visita retrasada \")],1):_vm._e()],1),_c('v-layout',{attrs:{\"column\":\"\"}},[(_vm.permisoRoles.includes(_vm.rol))?_c('div',{staticClass:\"mb-2\"},[_c('div',{staticClass:\"d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-clipboard-account \")]),_c('span',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.selectedEvent.nombre_usuario))])],1),_c('v-divider',{staticClass:\"mt-3\"})],1):_vm._e(),_c('div',{staticClass:\"mb-2 d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-domain \")]),_c('span',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.selectedEvent.name))])],1),_c('div',{staticClass:\"mb-2 d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-calendar \")]),_c('span',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.formatDate(_vm.selectedEvent.start)))])],1),_c('div',{staticClass:\"mb-2 d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-clock-time-four-outline \")]),_c('span',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.getTime(_vm.selectedEvent.start))+\" - \"+_vm._s(_vm.getTime(_vm.selectedEvent.end)))])],1),_c('div',{staticClass:\"mb-2 d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-map-marker \")]),_c('a',{attrs:{\"href\":`https://www.google.com/maps?q=${encodeURIComponent(_vm.selectedEvent.direccion)}`,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.selectedEvent.direccion))])],1),_c('div',{staticClass:\"mb-2 d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-phone \")]),_c('span',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.selectedEvent.telefono))])],1),_c('div',{staticClass:\"mb-2 d-flex\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-email \")]),_c('a',{attrs:{\"href\":`mailto:${_vm.selectedEvent.correo}`}},[_vm._v(_vm._s(_vm.selectedEvent.correo))])],1),_c('div',[_c('div',[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"size\":20,\"color\":_vm.selectedEvent.color}},[_vm._v(\" mdi-comment-text \")]),_c('span',{staticClass:\"mb-0\"},[_vm._v(\"Observaciones:\")])],1),_c('p',[_vm._v(_vm._s(_vm.selectedEvent.observaciones))])])])],1),_c('div',{staticClass:\"pa-0\",staticStyle:{\"width\":\"10%\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"error\"},on:{\"click\":_vm.closeEvent}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1),(_vm.rol === 2 && !_vm.selectedEvent.confirmar_visita)?_c('div',[_c('v-divider',{staticClass:\"my-2\"}),_c('v-tooltip',{attrs:{\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({},'div',attrs,false),on),[(![1, 4].includes(_vm.selectedEvent.estado))?_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"grey\"}},[_c('v-icon',[_vm._v(\"mdi-progress-check\")])],1):_c('ConfirmarVisita',{attrs:{\"tipo\":\"calendario\",\"id_agenda\":_vm.selectedEvent.id_agenda,\"estado_visita\":_vm.selectedEvent.estado_visita,\"confirmar_visita\":_vm.selectedEvent.confirmar_visita},on:{\"click\":_vm.visitaConfirmada}})],1)]}}],null,false,4187307539)},[_c('span',[_vm._v(_vm._s([1, 4].includes(_vm.selectedEvent.estado) ? \"Confirmar Visita\" : \"Falta Aprobación\"))])]),_c('v-tooltip',{attrs:{\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"my-1\",attrs:{\"icon\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.modalActualizar = true}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-pencil\")])],1)]}}],null,false,3355084881)},[_c('span',[_vm._v(\"Editar Visita\")])])],1):_vm._e()],1)])])],1):_vm._e()],1)])]),_c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"700px\",\"transition\":\"dialog-bottom-transition\"},model:{value:(_vm.modalActualizar),callback:function ($$v) {_vm.modalActualizar=$$v},expression:\"modalActualizar\"}},[_c('v-card',[_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.actualizarVisita.apply(null, arguments)}}},[_c('v-card-title',{staticClass:\"grey darken-4 white--text headline text-center font-weight-bold\"},[_vm._v(\" ACTUALIZAR VISITA \")]),_c('v-card-text',{staticClass:\"pa-4\"},[_c('v-layout',[_c('div',{staticClass:\"mx-2\"},[_c('v-menu',{ref:\"menu\",staticClass:\"mt-2\",attrs:{\"close-on-content-click\":false,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-text-field',_vm._g(_vm._b({attrs:{\"outlined\":\"\",\"readonly\":\"\",\"label\":\"Nueva Fecha de asignación *\",\"prepend-inner-icon\":\"mdi-calendar\",\"rules\":_vm.rules.vacio},model:{value:(_vm.datos_formulario.fecha),callback:function ($$v) {_vm.$set(_vm.datos_formulario, \"fecha\", $$v)},expression:\"datos_formulario.fecha\"}},'v-text-field',attrs,false),on))]}}]),model:{value:(_vm.menuDate),callback:function ($$v) {_vm.menuDate=$$v},expression:\"menuDate\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.today,\"scrollable\":\"\",\"locale\":\"es\"},on:{\"input\":function($event){_vm.menuDate = false}},model:{value:(_vm.datos_formulario.fecha),callback:function ($$v) {_vm.$set(_vm.datos_formulario, \"fecha\", $$v)},expression:\"datos_formulario.fecha\"}})],1)],1),_c('div',{staticClass:\"mx-2\"},[_c('v-autocomplete',{attrs:{\"outlined\":\"\",\"items\":_vm.horariosInicial,\"label\":\"Inicio *\",\"item-text\":\"name\",\"item-value\":\"value\",\"prepend-inner-icon\":\"mdi-clock-time-five-outline\",\"rules\":_vm.rules.vacio},on:{\"change\":_vm.getHorariosFinal},model:{value:(_vm.datos_formulario.inicia),callback:function ($$v) {_vm.$set(_vm.datos_formulario, \"inicia\", $$v)},expression:\"datos_formulario.inicia\"}})],1),_c('div',{staticClass:\"mx-2\"},[_c('v-autocomplete',{attrs:{\"outlined\":\"\",\"items\":_vm.horariosFinal,\"label\":\"Termina *\",\"item-text\":\"name\",\"item-value\":\"value\",\"no-data-text\":\"No hay horarios disponibles\",\"disabled\":!_vm.datos_formulario.inicia,\"prepend-inner-icon\":\"mdi-clock-time-five-outline\",\"rules\":_vm.rules.vacio},model:{value:(_vm.datos_formulario.termina),callback:function ($$v) {_vm.$set(_vm.datos_formulario, \"termina\", $$v)},expression:\"datos_formulario.termina\"}})],1)]),_c('div',[_c('v-textarea',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"label\":\"Nueva observación *\",\"prepend-inner-icon\":\"mdi-comment\",\"rows\":\"2\",\"row-height\":\"3\",\"counter\":\"\",\"maxlength\":\"500\",\"hint\":\"máximo 500 caracteres\",\"rules\":_vm.rules.vacio},model:{value:(_vm.datos_formulario.observacion),callback:function ($$v) {_vm.$set(_vm.datos_formulario, \"observacion\", $$v)},expression:\"datos_formulario.observacion\"}})],1)],1),_c('v-divider'),_c('v-card-actions',{staticClass:\"d-flex justify-end\"},[_c('v-btn',{attrs:{\"color\":\"blue darken-1\",\"text\":\"\"},on:{\"click\":function($event){_vm.modalActualizar = false}}},[_vm._v(\" Cerrar \")]),_c('v-btn',{attrs:{\"outlined\":\"\",\"color\":\"success\",\"text\":\"\",\"type\":\"submit\"}},[_c('v-icon',{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\" mdi-pencil \")]),_vm._v(\" Actualizar Datos \")],1)],1)],1)],1)],1),(_vm.loading)?_c('LoadingIndicator'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendario_agenda_comercial.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendario_agenda_comercial.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./calendario_agenda_comercial.vue?vue&type=template&id=1656a782\"\nimport script from \"./calendario_agenda_comercial.vue?vue&type=script&lang=js\"\nexport * from \"./calendario_agenda_comercial.vue?vue&type=script&lang=js\"\nimport style0 from \"./calendario_agenda_comercial.vue?vue&type=style&index=0&id=1656a782&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VRadioGroup.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { PropType } from 'vue'\n\nconst baseMixins = mixins(\n BaseItemGroup,\n VInput\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide () {\n return {\n radioGroup: this,\n }\n },\n\n props: {\n column: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [Number, String],\n default: 'auto',\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null as unknown as PropType,\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row,\n }\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId,\n },\n }, VInput.options.methods.genDefaultSlot.call(this))\n },\n genInputSlot () {\n const render = VInput.options.methods.genInputSlot.call(this)\n\n delete render.data!.on!.click\n\n return render\n },\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return null\n\n label.data!.attrs!.id = this.computedId\n // WAI considers this an orphaned label\n delete label.data!.attrs!.for\n label.tag = 'legend'\n\n return label\n },\n onClick: BaseItemGroup.options.methods.onClick,\n },\n\n render (h) {\n const vnode = VInput.options.render.call(this, h)\n\n this._b(vnode.data!, 'div', this.attrs$)\n\n return vnode\n },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, getSlot(this))\n },\n})\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Styles\nimport './VRadio.sass'\n\n// Components\nimport VRadioGroup from './VRadioGroup'\nimport VLabel from '../VLabel'\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Rippleable from '../../mixins/rippleable'\nimport Themeable from '../../mixins/themeable'\nimport Selectable, { prevent } from '../../mixins/selectable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { mergeListeners } from '../../util/mergeData'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Colorable,\n Rippleable,\n GroupableFactory('radioGroup'),\n Themeable\n)\n\ninterface options extends InstanceType {\n radioGroup: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-radio',\n\n inheritAttrs: false,\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n id: String,\n label: String,\n name: String,\n offIcon: {\n type: String,\n default: '$radioOff',\n },\n onIcon: {\n type: String,\n default: '$radioOn',\n },\n readonly: {\n type: Boolean,\n default: null,\n },\n value: {\n default: null,\n },\n },\n\n data: () => ({\n isFocused: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-radio--is-disabled': this.isDisabled,\n 'v-radio--is-focused': this.isFocused,\n ...this.themeClasses,\n ...this.groupClasses,\n }\n },\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n return Selectable.options.computed.computedColor.call(this)\n },\n computedIcon (): string {\n return this.isActive\n ? this.onIcon\n : this.offIcon\n },\n computedId (): string {\n return VInput.options.computed.computedId.call(this)\n },\n hasLabel: VInput.options.computed.hasLabel,\n hasState (): boolean {\n return (this.radioGroup || {}).hasState\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.radioGroup &&\n this.radioGroup.isDisabled\n )\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.radioGroup &&\n this.radioGroup.isReadonly\n )\n },\n computedName (): string {\n if (this.name || !this.radioGroup) {\n return this.name\n }\n\n return this.radioGroup.name || `radio-${this.radioGroup._uid}`\n },\n rippleState (): string | undefined {\n return Selectable.options.computed.rippleState.call(this)\n },\n validationState (): string | undefined {\n return (this.radioGroup || {}).validationState || this.computedColor\n },\n },\n\n methods: {\n genInput (args: any) {\n // We can't actually use the mixin directly because\n // it's made for standalone components, but its\n // genInput method is exactly what we need\n return Selectable.options.methods.genInput.call(this, 'radio', args)\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n on: {\n // Label shouldn't cause the input to focus\n click: prevent,\n },\n attrs: {\n for: this.computedId,\n },\n props: {\n color: this.validationState,\n focused: this.hasState,\n },\n }, getSlot(this, 'label') || this.label)\n },\n genRadio () {\n const { title, ...radioAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.radioGroup && this.radioGroup.dense,\n },\n }), this.computedIcon),\n this.genInput({\n name: this.computedName,\n value: this.value,\n ...radioAttrs,\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n onFocus (e: Event) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: Event) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n onChange () {\n if (this.isDisabled || this.isReadonly || this.isActive) return\n\n this.toggle()\n },\n onKeydown: () => {}, // Override default with noop\n },\n\n render (h): VNode {\n const data: VNodeData = {\n staticClass: 'v-radio',\n class: this.classes,\n on: mergeListeners({\n click: this.onChange,\n }, this.listeners$),\n attrs: { title: this.attrs$.title },\n }\n\n return h('div', data, [\n this.genRadio(),\n this.genLabel(),\n ])\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"d-flex justify-center\"},[_c('div',[_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.estado_visita !== 'APROBADO'},on:{\"click\":_vm.openShowConfirmarVisita}},[(_vm.tipo === 'agenda')?_c('v-icon',{attrs:{\"color\":_vm.confirmar_visita ? 'green' : 'grey'}},[_vm._v(\" \"+_vm._s(_vm.confirmar_visita ? 'mdi-check-circle' : \"mdi-circle-outline\")+\" \")]):_vm._e(),(_vm.tipo === 'calendario')?_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check \")]):_vm._e()],1)],1),_c('v-dialog',{attrs:{\"width\":\"600px\",\"persistent\":\"\"},model:{value:(_vm.showConfirmarVisita),callback:function ($$v) {_vm.showConfirmarVisita=$$v},expression:\"showConfirmarVisita\"}},[_c('v-card',[_c('div',{staticClass:\"pa-3 grey darken-4 d-flex justify-space-between align-center\"},[_c('v-layout',[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"color\":\"amber darken-1\"}},[_vm._v(\"mdi-timeline-check\")]),_c('h3',{staticClass:\"ma-0 amber--text text--darken-1\"},[_vm._v(\" Confirmar Visita \")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"color\":\"white\"},on:{\"click\":_vm.closeShowConfirmarVisita}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',{staticClass:\"py-3 px-6\"},[_c('v-form',{ref:\"formConfirmar\",on:{\"submit\":function($event){$event.preventDefault();return _vm.agendarVisita.apply(null, arguments)}}},[_c('p',{staticClass:\"mx-10 text-center\"},[_vm._v(\" El cuestionario que se presenta es muy importante para obtener y clasificar los datos de la visita. \")]),_c('div',{staticClass:\"mb-3\"},[_c('p',{staticClass:\"mb-2 font-weight-bold\"},[_vm._v(\"¿Señala interés en algún producto?\")]),_c('v-row',{staticClass:\"mt-1 mb-3 mx-3\"},[_c('v-col',{staticClass:\"ma-0 pa-0\",attrs:{\"cols\":\"12\",\"md\":\"5\"}},[_c('v-radio-group',{staticClass:\"ma-0 ml-5\",attrs:{\"row\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.radioButtons},model:{value:(_vm.data_form.interes_producto),callback:function ($$v) {_vm.$set(_vm.data_form, \"interes_producto\", $$v)},expression:\"data_form.interes_producto\"}},[_c('v-radio',{attrs:{\"value\":\"true\",\"label\":\"Si\"}}),_c('v-radio',{attrs:{\"value\":\"false\",\"label\":\"No\"}})],1)],1),_c('v-col',{staticClass:\"ma-0 pa-0\",attrs:{\"cols\":\"12\",\"md\":\"7\"}},[_c('v-expand-transition',[(_vm.data_form.interes_producto === 'true')?_c('div',{},[_c('v-autocomplete',{attrs:{\"outlined\":\"\",\"dense\":\"\",\"items\":_vm.productos,\"item-value\":\"id_producto\",\"item-text\":\"descripcion\",\"clearable\":\"\",\"multiple\":\"\",\"label\":\"Productos de interés\",\"hide-details\":\"auto\",\"rules\":_vm.rules.selectProductos},model:{value:(_vm.data_form.productos_visita),callback:function ($$v) {_vm.$set(_vm.data_form, \"productos_visita\", $$v)},expression:\"data_form.productos_visita\"}})],1):_vm._e()])],1)],1),_c('v-divider',{staticClass:\"my-3\"})],1),_c('div',{staticClass:\"mb-3\"},[_c('p',{staticClass:\"mb-2 font-weight-bold\"},[_vm._v(\"¿Se deja el catálogo?\")]),_c('v-row',{staticClass:\"mt-1 mb-3 mx-3\"},[_c('v-col',{staticClass:\"ma-0 pa-0\",attrs:{\"cols\":\"12\",\"md\":\"5\"}},[_c('v-radio-group',{staticClass:\"ma-0 ml-5\",attrs:{\"row\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.radioButtons},model:{value:(_vm.data_form.catalogo),callback:function ($$v) {_vm.$set(_vm.data_form, \"catalogo\", $$v)},expression:\"data_form.catalogo\"}},[_c('v-radio',{attrs:{\"value\":\"true\",\"label\":\"Si\"}}),_c('v-radio',{attrs:{\"value\":\"false\",\"label\":\"No\"}})],1)],1)],1),_c('v-divider',{staticClass:\"my-3\"})],1),_c('div',{staticClass:\"mb-3\"},[_c('p',{staticClass:\"mb-2 font-weight-bold\"},[_vm._v(\"¿Se otorga muestra?\")]),_c('v-row',{staticClass:\"mt-1 mb-3 mx-3\"},[_c('v-col',{staticClass:\"ma-0 pa-0\",attrs:{\"cols\":\"12\",\"md\":\"5\"}},[_c('v-radio-group',{staticClass:\"ma-0 ml-5\",attrs:{\"row\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.radioButtons},model:{value:(_vm.data_form.muestra),callback:function ($$v) {_vm.$set(_vm.data_form, \"muestra\", $$v)},expression:\"data_form.muestra\"}},[_c('v-radio',{attrs:{\"value\":\"true\",\"label\":\"Si\"}}),_c('v-radio',{attrs:{\"value\":\"false\",\"label\":\"No\"}})],1)],1),_c('v-col',{staticClass:\"ma-0 pa-0\",attrs:{\"cols\":\"12\",\"md\":\"7\"}},[_c('v-expand-transition',[(_vm.data_form.muestra === 'true')?_c('div',{},[_c('v-select',{attrs:{\"outlined\":\"\",\"dense\":\"\",\"items\":_vm.muestras,\"clearable\":\"\",\"label\":\"Tipo de muestra\",\"hide-details\":\"auto\",\"rules\":_vm.rules.selectMuestra},model:{value:(_vm.data_form.tipo_muestra),callback:function ($$v) {_vm.$set(_vm.data_form, \"tipo_muestra\", $$v)},expression:\"data_form.tipo_muestra\"}})],1):_vm._e()])],1)],1),_c('v-divider',{staticClass:\"my-3\"})],1),_c('v-textarea',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"auto-grow\":\"\",\"label\":\"Escriba un seguimiento de cierre para esta agenda.\",\"prepend-inner-icon\":\"mdi-comment\",\"rows\":\"2\",\"row-height\":\"3\",\"rules\":_vm.rules.observacion,\"counter\":\"\",\"maxlength\":\"500\",\"hide-details\":\"auto\",\"hint\":\"máximo 500 caracteres\"},model:{value:(_vm.data_form.observacion),callback:function ($$v) {_vm.$set(_vm.data_form, \"observacion\", $$v)},expression:\"data_form.observacion\"}}),_c('v-divider',{staticClass:\"my-5\"}),_c('v-layout',{attrs:{\"justify-end\":\"\"}},[_c('v-btn',{staticClass:\"mr-3\",attrs:{\"outlined\":\"\",\"color\":\"red\"},on:{\"click\":_vm.closeShowConfirmarVisita}},[_vm._v(\"Cancelar\")]),_c('v-btn',{staticClass:\"white--text\",attrs:{\"type\":\"submit\",\"depressed\":\"\",\"color\":\"green\"}},[_vm._v(\"Confirmar visita\")])],1)],1)],1)],1)],1)],1),(_vm.loading)?_c('LoadingIndicator'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmarVisita.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmarVisita.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ConfirmarVisita.vue?vue&type=template&id=f05b0344\"\nimport script from \"./ConfirmarVisita.vue?vue&type=script&lang=js\"\nexport * from \"./ConfirmarVisita.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const listeners = Object.keys(this.$listeners)\n .filter(key => key.endsWith(suffix))\n .reduce((acc, key) => {\n acc[key] = { event: key.slice(0, -suffix.length) }\n return acc\n }, {} as MouseEvents)\n\n return this.getMouseEventHandlers({\n ...listeners,\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n }, getData, eventFirst)\n },\n getMouseEventHandlers (events: MouseEvents, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n // TODO: VCalendar emits the calendar event as the first argument,\n // but it really should be the native event instead so modifiers can be used\n if (eventFirst) {\n this.$emit(event, e, getData(e))\n } else {\n this.$emit(event, getData(e), e)\n }\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\n },\n})\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./calendario_agenda_comercial.vue?vue&type=style&index=0&id=1656a782&prod&lang=css\"","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}