playbook_ui 8.2.1.pre.alpha2 → 8.3.0.alpha.select.pre.margin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/data/menu.yml +2 -3
  3. data/app/pb_kits/playbook/pb_badge/_badge.jsx +1 -26
  4. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +1 -6
  5. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +7 -0
  6. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +0 -3
  7. data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +23 -24
  8. data/app/pb_kits/playbook/pb_flex/_flex.jsx +3 -6
  9. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.jsx +3 -4
  10. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +63 -54
  11. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +2 -1
  12. data/app/pb_kits/playbook/pb_select/_select.jsx +10 -1
  13. data/app/pb_kits/playbook/pb_select/_select.scss +35 -28
  14. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select.jsx +4 -1
  15. data/app/pb_kits/playbook/pb_select/select.rb +5 -1
  16. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -1
  17. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_input.jsx +145 -135
  18. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +0 -3
  19. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +17 -18
  20. data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +0 -3
  21. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +29 -19
  22. data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +9 -4
  23. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_character_counter.jsx +5 -1
  24. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_custom.jsx +4 -2
  25. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +1 -9
  26. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +17 -24
  27. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +11 -21
  28. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.jsx +0 -1
  29. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +3 -8
  30. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +1 -0
  31. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +4 -4
  32. data/app/pb_kits/playbook/tokens/_colors.scss +1 -1
  33. data/lib/playbook/version.rb +1 -2
  34. metadata +4 -4
  35. data/app/pb_kits/playbook/pb_typeahead/components/Input.jsx +0 -43
@@ -5,7 +5,7 @@ import {
5
5
  RichTextEditor,
6
6
  } from '../../'
7
7
 
8
- const RichTextEditorPreview = () => {
8
+ const RichTextEditorPreview = (props) => {
9
9
  const [showPreview, setShowPreview] = useState(false)
10
10
  const [previewText, setPreviewText] = useState(<div />)
11
11
 
@@ -19,6 +19,7 @@ const RichTextEditorPreview = () => {
19
19
  <RichTextEditor
20
20
  id="content-preview-editor"
21
21
  onChange={handleChange}
22
+ {...props}
22
23
  />
23
24
  <If condition={showPreview}>
24
25
  <Card marginTop="md">
@@ -37,6 +37,8 @@ type SelectProps = {
37
37
  id?: string,
38
38
  includeBlank?: string,
39
39
  label?: string,
40
+ margin: string,
41
+ marginBottom: string,
40
42
  multiple?: boolean,
41
43
  name?: string,
42
44
  required?: boolean,
@@ -74,7 +76,14 @@ const Select = ({
74
76
  const dataProps = buildDataProps(data)
75
77
  const optionsList = createOptions(options)
76
78
 
77
- const classes = classnames(buildCss('pb_select'), globalProps(props), className)
79
+ const classes = classnames(
80
+ buildCss('pb_select'),
81
+ globalProps({
82
+ ...props,
83
+ marginBottom: props.marginBottom || props.margin || 'sm',
84
+ }),
85
+ className)
86
+
78
87
  const selectWrapperClass = classnames(buildCss('pb_select_kit_wrapper'), { error }, className)
79
88
 
80
89
  return (
@@ -4,10 +4,11 @@
4
4
  @import "../tokens/colors";
5
5
 
6
6
  [class^=pb_select] {
7
- margin-bottom: $space_sm;
8
7
  select {
9
8
  @include pb_textarea_light;
10
- @include pb_title_4;
9
+ @include pb_body_light;
10
+ background: none;
11
+ background-color: $white;
11
12
  appearance: none;
12
13
  cursor: pointer;
13
14
  box-shadow: inset 0 -11px 20px rgba($primary, 0.05);
@@ -17,11 +18,16 @@
17
18
  white-space: nowrap;
18
19
  overflow: hidden;
19
20
  text-overflow: ellipsis;
21
+ max-height: 45px;
20
22
  @media (hover:hover) {
21
23
  &:hover, &:active, &:focus {
22
24
  background-color: $focus_input_light;
23
25
  }
24
26
  }
27
+ &:focus{
28
+ border-color: $primary;
29
+ @include transition_default;
30
+ }
25
31
  &:disabled ~ .pb_select_kit_caret {
26
32
  opacity: 0.5;
27
33
  }
@@ -58,35 +64,36 @@
58
64
  transform: translateY(-50%);
59
65
  pointer-events: none;
60
66
  }
61
- &.dark {
62
- select {
63
- @include pb_textarea_dark;
64
- @include pb_title_4;
65
- @include pb_title_dark;
66
- background: $focus_input_dark;
67
- box-shadow: inset 0 -11px 20px rgba($white, 0.05);
68
- text-shadow: 0 0 0 $text_dk_default;
69
- padding-right: $space_xl;
70
- white-space: nowrap;
71
- overflow: hidden;
72
- text-overflow: ellipsis;
73
- @media (hover:hover) {
74
- &:hover, &:active, &:focus {
75
- background-color: tint($focus_input_dark, 5%);
76
- }
67
+ }
68
+
69
+ [class^=pb_select].dark {
70
+ select {
71
+ @include pb_textarea_dark;
72
+ @include pb_body_light_dark;
73
+ background: none;
74
+ background-color: rgba($white,.10);
75
+ box-shadow: inset 0 -11px 20px rgba($white, 0.05);
76
+ text-shadow: 0 0 0 $text_dk_default;
77
+ padding-right: $space_xl;
78
+ white-space: nowrap;
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ @media (hover:hover) {
82
+ &:hover, &:active, &:focus {
83
+ background-color: rgba($white,.05);
77
84
  }
78
85
  }
79
- .pb_select_kit_caret {
80
- color: $white;
81
- }
82
- .pb_select_kit_wrapper {
83
- &.error {
84
- .pb_select_kit_wrapper {
85
- > select:first-child {
86
- border-color: $error_dark;
87
- }
86
+ }
87
+ .pb_select_kit_caret {
88
+ color: $white;
89
+ }
90
+ .pb_select_kit_wrapper {
91
+ &.error {
92
+ .pb_select_kit_wrapper {
93
+ > select:first-child {
94
+ border-color: $error_dark;
88
95
  }
89
96
  }
90
97
  }
91
98
  }
92
- }
99
+ }
@@ -4,7 +4,10 @@ import { Select } from '../../'
4
4
  const SelectCustomSelect = (props) => {
5
5
  return (
6
6
  <div>
7
- <Select label="Favorite Holiday">
7
+ <Select
8
+ label="Favorite Holiday"
9
+ {...props}
10
+ >
8
11
  <select
9
12
  id="holiday"
10
13
  name="holiday"
@@ -17,13 +17,17 @@ module Playbook
17
17
  prop :required, type: Playbook::Props::Boolean, default: false
18
18
 
19
19
  def classname
20
- generate_classname("pb_select")
20
+ generate_classname("pb_select", select_margin_bottom, separator: " ")
21
21
  end
22
22
 
23
23
  def select_wrapper_class
24
24
  "pb_select_kit_wrapper" + error_class
25
25
  end
26
26
 
27
+ def select_margin_bottom
28
+ margin.present? || margin_bottom.present? ? nil : "mb_sm"
29
+ end
30
+
27
31
  def options_to_array
28
32
  options.map { |option| [option[:value_text] || option[:value], option[:value]] }
29
33
  end
@@ -111,7 +111,7 @@ $pb_selectable_card_border: 2px;
111
111
  }
112
112
 
113
113
  .separator {
114
- background: $bg_dark;
114
+ background: rgba($white,.1);
115
115
  }
116
116
 
117
117
  &.error {
@@ -1,158 +1,168 @@
1
- import React from 'react'
1
+ import React, { useState } from 'react'
2
2
  import {
3
3
  Body,
4
4
  SelectableCard,
5
5
  Title,
6
6
  } from '../../'
7
7
 
8
- class SelectableCardInput extends React.Component {
9
- state = {
8
+ const SelectableCardInput = (props) => {
9
+ const [state, setState] = useState({
10
10
  firstCheckbox: true,
11
11
  secondCheckbox: true,
12
12
  thirdCheckbox: false,
13
13
  forthCheckbox: false,
14
14
  radioSelected: 'first',
15
- }
15
+ })
16
16
 
17
- handleSelect = (event) => {
18
- this.setState({
17
+ const handleSelect = (event) => {
18
+ setState({ ...state,
19
19
  [event.target.name]: event.target.checked,
20
20
  })
21
21
  }
22
22
 
23
- handleRadioSelect = (event) => {
24
- this.setState({
23
+ const handleRadioSelect = (event) => {
24
+ setState({
25
+ ...state,
25
26
  radioSelected: event.target.value,
26
27
  })
27
28
  }
28
29
 
29
- render() {
30
- return (
31
- <>
32
- <Title
33
- size={3}
34
- text="What programming languages do you know?"
35
- />
36
-
37
- <br />
38
-
39
- <SelectableCard
40
- checked={this.state.firstCheckbox}
41
- inputId="firstCheckbox"
42
- name="firstCheckbox"
43
- onChange={this.handleSelect}
44
- value="firstCheckbox"
45
- variant="displayInput"
46
- >
47
- <Body>{'Ruby'}</Body>
48
- </SelectableCard>
49
-
50
- <SelectableCard
51
- checked={this.state.secondCheckbox}
52
- inputId="secondCheckbox"
53
- name="secondCheckbox"
54
- onChange={this.handleSelect}
55
- value="secondCheckbox"
56
- variant="displayInput"
57
- >
58
- <Body>{'JavaScript'}</Body>
59
- </SelectableCard>
60
-
61
- <SelectableCard
62
- checked={this.state.thirdCheckbox}
63
- inputId="thirdCheckbox"
64
- name="thirdCheckbox"
65
- onChange={this.handleSelect}
66
- value="thirdCheckbox"
67
- variant="displayInput"
68
- >
69
- <Body>{'TypeScript'}</Body>
70
- </SelectableCard>
71
-
72
- <SelectableCard
73
- checked={this.state.fourthCheckbox}
74
- inputId="fourthCheckbox"
75
- name="fourthCheckbox"
76
- onChange={this.handleSelect}
77
- value="fourthCheckbox"
78
- variant="displayInput"
79
- >
80
- <Body>{'Swift'}</Body>
81
- </SelectableCard>
82
-
83
- <br />
84
-
85
- <Title
86
- size={3}
87
- text="How likely are you to recommend Playbook to a friend?"
88
- />
89
-
90
- <br />
91
-
92
- <SelectableCard
93
- checked={this.state.radioSelected === 'first'}
94
- inputId="radio-1"
95
- multi={false}
96
- name="radio"
97
- onChange={this.handleRadioSelect}
98
- value="first"
99
- variant="displayInput"
100
- >
101
- <Body>{'5'}</Body>
102
- </SelectableCard>
103
-
104
- <SelectableCard
105
- checked={this.state.radioSelected === 'second'}
106
- inputId="radio-2"
107
- multi={false}
108
- name="radio"
109
- onChange={this.handleRadioSelect}
110
- value="second"
111
- variant="displayInput"
112
- >
113
- <Body>
114
- {'4'}
115
- </Body>
116
- </SelectableCard>
117
-
118
- <SelectableCard
119
- checked={this.state.radioSelected === 'third'}
120
- inputId="radio-3"
121
- multi={false}
122
- name="radio"
123
- onChange={this.handleRadioSelect}
124
- value="third"
125
- variant="displayInput"
126
- >
127
- <Body>{'3'}</Body>
128
- </SelectableCard>
129
-
130
- <SelectableCard
131
- checked={this.state.radioSelected === 'fourth'}
132
- inputId="radio-4"
133
- multi={false}
134
- name="radio"
135
- onChange={this.handleRadioSelect}
136
- value="fourth"
137
- variant="displayInput"
138
- >
139
- <Body>{'2'}</Body>
140
- </SelectableCard>
141
-
142
- <SelectableCard
143
- checked={this.state.radioSelected === 'fifth'}
144
- inputId="radio-5"
145
- multi={false}
146
- name="radio"
147
- onChange={this.handleRadioSelect}
148
- value="fifth"
149
- variant="displayInput"
150
- >
151
- <Body>{'1'}</Body>
152
- </SelectableCard>
153
- </>
154
- )
155
- }
30
+ return (
31
+ <>
32
+ <Title
33
+ size={3}
34
+ text="What programming languages do you know?"
35
+ {...props}
36
+ />
37
+
38
+ <br />
39
+
40
+ <SelectableCard
41
+ checked={state.firstCheckbox}
42
+ inputId="firstCheckbox"
43
+ name="firstCheckbox"
44
+ onChange={handleSelect}
45
+ value="firstCheckbox"
46
+ variant="displayInput"
47
+ {...props}
48
+ >
49
+ <Body {...props}>{'Ruby'}</Body>
50
+ </SelectableCard>
51
+
52
+ <SelectableCard
53
+ checked={state.secondCheckbox}
54
+ inputId="secondCheckbox"
55
+ name="secondCheckbox"
56
+ onChange={handleSelect}
57
+ value="secondCheckbox"
58
+ variant="displayInput"
59
+ {...props}
60
+ >
61
+ <Body {...props}>{'JavaScript'}</Body>
62
+ </SelectableCard>
63
+
64
+ <SelectableCard
65
+ checked={state.thirdCheckbox}
66
+ inputId="thirdCheckbox"
67
+ name="thirdCheckbox"
68
+ onChange={handleSelect}
69
+ value="thirdCheckbox"
70
+ variant="displayInput"
71
+ {...props}
72
+ >
73
+ <Body {...props}>{'TypeScript'}</Body>
74
+ </SelectableCard>
75
+
76
+ <SelectableCard
77
+ checked={state.fourthCheckbox}
78
+ inputId="fourthCheckbox"
79
+ name="fourthCheckbox"
80
+ onChange={handleSelect}
81
+ value="fourthCheckbox"
82
+ variant="displayInput"
83
+ {...props}
84
+ >
85
+ <Body {...props}>{'Swift'}</Body>
86
+ </SelectableCard>
87
+
88
+ <br />
89
+
90
+ <Title
91
+ size={3}
92
+ text="How likely are you to recommend Playbook to a friend?"
93
+ {...props}
94
+ />
95
+
96
+ <br />
97
+
98
+ <SelectableCard
99
+ checked={state.radioSelected === 'first'}
100
+ inputId="radio-1"
101
+ multi={false}
102
+ name="radio"
103
+ onChange={handleRadioSelect}
104
+ value="first"
105
+ variant="displayInput"
106
+ {...props}
107
+ >
108
+ <Body {...props}>{'5'}</Body>
109
+ </SelectableCard>
110
+
111
+ <SelectableCard
112
+ checked={state.radioSelected === 'second'}
113
+ inputId="radio-2"
114
+ multi={false}
115
+ name="radio"
116
+ onChange={handleRadioSelect}
117
+ value="second"
118
+ variant="displayInput"
119
+ {...props}
120
+ >
121
+ <Body {...props}>
122
+ {'4'}
123
+ </Body>
124
+ </SelectableCard>
125
+
126
+ <SelectableCard
127
+ checked={state.radioSelected === 'third'}
128
+ inputId="radio-3"
129
+ multi={false}
130
+ name="radio"
131
+ onChange={handleRadioSelect}
132
+ value="third"
133
+ variant="displayInput"
134
+ {...props}
135
+ >
136
+ <Body {...props}>{'3'}</Body>
137
+ </SelectableCard>
138
+
139
+ <SelectableCard
140
+ checked={state.radioSelected === 'fourth'}
141
+ inputId="radio-4"
142
+ multi={false}
143
+ name="radio"
144
+ onChange={handleRadioSelect}
145
+ value="fourth"
146
+ variant="displayInput"
147
+ {...props}
148
+ >
149
+ <Body {...props}>{'2'}</Body>
150
+ </SelectableCard>
151
+
152
+ <SelectableCard
153
+ checked={state.radioSelected === 'fifth'}
154
+ inputId="radio-5"
155
+ multi={false}
156
+ name="radio"
157
+ onChange={handleRadioSelect}
158
+ value="fifth"
159
+ variant="displayInput"
160
+ {...props}
161
+ >
162
+ <Body {...props}>{'1'}</Body>
163
+ </SelectableCard>
164
+ </>
165
+ )
156
166
  }
157
167
 
158
168
  export default SelectableCardInput