playbook_ui 9.6.1 → 9.7.0.pre.alpha.a11y.btn

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_button/_button.jsx +8 -19
  3. data/app/pb_kits/playbook/pb_button/button.rb +6 -4
  4. data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.html.erb +1 -1
  5. data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.jsx +1 -1
  6. data/app/pb_kits/playbook/pb_button/docs/_button_link.html.erb +3 -3
  7. data/app/pb_kits/playbook/pb_button/docs/_button_link.jsx +3 -0
  8. data/app/pb_kits/playbook/pb_button/docs/_button_loading.html.erb +3 -3
  9. data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +3 -0
  10. data/app/pb_kits/playbook/pb_date/_date.jsx +3 -3
  11. data/app/pb_kits/playbook/pb_date/date.html.erb +2 -3
  12. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +8 -0
  13. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +10 -0
  14. data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +23 -24
  15. data/app/pb_kits/playbook/pb_flex/_flex_item.jsx +1 -1
  16. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +1 -1
  17. data/app/pb_kits/playbook/pb_nav/docs/_block_nav.html.erb +41 -5
  18. data/app/pb_kits/playbook/pb_nav/docs/_block_nav.jsx +44 -6
  19. data/app/pb_kits/playbook/pb_select/_select.jsx +10 -1
  20. data/app/pb_kits/playbook/pb_select/_select.scss +27 -30
  21. data/app/pb_kits/playbook/pb_select/select.rb +5 -1
  22. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +5 -1
  24. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +5 -13
  25. data/lib/playbook/version.rb +1 -1
  26. metadata +15 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ef80e99bb70a0a7346f50ffc0761b136be7db6bbca0dee07ff4a5cb57f3b777
4
- data.tar.gz: bb29fb62353081daa6404847ef516d8069f5ea058722002fb1c4b4b392c27e39
3
+ metadata.gz: 5d02c19ea477725a33c15757d8254c21348c16e9d8e5b82b85ec08ffb7e3ac4e
4
+ data.tar.gz: 75fd3538c8760afa2dcf2818bef4e91451ca0f985044223bdd118f33c740b568
5
5
  SHA512:
6
- metadata.gz: 3358c2044123dbade10b6cf2514091030618459e77cc20e35141b33a10216e660d8a3e30fd033a28c391fae76e125f045d170dc694657cd7c32e8c2d96ee9b9e
7
- data.tar.gz: e29867a0cce06fd7c726fb5ae2033287392f94689e1adc7480ad1416e04136e67fd290102f0c712dfc26184fe326c3709dcf266119b1d96ea10d9fcca0d6fb29
6
+ metadata.gz: 70a500505fe763ab166a92613bb5d3fbf6c6c7b88d53e1727003346c8f5d0e312e629167c840ec17272a63a2cf7f0b15b7657b3b89cd0065c68eb0683a08368e
7
+ data.tar.gz: 4a1e51d54b520cb7c40f32df8fca6e2f20760b9eb09cf40092b66b50a90a14b6744e50bcaccf5cbc604708861128db5fee6e4efd777eeecfc4ed9f56ac5cb900
@@ -2,16 +2,14 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import { buildDataProps } from '../utilities/props'
5
+ import { buildAriaProps, buildDataProps } from '../utilities/props'
6
6
  import { globalProps } from '../utilities/globalProps.js'
7
7
 
8
8
  import Icon from '../pb_icon/_icon.jsx'
9
9
 
10
10
  type EventHandler = (SyntheticInputEvent<HTMLInputElement>) => void
11
11
  type ButtonPropTypes = {
12
- aria?: {
13
- label: string,
14
- },
12
+ aria?: object,
15
13
  children?: array<React.ReactChild>,
16
14
  className?: string | array<string>,
17
15
  data?: object,
@@ -55,20 +53,9 @@ const buttonClassName = (props: ButtonPropTypes) => {
55
53
  return className
56
54
  }
57
55
 
58
- const buttonAriaProps = (props: ButtonPropTypes) => {
59
- const { aria } = props
60
- if (typeof aria !== 'object') return {}
61
- const { label } = aria
62
-
63
- const ariaProps = {}
64
-
65
- if (label !== null) ariaProps['aria-label'] = label
66
-
67
- return ariaProps
68
- }
69
-
70
56
  const Button = (props: ButtonPropTypes) => {
71
57
  const {
58
+ aria = {},
72
59
  children,
73
60
  className,
74
61
  data = {},
@@ -84,7 +71,7 @@ const Button = (props: ButtonPropTypes) => {
84
71
  value,
85
72
  } = props
86
73
 
87
- const buttonAria = buttonAriaProps(props)
74
+ const ariaProps = buildAriaProps(aria)
88
75
  const dataProps = buildDataProps(data)
89
76
  const css = classnames(
90
77
  buttonClassName(props),
@@ -114,11 +101,12 @@ const Button = (props: ButtonPropTypes) => {
114
101
  return (
115
102
  <If condition={link !== null}>
116
103
  <a
117
- {...buttonAria}
104
+ {...ariaProps}
118
105
  {...dataProps}
119
106
  className={css}
120
107
  href={link}
121
108
  id={id}
109
+ role="link"
122
110
  target={newWindow ? '_blank' : null}
123
111
  >
124
112
  <If condition={loading}>{loadingIcon}</If>
@@ -126,12 +114,13 @@ const Button = (props: ButtonPropTypes) => {
126
114
  </a>
127
115
  <Else />
128
116
  <button
129
- {...buttonAria}
117
+ {...ariaProps}
130
118
  {...dataProps}
131
119
  className={css}
132
120
  disabled={disabled}
133
121
  id={id}
134
122
  onClick={onClick}
123
+ role="button"
135
124
  type={htmlType}
136
125
  value={value}
137
126
  >
@@ -21,11 +21,12 @@ module Playbook
21
21
 
22
22
  def options
23
23
  {
24
- id: id,
25
- data: data,
24
+ aria: aria,
26
25
  class: classname,
26
+ data: data,
27
27
  disabled: disabled,
28
- aria: aria,
28
+ id: id,
29
+ role: "button",
29
30
  type: type,
30
31
  value: value,
31
32
  }.compact
@@ -34,7 +35,8 @@ module Playbook
34
35
  def link_options
35
36
  options.merge(
36
37
  href: link,
37
- target: new_window ? "_blank" : "_self"
38
+ role: "link",
39
+ target: new_window ? "_blank" : "_self",
38
40
  )
39
41
  end
40
42
 
@@ -1 +1 @@
1
- <%= pb_rails("button", props: { text: "Button with ARIA", aria: {label: "button"}, tag: "a", link: "http://google.com" }) %>
1
+ <%= pb_rails("button", props: { text: "Button with ARIA", aria: {label: "Go to Google"}, tag: "a", link: "http://google.com" }) %>
@@ -4,7 +4,7 @@ import { Button } from '../../'
4
4
  const ButtonAccessibility = (props) => (
5
5
  <div>
6
6
  <Button
7
- aria={{ label: 'button' }}
7
+ aria={{ label: 'Go to Google' }}
8
8
  link="https://google.com"
9
9
  tag="a"
10
10
  text="Button with ARIA"
@@ -1,3 +1,3 @@
1
- <%= pb_rails("button", props: { text: "A Tag Button", tag: "a", link: "http://google.com" }) %>
2
- <%= pb_rails("button", props: { text: "Open in new Window", new_window: true, link: "http://google.com" }) %>
3
- <%= pb_rails("button", props: { text: "A Tag Button Disabled", disabled: true, link: "http://google.com" }) %>
1
+ <%= pb_rails("button", props: { text: "A Tag Button", aria: { label: "Link to Google" }, tag: "a", link: "http://google.com" }) %>
2
+ <%= pb_rails("button", props: { text: "Open in new Window", aria: { label: "Link to Google in new window" }, new_window: true, link: "http://google.com" }) %>
3
+ <%= pb_rails("button", props: { text: "A Tag Button Disabled", aria: { label: "Disabled link to Google" }, disabled: true, link: "http://google.com" }) %>
@@ -4,12 +4,14 @@ import { Button } from '../../'
4
4
  const ButtonLink = (props) => (
5
5
  <div>
6
6
  <Button
7
+ aria={{ label: 'Link to Google' }}
7
8
  link="https://google.com"
8
9
  text="A Tag Button"
9
10
  {...props}
10
11
  />
11
12
  {' '}
12
13
  <Button
14
+ aria={{ label: 'Link to Google in new window' }}
13
15
  link="https://google.com"
14
16
  newWindow
15
17
  text="Open in New Window"
@@ -17,6 +19,7 @@ const ButtonLink = (props) => (
17
19
  />
18
20
  {' '}
19
21
  <Button
22
+ aria={{ label: 'Disabled link to Google' }}
20
23
  disabled
21
24
  link="https://google.com"
22
25
  text="A Tag Button Disabled"
@@ -1,3 +1,3 @@
1
- <%= pb_rails("button", props: { text: "Button Primary", loading: true }) %>
2
- <%= pb_rails("button", props: { text: "Button Primary", variant: "secondary", loading: true }) %>
3
- <%= pb_rails("button", props: { text: "Button Primary", variant: "link", loading: true }) %>
1
+ <%= pb_rails("button", props: { aria: { label: "Loading" }, text: "Button Primary", loading: true }) %>
2
+ <%= pb_rails("button", props: { aria: { label: "Loading" }, text: "Button Primary", variant: "secondary", loading: true }) %>
3
+ <%= pb_rails("button", props: { aria: { label: "Loading" }, text: "Button Primary", variant: "link", loading: true }) %>
@@ -4,12 +4,14 @@ import { Button } from '../../'
4
4
  const ButtonLoading = (props) => (
5
5
  <div>
6
6
  <Button
7
+ aria={{ label: 'Loading' }}
7
8
  loading
8
9
  text="Button Primary"
9
10
  {...props}
10
11
  />
11
12
  {' '}
12
13
  <Button
14
+ aria={{ label: 'Loading' }}
13
15
  loading
14
16
  text="Button Secondary"
15
17
  variant="secondary"
@@ -17,6 +19,7 @@ const ButtonLoading = (props) => (
17
19
  />
18
20
  {' '}
19
21
  <Button
22
+ aria={{ label: 'Loading' }}
20
23
  loading
21
24
  text="A Tag Button Disabled"
22
25
  variant="link"
@@ -95,16 +95,16 @@ const PbDate = (props: PbDateProps) => {
95
95
  <Else />
96
96
  <>
97
97
  <If condition={showIcon}>
98
- <Body
98
+ <Caption
99
99
  className="pb_icon_kit_container"
100
- color="light"
101
100
  tag="span"
102
101
  >
103
102
  <Icon
104
103
  fixedWidth
105
104
  icon="calendar-alt"
105
+ size="xs"
106
106
  />
107
- </Body>
107
+ </Caption>
108
108
  </If>
109
109
  <If condition={showDayOfWeek}>
110
110
  <Caption tag="div">
@@ -39,11 +39,10 @@
39
39
 
40
40
  <!-- icon -->
41
41
  <% if object.show_icon %>
42
- <%= pb_rails("body", props: {
43
- color: "light",
42
+ <%= pb_rails("caption", props: {
44
43
  tag: "div",
45
44
  }) do %>
46
- <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true }) %>
45
+ <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true, size: 'xs' }) %>
47
46
  <% end %>
48
47
  <% end %>
49
48
 
@@ -1,4 +1,12 @@
1
1
  <div>
2
+ <%= pb_rails("date", props: {
3
+ date: DateTime.now,
4
+ show_icon: true,
5
+ size: "sm"
6
+ }) %>
7
+
8
+ <br>
9
+
2
10
  <%= pb_rails("date", props: {
3
11
  date: DateTime.now,
4
12
  }) %>
@@ -4,6 +4,16 @@ import { Date as FormattedDate } from '../..'
4
4
  const DateVariants = (props) => {
5
5
  return (
6
6
  <div>
7
+ <FormattedDate
8
+ showIcon
9
+ size="sm"
10
+ value="1995-12-25"
11
+ {...props}
12
+ />
13
+
14
+ <br />
15
+ <br />
16
+
7
17
  <FormattedDate
8
18
  value="1995-12-25"
9
19
  {...props}
@@ -1,31 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- module PbDialog
5
- class DialogHeader
6
- include Playbook::Props
7
-
8
- partial "pb_dialog/child_kits/dialog_header"
4
+ module PbDialog
5
+ class DialogHeader
6
+ include Playbook::Props
9
7
 
10
- prop :closeable, type: Playbook::Props::Boolean, default: true
11
- prop :padding
12
- prop :separator, type: Playbook::Props::Boolean, default: true
13
- prop :spacing
14
- prop :text
15
- prop :title
16
-
17
- def dialog_header_options
18
- {
19
- id: id,
20
- closeable: closeable,
21
- padding: padding,
22
- separator: separator,
23
- spacing: spacing,
24
- text: text,
25
- title: title,
26
- }
27
- end
8
+ partial "pb_dialog/child_kits/dialog_header"
9
+
10
+ prop :closeable, type: Playbook::Props::Boolean, default: true
11
+ prop :padding
12
+ prop :separator, type: Playbook::Props::Boolean, default: true
13
+ prop :spacing
14
+ prop :text
15
+ prop :title
16
+
17
+ def dialog_header_options
18
+ {
19
+ id: id,
20
+ closeable: closeable,
21
+ padding: padding,
22
+ separator: separator,
23
+ spacing: spacing,
24
+ text: text,
25
+ title: title,
26
+ }
28
27
  end
29
28
  end
30
29
  end
31
-
30
+ end
@@ -14,7 +14,7 @@ type FlexItemPropTypes = {
14
14
  }
15
15
 
16
16
  const FlexItem = (props: FlexItemPropTypes) => {
17
- const { children, className, fixedSize, grow, overflow = null, shrink, flex } = props
17
+ const { children, className, fixedSize, grow, overflow = null, shrink, flex = 'none' } = props
18
18
  const growClass = grow === true ? 'grow' : ''
19
19
  const flexClass = flex !== 'none' ? `flex_${flex}` : ''
20
20
  const overflowClass = overflow ? `overflow_${overflow}` : ''
@@ -16,7 +16,7 @@ $selector: ".pb_nav_list";
16
16
  list-style: none;
17
17
  }
18
18
 
19
- [class*=_title] {
19
+ [class*=pb_nav_list_title] {
20
20
  padding: 0 $space_md $space_sm;
21
21
  }
22
22
 
@@ -1,6 +1,42 @@
1
- <%= pb_rails("nav", props: {title: "Menu", link: "#"}) do %>
2
- <%= pb_rails("nav/item", props: { link: "#", active: true }) do%>Photos<% end %>
3
- <%= pb_rails("nav/item", props: { link: "#" }) do%>Music<% end %>
4
- <%= pb_rails("nav/item", props: { link: "#" }) do%>Video<% end %>
5
- <%= pb_rails("nav/item", props: { link: "#" }) do%>Files<% end %>
1
+ <%= pb_rails("nav", props: {title: "Users", link: "#"}) do %>
2
+ <%= pb_rails("nav/item", props: { link: "#", active: true }) do%>
3
+ <%= pb_rails("user", props: {
4
+ name: "Anna Black",
5
+ territory: "PHL",
6
+ title: "Remodeling Consultant",
7
+ orientation: "horizontal",
8
+ align: "left",
9
+ avatar_url: "https://randomuser.me/api/portraits/women/44.jpg"
10
+ }) %>
11
+ <% end %>
12
+ <%= pb_rails("nav/item", props: { link: "#" }) do%>
13
+ <%= pb_rails("user", props: {
14
+ name: "Julie Hamilton",
15
+ territory: "PHL",
16
+ title: "Inside Sales Agent",
17
+ orientation: "horizontal",
18
+ align: "left",
19
+ avatar_url: "https://randomuser.me/api/portraits/women/45.jpg"
20
+ }) %>
21
+ <% end %>
22
+ <%= pb_rails("nav/item", props: { link: "#" }) do%>
23
+ <%= pb_rails("user", props: {
24
+ name: "Dennis Wilks",
25
+ territory: "PHL",
26
+ title: "Senior Remodeling Consultant",
27
+ orientation: "horizontal",
28
+ align: "left",
29
+ avatar_url: "https://randomuser.me/api/portraits/men/44.jpg"
30
+ }) %>
31
+ <% end %>
32
+ <%= pb_rails("nav/item", props: { link: "#" }) do%>
33
+ <%= pb_rails("user", props: {
34
+ name: "Ronnie Martin",
35
+ territory: "PHL",
36
+ title: "Customer Development Representative",
37
+ orientation: "horizontal",
38
+ align: "left",
39
+ avatar_url: "https://randomuser.me/api/portraits/men/46.jpg"
40
+ }) %>
41
+ <% end %>
6
42
  <% end %>
@@ -1,12 +1,12 @@
1
1
  import React from 'react'
2
- import { Nav } from '../../'
2
+ import { Nav, User } from '../../'
3
3
  import NavItem from '../_item.jsx'
4
4
 
5
5
  const BlockNav = (props) => {
6
6
  return (
7
7
  <Nav
8
8
  link="#"
9
- title="Menu"
9
+ title="Users"
10
10
  {...props}
11
11
  >
12
12
  <NavItem
@@ -14,11 +14,49 @@ const BlockNav = (props) => {
14
14
  link="#"
15
15
  {...props}
16
16
  >
17
- {'Photos'}
17
+ <User
18
+ align="left"
19
+ avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
20
+ name="Anna Black"
21
+ orientation="horizontal"
22
+ territory="PHL"
23
+ title="Remodeling Consultant"
24
+ {...props}
25
+ />
26
+ </NavItem>
27
+ <NavItem link="#">
28
+ <User
29
+ align="left"
30
+ avatarUrl="https://randomuser.me/api/portraits/women/45.jpg"
31
+ name="Julie Hamilton"
32
+ orientation="horizontal"
33
+ territory="PHL"
34
+ title="Inside Sales Agent"
35
+ {...props}
36
+ />
37
+ </NavItem>
38
+ <NavItem link="#">
39
+ <User
40
+ align="left"
41
+ avatarUrl="https://randomuser.me/api/portraits/men/44.jpg"
42
+ name="Dennis Wilks"
43
+ orientation="horizontal"
44
+ territory="PHL"
45
+ title="Senior Remodeling Consultant"
46
+ {...props}
47
+ />
48
+ </NavItem>
49
+ <NavItem link="#">
50
+ <User
51
+ align="left"
52
+ avatarUrl="https://randomuser.me/api/portraits/men/46.jpg"
53
+ name="Ronnie Martin"
54
+ orientation="horizontal"
55
+ territory="PHL"
56
+ title="Customer Development Representative"
57
+ {...props}
58
+ />
18
59
  </NavItem>
19
- <NavItem link="#">{'Music'}</NavItem>
20
- <NavItem link="#">{'Video'}</NavItem>
21
- <NavItem link="#">{'Files'}</NavItem>
22
60
  </Nav>
23
61
  )
24
62
  }
@@ -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,7 +4,6 @@
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
9
  @include pb_body_light;
@@ -65,38 +64,36 @@
65
64
  transform: translateY(-50%);
66
65
  pointer-events: none;
67
66
  }
68
- &.dark {
69
- select {
70
- @include pb_textarea_dark;
71
- @include pb_body_light_dark;
72
- background: none;
73
- background-color: rgba($white,.10);
74
- box-shadow: inset 0 -11px 20px rgba($white, 0.05);
75
- text-shadow: 0 0 0 $text_dk_default;
76
- padding-right: $space_xl;
77
- white-space: nowrap;
78
- overflow: hidden;
79
- text-overflow: ellipsis;
80
- @media (hover:hover) {
81
- &:hover, &:active, &:focus {
82
- background-color: rgba($white,.05);
83
- }
84
- }
85
- &:focus{
86
- border-color: $active_dark;
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);
87
84
  }
88
85
  }
89
- .pb_select_kit_caret {
90
- color: $white;
91
- }
92
- .pb_select_kit_wrapper {
93
- &.error {
94
- .pb_select_kit_wrapper {
95
- > select:first-child {
96
- border-color: $error_dark;
97
- }
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;
98
95
  }
99
96
  }
100
97
  }
101
98
  }
102
- }
99
+ }
@@ -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
@@ -8,7 +8,7 @@
8
8
  <% end %>
9
9
 
10
10
  <%= pb_rails("body") do %>
11
- When you make a selection, you will see it apear in the list below
11
+ When you make a selection, you will see it appear in the list below
12
12
  <% end %>
13
13
 
14
14
  <div data-selected-option></div>
@@ -7,7 +7,11 @@
7
7
  class: object.classname) do %>
8
8
  <div class="pb_typeahead_wrapper">
9
9
  <div class="pb_typeahead_loading_indicator" data-pb-typeahead-kit-loading-indicator>
10
- <i class="far fa-spinner fa-spin"></i>
10
+ <%= pb_rails("icon", props: {
11
+ icon: "spinner",
12
+ pulse: true,
13
+ fixed_width: true,
14
+ }) %>
11
15
  </div>
12
16
  <%= pb_rails("text_input", props: {
13
17
  type: "search",
@@ -3,8 +3,7 @@
3
3
  module Playbook
4
4
  module PbTypeahead
5
5
  class Typeahead < Playbook::KitBase
6
- prop :async, type: Playbook::Props::Boolean,
7
- default: false
6
+ prop :async, type: Playbook::Props::Boolean, default: false
8
7
  prop :default_options, type: Playbook::Props::HashArray, default: []
9
8
  prop :get_option_label
10
9
  prop :get_option_value
@@ -13,9 +12,7 @@ module Playbook
13
12
  prop :load_options
14
13
  prop :name
15
14
  prop :options, type: Playbook::Props::HashArray, default: []
16
- prop :pills, type: Playbook::Props::Boolean,
17
- default: false
18
-
15
+ prop :pills, type: Playbook::Props::Boolean, default: false
19
16
  prop :placeholder
20
17
  prop :search_term_minimum_length, default: 3
21
18
  prop :search_debounce_timeout, default: 250
@@ -45,14 +42,9 @@ module Playbook
45
42
  placeholder: placeholder,
46
43
  }
47
44
 
48
- base_options.merge!({getOptionLabel: get_option_label}) if get_option_label.present?
49
- base_options.merge!({getOptionValue: get_option_value}) if get_option_value.present?
50
-
51
- base_options.merge!({
52
- async: true,
53
- loadOptions: load_options,
54
- }) if async
55
-
45
+ base_options.merge!({ getOptionLabel: get_option_label }) if get_option_label.present?
46
+ base_options.merge!({ getOptionValue: get_option_value }) if get_option_value.present?
47
+ base_options.merge!({ async: true, loadOptions: load_options }) if async
56
48
  base_options
57
49
  end
58
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "9.6.1"
4
+ VERSION = "9.7.0.pre.alpha.a11y.btn"
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.6.1
4
+ version: 9.7.0.pre.alpha.a11y.btn
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
8
8
  - Power Devs
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-16 00:00:00.000000000 Z
12
+ date: 2021-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -285,22 +285,22 @@ dependencies:
285
285
  name: rspec-rails
286
286
  requirement: !ruby/object:Gem::Requirement
287
287
  requirements:
288
- - - ">="
289
- - !ruby/object:Gem::Version
290
- version: 3.8.0
291
288
  - - "~>"
292
289
  - !ruby/object:Gem::Version
293
290
  version: '3.8'
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: 3.8.0
294
294
  type: :development
295
295
  prerelease: false
296
296
  version_requirements: !ruby/object:Gem::Requirement
297
297
  requirements:
298
- - - ">="
299
- - !ruby/object:Gem::Version
300
- version: 3.8.0
301
298
  - - "~>"
302
299
  - !ruby/object:Gem::Version
303
300
  version: '3.8'
301
+ - - ">="
302
+ - !ruby/object:Gem::Version
303
+ version: 3.8.0
304
304
  - !ruby/object:Gem::Dependency
305
305
  name: rspec-html-matchers
306
306
  requirement: !ruby/object:Gem::Requirement
@@ -2115,7 +2115,7 @@ homepage: http://playbook.powerapp.cloud
2115
2115
  licenses:
2116
2116
  - MIT
2117
2117
  metadata: {}
2118
- post_install_message:
2118
+ post_install_message:
2119
2119
  rdoc_options: []
2120
2120
  require_paths:
2121
2121
  - lib
@@ -2126,12 +2126,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
2126
2126
  version: '0'
2127
2127
  required_rubygems_version: !ruby/object:Gem::Requirement
2128
2128
  requirements:
2129
- - - ">="
2129
+ - - ">"
2130
2130
  - !ruby/object:Gem::Version
2131
- version: '0'
2131
+ version: 1.3.1
2132
2132
  requirements: []
2133
- rubygems_version: 3.0.3
2134
- signing_key:
2133
+ rubyforge_project:
2134
+ rubygems_version: 2.7.3
2135
+ signing_key:
2135
2136
  specification_version: 4
2136
2137
  summary: Playbook Design System
2137
2138
  test_files: []