项目原始demo,不改动
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 

64 lines
1.4 KiB

  1. // Mixins
  2. import { factory as GroupableFactory } from '../../mixins/groupable'; // Utilities
  3. import mixins from '../../util/mixins';
  4. import { consoleWarn } from '../../util/console'; // Types
  5. import Vue from 'vue';
  6. /* @vue/component */
  7. export const BaseItem = Vue.extend({
  8. props: {
  9. activeClass: String,
  10. value: {
  11. required: false
  12. }
  13. },
  14. data: () => ({
  15. isActive: false
  16. }),
  17. methods: {
  18. toggle() {
  19. this.isActive = !this.isActive;
  20. }
  21. },
  22. render() {
  23. if (!this.$scopedSlots.default) {
  24. consoleWarn('v-item is missing a default scopedSlot', this);
  25. return null;
  26. }
  27. let element;
  28. /* istanbul ignore else */
  29. if (this.$scopedSlots.default) {
  30. element = this.$scopedSlots.default({
  31. active: this.isActive,
  32. toggle: this.toggle
  33. });
  34. }
  35. if (Array.isArray(element) && element.length === 1) {
  36. element = element[0];
  37. }
  38. if (!element || Array.isArray(element) || !element.tag) {
  39. consoleWarn('v-item should only contain a single element', this);
  40. return element;
  41. }
  42. element.data = this._b(element.data || {}, element.tag, {
  43. class: {
  44. [this.activeClass]: this.isActive
  45. }
  46. });
  47. return element;
  48. }
  49. });
  50. export default mixins(BaseItem, GroupableFactory('itemGroup', 'v-item', 'v-item-group')).extend({
  51. name: 'v-item'
  52. });
  53. //# sourceMappingURL=VItem.js.map