material 0.6.2 → 0.7.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 (98) hide show
  1. package/form.js +27 -0
  2. package/index.js +61 -51
  3. package/list.js +35 -0
  4. package/package.json +5 -1
  5. package/src/appbar.js +7 -204
  6. package/src/badge.js +27 -0
  7. package/src/button.js +160 -161
  8. package/src/calendar.js +8 -10
  9. package/src/card.js +4 -6
  10. package/src/checkbox.js +8 -10
  11. package/src/component.js +4 -6
  12. package/src/container.js +4 -6
  13. package/src/datehour.js +38 -0
  14. package/src/dialog.js +106 -153
  15. package/src/divider.js +4 -6
  16. package/src/drawer.js +11 -13
  17. package/src/field/email.js +5 -5
  18. package/src/field/image.js +4 -4
  19. package/src/{control/file.js → file.js} +18 -48
  20. package/src/form/build.js +7 -7
  21. package/src/form/verify.js +2 -2
  22. package/src/form.js +6 -8
  23. package/src/icon.js +8 -10
  24. package/src/image.js +39 -106
  25. package/src/item.js +7 -9
  26. package/src/layout.js +10 -10
  27. package/src/link.js +50 -0
  28. package/src/list/add.js +1 -1
  29. package/src/list/build.js +9 -9
  30. package/src/list/collection.js +1 -1
  31. package/src/list/display.js +10 -10
  32. package/src/list/filter.js +2 -2
  33. package/src/list/request.js +1 -1
  34. package/src/list/search.js +7 -7
  35. package/src/list.js +29 -217
  36. package/src/loading.js +73 -0
  37. package/src/map/build.js +6 -6
  38. package/src/map/display.js +8 -8
  39. package/src/menu.js +60 -116
  40. package/src/{component → mixin}/control.js +10 -10
  41. package/src/{component → mixin}/create.js +1 -1
  42. package/src/{module → mixin}/display.js +9 -22
  43. package/src/{component → mixin}/events.js +2 -2
  44. package/src/{component → mixin}/focus.js +2 -3
  45. package/src/{component → mixin}/insert.js +3 -25
  46. package/src/{control/module → module}/attributes.js +2 -2
  47. package/src/module/build.js +11 -7
  48. package/src/{component → module}/classify.js +0 -13
  49. package/src/module/dom.js +1 -57
  50. package/src/module/events.js +4 -2
  51. package/src/{component → module}/ripple.js +15 -42
  52. package/src/navigation.js +19 -0
  53. package/src/progress.js +7 -9
  54. package/src/search.js +71 -0
  55. package/src/select.js +58 -273
  56. package/src/{control/selecter.js → selecter.js} +20 -20
  57. package/src/selector.js +32 -32
  58. package/src/skin/material/component/navigation.sass +1 -0
  59. package/src/skin/material/control/button.sass +10 -0
  60. package/src/slider.js +32 -34
  61. package/src/snackbar.js +72 -51
  62. package/src/switch.js +115 -107
  63. package/src/{control/switcher.js → switcher.js} +33 -36
  64. package/src/tabs.js +8 -8
  65. package/src/tabview.js +8 -8
  66. package/src/text.js +25 -74
  67. package/src/textfield.js +97 -234
  68. package/src/toolbar.js +28 -28
  69. package/src/tooltip.js +11 -11
  70. package/src/tree.js +12 -16
  71. package/src/view/build.js +6 -6
  72. package/src/view/display.js +16 -16
  73. package/src/view.js +5 -5
  74. package/src/banner.js +0 -231
  75. package/src/component/click.js +0 -17
  76. package/src/control/button.js +0 -267
  77. package/src/control/button.new.js +0 -190
  78. package/src/control/datehour.js +0 -65
  79. package/src/control/dialog.js +0 -175
  80. package/src/control/image.js +0 -92
  81. package/src/control/link.js +0 -69
  82. package/src/control/list.js +0 -67
  83. package/src/control/loading.js +0 -128
  84. package/src/control/menu.js +0 -85
  85. package/src/control/search.js +0 -98
  86. package/src/control/select.js +0 -130
  87. package/src/control/snackbar.js +0 -89
  88. package/src/control/switch.js +0 -272
  89. package/src/control/text.js +0 -70
  90. package/src/control/textfield.js +0 -177
  91. /package/src/{component → mixin}/controller.js +0 -0
  92. /package/src/{component → mixin}/emitter.js +0 -0
  93. /package/src/{component → mixin}/icon.js +0 -0
  94. /package/src/{component → mixin}/init.js +0 -0
  95. /package/src/{component → mixin}/label.js +0 -0
  96. /package/src/{component → mixin}/settings.js +0 -0
  97. /package/src/{control/module → module}/addclass.js +0 -0
  98. /package/src/{tabs/setup.js → module/last.js} +0 -0
@@ -1,55 +1,52 @@
1
- import emitter from '../module/emitter'
2
-
3
- const defaults = {
4
- class: 'switcher',
5
- tag: 'div',
6
- list: [],
7
- first: false,
8
- mode: 'unique',
9
- allowEmpty: false
10
- }
11
-
12
- class Switcher {
13
- /**
14
- * Constructor
15
- * @param {Object} options - Component options
16
- * @return {Object} Class instance
17
- */
1
+ import EventEmitter from './mixin/emitter'
2
+
3
+ class Switcher extends EventEmitter{
4
+ static defaults = {
5
+ class: 'switcher',
6
+ tag: 'div',
7
+ list: [],
8
+ first: false,
9
+ mode: 'unique',
10
+ allowEmpty: false
11
+ }
12
+
18
13
  constructor (options) {
19
- this.options = Object.assign({}, defaults, options || {})
20
- Object.assign(this, emitter)
14
+ super()
21
15
 
16
+ this.init(options)
22
17
  this.build()
23
18
  this.attach()
24
19
 
25
20
  if (this.options.default) {
26
21
  this.selectByName(this.options.default, true)
27
22
  }
23
+ }
28
24
 
29
- return this
25
+ init(options) {
26
+ this.options = Object.assign({}, Switcher.defaults, options || {})
30
27
  }
31
28
 
32
29
  build () {
33
- this.root = document.createElement(this.options.tag)
30
+ this.element = document.createElement(this.options.tag)
34
31
 
35
32
  if (this.options.class !== 'button') {
36
- this.root.setAttribute('class', 'switcher ' + this.options.class)
33
+ this.element.setAttribute('class', 'switcher ' + this.options.class)
37
34
  } else {
38
- this.root.classList.add('switcher')
35
+ this.element.classList.add('switcher')
39
36
  }
40
37
 
41
38
  if (this.options.label) {
42
39
  this.label = document.createElement('label')
43
40
  this.label.innerHTML = this.options.label
44
- this.root.appendChild(this.label)
41
+ this.element.appendChild(this.label)
45
42
  }
46
43
 
47
44
  this.knob = document.createElement('span')
48
45
  this.knob.classList.add('knob')
49
- this.root.appendChild(this.knob)
46
+ this.element.appendChild(this.knob)
50
47
 
51
48
  if (this.options.size) {
52
- this.root.classList.add(this.options.size + '-size')
49
+ this.element.classList.add(this.options.size + '-size')
53
50
  }
54
51
 
55
52
  this.buildList(this.options.list)
@@ -59,17 +56,17 @@ class Switcher {
59
56
  }
60
57
 
61
58
  if (this.options.container) {
62
- this.options.container.appendChild(this.root)
59
+ this.options.container.appendChild(this.element)
63
60
  }
64
61
  }
65
62
 
66
63
  buildList (list) {
67
64
  this.list = document.createElement('ul')
68
- this.root.appendChild(this.list)
65
+ this.element.appendChild(this.list)
69
66
  }
70
67
 
71
68
  attach () {
72
- this.root.addEventListener('click', (event) => {
69
+ this.element.addEventListener('click', (event) => {
73
70
  if (!event.target.dataset.switcher) return
74
71
  this.select(event.target)
75
72
  })
@@ -97,7 +94,7 @@ class Switcher {
97
94
 
98
95
  selectByName (name) {
99
96
  // console.log('selectByName', name)
100
- var item = this.root.querySelector('[data-switcher="' + name + '"]')
97
+ var item = this.element.querySelector('[data-switcher="' + name + '"]')
101
98
  // console.log('item', item)
102
99
  if (item) {
103
100
  this.select(item)
@@ -106,7 +103,7 @@ class Switcher {
106
103
 
107
104
  preSelectByName (name) {
108
105
  // console.log('selectByName', name)
109
- var item = this.root.querySelector('[data-switcher="' + name + '"]')
106
+ var item = this.element.querySelector('[data-switcher="' + name + '"]')
110
107
  // console.log('item', item)
111
108
  this.preselect(item)
112
109
  }
@@ -165,24 +162,24 @@ class Switcher {
165
162
  }
166
163
 
167
164
  setValue (value) {
168
- // console.log('value', value, this.options.list, this.root)
165
+ // console.log('value', value, this.options.list, this.element)
169
166
  var list = this.options.list
170
167
  if (this.options.mode === 'unique') {
171
168
  for (var i = 0; i < list.length; i++) {
172
- this.root.querySelector('[data-switcher="' + list[i] + '"]').classList.remove('selected')
169
+ this.element.querySelector('[data-switcher="' + list[i] + '"]').classList.remove('selected')
173
170
  if (list[i] == value) {
174
171
  this.selected = [value]
175
- this.root.querySelector('[data-switcher="' + list[i] + '"]').classList.add('selected')
172
+ this.element.querySelector('[data-switcher="' + list[i] + '"]').classList.add('selected')
176
173
  }
177
174
  }
178
175
  } else {
179
176
  value = value || []
180
177
  this.selected = []
181
178
  for (var i = 0; i < list.length; i++) {
182
- this.root.querySelector('[data-switcher="' + list[i] + '"]').classList.remove('selected')
179
+ this.element.querySelector('[data-switcher="' + list[i] + '"]').classList.remove('selected')
183
180
  if (value.indexOf(list[i]) !== -1) {
184
181
  this.selected.push(list[i])
185
- this.root.querySelector('[data-switcher="' + list[i] + '"]').classList.add('selected')
182
+ this.element.querySelector('[data-switcher="' + list[i] + '"]').classList.add('selected')
186
183
  }
187
184
  }
188
185
  }
package/src/tabs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
- import create from './component/create'
4
- import insert from './component/insert'
3
+ import create from './mixin/create'
4
+ import insert from './mixin/insert'
5
5
  import emitter from './module/emitter'
6
6
 
7
7
  import offset from './element/offset'
@@ -44,11 +44,11 @@ class Tabs {
44
44
  * @return {Object} This class instance
45
45
  */
46
46
  build () {
47
- this.root = create(this.options)
47
+ this.element = create(this.options)
48
48
  this.tab = { }
49
49
  if (this.options.list) {
50
50
  this.list = new List({
51
- // root: this.root,
51
+ // root: this.element,
52
52
  tag: 'div',
53
53
  list: this.options.list,
54
54
  target: '.material-button',
@@ -75,11 +75,11 @@ class Tabs {
75
75
  this.selected = item
76
76
  this.click(item)
77
77
  }
78
- }).insert(this.root)
78
+ }).insert(this.element)
79
79
  }
80
80
 
81
81
  this.indicator = create(this.options.indicator)
82
- this.insertElement(this.indicator, this.root)
82
+ this.insertElement(this.indicator, this.element)
83
83
 
84
84
  if (this.options.container) {
85
85
  this.insert(this.options.container)
@@ -95,8 +95,8 @@ class Tabs {
95
95
  }
96
96
 
97
97
  click (item, silent) {
98
- // console.log('clickitem', item, this.root);
99
- var or = offset(this.root)
98
+ // console.log('clickitem', item, this.element);
99
+ var or = offset(this.element)
100
100
  var o = offset(item)
101
101
  this.indicator.setAttribute('style', 'width: ' + o.width + 'px; left: ' + (o.left - or.left) + 'px;')
102
102
 
package/src/tabview.js CHANGED
@@ -31,7 +31,7 @@ class TabView {
31
31
 
32
32
  var ready = false
33
33
 
34
- observer.insert(this.root, () => {
34
+ observer.insert(this.element, () => {
35
35
  // console.log('!!! inserted')
36
36
  if (!ready) {
37
37
  ready = true
@@ -46,13 +46,13 @@ class TabView {
46
46
  }
47
47
 
48
48
  build () {
49
- this.root = document.createElement(this.options.tag || 'div')
50
- this.root.classList.add('tabview')
49
+ this.element = document.createElement(this.options.tag || 'div')
50
+ this.element.classList.add('tabview')
51
51
 
52
- this.root.classList.add('view')
52
+ this.element.classList.add('view')
53
53
 
54
54
  if (this.options.class !== 'tabview') {
55
- this.root.classList.add(this.options.class)
55
+ this.element.classList.add(this.options.class)
56
56
  }
57
57
 
58
58
  this.ui = {}
@@ -63,9 +63,9 @@ class TabView {
63
63
  this.view = {}
64
64
  this.views = []
65
65
 
66
- this.ui.tabs = this.root.querySelector('[class="tabs"]')
67
- this.ui.view = this.root.querySelector('[class="views"]')
68
- this.ui.indicator = this.root.querySelector('[class="indicator"]')
66
+ this.ui.tabs = this.element.querySelector('[class="tabs"]')
67
+ this.ui.view = this.element.querySelector('[class="views"]')
68
+ this.ui.indicator = this.element.querySelector('[class="indicator"]')
69
69
 
70
70
  this.ui.buttons = this.ui.tabs.childNodes
71
71
  this.ui.views = this.ui.view.childNodes
package/src/text.js CHANGED
@@ -1,96 +1,47 @@
1
- 'use strict'
1
+ import build from './module/build'
2
2
 
3
- import create from './component/create'
4
- import insert from './component/insert'
5
-
6
- var defaults = {
7
- prefix: 'material',
8
- class: 'text',
9
- type: 'default',
10
- types: {
11
- default: 'span',
12
- display4: 'h1',
13
- display3: 'h1',
14
- display2: 'h1',
15
- display1: 'h1',
16
- headline: 'h1',
17
- title: 'h2',
18
- subheading2: 'h3',
19
- subheading1: 'h4',
20
- body: 'p',
21
- body2: 'aside',
22
- caption: 'span'
3
+ class Text {
4
+ static defaults = {
5
+ class: 'text',
6
+ tag: 'span'
23
7
  }
24
- }
25
8
 
26
- /**
27
- * this class creates a text component
28
- *
29
- * @since 0.0.6
30
- * @category Element
31
- * @param {HTMLElement} element Related element
32
- * @param {String} className the className to add
33
- * grouped values.
34
- * @returns {HTMLElement} The modified element
35
- * @example
36
- *
37
- * var text = new Text({
38
- * text: 'hello',
39
- * type: 'title'
40
- * }).insert(document.body);
41
- *
42
- * // => Hello
43
- */
44
- class Text {
45
- /**
46
- * init
47
- * @return {Object} The class options
48
- */
49
9
  constructor (options) {
50
10
  this.init(options)
51
11
  this.build()
52
-
53
- return this
12
+ this.setup()
54
13
  }
55
14
 
56
15
  init (options) {
57
- this.options = Object.assign({}, defaults, options || {})
58
-
59
- Object.assign(this, insert)
16
+ this.options = Object.assign({}, Text.defaults, options || {})
17
+ Object.assign(this, build)
60
18
  }
61
19
 
62
- /**
63
- * Build function for item
64
- * @return {Object} This class instance
65
- */
66
- build () {
67
- this.options.tag = this.options.types[this.options.type]
68
-
69
- this.root = create(this.options)
70
-
20
+ setup () {
71
21
  if (this.options.text) {
72
22
  this.set(this.options.text)
73
23
  }
74
-
75
- if (this.options.container) {
76
- this.insert(this.options.container)
77
- }
78
- return this
79
24
  }
80
25
 
81
- /**
82
- * Get or set text value of the element
83
- * @param {string} value The text to set
84
- * @returns {*}
85
- */
86
- set (value) {
87
- if (value) {
88
- this.root.textContent = value
26
+ set (text) {
27
+ // console.log('set', text)
28
+ if (text === undefined) return
29
+
30
+ var label = this.options.label || ''
31
+
32
+ if (this.options.textFirst) {
33
+ this.element.innerHTML = text + label
89
34
  } else {
90
- this.root.textContent = ''
35
+ this.element.innerHTML = label + text
91
36
  }
92
37
 
93
- return this
38
+ if (this.options.spaceAfter) {
39
+ this.element.innerHTML = this.element.innerHTML + ' '
40
+ }
41
+ }
42
+
43
+ setText (text) {
44
+ this.element.innerHTML = text
94
45
  }
95
46
  }
96
47