playbook_ui 14.4.0.pre.alpha.PLAY1547reactzoompanpinchlightbox3613893 → 14.4.0.pre.alpha.PLAY1562highchartsbump3819

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/SortIconButton.tsx +4 -23
  3. data/app/pb_kits/playbook/pb_contact/_contact.tsx +5 -17
  4. data/app/pb_kits/playbook/pb_contact/contact.html.erb +6 -14
  5. data/app/pb_kits/playbook/pb_contact/contact.rb +0 -4
  6. data/app/pb_kits/playbook/pb_contact/contact.test.js +1 -1
  7. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +3 -4
  8. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +1 -1
  9. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +0 -4
  10. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +3 -6
  11. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.html.erb +1 -1
  12. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_header_styles.scss +2 -6
  13. data/app/pb_kits/playbook/pb_dialog/_dialog.scss +0 -2
  14. data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +1 -1
  15. data/app/pb_kits/playbook/pb_map/_map_controls.tsx +1 -7
  16. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +4 -15
  17. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_page_change.jsx +1 -12
  18. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_page_change_react.md +1 -3
  19. data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +2 -10
  20. data/app/pb_kits/playbook/pb_radio/_radio.tsx +33 -92
  21. data/app/pb_kits/playbook/pb_radio/docs/example.yml +0 -1
  22. data/app/pb_kits/playbook/pb_radio/docs/index.js +0 -1
  23. data/app/pb_kits/playbook/pb_rich_text_editor/TipTap/ToolbarDropdown.tsx +5 -12
  24. data/app/pb_kits/playbook/pb_select/_select.tsx +2 -5
  25. data/app/pb_kits/playbook/pb_select/select.html.erb +1 -1
  26. data/app/pb_kits/playbook/pb_select/select.rb +0 -4
  27. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -0
  28. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +1 -0
  29. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +0 -14
  30. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +0 -3
  31. data/app/pb_kits/playbook/pb_typeahead/components/Control.tsx +5 -6
  32. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -2
  33. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +0 -1
  34. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +1 -2
  35. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -6
  36. data/app/pb_kits/playbook/utilities/icons/allicons.tsx +0 -123
  37. data/dist/chunks/_typeahead-D7A7UtDj.js +22 -0
  38. data/dist/chunks/_weekday_stacked-cRBjVQjA.js +45 -0
  39. data/dist/chunks/lib-D2U4I1U6.js +16 -0
  40. data/dist/chunks/{pb_form_validation-D9zkwt2b.js → pb_form_validation-zV9OpdSt.js} +1 -1
  41. data/dist/chunks/vendor.js +1 -1
  42. data/dist/playbook-doc.js +1 -1
  43. data/dist/playbook-rails-react-bindings.js +1 -1
  44. data/dist/playbook-rails.js +1 -1
  45. data/dist/playbook.css +1 -1
  46. data/lib/playbook/version.rb +1 -1
  47. metadata +6 -11
  48. data/app/pb_kits/playbook/pb_radio/docs/_radio_custom_children.jsx +0 -59
  49. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_margin_bottom.html.erb +0 -88
  50. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_margin_bottom.jsx +0 -60
  51. data/app/pb_kits/playbook/utilities/icons/angle-down.svg +0 -3
  52. data/app/pb_kits/playbook/utilities/icons/envelope.svg +0 -3
  53. data/dist/chunks/_typeahead-C7ICra83.js +0 -22
  54. data/dist/chunks/_weekday_stacked-BNuGWnXO.js +0 -45
  55. data/dist/chunks/lib-CEpcaI8y.js +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a38cf7800d4c1c252a9fcde5c4763139929a99660c62d174def22cb8d6a77b3
4
- data.tar.gz: 3170f05f36d97eb22893262015962d73107934843fbc57d4eff4a35355896e63
3
+ metadata.gz: 97228845b448a163135025419bb6c223b4c4b0f37f4aad4cf239f9d3bf21639a
4
+ data.tar.gz: cbb30004b258be8f9bf2cc04e0f4d594bc90f94d89aeb97b57e8927c590d4daf
5
5
  SHA512:
6
- metadata.gz: 34d6d6a426deea35ac5c5cba2101ff1edba460c7b8733a21845b2e6217a4bb8024837e72fa4d73e500ed470894d3a167575beada2bdd3588d0976b821a5181ba
7
- data.tar.gz: 95ee571a2abf4d30ca88ea2d64351f7189b14e81abf5992ec2325042fa1bf876525b7f97b065f382fa39d0d70050fd305732e8d12146536020ae8d797ae93d67
6
+ metadata.gz: a95c812b64ce4a792bbb8f5b433cef7cb74b20b4224ae8e81ba83d6379c60f839f2c089afc077f9ca189a2ba9e074a9e5943318cd6e54c66df71080fe401294d
7
+ data.tar.gz: 10edc2d87a52fab3c7de13169df6606146410f83fd47e3bc2c0497856166dd9283444b44c5119e4978c2c30dbaf2884375a16f7122f336f623733da1c6a6b243
@@ -4,7 +4,6 @@ import { Header } from "@tanstack/react-table"
4
4
  import { GenericObject } from "../../types"
5
5
 
6
6
  import Icon from "../../pb_icon/_icon"
7
- import { getAllIcons } from "../../utilities/icons/allicons"
8
7
 
9
8
  import { displayIcon } from "../Utilities/IconHelpers"
10
9
 
@@ -12,39 +11,21 @@ type SortIconButtonProps = {
12
11
  header: Header<GenericObject, unknown>
13
12
  sortIcon?: string | string[]
14
13
  }
15
-
16
14
  export const SortIconButton = ({ header, sortIcon }: SortIconButtonProps) => {
17
15
 
18
- const firstIcon = displayIcon(sortIcon)[0]
19
- const secondIcon = displayIcon(sortIcon)[1]
20
- const upIcon = getAllIcons()["arrowUpShortWide"].icon as unknown as { [key: string]: SVGElement }
21
- const downIcon = getAllIcons()["arrowDownShortWide"].icon as unknown as { [key: string]: SVGElement }
22
-
23
16
  return (
24
17
  <>
25
18
  {header.column.getIsSorted() === "desc" ? (
26
19
  <div className="sort-button-icon"
27
- key={firstIcon}
20
+ key={displayIcon(sortIcon)[0]}
28
21
  >
29
- { firstIcon === "arrow-up-short-wide" ? (
30
- <Icon
31
- className="svg-inline--fa"
32
- customIcon={upIcon}
33
- /> ) : (
34
- <Icon icon={firstIcon} />
35
- )}
22
+ <Icon icon={displayIcon(sortIcon)[0]} />
36
23
  </div>
37
24
  ) : (
38
25
  <div className="sort-button-icon"
39
- key={secondIcon}
26
+ key={displayIcon(sortIcon)[1]}
40
27
  >
41
- { secondIcon === "arrow-down-short-wide" ? (
42
- <Icon
43
- className="svg-inline--fa"
44
- customIcon={downIcon}
45
- /> ) : (
46
- <Icon icon={secondIcon} />
47
- )}
28
+ <Icon icon={displayIcon(sortIcon)[1]} />
48
29
  </div>
49
30
  )}
50
31
  </>
@@ -7,7 +7,6 @@ import { globalProps } from '../utilities/globalProps'
7
7
  import Body from '../pb_body/_body'
8
8
  import Caption from '../pb_caption/_caption'
9
9
  import Icon from '../pb_icon/_icon'
10
- import { getAllIcons } from "../utilities/icons/allicons"
11
10
 
12
11
  const contactTypeMap: { [key: string]: string } = {
13
12
  'cell': 'mobile',
@@ -19,8 +18,6 @@ const contactTypeMap: { [key: string]: string } = {
19
18
  'wrong-phone': 'phone-slash',
20
19
  }
21
20
 
22
- const envelopeIcon = getAllIcons()["envelope"].icon as unknown as { [key: string]: SVGElement }
23
-
24
21
  const formatContact = (contactString: string, contactType: string) => {
25
22
  if (contactType === 'email') return contactString
26
23
 
@@ -94,20 +91,11 @@ const Contact = (props: ContactProps): React.ReactElement => {
94
91
  dark={dark}
95
92
  tag="span"
96
93
  >
97
- {contactType === 'email' ? (
98
- <Icon
99
- className="svg-inline--fa envelope"
100
- customIcon={envelopeIcon}
101
- dark={dark}
102
- fixedWidth
103
- />
104
- ) : (
105
- <Icon
106
- dark={dark}
107
- fixedWidth
108
- icon={contactTypeMap[contactType] || 'phone'}
109
- />
110
- )}
94
+ <Icon
95
+ dark={dark}
96
+ fixedWidth
97
+ icon={contactTypeMap[contactType] || 'phone'}
98
+ />
111
99
  {` ${formatContact(contactValue, contactType)} `}
112
100
  {contactDetail && (
113
101
  <Caption
@@ -4,20 +4,12 @@
4
4
  classname: "pb_contact_kit",
5
5
  color: "light",
6
6
  dark: object.dark
7
- }) do %>
8
- <% if contact_type == "email" %>
9
- <%= pb_rails("icon", props: {
10
- custom_icon: Playbook::Engine::root.join(envelope_path),
11
- fixed_width: true,
12
- dark: object.dark
13
- }) %>
14
- <% else %>
15
- <%= pb_rails("icon", props: {
16
- icon: object.contact_icon,
17
- fixed_width: true,
18
- dark: object.dark
19
- }) %>
20
- <% end %>
7
+ }) do %>
8
+ <%= pb_rails("icon", props: {
9
+ icon: object.contact_icon,
10
+ fixed_width: true,
11
+ dark: object.dark
12
+ }) %>
21
13
  <%= object.formatted_contact_value if object.contact_value %>
22
14
 
23
15
  <%= pb_rails("caption", props: {
@@ -44,10 +44,6 @@ module Playbook
44
44
  end
45
45
  end
46
46
 
47
- def envelope_path
48
- "app/pb_kits/playbook/utilities/icons/envelope.svg"
49
- end
50
-
51
47
  private
52
48
 
53
49
  def formatted_value
@@ -79,7 +79,7 @@ test('returns correct icon', () => {
79
79
  expect(screen.getByTestId('test-home').querySelector('.pb_icon_kit')).toHaveClass('fa-phone')
80
80
  expect(screen.getByTestId('test-work').querySelector('.pb_icon_kit')).toHaveClass('fa-phone-office')
81
81
  expect(screen.getByTestId('test-work-cell').querySelector('.pb_icon_kit')).toHaveClass('fa-phone-laptop')
82
- expect(screen.getByTestId('test-email').querySelector('.pb_custom_icon')).toHaveClass('envelope')
82
+ expect(screen.getByTestId('test-email').querySelector('.pb_icon_kit')).toHaveClass('fa-envelope')
83
83
  expect(screen.getByTestId('test-wrong-phone').querySelector('.pb_icon_kit')).toHaveClass('fa-phone-slash')
84
84
  expect(screen.getByTestId('test-wrong-type').querySelector('.pb_icon_kit')).toHaveClass('fa-phone')
85
85
  expect(screen.getByTestId('test-extension').querySelector('.pb_icon_kit')).toHaveClass('fa-phone-plus')
@@ -3,7 +3,6 @@ import classnames from 'classnames'
3
3
 
4
4
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
5
  import { deprecatedProps, globalProps, GlobalProps } from '../utilities/globalProps'
6
- import { getAllIcons } from "../utilities/icons/allicons"
7
6
 
8
7
  import datePickerHelper from './date_picker_helper'
9
8
  import Icon from '../pb_icon/_icon'
@@ -162,7 +161,7 @@ useEffect(() => {
162
161
  }
163
162
  return base
164
163
  }
165
- const angleDown = getAllIcons()["angleDown"].icon as unknown as { [key: string]: SVGElement }
164
+
166
165
 
167
166
  return (
168
167
  <div
@@ -232,8 +231,8 @@ useEffect(() => {
232
231
  id={`${pickerId}-angle-down`}
233
232
  >
234
233
  <Icon
235
- className="angle_down_icon svg-inline--fa"
236
- customIcon={angleDown}
234
+ className="angle_down_icon"
235
+ icon="angle-down"
237
236
  />
238
237
  </div>
239
238
  </div>
@@ -61,7 +61,7 @@
61
61
  >
62
62
  <%= pb_rails("icon", props: {
63
63
  classname: "angle_down_icon",
64
- custom_icon: Playbook::Engine::root.join(angle_down_path)
64
+ icon: "angle-down"
65
65
  }) %>
66
66
  </div>
67
67
  <% end %>
@@ -118,10 +118,6 @@ module Playbook
118
118
  class_string += error_class
119
119
  class_string
120
120
  end
121
-
122
- def angle_down_path
123
- "app/pb_kits/playbook/utilities/icons/angle-down.svg"
124
- end
125
121
  end
126
122
  end
127
123
  end
@@ -5,9 +5,6 @@ import monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect'
5
5
  import weekSelect from "flatpickr/dist/plugins/weekSelect/weekSelect"
6
6
  import timeSelectPlugin from './plugins/timeSelect'
7
7
  import quickPickPlugin from './plugins/quickPick'
8
- import { getAllIcons } from '../utilities/icons/allicons';
9
-
10
- const angleDown = getAllIcons().angleDown.string
11
8
 
12
9
  const getPositionElement = (element: string | Element) => {
13
10
  return (typeof element === 'string') ? document.querySelectorAll(element)[0] : element
@@ -259,10 +256,10 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
259
256
  })
260
257
  }
261
258
 
262
- // Adding dropdown icons to year and month select
263
- dropdown.insertAdjacentHTML('afterend', `<i class="year-dropdown-icon">${angleDown}</i>`)
259
+ // Adding dropdown icons to year and month selects
260
+ dropdown.insertAdjacentHTML('afterend', '<i class="far fa-angle-down year-dropdown-icon" id="test-id"></i>')
264
261
  if (picker.monthElements[0].parentElement) {
265
- return picker.monthElements[0].insertAdjacentHTML('afterend', `<i class="month-dropdown-icon">${angleDown}</i>`)}
262
+ return picker.monthElements[0].insertAdjacentHTML('afterend', '<i class="far fa-angle-down month-dropdown-icon"></i>')}
266
263
  // if (picker.weekElements[0].parentElement){
267
264
  // return picker.weekElements[0].insertAdjacentHTML('afterend', '<i class="far fa-angle-down year-dropdown-icon" id="test-id"></i>')
268
265
  // }
@@ -14,4 +14,4 @@
14
14
  }
15
15
  fpInline.config.onChange.push(showAngleDownHandler)
16
16
  })
17
- <% end %>
17
+ <% end %>
@@ -76,11 +76,7 @@
76
76
  pointer-events: none;
77
77
  color: $text_lt_light;
78
78
  }
79
- .year-dropdown-icon svg, .month-dropdown-icon svg {
80
- width: 16px;
81
- margin-top: 6px;
82
- margin-left: -2px;
83
- }
79
+
84
80
  // Left - Right Arrow Styling
85
81
  .flatpickr-prev-month {
86
82
  display: flex;
@@ -117,4 +113,4 @@
117
113
  }
118
114
  }
119
115
  }
120
- }
116
+ }
@@ -187,8 +187,6 @@
187
187
 
188
188
  &_close_icon {
189
189
  cursor: pointer;
190
- font-size: $font_base;
191
- line-height: $lh_normal;
192
190
  }
193
191
 
194
192
  &_overlay {
@@ -2,7 +2,7 @@
2
2
  <%= pb_rails("flex", props: {classname:object.classname, spacing:"between", padding:"sm", align:"center"}) do %>
3
3
  <%= content.presence || object.title %>
4
4
 
5
- <button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %> >
5
+ <button class="dialog-button-class" type="button" data-close-dialog= <%= object.id %> >
6
6
  <%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon) }) %>
7
7
  </button>
8
8
  <% end %>
@@ -2,7 +2,6 @@ import React from "react";
2
2
  import Button from "../pb_button/_button";
3
3
  import Icon from "../pb_icon/_icon";
4
4
  import Flex from "../pb_flex/_flex";
5
- import { getAllIcons } from "../utilities/icons/allicons"
6
5
 
7
6
  type MapControlTypes = {
8
7
  zoomBtns?: boolean,
@@ -13,8 +12,6 @@ type MapControlTypes = {
13
12
  children?: React.ReactNode | React.ReactNode[]
14
13
  }
15
14
 
16
- const eyeIcon = getAllIcons()["eye"]
17
-
18
15
  const MapControls = ({
19
16
  zoomBtns,
20
17
  zoomInClick,
@@ -45,10 +42,7 @@ const MapControls = ({
45
42
  <Button className="map-flyto-button"
46
43
  onClick={flyToClick}
47
44
  >
48
- <Icon
49
- className="svg-inline--fa"
50
- customIcon={eyeIcon.icon as unknown as { [key: string]: SVGElement }}
51
- />
45
+ <Icon icon="eye" />
52
46
  </Button>
53
47
  ) : null}
54
48
  </>
@@ -88,9 +88,6 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
88
88
  item: []
89
89
  })
90
90
 
91
- const arrowDownElementId = `arrow_down_${id}`
92
- const arrowUpElementId = `arrow_up_${id}`
93
-
94
91
  const modifyRecursive = (tree: { [key: string]: any }[], check: boolean) => {
95
92
  if (!Array.isArray(tree)) {
96
93
  return
@@ -176,12 +173,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
176
173
  useEffect(() => {
177
174
  // Function to handle clicks outside the dropdown
178
175
  const handleClickOutside = (event: any) => {
179
- if (
180
- dropdownRef.current &&
181
- !dropdownRef.current.contains(event.target) &&
182
- event.target.id !== arrowDownElementId &&
183
- event.target.id !== arrowUpElementId
184
- ) {
176
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
185
177
  setIsDropdownClosed(true)
186
178
  }
187
179
  }
@@ -268,6 +260,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
268
260
 
269
261
  // Handle click on input wrapper(entire div with pills, typeahead, etc) so it doesn't close when input or form pill is clicked
270
262
  const handleInputWrapperClick = (e: any) => {
263
+ e.stopPropagation()
271
264
  if (
272
265
  e.target.id === "multiselect_input" ||
273
266
  e.target.classList.contains("pb_form_pill_tag")
@@ -525,20 +518,16 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
525
518
  </div>
526
519
 
527
520
  {isDropdownClosed ? (
528
- <div id={arrowDownElementId}
529
- key="chevron-down">
521
+ <div key="chevron-down">
530
522
  <Icon
531
523
  icon="chevron-down"
532
- id={arrowDownElementId}
533
524
  size="xs"
534
525
  />
535
526
  </div>
536
527
  ) : (
537
- <div id={arrowUpElementId}
538
- key="chevron-up">
528
+ <div key="chevron-up">
539
529
  <Icon
540
530
  icon="chevron-up"
541
- id={arrowUpElementId}
542
531
  size="xs"
543
532
  />
544
533
  </div>
@@ -22,16 +22,6 @@ const PaginationPageChange = (props) => {
22
22
 
23
23
  return (
24
24
  <div className="App">
25
- <Pagination
26
- current={activePage}
27
- key={`pagination-top-${activePage}`}
28
- marginBottom="xs"
29
- onChange={onPageChange}
30
- range={5}
31
- total={totalPages}
32
- {...props}
33
- />
34
-
35
25
  <Table
36
26
  marginBottom="xs"
37
27
  responsive="none"
@@ -59,8 +49,7 @@ const PaginationPageChange = (props) => {
59
49
  </Table>
60
50
 
61
51
  <Pagination
62
- current={activePage}
63
- key={`pagination-bottom-${activePage}`}
52
+ current={1}
64
53
  onChange={onPageChange}
65
54
  range={5}
66
55
  total={totalPages}
@@ -1,3 +1 @@
1
- You can use the `onChange` prop to control the data of your table. This prop is callback function that will allow you control the state.
2
-
3
- To ensure synchronization between multiple pagination components on a single page, use unique, dynamic keys for each pagination instance. Each Pagination component should have its own dynamic key that reflects the current active page: this example uses `pagination-top-${activePage}` and `pagination-bottom-${activePage}`.
1
+ You can use the `onChange` prop to control the data of your table. This prop is callback function that will allow you control the state.
@@ -12,7 +12,6 @@ import Icon from '../pb_icon/_icon'
12
12
  import PbReactPopover from '../pb_popover/_popover'
13
13
  import TextInput from '../pb_text_input/_text_input'
14
14
  import { GenericObject } from "../types"
15
- import { getAllIcons } from "../utilities/icons/allicons"
16
15
 
17
16
  type PassphraseProps = {
18
17
  aria?: { [key: string]: string },
@@ -97,9 +96,6 @@ const Passphrase = (props: PassphraseProps): React.ReactElement => {
97
96
  />
98
97
  )
99
98
 
100
- const shieldIcon = getAllIcons()["shieldCheck"]
101
- const eyeIcon = getAllIcons()["eye"]
102
-
103
99
  return (
104
100
  <div
105
101
  {...ariaProps}
@@ -139,8 +135,7 @@ const Passphrase = (props: PassphraseProps): React.ReactElement => {
139
135
  size="xs"
140
136
  >
141
137
  <Icon
142
- className="svg-inline--fa"
143
- customIcon={shieldIcon.icon as unknown as { [key: string]: SVGElement }}
138
+ icon="shield-check"
144
139
  marginRight="xs"
145
140
  />
146
141
  {tip}
@@ -178,10 +173,7 @@ const Passphrase = (props: PassphraseProps): React.ReactElement => {
178
173
  color="light"
179
174
  dark={dark}
180
175
  >
181
- <Icon
182
- className="svg-inline--fa"
183
- customIcon={eyeIcon.icon as unknown as { [key: string]: SVGElement }}
184
- />
176
+ <Icon icon="eye" />
185
177
  </Body>
186
178
  </span>
187
179
  </div>
@@ -1,30 +1,28 @@
1
- /*eslint-disable react/no-multi-comp */
1
+ /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
2
2
 
3
- import React, { forwardRef, useRef } from 'react'
3
+ import React, { forwardRef } from 'react'
4
4
  import Body from '../pb_body/_body'
5
- import Flex from '../pb_flex/_flex'
6
5
  import classnames from 'classnames'
7
6
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
8
7
  import { globalProps, GlobalProps } from '../utilities/globalProps'
9
8
 
10
9
  type RadioProps = {
11
- aria?: { [key: string]: string },
10
+ aria?: {[key: string]: string},
12
11
  alignment?: string,
13
12
  checked?: boolean,
14
13
  children?: React.ReactChild[] | React.ReactChild,
15
- customChildren?: boolean,
16
14
  className?: string,
17
15
  dark?: boolean,
18
- data?: { [key: string]: string },
16
+ data?: {[key: string]: string},
19
17
  disabled?: boolean,
20
18
  error?: boolean,
21
- htmlOptions?: { [key: string]: string | number | boolean | (() => void) },
19
+ htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
22
20
  id?: string,
23
21
  label: string,
24
22
  name?: string,
25
23
  value?: string,
26
24
  text?: string,
27
- onChange: (event: React.FormEvent<HTMLInputElement> | null) => void,
25
+ onChange: (event: React.FormEvent<HTMLInputElement> | null)=>void,
28
26
  } & GlobalProps
29
27
 
30
28
  const Radio = ({
@@ -32,11 +30,10 @@ const Radio = ({
32
30
  alignment,
33
31
  children,
34
32
  className,
35
- customChildren = false,
36
33
  dark = false,
34
+ data = {},
37
35
  disabled = false,
38
36
  error = false,
39
- data = {},
40
37
  htmlOptions = {},
41
38
  id,
42
39
  label,
@@ -46,28 +43,17 @@ const Radio = ({
46
43
  onChange = () => { void 0 },
47
44
  ...props
48
45
  }: RadioProps, ref: any) => {
49
- const radioRef = useRef(null);
50
-
51
- const ariaProps = buildAriaProps(aria);
52
- const dataProps = buildDataProps(data);
53
- const htmlProps = buildHtmlProps(htmlOptions);
46
+ const ariaProps = buildAriaProps(aria)
47
+ const dataProps = buildDataProps(data)
48
+ const htmlProps = buildHtmlProps(htmlOptions)
54
49
  const classes = classnames(
55
- buildCss('pb_radio_kit', alignment),
56
- dark ? 'dark' : null,
57
- error ? 'error' : null,
50
+ buildCss('pb_radio_kit', alignment ),
51
+ dark ? 'dark': null, error ? 'error': null,
58
52
  globalProps(props),
59
- className
60
- );
61
-
62
- const classesCustom = classnames(
63
- dark ? 'dark' : null,
64
- error ? 'error' : null,
65
- globalProps(props),
66
- className
67
- );
53
+ className)
68
54
 
69
55
  const displayRadio = (props: RadioProps & any) => {
70
- if (children && customChildren == false)
56
+ if (children)
71
57
  return (children)
72
58
  else
73
59
  return (
@@ -84,69 +70,24 @@ const Radio = ({
84
70
  />
85
71
  )}
86
72
 
87
- const handleContainerClick = (event: React.MouseEvent<HTMLDivElement, MouseEvent> | undefined) => {
88
- if (event) {
89
- const target = event.target as HTMLElement;
90
- if (
91
- target.id === 'pb-radio-children-wrapper' ||
92
- target.closest('#pb-radio-children-wrapper')
93
- ) {
94
- radioRef.current?.click();
95
- }
96
- }
97
- };
98
-
99
73
  return (
100
- customChildren ? (
101
- <Flex
102
- {...ariaProps}
103
- {...dataProps}
104
- {...htmlProps}
105
- align='center'
106
- className={classesCustom}
107
- cursor='pointer'
108
- htmlFor={id}
109
- htmlOptions={{
110
- onClick: ((event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
111
- handleContainerClick(event);
112
- }) as unknown as () => void
113
- }}
114
- id="radio-container"
115
- >
116
- <label className={buildCss('pb_radio_kit', alignment)}>
117
- <input
118
- disabled={disabled}
119
- id={id}
120
- name={name}
121
- onChange={onChange}
122
- ref={radioRef}
123
- type="radio"
124
- value={value}
125
- {...props}
126
- />
127
- <span className="pb_radio_button" />
128
- </label>
129
- <div id="pb-radio-children-wrapper"> {children} </div>
130
- </Flex>
131
- ) : (
132
- <label
133
- {...ariaProps}
134
- {...dataProps}
135
- {...htmlProps}
136
- className={classes}
137
- htmlFor={id}
138
- >
139
- <>{displayRadio(props)}</>
140
- <span className="pb_radio_button" />
141
- <Body
142
- dark={dark}
143
- status={error ? 'negative' : null}
144
- text={label}
145
- variant={null}
146
- />
147
- </label>
148
- )
149
- );
150
- };
74
+ <label
75
+ {...ariaProps}
76
+ {...dataProps}
77
+ {...htmlProps}
78
+ className={classes}
79
+ htmlFor={id}
80
+ >
81
+ <>{displayRadio(props)}</>
82
+ <span className="pb_radio_button" />
83
+ <Body
84
+ dark={dark}
85
+ status={error ? 'negative' : null}
86
+ text={label}
87
+ variant={null}
88
+ />
89
+ </label>
90
+ )
91
+ }
151
92
 
152
- export default forwardRef(Radio);
93
+ export default forwardRef(Radio)
@@ -15,7 +15,6 @@ examples:
15
15
  - radio_error: With Error
16
16
  - radio_alignment: Alignment
17
17
  - radio_disabled: Disabled
18
- - radio_custom_children: Custom Children
19
18
 
20
19
  swift:
21
20
  - radio_default_swift: Default
@@ -3,4 +3,3 @@ export { default as RadioCustom } from './_radio_custom.jsx'
3
3
  export { default as RadioError } from './_radio_error.jsx'
4
4
  export { default as RadioAlignment } from './_radio_alignment.jsx'
5
5
  export { default as RadioDisabled } from './_radio_disabled.jsx'
6
- export { default as RadioCustomChildren } from './_radio_custom_children.jsx'