material 0.7.1 → 0.7.2
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/README.md +1 -5
- package/dist/demo-bundle.js +2281 -2
- package/dist/demo-bundle.js.map +7 -1
- package/dist/demo.js +13 -13
- package/esbuild.js +22 -0
- package/esbuild.watch.js +25 -0
- package/package.json +7 -20
- 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 +5 -53
- 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 +6 -17
- 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/field/email.js +9 -44
- package/src/field/image.js +17 -51
- 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 -8
- 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 +7 -10
- 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 +8 -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/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/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/component/navigation.sass +9 -1
- package/src/slider.js +1 -1
- package/src/snackbar.js +8 -7
- package/src/switch.js +1 -1
- package/src/switcher.js +15 -15
- package/src/tabs.js +4 -5
- 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/rollup.config.js +0 -34
- package/src/element/ripple.js +0 -90
- package/src/module/addclass.js +0 -16
package/src/search.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import EventEmitter from './mixin/emitter'
|
|
2
2
|
|
|
3
3
|
import build from './module/build'
|
|
4
|
+
import display from './mixin/display'
|
|
4
5
|
import bindEvents from './module/events'
|
|
5
6
|
|
|
7
|
+
import Element from './element'
|
|
6
8
|
import Button from './button'
|
|
7
|
-
import cancel from './skin/material/icon/cancel.svg'
|
|
8
9
|
|
|
9
10
|
class Search extends EventEmitter {
|
|
10
11
|
static defaults = {
|
|
11
12
|
class: 'search-input',
|
|
12
13
|
minChar: 4,
|
|
13
|
-
iconCancel: cancel,
|
|
14
14
|
timeout: 200,
|
|
15
|
+
layout: [
|
|
16
|
+
[Element, 'input', { tag: 'input', class: 'input'} ],
|
|
17
|
+
[Button, 'clear', { class: 'clear'} ]
|
|
18
|
+
],
|
|
15
19
|
events: [
|
|
16
|
-
['input.input', 'onInput'],
|
|
17
|
-
['
|
|
20
|
+
['ui.input.input', 'onInput'],
|
|
21
|
+
['ui.clear.click', 'onClear']
|
|
18
22
|
]
|
|
19
23
|
}
|
|
20
24
|
|
|
@@ -23,47 +27,38 @@ class Search extends EventEmitter {
|
|
|
23
27
|
|
|
24
28
|
this.init(options)
|
|
25
29
|
this.build()
|
|
26
|
-
this.buildSearch()
|
|
27
30
|
this.bindEvents()
|
|
28
|
-
}
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
this.options = Object.assign({}, Search.defaults, options || {})
|
|
32
|
-
Object.assign(this, build, bindEvents)
|
|
32
|
+
this.input = this.ui.input
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.icon.innerHTML = this.options.icon
|
|
40
|
-
this.element.appendChild(this.icon)
|
|
41
|
-
}
|
|
35
|
+
init (options) {
|
|
36
|
+
this.options = { ...Search.defaults, ...options }
|
|
37
|
+
Object.assign(this, build, display, bindEvents)
|
|
38
|
+
}
|
|
42
39
|
|
|
43
|
-
|
|
44
|
-
this.input.
|
|
45
|
-
this.
|
|
40
|
+
set (value) {
|
|
41
|
+
if (value) this.input.value = value
|
|
42
|
+
else this.input.value = ''
|
|
43
|
+
}
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
class: 'clear',
|
|
50
|
-
icon: this.options.iconCancel
|
|
51
|
-
})
|
|
45
|
+
focus () {
|
|
46
|
+
this.ui.input.focus()
|
|
52
47
|
}
|
|
53
48
|
|
|
54
49
|
onInput () {
|
|
55
|
-
if (this.input.value.length < this.options.minChar) return
|
|
50
|
+
if (this.ui.input.value.length < this.options.minChar) return
|
|
56
51
|
|
|
57
52
|
clearTimeout(this.timeout)
|
|
58
53
|
|
|
59
54
|
this.timeout = setTimeout(() => {
|
|
60
|
-
this.emit('change', this.input.value)
|
|
55
|
+
this.emit('change', this.ui.input.value)
|
|
61
56
|
}, this.options.timeout)
|
|
62
57
|
}
|
|
63
58
|
|
|
64
|
-
|
|
65
|
-
this.
|
|
66
|
-
this.
|
|
59
|
+
onClear () {
|
|
60
|
+
this.set(null)
|
|
61
|
+
this.focus()
|
|
67
62
|
this.emit('cancel')
|
|
68
63
|
}
|
|
69
64
|
}
|
package/src/select.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import EventEmitter from './mixin/emitter'
|
|
2
|
-
|
|
2
|
+
// modules
|
|
3
3
|
import build from './module/build'
|
|
4
4
|
import attach from './module/attach'
|
|
5
5
|
import attributes from './module/attributes'
|
|
6
|
-
import dataset from './
|
|
6
|
+
import dataset from './module/dataset'
|
|
7
7
|
|
|
8
8
|
class Select extends EventEmitter {
|
|
9
9
|
static defaults = {
|
|
@@ -23,7 +23,7 @@ class Select extends EventEmitter {
|
|
|
23
23
|
this.attach()
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
init(options) {
|
|
26
|
+
init (options) {
|
|
27
27
|
this.options = Object.assign({}, Select.defaults, options || {})
|
|
28
28
|
Object.assign(this, build, attach, dataset)
|
|
29
29
|
}
|
|
@@ -61,13 +61,13 @@ class Select extends EventEmitter {
|
|
|
61
61
|
setOptions (options) {
|
|
62
62
|
// console.log('buildCountry', this.input)
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
const first = this.options.first
|
|
65
65
|
|
|
66
66
|
if (first && first[0] && first[1]) {
|
|
67
67
|
this.input.options[0] = new Option(first[1], first[0])
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
for (
|
|
70
|
+
for (let i = 0; i < options.length; i++) {
|
|
71
71
|
this.addOption(options[i][1], options[i][0])
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -96,7 +96,7 @@ class Select extends EventEmitter {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
get () {
|
|
99
|
-
|
|
99
|
+
let value = null
|
|
100
100
|
|
|
101
101
|
if (this.input[this.input.selectedIndex]) {
|
|
102
102
|
value = this.input[this.input.selectedIndex].value
|
package/src/selecter.js
CHANGED
|
@@ -1,52 +1,50 @@
|
|
|
1
|
-
import
|
|
1
|
+
import EventEmitter from './mixin/emitter'
|
|
2
|
+
// modules
|
|
2
3
|
import attach from './module/attach'
|
|
3
|
-
import dataset from './
|
|
4
|
+
import dataset from './module/dataset'
|
|
4
5
|
import attributes from './module/attributes'
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
// ui
|
|
6
|
+
import * as css from './module/css'
|
|
7
|
+
// components
|
|
8
8
|
import Layout from './layout'
|
|
9
9
|
import Element from './element'
|
|
10
10
|
import Button from './button'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
[Element, '
|
|
22
|
-
[Element, '
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
class Selecter extends EventEmitter {
|
|
13
|
+
static defaults = {
|
|
14
|
+
class: 'selecter',
|
|
15
|
+
first: null,
|
|
16
|
+
attributes: ['type', 'name', 'autocomplete', 'required'],
|
|
17
|
+
layout: [
|
|
18
|
+
[Element, 'label', { tag: 'label', class: 'label' }],
|
|
19
|
+
[Element, 'value', { tag: 'value', class: 'value' }],
|
|
20
|
+
[Element, 'input', { tag: 'input', type: 'text', class: 'input' }],
|
|
21
|
+
[Element, 'list', { class: 'list' },
|
|
22
|
+
[Element, 'head', { class: 'head' },
|
|
23
|
+
[Element, 'title', { class: 'title' }],
|
|
24
|
+
[Button, 'close', { class: 'close' }]
|
|
25
|
+
],
|
|
26
|
+
[Element, 'body', { class: 'body' }]
|
|
27
|
+
]
|
|
28
|
+
],
|
|
29
|
+
events: [
|
|
30
|
+
['ui.value.click', 'showList'],
|
|
31
|
+
['ui.list.click', 'select'],
|
|
32
|
+
['ui.close.click', 'hideList']
|
|
26
33
|
]
|
|
27
|
-
|
|
28
|
-
events: [
|
|
29
|
-
['ui.value.click', 'showList'],
|
|
30
|
-
['ui.list.click', 'select'],
|
|
31
|
-
['ui.close.click', 'hideList']
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
+
}
|
|
34
35
|
|
|
35
|
-
class Selecter {
|
|
36
|
-
/**
|
|
37
|
-
* Constructor
|
|
38
|
-
* @param {Object} options - Component options
|
|
39
|
-
* @return {Object} Class instance
|
|
40
|
-
*/
|
|
41
36
|
constructor (options) {
|
|
42
|
-
|
|
43
|
-
Object.assign(this, emitter, attach, dataset)
|
|
37
|
+
super()
|
|
44
38
|
|
|
39
|
+
this.init(options)
|
|
45
40
|
this.build()
|
|
46
41
|
this.setup()
|
|
47
42
|
this.attach()
|
|
43
|
+
}
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
init (options) {
|
|
46
|
+
this.options = Object.assign({}, Selecter.defaults, options || {})
|
|
47
|
+
Object.assign(this, attach, dataset)
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
setup () {
|
|
@@ -75,17 +73,18 @@ class Selecter {
|
|
|
75
73
|
this.element.classList.add(this.options.case + '-case')
|
|
76
74
|
}
|
|
77
75
|
}
|
|
76
|
+
|
|
78
77
|
/**
|
|
79
78
|
* build method
|
|
80
79
|
* @return {Object} The class instance
|
|
81
80
|
*/
|
|
82
81
|
build () {
|
|
83
|
-
|
|
82
|
+
const tag = this.options.tag || 'span'
|
|
84
83
|
this.element = document.createElement(tag)
|
|
85
84
|
this.element.classList.add('selecter')
|
|
86
85
|
|
|
87
86
|
if (this.options.class !== 'selecter') {
|
|
88
|
-
|
|
87
|
+
css.add(this.element, this.options.class)
|
|
89
88
|
}
|
|
90
89
|
|
|
91
90
|
this.layout = new Layout(this.options.layout, this.element)
|
|
@@ -138,9 +137,9 @@ class Selecter {
|
|
|
138
137
|
|
|
139
138
|
// console.log('list', list)
|
|
140
139
|
|
|
141
|
-
for (
|
|
140
|
+
for (let i = 0; i < list.length; i++) {
|
|
142
141
|
// if (list.indexOf(list[i][0]) > -1) {
|
|
143
|
-
|
|
142
|
+
const item = document.createElement('div')
|
|
144
143
|
item.classList.add('item')
|
|
145
144
|
item.innerHTML = list[i][1]
|
|
146
145
|
item.dataset.value = list[i][0]
|
|
@@ -169,6 +168,7 @@ class Selecter {
|
|
|
169
168
|
this.element.classList.add('bold')
|
|
170
169
|
}
|
|
171
170
|
}
|
|
171
|
+
|
|
172
172
|
showList () {
|
|
173
173
|
// console.log('showList')
|
|
174
174
|
|
package/src/selector.js
CHANGED
|
@@ -121,8 +121,8 @@ class Selector {
|
|
|
121
121
|
update (target) {
|
|
122
122
|
target = target || this.target
|
|
123
123
|
if (!target) return
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
const coords = target.getBoundingClientRect()
|
|
125
|
+
const pcoords = this.element.parentNode.getBoundingClientRect()
|
|
126
126
|
|
|
127
127
|
this.element.style.top = coords.top - pcoords.top + 'px'
|
|
128
128
|
this.element.style.left = coords.left - pcoords.left + 'px'
|
|
@@ -158,7 +158,7 @@ class Selector {
|
|
|
158
158
|
const offsetY = this.element.getBoundingClientRect().y
|
|
159
159
|
const element = document.body
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
const ratio = parseInt(this.element.style.width, 10) / parseInt(this.element.style.height, 10)
|
|
162
162
|
|
|
163
163
|
this.border.setPointerCapture(ev.pointerId)
|
|
164
164
|
|
package/src/slider.js
CHANGED
|
@@ -8,7 +8,7 @@ import offset from './element/offset'
|
|
|
8
8
|
import classify from './module/classify'
|
|
9
9
|
// import control from './control';
|
|
10
10
|
import attach from './module/attach'
|
|
11
|
-
import css from './module/css'
|
|
11
|
+
import * as css from './module/css'
|
|
12
12
|
import emitter from './module/emitter'
|
|
13
13
|
|
|
14
14
|
import icon from './skin/material/icon/pin.svg'
|
package/src/snackbar.js
CHANGED
|
@@ -23,24 +23,25 @@ class Snackbar extends EventEmitter {
|
|
|
23
23
|
['ui.action.click', 'action'],
|
|
24
24
|
['ui.close.click', 'destroy']
|
|
25
25
|
]
|
|
26
|
-
}
|
|
26
|
+
}
|
|
27
27
|
|
|
28
28
|
constructor (options) {
|
|
29
29
|
super()
|
|
30
30
|
|
|
31
31
|
this.init(options)
|
|
32
32
|
this.build(this.constructor)
|
|
33
|
-
this.render()
|
|
33
|
+
this.render()
|
|
34
34
|
this.bindEvents()
|
|
35
35
|
this.show()
|
|
36
36
|
|
|
37
|
-
if (this.options.duration)
|
|
38
|
-
setTimeout(()=>{
|
|
37
|
+
if (this.options.duration) {
|
|
38
|
+
setTimeout(() => {
|
|
39
39
|
this.destroy()
|
|
40
40
|
}, this.options.duration)
|
|
41
|
+
}
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
init(options) {
|
|
44
|
+
init (options) {
|
|
44
45
|
this.options = Object.assign({}, Snackbar.defaults, options || {})
|
|
45
46
|
Object.assign(this, build, bindEvents, display)
|
|
46
47
|
|
|
@@ -50,7 +51,7 @@ class Snackbar extends EventEmitter {
|
|
|
50
51
|
buildSnackbarContainer (container = document.body) {
|
|
51
52
|
// console.log('buildSnackbarContainer', container)
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
const snackbarContainer = container.querySelector('.snackbars')
|
|
54
55
|
|
|
55
56
|
// console.log('snackbarContainer', snackbarContainer)
|
|
56
57
|
|
|
@@ -82,7 +83,7 @@ class Snackbar extends EventEmitter {
|
|
|
82
83
|
this.destroy()
|
|
83
84
|
}
|
|
84
85
|
|
|
85
|
-
close() {
|
|
86
|
+
close () {
|
|
86
87
|
// console.log('close')
|
|
87
88
|
this.destroy()
|
|
88
89
|
}
|
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
|
@@ -48,7 +48,6 @@ class Tabs {
|
|
|
48
48
|
this.tab = { }
|
|
49
49
|
if (this.options.list) {
|
|
50
50
|
this.list = new List({
|
|
51
|
-
// root: this.element,
|
|
52
51
|
tag: 'div',
|
|
53
52
|
list: this.options.list,
|
|
54
53
|
target: '.material-button',
|
|
@@ -56,7 +55,7 @@ class Tabs {
|
|
|
56
55
|
label: 'Flat',
|
|
57
56
|
|
|
58
57
|
render: (info) => {
|
|
59
|
-
|
|
58
|
+
let item
|
|
60
59
|
if (info.type === 'divider') {
|
|
61
60
|
item = new Divider()
|
|
62
61
|
} else {
|
|
@@ -91,13 +90,13 @@ class Tabs {
|
|
|
91
90
|
select (tab) {
|
|
92
91
|
// console.log('select', tab, this.tab)
|
|
93
92
|
this.selected = this.tab[tab]
|
|
94
|
-
this.click(this.selected.
|
|
93
|
+
this.click(this.selected.element, true)
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
click (item, silent) {
|
|
98
97
|
// console.log('clickitem', item, this.element);
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
const or = offset(this.element)
|
|
99
|
+
const o = offset(item)
|
|
101
100
|
this.indicator.setAttribute('style', 'width: ' + o.width + 'px; left: ' + (o.left - or.left) + 'px;')
|
|
102
101
|
|
|
103
102
|
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