material 0.7.1 → 0.7.4
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.
- package/LICENSE +9 -18
- package/README.md +1 -5
- package/index.js +25 -48
- package/package.json +3 -24
- package/src/badge.js +1 -1
- package/src/button.js +50 -100
- package/src/calendar.js +53 -53
- package/src/card.js +1 -1
- package/src/checkbox.js +52 -104
- package/src/datehour.js +7 -7
- package/src/dialog.js +5 -5
- package/src/divider.js +1 -1
- package/src/drawer.js +1 -17
- package/src/element/attribute.js +7 -10
- package/src/element/build.js +6 -7
- package/src/element/create.js +3 -6
- package/src/element/event.js +2 -2
- package/src/element/insert.js +9 -20
- package/src/element/observer.js +22 -0
- package/src/element/offset.js +2 -2
- package/src/element/style.js +12 -12
- package/src/element.js +2 -2
- package/src/file.js +1 -1
- package/src/form/build.js +7 -7
- package/src/form/controller.js +8 -8
- package/src/form/create.js +1 -1
- package/src/form/data.js +9 -9
- package/src/form/delete.js +1 -1
- package/src/form/render.js +9 -9
- package/src/form/set.js +1 -1
- package/src/form/submit.js +6 -6
- package/src/form/update.js +3 -3
- package/src/form/verify.js +4 -4
- package/src/form.js +9 -9
- package/src/icon.js +4 -4
- package/src/image.js +7 -7
- package/src/item.js +1 -1
- package/src/layout.js +14 -14
- package/src/link.js +1 -1
- package/src/list/build.js +8 -8
- package/src/list/click.js +3 -3
- package/src/list/filter.js +11 -11
- package/src/list/image.js +3 -3
- package/src/list/render.js +15 -15
- package/src/list/request.js +7 -7
- package/src/list/search.js +9 -9
- package/src/list/select.js +18 -18
- package/src/list/status.js +1 -1
- package/src/list/update.js +6 -6
- package/src/list/virtual.js +20 -20
- package/src/list/virtual.new.js +5 -5
- package/src/list.js +8 -10
- package/src/map/build.js +2 -2
- package/src/map/countries.js +8 -8
- package/src/map/display.js +13 -13
- package/src/map/focus.js +7 -7
- package/src/map/select.js +2 -2
- package/src/map/set.js +3 -3
- package/src/map/viewport.js +11 -11
- package/src/menu.js +12 -12
- package/src/mixin/control.js +3 -3
- package/src/mixin/controller.js +5 -5
- package/src/mixin/create.js +1 -1
- package/src/mixin/display.js +1 -1
- package/src/mixin/events.js +4 -16
- package/src/mixin/focus.js +1 -1
- package/src/mixin/icon.js +2 -2
- package/src/mixin/init.js +2 -2
- package/src/mixin/insert.js +5 -5
- package/src/mixin/label.js +2 -2
- package/src/mixin/settings.js +5 -5
- package/src/module/attach.js +35 -49
- package/src/module/attributes.js +2 -2
- package/src/module/build.js +6 -11
- package/src/module/classify.js +4 -4
- package/src/module/controller.js +5 -32
- package/src/module/css.js +12 -84
- package/src/module/dataset.js +1 -1
- package/src/module/dom.js +9 -3
- package/src/module/dot.js +4 -4
- package/src/module/emitter.js +1 -1
- package/src/module/event.js +2 -2
- package/src/module/events.js +29 -35
- package/src/module/extract.js +10 -10
- package/src/module/last.js +18 -0
- package/src/module/mediator.js +1 -13
- package/src/module/object.js +4 -4
- package/src/module/observer.js +43 -16
- package/src/module/remove.js +10 -10
- package/src/module/request.js +33 -0
- package/src/module/ripple.js +19 -24
- package/src/module/scrollbar.js +10 -14
- package/src/module/smoothscroll.js +5 -9
- package/src/module/utils.js +14 -23
- package/src/module/viewport.js +5 -5
- package/src/navigation.js +7 -1
- package/src/progress.js +1 -9
- package/src/search.js +24 -29
- package/src/select.js +6 -6
- package/src/selecter.js +39 -39
- package/src/selector.js +3 -3
- package/src/skin/material/button/action.sass +6 -6
- package/src/skin/material/button/button.sass +6 -6
- package/src/skin/material/button/file.sass +1 -1
- package/src/skin/material/button/floating.sass +5 -5
- package/src/skin/material/button/raised.sass +5 -5
- package/src/skin/material/button/stroked.sass +5 -5
- package/src/skin/material/component/navigation.sass +13 -1
- package/src/skin/material/control/checkbox.sass +21 -21
- package/src/skin/material/module/ripple.sass +1 -1
- package/src/slider.js +1 -1
- package/src/snackbar.js +12 -9
- package/src/styles/M3/abstracts/variables.sass +44 -0
- package/src/styles/M3/components/button.sass +26 -0
- package/src/styles/M3/modules/ripple.sass +9 -0
- package/src/styles/M3/themes/classic.sass +2 -0
- package/src/switch.js +1 -1
- package/src/switcher.js +15 -15
- package/src/tabs.js +6 -8
- package/src/tabview.js +26 -46
- package/src/text.js +1 -1
- package/src/textfield.js +1 -1
- package/src/toolbar.js +12 -12
- package/src/tooltip.js +7 -7
- package/src/tree.js +10 -66
- package/src/view/build.js +2 -2
- package/src/view/dataset.js +1 -1
- package/src/view.js +9 -74
- package/dist/demo-bundle.js +0 -2
- package/dist/demo-bundle.js.map +0 -1
- package/dist/demo.css +0 -93
- package/dist/demo.css.map +0 -7
- package/dist/demo.html +0 -24
- package/dist/demo.js +0 -159
- package/dist/icon/accessibility.svg +0 -5
- package/dist/icon/apps.svg +0 -5
- package/dist/icon/happy.svg +0 -6
- package/dist/icon/link.svg +0 -5
- package/dist/icon/more.svg +0 -5
- package/dist/icon/navi.svg +0 -5
- package/dist/icon/phone.svg +0 -6
- package/dist/icon/share.svg +0 -6
- package/dist/icon/side.svg +0 -5
- package/dist/icon/star.svg +0 -7
- package/dist/icon/star_border.svg +0 -6
- package/dist/material.css +0 -2429
- package/dist/material.css.map +0 -7
- package/dist/styles/demo.sass +0 -110
- package/dist/styles.css +0 -23
- package/rollup.config.js +0 -34
- package/src/container.js +0 -66
- package/src/element/ripple.js +0 -90
- package/src/field/email.js +0 -59
- package/src/field/image.js +0 -93
- package/src/module/addclass.js +0 -16
package/src/switch.js
CHANGED
package/src/switcher.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import EventEmitter from './mixin/emitter'
|
|
2
2
|
|
|
3
|
-
class Switcher extends EventEmitter{
|
|
3
|
+
class Switcher extends EventEmitter {
|
|
4
4
|
static defaults = {
|
|
5
5
|
class: 'switcher',
|
|
6
6
|
tag: 'div',
|
|
@@ -9,7 +9,7 @@ class Switcher extends EventEmitter{
|
|
|
9
9
|
mode: 'unique',
|
|
10
10
|
allowEmpty: false
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
constructor (options) {
|
|
14
14
|
super()
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ class Switcher extends EventEmitter{
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
init(options) {
|
|
25
|
+
init (options) {
|
|
26
26
|
this.options = Object.assign({}, Switcher.defaults, options || {})
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -85,8 +85,8 @@ class Switcher extends EventEmitter{
|
|
|
85
85
|
if (item) {
|
|
86
86
|
item.classList.add('preselected')
|
|
87
87
|
} else {
|
|
88
|
-
|
|
89
|
-
for (
|
|
88
|
+
const items = this.list.childNodes
|
|
89
|
+
for (let i = 0; i < items.length; i++) {
|
|
90
90
|
items[i].classList.remove('preselected')
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -94,7 +94,7 @@ class Switcher extends EventEmitter{
|
|
|
94
94
|
|
|
95
95
|
selectByName (name) {
|
|
96
96
|
// console.log('selectByName', name)
|
|
97
|
-
|
|
97
|
+
const item = this.element.querySelector('[data-switcher="' + name + '"]')
|
|
98
98
|
// console.log('item', item)
|
|
99
99
|
if (item) {
|
|
100
100
|
this.select(item)
|
|
@@ -103,7 +103,7 @@ class Switcher extends EventEmitter{
|
|
|
103
103
|
|
|
104
104
|
preSelectByName (name) {
|
|
105
105
|
// console.log('selectByName', name)
|
|
106
|
-
|
|
106
|
+
const item = this.element.querySelector('[data-switcher="' + name + '"]')
|
|
107
107
|
// console.log('item', item)
|
|
108
108
|
this.preselect(item)
|
|
109
109
|
}
|
|
@@ -111,9 +111,9 @@ class Switcher extends EventEmitter{
|
|
|
111
111
|
unique (option) {
|
|
112
112
|
// console.log('option', option)
|
|
113
113
|
if (!option.classList.contains('selected')) {
|
|
114
|
-
|
|
114
|
+
const options = this.list.childNodes
|
|
115
115
|
|
|
116
|
-
for (
|
|
116
|
+
for (let i = 0; i < options.length; i++) {
|
|
117
117
|
options[i].classList.remove('selected')
|
|
118
118
|
}
|
|
119
119
|
|
|
@@ -132,7 +132,7 @@ class Switcher extends EventEmitter{
|
|
|
132
132
|
multiple (option) {
|
|
133
133
|
if (option.classList.contains('selected')) {
|
|
134
134
|
if (this.selected.length === 1) return
|
|
135
|
-
|
|
135
|
+
const i = this.selected.indexOf(option.dataset.switcher)
|
|
136
136
|
this.selected.splice(i, 1)
|
|
137
137
|
option.classList.remove('selected')
|
|
138
138
|
} else {
|
|
@@ -163,7 +163,7 @@ class Switcher extends EventEmitter{
|
|
|
163
163
|
|
|
164
164
|
setValue (value) {
|
|
165
165
|
// console.log('value', value, this.options.list, this.element)
|
|
166
|
-
|
|
166
|
+
const list = this.options.list
|
|
167
167
|
if (this.options.mode === 'unique') {
|
|
168
168
|
for (var i = 0; i < list.length; i++) {
|
|
169
169
|
this.element.querySelector('[data-switcher="' + list[i] + '"]').classList.remove('selected')
|
|
@@ -190,7 +190,7 @@ class Switcher extends EventEmitter{
|
|
|
190
190
|
|
|
191
191
|
if (!list) return
|
|
192
192
|
|
|
193
|
-
for (
|
|
193
|
+
for (let i = 0; i < list.length; i++) {
|
|
194
194
|
this.addOption(list[i])
|
|
195
195
|
}
|
|
196
196
|
}
|
|
@@ -202,19 +202,19 @@ class Switcher extends EventEmitter{
|
|
|
202
202
|
|
|
203
203
|
if (this.options.list.length < 1) this.options.list = list
|
|
204
204
|
|
|
205
|
-
for (
|
|
205
|
+
for (let i = 0; i < list.length; i++) {
|
|
206
206
|
this.addOption(list[i])
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
addOption (value) {
|
|
211
211
|
// console.log('addOption', value)
|
|
212
|
-
|
|
212
|
+
const item = document.createElement('li')
|
|
213
213
|
item.classList.add('item')
|
|
214
214
|
item.dataset.switcher = value
|
|
215
215
|
item.innerHTML = value
|
|
216
216
|
this.list.appendChild(item)
|
|
217
|
-
|
|
217
|
+
// this.options.list.push(list[i])
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
setLabel (value) {
|
package/src/tabs.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
1
|
import create from './mixin/create'
|
|
4
2
|
import insert from './mixin/insert'
|
|
5
3
|
import emitter from './module/emitter'
|
|
@@ -48,15 +46,15 @@ class Tabs {
|
|
|
48
46
|
this.tab = { }
|
|
49
47
|
if (this.options.list) {
|
|
50
48
|
this.list = new List({
|
|
51
|
-
// root: this.element,
|
|
52
49
|
tag: 'div',
|
|
50
|
+
container: this.element,
|
|
53
51
|
list: this.options.list,
|
|
54
52
|
target: '.material-button',
|
|
55
53
|
height: 600,
|
|
56
54
|
label: 'Flat',
|
|
57
55
|
|
|
58
56
|
render: (info) => {
|
|
59
|
-
|
|
57
|
+
let item
|
|
60
58
|
if (info.type === 'divider') {
|
|
61
59
|
item = new Divider()
|
|
62
60
|
} else {
|
|
@@ -75,7 +73,7 @@ class Tabs {
|
|
|
75
73
|
this.selected = item
|
|
76
74
|
this.click(item)
|
|
77
75
|
}
|
|
78
|
-
})
|
|
76
|
+
})
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
this.indicator = create(this.options.indicator)
|
|
@@ -91,13 +89,13 @@ class Tabs {
|
|
|
91
89
|
select (tab) {
|
|
92
90
|
// console.log('select', tab, this.tab)
|
|
93
91
|
this.selected = this.tab[tab]
|
|
94
|
-
this.click(this.selected.
|
|
92
|
+
this.click(this.selected.element, true)
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
click (item, silent) {
|
|
98
96
|
// console.log('clickitem', item, this.element);
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
const or = offset(this.element)
|
|
98
|
+
const o = offset(item)
|
|
101
99
|
this.indicator.setAttribute('style', 'width: ' + o.width + 'px; left: ' + (o.left - or.left) + 'px;')
|
|
102
100
|
|
|
103
101
|
if (!silent) { this.emit('select', item.dataset.name) }
|
package/src/tabview.js
CHANGED
|
@@ -1,38 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import observer from './
|
|
1
|
+
import EventEmitter from './mixin/emitter'
|
|
2
|
+
import observer from './element/observer'
|
|
3
|
+
import build from './module/build'
|
|
3
4
|
import display from './view/display'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
var defaults = {
|
|
14
|
-
class: 'tabview',
|
|
15
|
-
mode: 'style' // css
|
|
16
|
-
}
|
|
6
|
+
class TabView extends EventEmitter {
|
|
7
|
+
static defaults = {
|
|
8
|
+
base: 'view',
|
|
9
|
+
class: 'tabview',
|
|
10
|
+
mode: 'style'
|
|
11
|
+
}
|
|
17
12
|
|
|
18
|
-
class TabView {
|
|
19
|
-
/**
|
|
20
|
-
* The init method of the Button class
|
|
21
|
-
* @param {Object} The element attributes
|
|
22
|
-
* @private
|
|
23
|
-
* @return {DOMElement} The dom element
|
|
24
|
-
*/
|
|
25
13
|
constructor (options) {
|
|
26
|
-
|
|
27
|
-
this.options = Object.assign({}, defaults, options || {})
|
|
28
|
-
Object.assign(this, emitter, display)
|
|
14
|
+
super()
|
|
29
15
|
|
|
16
|
+
this.init(options)
|
|
30
17
|
this.build()
|
|
31
18
|
|
|
32
|
-
|
|
19
|
+
let ready = false
|
|
33
20
|
|
|
34
21
|
observer.insert(this.element, () => {
|
|
35
|
-
// console.log('!!! inserted')
|
|
36
22
|
if (!ready) {
|
|
37
23
|
ready = true
|
|
38
24
|
this.setup()
|
|
@@ -45,15 +31,9 @@ class TabView {
|
|
|
45
31
|
return this
|
|
46
32
|
}
|
|
47
33
|
|
|
48
|
-
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this.element.classList.add('view')
|
|
53
|
-
|
|
54
|
-
if (this.options.class !== 'tabview') {
|
|
55
|
-
this.element.classList.add(this.options.class)
|
|
56
|
-
}
|
|
34
|
+
init (options) {
|
|
35
|
+
this.options = { ...TabView.defaults, ...options }
|
|
36
|
+
Object.assign(this, build, display)
|
|
57
37
|
|
|
58
38
|
this.ui = {}
|
|
59
39
|
}
|
|
@@ -72,7 +52,7 @@ class TabView {
|
|
|
72
52
|
|
|
73
53
|
// console.log('views', this.ui.views)
|
|
74
54
|
|
|
75
|
-
for (
|
|
55
|
+
for (let i = 0; i < this.ui.views.length; i++) {
|
|
76
56
|
if (this.ui.views[i].dataset) {
|
|
77
57
|
this.views.push(this.ui.views[i].dataset.view)
|
|
78
58
|
this.view[this.ui.views[i].dataset.view] = this.ui.views[i]
|
|
@@ -98,7 +78,7 @@ class TabView {
|
|
|
98
78
|
select (view) {
|
|
99
79
|
// console.log('select', view, this.ui.tabs)
|
|
100
80
|
if (this.ui && this.ui.tabs) {
|
|
101
|
-
|
|
81
|
+
const button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
|
|
102
82
|
// console.log('tab', button)
|
|
103
83
|
if (button) {
|
|
104
84
|
this.click(button)
|
|
@@ -111,7 +91,7 @@ class TabView {
|
|
|
111
91
|
disable (view) {
|
|
112
92
|
// console.log('select', view)
|
|
113
93
|
if (this.ui && this.ui.tabs) {
|
|
114
|
-
|
|
94
|
+
const button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
|
|
115
95
|
// console.log('tab', button)
|
|
116
96
|
if (button) {
|
|
117
97
|
button.disabled = 'disabled'
|
|
@@ -125,7 +105,7 @@ class TabView {
|
|
|
125
105
|
// console.log('select', view)
|
|
126
106
|
|
|
127
107
|
if (this.ui && this.ui.tabs) {
|
|
128
|
-
|
|
108
|
+
const button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
|
|
129
109
|
// console.log('tab', button)
|
|
130
110
|
if (button) {
|
|
131
111
|
button.disabled = false
|
|
@@ -137,7 +117,7 @@ class TabView {
|
|
|
137
117
|
|
|
138
118
|
hideView () {
|
|
139
119
|
// console.log('hideView')
|
|
140
|
-
for (
|
|
120
|
+
for (let i = 0; i < this.ui.views.length; i++) {
|
|
141
121
|
// console.log('hide', this.ui.views[i])
|
|
142
122
|
this.ui.views[i].classList.add('hide')
|
|
143
123
|
}
|
|
@@ -145,7 +125,7 @@ class TabView {
|
|
|
145
125
|
|
|
146
126
|
click (button) {
|
|
147
127
|
// console.log('click', button.dataset.view, true)
|
|
148
|
-
|
|
128
|
+
const view = this.ui.view.querySelector('[data-view="' + button.dataset.view + '"]')
|
|
149
129
|
this.hideView()
|
|
150
130
|
|
|
151
131
|
if (this.button) {
|
|
@@ -172,14 +152,14 @@ class TabView {
|
|
|
172
152
|
indicator (button) {
|
|
173
153
|
if (!this.ui.indicator) return
|
|
174
154
|
|
|
175
|
-
|
|
176
|
-
var
|
|
155
|
+
const tabs = this.ui.tabs.getBoundingClientRect()
|
|
156
|
+
var button = button.getBoundingClientRect()
|
|
177
157
|
|
|
178
158
|
// console.log('tab rect', b.height, b.height)
|
|
179
159
|
|
|
180
|
-
this.ui.indicator.style.top =
|
|
181
|
-
this.ui.indicator.style.left = (
|
|
182
|
-
this.ui.indicator.style.width =
|
|
160
|
+
this.ui.indicator.style.top = tabs.height - 2 + 'px'
|
|
161
|
+
this.ui.indicator.style.left = (button.left - tabs.left) + 'px'
|
|
162
|
+
this.ui.indicator.style.width = button.width + 'px'
|
|
183
163
|
}
|
|
184
164
|
}
|
|
185
165
|
|
package/src/text.js
CHANGED
package/src/textfield.js
CHANGED
package/src/toolbar.js
CHANGED
|
@@ -63,16 +63,16 @@ class Toolbar {
|
|
|
63
63
|
|
|
64
64
|
attach () {
|
|
65
65
|
this.element.addEventListener('DOMNodeInserted', (e) => {
|
|
66
|
-
|
|
66
|
+
const textNode = e.target
|
|
67
67
|
if (textNode !== this.element) return
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
const size = this.size = offset(this.element, 'height')
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
const view = this.view = this.element.parentNode
|
|
72
72
|
|
|
73
73
|
// console.log('view', view)
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
let padding = window.getComputedStyle(view)['padding-top']
|
|
76
76
|
// console.log('paddingTop', padding)
|
|
77
77
|
// if (!padding) padding = window.getComputedStyle(this.element.parentNode, 'padding')
|
|
78
78
|
// console.log('padding', padding)
|
|
@@ -83,7 +83,7 @@ class Toolbar {
|
|
|
83
83
|
this.padding = padding
|
|
84
84
|
|
|
85
85
|
// console.log(' toolbar inserted in', size, 'padding', padding)
|
|
86
|
-
|
|
86
|
+
const ptop = this.ptop = size + padding
|
|
87
87
|
|
|
88
88
|
// console.log('ptop', ptop)
|
|
89
89
|
|
|
@@ -125,9 +125,9 @@ class Toolbar {
|
|
|
125
125
|
scroll (view) {
|
|
126
126
|
// console.log('initScroll')
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
let isBody = false
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
let element = view
|
|
131
131
|
|
|
132
132
|
this.scrolling = view
|
|
133
133
|
|
|
@@ -140,7 +140,7 @@ class Toolbar {
|
|
|
140
140
|
view.classList.add()
|
|
141
141
|
|
|
142
142
|
element.addEventListener('scroll', (e) => {
|
|
143
|
-
|
|
143
|
+
let scrollTop
|
|
144
144
|
if (isBody) {
|
|
145
145
|
scrollTop = (document.documentElement ||
|
|
146
146
|
document.body.parentNode ||
|
|
@@ -167,11 +167,11 @@ class Toolbar {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
flexible (e, scrollTop) {
|
|
170
|
-
|
|
170
|
+
const size = offset(this.element, 'height')
|
|
171
171
|
// console.log('flexible', size, this.element.offsetHeight, scrollTop)
|
|
172
172
|
// if (scrollTop < this.size) {
|
|
173
173
|
//
|
|
174
|
-
|
|
174
|
+
let height = '64'
|
|
175
175
|
if (size < height) {
|
|
176
176
|
this.element.style.height = height + 'px'
|
|
177
177
|
} else {
|
|
@@ -188,8 +188,8 @@ class Toolbar {
|
|
|
188
188
|
// this.element.style.top = scrollTop + 'px'
|
|
189
189
|
// }
|
|
190
190
|
// }
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
// this.element.style.top = scrollTop + 'px'
|
|
192
|
+
// this.element.style.height = this.size - scrollTop
|
|
193
193
|
// } else {
|
|
194
194
|
// console.log('size scroll', this.size, scrollTop)
|
|
195
195
|
|
package/src/tooltip.js
CHANGED
|
@@ -38,7 +38,7 @@ class Tooltip {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
build () {
|
|
41
|
-
|
|
41
|
+
const container = this.options.container || document.body
|
|
42
42
|
|
|
43
43
|
this.element = document.createElement('span')
|
|
44
44
|
this.element.classList.add('tooltip')
|
|
@@ -57,9 +57,9 @@ class Tooltip {
|
|
|
57
57
|
|
|
58
58
|
attach () {
|
|
59
59
|
// console.log('attach', this.options.targets)
|
|
60
|
-
|
|
60
|
+
const targets = document.querySelectorAll(this.options.targets)
|
|
61
61
|
|
|
62
|
-
for (
|
|
62
|
+
for (let i = 0; i < targets.length; i++) {
|
|
63
63
|
targets[i].addEventListener('mouseover', (e) => {
|
|
64
64
|
// console.log('tooltip', touch(), this.disabled)
|
|
65
65
|
if (touch()) return
|
|
@@ -75,7 +75,7 @@ class Tooltip {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
this.label.innerHTML = e.currentTarget.dataset.tooltip
|
|
78
|
-
|
|
78
|
+
const coord = this.offset(e.currentTarget)
|
|
79
79
|
|
|
80
80
|
this.show()
|
|
81
81
|
this.element.style.top = (coord.top + this.options.offset.top) + 'px'
|
|
@@ -96,9 +96,9 @@ class Tooltip {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
offset (target) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
const rect = target.getBoundingClientRect()
|
|
100
|
+
const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft
|
|
101
|
+
const scrollTop = window.pageYOffset || document.documentElement.scrollTop
|
|
102
102
|
return { top: rect.top + scrollTop, left: rect.left + scrollLeft }
|
|
103
103
|
}
|
|
104
104
|
|
package/src/tree.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import insert from './mixin/insert'
|
|
4
|
-
import css from './module/css'
|
|
5
|
-
import attach from './module/attach'
|
|
6
|
-
|
|
7
1
|
import emitter from './module/emitter'
|
|
2
|
+
import * as css from './module/css'
|
|
3
|
+
import attach from './module/attach'
|
|
4
|
+
import insert from './mixin/insert'
|
|
8
5
|
|
|
9
6
|
const defaults = {
|
|
10
7
|
prefix: 'material',
|
|
@@ -16,21 +13,7 @@ const defaults = {
|
|
|
16
13
|
]
|
|
17
14
|
}
|
|
18
15
|
|
|
19
|
-
/**
|
|
20
|
-
* Tree component
|
|
21
|
-
* @class
|
|
22
|
-
* @param {Object} options Default options for view
|
|
23
|
-
* @extends {View}
|
|
24
|
-
* @since 0.0.4
|
|
25
|
-
* @author Jerome Vial
|
|
26
|
-
*
|
|
27
|
-
* @type {prime}
|
|
28
|
-
*/
|
|
29
16
|
class Tree {
|
|
30
|
-
/**
|
|
31
|
-
* init
|
|
32
|
-
* @return {Object} The class options
|
|
33
|
-
*/
|
|
34
17
|
constructor (options) {
|
|
35
18
|
this.options = Object.assign({}, defaults, options || {})
|
|
36
19
|
|
|
@@ -41,10 +24,6 @@ class Tree {
|
|
|
41
24
|
return this
|
|
42
25
|
}
|
|
43
26
|
|
|
44
|
-
/**
|
|
45
|
-
* [_initView description]
|
|
46
|
-
* @return Class instance
|
|
47
|
-
*/
|
|
48
27
|
init () {
|
|
49
28
|
// init this
|
|
50
29
|
|
|
@@ -62,28 +41,18 @@ class Tree {
|
|
|
62
41
|
return this
|
|
63
42
|
}
|
|
64
43
|
|
|
65
|
-
/**
|
|
66
|
-
* [_initFunction description]
|
|
67
|
-
* @param {?} functions [description]
|
|
68
|
-
* @return {} [description]
|
|
69
|
-
*/
|
|
70
44
|
_initFunction (functions) {
|
|
71
|
-
for (
|
|
72
|
-
|
|
45
|
+
for (let i = 0; i < functions.length; i++) {
|
|
46
|
+
const name = functions[i]
|
|
73
47
|
if (this.options[name]) {
|
|
74
48
|
this[name] = this.options[name]
|
|
75
49
|
}
|
|
76
50
|
}
|
|
77
51
|
}
|
|
78
52
|
|
|
79
|
-
/**
|
|
80
|
-
* [_initList description]
|
|
81
|
-
* @param {Object} options this class options
|
|
82
|
-
* @return {Object} The class instance
|
|
83
|
-
*/
|
|
84
53
|
build () {
|
|
85
54
|
// define main tag
|
|
86
|
-
|
|
55
|
+
const tag = this.options.tag || 'div'
|
|
87
56
|
|
|
88
57
|
this.element = document.createElement(tag)
|
|
89
58
|
css.add(this.element, this.options.prefix + '-' + this.options.class)
|
|
@@ -109,7 +78,7 @@ class Tree {
|
|
|
109
78
|
|
|
110
79
|
// console.log('buildTree', data);
|
|
111
80
|
|
|
112
|
-
|
|
81
|
+
let tree = ''
|
|
113
82
|
|
|
114
83
|
function checkChildren (parentObj, level) {
|
|
115
84
|
if (level) {
|
|
@@ -135,8 +104,8 @@ class Tree {
|
|
|
135
104
|
|
|
136
105
|
if (parentObj.children && parentObj.children.length > 0) {
|
|
137
106
|
tree += '<ul>'
|
|
138
|
-
for (
|
|
139
|
-
|
|
107
|
+
for (let i = 0; i < parentObj.children.length; i++) {
|
|
108
|
+
const children = parentObj.children[i]
|
|
140
109
|
|
|
141
110
|
checkChildren(children, level)
|
|
142
111
|
}
|
|
@@ -161,11 +130,6 @@ class Tree {
|
|
|
161
130
|
// console.log(this.options)
|
|
162
131
|
}
|
|
163
132
|
|
|
164
|
-
/**
|
|
165
|
-
* This method handles onSelect
|
|
166
|
-
* @param {event} e [description]
|
|
167
|
-
* @return {?} [description]
|
|
168
|
-
*/
|
|
169
133
|
onSelect (e) {
|
|
170
134
|
// console.log('click', e.target, this.options.target)
|
|
171
135
|
if (e.target && e.target.matches(this.options.target)) {
|
|
@@ -184,12 +148,6 @@ class Tree {
|
|
|
184
148
|
return this
|
|
185
149
|
}
|
|
186
150
|
|
|
187
|
-
/**
|
|
188
|
-
* select
|
|
189
|
-
* @param {Element} item [description]
|
|
190
|
-
* @param {event} event The caller event
|
|
191
|
-
* @return [description]
|
|
192
|
-
*/
|
|
193
151
|
select (item, event) {
|
|
194
152
|
// console.log('select', item, event)
|
|
195
153
|
this.item = item
|
|
@@ -197,11 +155,6 @@ class Tree {
|
|
|
197
155
|
this.emit('selected', item[0])
|
|
198
156
|
}
|
|
199
157
|
|
|
200
|
-
/**
|
|
201
|
-
* Setter
|
|
202
|
-
* @param {string} prop
|
|
203
|
-
* @param {string} value
|
|
204
|
-
*/
|
|
205
158
|
set (prop, value, options) {
|
|
206
159
|
switch (prop) {
|
|
207
160
|
case 'tree':
|
|
@@ -214,26 +167,17 @@ class Tree {
|
|
|
214
167
|
return this
|
|
215
168
|
}
|
|
216
169
|
|
|
217
|
-
/**
|
|
218
|
-
* Set list
|
|
219
|
-
* @param {Array} list List of info object
|
|
220
|
-
* @return {Object} The class instance
|
|
221
|
-
*/
|
|
222
170
|
setTree (data) {
|
|
223
171
|
this.buildTree(data)
|
|
224
172
|
return this
|
|
225
173
|
}
|
|
226
174
|
|
|
227
|
-
/**
|
|
228
|
-
* [add description]
|
|
229
|
-
* @param {Object} item [description]
|
|
230
|
-
*/
|
|
231
175
|
addItem (item /*, index */) {
|
|
232
176
|
if (!item) {
|
|
233
177
|
return
|
|
234
178
|
}
|
|
235
179
|
|
|
236
|
-
|
|
180
|
+
const where = 'bottom'
|
|
237
181
|
this.insertElement(item.root, this.element, where)
|
|
238
182
|
// item.insert(this.element, where);
|
|
239
183
|
this.items.push(item)
|
package/src/view/build.js
CHANGED