@mdsfe/mds-ui 0.2.0 → 0.2.8

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/README.md +9 -9
  2. package/dist/_mixin/popper.js +1 -0
  3. package/dist/_util/_popper/dom-helper.js +284 -0
  4. package/dist/_util/_popper/popper-mixin.js +35 -0
  5. package/dist/_util/_popper/popper.js +1267 -0
  6. package/dist/_util/_popper/popup/popup-main.js +224 -0
  7. package/dist/_util/_popper/popup/popup-manager.js +205 -0
  8. package/dist/_util/_popper/vue-popper.js +204 -0
  9. package/dist/_util/popup/index.js +1 -1
  10. package/dist/_util/tree/node.js +2 -0
  11. package/dist/_util/tree/tree.js +65 -21
  12. package/dist/_util/util.js +29 -1
  13. package/dist/affix.js +18 -18
  14. package/dist/anchor.js +18 -18
  15. package/dist/avatar.js +17 -17
  16. package/dist/backtop.js +19 -19
  17. package/dist/badge.js +21 -21
  18. package/dist/bordershadow.js +20 -9
  19. package/dist/breadcrumb.js +18 -18
  20. package/dist/button.js +21 -21
  21. package/dist/card.js +18 -18
  22. package/dist/carousel.js +76 -76
  23. package/dist/cascader.js +4976 -0
  24. package/dist/cascaderpanel.js +645 -603
  25. package/dist/checkbox.js +23 -23
  26. package/dist/col.js +14 -14
  27. package/dist/collapse.js +6 -6
  28. package/dist/color.js +6 -6
  29. package/dist/datepicker.js +2487 -266
  30. package/dist/divider.js +19 -19
  31. package/dist/drawer.js +787 -37
  32. package/dist/dropdown.js +150 -104
  33. package/dist/empty.js +19 -19
  34. package/dist/font/iconfont.28359fa.ttf +0 -0
  35. package/dist/font/iconfont.486e3d3.woff2 +0 -0
  36. package/dist/font/iconfont.675049e.woff +0 -0
  37. package/dist/font.js +6 -6
  38. package/dist/form.js +28 -26
  39. package/dist/icon.js +55 -47
  40. package/dist/index.js +1 -1
  41. package/dist/input.js +58 -48
  42. package/dist/inputnumber.js +59 -39
  43. package/dist/layout.js +25 -25
  44. package/dist/list.js +17 -17
  45. package/dist/loading.js +21 -8
  46. package/dist/mds-ui.min.css +3 -3
  47. package/dist/mds-ui.min.js +19176 -15406
  48. package/dist/menu.js +31 -31
  49. package/dist/message.js +773 -24
  50. package/dist/modal.js +1146 -307
  51. package/dist/notification.js +27 -27
  52. package/dist/pagination.js +78 -55
  53. package/dist/popconfirm.js +36 -36
  54. package/dist/popover.js +2778 -48
  55. package/dist/progress.js +107 -65
  56. package/dist/radio.js +56 -54
  57. package/dist/rate.js +67 -59
  58. package/dist/row.js +14 -14
  59. package/dist/select.js +847 -503
  60. package/dist/slider.js +25 -25
  61. package/dist/slottable.js +2663 -129
  62. package/dist/steps.js +18 -18
  63. package/dist/style/affix.css +224 -2
  64. package/dist/style/anchor.css +224 -2
  65. package/dist/style/avatar.css +224 -2
  66. package/dist/style/badge.css +224 -2
  67. package/dist/style/bordershadow.css +236 -59
  68. package/dist/style/breadcrumb.css +224 -2
  69. package/dist/style/button.css +234 -5
  70. package/dist/style/card.css +224 -2
  71. package/dist/style/carousel.css +224 -2
  72. package/dist/style/cascader.css +214 -0
  73. package/dist/style/cascaderpanel.css +13 -16
  74. package/dist/style/checkbox.css +230 -8
  75. package/dist/style/col.css +225 -3
  76. package/dist/style/collapse.css +224 -2
  77. package/dist/style/color.css +224 -2
  78. package/dist/style/datepicker.css +236 -2
  79. package/dist/style/divider.css +227 -2
  80. package/dist/style/drawer.css +224 -2
  81. package/dist/style/dropdown.css +234 -5
  82. package/dist/style/empty.css +224 -2
  83. package/dist/style/font.css +226 -4
  84. package/dist/style/form.css +224 -2
  85. package/dist/style/icon.css +226 -3
  86. package/dist/style/input.css +231 -5
  87. package/dist/style/inputnumber.css +224 -2
  88. package/dist/style/layout.css +224 -2
  89. package/dist/style/list.css +224 -2
  90. package/dist/style/loading.css +2527 -2
  91. package/dist/style/menu.css +340 -129
  92. package/dist/style/message.css +1 -4
  93. package/dist/style/modal.css +247 -25
  94. package/dist/style/notification.css +224 -2
  95. package/dist/style/pagination.css +236 -7
  96. package/dist/style/popconfirm.css +334 -180
  97. package/dist/style/popover.css +324 -177
  98. package/dist/style/progress.css +226 -3
  99. package/dist/style/radio.css +225 -3
  100. package/dist/style/rate.css +226 -3
  101. package/dist/style/row.css +225 -3
  102. package/dist/style/select.css +240 -12
  103. package/dist/style/slider.css +224 -2
  104. package/dist/style/slottable.css +350 -149
  105. package/dist/style/steps.css +224 -2
  106. package/dist/style/switch.css +224 -2
  107. package/dist/style/table.css +458 -314
  108. package/dist/style/tabs.css +225 -18
  109. package/dist/style/tag.css +224 -2
  110. package/dist/style/text.css +224 -2
  111. package/dist/style/timeline.css +224 -2
  112. package/dist/style/timepicker.css +231 -6
  113. package/dist/style/tooltip.css +340 -129
  114. package/dist/style/tree.css +228 -6
  115. package/dist/style/typography.css +224 -2
  116. package/dist/style/upload.css +224 -2
  117. package/dist/switch.js +20 -20
  118. package/dist/table.js +3071 -201
  119. package/dist/tabs.js +24 -22
  120. package/dist/tag.js +17 -23
  121. package/dist/text.js +38 -22
  122. package/dist/timeline.js +14 -14
  123. package/dist/timepicker.js +3063 -172
  124. package/dist/tooltip.js +2550 -27
  125. package/dist/transfer.js +28 -28
  126. package/dist/transition.js +6 -6
  127. package/dist/tree.js +316 -171
  128. package/dist/typography.js +6 -6
  129. package/dist/upload.js +46 -38
  130. package/package.json +9 -5
  131. package/CHANGELOG.md +0 -778
@@ -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)) {