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.
Files changed (122) hide show
  1. package/README.md +1 -5
  2. package/dist/demo-bundle.js +2281 -2
  3. package/dist/demo-bundle.js.map +7 -1
  4. package/dist/demo.js +13 -13
  5. package/esbuild.js +22 -0
  6. package/esbuild.watch.js +25 -0
  7. package/package.json +7 -20
  8. package/src/badge.js +1 -1
  9. package/src/button.js +50 -100
  10. package/src/calendar.js +53 -53
  11. package/src/card.js +1 -1
  12. package/src/checkbox.js +5 -53
  13. package/src/datehour.js +7 -7
  14. package/src/dialog.js +5 -5
  15. package/src/divider.js +1 -1
  16. package/src/drawer.js +1 -17
  17. package/src/element/attribute.js +7 -10
  18. package/src/element/build.js +6 -7
  19. package/src/element/create.js +3 -6
  20. package/src/element/event.js +2 -2
  21. package/src/element/insert.js +6 -17
  22. package/src/element/observer.js +22 -0
  23. package/src/element/offset.js +2 -2
  24. package/src/element/style.js +12 -12
  25. package/src/element.js +2 -2
  26. package/src/field/email.js +9 -44
  27. package/src/field/image.js +17 -51
  28. package/src/file.js +1 -1
  29. package/src/form/build.js +7 -7
  30. package/src/form/controller.js +8 -8
  31. package/src/form/create.js +1 -1
  32. package/src/form/data.js +9 -9
  33. package/src/form/delete.js +1 -1
  34. package/src/form/render.js +9 -9
  35. package/src/form/set.js +1 -1
  36. package/src/form/submit.js +6 -6
  37. package/src/form/update.js +3 -3
  38. package/src/form/verify.js +4 -4
  39. package/src/form.js +9 -9
  40. package/src/icon.js +4 -4
  41. package/src/image.js +7 -7
  42. package/src/item.js +1 -1
  43. package/src/layout.js +14 -14
  44. package/src/link.js +1 -1
  45. package/src/list/build.js +8 -8
  46. package/src/list/click.js +3 -3
  47. package/src/list/filter.js +11 -11
  48. package/src/list/image.js +3 -3
  49. package/src/list/render.js +15 -15
  50. package/src/list/request.js +7 -7
  51. package/src/list/search.js +9 -9
  52. package/src/list/select.js +18 -18
  53. package/src/list/status.js +1 -1
  54. package/src/list/update.js +6 -6
  55. package/src/list/virtual.js +20 -20
  56. package/src/list/virtual.new.js +5 -5
  57. package/src/list.js +8 -8
  58. package/src/map/build.js +2 -2
  59. package/src/map/countries.js +8 -8
  60. package/src/map/display.js +13 -13
  61. package/src/map/focus.js +7 -7
  62. package/src/map/select.js +2 -2
  63. package/src/map/set.js +3 -3
  64. package/src/map/viewport.js +11 -11
  65. package/src/menu.js +12 -12
  66. package/src/mixin/control.js +3 -3
  67. package/src/mixin/controller.js +5 -5
  68. package/src/mixin/create.js +1 -1
  69. package/src/mixin/display.js +1 -1
  70. package/src/mixin/events.js +4 -16
  71. package/src/mixin/focus.js +1 -1
  72. package/src/mixin/icon.js +2 -2
  73. package/src/mixin/init.js +2 -2
  74. package/src/mixin/insert.js +5 -5
  75. package/src/mixin/label.js +2 -2
  76. package/src/mixin/settings.js +5 -5
  77. package/src/module/attach.js +35 -49
  78. package/src/module/attributes.js +2 -2
  79. package/src/module/build.js +7 -10
  80. package/src/module/classify.js +4 -4
  81. package/src/module/controller.js +5 -32
  82. package/src/module/css.js +12 -84
  83. package/src/module/dataset.js +1 -1
  84. package/src/module/dom.js +8 -3
  85. package/src/module/dot.js +4 -4
  86. package/src/module/emitter.js +1 -1
  87. package/src/module/event.js +2 -2
  88. package/src/module/events.js +29 -35
  89. package/src/module/extract.js +10 -10
  90. package/src/module/last.js +18 -0
  91. package/src/module/mediator.js +1 -13
  92. package/src/module/object.js +4 -4
  93. package/src/module/observer.js +43 -16
  94. package/src/module/remove.js +10 -10
  95. package/src/module/ripple.js +19 -24
  96. package/src/module/scrollbar.js +10 -14
  97. package/src/module/smoothscroll.js +5 -9
  98. package/src/module/utils.js +14 -23
  99. package/src/module/viewport.js +5 -5
  100. package/src/progress.js +1 -9
  101. package/src/search.js +24 -29
  102. package/src/select.js +6 -6
  103. package/src/selecter.js +39 -39
  104. package/src/selector.js +3 -3
  105. package/src/skin/material/component/navigation.sass +9 -1
  106. package/src/slider.js +1 -1
  107. package/src/snackbar.js +8 -7
  108. package/src/switch.js +1 -1
  109. package/src/switcher.js +15 -15
  110. package/src/tabs.js +4 -5
  111. package/src/tabview.js +26 -46
  112. package/src/text.js +1 -1
  113. package/src/textfield.js +1 -1
  114. package/src/toolbar.js +12 -12
  115. package/src/tooltip.js +7 -7
  116. package/src/tree.js +10 -66
  117. package/src/view/build.js +2 -2
  118. package/src/view/dataset.js +1 -1
  119. package/src/view.js +9 -74
  120. package/rollup.config.js +0 -34
  121. package/src/element/ripple.js +0 -90
  122. 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
- ['input.cancel', 'onCancel']
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
- init(options) {
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
- buildSearch () {
36
- if (this.options.icon) {
37
- this.icon = document.createElement('i')
38
- this.icon.classList.add('icon')
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
- this.input = document.createElement('input')
44
- this.input.classList.add('input')
45
- this.element.appendChild(this.input)
40
+ set (value) {
41
+ if (value) this.input.value = value
42
+ else this.input.value = ''
43
+ }
46
44
 
47
- this.cancel = new Button({
48
- container: this.element,
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
- onCancel () {
65
- this.input.value = ''
66
- this.input.focus()
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 './view/dataset'
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
- var first = this.options.first
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 (var i = 0; i < options.length; i++) {
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
- var value = null
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 emitter from './module/emitter'
1
+ import EventEmitter from './mixin/emitter'
2
+ // modules
2
3
  import attach from './module/attach'
3
- import dataset from './view/dataset'
4
+ import dataset from './module/dataset'
4
5
  import attributes from './module/attributes'
5
- import addClass from './module/addclass'
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
- const defaults = {
13
- class: 'selecter',
14
- first: null,
15
- attributes: ['type', 'name', 'autocomplete', 'required'],
16
- layout: [
17
- [Element, 'label', { tag: 'label', class: 'label' }],
18
- [Element, 'value', { tag: 'value', class: 'value' }],
19
- [Element, 'input', { tag: 'input', type: 'text', class: 'input' }],
20
- [Element, 'list', { class: 'list' },
21
- [Element, 'head', { class: 'head' },
22
- [Element, 'title', { class: 'title' }],
23
- [Button, 'close', { class: 'close' }]
24
- ],
25
- [Element, 'body', { class: 'body' }]
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
- this.options = Object.assign({}, defaults, options || {})
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
- return this
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
- var tag = this.options.tag || 'span'
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
- addClass(this.element, this.options.class)
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 (var i = 0; i < list.length; i++) {
140
+ for (let i = 0; i < list.length; i++) {
142
141
  // if (list.indexOf(list[i][0]) > -1) {
143
- var item = document.createElement('div')
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
- var coords = target.getBoundingClientRect()
125
- var pcoords = this.element.parentNode.getBoundingClientRect()
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
- var ratio = parseInt(this.element.style.width, 10) / parseInt(this.element.style.height, 10)
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
 
@@ -1 +1,9 @@
1
- .navigation
1
+ .navigation
2
+ flex: none
3
+ display: flex
4
+ flex-direction: column
5
+ width: 12px
6
+ background-color: #3a3a3a
7
+ margin: 0
8
+ overflow: hidden
9
+ transition: 0.1s linear width
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
- let snackbarContainer = container.querySelector('.snackbars')
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
@@ -55,7 +55,7 @@ class Switch extends EventEmitter {
55
55
  this.buildLabel()
56
56
 
57
57
  if (this.options.data) {
58
- dataset(this.root, this.options.data)
58
+ dataset(this.element, this.options.data)
59
59
  }
60
60
 
61
61
  // console.log('attribute', this.ui.input, this.options)
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
- var items = this.list.childNodes
89
- for (var i = 0; i < items.length; i++) {
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
- var item = this.element.querySelector('[data-switcher="' + name + '"]')
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
- var item = this.element.querySelector('[data-switcher="' + name + '"]')
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
- var options = this.list.childNodes
114
+ const options = this.list.childNodes
115
115
 
116
- for (var i = 0; i < options.length; i++) {
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
- var i = this.selected.indexOf(option.dataset.switcher)
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
- var list = this.options.list
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 (var i = 0; i < list.length; i++) {
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 (var i = 0; i < list.length; i++) {
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
- var item = document.createElement('li')
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
- // this.options.list.push(list[i])
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
- var item
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.root, true)
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
- var or = offset(this.element)
100
- var o = offset(item)
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 emitter from './module/emitter'
2
- import observer from './module/observer'
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
- * Class Tab
7
- * @class
8
- * @since 0.0.1
9
- * @example
10
- * var tab = new TabView()
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
- // console.log('TabView')
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
- var ready = false
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
- build () {
49
- this.element = document.createElement(this.options.tag || 'div')
50
- this.element.classList.add('tabview')
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 (var i = 0; i < this.ui.views.length; i++) {
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
- var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
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
- var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
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
- var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
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 (var i = 0; i < this.ui.views.length; i++) {
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
- var view = this.ui.view.querySelector('[data-view="' + button.dataset.view + '"]')
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
- var t = this.ui.tabs.getBoundingClientRect()
176
- var b = button.getBoundingClientRect()
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 = t.height - 2 + 'px'
181
- this.ui.indicator.style.left = (b.left - t.left) + 'px'
182
- this.ui.indicator.style.width = b.width + 'px'
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
@@ -27,7 +27,7 @@ class Text {
27
27
  // console.log('set', text)
28
28
  if (text === undefined) return
29
29
 
30
- var label = this.options.label || ''
30
+ const label = this.options.label || ''
31
31
 
32
32
  if (this.options.textFirst) {
33
33
  this.element.innerHTML = text + label
package/src/textfield.js CHANGED
@@ -32,7 +32,7 @@ class Textfield {
32
32
  }
33
33
 
34
34
  build () {
35
- var tag = this.options.tag || 'div'
35
+ const tag = this.options.tag || 'div'
36
36
 
37
37
  this.element = document.createElement(tag)
38
38
  this.element.classList.add('textfield')