tungsten 0.1.19 → 0.1.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/tungsten/_icons.js +1 -1
- data/app/assets/javascripts/tungsten/enhancements/text-helpers.js +31 -0
- data/app/assets/javascripts/tungsten/tungsten.js +1 -0
- data/app/assets/stylesheets/tungsten/components/_toggle-nav.scss +1 -4
- data/app/assets/stylesheets/tungsten/components/_tooltip.scss +1 -3
- data/app/assets/stylesheets/tungsten/core/_animations.scss +1 -1
- data/app/assets/stylesheets/tungsten/core/_globals.scss +1 -1
- data/app/assets/stylesheets/tungsten/core/_grid.scss +8 -0
- data/app/assets/stylesheets/tungsten/core/_layout.scss +45 -0
- data/app/assets/stylesheets/tungsten/core/_sections.scss +1 -1
- data/app/assets/stylesheets/tungsten/form/_base.scss +2 -2
- data/app/assets/stylesheets/tungsten/form/_copy-input.scss +31 -0
- data/app/assets/stylesheets/tungsten/form/_index.scss +1 -0
- data/app/assets/stylesheets/tungsten/form/_label-placeholder.scss +3 -7
- data/app/assets/svgs/tungsten/copy.svg +1 -0
- data/app/assets/svgs/tungsten/logo.svg +1 -0
- data/app/helpers/tungsten/button_helper.rb +15 -3
- data/app/helpers/tungsten/deployments_helper.rb +4 -3
- data/app/helpers/tungsten/form_helper.rb +19 -2
- data/app/views/layouts/tungsten/default.html.slim +4 -1
- data/lib/tungsten/version.rb +1 -1
- data/public/{code-0.1.19.js → code-0.1.20.js} +1 -1
- data/public/{code-0.1.19.js.gz → code-0.1.20.js.gz} +0 -0
- data/public/{code-0.1.19.map.json → code-0.1.20.map.json} +0 -0
- data/public/{tungsten-0.1.19.css → tungsten-0.1.20.css} +103 -22
- data/public/tungsten-0.1.20.css.gz +0 -0
- data/public/{tungsten-0.1.19.js → tungsten-0.1.20.js} +44 -42
- data/public/tungsten-0.1.20.js.gz +0 -0
- data/public/tungsten-0.1.20.map.json +1 -0
- metadata +14 -10
- data/public/tungsten-0.1.19.css.gz +0 -0
- data/public/tungsten-0.1.19.js.gz +0 -0
- data/public/tungsten-0.1.19.map.json +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ee12661632e5e680b97d10b8e53ac76a28b09ff
|
4
|
+
data.tar.gz: 9242ee825cd2fb7f3adcaf983e8376ce45bfea70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7aee84b8ac48e4fd18b7becb907ab612e177172971f8781c7562019dc7441478262f1bffef14c27c0f5fa1f97b60384817ffafceebb69348bd8e3068f2ba0304
|
7
|
+
data.tar.gz: d5ad13b8dc2744fe0aa04d35703deeda232defe933a23d110d220a27be2823ff8621d901149c87ea998eb3af972d2a48ad41a0d50000aae0a5b3dcf8def2e8ae
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
function embed() {
|
4
4
|
if (!document.querySelector('#esvg-svg-icons')) {
|
5
|
-
document.querySelector('body').insertAdjacentHTML('afterbegin', '<svg id="esvg-svg-icons" data-symbol-class="svg-symbol" data-prefix="svg" version="1.1" style="height:0;position:absolute"><symbol id="svg-deployment" data-name="deployment" viewBox="0 0 176 201" width="176" height="201" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M88 5.985l82.272 47.5v95L88 195.985l-82.272-47.5v-95L88 5.985z"/></symbol></svg>')
|
5
|
+
document.querySelector('body').insertAdjacentHTML('afterbegin', '<svg id="esvg-svg-icons" data-symbol-class="svg-symbol" data-prefix="svg" version="1.1" style="height:0;position:absolute"><symbol id="svg-deployment" data-name="deployment" viewBox="0 0 176 201" width="176" height="201" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M88 5.985l82.272 47.5v95L88 195.985l-82.272-47.5v-95L88 5.985z"/></symbol><symbol id="svg-copy" data-name="copy" viewBox="0 0 294 294" width="294" height="294" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M0 136.96c0-28.877 23.444-52.32 52.32-52.32v89.854c0 37.036 30.07 67.105 67.105 67.105h89.854c0 28.875-23.445 52.32-52.32 52.32H52.32C23.444 293.92 0 270.474 0 241.6V136.96z" fill-opacity=".529"/><path d="M136.96 0c-28.877 0-52.32 23.444-52.32 52.32v104.64c0 28.875 23.443 52.32 52.32 52.32H241.6c28.875 0 52.32-23.445 52.32-52.32V52.32C293.92 23.444 270.474 0 241.6 0H136.96z"/></symbol><symbol id="svg-logo" data-name="logo" viewBox="0 0 256 256" width="256" height="256" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M152.89 179.214l-49.78 28.74-53.332-30.792L0 148.42V86.838l53.333-30.792 49.777 28.74 49.777-28.74 53.333 30.792 49.78 28.74v61.584l-53.333 30.792-49.778-28.74zm3.137-6.374v-49.052l42.975 24.635.01 49.27-42.985-24.853zm-99.14.217v-49.27l43.126 24.77.01 49.566-43.135-25.066zM7.11 144.317v-49.27l42.668 24.635.002 49.27-42.67-24.635zm96-51.32l42.67 24.634-42.67 24.636-42.67-24.634 42.67-24.634zm99.557 0l42.668 24.634-42.668 24.636-42.67-24.634 42.67-24.634zM53.333 64.257l42.67 24.633-42.67 24.635-42.67-24.634 42.67-24.633zm99.554 0l42.67 24.633-42.67 24.635-42.67-24.634 42.67-24.633z"/><path d="M6.82 144.547l.023-50 93.295 53.877.04 50.06L6.82 144.547zm148.916 28.477l.14-49.667 43.428 24.894-.045 50.235-43.525-25.46z" fill-opacity=".349"/></symbol></svg>')
|
6
6
|
}
|
7
7
|
}
|
8
8
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
var toolbox = require( 'compose-toolbox' )
|
2
|
+
|
3
|
+
function autoSizeTextarea( textarea ) {
|
4
|
+
var parent = textarea.parentElement
|
5
|
+
|
6
|
+
if ( textarea.value == '' ) return
|
7
|
+
if ( parent.classList.contains('input-wrapper') ) {
|
8
|
+
|
9
|
+
parent.style.height = textarea.style.height
|
10
|
+
var offset = textarea.offsetHeight - textarea.clientHeight
|
11
|
+
textarea.style.height = 'auto'
|
12
|
+
var newHeight = ( textarea.scrollHeight + offset )
|
13
|
+
var maxHeight = window.innerHeight * .95
|
14
|
+
|
15
|
+
if ( newHeight < maxHeight )
|
16
|
+
textarea.style.height = newHeight + 'px'
|
17
|
+
else
|
18
|
+
textarea.style.height = maxHeight + 'px'
|
19
|
+
|
20
|
+
parent.style.height = 'auto'
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
toolbox.event.change(function(){
|
25
|
+
var textareas = document.querySelectorAll('textarea')
|
26
|
+
toolbox.event.delay( function(){ Array.prototype.forEach.call(textareas, autoSizeTextarea) } )
|
27
|
+
})
|
28
|
+
|
29
|
+
toolbox.event.on(document, 'keyup toggler:show', 'textarea', function(event){
|
30
|
+
autoSizeTextarea(event.currentTarget)
|
31
|
+
})
|
@@ -13,6 +13,7 @@ require( 'compose-slider' ) // Our slider (range input) component
|
|
13
13
|
require( './_icons' ) // Import svg icons (from Esvg)
|
14
14
|
require( './_form-helpers' )
|
15
15
|
require( './enhancements/flash-messages' )
|
16
|
+
require( './enhancements/text-helpers' )
|
16
17
|
|
17
18
|
// Public API object
|
18
19
|
window.Tungsten = module.exports = toolbox.merge( {
|
@@ -19,7 +19,7 @@
|
|
19
19
|
background-color: rgba(#000, 0.8);
|
20
20
|
color: #fff;
|
21
21
|
white-space: nowrap;
|
22
|
-
font-size:
|
22
|
+
font-size: 10px;
|
23
23
|
line-height: 1.5em;
|
24
24
|
padding: 5px 8px;
|
25
25
|
border-radius: $radius;
|
@@ -47,6 +47,4 @@
|
|
47
47
|
@include triangle(up, rgba($green-02, .8), 6px);
|
48
48
|
}
|
49
49
|
}
|
50
|
-
|
51
50
|
}
|
52
|
-
|
@@ -238,6 +238,14 @@ form [class*='columns'] {
|
|
238
238
|
justify-items: flex-end;
|
239
239
|
}
|
240
240
|
|
241
|
+
.push-right {
|
242
|
+
margin-left: auto;
|
243
|
+
}
|
244
|
+
|
245
|
+
.push-left {
|
246
|
+
margin-right: auto;
|
247
|
+
}
|
248
|
+
|
241
249
|
/* ===================================== *
|
242
250
|
* Breakpoints
|
243
251
|
* ------------------------------------- */
|
@@ -15,6 +15,10 @@
|
|
15
15
|
* Document
|
16
16
|
* ------------------------------------- */
|
17
17
|
|
18
|
+
html {
|
19
|
+
background: $gray-02;
|
20
|
+
}
|
21
|
+
|
18
22
|
body {
|
19
23
|
display: flex;
|
20
24
|
min-height: 100vh;
|
@@ -45,6 +49,47 @@ textarea {
|
|
45
49
|
* Application
|
46
50
|
* ------------------------------------- */
|
47
51
|
|
52
|
+
.application-banner {
|
53
|
+
background: $gray-10;
|
54
|
+
color: $white;
|
55
|
+
display: flex;
|
56
|
+
align-items: center;
|
57
|
+
padding: $content-padding * .5 $content-padding;
|
58
|
+
|
59
|
+
.svg-deployment {
|
60
|
+
margin-right: 20px;
|
61
|
+
}
|
62
|
+
|
63
|
+
@each $name, $colors in $gradients {
|
64
|
+
$start: nth($colors, 1);
|
65
|
+
$end: nth($colors, 2);
|
66
|
+
|
67
|
+
&.#{$name}-gradient-bg {
|
68
|
+
background: linear-gradient(135deg, #{$start}, #{$end}) left top/100% 100% no-repeat;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
a {
|
73
|
+
transition: $duration;
|
74
|
+
text-decoration: none;
|
75
|
+
padding: .3em .6em;
|
76
|
+
border-radius: $radius;
|
77
|
+
|
78
|
+
&,
|
79
|
+
&:visited {
|
80
|
+
color: inherit;
|
81
|
+
background: transparent;
|
82
|
+
}
|
83
|
+
|
84
|
+
&:hover,
|
85
|
+
&:focus,
|
86
|
+
&:active {
|
87
|
+
color: inherit;
|
88
|
+
background: rgba($white, .2);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
48
93
|
.application-content {
|
49
94
|
padding: $content-padding;
|
50
95
|
}
|
@@ -78,7 +78,6 @@ textarea,
|
|
78
78
|
border: none;
|
79
79
|
padding: 0;
|
80
80
|
}
|
81
|
-
|
82
81
|
}
|
83
82
|
|
84
83
|
.input-wrapper {
|
@@ -102,9 +101,10 @@ select {
|
|
102
101
|
|
103
102
|
// Confine resizing of textareas
|
104
103
|
textarea {
|
104
|
+
line-height: 1.4em;
|
105
105
|
display: block;
|
106
106
|
resize: vertical;
|
107
|
-
|
107
|
+
max-height: 50vh;
|
108
108
|
}
|
109
109
|
|
110
110
|
::placeholder {
|
@@ -0,0 +1,31 @@
|
|
1
|
+
.copy-input {
|
2
|
+
position: relative;
|
3
|
+
|
4
|
+
.copy-button {
|
5
|
+
right: 1px;
|
6
|
+
top: 10px;
|
7
|
+
z-index: 2;
|
8
|
+
padding: 4px 10px;
|
9
|
+
|
10
|
+
&, &:hover, &:active, &:focus {
|
11
|
+
transform: translate3d(0,0,0);
|
12
|
+
position: absolute;
|
13
|
+
border: none;
|
14
|
+
box-shadow: none;
|
15
|
+
background: linear-gradient( to right, rgba(#fff, .4), #fff 15%)
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
.copy-button {
|
21
|
+
svg {
|
22
|
+
opacity: .5;
|
23
|
+
transition: opacity ease .2s;
|
24
|
+
}
|
25
|
+
&:hover, &:focus {
|
26
|
+
svg { opacity: 1; }
|
27
|
+
}
|
28
|
+
&.copied {
|
29
|
+
svg { fill: $green-02; }
|
30
|
+
}
|
31
|
+
}
|
@@ -21,7 +21,7 @@
|
|
21
21
|
|
22
22
|
// Default active color
|
23
23
|
label:not(.valid):not(.invalid) {
|
24
|
-
|
24
|
+
input {
|
25
25
|
&:focus + span,
|
26
26
|
&:active + span {
|
27
27
|
color: $gray-08;
|
@@ -30,7 +30,7 @@
|
|
30
30
|
}
|
31
31
|
|
32
32
|
// Inputs
|
33
|
-
|
33
|
+
input {
|
34
34
|
z-index: 1;
|
35
35
|
margin: 0;
|
36
36
|
font-size: inherit;
|
@@ -50,7 +50,7 @@
|
|
50
50
|
}
|
51
51
|
|
52
52
|
&.valid, &.invalid {
|
53
|
-
|
53
|
+
input {
|
54
54
|
+ .placeholder-label-text {
|
55
55
|
color: inherit;
|
56
56
|
}
|
@@ -60,10 +60,6 @@
|
|
60
60
|
input {
|
61
61
|
line-height: inherit;
|
62
62
|
}
|
63
|
-
|
64
|
-
textarea {
|
65
|
-
padding-top: ($padding-y / 2) + 4;
|
66
|
-
}
|
67
63
|
}
|
68
64
|
|
69
65
|
// Faux-placeholder labels
|
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 294 294" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M0,136.959c0,-28.876 23.444,-52.319 52.32,-52.319c0,0 0,89.854 0,89.854c0,37.036 30.069,67.105 67.105,67.105l89.854,0c0,28.876 -23.444,52.32 -52.32,52.32l-104.639,0c-28.876,0 -52.32,-23.444 -52.32,-52.32l0,-104.64Z" style="fill-opacity:0.529412;"/><path d="M136.959,0c-28.876,0 -52.319,23.444 -52.319,52.32l0,104.639c0,28.876 23.443,52.32 52.319,52.32l104.64,0c28.876,0 52.32,-23.444 52.32,-52.32l0,-104.639c0,-28.876 -23.444,-52.32 -52.32,-52.32l-104.64,0Z"/></svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M152.89 179.214l-49.78 28.74-53.332-30.792L0 148.42V86.838l53.333-30.792 49.777 28.74 49.777-28.74 53.333 30.792 49.78 28.74v61.584l-53.333 30.792-49.778-28.74zm3.137-6.374v-49.052l42.975 24.635.01 49.27-42.985-24.853zm-99.14.217v-49.27l43.126 24.77.01 49.566-43.135-25.066zM7.11 144.317v-49.27l42.668 24.635.002 49.27-42.67-24.635zm96-51.32l42.67 24.634-42.67 24.635-42.67-24.634 42.67-24.634zm99.557 0l42.668 24.634-42.668 24.635-42.67-24.634 42.67-24.634zM53.333 64.256l42.67 24.634-42.67 24.635-42.67-24.634 42.67-24.634zm99.554 0l42.67 24.634-42.67 24.635-42.67-24.634 42.67-24.634z"/><path d="M6.82 144.547l.023-50 93.295 53.877.04 50.06L6.82 144.547zM155.736 173.024l.14-49.667 43.428 24.894-.045 50.234-43.524-25.46z" fill-opacity=".349"/></svg>
|
@@ -63,14 +63,26 @@ module Tungsten
|
|
63
63
|
button(text, options, &block)
|
64
64
|
end
|
65
65
|
|
66
|
-
def copy_button(
|
66
|
+
def copy_button(target, text=nil, options={}, &block)
|
67
|
+
|
68
|
+
if text.is_a? Hash
|
69
|
+
options = text
|
70
|
+
text = nil
|
71
|
+
end
|
72
|
+
|
67
73
|
options[:aria_label] ||= "Copy to clipboard"
|
68
|
-
options[:class] = "#{options[:class]} has-tooltip".strip
|
74
|
+
options[:class] = "#{options[:class]} copy-button has-tooltip".strip
|
69
75
|
|
70
76
|
options[:data] ||= {}
|
71
77
|
options[:data][:copy_target] = target
|
72
78
|
|
73
|
-
|
79
|
+
if text.nil?
|
80
|
+
button( text, options ) do
|
81
|
+
use_svg 'copy', width: '20px'
|
82
|
+
end
|
83
|
+
else
|
84
|
+
button(text, options, &block)
|
85
|
+
end
|
74
86
|
end
|
75
87
|
|
76
88
|
def button_classes(options)
|
@@ -6,14 +6,14 @@ module Tungsten
|
|
6
6
|
if name.nil?
|
7
7
|
deployments
|
8
8
|
else
|
9
|
-
deployment = deployments.find { |d|
|
9
|
+
deployment = deployments.find { |d|
|
10
10
|
d[:name] =~ /#{name}/i || d[:slug] == name
|
11
11
|
}
|
12
12
|
|
13
13
|
if deployment.nil? && !Rails.env.production?
|
14
14
|
raise %Q{No deployment type "#{name}" exists.}
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
deployment
|
18
18
|
end
|
19
19
|
end
|
@@ -44,7 +44,8 @@ module Tungsten
|
|
44
44
|
options[:use][:class] = "deployment-icon-hex #{options[:use][:class]}".strip
|
45
45
|
|
46
46
|
options[:color] ||= "#fff"
|
47
|
-
options[:fill] ||= "
|
47
|
+
options[:fill] ||= "none"
|
48
|
+
# options[:fill] ||= "url(##{data[:name].downcase}-gradient-bg)"
|
48
49
|
options[:content] ||= deployment_text(data[:short_name], options.delete(:text) || {})
|
49
50
|
|
50
51
|
deployment_graphic.use(options).html_safe
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Tungsten
|
2
2
|
module FormHelper
|
3
|
+
include Tungsten::ButtonHelper
|
4
|
+
|
3
5
|
INPUT_OPTIONS = {
|
4
6
|
email: {
|
5
7
|
type: "email",
|
@@ -364,6 +366,11 @@ module Tungsten
|
|
364
366
|
value = nil
|
365
367
|
end
|
366
368
|
|
369
|
+
if options.delete(:copy)
|
370
|
+
copy_class = "copy-input-#{SecureRandom.hex(8)}"
|
371
|
+
copy = copy_button ".#{copy_class}", icon: 'copy'
|
372
|
+
end
|
373
|
+
|
367
374
|
options = (INPUT_OPTIONS[type]||{}).deep_merge options
|
368
375
|
options[:type] ||= type
|
369
376
|
|
@@ -371,7 +378,7 @@ module Tungsten
|
|
371
378
|
class: "#{label_class(options[:type])} #{options.delete(:class)}"
|
372
379
|
}
|
373
380
|
|
374
|
-
if placeholder = options[:placeholder]
|
381
|
+
if options[:type] != :textarea && placeholder = options[:placeholder]
|
375
382
|
placeholder = content_tag(:span, class: 'placeholder-label-text') { placeholder }
|
376
383
|
label_options[:class] += ' placeholder-label'
|
377
384
|
end
|
@@ -380,9 +387,10 @@ module Tungsten
|
|
380
387
|
label_text = content_tag(:span, class: 'label-text') { label_text }
|
381
388
|
end
|
382
389
|
|
390
|
+
options[:class] = "#{options[:class]} #{copy_class}".strip if copy_class
|
383
391
|
tag = base_tag(name, value, options, type, &block)
|
384
392
|
|
385
|
-
content_tag(:label, label_options) {
|
393
|
+
label = content_tag(:label, label_options) {
|
386
394
|
concat label_text
|
387
395
|
if type == :select
|
388
396
|
concat tag
|
@@ -395,6 +403,15 @@ module Tungsten
|
|
395
403
|
end
|
396
404
|
}
|
397
405
|
|
406
|
+
if copy
|
407
|
+
content_tag(:div, class: 'copy-input') {
|
408
|
+
concat label
|
409
|
+
concat copy
|
410
|
+
}
|
411
|
+
else
|
412
|
+
label
|
413
|
+
end
|
414
|
+
|
398
415
|
end
|
399
416
|
|
400
417
|
private
|
data/lib/tungsten/version.rb
CHANGED