playbook_ui 14.3.0.pre.rc.10 → 14.3.0.pre.rc.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 802ad05cc819086feec002c5a2528144dd9996654e668eccec3bc02beb2d6521
4
- data.tar.gz: c0b4e44c40893d27244309b0e24ee3c8708746a91d15dffe565fe41e07d14b03
3
+ metadata.gz: b61a69dbe65fbdcd37a13f6f5067795ab10529f0e4feb1c577195bd6746c461b
4
+ data.tar.gz: 3538c06d31ff94d84e8079aca4f8372ed4d21f3bdfab27469b983f88a01b8402
5
5
  SHA512:
6
- metadata.gz: 8e7a1200079126289d171fa6e6a26bda62b629aeef8ebcc880a28ca3a494d23810dc27a70a12bdb9a4081a98a8a37c7ae648b7f0c6a3d2552d7ee343c9b9fb5a
7
- data.tar.gz: 3b89ba5afc4d031b92e19cae2ef8e3517e081d44784b135e49c0fff824f0ba576e505a57f230302ddee822c7428a1bbf4188853cf32d19b4273b5c6e52dcbd0c
6
+ metadata.gz: 332a175be690b213a1a5148f4657a105e6879b7c76ebd864d1ccf0b0876ca5bcb7994128c73acdba557a217c54fa0da70bf4cefbfc29a150607c791be54dd877
7
+ data.tar.gz: 9765c3947249b19eb3e6f7f38fc982b5b634aec1e4f142a3bcd987d5a70394c701cf7cd84847c1caad5f8db4cb9bc73044101ff0e0dc5aa32b9a0f5d85ac085d
@@ -18,29 +18,32 @@ const RadioChildren = (props) => {
18
18
  <div>
19
19
  <Radio
20
20
  label="Select"
21
+ marginBottom="sm"
21
22
  name="Group1"
22
23
  tabIndex={0}
23
24
  value="Select"
24
25
  {...props}
25
26
  >
26
27
  <Select
28
+ marginBottom="none"
27
29
  minWidth="xs"
28
30
  options={options}
29
31
  />
30
32
  </Radio>
31
33
  <Radio
32
34
  label="Typeahead"
35
+ marginBottom="sm"
33
36
  name="Group1"
34
37
  tabIndex={0}
35
38
  value="Typeahead"
36
39
  {...props}
37
40
  >
38
41
  <Typeahead
42
+ marginBottom="none"
39
43
  minWidth="xs"
40
44
  options={options}
41
45
  />
42
46
  </Radio>
43
- <br />
44
47
  <Radio
45
48
  defaultChecked={false}
46
49
  label="Typography"
@@ -45,7 +45,6 @@
45
45
  }
46
46
  }
47
47
  .text_input_wrapper {
48
- margin-bottom: 1rem;
49
48
  input::placeholder,
50
49
  .text_input .placeholder {
51
50
  @include pb_body_light_dark;
@@ -107,4 +107,17 @@ test('should pass className prop', () => {
107
107
 
108
108
  const kit = screen.getByTestId('typeahead-test')
109
109
  expect(kit).toHaveClass(className)
110
+ })
111
+
112
+ test('typeahead textinput has mb_sm class by default', () => {
113
+ render(
114
+ <Typeahead
115
+ data={{ testid: 'default-mb-test' }}
116
+ options={options}
117
+ />
118
+ )
119
+
120
+ const kit = screen.getByTestId('default-mb-test')
121
+ const textInput = kit.querySelector(".pb_text_input_kit")
122
+ expect(textInput).toHaveClass("mb_sm")
110
123
  })
@@ -45,6 +45,7 @@ type TypeaheadProps = {
45
45
  getOptionLabel?: string | (() => any),
46
46
  getOptionValue?: string | (() => any),
47
47
  name?: string,
48
+ marginBottom?: "none" | "xxs" | "xs" | "sm" | "md" | "lg" | "xl",
48
49
  } & GlobalProps
49
50
 
50
51
  export type SelectValueType = {
@@ -76,12 +77,18 @@ const Typeahead = ({
76
77
  htmlOptions = {},
77
78
  id,
78
79
  loadOptions = noop,
80
+ marginBottom = "sm",
79
81
  ...props
80
82
  }: TypeaheadProps) => {
81
83
  const selectProps = {
82
84
  cacheOptions: true,
83
85
  components: {
84
- Control,
86
+ Control: (controlProps: any) => (
87
+ <Control
88
+ {...controlProps}
89
+ marginBottom={marginBottom}
90
+ />
91
+ ),
85
92
  ClearIndicator,
86
93
  IndicatorsContainer,
87
94
  IndicatorSeparator: null as null,
@@ -6,23 +6,30 @@ import TextInput from '../../pb_text_input/_text_input'
6
6
 
7
7
  type Props = {
8
8
  selectProps: any,
9
+ marginBottom?: string,
9
10
  }
10
11
 
11
- const TypeaheadControl = (props: Props) => (
12
- <div className="pb_typeahead_wrapper">
13
- <TextInput
14
- dark={props.selectProps.dark}
15
- error={props.selectProps.error}
16
- label={props.selectProps.label}
17
- >
18
- <Flex>
19
- <components.Control
20
- className="text_input"
21
- {...props}
22
- />
23
- </Flex>
24
- </TextInput>
25
- </div>
26
- )
12
+ const TypeaheadControl = (props: Props) => {
13
+ const { selectProps, marginBottom } = props
14
+ const { dark, error, label } = selectProps
15
+
16
+ return (
17
+ <div className="pb_typeahead_wrapper">
18
+ <TextInput
19
+ dark={dark}
20
+ error={error}
21
+ label={label}
22
+ marginBottom={marginBottom}
23
+ >
24
+ <Flex>
25
+ <components.Control
26
+ className="text_input"
27
+ {...props}
28
+ />
29
+ </Flex>
30
+ </TextInput>
31
+ </div>
32
+ )
33
+ }
27
34
 
28
35
  export default TypeaheadControl
@@ -0,0 +1,88 @@
1
+ <%
2
+ options = [
3
+ { label: 'Orange', value: '#FFA500' },
4
+ { label: 'Red', value: '#FF0000' },
5
+ { label: 'Green', value: '#00FF00' },
6
+ { label: 'Blue', value: '#0000FF' },
7
+ ]
8
+ %>
9
+
10
+ <%= pb_rails("typeahead", props: {
11
+ id: "typeahead-default",
12
+ placeholder: "All Colors",
13
+ options: options,
14
+ label: "None",
15
+ name: :foo,
16
+ is_multi: false,
17
+ margin_bottom: "none",
18
+ })
19
+ %>
20
+ <%= pb_rails("typeahead", props: {
21
+ id: "typeahead-default",
22
+ placeholder: "All Colors",
23
+ options: options,
24
+ label: "XXS",
25
+ name: :foo,
26
+ is_multi: false,
27
+ margin_bottom: "xxs",
28
+ })
29
+ %>
30
+ <%= pb_rails("typeahead", props: {
31
+ id: "typeahead-default",
32
+ placeholder: "All Colors",
33
+ options: options,
34
+ label: "XS",
35
+ name: :foo,
36
+ is_multi: false,
37
+ margin_bottom: "xs",
38
+ })
39
+ %>
40
+ <%= pb_rails("typeahead", props: {
41
+ id: "typeahead-default",
42
+ placeholder: "All Colors",
43
+ options: options,
44
+ label: "Default - SM",
45
+ name: :foo,
46
+ is_multi: false,
47
+ })
48
+ %>
49
+ <%= pb_rails("typeahead", props: {
50
+ id: "typeahead-default",
51
+ placeholder: "All Colors",
52
+ options: options,
53
+ label: "MD",
54
+ name: :foo,
55
+ is_multi: false,
56
+ margin_bottom: "md",
57
+ })
58
+ %>
59
+ <%= pb_rails("typeahead", props: {
60
+ id: "typeahead-default",
61
+ placeholder: "All Colors",
62
+ options: options,
63
+ label: "LG",
64
+ name: :foo,
65
+ is_multi: false,
66
+ margin_bottom: "lg",
67
+ })
68
+ %>
69
+ <%= pb_rails("typeahead", props: {
70
+ id: "typeahead-default",
71
+ placeholder: "All Colors",
72
+ options: options,
73
+ label: "XL",
74
+ name: :foo,
75
+ is_multi: false,
76
+ margin_bottom: "xl",
77
+ })
78
+ %>
79
+
80
+ <%= javascript_tag defer: "defer" do %>
81
+ document.addEventListener("pb-typeahead-kit-typeahead-default-result-option-select", function(event) {
82
+ console.log('Single Option selected')
83
+ console.dir(event.detail)
84
+ })
85
+ document.addEventListener("pb-typeahead-kit-typeahead-default-result-clear", function() {
86
+ console.log('All options cleared')
87
+ })
88
+ <% end %>
@@ -0,0 +1,60 @@
1
+ import React from 'react'
2
+
3
+ import Typeahead from '../_typeahead'
4
+
5
+ const options = [
6
+ { label: 'Orange', value: '#FFA500' },
7
+ { label: 'Red', value: '#FF0000' },
8
+ { label: 'Green', value: '#00FF00' },
9
+ { label: 'Blue', value: '#0000FF' },
10
+ ]
11
+
12
+ const TypeaheadMarginBottom = (props) => {
13
+ return (
14
+ <>
15
+ <Typeahead
16
+ label="None"
17
+ marginBottom="none"
18
+ options={options}
19
+ {...props}
20
+ />
21
+ <Typeahead
22
+ label="XXS"
23
+ marginBottom="xxs"
24
+ options={options}
25
+ {...props}
26
+ />
27
+ <Typeahead
28
+ label="XS"
29
+ marginBottom="xs"
30
+ options={options}
31
+ {...props}
32
+ />
33
+ <Typeahead
34
+ label="Default - SM"
35
+ options={options}
36
+ {...props}
37
+ />
38
+ <Typeahead
39
+ label="MD"
40
+ marginBottom="md"
41
+ options={options}
42
+ {...props}
43
+ />
44
+ <Typeahead
45
+ label="LG"
46
+ marginBottom="lg"
47
+ options={options}
48
+ {...props}
49
+ />
50
+ <Typeahead
51
+ label="XL"
52
+ marginBottom="xl"
53
+ options={options}
54
+ {...props}
55
+ />
56
+ </>
57
+ )
58
+ }
59
+
60
+ export default TypeaheadMarginBottom
@@ -9,6 +9,7 @@ examples:
9
9
  - typeahead_inline: Inline
10
10
  - typeahead_multi_kit: Multi Kit Options
11
11
  - typeahead_error_state: Error State
12
+ - typeahead_margin_bottom: Margin Bottom
12
13
 
13
14
  react:
14
15
  - typeahead_default: Default
@@ -23,3 +24,4 @@ examples:
23
24
  - typeahead_async_createable: Createable (+ Async Data)
24
25
  - typeahead_error_state: Error State
25
26
  - typeahead_custom_menu_list: Custom MenuList
27
+ - typeahead_margin_bottom: Margin Bottom
@@ -10,3 +10,4 @@ export { default as TypeaheadCreateable } from './_typeahead_createable.jsx'
10
10
  export { default as TypeaheadAsyncCreateable } from './_typeahead_async_createable.jsx'
11
11
  export { default as TypeaheadErrorState } from './_typeahead_error_state.jsx'
12
12
  export { default as TypeaheadCustomMenuList } from './_typeahead_custom_menu_list.jsx'
13
+ export { default as TypeaheadMarginBottom } from './_typeahead_margin_bottom.jsx'
@@ -20,7 +20,8 @@
20
20
  label: object.label,
21
21
  name: object.name,
22
22
  value: object.value,
23
- placeholder: object.placeholder
23
+ placeholder: object.placeholder,
24
+ margin_bottom: "none",
24
25
  }) %>
25
26
  <%= pb_rails("list", props: { ordered: false, borderless: false, xpadding: true, role: "status", aria: { live: "polite" }, data: { pb_typeahead_kit_results: true } }) do %>
26
27
  <% end %>
@@ -14,6 +14,9 @@ module Playbook
14
14
  default: false
15
15
  prop :label
16
16
  prop :load_options
17
+ prop :margin_bottom, type: Playbook::Props::Enum,
18
+ values: %w[none xxs xs sm md lg xl],
19
+ default: "sm"
17
20
  prop :multi_kit, type: Playbook::Props::String,
18
21
  default: ""
19
22
  prop :name
@@ -36,7 +39,8 @@ module Playbook
36
39
  prop :value
37
40
 
38
41
  def classname
39
- generate_classname("pb_typeahead_kit")
42
+ default_margin_bottom = margin_bottom.present? ? "" : " mb_sm"
43
+ generate_classname("pb_typeahead_kit") + default_margin_bottom
40
44
  end
41
45
 
42
46
  def inline_class
@@ -65,6 +69,7 @@ module Playbook
65
69
  inline: inline,
66
70
  isMulti: is_multi,
67
71
  label: label,
72
+ marginBottom: margin_bottom,
68
73
  multiKit: multi_kit,
69
74
  name: name,
70
75
  options: options,