playbook_ui 13.12.0.pre.alpha.play1051testhighcharts1581 → 13.12.0.pre.alpha.play10281596

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 (137) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +5 -1
  3. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +6 -2
  4. data/app/pb_kits/playbook/pb_background/_background.tsx +9 -5
  5. data/app/pb_kits/playbook/pb_badge/_badge.tsx +5 -1
  6. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +39 -39
  7. data/app/pb_kits/playbook/pb_body/_body.tsx +5 -1
  8. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumb_item.tsx +5 -1
  9. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.tsx +5 -2
  10. data/app/pb_kits/playbook/pb_button/_button.tsx +8 -1
  11. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.tsx +5 -1
  12. data/app/pb_kits/playbook/pb_caption/_caption.tsx +6 -1
  13. data/app/pb_kits/playbook/pb_card/_card.tsx +5 -1
  14. data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +7 -2
  15. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +71 -71
  16. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +5 -3
  17. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +5 -1
  18. data/app/pb_kits/playbook/pb_contact/_contact.tsx +5 -1
  19. data/app/pb_kits/playbook/pb_currency/_currency.tsx +5 -1
  20. data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts +208 -210
  21. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts +207 -209
  22. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.tsx +5 -1
  23. data/app/pb_kits/playbook/pb_date/_date.tsx +12 -7
  24. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +5 -1
  25. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +5 -1
  26. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx +15 -4
  27. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +12 -5
  28. data/app/pb_kits/playbook/pb_date_time/_date_time.tsx +5 -1
  29. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +5 -1
  30. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.tsx +15 -4
  31. data/app/pb_kits/playbook/pb_detail/_detail.tsx +5 -1
  32. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +11 -3
  33. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.tsx +8 -3
  34. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.tsx +5 -1
  35. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.tsx +8 -1
  36. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +6 -2
  37. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +6 -1
  38. data/app/pb_kits/playbook/pb_flex/_flex.tsx +6 -1
  39. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +6 -1
  40. data/app/pb_kits/playbook/pb_form_group/_form_group.tsx +5 -1
  41. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +7 -1
  42. data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +54 -62
  43. data/app/pb_kits/playbook/pb_hashtag/_hashtag.tsx +5 -1
  44. data/app/pb_kits/playbook/pb_highlight/_highlight.tsx +5 -0
  45. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +10 -3
  46. data/app/pb_kits/playbook/pb_icon/_icon.tsx +7 -1
  47. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.tsx +5 -1
  48. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.tsx +5 -1
  49. data/app/pb_kits/playbook/pb_icon_value/_icon_value.tsx +5 -1
  50. data/app/pb_kits/playbook/pb_image/_image.tsx +6 -1
  51. data/app/pb_kits/playbook/pb_label_pill/_label_pill.tsx +5 -1
  52. data/app/pb_kits/playbook/pb_label_value/_label_value.tsx +6 -2
  53. data/app/pb_kits/playbook/pb_layout/_layout.tsx +6 -1
  54. data/app/pb_kits/playbook/pb_legend/_legend.tsx +5 -1
  55. data/app/pb_kits/playbook/pb_lightbox/Header/_lightbox_header.tsx +6 -1
  56. data/app/pb_kits/playbook/pb_lightbox/_lightbox.tsx +5 -1
  57. data/app/pb_kits/playbook/pb_line_graph/_line_graph.tsx +44 -44
  58. data/app/pb_kits/playbook/pb_list/_list.tsx +7 -2
  59. data/app/pb_kits/playbook/pb_list/_list_item.tsx +5 -1
  60. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +5 -1
  61. data/app/pb_kits/playbook/pb_map/_map.tsx +6 -1
  62. data/app/pb_kits/playbook/pb_message/_message.tsx +5 -1
  63. data/app/pb_kits/playbook/pb_message/_message_mention.tsx +5 -1
  64. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +5 -1
  65. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx +5 -1
  66. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default_swift.md +11 -0
  67. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_props_swift.md +7 -0
  68. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse_swift.md +13 -0
  69. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_size_swift.md +11 -0
  70. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +6 -0
  71. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.tsx +5 -1
  72. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_default_swift.md +15 -0
  73. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_props_swift.md +5 -0
  74. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_small_swift.md +15 -0
  75. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_xsmall_swift.md +15 -0
  76. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/example.yml +6 -0
  77. data/app/pb_kits/playbook/pb_nav/_item.tsx +7 -2
  78. data/app/pb_kits/playbook/pb_nav/_nav.tsx +5 -1
  79. data/app/pb_kits/playbook/pb_online_status/_online_status.tsx +5 -1
  80. data/app/pb_kits/playbook/pb_passphrase/_passphrase.tsx +6 -2
  81. data/app/pb_kits/playbook/pb_person/_person.tsx +5 -0
  82. data/app/pb_kits/playbook/pb_person_contact/_person_contact.tsx +5 -1
  83. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +8 -2
  84. data/app/pb_kits/playbook/pb_pill/_pill.tsx +5 -1
  85. data/app/pb_kits/playbook/pb_popover/_popover.tsx +6 -1
  86. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.tsx +5 -1
  87. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.tsx +9 -3
  88. data/app/pb_kits/playbook/pb_progress_step/_progress_step.tsx +5 -1
  89. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.tsx +6 -2
  90. data/app/pb_kits/playbook/pb_radio/_radio.tsx +5 -1
  91. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +7 -1
  92. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +5 -1
  93. data/app/pb_kits/playbook/pb_select/_select.tsx +6 -1
  94. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +6 -2
  95. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.tsx +5 -0
  96. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.tsx +5 -0
  97. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +11 -3
  98. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.tsx +5 -1
  99. data/app/pb_kits/playbook/pb_source/_source.tsx +5 -1
  100. data/app/pb_kits/playbook/pb_star_rating/_star_rating.tsx +5 -1
  101. data/app/pb_kits/playbook/pb_stat_change/_stat_change.tsx +14 -2
  102. data/app/pb_kits/playbook/pb_stat_value/_stat_value.tsx +6 -0
  103. data/app/pb_kits/playbook/pb_table/_table.tsx +5 -1
  104. data/app/pb_kits/playbook/pb_table/_table_row.tsx +5 -1
  105. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +5 -1
  106. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on_swift.md +35 -0
  107. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default_swift.md +29 -0
  108. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_disabled_swift.md +13 -0
  109. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error_swift.md +24 -0
  110. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_props_swift.md +13 -0
  111. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +7 -0
  112. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +5 -2
  113. data/app/pb_kits/playbook/pb_time/_time.tsx +9 -2
  114. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +5 -1
  115. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +6 -2
  116. data/app/pb_kits/playbook/pb_timeline/_item.tsx +9 -2
  117. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +5 -1
  118. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +5 -1
  119. data/app/pb_kits/playbook/pb_title/_title.tsx +5 -1
  120. data/app/pb_kits/playbook/pb_title_count/_title_count.tsx +5 -1
  121. data/app/pb_kits/playbook/pb_title_detail/_title_detail.tsx +16 -3
  122. data/app/pb_kits/playbook/pb_toggle/_toggle.tsx +5 -0
  123. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default_swift.md +11 -0
  124. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_name_swift.md +10 -0
  125. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_props_swift.md +6 -0
  126. data/app/pb_kits/playbook/pb_toggle/docs/example.yml +4 -0
  127. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +5 -1
  128. data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +38 -38
  129. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +7 -2
  130. data/app/pb_kits/playbook/pb_user/_user.tsx +5 -1
  131. data/app/pb_kits/playbook/pb_user_badge/_user_badge.tsx +5 -1
  132. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.tsx +5 -1
  133. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +5 -1
  134. data/app/pb_kits/playbook/utilities/props.ts +16 -0
  135. data/dist/playbook-rails.js +7 -7
  136. data/lib/playbook/version.rb +1 -1
  137. metadata +18 -2
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
4
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
5
  import { globalProps } from '../utilities/globalProps'
6
6
 
7
7
  import Caption from '../pb_caption/_caption'
@@ -12,6 +12,7 @@ type SectionSeparatorProps = {
12
12
  className?: string,
13
13
  dark?: boolean,
14
14
  data?: { [key: string]: string; },
15
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
15
16
  id?: string,
16
17
  lineStyle?: "solid" | "dashed",
17
18
  orientation?: "horizontal" | "vertical",
@@ -25,6 +26,7 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
25
26
  children,
26
27
  className,
27
28
  data = {},
29
+ htmlOptions = {},
28
30
  id,
29
31
  lineStyle = 'solid',
30
32
  orientation = 'horizontal',
@@ -34,6 +36,7 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
34
36
  } = props
35
37
  const ariaProps = buildAriaProps(aria)
36
38
  const dataProps = buildDataProps(data)
39
+ const htmlProps = buildHtmlProps(htmlOptions)
37
40
  const classes = classnames(buildCss('pb_section_separator_kit', variant, orientation, lineStyle === "dashed" ? lineStyle : ""), globalProps(props), className)
38
41
 
39
42
  return (
@@ -41,6 +44,7 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
41
44
  <div
42
45
  {...ariaProps}
43
46
  {...dataProps}
47
+ {...htmlProps}
44
48
  className={classes}
45
49
  id={id}
46
50
  >
@@ -1,7 +1,7 @@
1
1
  import React, { forwardRef } from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
4
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
5
  import { globalProps, GlobalProps, domSafeProps } from '../utilities/globalProps'
6
6
  import type { InputCallback } from '../types'
7
7
 
@@ -24,6 +24,7 @@ type SelectProps = {
24
24
  data?: { [key: string]: string },
25
25
  disabled?: boolean,
26
26
  error?: string,
27
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
27
28
  id?: string,
28
29
  includeBlank?: string,
29
30
  inline?: boolean,
@@ -58,6 +59,7 @@ const Select = ({
58
59
  disabled = false,
59
60
  error,
60
61
  label,
62
+ htmlOptions = {},
61
63
  inline = false,
62
64
  multiple = false,
63
65
  name,
@@ -69,6 +71,7 @@ const Select = ({
69
71
  }: SelectProps, ref: React.LegacyRef<HTMLSelectElement>) => {
70
72
  const ariaProps = buildAriaProps(aria)
71
73
  const dataProps = buildDataProps(data)
74
+ const htmlProps = buildHtmlProps(htmlOptions)
72
75
  const optionsList = createOptions(options)
73
76
 
74
77
  const inlineClass = inline ? 'inline' : null
@@ -89,6 +92,7 @@ const Select = ({
89
92
  if (children) return children
90
93
  return (
91
94
  <select
95
+ {...htmlOptions}
92
96
  {...domSafeProps(props)}
93
97
  disabled={disabled}
94
98
  id={name}
@@ -109,6 +113,7 @@ const Select = ({
109
113
  <div
110
114
  {...ariaProps}
111
115
  {...dataProps}
116
+ {...htmlProps}
112
117
  className={classes}
113
118
  >
114
119
  {label &&
@@ -9,7 +9,7 @@ import {
9
9
  buildCss,
10
10
  buildDataProps,
11
11
  noop,
12
- } from '../utilities/props'
12
+ buildHtmlProps } from '../utilities/props'
13
13
 
14
14
  import Icon from '../pb_icon/_icon'
15
15
  import Checkbox from '../pb_checkbox/_checkbox'
@@ -28,8 +28,9 @@ type SelectableCardProps = {
28
28
  disabled?: boolean,
29
29
  error?: boolean,
30
30
  icon?: boolean,
31
- id?: string,
31
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
32
32
  inputId?: string,
33
+ id?: string,
33
34
  multi?: boolean,
34
35
  name?: string,
35
36
  onChange: (event: React.FormEvent<HTMLInputElement>) => void,
@@ -48,6 +49,7 @@ const SelectableCard = (props: SelectableCardProps) => {
48
49
  data = {},
49
50
  disabled = false,
50
51
  error = false,
52
+ htmlOptions = {},
51
53
  icon = false,
52
54
  inputId = null,
53
55
  multi = true,
@@ -59,6 +61,7 @@ const SelectableCard = (props: SelectableCardProps) => {
59
61
  } = props
60
62
  const ariaProps = buildAriaProps(aria)
61
63
  const dataProps = buildDataProps(data)
64
+ const htmlProps = buildHtmlProps(htmlOptions)
62
65
 
63
66
  const classes = classnames(buildCss('pb_selectable_card_kit',
64
67
  {
@@ -109,6 +112,7 @@ const SelectableCard = (props: SelectableCardProps) => {
109
112
  <div
110
113
  {...ariaProps}
111
114
  {...dataProps}
115
+ {...htmlProps}
112
116
  className={classes}
113
117
  >
114
118
  <input
@@ -6,6 +6,7 @@ import {
6
6
  buildAriaProps,
7
7
  buildCss,
8
8
  buildDataProps,
9
+ buildHtmlProps,
9
10
  } from '../utilities/props'
10
11
 
11
12
  import Body from '../pb_body/_body'
@@ -21,6 +22,7 @@ type SelectableCardIconProps = {
21
22
  dark?: boolean,
22
23
  data?: { [key: string]: string },
23
24
  disabled?: boolean,
25
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
24
26
  icon?: string,
25
27
  inputId?: string,
26
28
  multi?: boolean,
@@ -41,6 +43,7 @@ const SelectableCardIcon = (props: SelectableCardIconProps) => {
41
43
  dark = false,
42
44
  data = {},
43
45
  disabled = false,
46
+ htmlOptions = {},
44
47
  icon,
45
48
  inputId,
46
49
  multi = true,
@@ -53,6 +56,7 @@ const SelectableCardIcon = (props: SelectableCardIconProps) => {
53
56
 
54
57
  const ariaProps = buildAriaProps(aria)
55
58
  const dataProps = buildDataProps(data)
59
+ const htmlProps = buildHtmlProps(htmlOptions)
56
60
 
57
61
  const classes = classnames(
58
62
  buildCss('pb_selectable_card_icon_kit', {
@@ -68,6 +72,7 @@ const SelectableCardIcon = (props: SelectableCardIconProps) => {
68
72
  <div
69
73
  {...ariaProps}
70
74
  {...dataProps}
75
+ {...htmlProps}
71
76
  className={classes}
72
77
  >
73
78
  <SelectableCard
@@ -6,6 +6,7 @@ import {
6
6
  buildAriaProps,
7
7
  buildCss,
8
8
  buildDataProps,
9
+ buildHtmlProps
9
10
  } from '../utilities/props'
10
11
  import Icon from '../pb_icon/_icon'
11
12
  import Title from '../pb_title/_title'
@@ -17,6 +18,7 @@ type SelectableIconProps = {
17
18
  customIcon?: {[key: string] :SVGElement},
18
19
  disabled?: boolean,
19
20
  data?: Object,
21
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
20
22
  icon: string,
21
23
  inputId: string,
22
24
  inputs: string,
@@ -33,6 +35,7 @@ const SelectableIcon = ({
33
35
  customIcon,
34
36
  data = {},
35
37
  disabled = false,
38
+ htmlOptions = {},
36
39
  icon,
37
40
  inputId,
38
41
  inputs = 'enabled',
@@ -44,6 +47,7 @@ const SelectableIcon = ({
44
47
  }: SelectableIconProps) => {
45
48
  const ariaProps = buildAriaProps(aria)
46
49
  const dataProps = buildDataProps(data)
50
+ const htmlProps = buildHtmlProps(htmlOptions)
47
51
 
48
52
  const classes = classnames(
49
53
  buildCss('pb_selectable_icon_kit', {
@@ -62,6 +66,7 @@ const SelectableIcon = ({
62
66
  <div
63
67
  {...ariaProps}
64
68
  {...dataProps}
69
+ {...htmlProps}
65
70
  className={classes}
66
71
  >
67
72
  {inputs === 'disabled' && (
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from "react";
2
2
  import classnames from "classnames";
3
3
 
4
- import { buildAriaProps, buildCss, buildDataProps } from "../utilities/props";
4
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
5
5
  import { globalProps } from "../utilities/globalProps";
6
6
 
7
7
  import Checkbox from "../pb_checkbox/_checkbox";
@@ -15,6 +15,7 @@ export type SelectableListItemProps = {
15
15
  className?: string;
16
16
  data?: object;
17
17
  defaultChecked?: boolean;
18
+ htmlOptions?: { [key: string]: string | number | boolean | Function };
18
19
  id?: string;
19
20
  label?: string;
20
21
  text?: string;
@@ -31,6 +32,7 @@ const SelectableListItem = ({
31
32
  className,
32
33
  data = {},
33
34
  defaultChecked,
35
+ htmlOptions = {},
34
36
  id,
35
37
  label,
36
38
  text = "",
@@ -41,7 +43,8 @@ const SelectableListItem = ({
41
43
  ...props
42
44
  }: SelectableListItemProps) => {
43
45
  const ariaProps = buildAriaProps(aria);
44
- const dataProps = buildDataProps(data);
46
+ const dataProps = buildDataProps(data)
47
+ const htmlProps = buildHtmlProps(htmlOptions);
45
48
  const classes = classnames(
46
49
  buildCss("pb_selectable_list_item_kit"),
47
50
  globalProps(props),
@@ -61,7 +64,12 @@ const SelectableListItem = ({
61
64
  {...props}
62
65
  className={classnames(checkedState ? "checked_item" : "", className)}
63
66
  >
64
- <div {...ariaProps} {...dataProps} className={classes}>
67
+ <div
68
+ {...ariaProps}
69
+ {...dataProps}
70
+ {...htmlProps}
71
+ className={classes}
72
+ >
65
73
  {variant == "checkbox" && (
66
74
  <>
67
75
  <Checkbox
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
4
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
5
  import { globalProps } from '../utilities/globalProps'
6
6
  import { SelectableListItemProps } from './_item.js'
7
7
 
@@ -13,6 +13,7 @@ type SelectableListProps = {
13
13
  children?: React.ReactElement[],
14
14
  className?: string,
15
15
  data?: object,
16
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
16
17
  id?: string,
17
18
  variant?: 'checkbox' | 'radio',
18
19
  }
@@ -23,12 +24,14 @@ const SelectableList = (props: SelectableListProps) => {
23
24
  children,
24
25
  className,
25
26
  data = {},
27
+ htmlOptions = {},
26
28
  id,
27
29
  } = props
28
30
 
29
31
  const ariaProps = buildAriaProps(aria)
30
32
  const classes = classnames(buildCss('pb_selectable_list_kit'), globalProps(props), className)
31
33
  const dataProps = buildDataProps(data)
34
+ const htmlProps = buildHtmlProps(htmlOptions)
32
35
  const isRadio = props.variant === "radio"
33
36
  const defaultCheckedRadioValue = children.filter((item: {props:SelectableListItemProps} ) => item.props.defaultChecked)[0]?.props?.value
34
37
 
@@ -58,6 +61,7 @@ const SelectableList = (props: SelectableListProps) => {
58
61
  <div
59
62
  {...ariaProps}
60
63
  {...dataProps}
64
+ {...htmlProps}
61
65
  className={classes}
62
66
  id={id}
63
67
  >
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import { buildDataProps, buildAriaProps } from '../utilities/props'
4
+ import { buildDataProps, buildAriaProps, buildHtmlProps } from '../utilities/props'
5
5
  import { titleize } from '../utilities/text'
6
6
 
7
7
  import Avatar, { AvatarProps } from '../pb_avatar/_avatar'
@@ -15,6 +15,7 @@ type SourceProps = {
15
15
  className?: string,
16
16
  data?: { [key: string]: string },
17
17
  hideIcon: boolean,
18
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
18
19
  id?: string,
19
20
  source?: string,
20
21
  type: "events" | "inbound" | "outbound" | "prospecting" | "referral" | "retail" | "user",
@@ -26,12 +27,14 @@ const Source = ({
26
27
  className,
27
28
  data = {},
28
29
  hideIcon = false,
30
+ htmlOptions = {},
29
31
  id,
30
32
  source,
31
33
  type = 'inbound',
32
34
  user = {},
33
35
  }: SourceProps) => {
34
36
  const dataProps = buildDataProps(data)
37
+ const htmlProps = buildHtmlProps(htmlOptions)
35
38
  const ariaProps = buildAriaProps(aria)
36
39
 
37
40
  const css = classnames([
@@ -71,6 +74,7 @@ const Source = ({
71
74
  <div
72
75
  {...ariaProps}
73
76
  {...dataProps}
77
+ {...htmlProps}
74
78
  className={css}
75
79
  id={id}
76
80
  >
@@ -1,7 +1,7 @@
1
1
  import React from "react"
2
2
  import classnames from "classnames"
3
3
 
4
- import { buildAriaProps, buildDataProps } from "../utilities/props"
4
+ import { buildAriaProps, buildDataProps, buildHtmlProps } from "../utilities/props"
5
5
 
6
6
  import Icon from "../pb_icon/_icon"
7
7
 
@@ -11,6 +11,7 @@ type StarRatingProps = {
11
11
  data?: object,
12
12
  fixedWidth?: boolean,
13
13
  hideRating: boolean,
14
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
14
15
  icon?: string,
15
16
  id?: string,
16
17
  rating: number,
@@ -20,12 +21,14 @@ const StarRating = ({
20
21
  aria = {},
21
22
  className,
22
23
  data = {},
24
+ htmlOptions = {},
23
25
  hideRating = false,
24
26
  id,
25
27
  rating = 0,
26
28
  }: StarRatingProps) => {
27
29
  const ariaProps = buildAriaProps(aria)
28
30
  const dataProps = buildDataProps(data)
31
+ const htmlProps = buildHtmlProps(htmlOptions)
29
32
  const css = classnames([
30
33
  "pb_star_rating_kit", className,
31
34
  ])
@@ -42,6 +45,7 @@ const StarRating = ({
42
45
  <div
43
46
  {...ariaProps}
44
47
  {...dataProps}
48
+ {...htmlProps}
45
49
  className={css}
46
50
  id={id}
47
51
  >
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
- import { buildCss } from '../utilities/props'
4
+ import { buildCss, buildHtmlProps } from '../utilities/props'
5
5
  import { globalProps } from '../utilities/globalProps'
6
6
 
7
7
  import Body from '../pb_body/_body'
@@ -22,18 +22,29 @@ type StatChangeProps = {
22
22
  change?: 'increase' | 'decrease' | 'neutral',
23
23
  className?: string,
24
24
  icon?: string,
25
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
25
26
  id?: string,
26
27
  value?: string | number,
27
28
  }
28
29
 
29
30
  const StatChange = (props: StatChangeProps): React.ReactElement => {
30
- const { change = 'neutral', className, icon, id, value } = props
31
+ const {
32
+ change = 'neutral',
33
+ className,
34
+ htmlOptions = {},
35
+ icon,
36
+ id,
37
+ value
38
+ } = props
39
+
31
40
  const status = statusMap[change as keyof typeof statusMap]
32
41
  let returnedIcon = iconMap[change as keyof typeof iconMap]
33
42
  if (icon) {
34
43
  returnedIcon = icon
35
44
  }
36
45
 
46
+ const htmlProps = buildHtmlProps(htmlOptions)
47
+
37
48
  return (
38
49
  <>
39
50
  {value &&
@@ -44,6 +55,7 @@ const StatChange = (props: StatChangeProps): React.ReactElement => {
44
55
  className
45
56
  )}
46
57
  id={id}
58
+ {...htmlProps}
47
59
  >
48
60
  <Body status={status}>
49
61
  {returnedIcon &&
@@ -2,10 +2,12 @@ import React from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
4
  import { globalProps } from '../utilities/globalProps'
5
+ import { buildHtmlProps } from '../utilities/props'
5
6
  import Title from '../pb_title/_title'
6
7
 
7
8
  type StatValueProps = {
8
9
  className?: string,
10
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
9
11
  id?: string,
10
12
  unit?: string,
11
13
  value: string | number,
@@ -14,11 +16,14 @@ type StatValueProps = {
14
16
  const StatValue = (props: StatValueProps): React.ReactElement => {
15
17
  const {
16
18
  className,
19
+ htmlOptions = {},
17
20
  id,
18
21
  unit,
19
22
  value = 0,
20
23
  } = props
21
24
 
25
+ const htmlProps = buildHtmlProps(htmlOptions)
26
+
22
27
  const displayValue = function(value: string | number) {
23
28
  if (value || value === 0) {
24
29
  return (
@@ -47,6 +52,7 @@ const StatValue = (props: StatValueProps): React.ReactElement => {
47
52
  <div
48
53
  className={classnames('pb_stat_value_kit', globalProps(props), className)}
49
54
  id={id}
55
+ {...htmlProps}
50
56
  >
51
57
  <div className="pb_stat_value_wrapper">
52
58
  {displayValue(value)}
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect } from 'react'
2
2
  import classnames from 'classnames'
3
- import { buildAriaProps, buildDataProps } from '../utilities/props'
3
+ import { buildAriaProps, buildDataProps, buildHtmlProps } from '../utilities/props'
4
4
  import { globalProps } from '../utilities/globalProps'
5
5
  import PbTable from '.'
6
6
 
@@ -14,6 +14,7 @@ type TableProps = {
14
14
  data?: { [key: string]: string },
15
15
  dataTable: boolean,
16
16
  disableHover: boolean,
17
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
17
18
  id?: string,
18
19
  responsive: "collapse" | "scroll" | "none",
19
20
  singleLine: boolean,
@@ -33,6 +34,7 @@ const Table = (props: TableProps) => {
33
34
  data = {},
34
35
  dataTable = false,
35
36
  disableHover = false,
37
+ htmlOptions = {},
36
38
  id,
37
39
  responsive = 'collapse',
38
40
  singleLine = false,
@@ -43,6 +45,7 @@ const Table = (props: TableProps) => {
43
45
 
44
46
  const ariaProps = buildAriaProps(aria)
45
47
  const dataProps = buildDataProps(data)
48
+ const htmlProps = buildHtmlProps(htmlOptions)
46
49
  const tableCollapseCss = responsive !== 'none' ? `table-collapse-${collapse}` : ''
47
50
  const verticalBorderCss = verticalBorder ? 'vertical-border' : ''
48
51
 
@@ -55,6 +58,7 @@ const Table = (props: TableProps) => {
55
58
  <table
56
59
  {...ariaProps}
57
60
  {...dataProps}
61
+ {...htmlProps}
58
62
  className={classnames(
59
63
  'pb_table',
60
64
  `table-${size}`,
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
- import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
3
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
4
4
  import { globalProps } from '../utilities/globalProps'
5
5
 
6
6
  type TableRowPropTypes = {
@@ -8,6 +8,7 @@ type TableRowPropTypes = {
8
8
  children: React.ReactNode[] | React.ReactNode,
9
9
  className: string,
10
10
  data?: { [key: string]: string },
11
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
11
12
  id?: string,
12
13
  sideHighlightColor: string,
13
14
  }
@@ -18,12 +19,14 @@ const TableRow = (props: TableRowPropTypes) => {
18
19
  children,
19
20
  className,
20
21
  data = {},
22
+ htmlOptions = {},
21
23
  id,
22
24
  sideHighlightColor = 'windows',
23
25
  } = props
24
26
 
25
27
  const ariaProps = buildAriaProps(aria)
26
28
  const dataProps = buildDataProps(data)
29
+ const htmlProps = buildHtmlProps(htmlOptions)
27
30
  const sideHighlightClass =
28
31
  sideHighlightColor != '' ? `side_highlight_${sideHighlightColor}` : null
29
32
  const classes = classnames(buildCss('pb_table_row_kit', sideHighlightClass), globalProps(props), className)
@@ -32,6 +35,7 @@ const TableRow = (props: TableRowPropTypes) => {
32
35
  <tr
33
36
  {...ariaProps}
34
37
  {...dataProps}
38
+ {...htmlProps}
35
39
  className={classes}
36
40
  id={id}
37
41
  >
@@ -2,7 +2,7 @@ import React, { forwardRef } from 'react'
2
2
  import classnames from 'classnames'
3
3
 
4
4
  import { globalProps, GlobalProps, domSafeProps } from '../utilities/globalProps'
5
- import { buildAriaProps, buildDataProps } from '../utilities/props'
5
+ import { buildAriaProps, buildDataProps, buildHtmlProps } from '../utilities/props'
6
6
 
7
7
  import Flex from '../pb_flex/_flex'
8
8
  import Card from '../pb_card/_card'
@@ -17,6 +17,7 @@ type TextInputProps = {
17
17
  dark?: boolean,
18
18
  disabled?: boolean,
19
19
  error?: string,
20
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
20
21
  id?: string,
21
22
  inline?: boolean,
22
23
  name: string,
@@ -43,6 +44,7 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
43
44
  data = {},
44
45
  disabled,
45
46
  error,
47
+ htmlOptions = {},
46
48
  id,
47
49
  inline = false,
48
50
  name,
@@ -57,6 +59,7 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
57
59
 
58
60
  const ariaProps = buildAriaProps(aria)
59
61
  const dataProps = buildDataProps(data)
62
+ const htmlProps = buildHtmlProps(htmlOptions)
60
63
 
61
64
  const { alignment, border, icon } = addOn
62
65
  const addOnAlignment = alignment === 'left' ? 'left' : 'right'
@@ -138,6 +141,7 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
138
141
  <div
139
142
  {...ariaProps}
140
143
  {...dataProps}
144
+ {...htmlProps}
141
145
  className={css}
142
146
  >
143
147
  {label &&
@@ -0,0 +1,35 @@
1
+ ![text-input-add-on](https://github.com/powerhome/playbook/assets/92755007/65a28e6a-9e65-4ca1-af8d-91dae6eac4f5)
2
+
3
+ ```swift
4
+
5
+ PBTextInput(
6
+ "ADD ON WITH DEFAULTS",
7
+ text: $textAddOn,
8
+ style: .rightIcon(.user, divider: true)
9
+ )
10
+
11
+ PBTextInput(
12
+ "RIGHT-ALIGNED ADD ON WITH BORDER",
13
+ text: $textAddOnRight,
14
+ style: .rightIcon(.user, divider: true)
15
+ )
16
+
17
+ PBTextInput(
18
+ "RIGHT-ALIGNED ADD ON WITH NO BORDER",
19
+ text: $textAddOnRightNoBorder,
20
+ style: .rightIcon(.user, divider: false)
21
+ )
22
+
23
+ PBTextInput(
24
+ "LEFT-ALIGNED ADD ON WITH NO BORDER",
25
+ text: $textAddOnLeft,
26
+ style: .leftIcon(.user, divider: false)
27
+ )
28
+
29
+ PBTextInput(
30
+ "LEFT-ALIGNED ADD ON WITH BORDER",
31
+ text: $textAddOnLeftNoBorder,
32
+ style: .leftIcon(.user, divider: true)
33
+ )
34
+
35
+ ```
@@ -0,0 +1,29 @@
1
+ ![text-input-default](https://github.com/powerhome/playbook/assets/92755007/625a246e-9d5c-42ea-8c6e-7afcf0984c9a)
2
+
3
+
4
+ ```swift
5
+
6
+ @State private var textFirstName: String = ""
7
+ @State private var textLastName: String = ""
8
+ @State private var textPhone: String = ""
9
+
10
+ PBTextInput(
11
+ "First name",
12
+ text: $textFirstName,
13
+ placeholder: "Enter first name"
14
+ )
15
+
16
+ PBTextInput(
17
+ "Last name",
18
+ text: $textLastName,
19
+ placeholder: "Enter last name"
20
+ )
21
+
22
+ PBTextInput(
23
+ "Phone number",
24
+ text: $textPhone,
25
+ placeholder: "Enter phone number",
26
+ keyboardType: .phonePad
27
+ )
28
+
29
+ ```
@@ -0,0 +1,13 @@
1
+ ![text-input-disabled](https://github.com/powerhome/playbook/assets/92755007/0e08256e-dd76-4528-b748-826f38bbe6a0)
2
+
3
+
4
+ ```swift
5
+
6
+ PBTextInput(
7
+ "Last name",
8
+ text: $textDisabled,
9
+ placeholder: "Enter last name",
10
+ style: .disabled
11
+ )
12
+
13
+ ```
@@ -0,0 +1,24 @@
1
+ ![text-input-error](https://github.com/powerhome/playbook/assets/92755007/7c664f75-1d7a-4a94-bc59-6f845a68ce19)
2
+
3
+
4
+ ```swift
5
+
6
+ @State private var textError: String = ""
7
+ @State private var textConfirmError: String = ""
8
+
9
+ PBTextInput(
10
+ "Email address",
11
+ text: $textError,
12
+ placeholder: "Enter email address",
13
+ error: (true, "Insert a valid email"),
14
+ style: .leftIcon(.user, divider: true)
15
+ )
16
+
17
+ PBTextInput(
18
+ "Confirm email address",
19
+ text: $textConfirmError,
20
+ placeholder: "Confirm email address",
21
+ style: .leftIcon(.user, divider: true)
22
+ )
23
+
24
+ ```