index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import baseComponent from '../helpers/baseComponent'
  2. import classNames from '../helpers/libs/classNames'
  3. baseComponent({
  4. relations: {
  5. '../grid/index': {
  6. type: 'child',
  7. observer() {
  8. this.callDebounceFn(this.changeCurrent)
  9. },
  10. },
  11. },
  12. properties: {
  13. prefixCls: {
  14. type: String,
  15. value: 'wux-grids',
  16. },
  17. col: {
  18. type: Number,
  19. value: 3,
  20. observer: 'changeCurrent',
  21. },
  22. bordered: {
  23. type: Boolean,
  24. value: true,
  25. observer: 'changeCurrent',
  26. },
  27. square: {
  28. type: Boolean,
  29. value: false,
  30. observer: 'changeCurrent',
  31. },
  32. },
  33. computed: {
  34. classes: ['prefixCls, bordered', function(prefixCls, bordered) {
  35. const wrap = classNames(prefixCls, {
  36. [`${prefixCls}--bordered`]: bordered,
  37. })
  38. return {
  39. wrap,
  40. }
  41. }],
  42. },
  43. methods: {
  44. changeCurrent() {
  45. const elements = this.getRelationsByName('../grid/index')
  46. const { col, bordered, square } = this.data
  47. const colNum = parseInt(col) > 0 ? parseInt(col) : 1
  48. const width = `${100 / colNum}%`
  49. if (elements.length > 0) {
  50. elements.forEach((element, index) => {
  51. element.changeCurrent(width, bordered, square, index)
  52. })
  53. }
  54. },
  55. },
  56. })