playbook_ui 8.4.0.alpha.dependencies.2 → 9.2.2.pre.alpha.margin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -18
  3. data/app/pb_kits/playbook/data/menu.yml +2 -3
  4. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -3
  5. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +7 -0
  6. data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +23 -24
  7. data/app/pb_kits/playbook/pb_form/docs/_description.md +2 -6
  8. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -1
  9. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -4
  10. data/app/pb_kits/playbook/pb_form/docs/example.yml +2 -4
  11. data/app/pb_kits/playbook/pb_form/form.rb +14 -20
  12. data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_highlight/highlight.html.erb +3 -1
  14. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.jsx +3 -0
  15. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.html.erb +1 -0
  16. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +1 -1
  17. data/app/pb_kits/playbook/pb_progress_pills/docs/_description.md +3 -1
  18. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -1
  19. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +1 -0
  20. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb +1 -1
  21. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +1 -0
  22. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +5 -0
  24. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +69 -54
  25. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +2 -1
  26. data/app/pb_kits/playbook/pb_select/_select.jsx +10 -1
  27. data/app/pb_kits/playbook/pb_select/_select.scss +35 -28
  28. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select.jsx +4 -1
  29. data/app/pb_kits/playbook/pb_select/select.rb +5 -1
  30. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
  31. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_input.jsx +145 -135
  32. data/app/pb_kits/playbook/pb_stat_value/_stat_value.jsx +2 -0
  33. data/app/pb_kits/playbook/pb_stat_value/stat_value.html.erb +2 -0
  34. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +17 -18
  35. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +29 -19
  36. data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +9 -4
  37. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_character_counter.jsx +5 -1
  38. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_custom.jsx +4 -2
  39. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +20 -14
  40. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +1 -0
  41. data/app/pb_kits/playbook/tokens/_colors.scss +1 -1
  42. data/lib/playbook.rb +4 -1
  43. data/lib/playbook/forms.rb +3 -0
  44. data/lib/playbook/forms/builder.rb +31 -0
  45. data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/action_area.rb +2 -2
  46. data/lib/playbook/forms/builder/checkbox_field.rb +32 -0
  47. data/lib/playbook/forms/builder/collection_select_field.rb +19 -0
  48. data/lib/playbook/forms/builder/date_picker_field.rb +37 -0
  49. data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/form_field_builder.rb +2 -2
  50. data/lib/playbook/forms/builder/select_field.rb +19 -0
  51. data/lib/playbook/forms/builder/typeahead_field.rb +12 -0
  52. data/lib/playbook/pb_forms_helper.rb +41 -0
  53. data/lib/playbook/pb_kit_helper.rb +2 -0
  54. data/lib/playbook/props/base.rb +1 -1
  55. data/lib/playbook/version.rb +1 -2
  56. metadata +88 -59
  57. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +0 -60
  58. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +0 -61
  59. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.md +0 -1
  60. data/app/pb_kits/playbook/pb_form/form_builder.rb +0 -31
  61. data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +0 -34
  62. data/app/pb_kits/playbook/pb_form/form_builder/collection_select_field.rb +0 -21
  63. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +0 -39
  64. data/app/pb_kits/playbook/pb_form/form_builder/select_field.rb +0 -21
  65. data/app/pb_kits/playbook/pb_form/form_builder/typeahead_field.rb +0 -14
  66. data/app/pb_kits/playbook/pb_form/form_with.html.erb +0 -11
  67. data/app/pb_kits/playbook/pb_form/form_with.rb +0 -40
  68. data/app/pb_kits/playbook/pb_form/simple_form.html.erb +0 -11
  69. data/app/pb_kits/playbook/pb_form/simple_form.rb +0 -67
@@ -25,6 +25,7 @@ const StatValue = (props: StatValueProps) => {
25
25
  return (
26
26
  <Title
27
27
  size={1}
28
+ tag="span"
28
29
  text={`${value}`}
29
30
  />
30
31
  )
@@ -36,6 +37,7 @@ const StatValue = (props: StatValueProps) => {
36
37
  return (
37
38
  <Title
38
39
  size={3}
40
+ tag="span"
39
41
  text={unit}
40
42
  />
41
43
  )
@@ -6,10 +6,12 @@
6
6
  <%= pb_rails "title", props: {
7
7
  classname: "pb_stat_value_kit",
8
8
  size: 1,
9
+ tag: "span",
9
10
  text: object.formatted_value } %>
10
11
  &nbsp;
11
12
  <%= pb_rails "title", props: {
12
13
  classname: "pb_stat_value_kit",
14
+ tag: "span",
13
15
  size: 3,
14
16
  text: object.unit } %>
15
17
  </div>
@@ -8,59 +8,59 @@
8
8
  margin-bottom: $space_xs;
9
9
  display: block;
10
10
  }
11
-
12
11
  .text_input_wrapper {
13
12
  margin-bottom: $space_sm;
14
13
  display: block;
15
-
16
14
  input::placeholder,
17
15
  .text_input .placeholder {
18
16
  @include pb_body_light;
19
17
  }
20
-
21
18
  input,
22
19
  .text_input {
20
+ max-height: 45px;
23
21
  @include pb_textarea_light;
24
- @include pb_title_4;
25
22
  overflow: hidden;
26
23
  }
27
-
24
+ input:hover,
25
+ .text_input:hover{
26
+ background-color: rgba($focus_input_light,$opacity_5);
27
+ }
28
28
  input:focus,
29
29
  .text_input:focus,
30
30
  input:-webkit-autofill:focus,
31
31
  .text_input:-webkit-autofill:focus {
32
32
  @include pb_textarea_focus;
33
- -webkit-box-shadow: 0 0 0px 1000px $focus_input_light inset;
34
- transition: background-color 5000s ease-in-out 0s;
33
+ @include transition_default;
34
+ border-color: $primary;
35
+ background-color: rgba($focus_input_light,$opacity_5);
35
36
  }
36
37
  }
37
-
38
38
  &.dark {
39
39
  .text_input_wrapper {
40
40
  margin-bottom: 1rem;
41
-
42
41
  input::placeholder,
43
42
  .text_input .placeholder {
44
43
  @include pb_body_light_dark;
45
44
  }
46
-
47
45
  input, .text_input {
48
46
  @include pb_textarea_dark;
49
- @include pb_title_4;
50
- @include pb_title_dark;
47
+ @include pb_body_dark;
51
48
  overflow: hidden;
49
+ background-color: rgba($white,$opacity_1);
50
+ border-color: rgba($white, 0.15);
51
+ }
52
+ input:hover,
53
+ .text_input:hover{
54
+ background-color: rgba($white, 0.15);
52
55
  }
53
-
54
56
  input:focus,
55
57
  .text_input:focus,
56
58
  input:-webkit-autofill:focus,
57
59
  .text_input:-webkit-autofill:focus {
58
- @include pb_textarea_focus_dark;
59
- -webkit-box-shadow: 0 0 0px 1000px $focus_input_dark inset;
60
- transition: background-color 5000s ease-in-out 0s;
60
+ border-color: $active_dark;
61
+ background-color: rgba($white, 0.025);
61
62
  }
62
63
  }
63
-
64
64
  &.error {
65
65
  .text_input_wrapper {
66
66
  input, .text_input {
@@ -69,7 +69,6 @@
69
69
  }
70
70
  }
71
71
  }
72
-
73
72
  &.error {
74
73
  .text_input_wrapper {
75
74
  [class*=pb_body_kit] {
@@ -5,28 +5,30 @@
5
5
 
6
6
  [class^=pb_textarea_kit] {
7
7
  margin-bottom: $space_sm;
8
+
8
9
  [class^=pb_caption_kit] {
9
10
  margin-bottom: $space_xs;
10
11
  display: block;
11
12
  }
12
- textarea::placeholder {
13
+ textarea::placeholder,
14
+ .pb_text_area_kit::placeholder {
13
15
  @include pb_body_light;
14
16
  }
15
- > textarea {
17
+ textarea,
18
+ .pb_text_area_kit {
16
19
  @include pb_textarea_light;
17
20
  }
18
- textarea:focus {
21
+ textarea:focus,
22
+ .pb_text_area_kit:focus {
23
+ border-color: $primary;
19
24
  @include pb_textarea_focus_light;
25
+ @include transition_default;
20
26
  }
21
-
22
- &.error {
23
- [class*=pb_body_kit] {
24
- margin-top: $space_xs / 2;
25
- }
26
- > textarea {
27
- border-color: $error;
28
- }
27
+ textarea:hover,
28
+ .pb_text_area_kit:hover {
29
+ background-color: rgba($focus_input_light,$opacity_5);
29
30
  }
31
+
30
32
  &.resize_both > textarea {
31
33
  resize: both;
32
34
  overflow: auto;
@@ -44,16 +46,24 @@
44
46
  textarea::placeholder {
45
47
  @include pb_body_light_dark;
46
48
  }
47
- > textarea {
48
- @include pb_textarea_dark;
49
+ textarea,
50
+ .pb_text_area_kit {
51
+ @include pb_body_dark;
52
+ background-color: rgba($white, $opacity_1);
53
+ border-color: rgba($white, 0.15);
49
54
  }
50
- textarea:focus {
51
- @include pb_textarea_focus_dark;
55
+ textarea:focus, .pb_text_area_kit:focus {
56
+ border-color: $active_dark;
57
+ background-color: rgba($white, 0.025);
52
58
  }
53
- &.error {
54
- > textarea {
55
- border-color: $error_dark;
56
- }
59
+ }
60
+
61
+ &.error {
62
+ [class*=pb_body_kit] {
63
+ margin-top: $space_xs / 2;
64
+ }
65
+ textarea {
66
+ border-color: $error;
57
67
  }
58
68
  }
59
69
 
@@ -22,7 +22,7 @@
22
22
  overflow-wrap: break-word;
23
23
  resize: none;
24
24
  transition-property: box-shadow, color, background-color;
25
- transition-duration: .24s;
25
+ transition-duration: .3s;
26
26
  transition-timing-function: $bezier;
27
27
  &[type=number] {
28
28
  -moz-appearance:textfield;
@@ -40,9 +40,9 @@
40
40
  &:-webkit-autofill,
41
41
  &:-webkit-autofill:hover,
42
42
  &:-internal-autofill-selected {
43
- -webkit-text-fill-color: $text_color;
44
- -webkit-box-shadow: 0 0 0px 1000px transparent inset;
45
- transition: background-color 5000s ease-in-out 0s;
43
+ color: $text_color;
44
+ background-color: rgba($focus_input_light, $opacity_5);
45
+ transition: background-color 0.3s ease-in-out 0s;
46
46
  font-family: $font_family_base;
47
47
  }
48
48
  }
@@ -68,3 +68,8 @@
68
68
  @mixin pb_textarea_focus_dark {
69
69
  @include pb_textarea_focus($focus_input_dark);
70
70
  }
71
+
72
+ // Transitions ======================
73
+ @mixin transition_default{
74
+ transition: background-color 0.3s ease-in-out 0s, border-color 0.3s ease-in-out 0s;
75
+ }
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react'
2
2
  import { Textarea } from '../../'
3
3
 
4
- const TextareaCharacterCounter = () => {
4
+ const TextareaCharacterCounter = (props) => {
5
5
  const [value1, setValue1] = useState('Counting characters!')
6
6
  const [value2, setValue2] = useState('This counter prevents the user from exceeding the maximum number of allowed characters. Just try it!')
7
7
  const [value3, setValue3] = useState('This counter alerts the user that they have exceeded the maximum number of allowed characters.')
@@ -41,6 +41,7 @@ const TextareaCharacterCounter = () => {
41
41
  label="Count Only"
42
42
  onChange={(event) => setCount1(event.target.value.length)}
43
43
  rows={4}
44
+ {...props}
44
45
  />
45
46
 
46
47
  <br />
@@ -52,6 +53,7 @@ const TextareaCharacterCounter = () => {
52
53
  onChange={() => handleMaxCount(event)}
53
54
  rows={4}
54
55
  value={value1}
56
+ {...props}
55
57
  />
56
58
 
57
59
  <br />
@@ -63,6 +65,7 @@ const TextareaCharacterCounter = () => {
63
65
  onChange={() => handleMaxCountWithBlocker(event, 100)}
64
66
  rows={4}
65
67
  value={value2}
68
+ {...props}
66
69
  />
67
70
 
68
71
  <br />
@@ -75,6 +78,7 @@ const TextareaCharacterCounter = () => {
75
78
  onChange={() => handleMaxCountWithError(event, 75)}
76
79
  rows={4}
77
80
  value={value3}
81
+ {...props}
78
82
  />
79
83
  </>
80
84
  )
@@ -4,12 +4,14 @@ import { Textarea } from '../../'
4
4
  const TextareaCustom = (props) => {
5
5
  return (
6
6
  <div>
7
- <Textarea label="Label">
7
+ <Textarea
8
+ label="Label"
9
+ {...props}
10
+ >
8
11
  <textarea
9
12
  className="my_custom_class"
10
13
  name="custom_textarea"
11
14
  rows={4}
12
- {...props}
13
15
  >
14
16
  {'Content goes here.'}
15
17
  </textarea>
@@ -4,9 +4,19 @@
4
4
  @import "../tokens/shadows";
5
5
 
6
6
  [class^=pb_typeahead_kit] {
7
+ .typeahead-kit-select__option {
8
+ cursor: pointer;
9
+ }
7
10
  .pb_typeahead_wrapper {
8
11
  position: relative;
9
12
 
13
+ .text_input_value_container{
14
+ cursor: text;
15
+ }
16
+ .text_input_indicators,
17
+ .pb_list_kit {
18
+ cursor: pointer;
19
+ }
10
20
  .pb_typeahead_loading_indicator {
11
21
  position: absolute;
12
22
  width: min-content;
@@ -17,15 +27,16 @@
17
27
  transition: opacity .15s ease-in-out;
18
28
  }
19
29
  }
20
-
21
30
  [class^=pb_text_input_kit] {
22
31
  .text_input_wrapper {
32
+ .text_input {
33
+ max-height: none;
34
+ }
23
35
  & > input:first-child {
24
36
  padding-right: $space_xl;
25
37
  }
26
38
  }
27
39
  }
28
-
29
40
  .pb_item_kit {
30
41
  padding: ($space_xs + 2) 0;
31
42
 
@@ -35,7 +46,6 @@
35
46
  }
36
47
  }
37
48
  }
38
-
39
49
  [class^=pb_list_kit] {
40
50
  max-height: 18em;
41
51
  overflow-y: auto;
@@ -49,17 +59,14 @@
49
59
  border-radius: $border_rad_heavier;
50
60
  transition: opacity .25s ease-in-out;
51
61
  }
52
-
53
62
  &:focus-within [class^=pb_list_kit] {
54
63
  display: block;
55
64
  opacity: 1;
56
65
  }
57
-
58
66
  &:not(:focus-within) [class^=pb_list_kit] {
59
67
  display: none;
60
68
  opacity: 0;
61
69
  }
62
-
63
70
  [class^=pb_list_kit] {
64
71
  margin-top: -$space-sm;
65
72
  li {
@@ -69,7 +76,6 @@
69
76
  &:focus-within {
70
77
  background-color: $active_light;
71
78
  }
72
-
73
79
  > button {
74
80
  background: none;
75
81
  color: $text_lt_default;
@@ -84,7 +90,6 @@
84
90
  }
85
91
  }
86
92
  }
87
-
88
93
  &[class*=dark] {
89
94
  .pb_typeahead_wrapper .pb_typeahead_loading_indicator {
90
95
  color: $text_dk_light;
@@ -97,7 +102,10 @@
97
102
  color: $white;
98
103
  }
99
104
  .typeahead-kit-select__option:hover {
100
- background-color: tint($focus_input_dark, 5%);
105
+ background-color: $active_dark;
106
+ }
107
+ .typeahead-kit-select__indicator:hover {
108
+ color: $white;
101
109
  }
102
110
  .typeahead-kit-select__input {
103
111
  color: white;
@@ -105,13 +113,12 @@
105
113
  box-shadow: none;
106
114
  }
107
115
  }
108
- .typeahead-kit-select__single-value{
116
+ .typeahead-kit-select__single-value {
109
117
  color: white;
110
118
  }
111
119
  .typeahead-kit-select__option--is-focused {
112
- background-color: tint($focus_input_dark, 5%);
120
+ background-color: $active_dark;
113
121
  }
114
-
115
122
  [class^=pb_list_kit] {
116
123
  background-color: $bg_dark;
117
124
  }
@@ -121,12 +128,11 @@
121
128
  }
122
129
  @media (hover:hover) {
123
130
  &:hover {
124
- background-color: tint($focus_input_dark, 5%);
131
+ background-color: rgba($white,.1);
125
132
  }
126
133
  }
127
134
  }
128
135
  }
129
-
130
136
  &.react-select, &.react-select .dark {
131
137
  .text_input {
132
138
  display: inherit;
@@ -90,6 +90,7 @@ const TypeaheadWithPillsAsyncUsers = (props) => {
90
90
  isMulti
91
91
  label="Github Users"
92
92
  loadOptions={promiseOptions}
93
+ noOptionsMessage={() => 'Type to Search'}
93
94
  onChange={handleOnChange}
94
95
  onMultiValueClick={handleOnMultiValueClick}
95
96
  placeholder="type the name of a Github user"
@@ -114,7 +114,7 @@ $shadow_colors: (
114
114
 
115
115
  /* Text colors ------------------------*/
116
116
  $text_lt_default: $charcoal;
117
- $text_lt_light: #919EAB;
117
+ $text_lt_light: #687887;
118
118
  $text_lt_lighter: $slate;
119
119
  $text_dk_default: $white;
120
120
  $text_dk_light: rgba($white, $opacity_6);
data/lib/playbook.rb CHANGED
@@ -6,8 +6,11 @@ require "webpacker"
6
6
  require "webpacker/react"
7
7
  require "view_component/engine"
8
8
 
9
- require "playbook/props"
10
9
  require "playbook/version"
10
+
11
+ require "playbook/props"
12
+ require "playbook/forms"
13
+ require "playbook/pb_forms_helper"
11
14
  require "playbook/pb_kit_helper"
12
15
  require "playbook/pb_doc_helper"
13
16
  require "playbook/kit_base"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "forms/builder"
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Forms
5
+ class Builder < ::ActionView::Helpers::FormBuilder
6
+ require_relative "builder/action_area"
7
+ require_relative "builder/checkbox_field"
8
+ require_relative "builder/collection_select_field"
9
+ require_relative "builder/date_picker_field"
10
+ require_relative "builder/form_field_builder"
11
+ require_relative "builder/select_field"
12
+ require_relative "builder/typeahead_field"
13
+
14
+ prepend(FormFieldBuilder.new(:email_field, kit_name: "text_input"))
15
+ prepend(FormFieldBuilder.new(:number_field, kit_name: "text_input"))
16
+ prepend(FormFieldBuilder.new(:search_field, kit_name: "text_input"))
17
+ prepend(FormFieldBuilder.new(:telephone_field, kit_name: "text_input"))
18
+ prepend(FormFieldBuilder.new(:text_field, kit_name: "text_input"))
19
+ prepend(FormFieldBuilder.new(:password_field, kit_name: "text_input"))
20
+ prepend(FormFieldBuilder.new(:url_field, kit_name: "text_input"))
21
+ prepend(FormFieldBuilder.new(:text_area, kit_name: "textarea"))
22
+
23
+ def actions
24
+ context = @template.respond_to?(:view_context) ? @template.view_context : @template
25
+ context.content_tag :ol, class: "pb-form-actions" do
26
+ yield ActionArea.new(@template, submit_default_value)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end