playbook_ui 14.5.0.pre.alpha.PLAY1485selectablecardoverflowoutlinebug4216 → 14.5.0.pre.alpha.PLAY1486highchartscssdrivenPOC3930

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +7 -25
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -2
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +0 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/index.js +0 -60
  6. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +9 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +9 -1
  8. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.scss +54 -0
  9. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +5 -184
  10. data/app/pb_kits/playbook/pb_bar_graph/barGraph.test.js +1 -1
  11. data/app/pb_kits/playbook/pb_card/_card.tsx +1 -5
  12. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +2 -1
  13. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +5 -216
  14. data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +1 -1
  15. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +1 -5
  16. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.html.erb +7 -30
  17. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.md +2 -0
  18. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +3 -84
  19. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +5 -28
  20. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -5
  21. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +0 -3
  22. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +1 -10
  23. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +1 -1
  24. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +2 -2
  25. data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.tsx +0 -2
  26. data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.tsx +0 -2
  27. data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.tsx +1 -4
  28. data/app/pb_kits/playbook/pb_filter/Filter/ResultsCount.tsx +2 -4
  29. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +1 -1
  30. data/app/pb_kits/playbook/pb_filter/docs/example.yml +0 -3
  31. data/app/pb_kits/playbook/pb_filter/docs/index.js +0 -1
  32. data/app/pb_kits/playbook/pb_filter/filter.html.erb +2 -2
  33. data/app/pb_kits/playbook/pb_filter/filter.rb +0 -2
  34. data/app/pb_kits/playbook/pb_flex/_flex.tsx +1 -3
  35. data/app/pb_kits/playbook/pb_flex/_flex_item.tsx +2 -8
  36. data/app/pb_kits/playbook/pb_flex/flex_item.html.erb +6 -3
  37. data/app/pb_kits/playbook/pb_flex/flex_item.rb +2 -7
  38. data/app/pb_kits/playbook/pb_form/docs/example.yml +0 -1
  39. data/app/pb_kits/playbook/pb_form/form.rb +0 -2
  40. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +1 -9
  41. data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +0 -2
  42. data/app/pb_kits/playbook/pb_form_pill/docs/index.js +0 -1
  43. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +3 -64
  44. data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +5 -203
  45. data/app/pb_kits/playbook/pb_gauge/gauge.test.js +1 -1
  46. data/app/pb_kits/playbook/pb_line_graph/_line_graph.tsx +5 -154
  47. data/app/pb_kits/playbook/pb_line_graph/lineGraph.test.js +1 -1
  48. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +227 -211
  49. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +1 -1
  50. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +0 -4
  51. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -2
  52. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss +65 -169
  53. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.test.js +5 -5
  54. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.tsx +9 -15
  55. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/example.yml +0 -2
  56. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/index.js +0 -1
  57. data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.html.erb +6 -28
  58. data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.rb +1 -31
  59. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +18 -86
  60. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +6 -15
  61. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.md +1 -1
  62. data/app/pb_kits/playbook/pb_phone_number_input/intlTelInput.scss +931 -849
  63. data/app/pb_kits/playbook/pb_phone_number_input/types.d.ts +1 -4
  64. data/app/pb_kits/playbook/pb_popover/_popover.tsx +2 -6
  65. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.html.erb +1 -1
  66. data/app/pb_kits/playbook/pb_popover/popover.rb +1 -3
  67. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -67
  68. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.tsx +0 -1
  69. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +1 -1
  70. data/app/pb_kits/playbook/pb_selectable_card/selectable_card.rb +1 -5
  71. data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +5 -113
  72. data/app/pb_kits/playbook/pb_treemap_chart/treemapChart.test.js +1 -1
  73. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -4
  74. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -3
  75. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -3
  76. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -3
  77. data/app/pb_kits/playbook/utilities/globalProps.ts +2 -39
  78. data/dist/chunks/_typeahead-BywvWGAm.js +22 -0
  79. data/dist/chunks/_weekday_stacked-5OGZKZeo.js +45 -0
  80. data/dist/chunks/lib-DMOmCoAX.js +29 -0
  81. data/dist/chunks/{pb_form_validation-BkWGwJsl.js → pb_form_validation-Dna2I7fw.js} +1 -1
  82. data/dist/chunks/vendor.js +1 -1
  83. data/dist/playbook-doc.js +1 -1
  84. data/dist/playbook-rails-react-bindings.js +1 -1
  85. data/dist/playbook-rails.js +1 -1
  86. data/dist/playbook.css +1 -1
  87. data/lib/playbook/kit_base.rb +1 -21
  88. data/lib/playbook/pb_doc_helper.rb +5 -5
  89. data/lib/playbook/pb_forms_helper.rb +1 -3
  90. data/lib/playbook/version.rb +1 -1
  91. metadata +6 -35
  92. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.jsx +0 -72
  93. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.md +0 -5
  94. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx +0 -45
  95. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md +0 -1
  96. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_separators_hidden.html.erb +0 -9
  97. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_separators_hidden.jsx +0 -33
  98. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.html.erb +0 -10
  99. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.jsx +0 -34
  100. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.md +0 -1
  101. data/app/pb_kits/playbook/pb_filter/docs/_filter_popover_props.html.erb +0 -41
  102. data/app/pb_kits/playbook/pb_filter/docs/_filter_popover_props.jsx +0 -71
  103. data/app/pb_kits/playbook/pb_filter/docs/_filter_popover_props_rails.md +0 -1
  104. data/app/pb_kits/playbook/pb_filter/docs/_filter_popover_props_react.md +0 -1
  105. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_loading.html.erb +0 -39
  106. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_loading.md +0 -1
  107. data/app/pb_kits/playbook/pb_form/formHelper.js +0 -27
  108. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +0 -19
  109. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +0 -27
  110. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +0 -1
  111. data/app/pb_kits/playbook/pb_multi_level_select/context/index.tsx +0 -5
  112. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +0 -93
  113. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.md +0 -1
  114. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +0 -105
  115. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.md +0 -1
  116. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +0 -106
  117. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.md +0 -1
  118. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx +0 -149
  119. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_size.html.erb +0 -336
  120. data/app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_size.jsx +0 -97
  121. data/dist/chunks/_typeahead-BhHnXJjy.js +0 -22
  122. data/dist/chunks/_weekday_stacked-B9Sy5PN8.js +0 -45
  123. data/dist/chunks/lib-D-mTv-kp.js +0 -29
@@ -13,7 +13,6 @@ type ResultsCountProps = {
13
13
  const ResultsCount = ({ dark, results, title }: ResultsCountProps): React.ReactElement => {
14
14
 
15
15
  const resultTitle = () => {
16
- if (results == null) return null
17
16
  return (
18
17
  <TitleCount
19
18
  align="center"
@@ -25,7 +24,6 @@ const ResultsCount = ({ dark, results, title }: ResultsCountProps): React.ReactE
25
24
  }
26
25
 
27
26
  const justResults = () => {
28
- if (results == null) return null
29
27
  return (
30
28
  <Caption
31
29
  className="filter-results"
@@ -37,13 +35,13 @@ const ResultsCount = ({ dark, results, title }: ResultsCountProps): React.ReactE
37
35
  }
38
36
 
39
37
  const displayResultsCount = () => {
40
- if (results != null && results >=0 && title) {
38
+ if (results && title) {
41
39
  return (
42
40
  <>
43
41
  {resultTitle()}
44
42
  </>
45
43
  )
46
- } else if (results !=null && results >=0 ) {
44
+ } else if (results) {
47
45
  return (
48
46
  <>
49
47
  {justResults()}
@@ -78,7 +78,7 @@ const FilterDefault = (props) => {
78
78
  double
79
79
  minWidth="375px"
80
80
  onSortChange={SortingChangeCallback}
81
- results={0}
81
+ results={1}
82
82
  sortOptions={{
83
83
  popularity: 'Popularity',
84
84
  // eslint-disable-next-line
@@ -10,7 +10,6 @@ examples:
10
10
  - filter_max_width: Max Width for Popover Inside of Filter
11
11
  - filter_max_height: Max Height for Popover Inside of Filter
12
12
  - filter_placement: Filter Placement
13
- - filter_popover_props: Popover Props
14
13
 
15
14
  react:
16
15
  - filter_default: Default
@@ -22,5 +21,3 @@ examples:
22
21
  - filter_max_width: Max Width for Popover Inside of Filter
23
22
  - filter_max_height: Max Height for Popover Inside of Filter
24
23
  - filter_placement: Filter Placement
25
- - filter_popover_props: Popover Props
26
-
@@ -7,4 +7,3 @@ export { default as SortOnly } from './_sort_only.jsx'
7
7
  export { default as FilterMaxWidth } from './_filter_max_width.jsx'
8
8
  export { default as FilterMaxHeight } from './_filter_max_height.jsx'
9
9
  export { default as FilterPlacement } from './_filter_placement.jsx'
10
- export { default as FilterPopoverProps } from './_filter_popover_props.jsx'
@@ -71,13 +71,13 @@
71
71
  <% end %>
72
72
 
73
73
  <% if object.template != "sort_only"%>
74
- <%= pb_rails("popover", props: {max_height: object.max_height, min_width: object.min_width, close_on_click: "outside", trigger_element_id: "filter#{object.id}", tooltip_id: "filter-form#{object.id}", position: object.placement }.merge(object.popover_props)) do %>
74
+ <%= pb_rails("popover", props: {max_height: object.max_height, min_width: object.min_width, close_on_click: "outside", trigger_element_id: "filter#{object.id}", tooltip_id: "filter-form#{object.id}", position: object.placement }) do %>
75
75
  <%= content %>
76
76
  <% end %>
77
77
  <%end%>
78
78
 
79
79
  <% if object.template != "filter_only"%>
80
- <%= pb_rails("popover", props: {max_height: object.max_height, classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: object.placement , padding: 'none'}.merge(object.popover_props)) do %>
80
+ <%= pb_rails("popover", props: {max_height: object.max_height, classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: object.placement , padding: 'none'}) do %>
81
81
  <%= pb_rails("list") do %>
82
82
  <% object.sort_menu.each do |item| %>
83
83
  <%= pb_rails("list/item") do%> <%= pb_rails("button", props: {variant: "link" ,classname: "p-0", text: item[:item], link: item[:link]}) %><% end %>
@@ -15,8 +15,6 @@ module Playbook
15
15
  prop :placement, type: Playbook::Props::Enum,
16
16
  values: %w[top bottom left right top-start top-end bottom-start bottom-end right-start right-end left-start left-end],
17
17
  default: "bottom-start"
18
- prop :popover_props, type: Playbook::Props::HashProp,
19
- default: {}
20
18
 
21
19
  def classname
22
20
  generate_classname("pb_filter_kit").rstrip
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
  import { buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
4
- import { GlobalProps, globalProps, globalInlineProps } from '../utilities/globalProps'
4
+ import { GlobalProps, globalProps } from '../utilities/globalProps'
5
5
  import { GenericObject, Sizes } from '../types'
6
6
 
7
7
  type FlexProps = {
@@ -61,7 +61,6 @@ const Flex = (props: FlexProps): React.ReactElement => {
61
61
  const alignSelfClass = alignSelf !== 'none' ? `align_self_${alignSelf}` : ''
62
62
  const dataProps = buildDataProps(data)
63
63
  const htmlProps = buildHtmlProps(htmlOptions)
64
- const dynamicInlineProps = globalInlineProps(props)
65
64
 
66
65
 
67
66
  return (
@@ -84,7 +83,6 @@ const Flex = (props: FlexProps): React.ReactElement => {
84
83
  globalProps(props),
85
84
  className
86
85
  )}
87
- style={dynamicInlineProps}
88
86
  {...dataProps}
89
87
  {...htmlProps}
90
88
  >
@@ -1,7 +1,7 @@
1
1
  import React from 'react'
2
2
  import classnames from 'classnames'
3
3
  import { buildCss, buildHtmlProps } from '../utilities/props'
4
- import { globalProps, GlobalProps, globalInlineProps} from '../utilities/globalProps'
4
+ import { globalProps, GlobalProps } from '../utilities/globalProps'
5
5
  type FlexItemPropTypes = {
6
6
  children: React.ReactNode[] | React.ReactNode,
7
7
  fixedSize?: string,
@@ -35,20 +35,14 @@ const FlexItem = (props: FlexItemPropTypes): React.ReactElement => {
35
35
  const fixedStyle =
36
36
  fixedSize !== undefined ? { flexBasis: `${fixedSize}` } : null
37
37
  const orderClass = order !== 'none' ? `order_${order}` : null
38
- const dynamicInlineProps = globalInlineProps(props)
39
- const combinedStyles = {
40
- ...fixedStyle,
41
- ...dynamicInlineProps
42
- }
43
38
 
44
39
  const htmlProps = buildHtmlProps(htmlOptions)
45
40
 
46
-
47
41
  return (
48
42
  <div
49
43
  {...htmlProps}
50
44
  className={classnames(buildCss('pb_flex_item_kit', growClass, shrinkClass, flexClass, displayFlexClass), orderClass, alignSelfClass, globalProps(props), className)}
51
- style={combinedStyles}
45
+ style={fixedStyle}
52
46
  >
53
47
  {children}
54
48
  </div>
@@ -1,5 +1,8 @@
1
- <%= pb_content_tag(:div,
2
- style: object.inline_styles
3
- ) do %>
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname,
5
+ style: object.style_value,
6
+ **combined_html_options) do %>
4
7
  <%= content.presence %>
5
8
  <% end %>
@@ -20,13 +20,8 @@ module Playbook
20
20
  generate_classname("pb_flex_item_kit", fixed_size_class, grow_class, shrink_class, display_flex_class) + align_self_class
21
21
  end
22
22
 
23
- def inline_styles
24
- styles = []
25
- styles << "flex-basis: #{fixed_size};" if fixed_size.present?
26
- styles << "height: #{height};" if height.present?
27
- styles << "min-height: #{min_height};" if min_height.present?
28
- styles << "max-height: #{max_height};" if max_height.present?
29
- styles.join(" ")
23
+ def style_value
24
+ "flex-basis: #{fixed_size};" if fixed_size.present?
30
25
  end
31
26
 
32
27
  private
@@ -3,4 +3,3 @@ examples:
3
3
  rails:
4
4
  - form_form_with: Default
5
5
  - form_form_with_validate: Default + Validation
6
- - form_form_with_loading: Default + Loading
@@ -7,7 +7,6 @@ module Playbook
7
7
  type: Playbook::Props::Base
8
8
  prop :form_system_options, deprecated: "Use options instead",
9
9
  type: Playbook::Props::Base
10
- prop :loading, type: Playbook::Props::Boolean, default: false
11
10
  prop :options, type: Playbook::Props::Base
12
11
  prop :validate, type: Playbook::Props::Boolean, default: false
13
12
 
@@ -23,7 +22,6 @@ module Playbook
23
22
  aria: aria,
24
23
  class: classname,
25
24
  data: data,
26
- loading: loading,
27
25
  validate: validate,
28
26
  }.merge(prop(:options) || prop(:form_system_options) || {})
29
27
  end
@@ -47,13 +47,9 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
47
47
 
48
48
  const iconClass = icon ? "_icon" : ""
49
49
  const closeIconSize = size === "small" ? "xs" : "sm"
50
-
51
- const filteredProps: FormPillProps = {...props}
52
- delete filteredProps.truncate
53
-
54
50
  const css = classnames(
55
51
  `pb_form_pill_kit_${color}${iconClass}`,
56
- globalProps(filteredProps),
52
+ globalProps(props),
57
53
  className,
58
54
  size === 'small' ? 'small' : null,
59
55
  textTransform,
@@ -81,7 +77,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
81
77
  className="pb_form_pill_text"
82
78
  size={4}
83
79
  text={name}
84
- truncate={props.truncate}
85
80
  />
86
81
  </>
87
82
  )}
@@ -97,7 +92,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
97
92
  className="pb_form_pill_text"
98
93
  size={4}
99
94
  text={name}
100
- truncate={props.truncate}
101
95
  />
102
96
  <Icon
103
97
  className="pb_form_pill_icon"
@@ -117,7 +111,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
117
111
  className="pb_form_pill_tag"
118
112
  size={4}
119
113
  text={text}
120
- truncate={props.truncate}
121
114
  />
122
115
  </>
123
116
  )}
@@ -126,7 +119,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
126
119
  className="pb_form_pill_tag"
127
120
  size={4}
128
121
  text={text}
129
- truncate={props.truncate}
130
122
  />
131
123
  )}
132
124
  <div
@@ -3,7 +3,6 @@ examples:
3
3
  rails:
4
4
  - form_pill_user: Form Pill User
5
5
  - form_pill_size: Form Pill Size
6
- - form_pill_truncated_text: Truncated Text
7
6
  - form_pill_tag: Form Pill Tag
8
7
  - form_pill_example: Example
9
8
  - form_pill_icon: Form Pill Icon
@@ -12,7 +11,6 @@ examples:
12
11
  react:
13
12
  - form_pill_user: Form Pill User
14
13
  - form_pill_size: Form Pill Size
15
- - form_pill_truncated_text: Truncated Text
16
14
  - form_pill_tag: Form Pill Tag
17
15
  - form_pill_example: Example
18
16
  - form_pill_icon: Form Pill Icon
@@ -4,4 +4,3 @@ export { default as FormPillTag } from './_form_pill_tag.jsx'
4
4
  export { default as FormPillExample } from './_form_pill_example.jsx'
5
5
  export { default as FormPillIcon } from './_form_pill_icon.jsx'
6
6
  export { default as FormPillColors } from './_form_pill_colors.jsx'
7
- export { default as FormPillTruncatedText } from './_form_pill_truncated_text.jsx'
@@ -1,70 +1,9 @@
1
- import React, { useState, useEffect } from "react";
2
- import classnames from "classnames";
3
- import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
4
- import { globalProps } from "../utilities/globalProps";
5
- import HighchartsReact from "highcharts-react-official";
6
- import Highcharts from "highcharts/highcharts-gantt";
7
-
8
- import { highchartsTheme } from "../pb_dashboard/pbChartsLightTheme";
9
- import { highchartsDarkTheme } from "../pb_dashboard/pbChartsDarkTheme";
10
-
11
- type GanttChartProps = {
12
- aria?: { [key: string]: string };
13
- className?: string;
14
- customOptions: Partial<Highcharts.Options>;
15
- dark?: boolean;
16
- data?: { [key: string]: string };
17
- htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
18
- id?: string;
19
- };
20
-
21
- const GanttChart = (props: GanttChartProps) => {
22
- const {
23
- aria = {},
24
- className,
25
- customOptions = {},
26
- dark = false,
27
- data = {},
28
- htmlOptions = {},
29
- id,
30
- } = props;
31
-
32
- const ariaProps = buildAriaProps(aria);
33
- const dataProps = buildDataProps(data);
34
- const htmlProps = buildHtmlProps(htmlOptions);
35
- const classes = classnames(
36
- buildCss("pb_gantt_chart"),
37
- globalProps(props),
38
- className
39
- );
40
-
41
- const [options, setOptions] = useState<Highcharts.Options | undefined>(customOptions);
42
-
43
- useEffect(() => {
44
- setOptions(customOptions);
45
- }, [customOptions]);
46
-
47
- const setupTheme = () => {
48
- dark
49
- ? Highcharts.setOptions(highchartsDarkTheme)
50
- : Highcharts.setOptions(highchartsTheme);
51
- };
52
- setupTheme();
1
+ import React from 'react';
53
2
 
3
+ const GanttChart: React.FC = () => {
54
4
  return (
55
5
  <div>
56
- <HighchartsReact
57
- constructorType={"ganttChart"}
58
- containerProps={{
59
- className: classnames(globalProps(props), classes),
60
- id: id,
61
- ...ariaProps,
62
- ...dataProps,
63
- ...htmlProps,
64
- }}
65
- highcharts={Highcharts}
66
- options={options}
67
- />
6
+ This is a simple div component.
68
7
  </div>
69
8
  );
70
9
  };
@@ -1,208 +1,10 @@
1
- import React, { useState, useEffect } from "react";
2
- import classnames from "classnames";
3
- import HighchartsReact from "highcharts-react-official";
4
- import Highcharts from "highcharts";
5
- import { highchartsTheme } from "../pb_dashboard/pbChartsLightTheme";
6
- import { highchartsDarkTheme } from "../pb_dashboard/pbChartsDarkTheme";
7
- import mapColors from "../pb_dashboard/pbChartsColorsHelper";
8
- import highchartsMore from "highcharts/highcharts-more";
9
- import solidGauge from "highcharts/modules/solid-gauge";
10
- import defaultColors from "../tokens/exports/_colors.module.scss";
11
- import typography from "../tokens/exports/_typography.module.scss";
12
-
13
- import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
14
- import { globalProps } from "../utilities/globalProps";
15
- import { GenericObject } from "../types";
16
- import { merge } from 'lodash'
17
-
18
- type GaugeProps = {
19
- aria: { [key: string]: string };
20
- className?: string;
21
- chartData?: { name: string; value: number[] | number }[];
22
- customOptions?: Partial<Highcharts.Options>;
23
- dark?: boolean;
24
- data?: { [key: string]: string };
25
- disableAnimation?: boolean;
26
- fullCircle?: boolean;
27
- height?: string;
28
- htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
29
- id?: string;
30
- max?: number;
31
- min?: number;
32
- prefix?: string;
33
- showLabels?: boolean;
34
- style?: string;
35
- suffix?: string;
36
- title?: string;
37
- tooltipHtml?: string;
38
- colors: string[];
39
- minorTickInterval?: number;
40
- circumference: number[];
41
- };
42
-
43
- const Gauge = ({
44
- aria = {},
45
- chartData,
46
- customOptions = {},
47
- dark = false,
48
- data = {},
49
- disableAnimation = false,
50
- fullCircle = false,
51
- height = null,
52
- htmlOptions = {},
53
- id,
54
- max = 100,
55
- min = 0,
56
- prefix = "",
57
- showLabels = false,
58
- style = "solidgauge",
59
- suffix = "",
60
- title = "",
61
- tooltipHtml = '<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: ' +
62
- "<b>{point.y}</b>",
63
- colors = [],
64
- minorTickInterval = null,
65
- circumference = fullCircle ? [0, 360] : [-100, 100],
66
- ...props
67
- }: GaugeProps): React.ReactElement => {
68
- const ariaProps = buildAriaProps(aria);
69
- const dataProps = buildDataProps(data)
70
- const htmlProps = buildHtmlProps(htmlOptions);
71
- highchartsMore(Highcharts);
72
- solidGauge(Highcharts);
73
- const setupTheme = () => {
74
- dark
75
- ? Highcharts.setOptions(highchartsDarkTheme)
76
- : Highcharts.setOptions(highchartsTheme);
77
- };
78
- setupTheme();
79
-
80
- //set tooltip directly to prevent being overriden by Highcharts defaults
81
- Highcharts.setOptions({
82
- tooltip: {
83
- pointFormat: tooltipHtml,
84
- followPointer: true,
85
- },
86
- });
87
-
88
- const css = buildCss({
89
- pb_gauge_kit: true,
90
- });
91
-
92
- const [options, setOptions] = useState({});
93
-
94
- useEffect(() => {
95
- const formattedChartData = chartData.map((obj: GenericObject) => {
96
- obj.y = obj.value;
97
- delete obj.value;
98
- return obj;
99
- });
100
-
101
- const staticOptions = {
102
- chart: {
103
- events: {
104
- load() {
105
- setTimeout(this.reflow.bind(this), 0);
106
- },
107
- },
108
- type: style,
109
- height: height,
110
- },
111
- title: {
112
- text: title,
113
- },
114
- yAxis: {
115
- min: min,
116
- max: max,
117
- lineWidth: 0,
118
- tickWidth: 0,
119
- minorTickInterval: minorTickInterval,
120
- tickAmount: 2,
121
- tickPositions: [min, max],
122
- labels: {
123
- y: 26,
124
- enabled: showLabels,
125
- },
126
- },
127
- credits: false,
128
- series: [
129
- {
130
- data: formattedChartData,
131
- },
132
- ],
133
- pane: {
134
- center: ["50%", "50%"],
135
- size: "90%",
136
- startAngle: circumference[0],
137
- endAngle: circumference[1],
138
- background: {
139
- borderWidth: 20,
140
- innerRadius: "90%",
141
- outerRadius: "90%",
142
- shape: "arc",
143
- className: "gauge-pane",
144
- },
145
- },
146
- colors:
147
- colors !== undefined && colors.length > 0
148
- ? mapColors(colors)
149
- : highchartsTheme.colors,
150
- plotOptions: {
151
- series: {
152
- animation: !disableAnimation,
153
- },
154
- solidgauge: {
155
- borderColor:
156
- colors !== undefined && colors.length === 1
157
- ? mapColors(colors).join()
158
- : highchartsTheme.colors[0],
159
- borderWidth: 20,
160
- radius: 90,
161
- innerRadius: "90%",
162
- dataLabels: {
163
- borderWidth: 0,
164
- color: defaultColors.text_lt_default,
165
- enabled: true,
166
- format:
167
- `<span class="prefix">${prefix}</span>` +
168
- '<span class="fix">{y:,f}</span>' +
169
- `<span class="suffix">${suffix}</span>`,
170
- style: {
171
- fontFamily: typography.font_family_base,
172
- fontWeight: typography.regular,
173
- fontSize: typography.heading_2,
174
- },
175
- y: -26,
176
- },
177
- },
178
- },
179
- };
180
-
181
- setOptions(merge(staticOptions, customOptions));
182
-
183
- if (document.querySelector(".prefix")) {
184
- document.querySelectorAll(".prefix").forEach((prefix) => {
185
- prefix.setAttribute("y", "28");
186
- });
187
- document
188
- .querySelectorAll(".fix")
189
- .forEach((fix) => fix.setAttribute("y", "38"));
190
- }
191
- // eslint-disable-next-line react-hooks/exhaustive-deps
192
- }, [chartData]);
1
+ import React from 'react';
193
2
 
3
+ const Gauge: React.FC = () => {
194
4
  return (
195
- <HighchartsReact
196
- containerProps={{
197
- className: classnames(css, globalProps(props)),
198
- id: id,
199
- ...ariaProps,
200
- ...dataProps,
201
- ...htmlProps,
202
- }}
203
- highcharts={Highcharts}
204
- options={options}
205
- />
5
+ <div>
6
+ This is a simple div component.
7
+ </div>
206
8
  );
207
9
  };
208
10
 
@@ -17,7 +17,7 @@ afterEach(() => {
17
17
 
18
18
  const testId = 'gauge1';
19
19
 
20
- test('uses exact classname', () => {
20
+ test.skip('uses exact classname', () => {
21
21
  const data = [
22
22
  { name: 'Name', value: 45 },
23
23
  ]