@mdsfe/mds-ui 0.2.0 → 0.2.9-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/README.md +9 -9
  3. package/dist/_mixin/popper.js +1 -0
  4. package/dist/_util/_popper/dom-helper.js +284 -0
  5. package/dist/_util/_popper/popper-mixin.js +35 -0
  6. package/dist/_util/_popper/popper.js +1267 -0
  7. package/dist/_util/_popper/popup/popup-main.js +224 -0
  8. package/dist/_util/_popper/popup/popup-manager.js +205 -0
  9. package/dist/_util/_popper/vue-popper.js +204 -0
  10. package/dist/_util/popup/index.js +1 -1
  11. package/dist/_util/tree/node.js +2 -0
  12. package/dist/_util/tree/tree.js +65 -21
  13. package/dist/_util/util.js +29 -1
  14. package/dist/affix.js +18 -18
  15. package/dist/anchor.js +18 -18
  16. package/dist/avatar.js +17 -17
  17. package/dist/backtop.js +19 -19
  18. package/dist/badge.js +21 -21
  19. package/dist/bordershadow.js +20 -9
  20. package/dist/breadcrumb.js +18 -18
  21. package/dist/button.js +21 -21
  22. package/dist/card.js +18 -18
  23. package/dist/carousel.js +76 -76
  24. package/dist/cascader.js +4980 -0
  25. package/dist/cascaderpanel.js +645 -603
  26. package/dist/checkbox.js +23 -23
  27. package/dist/col.js +14 -14
  28. package/dist/collapse.js +6 -6
  29. package/dist/color.js +6 -6
  30. package/dist/datepicker.js +2487 -266
  31. package/dist/divider.js +19 -19
  32. package/dist/drawer.js +787 -37
  33. package/dist/dropdown.js +150 -104
  34. package/dist/empty.js +19 -19
  35. package/dist/font/iconfont.28359fa.ttf +0 -0
  36. package/dist/font/iconfont.486e3d3.woff2 +0 -0
  37. package/dist/font/iconfont.675049e.woff +0 -0
  38. package/dist/font.js +6 -6
  39. package/dist/form.js +28 -26
  40. package/dist/icon.js +55 -47
  41. package/dist/index.js +1 -1
  42. package/dist/input.js +65 -49
  43. package/dist/inputnumber.js +59 -39
  44. package/dist/layout.js +25 -25
  45. package/dist/list.js +17 -17
  46. package/dist/loading.js +21 -8
  47. package/dist/mds-ui.min.css +3 -3
  48. package/dist/mds-ui.min.js +19183 -15407
  49. package/dist/menu.js +31 -31
  50. package/dist/message.js +773 -24
  51. package/dist/modal.js +1146 -307
  52. package/dist/notification.js +27 -27
  53. package/dist/pagination.js +78 -55
  54. package/dist/popconfirm.js +36 -36
  55. package/dist/popover.js +2778 -48
  56. package/dist/progress.js +107 -65
  57. package/dist/radio.js +56 -54
  58. package/dist/rate.js +67 -59
  59. package/dist/row.js +14 -14
  60. package/dist/select.js +847 -503
  61. package/dist/slider.js +25 -25
  62. package/dist/slottable.js +2663 -129
  63. package/dist/steps.js +18 -18
  64. package/dist/style/affix.css +224 -2
  65. package/dist/style/anchor.css +224 -2
  66. package/dist/style/avatar.css +224 -2
  67. package/dist/style/badge.css +224 -2
  68. package/dist/style/bordershadow.css +236 -59
  69. package/dist/style/breadcrumb.css +224 -2
  70. package/dist/style/button.css +234 -5
  71. package/dist/style/card.css +224 -2
  72. package/dist/style/carousel.css +224 -2
  73. package/dist/style/cascader.css +214 -0
  74. package/dist/style/cascaderpanel.css +13 -16
  75. package/dist/style/checkbox.css +230 -8
  76. package/dist/style/col.css +225 -3
  77. package/dist/style/collapse.css +224 -2
  78. package/dist/style/color.css +224 -2
  79. package/dist/style/datepicker.css +236 -2
  80. package/dist/style/divider.css +227 -2
  81. package/dist/style/drawer.css +224 -2
  82. package/dist/style/dropdown.css +234 -5
  83. package/dist/style/empty.css +224 -2
  84. package/dist/style/font.css +226 -4
  85. package/dist/style/form.css +224 -2
  86. package/dist/style/icon.css +226 -3
  87. package/dist/style/input.css +231 -5
  88. package/dist/style/inputnumber.css +224 -2
  89. package/dist/style/layout.css +224 -2
  90. package/dist/style/list.css +224 -2
  91. package/dist/style/loading.css +2527 -2
  92. package/dist/style/menu.css +340 -129
  93. package/dist/style/message.css +1 -4
  94. package/dist/style/modal.css +247 -25
  95. package/dist/style/notification.css +224 -2
  96. package/dist/style/pagination.css +236 -7
  97. package/dist/style/popconfirm.css +334 -180
  98. package/dist/style/popover.css +324 -177
  99. package/dist/style/progress.css +226 -3
  100. package/dist/style/radio.css +225 -3
  101. package/dist/style/rate.css +226 -3
  102. package/dist/style/row.css +225 -3
  103. package/dist/style/select.css +240 -12
  104. package/dist/style/slider.css +224 -2
  105. package/dist/style/slottable.css +350 -149
  106. package/dist/style/steps.css +224 -2
  107. package/dist/style/switch.css +224 -2
  108. package/dist/style/table.css +458 -314
  109. package/dist/style/tabs.css +225 -18
  110. package/dist/style/tag.css +224 -2
  111. package/dist/style/text.css +224 -2
  112. package/dist/style/timeline.css +224 -2
  113. package/dist/style/timepicker.css +231 -6
  114. package/dist/style/tooltip.css +340 -129
  115. package/dist/style/tree.css +228 -6
  116. package/dist/style/typography.css +224 -2
  117. package/dist/style/upload.css +224 -2
  118. package/dist/switch.js +20 -20
  119. package/dist/table.js +3071 -201
  120. package/dist/tabs.js +24 -22
  121. package/dist/tag.js +17 -23
  122. package/dist/text.js +38 -22
  123. package/dist/timeline.js +14 -14
  124. package/dist/timepicker.js +3063 -172
  125. package/dist/tooltip.js +2550 -27
  126. package/dist/transfer.js +28 -28
  127. package/dist/transition.js +6 -6
  128. package/dist/tree.js +316 -171
  129. package/dist/typography.js +6 -6
  130. package/dist/upload.js +46 -38
  131. package/package.json +9 -5
@@ -0,0 +1,224 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+ exports.PopupMain = undefined;
5
+
6
+ var _vue = require('vue');
7
+
8
+ var _vue2 = _interopRequireDefault(_vue);
9
+
10
+ var _domHelper = require('../dom-helper');
11
+
12
+ var _popupManager = require('./popup-manager');
13
+
14
+ var _popupManager2 = _interopRequireDefault(_popupManager);
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ var idSeed = 1;
19
+
20
+ var scrollBarWidth = void 0;
21
+
22
+ exports.default = {
23
+ props: {
24
+ visibility: {
25
+ type: Boolean,
26
+ default: false
27
+ },
28
+ openDelay: {},
29
+ closeDelay: {},
30
+ zIndex: {},
31
+ modal: {
32
+ type: Boolean,
33
+ default: false
34
+ },
35
+ modalFade: {
36
+ type: Boolean,
37
+ default: true
38
+ },
39
+ modalClass: {},
40
+ modalAppendToBody: {
41
+ type: Boolean,
42
+ default: false
43
+ },
44
+ lockScroll: {
45
+ type: Boolean,
46
+ default: true
47
+ },
48
+ closeOnPressEscape: {
49
+ type: Boolean,
50
+ default: false
51
+ },
52
+ closeOnClickModal: {
53
+ type: Boolean,
54
+ default: false
55
+ }
56
+ },
57
+
58
+ beforeMount: function beforeMount() {
59
+ this._popupId = 'popup-' + idSeed++;
60
+ _popupManager2.default.register(this._popupId, this);
61
+ },
62
+ beforeDestroy: function beforeDestroy() {
63
+ _popupManager2.default.deregister(this._popupId);
64
+ _popupManager2.default.closeModal(this._popupId);
65
+
66
+ this.restoreBodyStyle();
67
+ },
68
+ data: function data() {
69
+ return {
70
+ opened: false,
71
+ bodyPaddingRight: null,
72
+ computedBodyPaddingRight: 0,
73
+ withoutHiddenClass: true,
74
+ rendered: false
75
+ };
76
+ },
77
+
78
+
79
+ watch: {
80
+ visibility: function visibility(val) {
81
+ var _this = this;
82
+
83
+ if (val) {
84
+ if (this._opening) return;
85
+ if (!this.rendered) {
86
+ this.rendered = true;
87
+ _vue2.default.nextTick(function () {
88
+ _this.open();
89
+ });
90
+ } else {
91
+ this.open();
92
+ }
93
+ } else {
94
+ this.close();
95
+ }
96
+ }
97
+ },
98
+
99
+ methods: {
100
+ open: function open(options) {
101
+ var _this2 = this;
102
+
103
+ if (!this.rendered) {
104
+ this.rendered = true;
105
+ }
106
+ var props = (0, _domHelper.merge)({}, this.$props || this, options);
107
+
108
+ if (this._closeTimer) {
109
+ clearTimeout(this._closeTimer);
110
+ this._closeTimer = null;
111
+ }
112
+ clearTimeout(this._openTimer);
113
+
114
+ var openDelay = Number(props.openDelay);
115
+ if (openDelay > 0) {
116
+ this._openTimer = setTimeout(function () {
117
+ _this2._openTimer = null;
118
+ _this2.doOpen(props);
119
+ }, openDelay);
120
+ } else {
121
+ this.doOpen(props);
122
+ }
123
+ },
124
+ doOpen: function doOpen(props) {
125
+ if (this.$isServer) return;
126
+ if (this.willOpen && !this.willOpen()) return;
127
+ if (this.opened) return;
128
+
129
+ this._opening = true;
130
+
131
+ var dom = this.$el;
132
+
133
+ var modal = props.modal;
134
+
135
+ var zIndex = props.zIndex;
136
+ if (zIndex) {
137
+ _popupManager2.default.zIndex = zIndex;
138
+ }
139
+
140
+ if (modal) {
141
+ if (this._closing) {
142
+ _popupManager2.default.closeModal(this._popupId);
143
+ this._closing = false;
144
+ }
145
+ _popupManager2.default.openModal(this._popupId, _popupManager2.default.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);
146
+ if (props.lockScroll) {
147
+ this.withoutHiddenClass = !(0, _domHelper.hasClass)(document.body, 'mds-popup-parent--hidden');
148
+ if (this.withoutHiddenClass) {
149
+ this.bodyPaddingRight = document.body.style.paddingRight;
150
+ this.computedBodyPaddingRight = parseInt((0, _domHelper.getStyle)(document.body, 'paddingRight'), 10);
151
+ }
152
+ scrollBarWidth = (0, _domHelper.getScrollBarWidth)();
153
+ var bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
154
+ var bodyOverflowY = (0, _domHelper.getStyle)(document.body, 'overflowY');
155
+ if (scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {
156
+ document.body.style.paddingRight = this.computedBodyPaddingRight + scrollBarWidth + 'px';
157
+ }
158
+ (0, _domHelper.addClass)(document.body, 'mds-popup-parent--hidden');
159
+ }
160
+ }
161
+
162
+ if (getComputedStyle(dom).position === 'static') {
163
+ dom.style.position = 'absolute';
164
+ }
165
+
166
+ dom.style.zIndex = _popupManager2.default.nextZIndex();
167
+ this.opened = true;
168
+
169
+ this.onOpen && this.onOpen();
170
+
171
+ this.doAfterOpen();
172
+ },
173
+ doAfterOpen: function doAfterOpen() {
174
+ this._opening = false;
175
+ },
176
+ close: function close() {
177
+ var _this3 = this;
178
+
179
+ if (this.willClose && !this.willClose()) return;
180
+
181
+ if (this._openTimer !== null) {
182
+ clearTimeout(this._openTimer);
183
+ this._openTimer = null;
184
+ }
185
+ clearTimeout(this._closeTimer);
186
+
187
+ var closeDelay = Number(this.closeDelay);
188
+
189
+ if (closeDelay > 0) {
190
+ this._closeTimer = setTimeout(function () {
191
+ _this3._closeTimer = null;
192
+ _this3.doClose();
193
+ }, closeDelay);
194
+ } else {
195
+ this.doClose();
196
+ }
197
+ },
198
+ doClose: function doClose() {
199
+ this._closing = true;
200
+
201
+ this.onClose && this.onClose();
202
+
203
+ if (this.lockScroll) {
204
+ setTimeout(this.restoreBodyStyle, 200);
205
+ }
206
+
207
+ this.opened = false;
208
+
209
+ this.doAfterClose();
210
+ },
211
+ doAfterClose: function doAfterClose() {
212
+ _popupManager2.default.closeModal(this._popupId);
213
+ this._closing = false;
214
+ },
215
+ restoreBodyStyle: function restoreBodyStyle() {
216
+ if (this.modal && this.withoutHiddenClass) {
217
+ document.body.style.paddingRight = this.bodyPaddingRight;
218
+ (0, _domHelper.removeClass)(document.body, 'mds-popup-parent--hidden');
219
+ }
220
+ this.withoutHiddenClass = true;
221
+ }
222
+ }
223
+ };
224
+ exports.PopupMain = _popupManager2.default;
@@ -0,0 +1,205 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _vue = require('vue');
6
+
7
+ var _vue2 = _interopRequireDefault(_vue);
8
+
9
+ var _domHelper = require('../dom-helper');
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ var hasModal = false;
14
+ var hasInitZIndex = false;
15
+ var zIndex = void 0;
16
+
17
+ var getModal = function getModal() {
18
+ if (_vue2.default.prototype.$isServer) return;
19
+ var modalDom = PopupManager.modalDom;
20
+ if (modalDom) {
21
+ hasModal = true;
22
+ } else {
23
+ hasModal = false;
24
+ modalDom = document.createElement('div');
25
+ PopupManager.modalDom = modalDom;
26
+
27
+ modalDom.addEventListener('touchmove', function (event) {
28
+ event.preventDefault();
29
+ event.stopPropagation();
30
+ });
31
+
32
+ modalDom.addEventListener('click', function () {
33
+ PopupManager.doOnModalClick && PopupManager.doOnModalClick();
34
+ });
35
+ }
36
+
37
+ return modalDom;
38
+ };
39
+
40
+ var instances = {};
41
+
42
+ var PopupManager = {
43
+ modalFade: true,
44
+
45
+ getInstance: function getInstance(id) {
46
+ return instances[id];
47
+ },
48
+
49
+ register: function register(id, instance) {
50
+ if (id && instance) {
51
+ instances[id] = instance;
52
+ }
53
+ },
54
+
55
+ deregister: function deregister(id) {
56
+ if (id) {
57
+ instances[id] = null;
58
+ delete instances[id];
59
+ }
60
+ },
61
+
62
+ nextZIndex: function nextZIndex() {
63
+ return PopupManager.zIndex++;
64
+ },
65
+
66
+ modalStack: [],
67
+
68
+ doOnModalClick: function doOnModalClick() {
69
+ var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
70
+ if (!topItem) return;
71
+
72
+ var instance = PopupManager.getInstance(topItem.id);
73
+ if (instance && instance.closeOnClickModal) {
74
+ instance.close();
75
+ }
76
+ },
77
+
78
+ openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
79
+ if (_vue2.default.prototype.$isServer) return;
80
+ if (!id || zIndex === undefined) return;
81
+ this.modalFade = modalFade;
82
+
83
+ var modalStack = this.modalStack;
84
+
85
+ for (var i = 0, j = modalStack.length; i < j; i++) {
86
+ var item = modalStack[i];
87
+ if (item.id === id) {
88
+ return;
89
+ }
90
+ }
91
+
92
+ var modalDom = getModal();
93
+
94
+ (0, _domHelper.addClass)(modalDom, 'v-modal');
95
+ if (this.modalFade && !hasModal) {
96
+ (0, _domHelper.addClass)(modalDom, 'v-modal-enter');
97
+ }
98
+ if (modalClass) {
99
+ var classArr = modalClass.trim().split(/\s+/);
100
+ classArr.forEach(function (item) {
101
+ return (0, _domHelper.addClass)(modalDom, item);
102
+ });
103
+ }
104
+ setTimeout(function () {
105
+ (0, _domHelper.removeClass)(modalDom, 'v-modal-enter');
106
+ }, 200);
107
+
108
+ if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
109
+ dom.parentNode.appendChild(modalDom);
110
+ } else {
111
+ document.body.appendChild(modalDom);
112
+ }
113
+
114
+ if (zIndex) {
115
+ modalDom.style.zIndex = zIndex;
116
+ }
117
+ modalDom.tabIndex = 0;
118
+ modalDom.style.display = '';
119
+
120
+ this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
121
+ },
122
+
123
+ closeModal: function closeModal(id) {
124
+ var modalStack = this.modalStack;
125
+ var modalDom = getModal();
126
+
127
+ if (modalStack.length > 0) {
128
+ var topItem = modalStack[modalStack.length - 1];
129
+ if (topItem.id === id) {
130
+ if (topItem.modalClass) {
131
+ var classArr = topItem.modalClass.trim().split(/\s+/);
132
+ classArr.forEach(function (item) {
133
+ return (0, _domHelper.removeClass)(modalDom, item);
134
+ });
135
+ }
136
+
137
+ modalStack.pop();
138
+ if (modalStack.length > 0) {
139
+ modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
140
+ }
141
+ } else {
142
+ for (var i = modalStack.length - 1; i >= 0; i--) {
143
+ if (modalStack[i].id === id) {
144
+ modalStack.splice(i, 1);
145
+ break;
146
+ }
147
+ }
148
+ }
149
+ }
150
+
151
+ if (modalStack.length === 0) {
152
+ if (this.modalFade) {
153
+ (0, _domHelper.addClass)(modalDom, 'v-modal-leave');
154
+ }
155
+ setTimeout(function () {
156
+ if (modalStack.length === 0) {
157
+ if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
158
+ modalDom.style.display = 'none';
159
+ PopupManager.modalDom = undefined;
160
+ }
161
+ (0, _domHelper.removeClass)(modalDom, 'v-modal-leave');
162
+ }, 200);
163
+ }
164
+ }
165
+ };
166
+
167
+ Object.defineProperty(PopupManager, 'zIndex', {
168
+ configurable: true,
169
+ get: function get() {
170
+ if (!hasInitZIndex) {
171
+ zIndex = zIndex || (_vue2.default.prototype.$ELEMENT || {}).zIndex || 2000;
172
+ hasInitZIndex = true;
173
+ }
174
+ return zIndex;
175
+ },
176
+ set: function set(value) {
177
+ zIndex = value;
178
+ }
179
+ });
180
+
181
+ var getTopPopup = function getTopPopup() {
182
+ if (_vue2.default.prototype.$isServer) return;
183
+ if (PopupManager.modalStack.length > 0) {
184
+ var topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
185
+ if (!topPopup) return;
186
+ var instance = PopupManager.getInstance(topPopup.id);
187
+
188
+ return instance;
189
+ }
190
+ };
191
+
192
+ if (!_vue2.default.prototype.$isServer) {
193
+ // handle `esc` key when the popup is shown
194
+ window.addEventListener('keydown', function (event) {
195
+ if (event.keyCode === 27) {
196
+ var topPopup = getTopPopup();
197
+
198
+ if (topPopup && topPopup.closeOnPressEscape) {
199
+ topPopup.handleClose ? topPopup.handleClose() : topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close();
200
+ }
201
+ }
202
+ });
203
+ }
204
+
205
+ exports.default = PopupManager;
@@ -0,0 +1,204 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _popupMain = require('./popup/popup-main.js');
6
+
7
+ var _popper = require('./popper.js');
8
+
9
+ var _popper2 = _interopRequireDefault(_popper);
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ var stop = function stop(e) {
14
+ return e.stopPropagation();
15
+ };
16
+ /**
17
+ * @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.
18
+ * @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.
19
+ * @param {String} [placement=button] - Placement of the popper accepted values: top(-start, -end), right(-start, -end), bottom(-start, -end), left(-start, -end)
20
+ * @param {Number} [offset=0] - Amount of pixels the popper will be shifted (can be negative).
21
+ * @param {Boolean} [visible=false] Visibility of the popup element.
22
+ * @param {Boolean} [visible-arrow=false] Visibility of the arrow, no style.
23
+ */
24
+ exports.default = {
25
+ props: {
26
+ transformOrigin: {
27
+ type: [Boolean, String],
28
+ default: true
29
+ },
30
+ placement: {
31
+ type: String,
32
+ default: 'bottom'
33
+ },
34
+ boundariesPadding: {
35
+ type: Number,
36
+ default: 5
37
+ },
38
+ reference: {},
39
+ popper: {},
40
+ offset: {
41
+ default: 0
42
+ },
43
+ value: Boolean,
44
+ visibleArrow: Boolean,
45
+ arrowOffset: {
46
+ type: Number,
47
+ default: 35
48
+ },
49
+ appendToBody: {
50
+ type: Boolean,
51
+ default: true
52
+ },
53
+ popperOptions: {
54
+ type: Object,
55
+ default: function _default() {
56
+ return {
57
+ gpuAcceleration: false
58
+ };
59
+ }
60
+ }
61
+ },
62
+
63
+ data: function data() {
64
+ return {
65
+ showPopper: false,
66
+ currentPlacement: ''
67
+ };
68
+ },
69
+
70
+
71
+ watch: {
72
+ value: {
73
+ immediate: true,
74
+ handler: function handler(val) {
75
+ this.showPopper = val;
76
+ this.$emit('input', val);
77
+ }
78
+ },
79
+
80
+ showPopper: function showPopper(val) {
81
+ if (this.disabled) return;
82
+ val ? this.updatePopper() : this.destroyPopper();
83
+ this.$emit('input', val);
84
+ }
85
+ },
86
+
87
+ methods: {
88
+ createPopper: function createPopper() {
89
+ var _this = this;
90
+
91
+ var options = this.popperOptions;
92
+ var popper = this.popperElm = this.popperElm || this.popper || this.$refs.popper;
93
+ var realPlacement = void 0;
94
+ if (popper.__vue__ && popper.__vue__.$parent && popper.__vue__.$parent.$options.name === 'MdsCascader') {
95
+ realPlacement = 'bottom-start';
96
+ } else {
97
+ realPlacement = this.realPlacement || this.placement;
98
+ }
99
+ this.currentPlacement = this.currentPlacement || realPlacement;
100
+ if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement)) {
101
+ return;
102
+ }
103
+
104
+ var reference = this.referenceElm = this.referenceElm || this.reference || this.$refs.reference;
105
+
106
+ if (!reference && this.$slots.reference && this.$slots.reference[0]) {
107
+ reference = this.referenceElm = this.$slots.reference[0].elm;
108
+ }
109
+
110
+ if (!popper || !reference) return;
111
+ if (this.visibleArrow) this.appendArrow(popper);
112
+ if (this.appendToBody) document.body.appendChild(this.popperElm);
113
+ if (this.popperJS && this.popperJS.destroy) {
114
+ this.popperJS.destroy();
115
+ }
116
+
117
+ options.placement = this.currentPlacement;
118
+ options.offset = this.offset;
119
+ options.arrowOffset = this.arrowOffset;
120
+ this.popperJS = new _popper2.default(reference, popper, options);
121
+ this.popperJS.onCreate(function (_) {
122
+ _this.$emit('created', _this);
123
+ _this.resetTransformOrigin();
124
+ _this.$nextTick(_this.updatePopper);
125
+ });
126
+ if (typeof options.onUpdate === 'function') {
127
+ this.popperJS.onUpdate(options.onUpdate);
128
+ }
129
+ this.popperJS._popper.style.zIndex = _popupMain.PopupMain.nextZIndex();
130
+ this.popperElm.addEventListener('click', stop);
131
+ },
132
+ updatePopper: function updatePopper(zIndexFlag) {
133
+ var popperJS = this.popperJS;
134
+ if (popperJS) {
135
+ popperJS.update();
136
+ if (popperJS._popper) {
137
+ if (!zIndexFlag) {
138
+ popperJS._popper.style.zIndex = _popupMain.PopupMain.nextZIndex();
139
+ }
140
+ }
141
+ } else {
142
+ this.createPopper();
143
+ }
144
+ },
145
+ doDestroy: function doDestroy(forceDestroy) {
146
+ /* istanbul ignore if */
147
+ if (!this.popperJS || this.showPopper && !forceDestroy) return;
148
+ this.popperJS.destroy();
149
+ this.popperJS = null;
150
+ },
151
+ destroyPopper: function destroyPopper() {
152
+ if (this.popperJS) {
153
+ this.resetTransformOrigin();
154
+ }
155
+ },
156
+ resetTransformOrigin: function resetTransformOrigin() {
157
+ if (!this.transformOrigin) return;
158
+ var placementMap = {
159
+ top: 'bottom',
160
+ bottom: 'top',
161
+ left: 'right',
162
+ right: 'left'
163
+ };
164
+ var placement = this.popperJS._popper.getAttribute('x-placement').split('-')[0];
165
+ var origin = placementMap[placement];
166
+ this.popperJS._popper.style.transformOrigin = typeof this.transformOrigin === 'string' ? this.transformOrigin : ['top', 'bottom'].indexOf(placement) > -1 ? 'center ' + origin : origin + ' center';
167
+ },
168
+ appendArrow: function appendArrow(element) {
169
+ var hash = void 0;
170
+ if (this.appended) {
171
+ return;
172
+ }
173
+
174
+ this.appended = true;
175
+
176
+ for (var item in element.attributes) {
177
+ if (/^_v-/.test(element.attributes[item].name)) {
178
+ hash = element.attributes[item].name;
179
+ break;
180
+ }
181
+ }
182
+
183
+ var arrow = document.createElement('div');
184
+
185
+ if (hash) {
186
+ arrow.setAttribute(hash, '');
187
+ }
188
+ arrow.setAttribute('x-arrow', '');
189
+ arrow.className = 'popper__arrow';
190
+ element.appendChild(arrow);
191
+ }
192
+ },
193
+
194
+ beforeDestroy: function beforeDestroy() {
195
+ this.doDestroy(true);
196
+ if (this.popperElm && this.popperElm.parentNode === document.body) {
197
+ this.popperElm.removeEventListener('click', stop);
198
+ document.body.removeChild(this.popperElm);
199
+ }
200
+ },
201
+ deactivated: function deactivated() {
202
+ this.$options.beforeDestroy[0].call(this);
203
+ }
204
+ };
@@ -11,7 +11,7 @@ var _merge = require('./../merge');
11
11
 
12
12
  var _merge2 = _interopRequireDefault(_merge);
13
13
 
14
- var _popupManager = require('./popup-manager');
14
+ var _popupManager = require('../../_util/_popper/popup/popup-manager');
15
15
 
16
16
  var _popupManager2 = _interopRequireDefault(_popupManager);
17
17
 
@@ -28,6 +28,8 @@ var Node = function () {
28
28
 
29
29
  // 是否显示,用于搜索
30
30
  this.visible = true;
31
+ // 搜索关键字,用于标记高亮
32
+ this.searchWords = null;
31
33
 
32
34
  for (var name in options) {
33
35
  if (options.hasOwnProperty(name)) {