null
\n * @param top {Number?null} Vertical scroll position, keeps current if value is null
\n * @param animate {Boolean?false} Whether the scrolling should happen using an animation\n * @param zoom {Number?null} Zoom level to go to\n */\n scrollTo(left, top, animate, zoom = 1) {\n // Stop deceleration\n if (this._isDecelerating) {\n Animate.stop(this._isDecelerating)\n this._isDecelerating = false\n }\n\n // Correct coordinates based on new zoom level\n if (zoom != null && zoom !== this._zoomLevel) {\n if (!this.options.zooming) {\n warn('Zooming is not enabled!')\n }\n zoom = zoom ? zoom : 1\n left *= zoom\n top *= zoom\n\n // // Recompute maximum values while temporary tweaking maximum scroll ranges\n this._computeScrollMax(zoom)\n } else {\n // Keep zoom when not defined\n zoom = this._zoomLevel\n }\n\n if (!this.options.scrollingX) {\n left = this._scrollLeft\n } else {\n if (this.options.paging) {\n left = Math.round(left / this._clientWidth) * this._clientWidth\n } else if (this.options.snapping) {\n left = Math.round(left / this._snapWidth) * this._snapWidth\n }\n }\n\n if (!this.options.scrollingY) {\n top = this._scrollTop\n } else {\n if (this.options.paging) {\n top = Math.round(top / this._clientHeight) * this._clientHeight\n } else if (this.options.snapping) {\n top = Math.round(top / this._snapHeight) * this._snapHeight\n }\n }\n\n // Limit for allowed ranges\n left = Math.max(Math.min(this._maxScrollLeft, left), 0)\n top = Math.max(Math.min(this._maxScrollTop, top), 0)\n\n // Don't animate when no change detected, still call publish to make sure\n // that rendered position is really in-sync with internal data\n if (left === this._scrollLeft && top === this._scrollTop) {\n animate = false\n }\n // Publish new values\n if (!this._isTracking) {\n this._publish(left, top, zoom, animate)\n }\n }\n\n /**\n * Zooms to the given level. Supports optional animation. Zooms\n * the center when no coordinates are given.\n *\n * @param level {Number} Level to zoom to\n * @param animate {Boolean ? false} Whether to use animation\n * @param originLeft {Number ? null} Zoom in at given left coordinate\n * @param originTop {Number ? null} Zoom in at given top coordinate\n * @param callback {Function ? null} A callback that gets fired when the zoom is complete.\n */\n zoomTo(level, animate, originLeft, originTop, callback) {\n if (!this.options.zooming) {\n warn('Zooming is not enabled!')\n }\n\n // Add callback if exists\n if (callback) {\n this._zoomComplete = callback\n }\n\n // Stop deceleration\n if (this._isDecelerating) {\n Animate.stop(this._isDecelerating)\n this._isDecelerating = false\n }\n\n const oldLevel = this._zoomLevel\n\n // Normalize input origin to center of viewport if not defined\n if (originLeft == null) {\n originLeft = this._clientWidth / 2\n }\n\n if (originTop == null) {\n originTop = this._clientHeight / 2\n }\n\n // Limit level according to configuration\n level = Math.max(Math.min(level, this.options.maxZoom), this.options.minZoom)\n\n // Recompute maximum values while temporary tweaking maximum scroll ranges\n this._computeScrollMax(level)\n\n // Recompute left and top coordinates based on new zoom level\n let left = (originLeft + this._scrollLeft) * level / oldLevel - originLeft\n let top = (originTop + this._scrollTop) * level / oldLevel - originTop\n\n // Limit x-axis\n if (left > this._maxScrollLeft) {\n left = this._maxScrollLeft\n } else if (left < 0) {\n left = 0\n }\n\n // Limit y-axis\n if (top > this._maxScrollTop) {\n top = this._maxScrollTop\n } else if (top < 0) {\n top = 0\n }\n\n // Push values out\n this._publish(left, top, level, animate)\n }\n\n doTouchStart(touches, timeStamp) {\n // Array-like check is enough here\n if (touches.length == null) {\n warn(`Invalid touch list: ${touches}`)\n }\n if (timeStamp instanceof Date) {\n timeStamp = timeStamp.valueOf()\n }\n if (typeof timeStamp !== 'number') {\n warn(`Invalid timestamp value: ${timeStamp}`)\n }\n\n // Reset interruptedAnimation flag\n this._interruptedAnimation = true\n\n // Stop deceleration\n if (this._isDecelerating) {\n Animate.stop(this._isDecelerating)\n this._isDecelerating = false\n this._interruptedAnimation = true\n }\n\n // Stop animation\n if (this._isAnimating) {\n Animate.stop(this._isAnimating)\n this._isAnimating = false\n this._interruptedAnimation = true\n }\n\n // Use center point when dealing with two fingers\n const isSingleTouch = touches.length === 1\n let currentTouchLeft, currentTouchTop\n\n if (isSingleTouch) {\n currentTouchLeft = touches[0].pageX\n currentTouchTop = touches[0].pageY\n } else {\n currentTouchLeft = Math.abs(touches[0].pageX + touches[1].pageX) / 2\n currentTouchTop = Math.abs(touches[0].pageY + touches[1].pageY) / 2\n }\n\n // Store initial positions\n this._initialTouchLeft = currentTouchLeft\n this._initialTouchTop = currentTouchTop\n\n // Store current zoom level\n this._zoomLevelStart = this._zoomLevel\n\n // Store initial touch positions\n this._lastTouchLeft = currentTouchLeft\n this._lastTouchTop = currentTouchTop\n\n // Store initial move time stamp\n this._lastTouchMove = timeStamp\n\n // Reset initial scale\n this._lastScale = 1\n\n // Reset locking flags\n this._enableScrollX = !isSingleTouch && this.options.scrollingX\n this._enableScrollY = !isSingleTouch && this.options.scrollingY\n\n // Reset tracking flag\n this._isTracking = true\n\n // Reset deceleration complete flag\n this._didDecelerationComplete = false\n\n // Dragging starts directly with two fingers, otherwise lazy with an offset\n this._isDragging = !isSingleTouch\n\n // Some features are disabled in multi touch scenarios\n this._isSingleTouch = isSingleTouch\n\n // Clearing data structure\n this._positions = []\n }\n\n doTouchMove(touches, timeStamp, scale) {\n // Array-like check is enough here\n if (touches.length == null) {\n warn(`Invalid touch list: ${touches}`)\n }\n\n if (timeStamp instanceof Date) {\n timeStamp = timeStamp.valueOf()\n }\n\n if (typeof timeStamp !== 'number') {\n warn(`Invalid timestamp value: ${timeStamp}`)\n }\n\n // Ignore event when tracking is not enabled (event might be outside of element)\n if (!this._isTracking) {\n return\n }\n\n let currentTouchLeft, currentTouchTop\n\n // Compute move based around of center of fingers\n if (touches.length === 2) {\n currentTouchLeft = Math.abs(touches[0].pageX + touches[1].pageX) / 2\n currentTouchTop = Math.abs(touches[0].pageY + touches[1].pageY) / 2\n } else {\n currentTouchLeft = touches[0].pageX\n currentTouchTop = touches[0].pageY\n }\n\n const positions = this._positions\n\n // Are we already is dragging mode?\n if (this._isDragging) {\n // Compute move distance\n const moveX = currentTouchLeft - this._lastTouchLeft\n const moveY = currentTouchTop - this._lastTouchTop\n\n // Read previous scroll position and zooming\n let scrollLeft = this._scrollLeft\n let scrollTop = this._scrollTop\n let level = this._zoomLevel\n\n // Work with scaling\n if (scale != null && this.options.zooming) {\n const oldLevel = level\n\n // Recompute level based on previous scale and new scale\n level = level / this._lastScale * scale\n\n // Limit level according to configuration\n level = Math.max(Math.min(level, this.options.maxZoom), this.options.minZoom)\n\n // Only do further compution when change happened\n if (oldLevel !== level) {\n // Compute relative event position to container\n var currentTouchLeftRel = currentTouchLeft - this._clientLeft\n var currentTouchTopRel = currentTouchTop - this._clientTop\n\n // Recompute left and top coordinates based on new zoom level\n scrollLeft = (currentTouchLeftRel + scrollLeft) * level / oldLevel - currentTouchLeftRel\n scrollTop = (currentTouchTopRel + scrollTop) * level / oldLevel - currentTouchTopRel\n\n // Recompute max scroll values\n this._computeScrollMax(level)\n }\n }\n\n if (this._enableScrollX) {\n scrollLeft -= moveX * this.options.speedMultiplier\n const maxScrollLeft = this._maxScrollLeft\n\n if (scrollLeft > maxScrollLeft || scrollLeft < 0) {\n // Slow down on the edges\n if (this.options.bouncing) {\n scrollLeft += moveX / 2 * this.options.speedMultiplier\n } else if (scrollLeft > maxScrollLeft) {\n scrollLeft = maxScrollLeft\n } else {\n scrollLeft = 0\n }\n }\n }\n\n // Compute new vertical scroll position\n if (this._enableScrollY) {\n scrollTop -= moveY * this.options.speedMultiplier\n const maxScrollTop = this._maxScrollTop\n if (scrollTop > maxScrollTop || scrollTop < 0) {\n // Slow down on the edges\n if (this.options.bouncing) {\n scrollTop += moveY / 2 * this.options.speedMultiplier\n // Support pull-to-refresh (only when only y is scrollable)\n if (!this._enableScrollX && this._refreshHeight != null) {\n if (!this._refreshActive && scrollTop <= -this._refreshHeight) {\n this._refreshActive = true\n if (this._refreshActivate) {\n this._refreshActivate()\n }\n } else if (this._refreshActive && scrollTop > -this._refreshHeight) {\n this._refreshActive = false\n if (this._refreshDeactivate) {\n this._refreshDeactivate()\n }\n }\n }\n } else if (scrollTop > maxScrollTop) {\n scrollTop = maxScrollTop\n } else {\n scrollTop = 0\n }\n }\n }\n\n // Keep list from growing infinitely (holding min 10, max 20 measure points)\n if (positions.length > 60) {\n positions.splice(0, 30)\n }\n\n // Track scroll movement for decleration\n positions.push(scrollLeft, scrollTop, timeStamp)\n\n // Sync scroll position\n this._publish(scrollLeft, scrollTop, level)\n\n // Otherwise figure out whether we are switching into dragging mode now.\n } else {\n const minimumTrackingForScroll = this.options.locking ? 3 : 0\n const minimumTrackingForDrag = 5\n\n const distanceX = Math.abs(currentTouchLeft - this._initialTouchLeft)\n const distanceY = Math.abs(currentTouchTop - this._initialTouchTop)\n\n this._enableScrollX = this.options.scrollingX && distanceX >= minimumTrackingForScroll\n this._enableScrollY = this.options.scrollingY && distanceY >= minimumTrackingForScroll\n\n positions.push(this._scrollLeft, this._scrollTop, timeStamp)\n\n this._isDragging =\n (this._enableScrollX || this._enableScrollY) &&\n (distanceX >= minimumTrackingForDrag || distanceY >= minimumTrackingForDrag)\n if (this._isDragging) {\n this._interruptedAnimation = false\n }\n }\n\n // Update last touch positions and time stamp for next event\n this._lastTouchLeft = currentTouchLeft\n this._lastTouchTop = currentTouchTop\n this._lastTouchMove = timeStamp\n }\n\n doTouchEnd(timeStamp) {\n if (timeStamp instanceof Date) {\n timeStamp = timeStamp.valueOf()\n }\n\n if (typeof timeStamp !== 'number') {\n warn(`Invalid timestamp value: ${timeStamp}`)\n }\n // Ignore event when tracking is not enabled (no touchstart event on element)\n // This is required as this listener ('touchmove') sits on the document and not on the element itthis.\n if (!this._isTracking) {\n return\n }\n\n // Not touching anymore (when two finger hit the screen there are two touch end events)\n this._isTracking = false\n\n // Be sure to reset the dragging flag now. Here we also detect whether\n // the finger has moved fast enough to switch into a deceleration animation.\n if (this._isDragging) {\n // Reset dragging flag\n this._isDragging = false\n\n // Start deceleration\n // Verify that the last move detected was in some relevant time frame\n if (this._isSingleTouch && this.options.animating && timeStamp - this._lastTouchMove <= 100) {\n // Then figure out what the scroll position was about 100ms ago\n const positions = this._positions\n const endPos = positions.length - 1\n let startPos = endPos\n\n // Move pointer to position measured 100ms ago\n for (let i = endPos; i > 0 && positions[i] > this._lastTouchMove - 100; i -= 3) {\n startPos = i\n }\n\n // If start and stop position is identical in a 100ms timeframe,\n // we cannot compute any useful deceleration.\n if (startPos !== endPos) {\n // Compute relative movement between these two points\n const timeOffset = positions[endPos] - positions[startPos]\n const movedLeft = this._scrollLeft - positions[startPos - 2]\n const movedTop = this._scrollTop - positions[startPos - 1]\n\n // Based on 50ms compute the movement to apply for each render step\n this._decelerationVelocityX = movedLeft / timeOffset * (1000 / 60)\n this._decelerationVelocityY = movedTop / timeOffset * (1000 / 60)\n\n // How much velocity is required to start the deceleration\n const minVelocityToStartDeceleration =\n this.options.paging || this.options.snapping ? this.options.snappingVelocity : 0.01\n\n // Verify that we have enough velocity to start deceleration\n if (\n Math.abs(this._decelerationVelocityX) > minVelocityToStartDeceleration ||\n Math.abs(this._decelerationVelocityY) > minVelocityToStartDeceleration\n ) {\n // Deactivate pull-to-refresh when decelerating\n if (!this._refreshActive) {\n this._startDeceleration(timeStamp)\n }\n } else {\n this.options.scrollingComplete()\n }\n } else {\n this.options.scrollingComplete()\n }\n } else if (timeStamp - this._lastTouchMove > 100) {\n !this.options.snapping && this.options.scrollingComplete()\n }\n }\n\n // If this was a slower move it is per default non decelerated, but this\n // still means that we want snap back to the bounds which is done here.\n // This is placed outside the condition above to improve edge case stability\n // e.g. touchend fired without enabled dragging. This should normally do not\n // have modified the scroll positions or even showed the scrollbars though.\n if (!this._isDecelerating) {\n if (this._refreshActive && this._refreshStart) {\n // Use publish instead of scrollTo to allow scrolling to out of boundary position\n // We don't need to normalize scrollLeft, zoomLevel, etc. here because we only y-scrolling when pull-to-refresh is enabled\n this._publish(this._scrollLeft, -this._refreshHeight, this._zoomLevel, true)\n\n if (this._refreshStart) {\n this._refreshStart()\n }\n } else {\n if (this._interruptedAnimation || this._isDragging) {\n this.options.scrollingComplete()\n }\n\n this.scrollTo(this._scrollLeft, this._scrollTop, true, this._zoomLevel)\n // Directly signalize deactivation (nothing todo on refresh?)\n if (this._refreshActive) {\n this._refreshActive = false\n if (this._refreshDeactivate) {\n this._refreshDeactivate()\n }\n }\n }\n }\n\n // Fully cleanup list\n this._positions.length = 0\n }\n\n _publish(left, top, zoom = 1, animate = false) {\n // Remember whether we had an animation, then we try to continue based on the current \"drive\" of the animation\n const wasAnimating = this._isAnimating\n\n if (wasAnimating) {\n Animate.stop(wasAnimating)\n this._isAnimating = false\n }\n\n if (animate && this.options.animating) {\n // Keep scheduled positions for scrollBy/zoomBy functionality\n this._scheduledLeft = left\n this._scheduledTop = top\n this._scheduledZoom = zoom\n\n const oldLeft = this._scrollLeft\n const oldTop = this._scrollTop\n const oldZoom = this._zoomLevel\n\n const diffLeft = left - oldLeft\n const diffTop = top - oldTop\n const diffZoom = zoom - oldZoom\n\n const step = (percent, now, render) => {\n if (render) {\n this._scrollLeft = oldLeft + diffLeft * percent\n this._scrollTop = oldTop + diffTop * percent\n this._zoomLevel = oldZoom + diffZoom * percent\n // Push values out\n if (this._callback) {\n this._callback(this._scrollLeft, this._scrollTop, this._zoomLevel)\n }\n }\n }\n\n const verify = id => {\n return this._isAnimating === id\n }\n\n const completed = (renderedFramesPerSecond, animationId, wasFinished) => {\n if (animationId === this._isAnimating) {\n this._isAnimating = false\n }\n\n if (this._didDecelerationComplete || wasFinished) {\n this.options.scrollingComplete()\n }\n\n if (this.options.zooming) {\n this._computeScrollMax()\n if (this._zoomComplete) {\n this._zoomComplete()\n this._zoomComplete = null\n }\n }\n }\n\n const doAnimation = () => {\n // When continuing based on previous animation we choose an ease-out animation instead of ease-in-out\n this._isAnimating = Animate.start(\n step,\n verify,\n completed,\n this.options.animationDuration,\n wasAnimating ? easeOutCubic : easeInOutCubic,\n )\n }\n\n if (this.options.inRequestAnimationFrame) {\n Animate.requestAnimationFrame(() => {\n doAnimation()\n })\n } else {\n doAnimation()\n }\n } else {\n this._scheduledLeft = this._scrollLeft = left\n this._scheduledTop = this._scrollTop = top\n this._scheduledZoom = this._zoomLevel = zoom\n\n // Push values out\n if (this._callback) {\n this._callback(left, top, zoom)\n }\n\n // Fix max scroll ranges\n if (this.options.zooming) {\n this._computeScrollMax()\n if (this._zoomComplete) {\n this._zoomComplete()\n this._zoomComplete = null\n }\n }\n }\n }\n\n _computeScrollMax(zoomLevel) {\n if (zoomLevel == null) {\n zoomLevel = this._zoomLevel\n }\n\n this._maxScrollLeft = Math.max(this._contentWidth * zoomLevel - this._clientWidth, 0)\n this._maxScrollTop = Math.max(this._contentHeight * zoomLevel - this._clientHeight, 0)\n }\n\n _startDeceleration(timeStamp) {\n if (this.options.paging) {\n const scrollLeft = Math.max(Math.min(this._scrollLeft, this._maxScrollLeft), 0)\n const scrollTop = Math.max(Math.min(this._scrollTop, this._maxScrollTop), 0)\n const clientWidth = this._clientWidth\n const clientHeight = this._clientHeight\n\n // We limit deceleration not to the min/max values of the allowed range, but to the size of the visible client area.\n // Each page should have exactly the size of the client area.\n this._minDecelerationScrollLeft = Math.floor(scrollLeft / clientWidth) * clientWidth\n this._minDecelerationScrollTop = Math.floor(scrollTop / clientHeight) * clientHeight\n this._maxDecelerationScrollLeft = Math.ceil(scrollLeft / clientWidth) * clientWidth\n this._maxDecelerationScrollTop = Math.ceil(scrollTop / clientHeight) * clientHeight\n } else {\n this._minDecelerationScrollLeft = 0\n this._minDecelerationScrollTop = 0\n this._maxDecelerationScrollLeft = this._maxScrollLeft\n this._maxDecelerationScrollTop = this._maxScrollTop\n }\n\n // Wrap class method\n const step = (percent, now, render) => {\n this._stepThroughDeceleration(render)\n }\n\n // How much velocity is required to keep the deceleration running\n const minVelocityToKeepDecelerating = this.options.snapping ? this.options.snappingVelocity : 0.01\n\n // Detect whether it's still worth to continue animating steps\n // If we are already slow enough to not being user perceivable anymore, we stop the whole process here.\n const verify = () => {\n const shouldContinue =\n Math.abs(this._decelerationVelocityX) >= minVelocityToKeepDecelerating ||\n Math.abs(this._decelerationVelocityY) >= minVelocityToKeepDecelerating\n if (!shouldContinue) {\n this._didDecelerationComplete = true\n }\n return shouldContinue\n }\n\n const completed = (renderedFramesPerSecond, animationId, wasFinished) => {\n this._isDecelerating = false\n // if (this._didDecelerationComplete) {\n // this.options.scrollingComplete()\n // }\n\n // Animate to grid when snapping is active, otherwise just fix out-of-boundary positions\n this.scrollTo(this._scrollLeft, this._scrollTop, this.options.snapping)\n }\n\n // Start animation and switch on flag\n this._isDecelerating = Animate.start(step, verify, completed)\n }\n\n _stepThroughDeceleration(render) {\n //\n // COMPUTE NEXT SCROLL POSITION\n //\n\n // Add deceleration to scroll position\n let scrollLeft = this._scrollLeft + this._decelerationVelocityX\n let scrollTop = this._scrollTop + this._decelerationVelocityY\n\n //\n // HARD LIMIT SCROLL POSITION FOR NON BOUNCING MODE\n //\n\n if (!this.options.bouncing) {\n var scrollLeftFixed = Math.max(\n Math.min(this._maxDecelerationScrollLeft, scrollLeft),\n this._minDecelerationScrollLeft,\n )\n if (scrollLeftFixed !== scrollLeft) {\n scrollLeft = scrollLeftFixed\n this._decelerationVelocityX = 0\n }\n var scrollTopFixed = Math.max(Math.min(this._maxDecelerationScrollTop, scrollTop), this._minDecelerationScrollTop)\n if (scrollTopFixed !== scrollTop) {\n scrollTop = scrollTopFixed\n this._decelerationVelocityY = 0\n }\n }\n\n //\n // UPDATE SCROLL POSITION\n //\n\n if (render) {\n this._publish(scrollLeft, scrollTop, this._zoomLevel)\n } else {\n this._scrollLeft = scrollLeft\n this._scrollTop = scrollTop\n }\n\n //\n // SLOW DOWN\n //\n\n // Slow down velocity on every iteration\n if (!this.options.paging) {\n // This is the factor applied to every iteration of the animation\n // to slow down the process. This should emulate natural behavior where\n // objects slow down when the initiator of the movement is removed\n var frictionFactor = 0.95\n this._decelerationVelocityX *= frictionFactor\n this._decelerationVelocityY *= frictionFactor\n }\n\n //\n // BOUNCING SUPPORT\n //\n\n if (this.options.bouncing) {\n var scrollOutsideX = 0\n var scrollOutsideY = 0\n\n // This configures the amount of change applied to deceleration/acceleration when reaching boundaries\n var penetrationDeceleration = this.options.penetrationDeceleration\n var penetrationAcceleration = this.options.penetrationAcceleration\n\n // Check limits\n if (scrollLeft < this._minDecelerationScrollLeft) {\n scrollOutsideX = this._minDecelerationScrollLeft - scrollLeft\n } else if (scrollLeft > this._maxDecelerationScrollLeft) {\n scrollOutsideX = this._maxDecelerationScrollLeft - scrollLeft\n }\n\n if (scrollTop < this._minDecelerationScrollTop) {\n scrollOutsideY = this._minDecelerationScrollTop - scrollTop\n } else if (scrollTop > this._maxDecelerationScrollTop) {\n scrollOutsideY = this._maxDecelerationScrollTop - scrollTop\n }\n\n // Slow down until slow enough, then flip back to snap position\n if (scrollOutsideX !== 0) {\n if (scrollOutsideX * this._decelerationVelocityX <= 0) {\n this._decelerationVelocityX += scrollOutsideX * penetrationDeceleration\n } else {\n this._decelerationVelocityX = scrollOutsideX * penetrationAcceleration\n }\n }\n\n if (scrollOutsideY !== 0) {\n if (scrollOutsideY * this._decelerationVelocityY <= 0) {\n this._decelerationVelocityY += scrollOutsideY * penetrationDeceleration\n } else {\n this._decelerationVelocityY = scrollOutsideY * penetrationAcceleration\n }\n }\n }\n }\n}\n\nextend(Scroller.prototype, members)\n","export default {\n props: {\n icon: {\n type: String,\n default: 'checked',\n },\n iconInverse: {\n type: String,\n default: 'check',\n },\n iconDisabled: {\n type: String,\n default: 'check-disabled',\n },\n iconSvg: {\n type: Boolean,\n default: false,\n },\n iconSize: {\n type: String,\n default: 'md',\n },\n iconPosition: {\n type: String,\n default: 'right',\n },\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"md-dialog\"},[_c('md-popup',{attrs:{\"value\":_vm.value,\"hasMask\":_vm.hasMask,\"maskClosable\":_vm.maskClosable,\"position\":\"center\",\"transition\":_vm.transition,\"preventScroll\":_vm.preventScroll,\"preventScrollExclude\":_vm.preventScrollExclude},on:{\"input\":_vm.$_onInput,\"show\":_vm.$_onShow,\"hide\":_vm.$_onHide}},[_c('div',{staticClass:\"md-dialog-content\"},[_vm._t(\"header\"),_c('div',{staticClass:\"md-dialog-body\"},[(_vm.closable)?_c('a',{staticClass:\"md-dialog-close\",attrs:{\"role\":\"button\"},on:{\"click\":_vm.close}},[_c('md-icon',{attrs:{\"name\":\"close\"}})],1):_vm._e(),(_vm.icon)?_c('div',{staticClass:\"md-dialog-icon\"},[_c('md-icon',{attrs:{\"name\":_vm.icon,\"svg\":_vm.iconSvg}})],1):_vm._e(),(_vm.title)?_c('h2',{staticClass:\"md-dialog-title\",domProps:{\"textContent\":_vm._s(_vm.title)}}):_vm._e(),_vm._t(\"default\",function(){return [_c('div',{staticClass:\"md-dialog-text\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})]})],2),_c('footer',{staticClass:\"md-dialog-actions\",class:{ 'is-column': _vm.layout === 'column' }},[_vm._l((_vm.btns),function(btn,index){return [_c('a',{key:index,staticClass:\"md-dialog-btn\",class:{\n disabled: !!btn.disabled,\n warning: !btn.disabled && !!btn.warning\n },attrs:{\"role\":\"button\"},on:{\"click\":function($event){return _vm.$_onClick(btn)},\"touchmove\":function($event){$event.preventDefault();}}},[(btn.loading)?_c('md-activity-indicator-rolling',{staticClass:\"md-dialog-btn-loading\"}):(btn.icon)?_c('md-icon',{staticClass:\"md-dialog-btn-icon\",attrs:{\"name\":btn.icon,\"svg\":btn.iconSvg,\"size\":\"md\"}}):_vm._e(),_vm._v(\" \"+_vm._s(btn.text)+\" \")],1)]})],2)],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n