index.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var component_1 = require('./../common/component.js');
  4. var nextTick = function nextTick() {
  5. return new Promise(function (resolve) {
  6. return setTimeout(resolve, 20);
  7. });
  8. };
  9. component_1.VantComponent({
  10. classes: ['title-class', 'content-class'],
  11. relation: {
  12. name: 'collapse',
  13. type: 'ancestor',
  14. linked: function linked(parent) {
  15. this.parent = parent;
  16. }
  17. },
  18. props: {
  19. name: null,
  20. title: null,
  21. value: null,
  22. icon: String,
  23. label: String,
  24. disabled: Boolean,
  25. clickable: Boolean,
  26. border: {
  27. type: Boolean,
  28. value: true
  29. },
  30. isLink: {
  31. type: Boolean,
  32. value: true
  33. }
  34. },
  35. data: {
  36. contentHeight: 0,
  37. expanded: false,
  38. transition: false
  39. },
  40. mounted: function mounted() {
  41. var _this = this;
  42. this.updateExpanded().then(nextTick).then(function () {
  43. var data = { transition: true };
  44. if (_this.data.expanded) {
  45. data.contentHeight = 'auto';
  46. }
  47. _this.set(data);
  48. });
  49. },
  50. methods: {
  51. updateExpanded: function updateExpanded() {
  52. if (!this.parent) {
  53. return Promise.resolve();
  54. }
  55. var _a = this.parent.data,
  56. value = _a.value,
  57. accordion = _a.accordion;
  58. var _b = this.parent.children,
  59. children = _b === void 0 ? [] : _b;
  60. var name = this.data.name;
  61. var index = children.indexOf(this);
  62. var currentName = name == null ? index : name;
  63. var expanded = accordion ? value === currentName : (value || []).some(function (name) {
  64. return name === currentName;
  65. });
  66. var stack = [];
  67. if (expanded !== this.data.expanded) {
  68. stack.push(this.updateStyle(expanded));
  69. }
  70. stack.push(this.set({ index: index, expanded: expanded }));
  71. return Promise.all(stack);
  72. },
  73. updateStyle: function updateStyle(expanded) {
  74. var _this = this;
  75. return this.getRect('.van-collapse-item__content').then(function (rect) {
  76. return rect.height;
  77. }).then(function (height) {
  78. if (expanded) {
  79. return _this.set({
  80. contentHeight: height ? height + "px" : 'auto'
  81. });
  82. }
  83. return _this.set({ contentHeight: height + "px" }).then(nextTick).then(function () {
  84. return _this.set({ contentHeight: 0 });
  85. });
  86. });
  87. },
  88. onClick: function onClick() {
  89. if (this.data.disabled) {
  90. return;
  91. }
  92. var _a = this.data,
  93. name = _a.name,
  94. expanded = _a.expanded;
  95. var index = this.parent.children.indexOf(this);
  96. var currentName = name == null ? index : name;
  97. this.parent.switch(currentName, !expanded);
  98. },
  99. onTransitionEnd: function onTransitionEnd() {
  100. if (this.data.expanded) {
  101. this.set({
  102. contentHeight: 'auto'
  103. });
  104. }
  105. }
  106. }
  107. });
  108. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIk9iamVjdCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwibmV4dFRpY2siLCJzZXRUaW1lb3V0IiwiY2xhc3NlcyIsInJlbGF0aW9uIiwibmFtZSIsInR5cGUiLCJsaW5rZWQiLCJwcm9wcyIsInRpdGxlIiwiaWNvbiIsImxhYmVsIiwiZGlzYWJsZWQiLCJjbGlja2FibGUiLCJib3JkZXIiLCJpc0xpbmsiLCJkYXRhIiwiY29udGVudEhlaWdodCIsImV4cGFuZGVkIiwidHJhbnNpdGlvbiIsIm1vdW50ZWQiLCJfdGhpcyIsIm1ldGhvZHMiLCJ1cGRhdGVFeHBhbmRlZCIsIlByb21pc2UiLCJfYSIsImFjY29yZGlvbiIsIl9iIiwiY2hpbGRyZW4iLCJpbmRleCIsImN1cnJlbnROYW1lIiwic3RhY2siLCJ1cGRhdGVTdHlsZSIsInJlY3QiLCJoZWlnaHQiLCJvbkNsaWNrIiwib25UcmFuc2l0aW9uRW5kIl0sIm1hcHBpbmdzIjoiOztBQUNBQSxPQUFBQSxjQUFBQSxDQUFBQSxPQUFBQSxFQUFBQSxZQUFBQSxFQUE2QyxFQUFFQyxPQUEvQ0QsSUFBNkMsRUFBN0NBO0FBQ0EsSUFBSUUsY0FBY0MsUUFBbEIsMEJBQWtCQSxDQUFsQjtBQUNBLElBQUlDLFdBQVcsU0FBWEEsUUFBVyxHQUFZO0FBQUUsV0FBTyxJQUFBLE9BQUEsQ0FBWSxVQUFBLE9BQUEsRUFBbUI7QUFBRSxlQUFPQyxXQUFBQSxPQUFBQSxFQUFQLEVBQU9BLENBQVA7QUFBeEMsS0FBTyxDQUFQO0FBQTdCLENBQUE7QUFDQUgsWUFBQUEsYUFBQUEsQ0FBMEI7QUFDdEJJLGFBQVMsQ0FBQSxhQUFBLEVBRGEsZUFDYixDQURhO0FBRXRCQyxjQUFVO0FBQ05DLGNBRE0sVUFBQTtBQUVOQyxjQUZNLFVBQUE7QUFHTkMsZ0JBQVEsU0FBQSxNQUFBLENBQUEsTUFBQSxFQUFrQjtBQUN0QixpQkFBQSxNQUFBLEdBQUEsTUFBQTtBQUNIO0FBTEssS0FGWTtB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WUFBWTtBQUFFLDJCQUFPYixNQUFBQSxHQUFBQSxDQUFVLEVBQUVKLGVBQW5CLENBQWlCLEVBQVZJLENBQVA7QUFGeEIsaUJBQU8sQ0FBUDtBQVJKLGFBQU8sQ0FBUDtBQXRCQyxTQUFBO0FBbUNMYyxpQkFBUyxTQUFBLE9BQUEsR0FBWTtBQUNqQixnQkFBSSxLQUFBLElBQUEsQ0FBSixRQUFBLEVBQXdCO0FBQ3BCO0FBQ0g7QUFDRCxnQkFBSVYsS0FBSyxLQUFULElBQUE7QUFBQSxnQkFBb0JwQixPQUFPb0IsR0FBM0IsSUFBQTtBQUFBLGdCQUFvQ1AsV0FBV08sR0FBL0MsUUFBQTtBQUNBLGdCQUFJSSxRQUFRLEtBQUEsTUFBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQVosSUFBWSxDQUFaO0FBQ0EsZ0JBQUlDLGNBQWN6QixRQUFBQSxJQUFBQSxHQUFBQSxLQUFBQSxHQUFsQixJQUFBO0FBQ0EsaUJBQUEsTUFBQSxDQUFBLE1BQUEsQ0FBQSxXQUFBLEVBQWdDLENBQWhDLFFBQUE7QUExQ0MsU0FBQTtBQTRDTCtCLHlCQUFpQixTQUFBLGVBQUEsR0FBWTtBQUN6QixnQkFBSSxLQUFBLElBQUEsQ0FBSixRQUFBLEVBQXdCO0FBQ3BCLHFCQUFBLEdBQUEsQ0FBUztBQUNMbkIsbUNBQWU7QUFEVixpQkFBVDtBQUdIO0FBQ0o7QUFsREk7QUEzQ2EsQ0FBMUJsQiIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbXBvbmVudF8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9jb21wb25lbnRcIik7XG52YXIgbmV4dFRpY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gc2V0VGltZW91dChyZXNvbHZlLCAyMCk7IH0pOyB9O1xuY29tcG9uZW50XzEuVmFudENvbXBvbmVudCh7XG4gICAgY2xhc3NlczogWyd0aXRsZS1jbGFzcycsICdjb250ZW50LWNsYXNzJ10sXG4gICAgcmVsYXRpb246IHtcbiAgICAgICAgbmFtZTogJ2NvbGxhcHNlJyxcbiAgICAgICAgdHlwZTogJ2FuY2VzdG9yJyxcbiAgICAgICAgbGlua2VkOiBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgdGl0bGU6IG51bGwsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICBpY29uOiBTdHJpbmcsXG4gICAgICAgIGxhYmVsOiBTdHJpbmcsXG4gICAgICAgIGRpc2FibGVkOiBCb29sZWFuLFxuICAgICAgICBjbGlja2FibGU6IEJvb2xlYW4sXG4gICAgICAgIGJvcmRlcjoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHZhbHVlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGlzTGluazoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHZhbHVlOiB0cnVlXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGRhdGE6IHtcbiAgICAgICAgY29udGVudEhlaWdodDogMCxcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICB0cmFuc2l0aW9uOiBmYWxzZVxuICAgIH0sXG4gICAgbW91bnRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnVwZGF0ZUV4cGFuZGVkKClcbiAgICAgICAgICAgIC50aGVuKG5leHRUaWNrKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSB7IHRyYW5zaXRpb246IHRydWUgfTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5kYXRhLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5jb250ZW50SGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuc2V0KGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgdXBkYXRlRXhwYW5kZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLnBhcmVudC5kYXRhLCB2YWx1ZSA9IF9hLnZhbHVlLCBhY2NvcmRpb24gPSBfYS5hY2NvcmRpb247XG4gICAgICAgICAgICB2YXIgX2IgPSB0aGlzLnBhcmVudC5jaGlsZHJlbiwgY2hpbGRyZW4gPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5kYXRhLm5hbWU7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBjaGlsZHJlbi5pbmRleE9mKHRoaXMpO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnROYW1lID0gbmFtZSA9PSBudWxsID8gaW5kZXggOiBuYW1lO1xuICAgICAgICAgICAgdmFyIGV4cGFuZGVkID0gYWNjb3JkaW9uXG4gICAgICAgICAgICAgICAgPyB2YWx1ZSA9PT0gY3VycmVudE5hbWVcbiAgICAgICAgICAgICAgICA6ICh2YWx1ZSB8fCBbXSkuc29tZShmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbmFtZSA9PT0gY3VycmVudE5hbWU7IH0pO1xuICAgICAgICAgICAgdmFyIHN0YWNrID0gW107XG4gICAgICAgICAgICBpZiAoZXhwYW5kZWQgIT09IHRoaXMuZGF0YS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy51cGRhdGVTdHlsZShleHBhbmRlZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnNldCh7IGluZGV4OiBpbmRleCwgZXhwYW5kZWQ6IGV4cGFuZGVkIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChzdGFjayk7XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZVN0eWxlOiBmdW5jdGlvbiAoZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSZWN0KCcudmFuLWNvbGxhcHNlLWl0ZW1fX2NvbnRlbnQnKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZWN0KSB7IHJldHVybiByZWN0LmhlaWdodDsgfSlcbiAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudEhlaWdodDogaGVpZ2h0ID8gaGVpZ2h0ICsgXCJweFwiIDogJ2F1dG8nXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0KHsgY29udGVudEhlaWdodDogaGVpZ2h0ICsgXCJweFwiIH0pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKG5leHRUaWNrKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5zZXQoeyBjb250ZW50SGVpZ2h0OiAwIH0pOyB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5kYXRhLCBuYW1lID0gX2EubmFtZSwgZXhwYW5kZWQgPSBfYS5leHBhbmRlZDtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcyk7XG4gICAgICAgICAgICB2YXIgY3VycmVudE5hbWUgPSBuYW1lID09IG51bGwgPyBpbmRleCA6IG5hbWU7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5zd2l0Y2goY3VycmVudE5hbWUsICFleHBhbmRlZCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uVHJhbnNpdGlvbkVuZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudEhlaWdodDogJ2F1dG8nXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59KTtcbiJdLCJmaWxlIjoiaW5kZXguanMifQ==