material 0.4.3 → 0.5.0

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 (166) hide show
  1. package/dist/tracks.svg +10 -0
  2. package/package.json +1 -1
  3. package/src/appbar.js +1 -2
  4. package/src/control/button.js +127 -44
  5. package/src/control/button.new.js +190 -0
  6. package/src/control/dialog.js +174 -0
  7. package/src/control/{upload.js → file.js} +33 -8
  8. package/src/control/link.js +61 -0
  9. package/src/control/list.js +77 -0
  10. package/src/control/loading.js +128 -0
  11. package/src/control/module/addclass.js +16 -0
  12. package/src/control/module/attributes.js +3 -1
  13. package/src/control/search.js +98 -0
  14. package/src/control/select.js +80 -22
  15. package/src/control/selecter.js +246 -0
  16. package/src/control/switch.js +272 -0
  17. package/src/control/switcher.js +245 -0
  18. package/src/control/text.js +18 -3
  19. package/src/control/textfield.js +89 -15
  20. package/src/field/image.js +9 -3
  21. package/src/form/build.js +28 -4
  22. package/src/form/cancel.js +7 -3
  23. package/src/form/controller.js +90 -0
  24. package/src/form/create.js +11 -7
  25. package/src/form/data.js +82 -0
  26. package/src/form/delete.js +2 -1
  27. package/src/form/fetch.js +5 -3
  28. package/src/form/render.js +11 -9
  29. package/src/form/set.js +27 -12
  30. package/src/form/submit.js +11 -37
  31. package/src/form/update.js +35 -16
  32. package/src/layout.js +25 -21
  33. package/src/list/add.js +34 -0
  34. package/src/list/build.js +96 -12
  35. package/src/list/click.js +10 -5
  36. package/src/list/collection.js +187 -0
  37. package/src/list/create.js +21 -11
  38. package/src/list/display.js +78 -0
  39. package/src/list/empty.js +4 -1
  40. package/src/list/filter.js +114 -0
  41. package/src/list/load.js +2 -2
  42. package/src/list/remove.js +17 -4
  43. package/src/list/render.js +32 -9
  44. package/src/list/request.js +182 -0
  45. package/src/list/search.js +118 -35
  46. package/src/list/select.js +151 -30
  47. package/src/list/status.js +10 -3
  48. package/src/list/update.js +49 -8
  49. package/src/list/virtual.js +195 -127
  50. package/src/map/build.js +103 -0
  51. package/src/map/countries.js +114 -0
  52. package/src/map/display.js +135 -0
  53. package/src/map/focus.js +39 -0
  54. package/src/map/init.js +24 -0
  55. package/src/map/label.js +0 -0
  56. package/src/map/mode.js +44 -0
  57. package/src/map/mouse.js +65 -0
  58. package/src/map/select.js +68 -0
  59. package/src/map/set.js +71 -0
  60. package/src/map/viewport.js +46 -0
  61. package/src/map.js +71 -0
  62. package/src/module/attach.js +9 -2
  63. package/src/module/mediator.js +56 -0
  64. package/src/module/object.js +17 -1
  65. package/src/module/observer.js +1 -1
  66. package/src/module/passive.js +17 -0
  67. package/src/module/remove.js +74 -0
  68. package/src/module/scrollbar.js +48 -0
  69. package/src/module/smoothscroll.js +20 -0
  70. package/src/module/viewport.js +20 -0
  71. package/src/selector.js +239 -0
  72. package/src/skin/material/base/body.sass +3 -0
  73. package/src/skin/material/button/file.sass +1 -1
  74. package/src/skin/material/container/container.sass +1 -1
  75. package/src/skin/material/container/dialog.sass +57 -1
  76. package/src/skin/material/container/drawer.sass +3 -3
  77. package/src/skin/material/control/button.sass +125 -0
  78. package/src/skin/material/control/dialog.sass +0 -0
  79. package/src/skin/material/control/progress.sass +136 -0
  80. package/src/skin/material/control/search.sass +40 -0
  81. package/src/skin/material/control/selecter.sass +131 -0
  82. package/src/skin/material/control/selector.sass +38 -0
  83. package/src/skin/material/control/slider.sass +2 -2
  84. package/src/skin/material/control/switch.sass +146 -3
  85. package/src/skin/material/control/switcher.sass +41 -0
  86. package/src/skin/material/control/textfield.sass +2 -1
  87. package/src/skin/material/icon/cancel.svg +1 -0
  88. package/src/skin/material/material.sass +3 -0
  89. package/src/skin/material/view/list.sass +81 -188
  90. package/src/skin/material/view/listview.sass +187 -96
  91. package/src/skin/material/view/tabview.sass +6 -4
  92. package/src/skin/material.bak/base/body.sass +52 -0
  93. package/src/skin/material.bak/base/elevation.sass +50 -0
  94. package/src/skin/material.bak/base/grid.sass +63 -0
  95. package/src/skin/material.bak/base/typo.sass +107 -0
  96. package/src/skin/material.bak/button/action.sass +89 -0
  97. package/src/skin/material.bak/button/button.sass +183 -0
  98. package/src/skin/material.bak/button/file.sass +24 -0
  99. package/src/skin/material.bak/button/floating.sass +113 -0
  100. package/src/skin/material.bak/button/raised.sass +101 -0
  101. package/src/skin/material.bak/button/stroked.sass +71 -0
  102. package/src/skin/material.bak/component/component.sass +7 -0
  103. package/src/skin/material.bak/component/divider.sass +17 -0
  104. package/src/skin/material.bak/component/image.sass +6 -0
  105. package/src/skin/material.bak/component/label.sass +2 -0
  106. package/src/skin/material.bak/component/progress.sass +138 -0
  107. package/src/skin/material.bak/component/subheader.sass +3 -0
  108. package/src/skin/material.bak/component/text.sass +85 -0
  109. package/src/skin/material.bak/container/appbar.sass +167 -0
  110. package/src/skin/material.bak/container/banner.sass +38 -0
  111. package/src/skin/material.bak/container/card.sass +18 -0
  112. package/src/skin/material.bak/container/container.sass +1 -0
  113. package/src/skin/material.bak/container/dialog.sass +184 -0
  114. package/src/skin/material.bak/container/drawer.sass +159 -0
  115. package/src/skin/material.bak/container/drawernew.sass +159 -0
  116. package/src/skin/material.bak/container/menu.sass +58 -0
  117. package/src/skin/material.bak/container/snackbar.sass +18 -0
  118. package/src/skin/material.bak/container/tabs.sass +75 -0
  119. package/src/skin/material.bak/container/toolbar.sass +161 -0
  120. package/src/skin/material.bak/control/button.sass +125 -0
  121. package/src/skin/material.bak/control/checkbox.sass +105 -0
  122. package/src/skin/material.bak/control/dialog.sass +0 -0
  123. package/src/skin/material.bak/control/search.sass +40 -0
  124. package/src/skin/material.bak/control/selecter.sass +128 -0
  125. package/src/skin/material.bak/control/slider.sass +181 -0
  126. package/src/skin/material.bak/control/switch.sass +284 -0
  127. package/src/skin/material.bak/control/switcher.sass +35 -0
  128. package/src/skin/material.bak/control/textfield.sass +126 -0
  129. package/src/skin/material.bak/control/tooltip.sass +36 -0
  130. package/src/skin/material.bak/icon/back.svg +5 -0
  131. package/src/skin/material.bak/icon/cancel.svg +1 -0
  132. package/src/skin/material.bak/icon/checkbox.svg +4 -0
  133. package/src/skin/material.bak/icon/forward.svg +5 -0
  134. package/src/skin/material.bak/icon/menu.svg +4 -0
  135. package/src/skin/material.bak/icon/pin.svg +4 -0
  136. package/src/skin/material.bak/layout/layout.sass +69 -0
  137. package/src/skin/material.bak/layout/resizer.sass +69 -0
  138. package/src/skin/material.bak/material.css +2042 -0
  139. package/src/skin/material.bak/material.css.map +7 -0
  140. package/src/skin/material.bak/material.sass +65 -0
  141. package/src/skin/material.bak/module/ripple.sass +9 -0
  142. package/src/skin/material.bak/theme/default.sass +50 -0
  143. package/src/skin/material.bak/theme/ocean.sass +29 -0
  144. package/src/skin/material.bak/theme/theme.sass +3 -0
  145. package/src/skin/material.bak/view/calendar.sass +193 -0
  146. package/src/skin/material.bak/view/form.sass +15 -0
  147. package/src/skin/material.bak/view/grid.sass +116 -0
  148. package/src/skin/material.bak/view/list.sass +89 -0
  149. package/src/skin/material.bak/view/listview.sass +195 -0
  150. package/src/skin/material.bak/view/map.sass +6 -0
  151. package/src/skin/material.bak/view/page.sass +4 -0
  152. package/src/skin/material.bak/view/tabview-bak.sass +40 -0
  153. package/src/skin/material.bak/view/tabview.sass +55 -0
  154. package/src/skin/material.bak/view/tree.sass +73 -0
  155. package/src/skin/material.bak/view/view.sass +7 -0
  156. package/src/switch.js +1 -1
  157. package/src/tabs/setup.js +0 -0
  158. package/src/tabview.js +64 -14
  159. package/src/tooltip.js +23 -5
  160. package/src/view/build.js +13 -1
  161. package/src/view/display.js +63 -2
  162. package/src/form/clean.js +0 -6
  163. package/src/form/controls.js +0 -56
  164. package/src/form/mode.js +0 -8
  165. package/src/form/setup.js +0 -5
  166. package/src/list/fetch.js +0 -66
@@ -0,0 +1,195 @@
1
+ .material-list
2
+ padding: 0
3
+ overflow: scroll
4
+
5
+ .material-item
6
+ display: flex
7
+ flex-direction: horizontal
8
+ flex-wrap: nowrap
9
+ text-align: left
10
+ width: 100%
11
+ display: block
12
+ font-size: 1rem
13
+ line-height: 1.2rem
14
+ appearance: span
15
+ padding: 14px 16px
16
+
17
+ //border-bottom: 1px solid rgba(0, 0, 0, 0.05);
18
+ transition: .1s
19
+
20
+ &.is-selected
21
+ background-color: rgba(0, 0, 0, 0.05)
22
+ transition: .1s
23
+
24
+ .ui-icon
25
+ flex: none
26
+ padding: 24px
27
+
28
+ .ui-text
29
+ flex: 1
30
+ padding: 16px 12px 16px 0
31
+
32
+ .material-button
33
+ display: flex
34
+ flex-direction: horizontal
35
+ flex-wrap: nowrap
36
+ text-align: left
37
+ width: 100%
38
+ display: block
39
+ -ms-appearance: span
40
+ -moz-appearance: span
41
+ -webkit-appearance: span
42
+ appearance: span
43
+
44
+ .ui-icon
45
+ flex: none
46
+ padding: 24px
47
+
48
+ .button-label
49
+ flex: 1
50
+ padding: 16px 12px 16px 0
51
+
52
+ .ui-separator
53
+ display: block
54
+ height: 1px
55
+ margin: 12px
56
+ background-color: #DDD
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+ &.type-image
65
+ max-width: 1000px
66
+ display: flex
67
+ flex-wrap: wrap
68
+ margin: 0 auto
69
+ padding: 0
70
+
71
+ .material-image
72
+ //float: left
73
+ //background-color: red
74
+ position: relative
75
+ display: list-item
76
+ //height: 125px
77
+ width: 125px
78
+ overflow: hidden
79
+ margin: 2px 2px
80
+ padding: 0
81
+ //background-color: red
82
+ -webkit-column-break-inside: avoid
83
+ break-inside: avoid-column
84
+ display: list-item
85
+ text-align: -webkit-match-parent
86
+ position: relative
87
+ box-sizing: border-box
88
+ //margin-bottom: 16px
89
+
90
+ .image-image
91
+ //height: 125px
92
+ width: 125px
93
+ display: block
94
+
95
+ .image-info
96
+ // padding: 16px
97
+ background-color: rgba(0,0,0,.6)
98
+ display: block
99
+ position: absolute
100
+ bottom: 0
101
+ left: 0
102
+ right: 0
103
+ display: flex
104
+ flex-direction: row
105
+ flex-wrap: nowrap
106
+ padding: 8px 16px
107
+
108
+
109
+ .image-label
110
+ line-height: 24px
111
+ flex: 1
112
+ color: rgba(255,255,255,.8)
113
+ overflow: hidden
114
+ text-overflow: ellipsis
115
+ height: 24px
116
+ // background-color: rgba(0,0,0,.6)
117
+ // display: block
118
+ // position: absolute
119
+ // bottom: 0
120
+ // left: 0
121
+ // right: 0
122
+ .image-icon
123
+ flex: none
124
+ svg
125
+ fill: white
126
+
127
+ &.hide-info
128
+ .image-info
129
+ display: none !important
130
+
131
+ &.info-below
132
+ .image-info
133
+ //display: none !important
134
+ color: initial !important
135
+ padding: 16px
136
+ background-color: transparent !important
137
+ //display: block
138
+ position: initial !important
139
+ padding: 8px 0 !important
140
+ line-height: 16px
141
+ // bottom: 0
142
+ // left: 0
143
+ // right: 0
144
+ .image-label
145
+ line-height: 24px
146
+ flex: 1
147
+ color: rgba(0,0,0,.8)
148
+ .image-icon
149
+ flex: none
150
+ svg
151
+ fill: rgba(0,0,0,.8)
152
+
153
+ &.layout-masonry
154
+ -webkit-column-count: 3
155
+ column-count: 3
156
+ -webkit-column-gap: 16px
157
+ column-gap: 16px
158
+ max-width: 1000px
159
+ display: block
160
+ flex-wrap: wrap
161
+ margin: 0 auto
162
+ padding: 0
163
+ .material-image
164
+ //float: left
165
+ //background-color: red
166
+ position: relative
167
+ display: list-item
168
+ // height: 118px
169
+ // width: 177px
170
+ overflow: hidden
171
+ margin: 0 2px
172
+ padding: 0
173
+ background-color: red
174
+ -webkit-column-break-inside: avoid
175
+ break-inside: avoid-column
176
+ display: list-item
177
+ text-align: -webkit-match-parent
178
+ position: relative
179
+ box-sizing: border-box
180
+ margin-bottom: 16px
181
+
182
+ // .image-image
183
+ // // height: 118px
184
+ // // width: 177px
185
+ // display: block
186
+
187
+ // .image-label
188
+ // color: rgba(255,255,255,.8)
189
+ // padding: 16px
190
+ // background-color: rgba(0,0,0,.6)
191
+ // display: block
192
+ // position: absolute
193
+ // bottom: 0
194
+ // left: 0
195
+ // right: 0
@@ -0,0 +1,6 @@
1
+ .ui-map
2
+ position: absolute
3
+ top: 0
4
+ right: 0
5
+ bottom: 0
6
+ left: 0
@@ -0,0 +1,4 @@
1
+ .material-page
2
+ border: none
3
+ margin: 0
4
+
@@ -0,0 +1,40 @@
1
+ .tabview
2
+ position: relative
3
+ display: flex
4
+ flex-direction: column
5
+ height: 100%
6
+ width: 100%
7
+ white-space: no-wrap
8
+ overflow: hidden
9
+ >.indicator
10
+ position: absolute
11
+ height: 2px
12
+ transition: 0.2s
13
+ background-color: $secondary-color
14
+ >.tabs
15
+ flex: none
16
+ display: flex
17
+ flex-direction: row
18
+ overflow: hidden
19
+ //height: 48px
20
+ >.material-divider
21
+ margin: 0
22
+ padding: 0
23
+ flex: 1
24
+ display: inline-block
25
+ >button
26
+ flex: 1
27
+ display: inline-block
28
+ padding: 0 10px
29
+ height: 48px
30
+ border-radius: 0
31
+ margin: 0
32
+ text-align: center
33
+ background-repeat: no-repeat
34
+ background-size: 30%
35
+ background-position: center
36
+ >label
37
+ color: $default-color-text
38
+ >.views
39
+ >div
40
+ display: none
@@ -0,0 +1,55 @@
1
+ .tabview
2
+ position: relative
3
+ display: flex
4
+ flex-direction: column
5
+ height: 100%
6
+ width: 100%
7
+ white-space: no-wrap
8
+ overflow: hidden
9
+ -webkit-touch-callout: none
10
+ -webkit-user-select: none
11
+ >.indicator
12
+ position: absolute
13
+ height: 2px
14
+ transition: 0.2s
15
+ >.tabs
16
+ flex: none
17
+ display: flex
18
+ flex-direction: row
19
+ overflow: hidden
20
+ //height: 48px
21
+ >.divider
22
+ margin: 0
23
+ padding: 0
24
+ flex: 1
25
+ display: inline-block
26
+ >button
27
+ flex: 1
28
+ display: inline-block
29
+ padding: 0
30
+ height: 48px
31
+ border-radius: 0
32
+ margin: 0
33
+ text-align: center
34
+ background-repeat: no-repeat
35
+ background-size: 25%
36
+ background-position: center
37
+ transition: 50ms transform
38
+ &:hover, &.selected
39
+ background-color: transparent
40
+ transform: scale(1.1)
41
+ transition: 50ms transform
42
+
43
+ &.type-action
44
+ max-width: 60px
45
+
46
+
47
+ >.views
48
+ position: relative
49
+ flex: 1
50
+ >div
51
+ position: absolute
52
+ left: 0
53
+ top: 0
54
+ right: 0
55
+ bottom: 0
@@ -0,0 +1,73 @@
1
+ .material-tree
2
+ padding: 16px 0
3
+ overflow: scroll
4
+
5
+ ul
6
+ margin: 0
7
+ padding: 0
8
+ .item-tree
9
+ display: flex
10
+ flex-direction: horizontal
11
+ flex-wrap: nowrap
12
+ text-align: left
13
+ width: 100%
14
+ display: block
15
+ -ms-appearance: span
16
+ -moz-appearance: span
17
+ -webkit-appearance: span
18
+ appearance: span
19
+ padding: 8px 16px
20
+
21
+ .material-item
22
+ display: flex
23
+ flex-direction: horizontal
24
+ flex-wrap: nowrap
25
+ text-align: left
26
+ width: 100%
27
+ display: block
28
+ -ms-appearance: span
29
+ -moz-appearance: span
30
+ -webkit-appearance: span
31
+ appearance: span
32
+ padding: 8px 16px
33
+
34
+ //border-bottom: 1px solid rgba(0, 0, 0, 0.05);
35
+ transition: .3s
36
+
37
+ &.is-selected
38
+ background-color: rgba(0, 0, 0, 0.05)
39
+ transition: .3s
40
+
41
+ .ui-icon
42
+ flex: none
43
+ padding: 24px
44
+
45
+ .ui-text
46
+ flex: 1
47
+ padding: 16px 12px 16px 0
48
+
49
+ .material-button
50
+ display: flex
51
+ flex-direction: horizontal
52
+ flex-wrap: nowrap
53
+ text-align: left
54
+ width: 100%
55
+ display: block
56
+ -ms-appearance: span
57
+ -moz-appearance: span
58
+ -webkit-appearance: span
59
+ appearance: span
60
+
61
+ .ui-icon
62
+ flex: none
63
+ padding: 24px
64
+
65
+ .ui-text
66
+ flex: 1
67
+ padding: 16px 12px 16px 0
68
+
69
+ .ui-separator
70
+ display: block
71
+ height: 1px
72
+ margin: 12px
73
+ background-color: #DDD
@@ -0,0 +1,7 @@
1
+ // .material-view
2
+ // position: absolute
3
+ // top: 0
4
+ // right: 0
5
+ // bottom: 0
6
+ // left: 0
7
+ // overflow: scroll
package/src/switch.js CHANGED
@@ -123,7 +123,7 @@ class Switch {
123
123
  }
124
124
  break
125
125
  default:
126
- this.setValue(prop, silent)
126
+ this.setValue(prop, value)
127
127
  }
128
128
 
129
129
  return this
File without changes
package/src/tabview.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import emitter from './module/emitter'
2
2
  import observer from './module/observer'
3
+ import display from './view/display'
3
4
 
4
5
  /**
5
6
  * Class Tab
@@ -22,14 +23,23 @@ class TabView {
22
23
  * @return {DOMElement} The dom element
23
24
  */
24
25
  constructor (options) {
26
+ // console.log('TabView')
25
27
  this.options = Object.assign({}, defaults, options || {})
26
- Object.assign(this, emitter)
28
+ Object.assign(this, emitter, display)
27
29
 
28
30
  this.build()
29
31
 
32
+ var ready = false
33
+
30
34
  observer.insert(this.root, () => {
31
- this.setup()
32
- this.attach()
35
+ // console.log('!!! inserted')
36
+ if (!ready) {
37
+ ready = true
38
+ this.setup()
39
+ this.attach()
40
+
41
+ this.emit('ready')
42
+ }
33
43
  })
34
44
 
35
45
  return this
@@ -37,7 +47,13 @@ class TabView {
37
47
 
38
48
  build () {
39
49
  this.root = document.createElement(this.options.tag || 'div')
40
- this.root.classList.add(this.options.class)
50
+ this.root.classList.add('tabview')
51
+
52
+ this.root.classList.add('view')
53
+
54
+ if (this.options.class !== 'tabview') {
55
+ this.root.classList.add(this.options.class)
56
+ }
41
57
 
42
58
  this.ui = {}
43
59
  }
@@ -54,6 +70,8 @@ class TabView {
54
70
  this.ui.buttons = this.ui.tabs.childNodes
55
71
  this.ui.views = this.ui.view.childNodes
56
72
 
73
+ // console.log('views', this.ui.views)
74
+
57
75
  for (var i = 0; i < this.ui.views.length; i++) {
58
76
  if (this.ui.views[i].dataset) {
59
77
  this.views.push(this.ui.views[i].dataset.view)
@@ -79,34 +97,68 @@ class TabView {
79
97
 
80
98
  select (view) {
81
99
  // console.log('select', view, this.ui.tabs)
82
- var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
83
- // console.log('tab', button)
84
- if (button) {
85
- this.click(button)
100
+ if (this.ui && this.ui.tabs) {
101
+ var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
102
+ // console.log('tab', button)
103
+ if (button) {
104
+ this.click(button)
105
+ }
106
+ } else {
107
+ this.emit('notready')
108
+ }
109
+ }
110
+
111
+ disable (view) {
112
+ // console.log('select', view)
113
+ if (this.ui && this.ui.tabs) {
114
+ var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
115
+ // console.log('tab', button)
116
+ if (button) {
117
+ button.disabled = 'disabled'
118
+ }
119
+ } else {
120
+ this.emit('notready')
121
+ }
122
+ }
123
+
124
+ enable (view) {
125
+ // console.log('select', view)
126
+
127
+ if (this.ui && this.ui.tabs) {
128
+ var button = this.ui.tabs.querySelector('[data-view="' + view + '"]')
129
+ // console.log('tab', button)
130
+ if (button) {
131
+ button.disabled = false
132
+ }
133
+ } else {
134
+ this.emit('notready')
86
135
  }
87
136
  }
88
137
 
89
138
  hideView () {
139
+ // console.log('hideView')
90
140
  for (var i = 0; i < this.ui.views.length; i++) {
141
+ // console.log('hide', this.ui.views[i])
91
142
  this.ui.views[i].classList.add('hide')
92
143
  }
93
144
  }
94
145
 
95
146
  click (button) {
96
- // console.log('click', button.dataset.view)
147
+ // console.log('click', button.dataset.view, true)
97
148
  var view = this.ui.view.querySelector('[data-view="' + button.dataset.view + '"]')
98
149
  this.hideView()
99
150
 
100
- button.classList.add('selected')
101
-
102
151
  if (this.button) {
103
152
  this.button.classList.remove('selected')
104
153
  }
105
154
 
155
+ this.button = button
156
+
157
+ button.classList.add('selected')
158
+
106
159
  this.indicator(button)
107
160
 
108
161
  if (view) {
109
- // console.log('view block', view)
110
162
  view.classList.remove('hide')
111
163
  } else {
112
164
  console.log('view ', button.dataset.view, button, this.ui.views, ' not found')
@@ -114,8 +166,6 @@ class TabView {
114
166
 
115
167
  this.emit('select', button.dataset.view)
116
168
 
117
- this.button = button
118
-
119
169
  return view
120
170
  }
121
171
 
package/src/tooltip.js CHANGED
@@ -42,6 +42,7 @@ class Tooltip {
42
42
 
43
43
  this.root = document.createElement('span')
44
44
  this.root.classList.add('tooltip')
45
+ this.root.classList.add('control')
45
46
 
46
47
  this.pointer = document.createElement('span')
47
48
  this.pointer.classList.add('pointer')
@@ -62,26 +63,35 @@ class Tooltip {
62
63
  targets[i].addEventListener('mouseover', (e) => {
63
64
  // console.log('tooltip', touch(), this.disabled)
64
65
  if (touch()) return
65
- if (this.disabled === true) return
66
+
67
+ if (this.disabled === true) {
68
+ this.hide()
69
+ return
70
+ }
71
+
72
+ if (e.currentTarget.classList.contains('selected')) {
73
+ this.hide()
74
+ return
75
+ }
66
76
 
67
77
  this.label.innerHTML = e.currentTarget.dataset.tooltip
68
78
  var coord = this.offset(e.currentTarget)
69
79
 
70
- this.root.classList.add('show')
80
+ this.show()
71
81
  this.root.style.top = (coord.top + this.options.offset.top) + 'px'
72
82
  this.root.style.left = coord.left - (this.root.offsetWidth / 2) + (e.currentTarget.offsetWidth / 2) + 'px'
73
83
  })
74
84
 
75
85
  targets[i].addEventListener('mouseleave', (e) => {
76
86
  this.label.innerHTML = ''
77
- this.root.classList.remove('show')
87
+ this.hide()
78
88
  })
79
89
  }
80
90
 
81
91
  this.root.addEventListener('click', (e) => {
82
92
  e.preventDefault()
83
93
  e.stop()
84
- this.root.classList.remove('show')
94
+ this.hide()
85
95
  })
86
96
  }
87
97
 
@@ -92,9 +102,17 @@ class Tooltip {
92
102
  return { top: rect.top + scrollTop, left: rect.left + scrollLeft }
93
103
  }
94
104
 
105
+ hide () {
106
+ this.root.classList.remove('show')
107
+ }
108
+
109
+ show () {
110
+ this.root.classList.add('show')
111
+ }
112
+
95
113
  disable () {
96
114
  // console.log('disable')
97
- this.root.classList.remove('show')
115
+ this.hide()
98
116
  this.disabled = true
99
117
  }
100
118
 
package/src/view/build.js CHANGED
@@ -1,12 +1,16 @@
1
+ import scrollbar from '../module/scrollbar'
1
2
  import dataset from './dataset'
2
3
  import Layout from '../layout'
3
4
 
4
5
  export default {
5
6
  build () {
6
7
  this.root = document.createElement('div')
7
- this.root.classList.add(this.options.class)
8
8
  this.root.classList.add('view')
9
9
 
10
+ if (this.options.class) {
11
+ this.addClass(this.options.class)
12
+ }
13
+
10
14
  if (this.options.data) {
11
15
  dataset(this.root, this.options.data)
12
16
  }
@@ -18,5 +22,13 @@ export default {
18
22
  this.layout = new Layout(this.options.layout, this.root)
19
23
  this.ui = this.layout.component
20
24
  }
25
+ },
26
+
27
+ addClass (c) {
28
+ var list = c.split(' ')
29
+
30
+ for (var i = 0; i < list.length; i++) {
31
+ this.root.classList.add(list[i])
32
+ }
21
33
  }
22
34
  }