@eturnity/eturnity_reusable_components 7.24.3-EPDM-11320.0 → 7.24.3-EPDM-11143.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 (67) hide show
  1. package/.prettierrc +7 -0
  2. package/package.json +20 -6
  3. package/public/favicon.ico +0 -0
  4. package/public/index.html +17 -0
  5. package/src/App.vue +70 -75
  6. package/src/assets/svgIcons/copy.svg +10 -0
  7. package/src/components/addNewButton/index.vue +27 -24
  8. package/src/components/banner/actionBanner/index.vue +30 -32
  9. package/src/components/banner/banner/index.vue +80 -88
  10. package/src/components/banner/infoBanner/index.vue +44 -36
  11. package/src/components/buttons/buttonIcon/index.vue +78 -83
  12. package/src/components/buttons/closeButton/index.vue +26 -26
  13. package/src/components/buttons/mainButton/index.vue +76 -80
  14. package/src/components/card/index.vue +52 -56
  15. package/src/components/collapsableInfoText/index.vue +76 -81
  16. package/src/components/deleteIcon/index.vue +28 -31
  17. package/src/components/draggableInputHandle/index.vue +17 -20
  18. package/src/components/dropdown/Dropdown.stories.js +8 -8
  19. package/src/components/dropdown/index.vue +72 -75
  20. package/src/components/errorMessage/index.vue +23 -23
  21. package/src/components/filter/filterSettings.vue +329 -349
  22. package/src/components/filter/index.vue +130 -130
  23. package/src/components/filter/parentDropdown.vue +40 -43
  24. package/src/components/icon/Icons.stories.js +4 -4
  25. package/src/components/icon/iconCache.js +1 -1
  26. package/src/components/icon/iconCollection.vue +37 -40
  27. package/src/components/icon/index.vue +65 -72
  28. package/src/components/iconWrapper/index.vue +118 -122
  29. package/src/components/infoCard/index.vue +17 -20
  30. package/src/components/infoText/index.vue +82 -88
  31. package/src/components/inputs/checkbox/index.vue +94 -91
  32. package/src/components/inputs/inputNumber/index.vue +488 -508
  33. package/src/components/inputs/inputNumberQuestion/index.vue +124 -127
  34. package/src/components/inputs/inputText/index.vue +252 -265
  35. package/src/components/inputs/radioButton/index.vue +120 -135
  36. package/src/components/inputs/searchInput/index.vue +81 -84
  37. package/src/components/inputs/select/index.vue +631 -644
  38. package/src/components/inputs/select/option/index.vue +91 -91
  39. package/src/components/inputs/select/select.stories.js +7 -7
  40. package/src/components/inputs/slider/index.vue +46 -46
  41. package/src/components/inputs/switchField/index.vue +152 -159
  42. package/src/components/inputs/textAreaInput/index.vue +113 -120
  43. package/src/components/inputs/toggle/index.vue +127 -137
  44. package/src/components/label/index.vue +61 -64
  45. package/src/components/markerItem/index.vue +40 -40
  46. package/src/components/modals/actionModal/index.vue +29 -32
  47. package/src/components/modals/infoModal/index.vue +27 -34
  48. package/src/components/modals/modal/index.vue +80 -88
  49. package/src/components/navigationTabs/index.vue +47 -50
  50. package/src/components/pageSubtitle/index.vue +29 -33
  51. package/src/components/pageTitle/index.vue +39 -47
  52. package/src/components/pagination/index.vue +62 -64
  53. package/src/components/progressBar/index.vue +67 -70
  54. package/src/components/projectMarker/index.vue +163 -172
  55. package/src/components/rangeSlider/Slider.vue +449 -449
  56. package/src/components/rangeSlider/index.vue +270 -282
  57. package/src/components/rangeSlider/utils/dom.js +3 -3
  58. package/src/components/selectedOptions/index.vue +51 -51
  59. package/src/components/sideMenu/index.vue +109 -117
  60. package/src/components/spinner/index.vue +34 -37
  61. package/src/components/tableDropdown/index.vue +326 -343
  62. package/src/components/tables/mainTable/index.vue +106 -109
  63. package/src/components/tables/viewTable/index.vue +92 -105
  64. package/src/components/threeDots/index.vue +171 -174
  65. package/src/components/videoThumbnail/index.vue +59 -67
  66. package/src/components/videoThumbnail/videoThumbnail.stories.js +6 -6
  67. package/.eslintrc.js +0 -125
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div
3
- :class="className"
4
3
  :data-id="dataId"
5
4
  :style="style"
5
+ :class="className"
6
6
  @mousedown="elementMouseDown"
7
7
  @touchstart="elementTouchDown"
8
8
  >
@@ -20,383 +20,263 @@
20
20
  </template>
21
21
 
22
22
  <script>
23
- import {
24
- matchesSelectorToParentElements,
25
- addEvent,
26
- removeEvent
27
- } from './utils/dom'
28
- import { computeWidth, restrictToBounds, snapToGrid } from './utils/fns'
29
-
30
- const events = {
31
- mouse: {
32
- start: 'mousedown',
33
- move: 'mousemove',
34
- stop: 'mouseup'
35
- },
36
- touch: {
37
- start: 'touchstart',
38
- move: 'touchmove',
39
- stop: 'touchend'
40
- }
23
+ import {
24
+ matchesSelectorToParentElements,
25
+ addEvent,
26
+ removeEvent
27
+ } from './utils/dom'
28
+ import { computeWidth, restrictToBounds, snapToGrid } from './utils/fns'
29
+
30
+ const events = {
31
+ mouse: {
32
+ start: 'mousedown',
33
+ move: 'mousemove',
34
+ stop: 'mouseup'
35
+ },
36
+ touch: {
37
+ start: 'touchstart',
38
+ move: 'touchmove',
39
+ stop: 'touchend'
41
40
  }
41
+ }
42
42
 
43
- const userSelectNone = {
44
- userSelect: 'none',
45
- MozUserSelect: 'none',
46
- WebkitUserSelect: 'none',
47
- MsUserSelect: 'none'
48
- }
43
+ const userSelectNone = {
44
+ userSelect: 'none',
45
+ MozUserSelect: 'none',
46
+ WebkitUserSelect: 'none',
47
+ MsUserSelect: 'none'
48
+ }
49
49
 
50
- const userSelectAuto = {
51
- userSelect: 'auto',
52
- MozUserSelect: 'auto',
53
- WebkitUserSelect: 'auto',
54
- MsUserSelect: 'auto'
55
- }
50
+ const userSelectAuto = {
51
+ userSelect: 'auto',
52
+ MozUserSelect: 'auto',
53
+ WebkitUserSelect: 'auto',
54
+ MsUserSelect: 'auto'
55
+ }
56
56
 
57
- let eventsFor = events.mouse
58
-
59
- export default {
60
- replace: true,
61
- name: 'SliderComponent',
62
- props: {
63
- dataId: {
64
- type: String,
65
- default: ''
66
- },
67
- className: {
68
- type: String,
69
- default: 'vdr'
70
- },
71
- disableUserSelect: {
72
- type: Boolean,
73
- default: true
74
- },
75
- preventDeactivation: {
76
- type: Boolean,
77
- default: false
78
- },
79
- active: {
80
- type: Boolean,
81
- default: false
82
- },
83
- draggable: {
84
- type: Boolean,
85
- default: true
86
- },
87
- resizable: {
88
- type: Boolean,
89
- default: true
90
- },
91
- minWidth: {
92
- type: Number,
93
- default: 1,
94
- validator: (val) => val >= 0
95
- },
96
- step: {
97
- type: Number,
98
- default: 1,
99
- validator: (val) => val > 0
100
- },
101
- stepCount: {
102
- type: Number,
103
- default: 0,
104
- validator: (val) => val > 0
105
- },
106
- subStepCount: {
107
- type: Number,
108
- default: 0,
109
- validator: (val) => val >= 0
110
- },
111
- h: {
112
- type: [Number, String],
113
- default: 'auto',
114
- validator: (val) => {
115
- if (typeof val === 'number') {
116
- return val > 0
117
- }
118
-
119
- return val === 'auto'
120
- }
121
- },
122
- z: {
123
- type: [String, Number],
124
- default: 'auto',
125
- validator: (val) => (typeof val === 'string' ? val === 'auto' : val >= 0)
126
- },
127
- min: {
128
- type: Number,
129
- default: 0,
130
- validator: (val) => val >= 0
131
- },
132
- max: {
133
- type: Number,
134
- default: 0,
135
- validator: (val) => val >= 0
136
- },
137
- dragHandle: {
138
- type: String,
139
- default: null
140
- },
141
- dragCancel: {
142
- type: String,
143
- default: null
144
- },
145
- onDrag: {
146
- type: Function,
147
- default: () => true
148
- },
149
- onResize: {
150
- type: Function,
151
- default: () => true
152
- }
153
- },
57
+ let eventsFor = events.mouse
154
58
 
155
- data: function() {
156
- return {
157
- left: null,
158
- right: null,
159
- width: null,
160
- height: null,
161
- parentWidth: null,
162
- parentHeight: null,
163
- widthTouched: false,
164
- heightTouched: false,
165
-
166
- handle: null,
167
- resizing: false,
168
- dragging: false,
169
- dragEnable: false,
170
- resizeEnable: false,
171
- enabled: this.active,
172
-
173
- zIndex: this.z,
174
- handles: ['ml', 'mr']
175
- }
59
+ export default {
60
+ replace: true,
61
+ name: 'SliderComponent',
62
+ props: {
63
+ dataId: {
64
+ type: String,
65
+ default: ''
176
66
  },
177
- computed: {
178
- style() {
179
- return {
180
- transform: `translate(${this.left}px, 0px)`,
181
- width: this.computedWidth,
182
- height: this.computedHeight,
183
- zIndex: this.zIndex,
184
- ...(this.dragging && this.disableUserSelect
185
- ? userSelectNone
186
- : userSelectAuto)
187
- }
188
- },
189
- actualHandles() {
190
- if (!this.resizable) return []
191
-
192
- return this.handles
193
- },
194
- pxPerStep() {
195
- return this.parentWidth / this.stepCount
196
- },
197
- minWidthByPx() {
198
- return this.minWidth * this.pxPerStep
199
- },
200
- computedWidth() {
201
- if (this.width === 'auto') {
202
- if (!this.widthTouched) {
203
- return 'auto'
204
- }
205
- }
206
-
207
- return this.width + 'px'
208
- },
209
- computedHeight() {
210
- if (this.height === 'auto') {
211
- if (!this.heightTouched) {
212
- return 'auto'
213
- }
67
+ className: {
68
+ type: String,
69
+ default: 'vdr'
70
+ },
71
+ disableUserSelect: {
72
+ type: Boolean,
73
+ default: true
74
+ },
75
+ preventDeactivation: {
76
+ type: Boolean,
77
+ default: false
78
+ },
79
+ active: {
80
+ type: Boolean,
81
+ default: false
82
+ },
83
+ draggable: {
84
+ type: Boolean,
85
+ default: true
86
+ },
87
+ resizable: {
88
+ type: Boolean,
89
+ default: true
90
+ },
91
+ minWidth: {
92
+ type: Number,
93
+ default: 1,
94
+ validator: (val) => val >= 0
95
+ },
96
+ step: {
97
+ type: Number,
98
+ default: 1,
99
+ validator: (val) => val > 0
100
+ },
101
+ stepCount: {
102
+ type: Number,
103
+ default: 0,
104
+ validator: (val) => val > 0
105
+ },
106
+ subStepCount: {
107
+ type: Number,
108
+ default: 0,
109
+ validator: (val) => val >= 0
110
+ },
111
+ h: {
112
+ type: [Number, String],
113
+ default: 'auto',
114
+ validator: (val) => {
115
+ if (typeof val === 'number') {
116
+ return val > 0
214
117
  }
215
118
 
216
- return this.height + 'px'
119
+ return val === 'auto'
217
120
  }
218
121
  },
219
-
220
- watch: {
221
- active(val) {
222
- this.enabled = val
223
-
224
- if (val) {
225
- this.$emit('activated')
226
- } else {
227
- this.$emit('deactivated')
228
- }
229
- },
230
- z(val) {
231
- if (val >= 0 || val === 'auto') {
232
- this.zIndex = val
233
- }
234
- }
122
+ z: {
123
+ type: [String, Number],
124
+ default: 'auto',
125
+ validator: (val) => (typeof val === 'string' ? val === 'auto' : val >= 0)
235
126
  },
236
-
237
- created: function() {
238
- this.resetBoundsAndMouseState()
127
+ min: {
128
+ type: Number,
129
+ default: 0,
130
+ validator: (val) => val >= 0
131
+ },
132
+ max: {
133
+ type: Number,
134
+ default: 0,
135
+ validator: (val) => val >= 0
136
+ },
137
+ dragHandle: {
138
+ type: String,
139
+ default: null
140
+ },
141
+ dragCancel: {
142
+ type: String,
143
+ default: null
144
+ },
145
+ onDrag: {
146
+ type: Function,
147
+ default: () => true
239
148
  },
240
- mounted: function() {
241
- const [parentWidth, parentHeight] = this.getParentSize()
149
+ onResize: {
150
+ type: Function,
151
+ default: () => true
152
+ }
153
+ },
154
+
155
+ data: function () {
156
+ return {
157
+ left: null,
158
+ right: null,
159
+ width: null,
160
+ height: null,
161
+ parentWidth: null,
162
+ parentHeight: null,
163
+ widthTouched: false,
164
+ heightTouched: false,
165
+
166
+ handle: null,
167
+ resizing: false,
168
+ dragging: false,
169
+ dragEnable: false,
170
+ resizeEnable: false,
171
+ enabled: this.active,
172
+
173
+ zIndex: this.z,
174
+ handles: ['ml', 'mr']
175
+ }
176
+ },
242
177
 
243
- this.parentWidth = parentWidth
244
- this.parentHeight = parentHeight
178
+ created: function () {
179
+ this.resetBoundsAndMouseState()
180
+ },
181
+ mounted: function () {
182
+ const [parentWidth, parentHeight] = this.getParentSize()
245
183
 
246
- this.left = this.min * this.pxPerStep
247
- this.right = this.max * this.pxPerStep
248
- this.width = computeWidth(this.left, this.right)
249
- this.height = this.h !== 'auto' ? this.h : parentHeight
184
+ this.parentWidth = parentWidth
185
+ this.parentHeight = parentHeight
250
186
 
251
- if (this.active) {
252
- this.$emit('activated')
253
- }
187
+ this.left = this.min * this.pxPerStep
188
+ this.right = this.max * this.pxPerStep
189
+ this.width = computeWidth(this.left, this.right)
190
+ this.height = this.h !== 'auto' ? this.h : parentHeight
254
191
 
255
- addEvent(document.documentElement, 'mousedown', this.deselect)
256
- addEvent(document.documentElement, 'touchend touchcancel', this.deselect)
192
+ if (this.active) {
193
+ this.$emit('activated')
194
+ }
257
195
 
258
- addEvent(window, 'resize', this.checkParentSize)
196
+ addEvent(document.documentElement, 'mousedown', this.deselect)
197
+ addEvent(document.documentElement, 'touchend touchcancel', this.deselect)
198
+
199
+ addEvent(window, 'resize', this.checkParentSize)
200
+ },
201
+ beforeUnmount: function () {
202
+ removeEvent(document.documentElement, 'mousedown', this.deselect)
203
+ removeEvent(document.documentElement, 'touchstart', this.handleUp)
204
+ removeEvent(document.documentElement, 'mousemove', this.move)
205
+ removeEvent(document.documentElement, 'touchmove', this.move)
206
+ removeEvent(document.documentElement, 'mouseup', this.handleUp)
207
+ removeEvent(document.documentElement, 'touchend touchcancel', this.deselect)
208
+
209
+ removeEvent(window, 'resize', this.checkParentSize)
210
+ },
211
+
212
+ methods: {
213
+ resetBoundsAndMouseState() {
214
+ this.mouseClickPosition = { mouseX: 0, mouseY: 0, x: 0, y: 0, w: 0, h: 0 }
215
+
216
+ this.bounds = {
217
+ minLeft: null,
218
+ maxLeft: null,
219
+ minRight: null,
220
+ maxRight: null
221
+ }
259
222
  },
260
- beforeUnmount: function() {
261
- removeEvent(document.documentElement, 'mousedown', this.deselect)
262
- removeEvent(document.documentElement, 'touchstart', this.handleUp)
263
- removeEvent(document.documentElement, 'mousemove', this.move)
264
- removeEvent(document.documentElement, 'touchmove', this.move)
265
- removeEvent(document.documentElement, 'mouseup', this.handleUp)
266
- removeEvent(document.documentElement, 'touchend touchcancel', this.deselect)
223
+ checkParentSize() {
224
+ const [newParentWidth, newParentHeight] = this.getParentSize()
267
225
 
268
- removeEvent(window, 'resize', this.checkParentSize)
226
+ this.parentWidth = newParentWidth
227
+ this.parentHeight = newParentHeight
269
228
  },
229
+ getParentSize() {
230
+ const style = window.getComputedStyle(this.$el.parentNode, null)
270
231
 
271
- methods: {
272
- resetBoundsAndMouseState() {
273
- this.mouseClickPosition = { mouseX: 0, mouseY: 0, x: 0, y: 0, w: 0, h: 0 }
274
-
275
- this.bounds = {
276
- minLeft: null,
277
- maxLeft: null,
278
- minRight: null,
279
- maxRight: null
280
- }
281
- },
282
- checkParentSize() {
283
- const [newParentWidth, newParentHeight] = this.getParentSize()
284
-
285
- this.parentWidth = newParentWidth
286
- this.parentHeight = newParentHeight
287
- },
288
- getParentSize() {
289
- const style = window.getComputedStyle(this.$el.parentNode, null)
290
-
291
- return [
292
- parseInt(style.getPropertyValue('width'), 10),
293
- parseInt(style.getPropertyValue('height'), 10)
294
- ]
295
- },
296
- elementTouchDown(e) {
297
- eventsFor = events.touch
298
-
299
- this.elementDown(e)
300
- },
301
- elementMouseDown(e) {
302
- eventsFor = events.mouse
303
-
304
- this.elementDown(e)
305
- },
306
- elementDown(e) {
307
- if (e instanceof MouseEvent && e.button !== 0) {
308
- return
309
- }
310
-
311
- const target = e.target || e.srcElement
312
-
313
- if (this.$el.contains(target)) {
314
- if (
315
- (this.dragHandle &&
316
- !matchesSelectorToParentElements(
317
- target,
318
- this.dragHandle,
319
- this.$el
320
- )) ||
321
- (this.dragCancel &&
322
- matchesSelectorToParentElements(target, this.dragCancel, this.$el))
323
- ) {
324
- this.dragging = false
325
-
326
- return
327
- }
328
-
329
- if (!this.enabled) {
330
- this.enabled = true
331
-
332
- this.$emit('activated')
333
- this.$emit('update:active', true)
334
- }
335
-
336
- if (this.draggable) {
337
- this.dragEnable = true
338
- }
339
-
340
- const newPosition = {
341
- ...this.mouseClickPosition,
342
- mouseX: e.touches ? e.touches[0].pageX : e.pageX,
343
- left: this.left,
344
- right: this.right
345
- }
346
-
347
- this.mouseClickPosition = newPosition
348
- this.bounds = this.calcDragLimits()
349
-
350
- addEvent(document.documentElement, eventsFor.move, this.move)
351
- addEvent(document.documentElement, eventsFor.stop, this.handleUp)
352
- }
353
- },
354
- calcDragLimits() {
355
- const limits = {
356
- minLeft: null,
357
- maxLeft: null,
358
- minRight: null,
359
- maxRight: null
360
- }
361
-
362
- limits.minLeft = 0
363
- limits.maxLeft = this.parentWidth - this.width
364
- limits.minRight = this.width
365
- limits.maxRight = this.parentWidth
232
+ return [
233
+ parseInt(style.getPropertyValue('width'), 10),
234
+ parseInt(style.getPropertyValue('height'), 10)
235
+ ]
236
+ },
237
+ elementTouchDown(e) {
238
+ eventsFor = events.touch
366
239
 
367
- return limits
368
- },
369
- deselect(e) {
370
- const target = e.target || e.srcElement
371
- const regex = new RegExp(this.className + '-([trmbl]{2})', '')
240
+ this.elementDown(e)
241
+ },
242
+ elementMouseDown(e) {
243
+ eventsFor = events.mouse
372
244
 
373
- if (!this.$el.contains(target) && !regex.test(target.className)) {
374
- if (this.enabled && !this.preventDeactivation) {
375
- this.enabled = false
245
+ this.elementDown(e)
246
+ },
247
+ elementDown(e) {
248
+ if (e instanceof MouseEvent && e.button !== 0) {
249
+ return
250
+ }
376
251
 
377
- this.$emit('deactivated')
378
- this.$emit('update:active', false)
379
- }
252
+ const target = e.target || e.srcElement
253
+
254
+ if (this.$el.contains(target)) {
255
+ if (
256
+ (this.dragHandle &&
257
+ !matchesSelectorToParentElements(
258
+ target,
259
+ this.dragHandle,
260
+ this.$el
261
+ )) ||
262
+ (this.dragCancel &&
263
+ matchesSelectorToParentElements(target, this.dragCancel, this.$el))
264
+ ) {
265
+ this.dragging = false
380
266
 
381
- removeEvent(document.documentElement, eventsFor.move, this.handleResize)
267
+ return
382
268
  }
383
269
 
384
- this.resetBoundsAndMouseState()
385
- },
386
- handleTouchDown(handle, e) {
387
- eventsFor = events.touch
270
+ if (!this.enabled) {
271
+ this.enabled = true
388
272
 
389
- this.handleDown(handle, e)
390
- },
391
- handleDown(handle, e) {
392
- if (e instanceof MouseEvent && e.which !== 1) {
393
- return
273
+ this.$emit('activated')
274
+ this.$emit('update:active', true)
394
275
  }
395
276
 
396
- if (e.stopPropagation) e.stopPropagation()
397
-
398
- this.handle = handle
399
- this.resizeEnable = true
277
+ if (this.draggable) {
278
+ this.dragEnable = true
279
+ }
400
280
 
401
281
  const newPosition = {
402
282
  ...this.mouseClickPosition,
@@ -406,136 +286,256 @@
406
286
  }
407
287
 
408
288
  this.mouseClickPosition = newPosition
409
- this.bounds = this.calcResizeLimits()
289
+ this.bounds = this.calcDragLimits()
410
290
 
411
- addEvent(document.documentElement, eventsFor.move, this.handleResize)
291
+ addEvent(document.documentElement, eventsFor.move, this.move)
412
292
  addEvent(document.documentElement, eventsFor.stop, this.handleUp)
413
- },
414
- calcResizeLimits() {
415
- const limits = {
416
- minLeft: null,
417
- maxLeft: null,
418
- minRight: null,
419
- maxRight: null
420
- }
293
+ }
294
+ },
295
+ calcDragLimits() {
296
+ const limits = {
297
+ minLeft: null,
298
+ maxLeft: null,
299
+ minRight: null,
300
+ maxRight: null
301
+ }
421
302
 
422
- limits.minLeft = 0
423
- limits.maxLeft = this.right - this.minWidthByPx
424
- limits.minRight = this.left + this.minWidthByPx
425
- limits.maxRight = this.parentWidth
426
-
427
- return limits
428
- },
429
- move(e) {
430
- if (this.resizing) {
431
- this.handleResize(e)
432
- } else if (this.dragEnable) {
433
- this.handleDrag(e)
303
+ limits.minLeft = 0
304
+ limits.maxLeft = this.parentWidth - this.width
305
+ limits.minRight = this.width
306
+ limits.maxRight = this.parentWidth
307
+
308
+ return limits
309
+ },
310
+ deselect(e) {
311
+ const target = e.target || e.srcElement
312
+ const regex = new RegExp(this.className + '-([trmbl]{2})', '')
313
+
314
+ if (!this.$el.contains(target) && !regex.test(target.className)) {
315
+ if (this.enabled && !this.preventDeactivation) {
316
+ this.enabled = false
317
+
318
+ this.$emit('deactivated')
319
+ this.$emit('update:active', false)
434
320
  }
435
- },
436
- handleDrag(e) {
437
- let left = this.left
438
- let right = this.right
439
- const bounds = this.bounds
440
- const mouseClickPosition = this.mouseClickPosition
441
321
 
442
- const tmpDeltaX =
443
- mouseClickPosition.mouseX - (e.touches ? e.touches[0].pageX : e.pageX)
322
+ removeEvent(document.documentElement, eventsFor.move, this.handleResize)
323
+ }
444
324
 
445
- const deltaX = snapToGrid(this.parentWidth / this.subStepCount, tmpDeltaX)
325
+ this.resetBoundsAndMouseState()
326
+ },
327
+ handleTouchDown(handle, e) {
328
+ eventsFor = events.touch
446
329
 
447
- left = restrictToBounds(
448
- mouseClickPosition.left - deltaX,
449
- bounds.minLeft,
450
- bounds.maxLeft
451
- )
330
+ this.handleDown(handle, e)
331
+ },
332
+ handleDown(handle, e) {
333
+ if (e instanceof MouseEvent && e.which !== 1) {
334
+ return
335
+ }
336
+
337
+ if (e.stopPropagation) e.stopPropagation()
338
+
339
+ this.handle = handle
340
+ this.resizeEnable = true
341
+
342
+ const newPosition = {
343
+ ...this.mouseClickPosition,
344
+ mouseX: e.touches ? e.touches[0].pageX : e.pageX,
345
+ left: this.left,
346
+ right: this.right
347
+ }
348
+
349
+ this.mouseClickPosition = newPosition
350
+ this.bounds = this.calcResizeLimits()
351
+
352
+ addEvent(document.documentElement, eventsFor.move, this.handleResize)
353
+ addEvent(document.documentElement, eventsFor.stop, this.handleUp)
354
+ },
355
+ calcResizeLimits() {
356
+ const limits = {
357
+ minLeft: null,
358
+ maxLeft: null,
359
+ minRight: null,
360
+ maxRight: null
361
+ }
362
+
363
+ limits.minLeft = 0
364
+ limits.maxLeft = this.right - this.minWidthByPx
365
+ limits.minRight = this.left + this.minWidthByPx
366
+ limits.maxRight = this.parentWidth
367
+
368
+ return limits
369
+ },
370
+ move(e) {
371
+ if (this.resizing) {
372
+ this.handleResize(e)
373
+ } else if (this.dragEnable) {
374
+ this.handleDrag(e)
375
+ }
376
+ },
377
+ handleDrag(e) {
378
+ let left = this.left
379
+ let right = this.right
380
+ const bounds = this.bounds
381
+ const mouseClickPosition = this.mouseClickPosition
382
+
383
+ const tmpDeltaX =
384
+ mouseClickPosition.mouseX - (e.touches ? e.touches[0].pageX : e.pageX)
385
+
386
+ const deltaX = snapToGrid(this.parentWidth / this.subStepCount, tmpDeltaX)
387
+
388
+ left = restrictToBounds(
389
+ mouseClickPosition.left - deltaX,
390
+ bounds.minLeft,
391
+ bounds.maxLeft
392
+ )
393
+
394
+ right = restrictToBounds(
395
+ mouseClickPosition.right - deltaX,
396
+ bounds.minRight,
397
+ bounds.maxRight
398
+ )
399
+
400
+ this.left = left
401
+ this.right = right
402
+
403
+ this.$emit('dragging', this.left, this.right)
404
+ this.dragging = true
405
+ },
406
+ handleResize(e) {
407
+ let left = this.left
408
+ let right = this.right
409
+ const bounds = this.bounds
410
+ const mouseClickPosition = this.mouseClickPosition
411
+
412
+ const tmpDeltaX =
413
+ mouseClickPosition.mouseX - (e.touches ? e.touches[0].pageX : e.pageX)
414
+
415
+ if (!this.widthTouched && tmpDeltaX) {
416
+ this.widthTouched = true
417
+ }
418
+
419
+ const deltaX = snapToGrid(this.parentWidth / this.subStepCount, tmpDeltaX)
452
420
 
421
+ if (this.handle.includes('r')) {
453
422
  right = restrictToBounds(
454
423
  mouseClickPosition.right - deltaX,
455
424
  bounds.minRight,
456
425
  bounds.maxRight
457
426
  )
427
+ } else if (this.handle.includes('l')) {
428
+ left = restrictToBounds(
429
+ mouseClickPosition.left - deltaX,
430
+ bounds.minLeft,
431
+ bounds.maxLeft
432
+ )
433
+ }
458
434
 
459
- this.left = left
460
- this.right = right
435
+ const width = computeWidth(left, right)
461
436
 
462
- this.$emit('dragging', this.left, this.right)
463
- this.dragging = true
464
- },
465
- handleResize(e) {
466
- let left = this.left
467
- let right = this.right
468
- const bounds = this.bounds
469
- const mouseClickPosition = this.mouseClickPosition
437
+ if (this.onResize(this.handle, left, width, this.height) === false) {
438
+ return
439
+ }
470
440
 
471
- const tmpDeltaX =
472
- mouseClickPosition.mouseX - (e.touches ? e.touches[0].pageX : e.pageX)
441
+ this.left = left
442
+ this.right = right
443
+ this.width = width
473
444
 
474
- if (!this.widthTouched && tmpDeltaX) {
475
- this.widthTouched = true
476
- }
445
+ this.$emit('resizing', this.left, this.right)
446
+ this.resizing = true
447
+ },
448
+ handleUp() {
449
+ this.handle = null
450
+
451
+ this.dragEnable = false
452
+ this.resizeEnable = false
453
+
454
+ if (this.resizing) {
455
+ this.resizing = false
456
+ this.$emit('resizeStop', {
457
+ min: this.roundToNearestStep(this.left),
458
+ max: this.roundToNearestStep(this.right)
459
+ })
460
+ }
477
461
 
478
- const deltaX = snapToGrid(this.parentWidth / this.subStepCount, tmpDeltaX)
479
-
480
- if (this.handle.includes('r')) {
481
- right = restrictToBounds(
482
- mouseClickPosition.right - deltaX,
483
- bounds.minRight,
484
- bounds.maxRight
485
- )
486
- } else if (this.handle.includes('l')) {
487
- left = restrictToBounds(
488
- mouseClickPosition.left - deltaX,
489
- bounds.minLeft,
490
- bounds.maxLeft
491
- )
492
- }
462
+ if (this.dragging) {
463
+ this.dragging = false
464
+ this.$emit('dragStop', {
465
+ min: this.roundToNearestStep(this.left),
466
+ max: this.roundToNearestStep(this.right)
467
+ })
468
+ }
493
469
 
494
- const width = computeWidth(left, right)
470
+ removeEvent(document.documentElement, eventsFor.move, this.handleResize)
471
+ },
472
+ roundToNearestStep(value) {
473
+ const val = value / this.pxPerStep
495
474
 
496
- if (this.onResize(this.handle, left, width, this.height) === false) {
497
- return
498
- }
475
+ const int = 1.0 / this.step
476
+ return (Math.round(val * int) / int).toFixed(2)
477
+ }
478
+ },
479
+ computed: {
480
+ style() {
481
+ return {
482
+ transform: `translate(${this.left}px, 0px)`,
483
+ width: this.computedWidth,
484
+ height: this.computedHeight,
485
+ zIndex: this.zIndex,
486
+ ...(this.dragging && this.disableUserSelect
487
+ ? userSelectNone
488
+ : userSelectAuto)
489
+ }
490
+ },
491
+ actualHandles() {
492
+ if (!this.resizable) return []
499
493
 
500
- this.left = left
501
- this.right = right
502
- this.width = width
503
-
504
- this.$emit('resizing', this.left, this.right)
505
- this.resizing = true
506
- },
507
- handleUp() {
508
- this.handle = null
509
-
510
- this.dragEnable = false
511
- this.resizeEnable = false
512
-
513
- if (this.resizing) {
514
- this.resizing = false
515
- this.$emit('resizeStop', {
516
- min: this.roundToNearestStep(this.left),
517
- max: this.roundToNearestStep(this.right)
518
- })
494
+ return this.handles
495
+ },
496
+ pxPerStep() {
497
+ return this.parentWidth / this.stepCount
498
+ },
499
+ minWidthByPx() {
500
+ return this.minWidth * this.pxPerStep
501
+ },
502
+ computedWidth() {
503
+ if (this.width === 'auto') {
504
+ if (!this.widthTouched) {
505
+ return 'auto'
519
506
  }
507
+ }
520
508
 
521
- if (this.dragging) {
522
- this.dragging = false
523
- this.$emit('dragStop', {
524
- min: this.roundToNearestStep(this.left),
525
- max: this.roundToNearestStep(this.right)
526
- })
509
+ return this.width + 'px'
510
+ },
511
+ computedHeight() {
512
+ if (this.height === 'auto') {
513
+ if (!this.heightTouched) {
514
+ return 'auto'
527
515
  }
516
+ }
528
517
 
529
- removeEvent(document.documentElement, eventsFor.move, this.handleResize)
530
- },
531
- roundToNearestStep(value) {
532
- const val = value / this.pxPerStep
518
+ return this.height + 'px'
519
+ }
520
+ },
521
+
522
+ watch: {
523
+ active(val) {
524
+ this.enabled = val
533
525
 
534
- const int = 1.0 / this.step
535
- return (Math.round(val * int) / int).toFixed(2)
526
+ if (val) {
527
+ this.$emit('activated')
528
+ } else {
529
+ this.$emit('deactivated')
530
+ }
531
+ },
532
+ z(val) {
533
+ if (val >= 0 || val === 'auto') {
534
+ this.zIndex = val
536
535
  }
537
536
  }
538
537
  }
538
+ }
539
539
  </script>
540
540
  <style scoped>
541
541
  .vdr {