playbook_ui 2.8.3 → 2.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/packs/examples.js +15 -0
  3. data/app/pb_kits/playbook/packs/kits.js +5 -0
  4. data/app/pb_kits/playbook/packs/pb_label_pill.js +4 -0
  5. data/app/pb_kits/playbook/packs/pb_owner.js +4 -0
  6. data/app/pb_kits/playbook/packs/pb_owner_phone.js +4 -0
  7. data/app/pb_kits/playbook/packs/pb_phone.js +4 -0
  8. data/app/pb_kits/playbook/packs/pb_toggle.js +4 -0
  9. data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +5 -0
  10. data/app/pb_kits/playbook/pb_label_pill/_label_pill.html.erb +7 -0
  11. data/app/pb_kits/playbook/pb_label_pill/_label_pill.jsx +21 -0
  12. data/app/pb_kits/playbook/pb_label_pill/_label_pill.scss +11 -0
  13. data/app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.html.erb +34 -0
  14. data/app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.jsx +12 -0
  15. data/app/pb_kits/playbook/pb_label_pill/docs/example.yml +9 -0
  16. data/app/pb_kits/playbook/pb_label_pill/docs/index.js +1 -0
  17. data/app/pb_kits/playbook/pb_label_pill/label_pill.rb +58 -0
  18. data/app/pb_kits/playbook/pb_list/_list.html.erb +1 -1
  19. data/app/pb_kits/playbook/pb_list/_list.jsx +3 -3
  20. data/app/pb_kits/playbook/pb_list/_list.scss +1 -1
  21. data/app/pb_kits/playbook/pb_list/docs/_list_dark_lg.html.erb +1 -1
  22. data/app/pb_kits/playbook/pb_list/docs/_list_lg.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_list/list.rb +8 -7
  24. data/app/pb_kits/playbook/pb_owner/_owner.html.erb +7 -0
  25. data/app/pb_kits/playbook/pb_owner/_owner.jsx +21 -0
  26. data/app/pb_kits/playbook/pb_owner/_owner.scss +11 -0
  27. data/app/pb_kits/playbook/pb_owner/docs/_owner_default.html.erb +1 -0
  28. data/app/pb_kits/playbook/pb_owner/docs/_owner_default.jsx +12 -0
  29. data/app/pb_kits/playbook/pb_owner/docs/example.yml +9 -0
  30. data/app/pb_kits/playbook/pb_owner/docs/index.js +1 -0
  31. data/app/pb_kits/playbook/pb_owner/owner.rb +52 -0
  32. data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.html.erb +7 -0
  33. data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.jsx +21 -0
  34. data/app/pb_kits/playbook/pb_owner_phone/_owner_phone.scss +9 -0
  35. data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.html.erb +6 -0
  36. data/app/pb_kits/playbook/pb_owner_phone/docs/_owner_phone_default.jsx +12 -0
  37. data/app/pb_kits/playbook/pb_owner_phone/docs/example.yml +9 -0
  38. data/app/pb_kits/playbook/pb_owner_phone/docs/index.js +1 -0
  39. data/app/pb_kits/playbook/pb_owner_phone/owner_phone.rb +64 -0
  40. data/app/pb_kits/playbook/pb_phone/_phone.html.erb +6 -0
  41. data/app/pb_kits/playbook/pb_phone/_phone.jsx +21 -0
  42. data/app/pb_kits/playbook/pb_phone/_phone.scss +2 -0
  43. data/app/pb_kits/playbook/pb_phone/docs/_phone_default.html.erb +4 -0
  44. data/app/pb_kits/playbook/pb_phone/docs/_phone_default.jsx +12 -0
  45. data/app/pb_kits/playbook/pb_phone/docs/example.yml +9 -0
  46. data/app/pb_kits/playbook/pb_phone/docs/index.js +1 -0
  47. data/app/pb_kits/playbook/pb_phone/phone.rb +69 -0
  48. data/app/pb_kits/playbook/pb_toggle/_toggle.html.erb +12 -0
  49. data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +21 -0
  50. data/app/pb_kits/playbook/pb_toggle/_toggle.scss +57 -0
  51. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_checked.html.erb +11 -0
  52. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default.html.erb +11 -0
  53. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default.jsx +13 -0
  54. data/app/pb_kits/playbook/pb_toggle/docs/example.yml +9 -0
  55. data/app/pb_kits/playbook/pb_toggle/docs/index.js +1 -0
  56. data/app/pb_kits/playbook/pb_toggle/toggle.rb +59 -0
  57. data/lib/generators/kit/kit_generator.rb +13 -9
  58. data/lib/generators/kit/templates/kit_ruby.erb.tt +3 -1
  59. data/lib/playbook/engine.rb +1 -0
  60. data/lib/playbook/version.rb +1 -1
  61. data/lib/tasks/pb_release.rake +69 -0
  62. metadata +92 -44
@@ -0,0 +1,12 @@
1
+ import React from "react"
2
+ import Phone from "../_phone.jsx"
3
+
4
+ function PhoneDefault() {
5
+ return (
6
+ <div>
7
+ <Phone />
8
+ </div>
9
+ )
10
+ }
11
+
12
+ export default PhoneDefault;
@@ -0,0 +1,9 @@
1
+ examples:
2
+
3
+ rails:
4
+ - phone_default: Default
5
+
6
+
7
+ react:
8
+ - phone_default: Default
9
+
@@ -0,0 +1 @@
1
+ export {default as PhoneDefault} from './_phone_default.jsx';
@@ -0,0 +1,69 @@
1
+ require "action_view"
2
+ include ActionView::Helpers::NumberHelper
3
+
4
+ module Playbook
5
+ module PbPhone
6
+ class Phone < Playbook::PbKit::Base
7
+ PROPS = [:configured_classname,
8
+ :configured_data,
9
+ :configured_id,
10
+ :configured_icon,
11
+ :configured_number].freeze
12
+
13
+ def initialize(classname: default_configuration,
14
+ data: default_configuration,
15
+ id: default_configuration,
16
+ icon: default_configuration,
17
+ number: default_configuration)
18
+ self.configured_classname = classname
19
+ self.configured_data = data
20
+ self.configured_id = id
21
+ self.configured_icon = icon
22
+ self.configured_number = number
23
+ end
24
+
25
+ def icon
26
+ # TODO: Strict options and automaticlly pass the correct icon name
27
+ if is_set? configured_icon
28
+ icon_props = { icon: configured_icon, fixed_width: true}
29
+ pb_icon = Playbook::PbIcon::Icon.new(icon_props)
30
+ ApplicationController.renderer.render(partial: pb_icon, as: :object)
31
+ else
32
+ ""
33
+ end
34
+ end
35
+
36
+ def number
37
+ if is_set? configured_number
38
+ if formatted_number
39
+ return number_to_phone(formatted_number, area_code: true)
40
+ end
41
+ end
42
+ end
43
+
44
+ def formatted_number
45
+ configured_number.to_s.gsub(/\D/, "")
46
+ end
47
+
48
+ def value
49
+ pb_body = Playbook::PbBody::Body.new(color: "light") do
50
+ icon + number
51
+ end
52
+ ApplicationController.renderer.render(partial: pb_body, as: :object)
53
+ end
54
+
55
+ def to_partial_path
56
+ "pb_phone/phone"
57
+ end
58
+
59
+ private
60
+
61
+ DEFAULT = Object.new
62
+ private_constant :DEFAULT
63
+ def default_configuration
64
+ DEFAULT
65
+ end
66
+ attr_accessor(*PROPS)
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,12 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname(object.kit_class),
5
+ ) do %>
6
+
7
+ <label class="pb_toggle_wrapper">
8
+ <input type="checkbox" <%= object.checked %> />
9
+ <div class="pb_toggle_control"></div>
10
+ </label>
11
+
12
+ <% end %>
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import PropTypes from "prop-types";
3
+
4
+ const propTypes = {
5
+ className: PropTypes.string,
6
+ id: PropTypes.string
7
+ };
8
+
9
+ class Toggle extends React.Component {
10
+ render() {
11
+ return (
12
+ <div className="pb_toggle">
13
+ <span>TOGGLE CONTENT</span>
14
+ </div>
15
+ )
16
+ }
17
+ }
18
+
19
+ Toggle.propTypes = propTypes;
20
+
21
+ export default Toggle;
@@ -0,0 +1,57 @@
1
+ @import "../tokens/colors";
2
+
3
+ $color_checkbox_success: $data_1;
4
+ $color_checkbox_default: $border_light;
5
+ $transition: .2s cubic-bezier(0.95, 0.05, 0.795, 0.035);
6
+ $toggle_sizes: (
7
+ "sm": 50px,
8
+ "md": 60px,
9
+ );
10
+
11
+ [class^=pb_toggle] {
12
+ position: relative;
13
+
14
+ @each $name, $size in $toggle_sizes {
15
+ &[class*=_#{$name}] {
16
+
17
+ $width: $size;
18
+ $height: $width/2;
19
+
20
+ .pb_toggle_wrapper {
21
+ .pb_toggle_control {
22
+ transition: $transition;
23
+ width: $width;
24
+ height: $height;
25
+ display: block;
26
+ border-radius: $height;
27
+ border: 3px solid $color_checkbox_default;
28
+ background-color: $color_checkbox_default;
29
+ position: relative;
30
+ box-sizing: content-box;
31
+ &:after {
32
+ transition: $transition;
33
+ content: "";
34
+ width: $width/2;
35
+ height: $height;
36
+ display: block;
37
+ background-color: $white;
38
+ border-radius: 50%;
39
+ position: absolute;
40
+ top: 0;
41
+ left: 0;
42
+ }
43
+ }
44
+ input {
45
+ display: none;
46
+ &:checked + .pb_toggle_control {
47
+ border-color: $color_checkbox_success;
48
+ background-color: $color_checkbox_success;
49
+ &:after{
50
+ left: $width/2;
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
@@ -0,0 +1,11 @@
1
+ <%= pb_rails("toggle", props: {
2
+ size: "md",
3
+ checked: true
4
+ }) %>
5
+
6
+ <br>
7
+
8
+ <%= pb_rails("toggle", props: {
9
+ size: "md",
10
+ checked: false
11
+ }) %>
@@ -0,0 +1,11 @@
1
+ <%= pb_rails("toggle", props: {
2
+ size: "sm",
3
+ checked: false
4
+ }) %>
5
+
6
+ <br>
7
+
8
+ <%= pb_rails("toggle", props: {
9
+ size: "md",
10
+ checked: false
11
+ }) %>
@@ -0,0 +1,13 @@
1
+ import React from "react"
2
+ import Toggle from "../_toggle.jsx"
3
+
4
+ function ToggleDefault() {
5
+ return (
6
+ <div>
7
+ <Toggle size="sm"/>
8
+ <Toggle size="md"/>
9
+ </div>
10
+ )
11
+ }
12
+
13
+ export default ToggleDefault;
@@ -0,0 +1,9 @@
1
+ examples:
2
+
3
+ rails:
4
+ - toggle_default: Sizes
5
+ - toggle_checked: Default State
6
+
7
+
8
+ react:
9
+ - toggle_default: Default
@@ -0,0 +1 @@
1
+ export {default as ToggleDefault} from './_toggle_default.jsx';
@@ -0,0 +1,59 @@
1
+ module Playbook
2
+ module PbToggle
3
+ class Toggle < Playbook::PbKit::Base
4
+ PROPS = [:configured_classname,
5
+ :configured_data,
6
+ :configured_id,
7
+ :configured_size,
8
+ :configured_checked
9
+ ].freeze
10
+
11
+ def initialize(classname: default_configuration,
12
+ data: default_configuration,
13
+ id: default_configuration,
14
+ size: default_configuration,
15
+ checked: default_configuration)
16
+ self.configured_classname = classname
17
+ self.configured_data = data
18
+ self.configured_id = id
19
+ self.configured_size = size
20
+ self.configured_checked = checked
21
+ end
22
+
23
+ def size
24
+ size_options = %w[sm md]
25
+ one_of_value(configured_size, size_options, "md")
26
+ end
27
+
28
+ def checked
29
+ true_value(configured_checked, "checked='true'", "")
30
+ end
31
+
32
+ def checked_class
33
+ checked ? "on" : "off"
34
+ end
35
+
36
+ def kit_class
37
+ toggle_options = [
38
+ "pb_toggle",
39
+ size,
40
+ checked_class
41
+ ]
42
+ toggle_options.join("_")
43
+ end
44
+
45
+ def to_partial_path
46
+ "pb_toggle/toggle"
47
+ end
48
+
49
+ private
50
+
51
+ DEFAULT = Object.new
52
+ private_constant :DEFAULT
53
+ def default_configuration
54
+ DEFAULT
55
+ end
56
+ attr_accessor(*PROPS)
57
+ end
58
+ end
59
+ end
@@ -28,8 +28,10 @@ class KitGenerator < Rails::Generators::NamedBase
28
28
  @kit_class_val.push("self.configured_#{key.parameterize.underscore} = #{key.parameterize.underscore}")
29
29
  end
30
30
 
31
+ full_kit_directory = "app/pb_kits/playbook/pb_#{@kit_name_underscore}"
32
+
31
33
  # Check if kit already exists =======================
32
- if File.directory?("app/pb_kits/playbook/pb_#{@kit_name_underscore}")
34
+ if File.directory?(full_kit_directory)
33
35
  say_status "#{@kit_name_capitalize} kit already exists.",
34
36
  "Please choose another name or manually make changes to the existing kit.",
35
37
  :red
@@ -44,7 +46,7 @@ class KitGenerator < Rails::Generators::NamedBase
44
46
  :green
45
47
 
46
48
  # Generate SCSS files ==============================
47
- template "kit_scss.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/_#{@kit_name_underscore}.scss"
49
+ template "kit_scss.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.scss"
48
50
  open("app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss", "a") do |f|
49
51
  f.puts "@" + "import " + "\'" + "../../pb_#{@kit_name_underscore}/#{@kit_name_underscore}" + "\';"
50
52
  end
@@ -55,9 +57,9 @@ class KitGenerator < Rails::Generators::NamedBase
55
57
  # Ask user if Rails version should be generated ======
56
58
  if yes?("Create RAILS #{@kit_name_underscore} kit? (y/N)")
57
59
  @rails_kit = true
58
- template "kit_ruby.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/#{@kit_name_underscore}.rb"
59
- template "kit_html.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/_#{@kit_name_underscore}.html.erb"
60
- template "kit_example_rails.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/docs/_#{@kit_name_underscore}_default.html.erb"
60
+ template "kit_ruby.erb", "#{full_kit_directory}/#{@kit_name_underscore}.rb"
61
+ template "kit_html.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.html.erb"
62
+ template "kit_example_rails.erb", "#{full_kit_directory}/docs/_#{@kit_name_underscore}_default.html.erb"
61
63
  say_status "complete",
62
64
  "#{@kit_name_capitalize} rails kit successfully created.",
63
65
  :green
@@ -66,9 +68,9 @@ class KitGenerator < Rails::Generators::NamedBase
66
68
  # Ask user if React version should be generated ======
67
69
  if yes?("Create REACT #{@kit_name_pascal} kit? (y/N)")
68
70
  @react_kit = true
69
- template "kit_jsx.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/_#{@kit_name_underscore}.jsx"
70
- template "kit_example_react.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/docs/_#{@kit_name_underscore}_default.jsx"
71
- template "kit_js.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/docs/index.js"
71
+ template "kit_jsx.erb", "#{full_kit_directory}/_#{@kit_name_underscore}.jsx"
72
+ template "kit_example_react.erb", "#{full_kit_directory}/docs/_#{@kit_name_underscore}_default.jsx"
73
+ template "kit_js.erb", "#{full_kit_directory}/docs/index.js"
72
74
  template "kit_pack.erb", "app/pb_kits/playbook/packs/pb_#{@kit_name_underscore}.js"
73
75
 
74
76
  # Import in all kits.js =========================
@@ -87,7 +89,9 @@ class KitGenerator < Rails::Generators::NamedBase
87
89
  end
88
90
 
89
91
  # Create kit example.yml
90
- template "kit_example_yml.erb", "app/pb_kits/playbook/pb_#{@kit_name_underscore}/docs/example.yml"
92
+ template "kit_example_yml.erb", "#{full_kit_directory}/docs/example.yml"
93
+
94
+ `rubocop --safe-auto-correct #{full_kit_directory}`
91
95
  end
92
96
  end
93
97
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Playbook
2
4
  module Pb<%= @kit_name_pascal %>
3
5
  class <%= @kit_name_pascal %> < Playbook::PbKit::Base
4
- PROPS = [<%= @kit_props.map{|key,val| ":configured_#{key.parameterize.underscore}".to_sym }.join(",\n\t\t\t\t\t") %>].freeze
6
+ PROPS = %i[<%= @kit_props.map{|key,val| "configured_#{key.parameterize.underscore}".to_sym }.join("\n\t\t\t\t\t") %>].freeze
5
7
 
6
8
  def initialize(<%= @kit_class_init.join(",\n\t\t\t\t\t\t\t") %>)
7
9
  <%= @kit_class_val.join("\n\t\t\t\t") %>
@@ -14,6 +14,7 @@ module Playbook
14
14
 
15
15
  config.assets.paths ||= []
16
16
  config.assets.paths << "#{Gem.loaded_specs['playbook_ui'].full_gem_path}/fonts"
17
+ config.assets.paths << "#{Gem.loaded_specs['playbook_ui'].full_gem_path}/app/pb_kits/playbook/pb_*"
17
18
 
18
19
  config.sass.load_paths ||= []
19
20
  config.sass.load_paths << "#{Gem.loaded_specs['playbook_ui'].full_gem_path}/app/pb_kits/playbook"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "2.8.3".freeze
4
+ VERSION = "2.8.4".freeze
5
5
  end
@@ -0,0 +1,69 @@
1
+ namespace :pb_release do
2
+
3
+ desc "Update the version number in preparation to release"
4
+ task version: :environment do
5
+ old_version = Playbook::VERSION
6
+ new_version = ''
7
+ STDOUT.puts "What would you like the next release number to be? Currently #{old_version}"
8
+ new_version = STDIN.gets.chomp
9
+
10
+ puts "Ok great, let's make version #{new_version}"
11
+ puts "\n\n"
12
+
13
+ # Update package.json
14
+ package = File.read("package.json")
15
+ new_package = package.gsub(/"version": "#{old_version}",/, "\"version\": \"#{new_version}\",")
16
+ File.open("package.json", "w") {|file| file.puts new_package }
17
+ puts "Updated package.json"
18
+
19
+ # Update version.rb
20
+ version_rb = File.read("lib/playbook/version.rb")
21
+ new_version_rb = version_rb.gsub(/VERSION = "#{old_version}".freeze/, "VERSION = \"#{new_version}\".freeze")
22
+ File.open("lib/playbook/version.rb", "w") {|file| file.puts new_version_rb }
23
+ puts "Updated lib/playbook/version.rb"
24
+
25
+ # Update gemfile.lock
26
+ gemfile = File.read("gemfile.lock")
27
+ new_gemfile = gemfile.gsub(/playbook_ui \(#{Regexp.escape(old_version)}\)/, "playbook_ui (#{new_version})")
28
+ File.open("gemfile.lock", "w") {|file| file.puts new_gemfile }
29
+ puts "Updated gemfile.lock"
30
+ puts "\n\n"
31
+
32
+ puts "Commit your changes and create a PR to merge to master"
33
+ end
34
+
35
+ desc "Publish to RubyGems, NPM, and Create a Tag"
36
+ task push: :environment do
37
+ version = Playbook::VERSION
38
+ puts "You about to release version #{version}. Is that correct? (y/N)"
39
+ input = STDIN.gets.chomp
40
+ raise Nope unless input.downcase == "y"
41
+
42
+ # RubyGems
43
+ puts "\nCreating Gem..."
44
+ `gem build playbook_ui.gemspec`
45
+ puts "\nPushing to RubyGems..."
46
+ `gem push playbook_ui-#{version}.gem`
47
+ puts "\nPushed to RubyGems. Now lets clean up..."
48
+ `rm -rf playbook_ui-#{version}.gem`
49
+
50
+ # NPM
51
+ puts "\nPushing to NPM..."
52
+ `npm publish`
53
+
54
+ # Tags
55
+ puts "\nPushed to NPM. Now lets create a tag..."
56
+ description = ''
57
+ puts "\nWrite a brief tag release description. You can edit this later on GitHub."
58
+ description = STDIN.gets.chomp
59
+ puts "\nCreating Tag..."
60
+ `git tag -a #{version} -m "#{description}"`
61
+ puts "\nPushing Tag to GitHub..."
62
+ `git push origin #{version}`
63
+
64
+ puts "\n\n"
65
+ puts "Complete! Don't forget to add your release notes https://github.com/powerhome/playbook/releases/tag/#{version}"
66
+
67
+ end
68
+
69
+ end