playbook_ui 13.12.0 → 13.13.0.pre.alpha.PLAY1090csstokens1675

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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/index.js +13 -1
  3. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +5 -1
  4. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.tsx +6 -2
  5. data/app/pb_kits/playbook/pb_background/_background.tsx +9 -5
  6. data/app/pb_kits/playbook/pb_badge/_badge.tsx +5 -1
  7. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +6 -2
  8. data/app/pb_kits/playbook/pb_body/_body.tsx +5 -1
  9. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumb_item.tsx +5 -1
  10. data/app/pb_kits/playbook/pb_bread_crumbs/_bread_crumbs.tsx +5 -2
  11. data/app/pb_kits/playbook/pb_button/_button.tsx +8 -1
  12. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.tsx +5 -1
  13. data/app/pb_kits/playbook/pb_caption/_caption.tsx +6 -1
  14. data/app/pb_kits/playbook/pb_card/_card.tsx +5 -1
  15. data/app/pb_kits/playbook/pb_checkbox/_checkbox.tsx +7 -2
  16. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +7 -2
  17. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +5 -3
  18. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +5 -1
  19. data/app/pb_kits/playbook/pb_contact/_contact.tsx +5 -1
  20. data/app/pb_kits/playbook/pb_currency/_currency.tsx +5 -1
  21. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.tsx +5 -1
  22. data/app/pb_kits/playbook/pb_date/_date.tsx +12 -7
  23. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +5 -1
  24. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +5 -1
  25. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx +15 -4
  26. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +12 -5
  27. data/app/pb_kits/playbook/pb_date_time/_date_time.tsx +5 -1
  28. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +5 -1
  29. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.tsx +15 -4
  30. data/app/pb_kits/playbook/pb_detail/_detail.tsx +5 -1
  31. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +11 -3
  32. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_footer.tsx +8 -3
  33. data/app/pb_kits/playbook/pb_dialog/child_kits/_dialog_header.tsx +5 -1
  34. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.tsx +8 -1
  35. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +6 -2
  36. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.md +1 -0
  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 +6 -2
  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 +9 -3
  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_section_separator/docs/_section_separator_children_swift.md +14 -0
  94. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed_swift.md +7 -0
  95. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line_swift.md +8 -0
  96. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_props_swift.md +8 -0
  97. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text_swift.md +7 -0
  98. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical_swift.md +18 -0
  99. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +8 -0
  100. data/app/pb_kits/playbook/pb_select/_select.tsx +6 -1
  101. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +6 -2
  102. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.tsx +5 -0
  103. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.tsx +5 -0
  104. data/app/pb_kits/playbook/pb_selectable_list/_item.tsx +11 -3
  105. data/app/pb_kits/playbook/pb_selectable_list/_selectable_list.tsx +5 -1
  106. data/app/pb_kits/playbook/pb_source/_source.tsx +5 -1
  107. data/app/pb_kits/playbook/pb_star_rating/_star_rating.tsx +5 -1
  108. data/app/pb_kits/playbook/pb_stat_change/_stat_change.tsx +14 -2
  109. data/app/pb_kits/playbook/pb_stat_value/_stat_value.tsx +6 -0
  110. data/app/pb_kits/playbook/pb_table/_table.tsx +5 -1
  111. data/app/pb_kits/playbook/pb_table/_table_row.tsx +5 -1
  112. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +5 -1
  113. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on_swift.md +35 -0
  114. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default_swift.md +29 -0
  115. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_disabled_swift.md +13 -0
  116. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error_swift.md +24 -0
  117. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_props_swift.md +13 -0
  118. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +7 -0
  119. data/app/pb_kits/playbook/pb_textarea/_textarea.tsx +5 -2
  120. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_default_swift.md +27 -0
  121. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error_swift.md +11 -0
  122. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_props_swift.md +9 -0
  123. data/app/pb_kits/playbook/pb_textarea/docs/example.yml +5 -0
  124. data/app/pb_kits/playbook/pb_time/_time.tsx +9 -2
  125. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +5 -1
  126. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +6 -2
  127. data/app/pb_kits/playbook/pb_timeline/_item.tsx +9 -2
  128. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +5 -1
  129. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +5 -1
  130. data/app/pb_kits/playbook/pb_title/_title.tsx +5 -1
  131. data/app/pb_kits/playbook/pb_title_count/_title_count.tsx +5 -1
  132. data/app/pb_kits/playbook/pb_title_detail/_title_detail.tsx +16 -3
  133. data/app/pb_kits/playbook/pb_toggle/_toggle.tsx +5 -0
  134. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default_swift.md +11 -0
  135. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_name_swift.md +10 -0
  136. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_props_swift.md +6 -0
  137. data/app/pb_kits/playbook/pb_toggle/docs/example.yml +4 -0
  138. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +5 -1
  139. data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +9 -3
  140. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +7 -2
  141. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +2 -2
  142. data/app/pb_kits/playbook/pb_user/_user.tsx +5 -1
  143. data/app/pb_kits/playbook/pb_user_badge/_user_badge.tsx +5 -1
  144. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.tsx +5 -1
  145. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +5 -1
  146. data/app/pb_kits/playbook/utilities/props.ts +16 -0
  147. data/dist/playbook-rails.js +6 -6
  148. data/lib/playbook/version.rb +2 -2
  149. metadata +33 -7
@@ -3,7 +3,7 @@ import classnames from 'classnames'
3
3
  import inlineFocus from './inlineFocus'
4
4
  import useFocus from './useFocus'
5
5
  import { globalProps, GlobalProps } from '../utilities/globalProps'
6
- import { buildAriaProps, buildDataProps, noop } from '../utilities/props'
6
+ import { buildAriaProps, buildDataProps, noop, buildHtmlProps } from '../utilities/props'
7
7
 
8
8
  try {
9
9
  const Trix = require('trix')
@@ -35,6 +35,7 @@ type RichTextEditorProps = {
35
35
  className?: string,
36
36
  data?: { [key: string]: string },
37
37
  focus?: boolean,
38
+ htmlOptions?: {[key: string]: string | number | boolean | Function},
38
39
  id?: string,
39
40
  inline?: boolean,
40
41
  extensions?: { [key: string]: string }[],
@@ -58,6 +59,7 @@ const RichTextEditor = (props: RichTextEditorProps) => {
58
59
  className,
59
60
  data = {},
60
61
  focus = false,
62
+ htmlOptions = {},
61
63
  inline = false,
62
64
  extensions,
63
65
  name,
@@ -74,9 +76,12 @@ const RichTextEditor = (props: RichTextEditorProps) => {
74
76
  dataProps = buildDataProps(data),
75
77
  [editor, setEditor] = useState<Editor>()
76
78
 
79
+ const htmlProps = buildHtmlProps(htmlOptions)
80
+
77
81
  const handleOnEditorReady = (editorInstance: Editor) => setEditor(editorInstance),
78
82
  element = editor?.element
79
83
 
84
+
80
85
  // DOM manipulation must wait for editor to be ready
81
86
  if (editor) {
82
87
  const toolbarElement = element.parentElement.querySelector('trix-toolbar') as HTMLElement,
@@ -161,6 +166,7 @@ const RichTextEditor = (props: RichTextEditorProps) => {
161
166
  <div
162
167
  {...ariaProps}
163
168
  {...dataProps}
169
+ {...htmlProps}
164
170
  className={css}
165
171
  >
166
172
  {
@@ -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
  >
@@ -0,0 +1,14 @@
1
+
2
+ ![section-separator-children](https://github.com/powerhome/playbook/assets/92755007/acd6a8eb-d034-4efd-b2e6-afabe739e678)
3
+
4
+ ```swift
5
+
6
+ PBSectionSeparator(variant: .dashed) {
7
+ PBCard(alignment: .center, borderRadius: BorderRadius.rounded, padding: Spacing.xxSmall, width: 70) {
8
+ Text("Today")
9
+ .pbFont(.caption)
10
+ .frame(maxWidth: .infinity, alignment: .center)
11
+ }
12
+ }
13
+
14
+ ```
@@ -0,0 +1,7 @@
1
+ ![section-separator-dashed](https://github.com/powerhome/playbook/assets/92755007/e4f01870-3d90-4655-9136-5c7565711e1f)
2
+
3
+ ```swift
4
+
5
+ PBSectionSeparator(variant: .dashed)
6
+
7
+ ```
@@ -0,0 +1,8 @@
1
+
2
+ ![section-separator-default](https://github.com/powerhome/playbook/assets/92755007/2560d5e2-f345-42d2-bad9-2a2e031b3e08)
3
+
4
+ ```swift
5
+
6
+ PBSectionSeparator()
7
+
8
+ ```
@@ -0,0 +1,8 @@
1
+ ### Props
2
+ | Name | Type | Description | Default | Values |
3
+ | --- | ----------- | --------- | --------- | --------- |
4
+ | **text** | `String` | Adds text to the Section Separator | `nil` | |
5
+ | **orientation** | `Orientation` | Changes the orientation | `.horizontal` | `.horizontal` `.vertical` |
6
+ | **variant** | `Variant` | Changes the style of the Section Separator | `.card` | `.dashed` `.card` |
7
+ | **dividerOpacity** | `CGFloat` | Adjusts the opacity of the divider | `1` | |
8
+ | **margin** | `CGFloat` | Adds margin between text and the divider | `Spacing.xSmall` | `Spacing.none` `Spacing.xxSmall` `Spacing.xSmall` `Spacing.small` `Spacing.medium` `Spacing.large` `Spacing.xLarge` |
@@ -0,0 +1,7 @@
1
+ ![section-separator-text](https://github.com/powerhome/playbook/assets/92755007/4b481a7d-d001-43b6-b779-cfdc6fffc15f)
2
+
3
+ ```swift
4
+
5
+ PBSectionSeparator("Text separator")
6
+
7
+ ```
@@ -0,0 +1,18 @@
1
+ ![section-separator-verticle](https://github.com/powerhome/playbook/assets/92755007/21ca54a5-6b8a-459f-91ad-4e9b68258f68)
2
+
3
+ ```swift
4
+
5
+ let loremIpsum: some View = Text(
6
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididt labore et dolore"
7
+ )
8
+
9
+ HStack(spacing: Spacing.none) {
10
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididt labore et dolore"
11
+ PBSectionSeparator(orientation: .vertical)
12
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididt labore et dolore"
13
+ }
14
+ .frame(maxWidth: .infinity)
15
+ .frame(height: 120, alignment: .center)
16
+ .listRowSeparator(.hidden)
17
+
18
+ ```
@@ -13,3 +13,11 @@ examples:
13
13
  - section_separator_text: Text Separator
14
14
  - section_separator_vertical: Vertical
15
15
  - section_separator_children: Children
16
+
17
+ swift:
18
+ - section_separator_line_swift: Line Separator
19
+ - section_separator_dashed_swift: Dashed Separator
20
+ - section_separator_text_swift: Text Separator
21
+ - section_separator_vertical_swift: Vertical
22
+ - section_separator_children_swift: Children
23
+ - section_separator_props_swift: ""
@@ -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
  >