playbook_ui 16.7.0 → 16.8.0.pre.alpha.PLAY2935formbuilderrequiredindicatorbug16780

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +2 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +2 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +5 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +24 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/Utilities/ColumnLayoutHelper.ts +138 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +144 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +1 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +6 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_width.jsx +57 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_width.md +66 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_enable_toggle_expansion_rails.html.erb +62 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_enable_toggle_expansion_rails.md +7 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.jsx +12 -4
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.md +4 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.html.erb +16 -2
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.md +4 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_scroll_limitation.jsx +68 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_scroll_limitation.md +7 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +16 -2
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.jsx +12 -5
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +4 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +5 -3
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_playground.json +180 -5839
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_playground.overrides.json +5 -30
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/advanced_table_column_definitions_styling.json +4 -1
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +3 -0
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  29. data/app/pb_kits/playbook/pb_card/_card.tsx +1 -1
  30. data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
  31. data/app/pb_kits/playbook/pb_currency/_currency.tsx +9 -6
  32. data/app/pb_kits/playbook/pb_currency/currency.rb +5 -10
  33. data/app/pb_kits/playbook/pb_currency/currency.test.js +44 -1
  34. data/app/pb_kits/playbook/pb_date/docs/_playground.json +13 -17
  35. data/app/pb_kits/playbook/pb_date/docs/_playground.overrides.json +13 -16
  36. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +3 -2
  37. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +38 -23
  38. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +2 -1
  39. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +31 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dialog_submission.jsx +2 -2
  41. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.html.erb +0 -2
  42. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.jsx +0 -2
  43. data/app/pb_kits/playbook/pb_date_picker/docs/_playground.json +136 -42
  44. data/app/pb_kits/playbook/pb_date_picker/docs/_playground.overrides.json +113 -45
  45. data/app/pb_kits/playbook/pb_date_range_inline/docs/_playground.json +48 -6
  46. data/app/pb_kits/playbook/pb_date_range_inline/docs/_playground.overrides.json +57 -0
  47. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_playground.json +28 -5
  48. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_playground.overrides.json +38 -0
  49. data/app/pb_kits/playbook/pb_date_stacked/docs/_playground.json +1 -1
  50. data/app/pb_kits/playbook/pb_date_stacked/docs/_playground.overrides.json +1 -1
  51. data/app/pb_kits/playbook/pb_date_time/docs/_playground.json +16 -3
  52. data/app/pb_kits/playbook/pb_date_time/docs/_playground.overrides.json +16 -3
  53. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_playground.json +11 -15
  54. data/app/pb_kits/playbook/pb_date_time_stacked/docs/_playground.overrides.json +11 -15
  55. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_playground.json +4 -4
  56. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_playground.overrides.json +4 -4
  57. data/app/pb_kits/playbook/pb_detail/docs/_playground.json +12 -18
  58. data/app/pb_kits/playbook/pb_detail/docs/_playground.overrides.json +13 -12
  59. data/app/pb_kits/playbook/pb_dialog/docs/_playground.json +108 -42
  60. data/app/pb_kits/playbook/pb_dialog/docs/_playground.overrides.json +88 -40
  61. data/app/pb_kits/playbook/pb_distribution_bar/docs/_playground.json +65 -7
  62. data/app/pb_kits/playbook/pb_distribution_bar/docs/_playground.overrides.json +45 -0
  63. data/app/pb_kits/playbook/pb_draggable/_draggable.scss +19 -0
  64. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_rails.md +2 -0
  65. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_react.md +1 -0
  66. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.md +2 -0
  67. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_react.md +3 -1
  68. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.md +3 -1
  69. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_react.md +3 -1
  70. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +16 -0
  71. data/app/pb_kits/playbook/pb_draggable/draggable_container.html.erb +3 -1
  72. data/app/pb_kits/playbook/pb_draggable/draggable_item.html.erb +1 -0
  73. data/app/pb_kits/playbook/pb_draggable/index.js +149 -7
  74. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +1 -0
  75. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +67 -1
  76. data/app/pb_kits/playbook/pb_draggable/touchDrag.test.js +38 -0
  77. data/app/pb_kits/playbook/pb_draggable/utilities/touchDrag.ts +173 -0
  78. data/app/pb_kits/playbook/pb_dropdown/docs/_playground.json +318 -21
  79. data/app/pb_kits/playbook/pb_dropdown/docs/_playground.overrides.json +192 -19
  80. data/app/pb_kits/playbook/pb_empty_state/docs/_playground.json +77 -12
  81. data/app/pb_kits/playbook/pb_empty_state/docs/_playground.overrides.json +79 -0
  82. data/app/pb_kits/playbook/pb_file_upload/docs/_playground.json +98 -13
  83. data/app/pb_kits/playbook/pb_file_upload/docs/_playground.overrides.json +99 -0
  84. data/app/pb_kits/playbook/pb_form/docs/_form_with_required_indicator.html.erb +20 -19
  85. data/app/pb_kits/playbook/pb_icon/_icon.scss +2 -1
  86. data/app/pb_kits/playbook/pb_icon/docs/example.yml +0 -2
  87. data/app/pb_kits/playbook/pb_icon/docs/index.js +0 -1
  88. data/app/pb_kits/playbook/pb_link/docs/_playground.json +81 -40
  89. data/app/pb_kits/playbook/pb_link/docs/_playground.overrides.json +88 -30
  90. data/app/pb_kits/playbook/pb_list/_list_item.tsx +4 -1
  91. data/app/pb_kits/playbook/pb_list/item.html.erb +1 -1
  92. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_centered_data.html.erb +90 -0
  93. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_centered_data.jsx +100 -0
  94. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_centered_data.md +1 -0
  95. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +1 -1
  96. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +2 -0
  97. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +2 -1
  98. data/app/pb_kits/playbook/pb_phone_number_input/docs/_playground.json +4 -2
  99. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +1 -1
  100. data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +262 -43
  101. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_default.html.erb +1 -0
  102. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_default.md +12 -0
  103. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_simple.html.erb +9 -0
  104. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_rails_simple.md +8 -0
  105. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +2 -0
  106. data/app/pb_kits/playbook/pb_rich_text_editor/kit.schema.json +18 -9
  107. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.html.erb +162 -0
  108. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor.rb +71 -0
  109. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor_rails.js +202 -0
  110. data/app/pb_kits/playbook/pb_table/docs/_table_sticky.html.erb +85 -83
  111. data/app/pb_kits/playbook/pb_table/docs/_table_sticky.jsx +88 -86
  112. data/app/pb_kits/playbook/pb_table/docs/_table_sticky.md +3 -1
  113. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_external_filter_rails.md +1 -1
  114. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +37 -0
  115. data/app/pb_kits/playbook/pb_title/docs/_playground.json +72 -23
  116. data/app/pb_kits/playbook/pb_title/docs/_playground.overrides.json +80 -16
  117. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +133 -102
  118. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +54 -41
  119. data/app/pb_kits/playbook/pb_tooltip/tooltip.test.jsx +60 -2
  120. data/dist/chunks/{_pb_line_graph-CIWJe3Gr.js → _pb_line_graph-BgsTI0CL.js} +1 -1
  121. data/dist/chunks/_typeahead-DA__Kgp5.js +5 -0
  122. data/dist/chunks/{globalProps-CqO4Tko1.js → globalProps-DOB47YGB.js} +1 -1
  123. data/dist/chunks/{lib-czQnE40X.js → lib-BzglXly2.js} +2 -2
  124. data/dist/chunks/vendor.js +4 -4
  125. data/dist/menu.yml +71 -132
  126. data/dist/playbook-rails-react-bindings.js +1 -1
  127. data/dist/playbook-rails.js +1 -1
  128. data/dist/playbook.css +1 -1
  129. data/lib/playbook/forms/builder/form_field_builder.rb +2 -0
  130. data/lib/playbook/version.rb +2 -2
  131. metadata +31 -10
  132. data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.html.erb +0 -1
  133. data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.jsx +0 -21
  134. data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.md +0 -7
  135. data/dist/chunks/_typeahead-B_Ac4z84.js +0 -1
@@ -22,123 +22,144 @@ $tooltip_shadow: rgba(60, 106, 172, 0.18);
22
22
  }
23
23
  }
24
24
 
25
- .pb_tooltip_kit {
26
- ~ .tooltip_tooltip,
27
- .tooltip_tooltip {
28
- display: block;
29
- opacity: 0;
30
- position: absolute;
31
- left: $offscreen;
32
- top: 0;
33
- animation-name: fadeIn;
34
- animation-duration: 150ms;
35
- animation-timing-function: linear;
36
- animation-fill-mode: forwards;
37
-
38
- &.flipped {
39
- margin-top: 15px;
40
- .arrow {
41
- border-color: transparent transparent $white transparent;
42
- transform: rotate(180deg);
43
- }
44
- }
25
+ $arrow_vertical_offset: calc(50% - #{$space_xs * 1.2});
26
+
27
+ @mixin tooltip-base-styles {
28
+ display: block;
29
+ opacity: 0;
30
+ position: absolute;
31
+ left: $offscreen;
32
+ top: 0;
33
+ animation-name: fadeIn;
34
+ animation-duration: 150ms;
35
+ animation-timing-function: linear;
36
+ animation-fill-mode: forwards;
45
37
 
38
+ &.flipped {
39
+ margin-top: 15px;
46
40
  .arrow {
47
- content: " ";
48
- position: absolute;
49
- top: 100%;
50
- left: calc(50% - 10px);
51
- border-color: $white transparent transparent transparent;
52
- border-style: solid;
53
- border-width: 10px;
54
- margin-bottom: 50px;
41
+ border-color: transparent transparent $white transparent;
42
+ transform: rotate(180deg);
55
43
  }
44
+ }
56
45
 
57
- &.visible,
58
- &.show {
59
- z-index: $z_9;
60
- padding: $space_xs $space_sm;
61
- box-shadow: $shadow_deeper;
62
- border-radius: $border_rad_light;
63
- }
46
+ .arrow {
47
+ content: " ";
48
+ position: absolute;
49
+ top: 100%;
50
+ left: calc(50% - 10px);
51
+ border-color: $white transparent transparent transparent;
52
+ border-style: solid;
53
+ border-width: 10px;
54
+ margin-bottom: 50px;
55
+ }
64
56
 
65
- // react only
66
- &.visible {
67
- color: $white;
57
+ &.visible {
58
+ z-index: $z_max !important;
59
+ }
60
+
61
+ &.visible,
62
+ &.show {
63
+ z-index: $z_max;
64
+ padding: $space_xs $space_sm;
65
+ box-shadow: $shadow_deeper;
66
+ border-radius: $border_rad_light;
67
+ }
68
+
69
+ &.visible {
70
+ color: $white;
71
+ background-color: rgba($black, $opacity_9);
72
+
73
+ .arrow_bg {
74
+ width: 10px;
75
+ height: 10px;
68
76
  background-color: rgba($black, $opacity_9);
69
- &.right {
70
- box-shadow: -8px 0 28px 0 $tooltip_shadow;
71
- }
72
- &.bottom {
73
- box-shadow: 0 -12px 28px 0 $tooltip_shadow;
74
- }
75
- &.left {
76
- box-shadow: 8px 0 28px 0 $tooltip_shadow;
77
- }
78
- // react arrow
79
- .arrow_bg {
80
- width: 10px;
81
- height: 10px;
82
- background-color: rgba($black, $opacity_9);
83
- transform: rotate(45deg);
84
- }
77
+ transform: rotate(45deg);
85
78
  }
79
+ }
86
80
 
87
- //rails only
88
- &.show {
89
- opacity: 1;
90
- margin-bottom: $space_sm;
91
- color: $white;
92
- background-color: rgba($black, $opacity_9);
93
- &.fade_out {
94
- animation-name: fadeOut;
95
- animation-duration: 150ms;
96
- animation-timing-function: linear;
97
- animation-fill-mode: forwards;
98
- }
99
- .arrow {
100
- border-color: $black transparent transparent transparent;
101
- opacity: $opacity_9;
102
- }
81
+ &.show {
82
+ opacity: 1;
83
+ margin-bottom: $space_sm;
84
+ color: $white;
85
+ background-color: rgba($black, $opacity_9);
86
+
87
+ &.fade_out {
88
+ animation-name: fadeOut;
89
+ animation-duration: 150ms;
90
+ animation-timing-function: linear;
91
+ animation-fill-mode: forwards;
92
+ }
93
+
94
+ .arrow {
95
+ border-color: $black transparent transparent transparent;
96
+ opacity: $opacity_9;
103
97
  }
104
98
  }
99
+ }
100
+
101
+ @mixin tooltip-dark-styles {
102
+ &.visible {
103
+ color: $charcoal;
104
+ background-color: $white;
105
+ }
106
+
107
+ &.show {
108
+ color: $charcoal;
109
+ background-color: $white;
110
+ }
111
+
112
+ .arrow {
113
+ border-color: $white transparent transparent transparent;
114
+ opacity: $opacity_10;
115
+ }
116
+
117
+ .arrow_bg {
118
+ background-color: $white;
119
+ }
120
+
121
+ &.flipped {
122
+ .arrow {
123
+ border-color: transparent transparent $black transparent;
124
+ opacity: $opacity_9;
125
+ }
126
+ }
127
+ }
128
+
129
+ .pb_tooltip_kit {
130
+ ~ .tooltip_tooltip,
131
+ .tooltip_tooltip {
132
+ @include tooltip-base-styles;
133
+ }
105
134
 
106
135
  &.dark {
107
- ~.tooltip_tooltip,
136
+ &.tooltip_tooltip,
137
+ ~ .tooltip_tooltip,
108
138
  .tooltip_tooltip {
109
- //react
110
- &.visible {
111
- color: $charcoal;
112
- background-color: $white;
113
- }
114
- //rails
115
- &.show {
116
- color: $charcoal;
117
- background-color: $white;
118
- }
119
- .arrow {
120
- border-color: $white transparent transparent transparent;
121
- opacity: $opacity_10;
122
- }
123
- // react arrow
124
- .arrow_bg {
125
- background-color: $white;
126
- }
127
- &.flipped {
128
- .arrow {
129
- border-color: transparent transparent $black transparent;
130
- opacity: $opacity_9;
131
- }
132
- }
139
+ @include tooltip-dark-styles;
133
140
  }
134
141
  }
135
142
  }
136
143
 
137
- // Right
138
- .pb_tooltip_kit .tooltip_tooltip {
139
- $arrow_vertical_offset: calc(50% - #{$space_xs * 1.2});
144
+ .tooltip_tooltip {
145
+ @include tooltip-base-styles;
146
+ }
147
+
148
+ .tooltip_tooltip.dark,
149
+ .pb_tooltip_kit.dark ~ .tooltip_tooltip,
150
+ .pb_tooltip_kit.dark .tooltip_tooltip {
151
+ @include tooltip-dark-styles;
152
+ }
140
153
 
141
- &[data-popper-placement="right"] {
154
+ .tooltip_tooltip,
155
+ .pb_tooltip_kit ~ .tooltip_tooltip,
156
+ .pb_tooltip_kit .tooltip_tooltip {
157
+ &[data-placement="right"],
158
+ &[data-placement="right-start"],
159
+ &[data-placement="right-end"],
160
+ &[data-popper-placement="right"],
161
+ &[data-popper-placement="right-start"],
162
+ &[data-popper-placement="right-end"] {
142
163
  box-shadow: -8px 0 28px 0 $tooltip_shadow;
143
164
  .arrow {
144
165
  left: -18px;
@@ -148,11 +169,16 @@ $tooltip_shadow: rgba(60, 106, 172, 0.18);
148
169
  transform: rotate(90deg);
149
170
  }
150
171
  &.flipped .arrow {
151
- transform: rotate(270deg);
172
+ transform: rotate(270deg);
152
173
  }
153
174
  }
154
175
 
155
- &[data-popper-placement="bottom"] {
176
+ &[data-placement="bottom"],
177
+ &[data-placement="bottom-start"],
178
+ &[data-placement="bottom-end"],
179
+ &[data-popper-placement="bottom"],
180
+ &[data-popper-placement="bottom-start"],
181
+ &[data-popper-placement="bottom-end"] {
156
182
  box-shadow: 0 -12px 28px 0 $tooltip_shadow;
157
183
  .arrow {
158
184
  top: -18px;
@@ -164,7 +190,12 @@ $tooltip_shadow: rgba(60, 106, 172, 0.18);
164
190
  }
165
191
  }
166
192
 
167
- &[data-popper-placement="left"] {
193
+ &[data-placement="left"],
194
+ &[data-placement="left-start"],
195
+ &[data-placement="left-end"],
196
+ &[data-popper-placement="left"],
197
+ &[data-popper-placement="left-start"],
198
+ &[data-popper-placement="left-end"] {
168
199
  box-shadow: 8px 0 28px 0 $tooltip_shadow;
169
200
  .arrow {
170
201
  margin-bottom: 0;
@@ -1,7 +1,9 @@
1
1
  import React, { useRef, useState, forwardRef, ForwardedRef } from "react"
2
2
 
3
3
  import {
4
+ autoUpdate,
4
5
  arrow,
6
+ FloatingPortal,
5
7
  flip,
6
8
  offset,
7
9
  Placement,
@@ -43,6 +45,8 @@ type TooltipProps = {
43
45
  forceOpenTooltip?: boolean,
44
46
  } & GlobalProps
45
47
 
48
+ const TOOLTIP_BOUNDARY_PADDING = 8
49
+
46
50
  const Tooltip = forwardRef((props: TooltipProps, ref: ForwardedRef<unknown>): React.ReactElement => {
47
51
  const {
48
52
  aria = {},
@@ -90,17 +94,20 @@ const Tooltip = forwardRef((props: TooltipProps, ref: ForwardedRef<unknown>): Re
90
94
  y,
91
95
  } = useFloating({
92
96
  strategy: position,
97
+ whileElementsMounted: autoUpdate,
93
98
  middleware: [
94
- arrow({
95
- element: arrowRef,
96
- }),
99
+ offset(10),
97
100
  flip({
98
101
  fallbackPlacements: ["top", "right", "bottom", "left"],
99
102
  fallbackStrategy: "initialPlacement",
100
103
  flipAlignment: false,
104
+ padding: TOOLTIP_BOUNDARY_PADDING,
105
+ }),
106
+ shift({ padding: TOOLTIP_BOUNDARY_PADDING }),
107
+ arrow({
108
+ element: arrowRef,
109
+ padding: TOOLTIP_BOUNDARY_PADDING,
101
110
  }),
102
- offset(10),
103
- shift()
104
111
  ],
105
112
  open,
106
113
  onOpenChange(open) {
@@ -136,6 +143,7 @@ const Tooltip = forwardRef((props: TooltipProps, ref: ForwardedRef<unknown>): Re
136
143
  right: "left",
137
144
  top: "bottom",
138
145
  }[placement.split("-")[0]]
146
+ const arrowPlacementStyle = staticSide ? { [staticSide]: "-5px" } : {}
139
147
 
140
148
  const tooltipSizing = () => {
141
149
  return Object.assign(
@@ -174,43 +182,48 @@ const Tooltip = forwardRef((props: TooltipProps, ref: ForwardedRef<unknown>): Re
174
182
  {children}
175
183
  </div>
176
184
  {(open || forceOpenTooltip) && (
177
- <div
178
- {...getFloatingProps({
179
- className: `tooltip_tooltip ${placement} visible`,
180
- ref: refs.setFloating,
181
- role: "tooltip",
182
- style: {
183
- ...tooltipSizing(),
184
- position: strategy,
185
- top: y ?? 0,
186
- left: x ?? 0,
187
- zIndex: zIndex ?? 0,
188
- },
189
- })}
190
- >
191
- <Flex
192
- align="center"
193
- gap="xs"
194
- >
195
- {icon && (
196
- <i className={`pb_icon_kit`}>
197
- <Icon
198
- icon={icon}
199
- />
200
- </i>)}
201
- {text}
202
- </Flex>
185
+ <FloatingPortal>
203
186
  <div
204
- className="arrow_bg"
205
- ref={arrowRef}
206
- style={{
207
- position: "absolute",
208
- left: arrowX != null ? `${arrowX}px` : "",
209
- top: arrowY != null ? `${arrowY}px` : "",
210
- [staticSide]: "-5px",
211
- }}
212
- />
213
- </div>
187
+ data-placement={placement}
188
+ {...getFloatingProps({
189
+ className: classnames(`tooltip_tooltip ${placement} visible`, {
190
+ dark: rest.dark,
191
+ }),
192
+ ref: refs.setFloating,
193
+ role: "tooltip",
194
+ style: {
195
+ ...tooltipSizing(),
196
+ position: strategy,
197
+ top: y ?? 0,
198
+ left: x ?? 0,
199
+ ...(zIndex ? { zIndex } : {}),
200
+ },
201
+ })}
202
+ >
203
+ <Flex
204
+ align="center"
205
+ gap="xs"
206
+ >
207
+ {icon && (
208
+ <i className={`pb_icon_kit`}>
209
+ <Icon
210
+ icon={icon}
211
+ />
212
+ </i>)}
213
+ {text}
214
+ </Flex>
215
+ <div
216
+ className="arrow_bg"
217
+ ref={arrowRef}
218
+ style={{
219
+ position: "absolute",
220
+ left: arrowX != null ? `${arrowX}px` : "",
221
+ top: arrowY != null ? `${arrowY}px` : "",
222
+ ...arrowPlacementStyle,
223
+ }}
224
+ />
225
+ </div>
226
+ </FloatingPortal>
214
227
  )}
215
228
  </>
216
229
  )
@@ -2,6 +2,17 @@ import React from "react";
2
2
  import { cleanup, render, screen, fireEvent, waitFor } from "../utilities/test-utils";
3
3
  import { Button, Tooltip } from "playbook-ui";
4
4
 
5
+ jest.mock("@floating-ui/react", () => {
6
+ const actual = jest.requireActual("@floating-ui/react")
7
+
8
+ return {
9
+ ...actual,
10
+ useFloating: jest.fn(actual.useFloating),
11
+ }
12
+ })
13
+
14
+ const { useFloating } = require("@floating-ui/react")
15
+
5
16
  function TooltipTest() {
6
17
  const text = "this is a text",
7
18
  placement = "top",
@@ -35,7 +46,10 @@ test("opens on mouseenter", async () => {
35
46
 
36
47
  fireEvent.mouseEnter(screen.getByRole("tooltip_trigger"));
37
48
  await waitFor(() => {
38
- expect(screen.queryByRole("tooltip")).toBeInTheDocument();
49
+ const tooltip = screen.queryByRole("tooltip");
50
+
51
+ expect(tooltip).toBeInTheDocument();
52
+ expect(tooltip?.closest("[data-floating-ui-portal]")).toBeInTheDocument();
39
53
  cleanup();
40
54
  })
41
55
  });
@@ -72,6 +86,7 @@ test("has default position absolute", async () => {
72
86
  fireEvent.mouseEnter(screen.getByRole("tooltip_trigger"));
73
87
  await waitFor(() => {
74
88
  expect(screen.queryByRole("tooltip")).toHaveStyle({"position": "absolute"});
89
+ expect(screen.queryByRole("tooltip")).not.toHaveStyle({"z-index": "0"});
75
90
  cleanup();
76
91
  })
77
92
 
@@ -127,4 +142,47 @@ test("doesn't display tooltip with showTooltip set to false", async () => {
127
142
  })
128
143
 
129
144
  cleanup();
130
- });
145
+ });
146
+
147
+ test("keeps the arrow visible when placement flips left with center offset", async () => {
148
+ const actual = jest.requireActual("@floating-ui/react")
149
+
150
+ useFloating.mockImplementationOnce((options) => {
151
+ const result = actual.useFloating(options)
152
+
153
+ return {
154
+ ...result,
155
+ middlewareData: {
156
+ ...result.middlewareData,
157
+ arrow: {
158
+ centerOffset: 12,
159
+ x: 6,
160
+ y: 10,
161
+ },
162
+ },
163
+ open: true,
164
+ placement: "left",
165
+ x: 20,
166
+ y: 30,
167
+ }
168
+ })
169
+
170
+ render(
171
+ <Tooltip
172
+ data={{ testid: "left-placement-arrow-test" }}
173
+ forceOpenTooltip
174
+ placement="left"
175
+ text="left placement"
176
+ zIndex="10"
177
+ >
178
+ <Button text="hover me" />
179
+ </Tooltip>
180
+ )
181
+
182
+ const tooltip = await screen.findByRole("tooltip")
183
+ const arrow = tooltip.querySelector(".arrow_bg")
184
+
185
+ expect(tooltip).toHaveAttribute("data-placement", "left")
186
+ expect(arrow).toBeInTheDocument()
187
+ expect(arrow).not.toHaveStyle({ opacity: "0" })
188
+ })
@@ -1 +1 @@
1
- import{jsx}from"react/jsx-runtime";import{useMemo}from"react";import{b as buildAriaProps,a as buildDataProps,c as buildHtmlProps,d as classnames,e as buildCss,g as globalProps}from"./globalProps-CqO4Tko1.js";import Highcharts from"highcharts";import HighchartsReact from"highcharts-react-official";import{t as typography,c as colors}from"./lib-czQnE40X.js";import highchartsMore from"highcharts/highcharts-more";import solidGauge from"highcharts/modules/solid-gauge";const barGraphTheme={title:{text:"",style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.bold,fontSize:typography.heading_3}},subtitle:{text:"",style:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_base}},chart:{type:"column"},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},colors:[colors.data_1,colors.data_2,colors.data_3,colors.data_4,colors.data_5,colors.data_6,colors.data_7],credits:{enabled:false},legend:{enabled:false,itemStyle:{color:colors.text_lt_light,fill:colors.text_lt_light,fontSize:typography.text_smaller}},xAxis:{gridLineWidth:0,lineColor:colors.border_light,tickColor:colors.border_light,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_4}}},yAxis:{alternateGridColor:void 0,minorTickInterval:null,gridLineColor:colors.border_light,minorGridLineColor:colors.border_light,lineWidth:0,tickWidth:0,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}}}};const PbBarGraph=props=>{const{aria:aria={},data:data={},id:id,htmlOptions:htmlOptions={},options:options,className:className}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_bar_graph"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbBarGraph />",options);return{}}return Highcharts.merge({},barGraphTheme,options)}),[options]);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};const pbCircleChartTheme={title:{text:"",style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.bold,fontSize:typography.heading_3}},chart:{type:"pie"},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},pointFormat:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',followPointer:true,shadow:false,borderWidth:0,borderRadius:10,style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},plotOptions:{pie:{dataLabels:{enabled:false,connectorShape:"straight",connectorWidth:3,format:"<div>{point.name}</div>",style:{fontFamily:typography.font_family_base,fontSize:typography.text_smaller,color:colors.text_lt_light,fontWeight:typography.regular,textOutline:"2px $white"}},innerSize:"50%",borderColor:"",borderWidth:null,colors:[colors.data_1,colors.data_2,colors.data_3,colors.data_4,colors.data_5,colors.data_6,colors.data_7]}},legend:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemStyle:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_smaller},itemHoverStyle:{color:colors.text_lt_default},itemHiddenStyle:{color:colors.text_lt_lighter}},credits:{enabled:false}};const PbCircleChart=props=>{const{aria:aria={},className:className,data:data={},id:id,htmlOptions:htmlOptions={},options:options}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_circle_chart"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbCircleChart />",options);return{}}return Highcharts.merge({},pbCircleChartTheme,options)}),[options]);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};const pbGaugeGraphTheme={title:{text:"",style:{fontFamily:typography.font_family_base,fontSize:typography.text_larger}},chart:{type:"solidgauge",events:{render(){this.container;const arc=this.container.querySelector("path.gauge-pane");if(arc)arc.setAttribute("stroke-linejoin","round")}}},pane:{size:"90%",startAngle:-100,endAngle:100,background:[{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane",borderColor:colors.border_light,borderRadius:"50%"}]},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},pointFormat:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',followPointer:true,shadow:false,borderWidth:0,borderRadius:10,style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},yAxis:{min:0,max:100,lineWidth:0,tickPositions:[]},plotOptions:{solidgauge:{borderColor:colors.data_1,borderWidth:20,color:colors.data_1,radius:90,innerRadius:"90%",y:-26,dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:'<span class="fix">{y:,f}</span>',style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}},credits:{enabled:false}};const PbGaugeChart=props=>{const{aria:aria={},className:className,data:data={},htmlOptions:htmlOptions={},id:id,ref:ref,options:options={}}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_gauge_chart"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbLineGraph />",options);return{}}return Highcharts.merge({},pbGaugeGraphTheme,options)}),[options]);highchartsMore(Highcharts);solidGauge(Highcharts);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,ref:ref,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};const pbLineGraphTheme={title:{text:"",style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.bold,fontSize:typography.heading_3}},subtitle:{text:"",style:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_base}},chart:{type:"line"},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},followPointer:true,shadow:false,borderWidth:0,borderRadius:10,style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},plotOptions:{line:{dataLabels:{enabled:false}}},credits:{enabled:false},legend:{enabled:false,itemStyle:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_smaller},itemHoverStyle:{color:colors.text_lt_default},itemHiddenStyle:{color:colors.text_lt_lighter}},colors:[colors.data_1,colors.data_2,colors.data_3,colors.data_4,colors.data_5,colors.data_6,colors.data_7],xAxis:{gridLineWidth:0,lineColor:colors.border_light,tickColor:colors.border_light,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_4}}},yAxis:{alternateGridColor:void 0,minorTickInterval:null,gridLineColor:colors.border_light,minorGridLineColor:colors.border_light,lineWidth:0,tickWidth:0,tickPixelInterval:50,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}}}};const PbLineGraph=props=>{const{aria:aria={},className:className,data:data={},id:id,htmlOptions:htmlOptions={},options:options}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_line_graph"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbLineGraph />",options);return{}}return Highcharts.merge({},pbLineGraphTheme,options)}),[options]);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};export{PbBarGraph as P,PbCircleChart as a,PbGaugeChart as b,PbLineGraph as c};
1
+ import{jsx}from"react/jsx-runtime";import{useMemo}from"react";import{b as buildAriaProps,a as buildDataProps,c as buildHtmlProps,d as classnames,e as buildCss,g as globalProps}from"./globalProps-DOB47YGB.js";import Highcharts from"highcharts";import HighchartsReact from"highcharts-react-official";import{t as typography,c as colors}from"./lib-BzglXly2.js";import highchartsMore from"highcharts/highcharts-more";import solidGauge from"highcharts/modules/solid-gauge";const barGraphTheme={title:{text:"",style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.bold,fontSize:typography.heading_3}},subtitle:{text:"",style:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_base}},chart:{type:"column"},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},colors:[colors.data_1,colors.data_2,colors.data_3,colors.data_4,colors.data_5,colors.data_6,colors.data_7],credits:{enabled:false},legend:{enabled:false,itemStyle:{color:colors.text_lt_light,fill:colors.text_lt_light,fontSize:typography.text_smaller}},xAxis:{gridLineWidth:0,lineColor:colors.border_light,tickColor:colors.border_light,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_4}}},yAxis:{alternateGridColor:void 0,minorTickInterval:null,gridLineColor:colors.border_light,minorGridLineColor:colors.border_light,lineWidth:0,tickWidth:0,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}}}};const PbBarGraph=props=>{const{aria:aria={},data:data={},id:id,htmlOptions:htmlOptions={},options:options,className:className}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_bar_graph"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbBarGraph />",options);return{}}return Highcharts.merge({},barGraphTheme,options)}),[options]);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};const pbCircleChartTheme={title:{text:"",style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.bold,fontSize:typography.heading_3}},chart:{type:"pie"},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},pointFormat:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',followPointer:true,shadow:false,borderWidth:0,borderRadius:10,style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},plotOptions:{pie:{dataLabels:{enabled:false,connectorShape:"straight",connectorWidth:3,format:"<div>{point.name}</div>",style:{fontFamily:typography.font_family_base,fontSize:typography.text_smaller,color:colors.text_lt_light,fontWeight:typography.regular,textOutline:"2px $white"}},innerSize:"50%",borderColor:"",borderWidth:null,colors:[colors.data_1,colors.data_2,colors.data_3,colors.data_4,colors.data_5,colors.data_6,colors.data_7]}},legend:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemStyle:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_smaller},itemHoverStyle:{color:colors.text_lt_default},itemHiddenStyle:{color:colors.text_lt_lighter}},credits:{enabled:false}};const PbCircleChart=props=>{const{aria:aria={},className:className,data:data={},id:id,htmlOptions:htmlOptions={},options:options}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_circle_chart"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbCircleChart />",options);return{}}return Highcharts.merge({},pbCircleChartTheme,options)}),[options]);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};const pbGaugeGraphTheme={title:{text:"",style:{fontFamily:typography.font_family_base,fontSize:typography.text_larger}},chart:{type:"solidgauge",events:{render(){this.container;const arc=this.container.querySelector("path.gauge-pane");if(arc)arc.setAttribute("stroke-linejoin","round")}}},pane:{size:"90%",startAngle:-100,endAngle:100,background:[{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane",borderColor:colors.border_light,borderRadius:"50%"}]},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},pointFormat:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',followPointer:true,shadow:false,borderWidth:0,borderRadius:10,style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},yAxis:{min:0,max:100,lineWidth:0,tickPositions:[]},plotOptions:{solidgauge:{borderColor:colors.data_1,borderWidth:20,color:colors.data_1,radius:90,innerRadius:"90%",y:-26,dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:'<span class="fix">{y:,f}</span>',style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}},credits:{enabled:false}};const PbGaugeChart=props=>{const{aria:aria={},className:className,data:data={},htmlOptions:htmlOptions={},id:id,ref:ref,options:options={}}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_gauge_chart"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbLineGraph />",options);return{}}return Highcharts.merge({},pbGaugeGraphTheme,options)}),[options]);highchartsMore(Highcharts);solidGauge(Highcharts);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,ref:ref,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};const pbLineGraphTheme={title:{text:"",style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.bold,fontSize:typography.heading_3}},subtitle:{text:"",style:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_base}},chart:{type:"line"},tooltip:{backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,colors.bg_dark],[1,colors.bg_dark]]},followPointer:true,shadow:false,borderWidth:0,borderRadius:10,style:{fontFamily:typography.font_family_base,color:colors.text_dk_default,fontWeight:typography.regular,fontSize:typography.text_smaller}},plotOptions:{line:{dataLabels:{enabled:false}}},credits:{enabled:false},legend:{enabled:false,itemStyle:{fontFamily:typography.font_family_base,color:colors.text_lt_light,fontWeight:typography.regular,fontSize:typography.text_smaller},itemHoverStyle:{color:colors.text_lt_default},itemHiddenStyle:{color:colors.text_lt_lighter}},colors:[colors.data_1,colors.data_2,colors.data_3,colors.data_4,colors.data_5,colors.data_6,colors.data_7],xAxis:{gridLineWidth:0,lineColor:colors.border_light,tickColor:colors.border_light,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{color:colors.text_lt_default,fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_4}}},yAxis:{alternateGridColor:void 0,minorTickInterval:null,gridLineColor:colors.border_light,minorGridLineColor:colors.border_light,lineWidth:0,tickWidth:0,tickPixelInterval:50,labels:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}},title:{style:{fontFamily:typography.font_family_base,color:colors.text_lt_lighter,fontWeight:typography.bold,fontSize:typography.text_smaller}}}};const PbLineGraph=props=>{const{aria:aria={},className:className,data:data={},id:id,htmlOptions:htmlOptions={},options:options}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_pb_line_graph"),globalProps(props),className);const mergedOptions=useMemo((()=>{if(!options||typeof options!=="object"){console.error("❌ Invalid options passed to <PbLineGraph />",options);return{}}return Highcharts.merge({},pbLineGraphTheme,options)}),[options]);return jsx("div",{children:jsx(HighchartsReact,{containerProps:{className:classnames(classes),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:mergedOptions})})};export{PbBarGraph as P,PbCircleChart as a,PbGaugeChart as b,PbLineGraph as c};