tao_on_rails 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,7 +26,7 @@ class TaoApplication extends TaoModule
26
26
  _initIcons: ($page) ->
27
27
  $icons = $page.siblings('#tao-icons')
28
28
  unless $icons.length > 0
29
- $page[0].insertAdjacentHTML('beforebegin', tao.iconsHtml || '')
29
+ $page[0].insertAdjacentHTML('beforebegin', Tao.iconsHtml || '')
30
30
 
31
31
  _initPage: ($page) ->
32
32
  window.currentPage = @currentPage = $page[0]
@@ -38,21 +38,31 @@ TaoComponentBasedOn = (superClass = 'HTMLElement') ->
38
38
  set: setMethod
39
39
  configurable: true
40
40
 
41
- @property: (name, options = {}) ->
42
- attrName = _.kebabCase(name)
43
- @get name, ->
44
- if @hasAttribute attrName
45
- @getAttribute(attrName) || true
46
- else
47
- false
48
- @set name, (val) ->
49
- if val == true
50
- @setAttribute attrName, ''
51
- else if val != false
52
- @setAttribute attrName, val
53
- else
54
- @removeAttribute attrName
55
- @observedAttributes.push(attrName) if options.observe
41
+ @property: (names..., options = {}) ->
42
+ unless typeof options == 'object'
43
+ names.push(options)
44
+ options = {}
45
+
46
+ names.forEach (name) =>
47
+ attrName = _.kebabCase(name)
48
+ @get name, ->
49
+ if @hasAttribute attrName
50
+ val = @getAttribute(attrName)
51
+ if val == 'false' then false else (val || true)
52
+ else if options.default
53
+ options.default
54
+ else
55
+ false
56
+ @set name, (val) ->
57
+ if val == true
58
+ @setAttribute attrName, ''
59
+ else if val != false
60
+ @setAttribute attrName, val
61
+ else if options.default == true
62
+ @setAttribute attrName, 'false'
63
+ else
64
+ @removeAttribute attrName
65
+ @observedAttributes.push(attrName) if options.observe
56
66
 
57
67
  @tag: '' # to be set by child class
58
68
 
@@ -62,14 +72,22 @@ TaoComponentBasedOn = (superClass = 'HTMLElement') ->
62
72
 
63
73
  @observedAttributes: []
64
74
 
75
+
76
+ _initShadowRoot: ->
77
+ @shadowRoot = @attachShadow(mode: 'open')
78
+
65
79
  connectedCallback: ->
66
80
  @connected = true
67
- @classList.add 'tao-component'
68
- @_init()
81
+ @_connect()
82
+
83
+ unless @initialized
84
+ @classList.add 'tao-component'
85
+ @_init()
86
+ @initialized = true
69
87
 
70
88
  disconnectedCallback: ->
71
89
  @connected = false
72
- @_destroy()
90
+ @_disconnect()
73
91
 
74
92
  attributeChangedCallback: (attrName, oldValue, newValue) ->
75
93
  @["_#{_.camelCase attrName}Changed"]?(newValue, oldValue)
@@ -89,7 +107,10 @@ TaoComponentBasedOn = (superClass = 'HTMLElement') ->
89
107
  _init: ->
90
108
  # to be implemented
91
109
 
92
- _destroy: ->
110
+ _connect: ->
111
+ # to be implemented
112
+
113
+ _disconnect: ->
93
114
  # to be implemented
94
115
 
95
116
  prepareCache: ->
@@ -1,5 +1,5 @@
1
1
 
2
- window.tao.helpers =
2
+ Tao.helpers =
3
3
 
4
4
  reflow: (el) ->
5
5
  $(el)[0].offsetHeight
@@ -10,4 +10,4 @@
10
10
  #= require tao/helpers
11
11
  #= require tao/icons
12
12
 
13
- window.tao = {}
13
+ window.Tao = {}
@@ -1,2 +1,2 @@
1
- //= require normalize-rails
1
+ //= require normalize
2
2
  //= require tao/icons
@@ -1,7 +1,6 @@
1
1
  require 'turbolinks'
2
2
  require 'jquery-rails'
3
3
  require 'lodash-rails'
4
- require 'normalize-rails'
5
4
 
6
5
  module TaoOnRails
7
6
  module Rails
@@ -1,5 +1,5 @@
1
1
  module TaoOnRails
2
2
  module Rails
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
@@ -2,10 +2,11 @@ namespace :tao do
2
2
 
3
3
  desc 'generate svg icons.'
4
4
  task :generate_icons => :environment do
5
- Dir.mkdir "#{Rails.root}/vendor/assets/javascripts/tao"
5
+ dir_name = "#{Rails.root}/vendor/assets/javascripts/tao"
6
+ Dir.mkdir(dir_name) unless File.exists?(dir_name)
6
7
 
7
- File.open "#{Rails.root}/vendor/assets/javascripts/tao/icons.coffee", 'w' do |f|
8
- f.puts %{tao.iconsHtml = '''#{svg_html}'''}
8
+ File.open "#{dir_name}/icons.coffee", 'w' do |f|
9
+ f.puts %{Tao.iconsHtml = '''#{svg_html}'''}
9
10
  end
10
11
  end
11
12
 
data/tao_on_rails.gemspec CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_runtime_dependency "turbolinks", "~> 5.0"
25
25
  spec.add_runtime_dependency "jquery-rails", "~> 4.2"
26
26
  spec.add_runtime_dependency "lodash-rails", "~> 4.16"
27
- spec.add_runtime_dependency "normalize-rails", "~> 4.1"
28
27
  spec.add_runtime_dependency "rails", '~> 5.0'
29
28
 
30
29
  spec.add_development_dependency "bundler", "~> 1.13"
File without changes
@@ -0,0 +1,461 @@
1
+ /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
2
+
3
+ /* Document
4
+ ========================================================================== */
5
+
6
+ /**
7
+ * 1. Change the default font family in all browsers (opinionated).
8
+ * 2. Correct the line height in all browsers.
9
+ * 3. Prevent adjustments of font size after orientation changes in
10
+ * IE on Windows Phone and in iOS.
11
+ */
12
+
13
+ html {
14
+ font-family: sans-serif; /* 1 */
15
+ line-height: 1.15; /* 2 */
16
+ -ms-text-size-adjust: 100%; /* 3 */
17
+ -webkit-text-size-adjust: 100%; /* 3 */
18
+ }
19
+
20
+ /* Sections
21
+ ========================================================================== */
22
+
23
+ /**
24
+ * Remove the margin in all browsers (opinionated).
25
+ */
26
+
27
+ body {
28
+ margin: 0;
29
+ }
30
+
31
+ /**
32
+ * Add the correct display in IE 9-.
33
+ */
34
+
35
+ article,
36
+ aside,
37
+ footer,
38
+ header,
39
+ nav,
40
+ section {
41
+ display: block;
42
+ }
43
+
44
+ /**
45
+ * Correct the font size and margin on `h1` elements within `section` and
46
+ * `article` contexts in Chrome, Firefox, and Safari.
47
+ */
48
+
49
+ h1 {
50
+ font-size: 2em;
51
+ margin: 0.67em 0;
52
+ }
53
+
54
+ /* Grouping content
55
+ ========================================================================== */
56
+
57
+ /**
58
+ * Add the correct display in IE 9-.
59
+ * 1. Add the correct display in IE.
60
+ */
61
+
62
+ figcaption,
63
+ figure,
64
+ main { /* 1 */
65
+ display: block;
66
+ }
67
+
68
+ /**
69
+ * Add the correct margin in IE 8.
70
+ */
71
+
72
+ figure {
73
+ margin: 1em 40px;
74
+ }
75
+
76
+ /**
77
+ * 1. Add the correct box sizing in Firefox.
78
+ * 2. Show the overflow in Edge and IE.
79
+ */
80
+
81
+ hr {
82
+ box-sizing: content-box; /* 1 */
83
+ height: 0; /* 1 */
84
+ overflow: visible; /* 2 */
85
+ }
86
+
87
+ /**
88
+ * 1. Correct the inheritance and scaling of font size in all browsers.
89
+ * 2. Correct the odd `em` font sizing in all browsers.
90
+ */
91
+
92
+ pre {
93
+ font-family: monospace, monospace; /* 1 */
94
+ font-size: 1em; /* 2 */
95
+ }
96
+
97
+ /* Text-level semantics
98
+ ========================================================================== */
99
+
100
+ /**
101
+ * 1. Remove the gray background on active links in IE 10.
102
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
103
+ */
104
+
105
+ a {
106
+ background-color: transparent; /* 1 */
107
+ -webkit-text-decoration-skip: objects; /* 2 */
108
+ }
109
+
110
+ /**
111
+ * Remove the outline on focused links when they are also active or hovered
112
+ * in all browsers (opinionated).
113
+ */
114
+
115
+ a:active,
116
+ a:hover {
117
+ outline-width: 0;
118
+ }
119
+
120
+ /**
121
+ * 1. Remove the bottom border in Firefox 39-.
122
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
123
+ */
124
+
125
+ abbr[title] {
126
+ border-bottom: none; /* 1 */
127
+ text-decoration: underline; /* 2 */
128
+ text-decoration: underline dotted; /* 2 */
129
+ }
130
+
131
+ /**
132
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
133
+ */
134
+
135
+ b,
136
+ strong {
137
+ font-weight: inherit;
138
+ }
139
+
140
+ /**
141
+ * Add the correct font weight in Chrome, Edge, and Safari.
142
+ */
143
+
144
+ b,
145
+ strong {
146
+ font-weight: bolder;
147
+ }
148
+
149
+ /**
150
+ * 1. Correct the inheritance and scaling of font size in all browsers.
151
+ * 2. Correct the odd `em` font sizing in all browsers.
152
+ */
153
+
154
+ code,
155
+ kbd,
156
+ samp {
157
+ font-family: monospace, monospace; /* 1 */
158
+ font-size: 1em; /* 2 */
159
+ }
160
+
161
+ /**
162
+ * Add the correct font style in Android 4.3-.
163
+ */
164
+
165
+ dfn {
166
+ font-style: italic;
167
+ }
168
+
169
+ /**
170
+ * Add the correct background and color in IE 9-.
171
+ */
172
+
173
+ mark {
174
+ background-color: #ff0;
175
+ color: #000;
176
+ }
177
+
178
+ /**
179
+ * Add the correct font size in all browsers.
180
+ */
181
+
182
+ small {
183
+ font-size: 80%;
184
+ }
185
+
186
+ /**
187
+ * Prevent `sub` and `sup` elements from affecting the line height in
188
+ * all browsers.
189
+ */
190
+
191
+ sub,
192
+ sup {
193
+ font-size: 75%;
194
+ line-height: 0;
195
+ position: relative;
196
+ vertical-align: baseline;
197
+ }
198
+
199
+ sub {
200
+ bottom: -0.25em;
201
+ }
202
+
203
+ sup {
204
+ top: -0.5em;
205
+ }
206
+
207
+ /* Embedded content
208
+ ========================================================================== */
209
+
210
+ /**
211
+ * Add the correct display in IE 9-.
212
+ */
213
+
214
+ audio,
215
+ video {
216
+ display: inline-block;
217
+ }
218
+
219
+ /**
220
+ * Add the correct display in iOS 4-7.
221
+ */
222
+
223
+ audio:not([controls]) {
224
+ display: none;
225
+ height: 0;
226
+ }
227
+
228
+ /**
229
+ * Remove the border on images inside links in IE 10-.
230
+ */
231
+
232
+ img {
233
+ border-style: none;
234
+ }
235
+
236
+ /**
237
+ * Hide the overflow in IE.
238
+ */
239
+
240
+ svg:not(:root) {
241
+ overflow: hidden;
242
+ }
243
+
244
+ /* Forms
245
+ ========================================================================== */
246
+
247
+ /**
248
+ * 1. Change the font styles in all browsers (opinionated).
249
+ * 2. Remove the margin in Firefox and Safari.
250
+ */
251
+
252
+ button,
253
+ input,
254
+ optgroup,
255
+ select,
256
+ textarea {
257
+ font-family: sans-serif; /* 1 */
258
+ font-size: 100%; /* 1 */
259
+ line-height: 1.15; /* 1 */
260
+ margin: 0; /* 2 */
261
+ }
262
+
263
+ /**
264
+ * Show the overflow in IE.
265
+ * 1. Show the overflow in Edge.
266
+ */
267
+
268
+ button,
269
+ input { /* 1 */
270
+ overflow: visible;
271
+ }
272
+
273
+ /**
274
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
275
+ * 1. Remove the inheritance of text transform in Firefox.
276
+ */
277
+
278
+ button,
279
+ select { /* 1 */
280
+ text-transform: none;
281
+ }
282
+
283
+ /**
284
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
285
+ * controls in Android 4.
286
+ * 2. Correct the inability to style clickable types in iOS and Safari.
287
+ */
288
+
289
+ button,
290
+ html [type="button"], /* 1 */
291
+ [type="reset"],
292
+ [type="submit"] {
293
+ -webkit-appearance: button; /* 2 */
294
+ }
295
+
296
+ /**
297
+ * Remove the inner border and padding in Firefox.
298
+ */
299
+
300
+ button::-moz-focus-inner,
301
+ [type="button"]::-moz-focus-inner,
302
+ [type="reset"]::-moz-focus-inner,
303
+ [type="submit"]::-moz-focus-inner {
304
+ border-style: none;
305
+ padding: 0;
306
+ }
307
+
308
+ /**
309
+ * Restore the focus styles unset by the previous rule.
310
+ */
311
+
312
+ button:-moz-focusring,
313
+ [type="button"]:-moz-focusring,
314
+ [type="reset"]:-moz-focusring,
315
+ [type="submit"]:-moz-focusring {
316
+ outline: 1px dotted ButtonText;
317
+ }
318
+
319
+ /**
320
+ * Change the border, margin, and padding in all browsers (opinionated).
321
+ */
322
+
323
+ fieldset {
324
+ border: 1px solid #c0c0c0;
325
+ margin: 0 2px;
326
+ padding: 0.35em 0.625em 0.75em;
327
+ }
328
+
329
+ /**
330
+ * 1. Correct the text wrapping in Edge and IE.
331
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
332
+ * 3. Remove the padding so developers are not caught out when they zero out
333
+ * `fieldset` elements in all browsers.
334
+ */
335
+
336
+ legend {
337
+ box-sizing: border-box; /* 1 */
338
+ color: inherit; /* 2 */
339
+ display: table; /* 1 */
340
+ max-width: 100%; /* 1 */
341
+ padding: 0; /* 3 */
342
+ white-space: normal; /* 1 */
343
+ }
344
+
345
+ /**
346
+ * 1. Add the correct display in IE 9-.
347
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
348
+ */
349
+
350
+ progress {
351
+ display: inline-block; /* 1 */
352
+ vertical-align: baseline; /* 2 */
353
+ }
354
+
355
+ /**
356
+ * Remove the default vertical scrollbar in IE.
357
+ */
358
+
359
+ textarea {
360
+ overflow: auto;
361
+ }
362
+
363
+ /**
364
+ * 1. Add the correct box sizing in IE 10-.
365
+ * 2. Remove the padding in IE 10-.
366
+ */
367
+
368
+ [type="checkbox"],
369
+ [type="radio"] {
370
+ box-sizing: border-box; /* 1 */
371
+ padding: 0; /* 2 */
372
+ }
373
+
374
+ /**
375
+ * Correct the cursor style of increment and decrement buttons in Chrome.
376
+ */
377
+
378
+ [type="number"]::-webkit-inner-spin-button,
379
+ [type="number"]::-webkit-outer-spin-button {
380
+ height: auto;
381
+ }
382
+
383
+ /**
384
+ * 1. Correct the odd appearance in Chrome and Safari.
385
+ * 2. Correct the outline style in Safari.
386
+ */
387
+
388
+ [type="search"] {
389
+ -webkit-appearance: textfield; /* 1 */
390
+ outline-offset: -2px; /* 2 */
391
+ }
392
+
393
+ /**
394
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
395
+ */
396
+
397
+ [type="search"]::-webkit-search-cancel-button,
398
+ [type="search"]::-webkit-search-decoration {
399
+ -webkit-appearance: none;
400
+ }
401
+
402
+ /**
403
+ * 1. Correct the inability to style clickable types in iOS and Safari.
404
+ * 2. Change font properties to `inherit` in Safari.
405
+ */
406
+
407
+ ::-webkit-file-upload-button {
408
+ -webkit-appearance: button; /* 1 */
409
+ font: inherit; /* 2 */
410
+ }
411
+
412
+ /* Interactive
413
+ ========================================================================== */
414
+
415
+ /*
416
+ * Add the correct display in IE 9-.
417
+ * 1. Add the correct display in Edge, IE, and Firefox.
418
+ */
419
+
420
+ details, /* 1 */
421
+ menu {
422
+ display: block;
423
+ }
424
+
425
+ /*
426
+ * Add the correct display in all browsers.
427
+ */
428
+
429
+ summary {
430
+ display: list-item;
431
+ }
432
+
433
+ /* Scripting
434
+ ========================================================================== */
435
+
436
+ /**
437
+ * Add the correct display in IE 9-.
438
+ */
439
+
440
+ canvas {
441
+ display: inline-block;
442
+ }
443
+
444
+ /**
445
+ * Add the correct display in IE.
446
+ */
447
+
448
+ template {
449
+ display: none;
450
+ }
451
+
452
+ /* Hidden
453
+ ========================================================================== */
454
+
455
+ /**
456
+ * Add the correct display in IE 10-.
457
+ */
458
+
459
+ [hidden] {
460
+ display: none;
461
+ }