playbook_ui 3.5.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -1
  3. data/app/pb_kits/playbook/index.js +2 -1
  4. data/app/pb_kits/playbook/kits/pb_popover.js +4 -0
  5. data/app/pb_kits/playbook/packs/examples.js +5 -3
  6. data/app/pb_kits/playbook/packs/kits.js +2 -0
  7. data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +1 -1
  8. data/app/pb_kits/playbook/packs/site_styles/docs/_markdown.scss +1 -1
  9. data/app/pb_kits/playbook/packs/site_styles/docs/_spacing_tokens.scss +1 -1
  10. data/app/pb_kits/playbook/pb_card/card.rb +1 -6
  11. data/app/pb_kits/playbook/pb_currency/_currency.html.erb +6 -6
  12. data/app/pb_kits/playbook/pb_currency/_currency.jsx +38 -29
  13. data/app/pb_kits/playbook/pb_currency/_currency.scss +29 -29
  14. data/app/pb_kits/playbook/pb_currency/currency.rb +67 -75
  15. data/app/pb_kits/playbook/pb_currency/docs/_currency_default.jsx +3 -3
  16. data/app/pb_kits/playbook/pb_currency/docs/_currency_large.html.erb +7 -12
  17. data/app/pb_kits/playbook/pb_currency/docs/_currency_large.jsx +4 -4
  18. data/app/pb_kits/playbook/pb_currency/docs/_currency_small.html.erb +7 -12
  19. data/app/pb_kits/playbook/pb_form/_form_form_with.html.erb +10 -0
  20. data/app/pb_kits/playbook/pb_form/_form_simple_form.html.erb +10 -0
  21. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -1
  22. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +35 -0
  23. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  24. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +57 -0
  25. data/app/pb_kits/playbook/pb_form/docs/example.yml +2 -0
  26. data/app/pb_kits/playbook/pb_form/form.rb +1 -0
  27. data/app/pb_kits/playbook/pb_form/form/form_with_form.rb +1 -0
  28. data/app/pb_kits/playbook/pb_form/form/simple_form_form.rb +1 -0
  29. data/app/pb_kits/playbook/pb_form/form_builder/collection_select_field.rb +2 -0
  30. data/app/pb_kits/playbook/pb_form/form_builder/form_field_builder.rb +10 -1
  31. data/app/pb_kits/playbook/pb_form/form_builder/select_field.rb +2 -0
  32. data/app/pb_kits/playbook/pb_form/pb_form_validation.js +84 -0
  33. data/app/pb_kits/playbook/pb_popover/_popover.html.erb +29 -0
  34. data/app/pb_kits/playbook/pb_popover/_popover.js +54 -0
  35. data/app/pb_kits/playbook/pb_popover/_popover.jsx +23 -0
  36. data/app/pb_kits/playbook/pb_popover/_popover.scss +8 -0
  37. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.html.erb +8 -0
  38. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +10 -0
  39. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.html.erb +12 -0
  40. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.html.erb +4 -0
  41. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_circle.html.erb +5 -0
  42. data/app/pb_kits/playbook/pb_popover/docs/example.yml +8 -0
  43. data/app/pb_kits/playbook/pb_popover/docs/index.js +1 -0
  44. data/app/pb_kits/playbook/pb_popover/popover.rb +23 -0
  45. data/app/pb_kits/playbook/pb_select/_select.html.erb +1 -1
  46. data/app/pb_kits/playbook/pb_select/_select.scss +18 -17
  47. data/app/pb_kits/playbook/pb_select/select.rb +5 -1
  48. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
  49. data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +2 -0
  50. data/app/pb_kits/playbook/pb_text_input/text_input.rb +16 -0
  51. data/app/pb_kits/playbook/plugins/{pb_chart_plugin.js → pb_chart.js} +0 -0
  52. data/app/pb_kits/playbook/tokens/_colors.scss +2 -13
  53. data/app/pb_kits/playbook/tokens/_shadows.scss +3 -15
  54. data/app/pb_kits/playbook/vendor.js +8 -1
  55. data/app/views/playbook/pages/utilities.html.slim +1 -1
  56. data/lib/playbook/version.rb +1 -1
  57. metadata +19 -3
@@ -0,0 +1,54 @@
1
+ import { createPopper } from '@popperjs/core'
2
+
3
+ class Popover {
4
+ constructor(
5
+ triggerElement = '#triggerElement',
6
+ tooltip = '#tooltip',
7
+ placement = 'left',
8
+ offset = ''
9
+ ) {
10
+ this.triggerElement = triggerElement
11
+ this.tooltip = tooltip
12
+ this.placement = placement
13
+ this.offset = offset
14
+ this.setupPopper()
15
+ }
16
+
17
+ //getters
18
+ get popoverTriggerElement() {
19
+ return document.querySelector(this.triggerElement)
20
+ }
21
+ get popoverTooltip() {
22
+ return document.querySelector(this.tooltip)
23
+ }
24
+ get popoverPlacement() {
25
+ return this.placement
26
+ }
27
+ get popoverOffset() {
28
+ return this.offset
29
+ }
30
+
31
+ attachEvents() {
32
+ this.popoverTriggerElement.addEventListener('click', () => {
33
+ this.popoverTooltip.classList.toggle('show')
34
+ })
35
+ }
36
+
37
+ setupPopper() {
38
+ createPopper(this.popoverTriggerElement, this.popoverTooltip, {
39
+ placement: this.popoverPlacement,
40
+ modifiers: [
41
+ {
42
+ name: 'offset',
43
+ options: {
44
+ offset: this.offset,
45
+ },
46
+ },
47
+ ],
48
+ })
49
+
50
+ this.attachEvents()
51
+ }
52
+ }
53
+
54
+ export default Popover
@@ -0,0 +1,23 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+
5
+ type PopoverProps = {
6
+ className?: String,
7
+ data?: String,
8
+ id?: String,
9
+ }
10
+
11
+ const Popover = ({
12
+ className,
13
+ data,
14
+ id,
15
+ }: PopoverProps) => (
16
+ <div>
17
+ <p>{`className: ${className}`}</p>
18
+ <p>{`data: ${data}`}</p>
19
+ <p>{`id: ${id}`}</p>
20
+ </div>
21
+ )
22
+
23
+ export default Popover
@@ -0,0 +1,8 @@
1
+ [class^="pb_popover_kit"] {
2
+ .popover_tooltip {
3
+ opacity: 0;
4
+ &.show {
5
+ opacity: 1;
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ <span id='regular-popover-1'>Click Me.</span>
2
+ <%= pb_rails("popover", props: {trigger_element_id: "regular-popover-1", tooltip_id: "tooltip-1", position: 'right', offset: false }) do %>
3
+ Whoa. I'm a popover.
4
+ <% end %>
5
+
6
+
7
+
8
+
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import { Popover } from '../../'
3
+
4
+ const PopoverDefault = () => (
5
+ <div>
6
+ <Popover />
7
+ </div>
8
+ )
9
+
10
+ export default PopoverDefault
@@ -0,0 +1,12 @@
1
+ <div style="height: 400px; text-align: center;">
2
+ <%= pb_rails("button", props: { text: "Button Secondary", variant: "secondary", id: 'list' }) %>
3
+ <%= pb_rails("popover", props: {trigger_element_id: "list", tooltip_id: "list-tooltip", position: 'bottom', offset: true }) do %>
4
+ <%= pb_rails("list", props: {ordered: false, dark: false, borderless: false}) do %>
5
+ <%= pb_rails("list/item") do %><a>Popularity</a><% end %>
6
+ <%= pb_rails("list/item") do %><a>Title</a><% end %>
7
+ <%= pb_rails("list/item") do %><a>Duration</a><% end %>
8
+ <%= pb_rails("list/item") do %><a>Date Started</a><% end %>
9
+ <%= pb_rails("list/item") do %><a>Date Ended </a><% end %>
10
+ <% end %>
11
+ <% end %>
12
+ </div>
@@ -0,0 +1,4 @@
1
+ <%= pb_rails("button", props: { text: "Button Secondary", variant: "secondary", id: 'regular-popover-3' }) %>
2
+ <%= pb_rails("popover", props: {trigger_element_id: "regular-popover-3", tooltip_id: "tooltip-3", position: 'bottom', offset: true }) do %>
3
+ Whoa. I'm a popover.
4
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%# Future release %>
2
+ <%= pb_rails("circle_icon_button", props: {variant: "primary", icon: "plus"}) %>
3
+ <%= pb_rails("popover", props: {trigger_element_id: "regular-popover-2", tooltip_id: "tooltip-2", position: 'right', offset: false }) do %>
4
+ Hello popover.
5
+ <% end %>
@@ -0,0 +1,8 @@
1
+ examples:
2
+ rails:
3
+ - popover_default: Default
4
+ - popover_with_button: With Button
5
+ - popover_list: With any children
6
+
7
+ react:
8
+ - popover_default: Default
@@ -0,0 +1 @@
1
+ export { default as PopoverDefault } from './_popover_default.jsx'
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbPopover
5
+ class Popover
6
+ include Playbook::Props
7
+ partial "pb_popover/popover"
8
+
9
+ prop :position
10
+ prop :trigger_element_id
11
+ prop :tooltip_id
12
+ prop :offset, type: Playbook::Props::Boolean, default: false
13
+
14
+ def popover_offset
15
+ offset ? [0, 8] : [0, 0]
16
+ end
17
+
18
+ def classname
19
+ generate_classname("pb_popover_kit")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -8,7 +8,7 @@
8
8
  <%= pb_rails("caption", props: { text: object.label, dark: object.dark, }) %>
9
9
  </label>
10
10
  <% end %>
11
- <label class="pb_select_kit_wrapper" for="<%= object.name %>">
11
+ <label class="<%= object.select_wrapper_class %>" for="<%= object.name %>">
12
12
  <% if object.children %>
13
13
  <%= capture(&object.children) %>
14
14
  <%= pb_rails("body", props: { dark: object.dark, status: "negative", text: object.error }) %>
@@ -29,6 +29,17 @@
29
29
  .pb_select_kit_wrapper {
30
30
  position: relative;
31
31
  display: block;
32
+ &.error {
33
+ [class*=pb_body_kit] {
34
+ margin-top: $space_xs / 2;
35
+ }
36
+ > select:first-child {
37
+ border-color: $error;
38
+ }
39
+ .pb_select_kit_caret {
40
+ top: 35%;
41
+ }
42
+ }
32
43
  }
33
44
  .pb_select_kit_caret {
34
45
  position: absolute;
@@ -53,25 +64,15 @@
53
64
  .pb_select_kit_caret {
54
65
  color: $white;
55
66
  }
56
- &.error {
57
- .pb_select_kit_wrapper {
58
- > select:first-child {
59
- border-color: $error_dark;
60
- }
61
- }
62
- }
63
- }
64
- &.error {
65
67
  .pb_select_kit_wrapper {
66
- [class*=pb_body_kit] {
67
- margin-top: $space_xs / 2;
68
- }
69
- > select:first-child {
70
- border-color: $error;
71
- }
72
- .pb_select_kit_caret {
73
- top: 35%;
68
+ &.error {
69
+ .pb_select_kit_wrapper {
70
+ > select:first-child {
71
+ border-color: $error_dark;
72
+ }
73
+ }
74
74
  }
75
75
  }
76
76
  }
77
+
77
78
  }
@@ -24,7 +24,11 @@ module Playbook
24
24
  prop :required, type: Playbook::Props::Boolean, default: false
25
25
 
26
26
  def classname
27
- generate_classname("pb_select", dark_class) + error_class
27
+ generate_classname("pb_select", dark_class)
28
+ end
29
+
30
+ def select_wrapper_class
31
+ "pb_select_kit_wrapper" + error_class
28
32
  end
29
33
 
30
34
  def options_to_array
@@ -19,7 +19,7 @@ $pb_selectable_card_border: 2px;
19
19
  cursor: pointer;
20
20
 
21
21
  &:hover {
22
- box-shadow: $shadow-default;
22
+ box-shadow: $shadow-deep;
23
23
  border-color: $slate;
24
24
  }
25
25
 
@@ -16,7 +16,9 @@
16
16
  class: object.classname,
17
17
  data: object.data,
18
18
  name: object.name,
19
+ pattern: object.validation_pattern,
19
20
  placeholder: object.placeholder,
21
+ required: object.required,
20
22
  type: object.type,
21
23
  value: object.value) %>
22
24
  <% if object.error %>
@@ -18,12 +18,28 @@ module Playbook
18
18
  prop :required, type: Playbook::Props::Boolean,
19
19
  default: false
20
20
  prop :type, default: "text"
21
+ prop :validation, type: Playbook::Props::Hash,
22
+ default: {}
21
23
  prop :value
22
24
 
23
25
  def classname
24
26
  generate_classname("pb_text_input_kit", dark_class) + error_class
25
27
  end
26
28
 
29
+ def validation_message
30
+ validation[:message] || ""
31
+ end
32
+
33
+ def validation_pattern
34
+ validation[:pattern] || ""
35
+ end
36
+
37
+ def data
38
+ fields = {}
39
+ fields[:message] = validation_message unless validation_message.blank?
40
+ fields
41
+ end
42
+
27
43
  private
28
44
 
29
45
  def error_class
@@ -103,20 +103,9 @@ $border_colors: (
103
103
  );
104
104
 
105
105
  // Shadow colors ----------------------
106
- $shadow_light: rgba(#3C6AAC, $opacity_2);
107
-
108
- /*
109
- DEPRECATED - DO NOT USE!
110
- This targed to be removed in release v4.0.0.
111
- [https://github.com/powerhome/playbook/issues/550]
112
- */
113
- $shadow_dark: rgba(#3C6AAC, $opacity_2);
114
-
115
- /* END DEPRECATION */
116
-
106
+ $shadow: rgba(#3C6AAC, $opacity_2);
117
107
  $shadow_colors: (
118
- shadow_light: $shadow_light,
119
- shadow_dark: $shadow_dark
108
+ shadow: $shadow,
120
109
  );
121
110
 
122
111
  // Text colors ------------------------
@@ -2,23 +2,11 @@
2
2
  @import "opacity";
3
3
 
4
4
  $shadow_none: 0 0 0 0 transparent;
5
-
6
- /*
7
- DEPRECATED - DO NOT USE!
8
- This targed to be removed in release v4.0.0.
9
- [https://github.com/powerhome/playbook/issues/550]
10
- */
11
- $shadow_shallow: 0 1px 1px 0 $shadow_light;
12
- $shadow_default: 0 1px 5px 0 $shadow_light;
13
- /* END DEPRECATED */
14
-
15
- $shadow_deep: 0 4px 10px 0 rgba($shadow_light, 0.16);
16
- $shadow_deeper: 0 12px 28px 0 rgba($shadow_light, 0.18);
17
- $shadow_deepest: 0 30px 38px 4px $shadow_light, 0 2px 14px 4px rgba($shadow_light, 0.1);
5
+ $shadow_deep: 0 4px 10px 0 rgba($shadow, 0.16);
6
+ $shadow_deeper: 0 12px 28px 0 rgba($shadow, 0.18);
7
+ $shadow_deepest: 0 30px 38px 4px $shadow, 0 2px 14px 4px rgba($shadow, 0.1);
18
8
  $box_shadows: (
19
9
  shadow_none: $shadow_none,
20
- shadow_shallow: $shadow_shallow,
21
- shadow_default: $shadow_default,
22
10
  shadow_deep: $shadow_deep,
23
11
  shadow_deeper: $shadow_deeper,
24
12
  shadow_deepest: $shadow_deepest
@@ -1,6 +1,13 @@
1
1
  // Charts
2
- import pbChart from './plugins/pb_chart_plugin'
2
+ import pbChart from './plugins/pb_chart'
3
3
  window.pbChart = pbChart
4
4
 
5
+ // Forms
6
+ import './pb_form/pb_form_validation'
7
+
5
8
  // Lazy image loading
6
9
  import 'lazysizes'
10
+
11
+ // Popovers
12
+ import Popover from './pb_popover/_popover'
13
+ window.Popover = Popover
@@ -74,7 +74,7 @@ br
74
74
  // Shadow --------------------------
75
75
  = render :partial => "playbook/pages/utilities/pb_doc_color",
76
76
  locals:{ title: "Shadow",
77
- colors: [{name: "Shadow Light", variable: "shadow_light"}]}
77
+ colors: [{name: "Shadow", variable: "shadow"}]}
78
78
 
79
79
  // Products ------------------------
80
80
  = render :partial => "playbook/pages/utilities/pb_doc_color",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "3.5.0"
4
+ VERSION = "4.0.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-17 00:00:00.000000000 Z
12
+ date: 2020-01-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -438,6 +438,7 @@ files:
438
438
  - app/pb_kits/playbook/kits/pb_person.js
439
439
  - app/pb_kits/playbook/kits/pb_person_contact.js
440
440
  - app/pb_kits/playbook/kits/pb_pill.js
441
+ - app/pb_kits/playbook/kits/pb_popover.js
441
442
  - app/pb_kits/playbook/kits/pb_progress_pills.js
442
443
  - app/pb_kits/playbook/kits/pb_progress_simple.js
443
444
  - app/pb_kits/playbook/kits/pb_radio.js
@@ -705,7 +706,9 @@ files:
705
706
  - app/pb_kits/playbook/pb_form/_form_form_with.html.erb
706
707
  - app/pb_kits/playbook/pb_form/_form_simple_form.html.erb
707
708
  - app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb
709
+ - app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb
708
710
  - app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb
711
+ - app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb
709
712
  - app/pb_kits/playbook/pb_form/docs/example.yml
710
713
  - app/pb_kits/playbook/pb_form/form.rb
711
714
  - app/pb_kits/playbook/pb_form/form/form_with_form.rb
@@ -717,6 +720,7 @@ files:
717
720
  - app/pb_kits/playbook/pb_form/form_builder/form_with_form_builder.rb
718
721
  - app/pb_kits/playbook/pb_form/form_builder/select_field.rb
719
722
  - app/pb_kits/playbook/pb_form/form_builder/simple_form_builder.rb
723
+ - app/pb_kits/playbook/pb_form/pb_form_validation.js
720
724
  - app/pb_kits/playbook/pb_hashtag/_hashtag.html.erb
721
725
  - app/pb_kits/playbook/pb_hashtag/_hashtag.jsx
722
726
  - app/pb_kits/playbook/pb_hashtag/_hashtag.scss
@@ -966,6 +970,18 @@ files:
966
970
  - app/pb_kits/playbook/pb_pill/docs/example.yml
967
971
  - app/pb_kits/playbook/pb_pill/docs/index.js
968
972
  - app/pb_kits/playbook/pb_pill/pill.rb
973
+ - app/pb_kits/playbook/pb_popover/_popover.html.erb
974
+ - app/pb_kits/playbook/pb_popover/_popover.js
975
+ - app/pb_kits/playbook/pb_popover/_popover.jsx
976
+ - app/pb_kits/playbook/pb_popover/_popover.scss
977
+ - app/pb_kits/playbook/pb_popover/docs/_popover_default.html.erb
978
+ - app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx
979
+ - app/pb_kits/playbook/pb_popover/docs/_popover_list.html.erb
980
+ - app/pb_kits/playbook/pb_popover/docs/_popover_with_button.html.erb
981
+ - app/pb_kits/playbook/pb_popover/docs/_popover_with_circle.html.erb
982
+ - app/pb_kits/playbook/pb_popover/docs/example.yml
983
+ - app/pb_kits/playbook/pb_popover/docs/index.js
984
+ - app/pb_kits/playbook/pb_popover/popover.rb
969
985
  - app/pb_kits/playbook/pb_progress_pills/_progress_pills.html.erb
970
986
  - app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx
971
987
  - app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss
@@ -1262,7 +1278,7 @@ files:
1262
1278
  - app/pb_kits/playbook/pb_user_badge/docs/example.yml
1263
1279
  - app/pb_kits/playbook/pb_user_badge/docs/index.js
1264
1280
  - app/pb_kits/playbook/pb_user_badge/user_badge.rb
1265
- - app/pb_kits/playbook/plugins/pb_chart_plugin.js
1281
+ - app/pb_kits/playbook/plugins/pb_chart.js
1266
1282
  - app/pb_kits/playbook/props.rb
1267
1283
  - app/pb_kits/playbook/props/array.rb
1268
1284
  - app/pb_kits/playbook/props/base.rb