/
overflow-auto.js
59 lines (42 loc) · 1.19 KB
/
overflow-auto.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import Class from '../mixin/class';
import {closest, css, height, offset, toFloat, trigger} from 'uikit-util';
export default {
mixins: [Class],
props: {
selContainer: String,
selContent: String,
},
data: {
selContainer: '.uk-modal',
selContent: '.uk-modal-dialog',
},
computed: {
container({selContainer}, $el) {
return closest($el, selContainer);
},
content({selContent}, $el) {
return closest($el, selContent);
}
},
connected() {
css(this.$el, 'minHeight', 150);
},
update: {
read() {
if (!this.content || !this.container) {
return false;
}
return {
current: toFloat(css(this.$el, 'maxHeight')),
max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el)))
};
},
write({current, max}) {
css(this.$el, 'maxHeight', max);
if (Math.round(current) !== Math.round(max)) {
trigger(this.$el, 'resize');
}
},
events: ['load', 'resize']
}
};