项目原始demo,不改动
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
Este repositorio está archivado. Puede ver los archivos y clonarlo, pero no puede subir cambios o reportar incidencias ni pedir Pull Requests.
 
 
 
 

69 líneas
1.4 KiB

  1. // Mixins
  2. import Delayable from '../../mixins/delayable';
  3. import Toggleable from '../../mixins/toggleable'; // Utilities
  4. import mixins from '../../util/mixins';
  5. import { consoleWarn } from '../../util/console';
  6. export default mixins(Delayable, Toggleable
  7. /* @vue/component */
  8. ).extend({
  9. name: 'v-hover',
  10. props: {
  11. disabled: {
  12. type: Boolean,
  13. default: false
  14. },
  15. value: {
  16. type: Boolean,
  17. default: undefined
  18. }
  19. },
  20. methods: {
  21. onMouseEnter() {
  22. this.runDelay('open');
  23. },
  24. onMouseLeave() {
  25. this.runDelay('close');
  26. }
  27. },
  28. render() {
  29. if (!this.$scopedSlots.default && this.value === undefined) {
  30. consoleWarn('v-hover is missing a default scopedSlot or bound value', this);
  31. return null;
  32. }
  33. let element;
  34. /* istanbul ignore else */
  35. if (this.$scopedSlots.default) {
  36. element = this.$scopedSlots.default({
  37. hover: this.isActive
  38. });
  39. }
  40. if (Array.isArray(element) && element.length === 1) {
  41. element = element[0];
  42. }
  43. if (!element || Array.isArray(element) || !element.tag) {
  44. consoleWarn('v-hover should only contain a single element', this);
  45. return element;
  46. }
  47. if (!this.disabled) {
  48. element.data = element.data || {};
  49. this._g(element.data, {
  50. mouseenter: this.onMouseEnter,
  51. mouseleave: this.onMouseLeave
  52. });
  53. }
  54. return element;
  55. }
  56. });
  57. //# sourceMappingURL=VHover.js.map