playbook_ui 11.0.0.pre.alpha.2 → 11.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_background/_background.scss +8 -1
  3. data/app/pb_kits/playbook/pb_background/_background.tsx +9 -1
  4. data/app/pb_kits/playbook/pb_background/background.rb +76 -16
  5. data/app/pb_kits/playbook/pb_background/docs/_background_status.html.erb +14 -2
  6. data/app/pb_kits/playbook/pb_background/docs/_background_status.jsx +43 -2
  7. data/app/pb_kits/playbook/pb_background/docs/_background_status.md +1 -1
  8. data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -2
  9. data/app/pb_kits/playbook/pb_body/_body.scss +4 -4
  10. data/app/pb_kits/playbook/pb_body/_body.tsx +5 -4
  11. data/app/pb_kits/playbook/pb_body/_body_mixins.scss +7 -3
  12. data/app/pb_kits/playbook/pb_body/body.rb +4 -3
  13. data/app/pb_kits/playbook/pb_body/body.test.js +12 -9
  14. data/app/pb_kits/playbook/pb_body/docs/_body_light.html.erb +4 -4
  15. data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +4 -4
  16. data/app/pb_kits/playbook/pb_body/docs/_description.md +2 -2
  17. data/app/pb_kits/playbook/pb_body/docs/_footer.md +1 -1
  18. data/app/pb_kits/playbook/pb_button/button.rb +5 -5
  19. data/app/pb_kits/playbook/pb_caption/_caption.tsx +1 -1
  20. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +3 -1
  21. data/app/pb_kits/playbook/pb_caption/docs/_caption_colors.html.erb +2 -1
  22. data/app/pb_kits/playbook/pb_caption/docs/_caption_colors.jsx +5 -0
  23. data/app/pb_kits/playbook/pb_card/_card.tsx +5 -5
  24. data/app/pb_kits/playbook/pb_checkbox/{_checkbox.jsx → _checkbox.tsx} +33 -29
  25. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +30 -18
  26. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +3 -0
  27. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +12 -1
  28. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +160 -0
  29. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +37 -11
  30. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -1
  31. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_month_and_year.html.erb +2 -2
  32. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_month_and_year.jsx +1 -1
  33. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_month_and_year.md +1 -1
  34. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.html.erb +6 -0
  35. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.jsx +21 -0
  36. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.md +1 -0
  37. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.html.erb +5 -0
  38. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.jsx +18 -0
  39. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.md +1 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +4 -0
  41. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +2 -0
  42. data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.js +137 -0
  43. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_day_styles.scss +27 -2
  44. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +1 -5
  45. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +63 -0
  46. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_week_styles.scss +127 -0
  47. data/app/pb_kits/playbook/pb_dialog/_dialog.jsx +60 -14
  48. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.jsx +153 -0
  50. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.md +1 -0
  51. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.jsx +130 -0
  52. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.md +1 -0
  53. data/app/pb_kits/playbook/pb_dialog/docs/example.yml +2 -0
  54. data/app/pb_kits/playbook/pb_dialog/docs/index.js +2 -0
  55. data/app/pb_kits/playbook/pb_form_pill/{_form_pill.jsx → _form_pill.tsx} +16 -12
  56. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_example.jsx +1 -1
  57. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_size.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.jsx +1 -1
  60. data/app/pb_kits/playbook/pb_hashtag/{_hashtag.jsx → _hashtag.tsx} +3 -4
  61. data/app/pb_kits/playbook/pb_radio/_radio.tsx +86 -0
  62. data/app/pb_kits/playbook/pb_select/{_select.jsx → _select.tsx} +34 -38
  63. data/app/pb_kits/playbook/pb_text_input/{_text_input.jsx → _text_input.tsx} +42 -43
  64. data/app/pb_kits/playbook/tokens/_colors.scss +17 -1
  65. data/app/pb_kits/playbook/utilities/props.ts +2 -2
  66. data/lib/playbook/version.rb +1 -1
  67. metadata +24 -10
  68. data/app/pb_kits/playbook/pb_radio/_radio.jsx +0 -78
@@ -1,8 +1,7 @@
1
- /* @flow */
2
1
  import React, { forwardRef } from 'react'
3
2
  import classnames from 'classnames'
4
3
 
5
- import { globalProps, domSafeProps } from '../utilities/globalProps'
4
+ import { globalProps, GlobalProps, domSafeProps } from '../utilities/globalProps'
6
5
  import { buildAriaProps, buildDataProps } from '../utilities/props'
7
6
 
8
7
  import Flex from '../pb_flex/_flex'
@@ -12,9 +11,9 @@ import Body from '../pb_body/_body'
12
11
  import Icon from '../pb_icon/_icon'
13
12
 
14
13
  type TextInputProps = {
15
- aria?: object,
16
- className: string,
17
- data?: object,
14
+ aria?: { [key: string]: string },
15
+ className?: string,
16
+ data?: { [key: string]: string },
18
17
  dark?: boolean,
19
18
  disabled?: boolean,
20
19
  error?: string,
@@ -22,7 +21,7 @@ type TextInputProps = {
22
21
  inline?: boolean,
23
22
  name: string,
24
23
  label: string,
25
- onChange: (String) => void,
24
+ onChange: (e: React.FormEvent<HTMLInputElement>) => void,
26
25
  placeholder: string,
27
26
  required?: boolean,
28
27
  type: string,
@@ -33,9 +32,9 @@ type TextInputProps = {
33
32
  alignment?: "right" | "left",
34
33
  border?: boolean,
35
34
  },
36
- }
35
+ } & GlobalProps
37
36
 
38
- const TextInput = (props: TextInputProps, ref: React.ElementRef<"input">) => {
37
+ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>) => {
39
38
  const {
40
39
  addOn = { icon: null, alignment: 'right', border: true },
41
40
  aria = {},
@@ -48,7 +47,7 @@ const TextInput = (props: TextInputProps, ref: React.ElementRef<"input">) => {
48
47
  inline = false,
49
48
  name,
50
49
  label,
51
- onChange = () => {},
50
+ onChange = () => { void 0 },
52
51
  placeholder,
53
52
  required,
54
53
  type = 'text',
@@ -104,34 +103,38 @@ const TextInput = (props: TextInputProps, ref: React.ElementRef<"input">) => {
104
103
  <React.Fragment>
105
104
  <Flex
106
105
  className={`add-on-${addOnAlignment} ${borderCss}`}
107
- inline="flex-container"
106
+ inline
108
107
  vertical="center"
109
108
  >
110
- <If condition={addOnAlignment == 'left'}>
111
- <>
112
- <Card
113
- className={`${addOnDarkModeCardCss} add-on-card card-left-aligned`}
114
- dark={dark}
115
- >
116
- {addOnIcon}
117
- </Card>
118
- {textInput}
119
- </>
120
- <Else />
121
- <>
122
- {textInput}
123
- <Card
124
- className={`${addOnDarkModeCardCss} add-on-card card-right-aligned`}
125
- dark={dark}
126
- >
127
- {addOnIcon}
128
- </Card>
129
- </>
130
- </If>
109
+ {addOnAlignment == 'left' && <>
110
+ <Card
111
+ className={`${addOnDarkModeCardCss} add-on-card card-left-aligned`}
112
+ dark={dark}
113
+ >
114
+ {addOnIcon}
115
+ </Card>
116
+ {textInput}
117
+ </> }
118
+ {addOnAlignment != 'left' && <>
119
+ {textInput}
120
+ <Card
121
+ className={`${addOnDarkModeCardCss} add-on-card card-right-aligned`}
122
+ dark={dark}
123
+ >
124
+ {addOnIcon}
125
+ </Card>
126
+ </> }
131
127
  </Flex>
132
128
  </React.Fragment>
133
129
  )
134
130
 
131
+ const render = (() => {
132
+ if(children) return children
133
+ if (shouldShowAddOn) return addOnInput
134
+
135
+ return textInput
136
+ })()
137
+
135
138
  return (
136
139
  <div
137
140
  {...ariaProps}
@@ -140,21 +143,17 @@ const TextInput = (props: TextInputProps, ref: React.ElementRef<"input">) => {
140
143
  >
141
144
  <Caption
142
145
  className="pb_text_input_kit_label"
143
- dark={dark}
144
146
  text={label}
145
147
  />
146
148
  <div className={`${addOnCss} text_input_wrapper`}>
147
- <Choose>
148
- <When condition={children}>{children}</When>
149
- <When condition={shouldShowAddOn}>{addOnInput}</When>
150
- <Otherwise>{textInput}</Otherwise>
151
- </Choose>
152
- <If condition={error}>
153
- <Body
154
- status="negative"
155
- text={error}
156
- />
157
- </If>
149
+ {render}
150
+
151
+ {error && <Body
152
+ status="negative"
153
+ text={error}
154
+ variant={null}
155
+ />
156
+ }
158
157
  </div>
159
158
  </div>
160
159
  )
@@ -153,21 +153,37 @@ $data_colors: (
153
153
 
154
154
  /* Status colors ----------------------*/
155
155
  $success: $green;
156
+ $success_secondary: lighten($success, 10%);
156
157
  $warning: $yellow;
158
+ $warning_secondary: lighten($warning, 10%);
157
159
  $error: $red;
158
160
  $error_dark: $red_dark;
159
161
  $error_dark_body: lighten($error_dark, 2%);
162
+ $error_secondary: lighten($error, 10%);
160
163
  $info: $teal;
164
+ $info_secondary : lighten($info, 10%);
161
165
  $neutral: $slate;
166
+ $neutral_secondary: lighten($neutral, 10%);
167
+ $primary: $primary;
168
+ $primary_secondary: lighten($primary, 10%);
169
+
162
170
  $status_colors: (
163
171
  success: $success,
172
+ success_secondary: $success_secondary,
164
173
  warning: $warning,
174
+ warning_secondary: $warning_secondary,
165
175
  error: $error,
176
+ error_secondary: $error_secondary,
166
177
  info: $info,
178
+ info_secondary: $info_secondary,
167
179
  neutral: $neutral,
168
- primary: $primary
180
+ neutral_secondary: $neutral_secondary,
181
+ primary: $primary,
182
+ primary_secondary: $primary_secondary
169
183
  );
170
184
 
185
+
186
+
171
187
  $status_color_text: (
172
188
  success: $success,
173
189
  warning: darken($warning, 10%),
@@ -22,7 +22,7 @@ const buildPrefixedProps = (prefix: string, data: {[key: string]: any}) =>
22
22
  *
23
23
  * @returns {() => {}} the noop function.
24
24
  */
25
- export const noop = () => {}
25
+ export const noop = (): void => { void 0 }
26
26
 
27
27
  /**
28
28
  * Maps a given aria object into HTML valid aria attribtues and their values.
@@ -47,5 +47,5 @@ export const buildDataProps = (data: {[key: string]: any}) => buildPrefixedProps
47
47
  * @param {Object} rules a 'classnames' compliant rules object, used to derive the root className.
48
48
  * @returns {String} the derived root className value.
49
49
  */
50
- export const buildCss = (...rules: string[]) => classnames(rules).replace(/\s/g, '_')
50
+ export const buildCss = (...rules: (string | { [x: string]: string; })[]): string => classnames(rules).replace(/\s/g, '_')
51
51
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Playbook
4
4
  PREVIOUS_VERSION = "10.26.0"
5
- VERSION = "11.0.0.pre.alpha.2"
5
+ VERSION = "11.0.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.0.0.pre.alpha.2
4
+ version: 11.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-06-01 00:00:00.000000000 Z
12
+ date: 2022-06-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -510,8 +510,8 @@ files:
510
510
  - app/pb_kits/playbook/pb_card/docs/_card_tag.jsx
511
511
  - app/pb_kits/playbook/pb_card/docs/example.yml
512
512
  - app/pb_kits/playbook/pb_card/docs/index.js
513
- - app/pb_kits/playbook/pb_checkbox/_checkbox.jsx
514
513
  - app/pb_kits/playbook/pb_checkbox/_checkbox.scss
514
+ - app/pb_kits/playbook/pb_checkbox/_checkbox.tsx
515
515
  - app/pb_kits/playbook/pb_checkbox/checkbox.html.erb
516
516
  - app/pb_kits/playbook/pb_checkbox/checkbox.rb
517
517
  - app/pb_kits/playbook/pb_checkbox/checkbox.test.js
@@ -648,6 +648,7 @@ files:
648
648
  - app/pb_kits/playbook/pb_date_picker/_date_picker.scss
649
649
  - app/pb_kits/playbook/pb_date_picker/date_picker.html.erb
650
650
  - app/pb_kits/playbook/pb_date_picker/date_picker.rb
651
+ - app/pb_kits/playbook/pb_date_picker/date_picker.test.js
651
652
  - app/pb_kits/playbook/pb_date_picker/date_picker_helper.js
652
653
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_anti_patterns.html.erb
653
654
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb
@@ -686,12 +687,19 @@ files:
686
687
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_change.md
687
688
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb
688
689
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx
690
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.html.erb
691
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.jsx
692
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.md
693
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.html.erb
694
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.jsx
695
+ - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_week.md
689
696
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.html.erb
690
697
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.jsx
691
698
  - app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.md
692
699
  - app/pb_kits/playbook/pb_date_picker/docs/_description.md
693
700
  - app/pb_kits/playbook/pb_date_picker/docs/example.yml
694
701
  - app/pb_kits/playbook/pb_date_picker/docs/index.js
702
+ - app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.js
695
703
  - app/pb_kits/playbook/pb_date_picker/sass_partials/_calendar_input_icon.scss
696
704
  - app/pb_kits/playbook/pb_date_picker/sass_partials/_day_styles.scss
697
705
  - app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss
@@ -699,6 +707,8 @@ files:
699
707
  - app/pb_kits/playbook/pb_date_picker/sass_partials/_inline_styles.scss
700
708
  - app/pb_kits/playbook/pb_date_picker/sass_partials/_month_and_year_styles.scss
701
709
  - app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss
710
+ - app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss
711
+ - app/pb_kits/playbook/pb_date_picker/sass_partials/_week_styles.scss
702
712
  - app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx
703
713
  - app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss
704
714
  - app/pb_kits/playbook/pb_date_range_inline/date_range_inline.html.erb
@@ -790,6 +800,10 @@ files:
790
800
  - app/pb_kits/playbook/pb_dialog/docs/_dialog_should_close_on_overlay.jsx
791
801
  - app/pb_kits/playbook/pb_dialog/docs/_dialog_should_close_on_overlay.md
792
802
  - app/pb_kits/playbook/pb_dialog/docs/_dialog_sizes.jsx
803
+ - app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.jsx
804
+ - app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.md
805
+ - app/pb_kits/playbook/pb_dialog/docs/_dialog_status.jsx
806
+ - app/pb_kits/playbook/pb_dialog/docs/_dialog_status.md
793
807
  - app/pb_kits/playbook/pb_dialog/docs/example.yml
794
808
  - app/pb_kits/playbook/pb_dialog/docs/index.js
795
809
  - app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.jsx
@@ -944,8 +958,8 @@ files:
944
958
  - app/pb_kits/playbook/pb_form_group/docs/index.js
945
959
  - app/pb_kits/playbook/pb_form_group/form_group.html.erb
946
960
  - app/pb_kits/playbook/pb_form_group/form_group.rb
947
- - app/pb_kits/playbook/pb_form_pill/_form_pill.jsx
948
961
  - app/pb_kits/playbook/pb_form_pill/_form_pill.scss
962
+ - app/pb_kits/playbook/pb_form_pill/_form_pill.tsx
949
963
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_example.html.erb
950
964
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_example.jsx
951
965
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_example.md
@@ -987,8 +1001,8 @@ files:
987
1001
  - app/pb_kits/playbook/pb_gauge/docs/index.js
988
1002
  - app/pb_kits/playbook/pb_gauge/gauge.html.erb
989
1003
  - app/pb_kits/playbook/pb_gauge/gauge.rb
990
- - app/pb_kits/playbook/pb_hashtag/_hashtag.jsx
991
1004
  - app/pb_kits/playbook/pb_hashtag/_hashtag.scss
1005
+ - app/pb_kits/playbook/pb_hashtag/_hashtag.tsx
992
1006
  - app/pb_kits/playbook/pb_hashtag/docs/_description.md
993
1007
  - app/pb_kits/playbook/pb_hashtag/docs/_footer.md
994
1008
  - app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.html.erb
@@ -1477,8 +1491,8 @@ files:
1477
1491
  - app/pb_kits/playbook/pb_progress_step/progress_step.rb
1478
1492
  - app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb
1479
1493
  - app/pb_kits/playbook/pb_progress_step/progress_step_item.rb
1480
- - app/pb_kits/playbook/pb_radio/_radio.jsx
1481
1494
  - app/pb_kits/playbook/pb_radio/_radio.scss
1495
+ - app/pb_kits/playbook/pb_radio/_radio.tsx
1482
1496
  - app/pb_kits/playbook/pb_radio/docs/_description.md
1483
1497
  - app/pb_kits/playbook/pb_radio/docs/_footer.md
1484
1498
  - app/pb_kits/playbook/pb_radio/docs/_radio_alignment.html.erb
@@ -1542,8 +1556,8 @@ files:
1542
1556
  - app/pb_kits/playbook/pb_section_separator/docs/index.js
1543
1557
  - app/pb_kits/playbook/pb_section_separator/section_separator.html.erb
1544
1558
  - app/pb_kits/playbook/pb_section_separator/section_separator.rb
1545
- - app/pb_kits/playbook/pb_select/_select.jsx
1546
1559
  - app/pb_kits/playbook/pb_select/_select.scss
1560
+ - app/pb_kits/playbook/pb_select/_select.tsx
1547
1561
  - app/pb_kits/playbook/pb_select/docs/_description.md
1548
1562
  - app/pb_kits/playbook/pb_select/docs/_footer.md
1549
1563
  - app/pb_kits/playbook/pb_select/docs/_select_blank.html.erb
@@ -1769,8 +1783,8 @@ files:
1769
1783
  - app/pb_kits/playbook/pb_table/table.test.js
1770
1784
  - app/pb_kits/playbook/pb_table/table_row.html.erb
1771
1785
  - app/pb_kits/playbook/pb_table/table_row.rb
1772
- - app/pb_kits/playbook/pb_text_input/_text_input.jsx
1773
1786
  - app/pb_kits/playbook/pb_text_input/_text_input.scss
1787
+ - app/pb_kits/playbook/pb_text_input/_text_input.tsx
1774
1788
  - app/pb_kits/playbook/pb_text_input/add_on.html.erb
1775
1789
  - app/pb_kits/playbook/pb_text_input/add_on.rb
1776
1790
  - app/pb_kits/playbook/pb_text_input/docs/_description.md
@@ -2208,9 +2222,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
2208
2222
  version: '0'
2209
2223
  required_rubygems_version: !ruby/object:Gem::Requirement
2210
2224
  requirements:
2211
- - - ">"
2225
+ - - ">="
2212
2226
  - !ruby/object:Gem::Version
2213
- version: 1.3.1
2227
+ version: '0'
2214
2228
  requirements: []
2215
2229
  rubygems_version: 3.3.7
2216
2230
  signing_key:
@@ -1,78 +0,0 @@
1
- /* @flow */
2
- /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
3
-
4
- import React, { forwardRef } from 'react'
5
- import Body from '../pb_body/_body'
6
- import classnames from 'classnames'
7
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
8
- import { globalProps } from '../utilities/globalProps'
9
-
10
- type RadioProps = {
11
- aria?: object,
12
- alignment?: String,
13
- checked?: Boolean,
14
- children?: Node,
15
- className?: String,
16
- dark?: boolean,
17
- data?: object,
18
- error?: Boolean,
19
- id?: String,
20
- label: String,
21
- name: String,
22
- value: String,
23
- text: String,
24
- onChange: (Boolean)=>void,
25
- }
26
-
27
- const Radio = ({
28
- aria = {},
29
- alignment = '',
30
- children,
31
- className,
32
- dark = false,
33
- data = {},
34
- error = false,
35
- id,
36
- label,
37
- name = 'radio_name',
38
- text = 'Radio Text',
39
- value = 'radio_text',
40
- onChange = () => {},
41
- ...props
42
- }: RadioProps, ref) => {
43
- const ariaProps = buildAriaProps(aria)
44
- const dataProps = buildDataProps(data)
45
- const classes = classnames(buildCss('pb_radio_kit'), { error }, { dark }, globalProps(props), alignment, className)
46
-
47
- return (
48
- <label
49
- {...ariaProps}
50
- {...dataProps}
51
- className={classes}
52
- htmlFor={id}
53
- >
54
- <If condition={children}>
55
- {children}
56
- <Else />
57
- <input
58
- {...props}
59
- id={id}
60
- name={name}
61
- onChange={onChange}
62
- ref={ref}
63
- text={text}
64
- type="radio"
65
- value={value}
66
- />
67
- </If>
68
- <span className="pb_radio_button" />
69
- <Body
70
- dark={dark}
71
- status={error ? 'negative' : null}
72
- text={label}
73
- />
74
- </label>
75
- )
76
- }
77
-
78
- export default forwardRef(Radio)