playbook_ui 7.4.0.pre.alpha1 → 7.4.0.pre.test4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +3 -1
  3. data/app/pb_kits/playbook/data/menu.yml +2 -2
  4. data/app/pb_kits/playbook/index.js +2 -2
  5. data/app/pb_kits/playbook/pb_background/_background.html.erb +14 -0
  6. data/app/pb_kits/playbook/pb_background/_background.jsx +63 -0
  7. data/app/pb_kits/playbook/pb_background/_background.scss +35 -0
  8. data/app/pb_kits/playbook/pb_background/background.rb +35 -0
  9. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +3 -0
  10. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +13 -0
  11. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +3 -0
  12. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +13 -0
  13. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +13 -0
  14. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +30 -0
  15. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +3 -0
  16. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +13 -0
  17. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +3 -0
  18. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +14 -0
  19. data/app/pb_kits/playbook/pb_background/docs/_description.md +1 -0
  20. data/app/pb_kits/playbook/pb_background/docs/example.yml +15 -0
  21. data/app/pb_kits/playbook/pb_background/docs/index.js +6 -0
  22. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  23. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  24. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  25. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  26. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  27. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  28. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  29. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  30. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  31. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  32. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  33. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  34. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  35. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  36. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  37. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  38. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  39. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  40. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  41. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  42. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  43. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  44. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  45. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  46. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  47. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  48. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  50. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  51. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  52. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  53. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  54. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  56. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  57. data/app/pb_kits/playbook/pb_list/_list.jsx +2 -9
  58. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +2 -2
  59. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  60. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  61. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  62. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  63. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +14 -2
  64. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +20 -0
  65. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -15
  66. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +1 -6
  67. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +10 -4
  68. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +20 -4
  69. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +4 -0
  70. data/lib/playbook/version.rb +1 -1
  71. metadata +41 -19
  72. data/app/pb_kits/playbook/pb_selectable_list/_item.jsx +0 -92
  73. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.html.erb +0 -11
  74. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.jsx +0 -47
  75. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss +0 -17
  76. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list_item.html.erb +0 -18
  77. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.html.erb +0 -13
  78. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +0 -34
  79. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.html.erb +0 -13
  80. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +0 -38
  81. data/app/pb_kits/playbook/pb_selectable_list/docs/example.yml +0 -12
  82. data/app/pb_kits/playbook/pb_selectable_list/docs/index.js +0 -2
  83. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.rb +0 -24
  84. data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb +0 -29
@@ -0,0 +1,20 @@
1
+ /* @flow */
2
+
3
+ import React, { useEffect } from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const ClearContainer = (props: any) => {
7
+ const { selectProps, clearValue } = props
8
+ useEffect(() => {
9
+ document.addEventListener(`pb-typeahead-kit-${selectProps.id}:clear`, clearValue)
10
+ }, true)
11
+
12
+ return (
13
+ <components.ClearIndicator
14
+ className="clear_indicator"
15
+ {...props}
16
+ />
17
+ )
18
+ }
19
+
20
+ export default ClearContainer
@@ -13,24 +13,17 @@ type Props = {
13
13
  }
14
14
 
15
15
  const MultiValue = (props: Props) => {
16
- const {
17
- data,
18
- removeProps,
19
- selectProps,
20
- } = props
16
+ const { removeProps } = props
17
+ const { imageUrl, label } = props.data
21
18
 
22
- const { imageUrl, label } = data
23
-
24
- const handleOnMultiValueRemove = () => {
25
- const multiValueRemoveEvent = new CustomEvent('pb-typeahead-kit-result-option-remove', { detail: data })
26
- document.dispatchEvent(multiValueRemoveEvent)
19
+ const formPillProps = {
20
+ marginRight: 'xs',
21
+ name: label,
27
22
  }
28
23
 
29
- const handleOnClick = () => {
30
- if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(data)
31
- handleOnMultiValueRemove()
32
- removeProps.onClick()
33
- }
24
+ if (typeof imageUrl === 'string') formPillProps.avatarUrl = imageUrl
25
+
26
+ const handleOnClick = removeProps.onClick
34
27
 
35
28
  return (
36
29
  <components.MultiValueContainer
@@ -13,14 +13,9 @@ const Option = (props: any) => {
13
13
  label,
14
14
  } = props.data
15
15
 
16
- const handleOptionClicked = () => {
17
- const resultSelectedEvent = new CustomEvent('pb-typeahead-kit-result-option-select', { detail: props.data })
18
- document.dispatchEvent(resultSelectedEvent)
19
- }
20
-
21
16
  return (
22
17
  <components.Option {...props}>
23
- <div onClick={handleOptionClicked}>
18
+ <div>
24
19
  <Choose>
25
20
  <When condition={imageUrl}>
26
21
  <User
@@ -7,19 +7,25 @@
7
7
  ]
8
8
  %>
9
9
 
10
- <%= pb_rails("typeahead", props: { options: options, label: "Colors", name: :foo, pills: true }) %>
10
+ <%= pb_rails("typeahead", props: { id: "typeahead-pills-example1", default_options: [options.first], options: options, label: "Colors", name: :foo, pills: true }) %>
11
+
12
+ <%= pb_rails("button", props: {id: "clear-pills", text: "Clear All Options", variant: "secondary"}) %>
11
13
 
12
14
  <!-- This section is an example of the available JavaScript event hooks -->
13
15
  <%= javascript_tag defer: "defer" do %>
14
- document.addEventListener("pb-typeahead-kit-result-option-select", function(event) {
16
+ document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-option-select", function(event) {
15
17
  console.log('Option selected')
16
18
  console.dir(event.detail)
17
19
  })
18
- document.addEventListener("pb-typeahead-kit-result-option-remove", function(event) {
20
+ document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-option-remove", function(event) {
19
21
  console.log('Option removed')
20
22
  console.dir(event.detail)
21
23
  })
22
- document.addEventListener("pb-typeahead-kit-result-clear", function() {
24
+ document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-clear", function() {
23
25
  console.log('All options cleared')
24
26
  })
27
+
28
+ document.querySelector('#clear-pills').addEventListener('click', function() {
29
+ document.dispatchEvent(new CustomEvent('pb-typeahead-kit-typeahead-pills-example1:clear'))
30
+ })
25
31
  <% end %>
@@ -1,8 +1,24 @@
1
1
  Typeahead kit is data-driven. The minimum default fields are `label` and `value`.
2
2
 
3
- `{ label: "Foo", value: "bar" }`
3
+ This is an example of an option: `{ label: 'Windows', value: '#FFA500' }`
4
+
5
+ #### Rails: Default Options
6
+
7
+ You can also pass `default_options` which will populate the initial pill selections:
8
+
9
+ `default_options: [{ label: 'Windows', value: '#FFA500' }]`
4
10
 
5
11
  #### Rails: Subscribing to JS Events
6
- `pb-typeahead-kit-result-option-select` event to perform custom work when an option is clicked.
7
- `pb-typeahead-kit-result-option-remove` event to perform custom work when a pill is clicked.
8
- `pb-typeahead-kit-result-option-clear` event to perform custom work when all pills are removed upon clicking the X.
12
+
13
+ JavaScript events are triggered based on actions you take within the kit such as selection, removal and clearing.
14
+ This kit utilizes a default `id` prop named `react-select-input`. It is **highly advised** to send your own unique `id` prop when using this kit to ensure these events do not unintentionally affect other instances of the kit in the same view. The examples below will use the unique `id` prop named `typeahead-pills-example1`:
15
+
16
+ `pb-typeahead-kit-typeahead-pills-example1-result-option-select` event to perform custom work when an option is clicked.
17
+ `pb-typeahead-kit-typeahead-pills-example1-result-option-remove` event to perform custom work when a pill is clicked.
18
+ `pb-typeahead-kit-typeahead-pills-example1-result-option-clear` event to perform custom work when all pills are removed upon clicking the X.
19
+
20
+ #### Rails: Publishing JS Events
21
+
22
+ The same rule regarding the `id` prop applies to publishing JS events. The examples below will use the unique `id` prop named `typeahead-pills-example1`:
23
+
24
+ `pb-typeahead-kit-typeahead-pills-example1:clear` event to clear all options.
@@ -7,6 +7,8 @@ module Playbook
7
7
 
8
8
  prop :async, type: Playbook::Props::Boolean,
9
9
  default: false
10
+ prop :default_options, type: Playbook::Props::HashArray, default: []
11
+ prop :id
10
12
  prop :label
11
13
  prop :load_options
12
14
  prop :name
@@ -35,6 +37,8 @@ module Playbook
35
37
 
36
38
  def typeahead_with_pills_options
37
39
  base_options = {
40
+ defaultValue: default_options,
41
+ id: id,
38
42
  isMulti: true,
39
43
  label: label,
40
44
  options: options,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "7.4.0.pre.alpha1"
4
+ VERSION = "7.4.0.pre.test4"
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: 7.4.0.pre.alpha1
4
+ version: 7.4.0.pre.test4
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: 2020-10-27 00:00:00.000000000 Z
12
+ date: 2020-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -445,6 +445,23 @@ files:
445
445
  - app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb
446
446
  - app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml
447
447
  - app/pb_kits/playbook/pb_avatar_action_button/docs/index.js
448
+ - app/pb_kits/playbook/pb_background/_background.html.erb
449
+ - app/pb_kits/playbook/pb_background/_background.jsx
450
+ - app/pb_kits/playbook/pb_background/_background.scss
451
+ - app/pb_kits/playbook/pb_background/background.rb
452
+ - app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb
453
+ - app/pb_kits/playbook/pb_background/docs/_background_dark.jsx
454
+ - app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb
455
+ - app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx
456
+ - app/pb_kits/playbook/pb_background/docs/_background_image.html.erb
457
+ - app/pb_kits/playbook/pb_background/docs/_background_image.jsx
458
+ - app/pb_kits/playbook/pb_background/docs/_background_light.html.erb
459
+ - app/pb_kits/playbook/pb_background/docs/_background_light.jsx
460
+ - app/pb_kits/playbook/pb_background/docs/_background_white.html.erb
461
+ - app/pb_kits/playbook/pb_background/docs/_background_white.jsx
462
+ - app/pb_kits/playbook/pb_background/docs/_description.md
463
+ - app/pb_kits/playbook/pb_background/docs/example.yml
464
+ - app/pb_kits/playbook/pb_background/docs/index.js
448
465
  - app/pb_kits/playbook/pb_badge/_badge.html.erb
449
466
  - app/pb_kits/playbook/pb_badge/_badge.jsx
450
467
  - app/pb_kits/playbook/pb_badge/_badge.scss
@@ -668,10 +685,14 @@ files:
668
685
  - app/pb_kits/playbook/pb_date/_date.jsx
669
686
  - app/pb_kits/playbook/pb_date/_date.scss
670
687
  - app/pb_kits/playbook/pb_date/date.rb
688
+ - app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb
689
+ - app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx
671
690
  - app/pb_kits/playbook/pb_date/docs/_date_default.html.erb
672
691
  - app/pb_kits/playbook/pb_date/docs/_date_default.jsx
673
692
  - app/pb_kits/playbook/pb_date/docs/_date_timezone.html.erb
674
693
  - app/pb_kits/playbook/pb_date/docs/_date_timezone.md
694
+ - app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb
695
+ - app/pb_kits/playbook/pb_date/docs/_date_variants.jsx
675
696
  - app/pb_kits/playbook/pb_date/docs/_description.md
676
697
  - app/pb_kits/playbook/pb_date/docs/example.yml
677
698
  - app/pb_kits/playbook/pb_date/docs/index.js
@@ -759,6 +780,19 @@ files:
759
780
  - app/pb_kits/playbook/pb_date_stacked/docs/_footer.md
760
781
  - app/pb_kits/playbook/pb_date_stacked/docs/example.yml
761
782
  - app/pb_kits/playbook/pb_date_stacked/docs/index.js
783
+ - app/pb_kits/playbook/pb_date_time/_date_time.html.erb
784
+ - app/pb_kits/playbook/pb_date_time/_date_time.jsx
785
+ - app/pb_kits/playbook/pb_date_time/_date_time.scss
786
+ - app/pb_kits/playbook/pb_date_time/date_time.rb
787
+ - app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb
788
+ - app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx
789
+ - app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb
790
+ - app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx
791
+ - app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb
792
+ - app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx
793
+ - app/pb_kits/playbook/pb_date_time/docs/_description.md
794
+ - app/pb_kits/playbook/pb_date_time/docs/example.yml
795
+ - app/pb_kits/playbook/pb_date_time/docs/index.js
762
796
  - app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.html.erb
763
797
  - app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.jsx
764
798
  - app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss
@@ -1462,19 +1496,6 @@ files:
1462
1496
  - app/pb_kits/playbook/pb_selectable_icon/docs/example.yml
1463
1497
  - app/pb_kits/playbook/pb_selectable_icon/docs/index.js
1464
1498
  - app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb
1465
- - app/pb_kits/playbook/pb_selectable_list/_item.jsx
1466
- - app/pb_kits/playbook/pb_selectable_list/_selectable_list.html.erb
1467
- - app/pb_kits/playbook/pb_selectable_list/_selectable_list.jsx
1468
- - app/pb_kits/playbook/pb_selectable_list/_selectable_list.scss
1469
- - app/pb_kits/playbook/pb_selectable_list/_selectable_list_item.html.erb
1470
- - app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.html.erb
1471
- - app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx
1472
- - app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.html.erb
1473
- - app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx
1474
- - app/pb_kits/playbook/pb_selectable_list/docs/example.yml
1475
- - app/pb_kits/playbook/pb_selectable_list/docs/index.js
1476
- - app/pb_kits/playbook/pb_selectable_list/selectable_list.rb
1477
- - app/pb_kits/playbook/pb_selectable_list/selectable_list_item.rb
1478
1499
  - app/pb_kits/playbook/pb_source/_source.html.erb
1479
1500
  - app/pb_kits/playbook/pb_source/_source.jsx
1480
1501
  - app/pb_kits/playbook/pb_source/_source.scss
@@ -1749,6 +1770,7 @@ files:
1749
1770
  - app/pb_kits/playbook/pb_typeahead/_typeahead.html.erb
1750
1771
  - app/pb_kits/playbook/pb_typeahead/_typeahead.jsx
1751
1772
  - app/pb_kits/playbook/pb_typeahead/_typeahead.scss
1773
+ - app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx
1752
1774
  - app/pb_kits/playbook/pb_typeahead/components/Control.jsx
1753
1775
  - app/pb_kits/playbook/pb_typeahead/components/IndicatorsContainer.jsx
1754
1776
  - app/pb_kits/playbook/pb_typeahead/components/MenuList.jsx
@@ -1868,7 +1890,7 @@ homepage: http://playbook.powerapp.cloud
1868
1890
  licenses:
1869
1891
  - MIT
1870
1892
  metadata: {}
1871
- post_install_message:
1893
+ post_install_message:
1872
1894
  rdoc_options: []
1873
1895
  require_paths:
1874
1896
  - lib
@@ -1883,9 +1905,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1883
1905
  - !ruby/object:Gem::Version
1884
1906
  version: 1.3.1
1885
1907
  requirements: []
1886
- rubyforge_project:
1908
+ rubyforge_project:
1887
1909
  rubygems_version: 2.7.3
1888
- signing_key:
1910
+ signing_key:
1889
1911
  specification_version: 4
1890
1912
  summary: Playbook Design System
1891
1913
  test_files: []
@@ -1,92 +0,0 @@
1
- /* @flow */
2
- import React, { Node } from 'react'
3
- import classnames from 'classnames'
4
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
- import { globalProps } from '../utilities/globalProps.js'
6
- import { Checkbox, ListItem, Radio } from '..'
7
-
8
- type SelectableListItemProps = {
9
- aria?: object,
10
- children: array<Node> | Node,
11
- checked?: boolean,
12
- className?: string,
13
- data?: object,
14
- defaultChecked?: boolean,
15
- id?: string,
16
- label?: string,
17
- text?: string,
18
- name?: string,
19
- value?: string,
20
- variant?: string,
21
- onChange: (boolean)=>void,
22
- }
23
-
24
- const SelectableListItem = ({
25
- aria = {},
26
- checked = false,
27
- children,
28
- className,
29
- data = {},
30
- defaultChecked,
31
- id,
32
- label,
33
- text,
34
- name = '',
35
- value = '',
36
- variant,
37
- onChange = () => {},
38
- ...props
39
- }: SelectableListItemProps) => {
40
- const ariaProps = buildAriaProps(aria)
41
- const dataProps = buildDataProps(data)
42
- const classes = classnames(
43
- buildCss('pb_selectable_list_item_kit'),
44
- globalProps(props),
45
- className
46
- )
47
-
48
- return (
49
- <ListItem {...props}>
50
- <div
51
- {...ariaProps}
52
- {...dataProps}
53
- className={classes}
54
- htmlFor={id}
55
- >
56
- <Choose>
57
- <When condition={variant == 'checkbox'}>
58
- <Checkbox
59
- checked={checked}
60
- id={id}
61
- name={name}
62
- onChange={onChange}
63
- // eslint suppressor, text is needed to display on screen
64
- text={label || (text && false)}
65
- type="checkbox"
66
- value={value}
67
- {...props}
68
- />
69
- {children}
70
- </When>
71
- <When condition={variant == 'radio'}>
72
- <Radio
73
- defaultChecked={defaultChecked}
74
- id={id}
75
- label={label}
76
- name={name}
77
- onChange={onChange}
78
- type="radio"
79
- value={value}
80
- {...props}
81
- />
82
- {children}
83
- </When>
84
- <Otherwise>{children}</Otherwise>
85
- </Choose>
86
-
87
- </div>
88
- </ListItem>
89
- )
90
- }
91
-
92
- export default SelectableListItem
@@ -1,11 +0,0 @@
1
- <%= content_tag(:div,
2
- aria: object.aria,
3
- class: object.classname,
4
- data: object.data,
5
- id: object.id) do %>
6
- <%= pb_rails("list") do %>
7
- <% object.items.each do |item| %>
8
- <%= pb_rails("selectable_list/selectable_list_item", props: item.merge(variant: object.variant) )%>
9
- <% end %>
10
- <% end %>
11
- <% end %>
@@ -1,47 +0,0 @@
1
- /* @flow */
2
- import React from 'react'
3
- import classnames from 'classnames'
4
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
5
- import { globalProps } from '../utilities/globalProps.js'
6
- import { List } from '..'
7
- import SelectableListItem from './_item.jsx'
8
-
9
- type SelectableListProps = {
10
- aria?: object,
11
- children?: Node,
12
- className?: string,
13
- data?: object,
14
- id?: string,
15
- variant?: 'checkbox' | 'radio',
16
- }
17
-
18
- const SelectableList = (props: SelectableListProps) => {
19
- const {
20
- aria = {},
21
- children,
22
- className,
23
- data = {},
24
- id,
25
- } = props
26
-
27
- const ariaProps = buildAriaProps(aria)
28
- const classes = classnames(buildCss('pb_selectable_list_kit'), globalProps(props), className)
29
- const dataProps = buildDataProps(data)
30
-
31
- return (
32
- <div
33
- {...ariaProps}
34
- {...dataProps}
35
- className={classes}
36
- id={id}
37
- >
38
- <List {...props}>
39
- {children}
40
- </List>
41
- </div>
42
- )
43
- }
44
-
45
- SelectableList.Item = SelectableListItem
46
-
47
- export default SelectableList
@@ -1,17 +0,0 @@
1
- @import "../tokens/colors";
2
- @import "../tokens/spacing";
3
-
4
- [class^=pb_selectable_list]{
5
- margin-bottom: 0px;
6
- [class^=pb_item_kit] {
7
- &:hover {
8
- background-color: $bg_light;
9
- }
10
- }
11
- [class^=pb_radio_kit] {
12
- margin-left: $space_xs;
13
- }
14
- [class^=pb_checkbox_kit] {
15
- margin-left: $space_xs;
16
- }
17
- }