playbook_ui 15.3.0.pre.alpha.PLAY2630fctearlyautoClose12133 → 15.3.0.pre.alpha.PLAY258611978
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -63
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.html.erb +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +1 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.jsx +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.html.erb +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.md +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.jsx +1 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.jsx +0 -16
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +20 -90
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -31
- data/app/pb_kits/playbook/pb_background/background.html.erb +2 -10
- data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -4
- data/app/pb_kits/playbook/pb_badge/badge.test.js +0 -13
- data/app/pb_kits/playbook/pb_currency/_currency.tsx +7 -20
- data/app/pb_kits/playbook/pb_currency/currency.rb +8 -35
- data/app/pb_kits/playbook/pb_currency/currency.test.js +0 -47
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.html.erb +1 -1
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.jsx +1 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +9 -31
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_auto_close.html.erb +1 -15
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.html.erb +8 -9
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_positions.html.erb +10 -11
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +0 -7
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +1 -64
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -33
- data/dist/chunks/{_line_graph-BRirnhGy.js → _line_graph-BokgW0SI.js} +1 -1
- data/dist/chunks/_typeahead-BR-uKbcO.js +6 -0
- data/dist/chunks/{_weekday_stacked-C4BovBRB.js → _weekday_stacked-n_2SPgc2.js} +3 -3
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +6 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header_rails.html.erb +0 -104
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header_rails.md +0 -1
- data/app/pb_kits/playbook/pb_currency/docs/_currency_variants.md +0 -1
- data/dist/chunks/_typeahead-CFOqvZNu.js +0 -6
- /data/app/pb_kits/playbook/pb_date_picker/docs/{_date_picker_and_dropdown_range.md → _date_picker_and_dropdown_range..md} +0 -0
|
@@ -17,7 +17,8 @@ module Playbook
|
|
|
17
17
|
prop :symbol, type: Playbook::Props::String,
|
|
18
18
|
default: "$"
|
|
19
19
|
|
|
20
|
-
prop :amount,
|
|
20
|
+
prop :amount, type: Playbook::Props::String,
|
|
21
|
+
required: true
|
|
21
22
|
|
|
22
23
|
prop :unit, type: Playbook::Props::String,
|
|
23
24
|
required: false
|
|
@@ -91,7 +92,7 @@ module Playbook
|
|
|
91
92
|
end
|
|
92
93
|
|
|
93
94
|
def negative_sign
|
|
94
|
-
|
|
95
|
+
amount.starts_with?("-") && swap_negative ? "-" : ""
|
|
95
96
|
end
|
|
96
97
|
|
|
97
98
|
def body_props
|
|
@@ -116,32 +117,10 @@ module Playbook
|
|
|
116
117
|
end
|
|
117
118
|
end
|
|
118
119
|
|
|
119
|
-
def currency_amount
|
|
120
|
-
@currency_amount ||= convert_amount(amount)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
120
|
private
|
|
124
121
|
|
|
125
|
-
# Convert numeric input to string format
|
|
126
|
-
def convert_amount(input)
|
|
127
|
-
if input.is_a?(Numeric)
|
|
128
|
-
if input.zero? && null_display.nil?
|
|
129
|
-
""
|
|
130
|
-
else
|
|
131
|
-
format("%.2f", input)
|
|
132
|
-
end
|
|
133
|
-
# Handle string representations of zero
|
|
134
|
-
elsif input.to_s.strip.match?(/^-?0+(\.0+)?$/) && null_display.nil?
|
|
135
|
-
""
|
|
136
|
-
else
|
|
137
|
-
input.to_s
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
122
|
def whole_value
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
value = currency_amount.split(".").first
|
|
123
|
+
value = amount.split(".").first
|
|
145
124
|
if comma_separator
|
|
146
125
|
number_with_delimiter(value.gsub(",", ""))
|
|
147
126
|
else
|
|
@@ -150,9 +129,7 @@ module Playbook
|
|
|
150
129
|
end
|
|
151
130
|
|
|
152
131
|
def decimal_value
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
currency_amount.split(".")[1] || "00"
|
|
132
|
+
amount.split(".")[1] || "00"
|
|
156
133
|
end
|
|
157
134
|
|
|
158
135
|
def units_element
|
|
@@ -170,9 +147,7 @@ module Playbook
|
|
|
170
147
|
end
|
|
171
148
|
|
|
172
149
|
def abbreviated_value(index = 0..-2)
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
value = currency_amount.split(".").first.gsub(",", "").to_i
|
|
150
|
+
value = amount.split(".").first.gsub(",", "").to_i
|
|
176
151
|
abbreviated_num = number_to_human(value, units: { thousand: "K", million: "M", billion: "B", trillion: "T" }).gsub(/\s+/, "")
|
|
177
152
|
abbreviated_num[index]
|
|
178
153
|
end
|
|
@@ -199,11 +174,9 @@ module Playbook
|
|
|
199
174
|
|
|
200
175
|
if decimals == "matching"
|
|
201
176
|
if comma_separator
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
number_with_delimiter(currency_amount.gsub(",", ""))
|
|
177
|
+
number_with_delimiter(amount.gsub(",", ""))
|
|
205
178
|
else
|
|
206
|
-
|
|
179
|
+
amount
|
|
207
180
|
end
|
|
208
181
|
else
|
|
209
182
|
whole_value
|
|
@@ -133,50 +133,3 @@ test('handles negative amounts correctly', () => {
|
|
|
133
133
|
expect(screen.getByTestId('test-negative-no-symbol')).toHaveTextContent('-400.50')
|
|
134
134
|
expect(screen.getByTestId('test-negative-medium-size')).toHaveTextContent('$-500.55')
|
|
135
135
|
})
|
|
136
|
-
|
|
137
|
-
test('handles numeric amounts correctly', () => {
|
|
138
|
-
render(
|
|
139
|
-
<>
|
|
140
|
-
<Currency
|
|
141
|
-
amount={320}
|
|
142
|
-
data={{ testid: 'test-numeric-default' }}
|
|
143
|
-
/>
|
|
144
|
-
<Currency
|
|
145
|
-
abbreviate
|
|
146
|
-
amount={3200000}
|
|
147
|
-
data={{ testid: 'test-numeric-millions' }}
|
|
148
|
-
/>
|
|
149
|
-
<Currency
|
|
150
|
-
amount={123456.78}
|
|
151
|
-
commaSeparator
|
|
152
|
-
data={{ testid: 'test-numeric-comma-decimals' }}
|
|
153
|
-
/>
|
|
154
|
-
<Currency
|
|
155
|
-
amount={400.50}
|
|
156
|
-
data={{ testid: 'test-numeric-no-symbol' }}
|
|
157
|
-
symbol=""
|
|
158
|
-
/>
|
|
159
|
-
<Currency
|
|
160
|
-
amount={500.55}
|
|
161
|
-
data={{ testid: 'test-numeric-medium-size' }}
|
|
162
|
-
size="md"
|
|
163
|
-
/>
|
|
164
|
-
<Currency
|
|
165
|
-
amount={-600.70}
|
|
166
|
-
data={{ testid: 'test-numeric-negative' }}
|
|
167
|
-
/>
|
|
168
|
-
<Currency
|
|
169
|
-
amount={0.00}
|
|
170
|
-
data={{ testid: 'test-numeric-null' }}
|
|
171
|
-
/>
|
|
172
|
-
</>
|
|
173
|
-
)
|
|
174
|
-
|
|
175
|
-
expect(screen.getByTestId('test-numeric-default')).toHaveTextContent('$320')
|
|
176
|
-
expect(screen.getByTestId('test-numeric-millions')).toHaveTextContent('$3.2M')
|
|
177
|
-
expect(screen.getByTestId('test-numeric-comma-decimals')).toHaveTextContent('$123,456.78')
|
|
178
|
-
expect(screen.getByTestId('test-numeric-no-symbol')).toHaveTextContent('400.50')
|
|
179
|
-
expect(screen.getByTestId('test-numeric-medium-size')).toHaveTextContent('$500.55')
|
|
180
|
-
expect(screen.getByTestId('test-numeric-negative')).toHaveTextContent('-$600.70')
|
|
181
|
-
expect(screen.getByTestId('test-numeric-null')).toHaveTextContent('$.00')
|
|
182
|
-
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useState
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
2
|
import classnames from "classnames";
|
|
3
3
|
|
|
4
4
|
import { globalProps, GlobalProps } from "../utilities/globalProps";
|
|
@@ -36,7 +36,6 @@ type FixedConfirmationToastProps = {
|
|
|
36
36
|
|
|
37
37
|
const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.ReactElement => {
|
|
38
38
|
const [showToast, toggleToast] = useState(true);
|
|
39
|
-
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
|
|
40
39
|
|
|
41
40
|
const {
|
|
42
41
|
autoClose = 0,
|
|
@@ -68,42 +67,21 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React
|
|
|
68
67
|
|
|
69
68
|
const htmlProps = buildHtmlProps(htmlOptions);
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// Manage auto-close timeout separately
|
|
76
|
-
useEffect(() => {
|
|
77
|
-
// Clear any existing timeout
|
|
78
|
-
if (timeoutRef.current) {
|
|
79
|
-
clearTimeout(timeoutRef.current);
|
|
80
|
-
timeoutRef.current = null;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Set new timeout if autoClose is enabled and toast is open
|
|
84
|
-
if (autoClose && open && showToast) {
|
|
85
|
-
timeoutRef.current = setTimeout(() => {
|
|
70
|
+
const autoCloseToast = () => {
|
|
71
|
+
if (autoClose && open) {
|
|
72
|
+
setTimeout(() => {
|
|
86
73
|
toggleToast(false);
|
|
87
74
|
onClose();
|
|
88
|
-
timeoutRef.current = null;
|
|
89
75
|
}, autoClose);
|
|
90
76
|
}
|
|
77
|
+
};
|
|
91
78
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
timeoutRef.current = null;
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
}, [autoClose, open, showToast, onClose]);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
toggleToast(open);
|
|
81
|
+
autoCloseToast();
|
|
82
|
+
}, [open]);
|
|
100
83
|
|
|
101
84
|
const handleClick = () => {
|
|
102
|
-
// Clear autoClose timeout when manually closing
|
|
103
|
-
if (timeoutRef.current) {
|
|
104
|
-
clearTimeout(timeoutRef.current);
|
|
105
|
-
timeoutRef.current = null;
|
|
106
|
-
}
|
|
107
85
|
toggleToast(!closeable);
|
|
108
86
|
onClose();
|
|
109
87
|
};
|
|
@@ -22,27 +22,13 @@
|
|
|
22
22
|
}) %>
|
|
23
23
|
|
|
24
24
|
<script>
|
|
25
|
-
// Hide toasts immediately
|
|
26
|
-
const hideAutoToasts = () => {
|
|
27
|
-
const toastAuto = document.getElementById('toast-auto-close');
|
|
28
|
-
const toastAutoCloseable = document.getElementById('toast-auto-close-closeable');
|
|
29
|
-
if (toastAuto) toastAuto.style.display = 'none';
|
|
30
|
-
if (toastAutoCloseable) toastAutoCloseable.style.display = 'none';
|
|
31
|
-
}
|
|
32
|
-
hideAutoToasts();
|
|
33
|
-
|
|
34
|
-
// Handle various page load/restore events
|
|
35
|
-
window.addEventListener('pageshow', hideAutoToasts)
|
|
36
|
-
document.addEventListener('turbolinks:load', hideAutoToasts)
|
|
37
|
-
document.addEventListener('turbo:load', hideAutoToasts)
|
|
38
|
-
|
|
39
25
|
document.addEventListener('DOMContentLoaded', () => {
|
|
40
26
|
// Initialize toast elements and buttons
|
|
41
27
|
const toasts = {
|
|
42
28
|
'#toast-auto-close': document.querySelector("#toast-auto-close"),
|
|
43
29
|
'#toast-auto-close-closeable': document.querySelector("#toast-auto-close-closeable")
|
|
44
30
|
}
|
|
45
|
-
|
|
31
|
+
|
|
46
32
|
const buttons = {
|
|
47
33
|
'#toast-auto-close': document.querySelector("button[data-toast='#toast-auto-close']"),
|
|
48
34
|
'#toast-auto-close-closeable': document.querySelector("button[data-toast='#toast-auto-close-closeable']")
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
horizontal: "center"
|
|
25
25
|
}) %>
|
|
26
26
|
|
|
27
|
+
|
|
27
28
|
<script type="text/javascript">
|
|
28
29
|
const multitoasts = document.querySelectorAll(".multitoast-to-hide")
|
|
29
30
|
const multibuttons = document.querySelectorAll("button[data-multitoast]")
|
|
@@ -34,15 +35,6 @@
|
|
|
34
35
|
})
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
// Hide toasts immediately
|
|
38
|
-
hideMultiToasts()
|
|
39
|
-
|
|
40
|
-
// Handle various page load/restore events
|
|
41
|
-
window.addEventListener('pageshow', hideMultiToasts)
|
|
42
|
-
document.addEventListener('DOMContentLoaded', hideMultiToasts)
|
|
43
|
-
document.addEventListener('turbolinks:load', hideMultiToasts)
|
|
44
|
-
document.addEventListener('turbo:load', hideMultiToasts)
|
|
45
|
-
|
|
46
38
|
multibuttons.forEach((button) => {
|
|
47
39
|
button.onclick = () => {
|
|
48
40
|
hideMultiToasts()
|
|
@@ -54,3 +46,10 @@
|
|
|
54
46
|
}
|
|
55
47
|
})
|
|
56
48
|
</script>
|
|
49
|
+
|
|
50
|
+
<!-- hiding toast on page load -->
|
|
51
|
+
<style>
|
|
52
|
+
#toast-long, #toast-short {
|
|
53
|
+
display: none;
|
|
54
|
+
}
|
|
55
|
+
</style>
|
|
@@ -69,28 +69,27 @@
|
|
|
69
69
|
const toasts = document.querySelectorAll(".toast-to-hide")
|
|
70
70
|
const buttons = document.querySelectorAll("button[data-toast]")
|
|
71
71
|
|
|
72
|
-
const
|
|
72
|
+
const hideToasts = () => {
|
|
73
73
|
toasts.forEach((toast) => {
|
|
74
74
|
toast.style.display = "none"
|
|
75
75
|
})
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
// Hide toasts immediately
|
|
79
|
-
hidePositionToasts()
|
|
80
|
-
|
|
81
|
-
// Handle various page load/restore events
|
|
82
|
-
window.addEventListener('pageshow', hidePositionToasts)
|
|
83
|
-
document.addEventListener('DOMContentLoaded', hidePositionToasts)
|
|
84
|
-
document.addEventListener('turbolinks:load', hidePositionToasts)
|
|
85
|
-
document.addEventListener('turbo:load', hidePositionToasts)
|
|
86
|
-
|
|
87
78
|
buttons.forEach((button) => {
|
|
88
79
|
button.onclick = () => {
|
|
89
|
-
|
|
80
|
+
hideToasts()
|
|
90
81
|
let toast = document.querySelector(button.getAttribute("data-toast"))
|
|
82
|
+
|
|
91
83
|
if (toast) {
|
|
92
84
|
toast.style.display = "flex"
|
|
93
85
|
}
|
|
94
86
|
}
|
|
95
87
|
})
|
|
96
88
|
</script>
|
|
89
|
+
|
|
90
|
+
<!-- hiding toast on page load -->
|
|
91
|
+
<style>
|
|
92
|
+
#toast-top-center, #toast-top-right, #toast-top-left, #toast-bottom-center, #toast-bottom-right, #toast-bottom-left {
|
|
93
|
+
display: none;
|
|
94
|
+
}
|
|
95
|
+
</style>
|
|
@@ -9,7 +9,7 @@ import { buildDataProps, buildHtmlProps } from '../utilities/props'
|
|
|
9
9
|
|
|
10
10
|
type FormPillProps = {
|
|
11
11
|
className?: string,
|
|
12
|
-
htmlOptions?: {[key: string]: string | number | boolean | (() => void)
|
|
12
|
+
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
|
13
13
|
id?: string,
|
|
14
14
|
text: string,
|
|
15
15
|
name?: string,
|
|
@@ -165,13 +165,6 @@
|
|
|
165
165
|
line-height: 16.5px;
|
|
166
166
|
letter-spacing: normal;
|
|
167
167
|
}
|
|
168
|
-
|
|
169
|
-
// Add focus indicator for multi-value pills
|
|
170
|
-
.pb_form_pill_or_badge_focused {
|
|
171
|
-
outline: $primary solid 2px;
|
|
172
|
-
outline-offset: -1px;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
168
|
&.inline {
|
|
176
169
|
&:not(:hover) {
|
|
177
170
|
.text_input {
|
|
@@ -212,67 +212,4 @@ test('typeahead with grouped options and defaultValue focus behavior', async ()
|
|
|
212
212
|
const kit = screen.getByTestId('grouped-options-focus-test')
|
|
213
213
|
const inputDiv = kit.querySelector(".typeahead-kit-select__single-value")
|
|
214
214
|
expect(inputDiv).toHaveTextContent("Pink")
|
|
215
|
-
})
|
|
216
|
-
|
|
217
|
-
test('multi-value pills have tabIndex for keyboard navigation', () => {
|
|
218
|
-
render(
|
|
219
|
-
<Typeahead
|
|
220
|
-
data={{ testid: 'pill-tabindex-test' }}
|
|
221
|
-
defaultValue={[options[0], options[1]]}
|
|
222
|
-
isMulti
|
|
223
|
-
options={options}
|
|
224
|
-
/>
|
|
225
|
-
)
|
|
226
|
-
|
|
227
|
-
const kit = screen.getByTestId('pill-tabindex-test')
|
|
228
|
-
const pills = kit.querySelectorAll('.pb_form_pill_kit')
|
|
229
|
-
|
|
230
|
-
expect(pills.length).toBe(2)
|
|
231
|
-
|
|
232
|
-
pills.forEach(pill => {
|
|
233
|
-
expect(pill).toHaveAttribute('tabIndex', '0')
|
|
234
|
-
})
|
|
235
|
-
})
|
|
236
|
-
|
|
237
|
-
test('multi-value pills show focus indicator when focused', async () => {
|
|
238
|
-
render(
|
|
239
|
-
<Typeahead
|
|
240
|
-
data={{ testid: 'pill-focus-indicator-test' }}
|
|
241
|
-
defaultValue={[options[0], options[1], options[2]]}
|
|
242
|
-
isMulti
|
|
243
|
-
options={options}
|
|
244
|
-
/>
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
const kit = screen.getByTestId('pill-focus-indicator-test')
|
|
248
|
-
const pills = kit.querySelectorAll('.pb_form_pill_kit')
|
|
249
|
-
|
|
250
|
-
expect(pills.length).toBe(3)
|
|
251
|
-
|
|
252
|
-
const firstPill = pills[0]
|
|
253
|
-
firstPill.focus()
|
|
254
|
-
|
|
255
|
-
expect(document.activeElement).toBe(firstPill)
|
|
256
|
-
})
|
|
257
|
-
|
|
258
|
-
test('multi-value badges have tabIndex and focus class when focused', () => {
|
|
259
|
-
render(
|
|
260
|
-
<Typeahead
|
|
261
|
-
data={{ testid: 'badge-focus-test' }}
|
|
262
|
-
defaultValue={[options[0], options[1]]}
|
|
263
|
-
isMulti
|
|
264
|
-
multiKit="badge"
|
|
265
|
-
options={options}
|
|
266
|
-
/>
|
|
267
|
-
)
|
|
268
|
-
|
|
269
|
-
const kit = screen.getByTestId('badge-focus-test')
|
|
270
|
-
const badges = kit.querySelectorAll('.pb_badge_kit_primary')
|
|
271
|
-
|
|
272
|
-
expect(badges.length).toBe(2)
|
|
273
|
-
|
|
274
|
-
badges.forEach(badge => {
|
|
275
|
-
expect(badge).toHaveAttribute('tabIndex', '0')
|
|
276
|
-
})
|
|
277
|
-
})
|
|
278
|
-
|
|
215
|
+
})
|
|
@@ -12,12 +12,11 @@ type Props = {
|
|
|
12
12
|
pillColor?: "primary" | "neutral" | "success" | "warning" | "error" | "info" | "data_1" | "data_2" | "data_3" | "data_4" | "data_5" | "data_6" | "data_7" | "data_8" | "windows" | "siding" | "roofing" | "doors" | "gutters" | "solar" | "insulation" | "accessories",
|
|
13
13
|
removeProps: any,
|
|
14
14
|
selectProps: any,
|
|
15
|
-
isFocused?: boolean,
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
|
|
19
18
|
const MultiValue = (props: Props) => {
|
|
20
|
-
const { removeProps
|
|
19
|
+
const { removeProps } = props
|
|
21
20
|
const { imageUrl, label } = props.data
|
|
22
21
|
const { dark, multiKit, pillColor, truncate, wrapped } = props.selectProps
|
|
23
22
|
|
|
@@ -30,28 +29,6 @@ const MultiValue = (props: Props) => {
|
|
|
30
29
|
|
|
31
30
|
if (typeof imageUrl === 'string') formPillProps.avatarUrl = imageUrl
|
|
32
31
|
|
|
33
|
-
// Add className for focus state
|
|
34
|
-
const pillClassName = isFocused ? 'pb_form_pill_or_badge_focused' : ''
|
|
35
|
-
|
|
36
|
-
// Handle keyboard events on the pill itself to enable deletion when using tabIndex
|
|
37
|
-
const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
|
|
38
|
-
if (event.key === 'Backspace' || event.key === 'Delete') {
|
|
39
|
-
event.preventDefault()
|
|
40
|
-
event.stopPropagation()
|
|
41
|
-
// Trigger the remove action from react-select
|
|
42
|
-
if (removeProps && removeProps.onClick) {
|
|
43
|
-
removeProps.onClick(event as any)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// if arrow keys used, transfer focus to input so react-select can take over
|
|
47
|
-
else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
|
|
48
|
-
const selectInput = event.currentTarget.closest('.pb_typeahead_kit')?.querySelector('input')
|
|
49
|
-
if (selectInput instanceof HTMLInputElement) {
|
|
50
|
-
selectInput.focus()
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
32
|
return (
|
|
56
33
|
<components.MultiValueContainer
|
|
57
34
|
className="text_input_multivalue_container"
|
|
@@ -59,11 +36,8 @@ const MultiValue = (props: Props) => {
|
|
|
59
36
|
>
|
|
60
37
|
{multiKit === 'badge' &&
|
|
61
38
|
<Badge
|
|
62
|
-
className={pillClassName}
|
|
63
39
|
closeProps={removeProps}
|
|
64
|
-
htmlOptions={{onKeyDown:handleKeyDown}}
|
|
65
40
|
removeIcon
|
|
66
|
-
tabIndex={0}
|
|
67
41
|
text={label}
|
|
68
42
|
variant="primary"
|
|
69
43
|
/>
|
|
@@ -72,15 +46,12 @@ const MultiValue = (props: Props) => {
|
|
|
72
46
|
{multiKit !== 'badge' && imageUrl &&
|
|
73
47
|
<FormPill
|
|
74
48
|
avatarUrl={imageUrl}
|
|
75
|
-
className={pillClassName}
|
|
76
49
|
closeProps={removeProps}
|
|
77
50
|
color={pillColor}
|
|
78
51
|
dark={dark}
|
|
79
|
-
htmlOptions={{onKeyDown:handleKeyDown}}
|
|
80
52
|
marginRight="xs"
|
|
81
53
|
name={label}
|
|
82
54
|
size={multiKit === 'smallPill' ? 'small' : ''}
|
|
83
|
-
tabIndex={0}
|
|
84
55
|
text=''
|
|
85
56
|
truncate={truncate}
|
|
86
57
|
wrapped={wrapped}
|
|
@@ -90,15 +61,12 @@ const MultiValue = (props: Props) => {
|
|
|
90
61
|
|
|
91
62
|
{multiKit !== 'badge' && !imageUrl &&
|
|
92
63
|
<FormPill
|
|
93
|
-
className={pillClassName}
|
|
94
64
|
closeProps={removeProps}
|
|
95
65
|
color={pillColor}
|
|
96
66
|
dark={dark}
|
|
97
|
-
htmlOptions={{onKeyDown:handleKeyDown}}
|
|
98
67
|
marginRight="xs"
|
|
99
68
|
name=''
|
|
100
69
|
size={multiKit === 'smallPill' ? 'small' : ''}
|
|
101
|
-
tabIndex={0}
|
|
102
70
|
text={label}
|
|
103
71
|
truncate={truncate}
|
|
104
72
|
wrapped={wrapped}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{f as buildAriaProps,g as buildDataProps,h as buildHtmlProps,H as HighchartsReact,i as Highcharts,j as classnames,k as globalProps,l as HighchartsMore,S as SolidGauge,m as buildCss}from"./_typeahead-CFOqvZNu.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-BXBHAZMY.js";const mapColors=array=>{const regex=/(data)\-[1-8]/;const newArray=array.map((item=>regex.test(item)?`${colors[`data_${item[item.length-1]}`]}`:item));return newArray};const BarGraph=({aria:aria={},data:data={},align:align="center",axisTitle:axisTitle,dark:dark=false,chartData:chartData,className:className="pb_bar_graph",colors:colors2,htmlOptions:htmlOptions={},customOptions:customOptions={},axisFormat:axisFormat,id:id,pointStart:pointStart,stacking:stacking,subTitle:subTitle,type:type="column",title:title="Title",xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,legend:legend=false,toggleLegendClick:toggleLegendClick=true,height:height,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:[{labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat&&axisFormat[0]?axisFormat[0].format:""},min:yAxisMin,max:yAxisMax,opposite:false,title:{text:Array.isArray(axisTitle)?axisTitle.length>0?axisTitle[0].name:null:axisTitle},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]}],xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{stacking:stacking,pointStart:pointStart,borderWidth:stacking?0:"",events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(Array.isArray(axisTitle)&&axisTitle.length>1&&axisTitle[1].name){staticOptions.yAxis.push({labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat[1].format},min:yAxisMin,max:yAxisMax,opposite:true,title:{text:axisTitle[1].name},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]})}if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const alignBlockElement=event=>{const itemToMove=document.querySelector(`#wrapper-circle-chart-${event.target.renderTo.id} .pb-circle-chart-block`);const chartContainer=document.querySelector(`#${event.target.renderTo.id}`);if(itemToMove!==null&&chartContainer!==null){itemToMove.style.height=`${event.target.chartHeight}px`;itemToMove.style.width=`${event.target.chartWidth}px`;if(chartContainer.firstChild!==null){chartContainer.firstChild.before(itemToMove)}}};const CircleChart=({align:align="center",aria:aria={},rounded:rounded=false,borderColor:borderColor=(rounded?null:""),borderWidth:borderWidth=(rounded?20:null),chartData:chartData,children:children,className:className,colors:colors2=[],customOptions:customOptions={},dark:dark=false,data:data={},dataLabelHtml:dataLabelHtml="<div>{point.name}</div>",dataLabels:dataLabels=false,height:height,htmlOptions:htmlOptions={},id:id,innerSize:innerSize="md",legend:legend=false,maxPointSize:maxPointSize=null,minPointSize:minPointSize=null,startAngle:startAngle=null,style:style="pie",title:title,tooltipHtml:tooltipHtml,useHtml:useHtml=false,zMin:zMin=null,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{headerFormat:null,pointFormat:tooltipHtml?tooltipHtml:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',useHTML:useHtml}});const innerSizes={sm:"35%",md:"50%",lg:"85%",none:"0%"};const innerSizeFormat=size=>innerSizes[size];const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={title:{text:title},chart:{height:height,type:style,events:{render:event=>alignBlockElement(event),redraw:event=>alignBlockElement(event)}},legend:{align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},plotOptions:{pie:{colors:colors2.length>0?mapColors(colors2):highchartsTheme.colors,dataLabels:{enabled:dataLabels,connectorShape:"straight",connectorWidth:3,format:dataLabelHtml},showInLegend:legend}},series:[{minPointSize:minPointSize,maxPointSize:maxPointSize,innerSize:borderWidth==20?"100%":innerSizeFormat(innerSize),data:formattedChartData,zMin:zMin,startAngle:startAngle,borderWidth:borderWidth,borderColor:borderColor}],credits:false};setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(Fragment,{children:children?jsxs("div",{id:`wrapper-circle-chart-${id}`,children:[jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options}),jsx("div",{className:"pb-circle-chart-block",children:children})]}):jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})})};const Gauge=({aria:aria={},chartData:chartData,customOptions:customOptions={},dark:dark=false,data:data={},disableAnimation:disableAnimation=false,fullCircle:fullCircle=false,height:height=null,htmlOptions:htmlOptions={},id:id,max:max=100,min:min=0,prefix:prefix="",showLabels:showLabels=false,style:style="solidgauge",suffix:suffix="",title:title="",tooltipHtml:tooltipHtml='<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',colors:colors$1=[],minorTickInterval:minorTickInterval=null,circumference:circumference=(fullCircle?[0,360]:[-100,100]),...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);SolidGauge(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{pointFormat:tooltipHtml,followPointer:true}});const css=buildCss({pb_gauge_kit:true});const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={chart:{events:{load(){setTimeout(this.reflow.bind(this),0)}},type:style,height:height},title:{text:title},yAxis:{min:min,max:max,lineWidth:0,tickWidth:0,minorTickInterval:minorTickInterval,tickAmount:2,tickPositions:[min,max],labels:{y:26,enabled:showLabels}},credits:false,series:[{data:formattedChartData}],pane:{center:["50%","50%"],size:"90%",startAngle:circumference[0],endAngle:circumference[1],background:{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane"}},colors:colors$1!==void 0&&colors$1.length>0?mapColors(colors$1):highchartsTheme.colors,plotOptions:{series:{animation:!disableAnimation},solidgauge:{borderColor:colors$1!==void 0&&colors$1.length===1?mapColors(colors$1).join():highchartsTheme.colors[0],borderWidth:20,radius:90,innerRadius:"90%",dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:`<span class="prefix${dark?" dark":""}">${prefix}</span><span class="fix${dark?" dark":""}">{y:,f}</span><span class="suffix${dark?" dark":""}">${suffix}</span>`,style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}}};setOptions(merge(staticOptions,customOptions));if(document.querySelector(".prefix")){document.querySelectorAll(".prefix").forEach((prefix2=>{prefix2.setAttribute("y","28")}));document.querySelectorAll(".fix").forEach((fix=>fix.setAttribute("y","38")))}}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(css,globalProps(props)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const LineGraph=({aria:aria={},data:data={},align:align="center",className:className="pb_bar_graph",customOptions:customOptions={},dark:dark=false,gradient:gradient=false,type:type="line",htmlOptions:htmlOptions={},id:id,legend:legend=false,toggleLegendClick:toggleLegendClick=true,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,axisTitle:axisTitle,xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,chartData:chartData,pointStart:pointStart,subTitle:subTitle,title:title,height:height,colors:colors2=[],...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:{min:yAxisMin,max:yAxisMax,title:{text:axisTitle}},xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{pointStart:pointStart,events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};export{BarGraph as B,CircleChart as C,Gauge as G,LineGraph as L};
|
|
1
|
+
import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{f as buildAriaProps,g as buildDataProps,h as buildHtmlProps,H as HighchartsReact,i as Highcharts,j as classnames,k as globalProps,l as HighchartsMore,S as SolidGauge,m as buildCss}from"./_typeahead-BR-uKbcO.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-BXBHAZMY.js";const mapColors=array=>{const regex=/(data)\-[1-8]/;const newArray=array.map((item=>regex.test(item)?`${colors[`data_${item[item.length-1]}`]}`:item));return newArray};const BarGraph=({aria:aria={},data:data={},align:align="center",axisTitle:axisTitle,dark:dark=false,chartData:chartData,className:className="pb_bar_graph",colors:colors2,htmlOptions:htmlOptions={},customOptions:customOptions={},axisFormat:axisFormat,id:id,pointStart:pointStart,stacking:stacking,subTitle:subTitle,type:type="column",title:title="Title",xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,legend:legend=false,toggleLegendClick:toggleLegendClick=true,height:height,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:[{labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat&&axisFormat[0]?axisFormat[0].format:""},min:yAxisMin,max:yAxisMax,opposite:false,title:{text:Array.isArray(axisTitle)?axisTitle.length>0?axisTitle[0].name:null:axisTitle},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]}],xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{stacking:stacking,pointStart:pointStart,borderWidth:stacking?0:"",events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(Array.isArray(axisTitle)&&axisTitle.length>1&&axisTitle[1].name){staticOptions.yAxis.push({labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat[1].format},min:yAxisMin,max:yAxisMax,opposite:true,title:{text:axisTitle[1].name},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]})}if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const alignBlockElement=event=>{const itemToMove=document.querySelector(`#wrapper-circle-chart-${event.target.renderTo.id} .pb-circle-chart-block`);const chartContainer=document.querySelector(`#${event.target.renderTo.id}`);if(itemToMove!==null&&chartContainer!==null){itemToMove.style.height=`${event.target.chartHeight}px`;itemToMove.style.width=`${event.target.chartWidth}px`;if(chartContainer.firstChild!==null){chartContainer.firstChild.before(itemToMove)}}};const CircleChart=({align:align="center",aria:aria={},rounded:rounded=false,borderColor:borderColor=(rounded?null:""),borderWidth:borderWidth=(rounded?20:null),chartData:chartData,children:children,className:className,colors:colors2=[],customOptions:customOptions={},dark:dark=false,data:data={},dataLabelHtml:dataLabelHtml="<div>{point.name}</div>",dataLabels:dataLabels=false,height:height,htmlOptions:htmlOptions={},id:id,innerSize:innerSize="md",legend:legend=false,maxPointSize:maxPointSize=null,minPointSize:minPointSize=null,startAngle:startAngle=null,style:style="pie",title:title,tooltipHtml:tooltipHtml,useHtml:useHtml=false,zMin:zMin=null,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{headerFormat:null,pointFormat:tooltipHtml?tooltipHtml:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',useHTML:useHtml}});const innerSizes={sm:"35%",md:"50%",lg:"85%",none:"0%"};const innerSizeFormat=size=>innerSizes[size];const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={title:{text:title},chart:{height:height,type:style,events:{render:event=>alignBlockElement(event),redraw:event=>alignBlockElement(event)}},legend:{align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},plotOptions:{pie:{colors:colors2.length>0?mapColors(colors2):highchartsTheme.colors,dataLabels:{enabled:dataLabels,connectorShape:"straight",connectorWidth:3,format:dataLabelHtml},showInLegend:legend}},series:[{minPointSize:minPointSize,maxPointSize:maxPointSize,innerSize:borderWidth==20?"100%":innerSizeFormat(innerSize),data:formattedChartData,zMin:zMin,startAngle:startAngle,borderWidth:borderWidth,borderColor:borderColor}],credits:false};setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(Fragment,{children:children?jsxs("div",{id:`wrapper-circle-chart-${id}`,children:[jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options}),jsx("div",{className:"pb-circle-chart-block",children:children})]}):jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})})};const Gauge=({aria:aria={},chartData:chartData,customOptions:customOptions={},dark:dark=false,data:data={},disableAnimation:disableAnimation=false,fullCircle:fullCircle=false,height:height=null,htmlOptions:htmlOptions={},id:id,max:max=100,min:min=0,prefix:prefix="",showLabels:showLabels=false,style:style="solidgauge",suffix:suffix="",title:title="",tooltipHtml:tooltipHtml='<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',colors:colors$1=[],minorTickInterval:minorTickInterval=null,circumference:circumference=(fullCircle?[0,360]:[-100,100]),...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);SolidGauge(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{pointFormat:tooltipHtml,followPointer:true}});const css=buildCss({pb_gauge_kit:true});const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={chart:{events:{load(){setTimeout(this.reflow.bind(this),0)}},type:style,height:height},title:{text:title},yAxis:{min:min,max:max,lineWidth:0,tickWidth:0,minorTickInterval:minorTickInterval,tickAmount:2,tickPositions:[min,max],labels:{y:26,enabled:showLabels}},credits:false,series:[{data:formattedChartData}],pane:{center:["50%","50%"],size:"90%",startAngle:circumference[0],endAngle:circumference[1],background:{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane"}},colors:colors$1!==void 0&&colors$1.length>0?mapColors(colors$1):highchartsTheme.colors,plotOptions:{series:{animation:!disableAnimation},solidgauge:{borderColor:colors$1!==void 0&&colors$1.length===1?mapColors(colors$1).join():highchartsTheme.colors[0],borderWidth:20,radius:90,innerRadius:"90%",dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:`<span class="prefix${dark?" dark":""}">${prefix}</span><span class="fix${dark?" dark":""}">{y:,f}</span><span class="suffix${dark?" dark":""}">${suffix}</span>`,style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}}};setOptions(merge(staticOptions,customOptions));if(document.querySelector(".prefix")){document.querySelectorAll(".prefix").forEach((prefix2=>{prefix2.setAttribute("y","28")}));document.querySelectorAll(".fix").forEach((fix=>fix.setAttribute("y","38")))}}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(css,globalProps(props)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const LineGraph=({aria:aria={},data:data={},align:align="center",className:className="pb_bar_graph",customOptions:customOptions={},dark:dark=false,gradient:gradient=false,type:type="line",htmlOptions:htmlOptions={},id:id,legend:legend=false,toggleLegendClick:toggleLegendClick=true,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,axisTitle:axisTitle,xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,chartData:chartData,pointStart:pointStart,subTitle:subTitle,title:title,height:height,colors:colors2=[],...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:{min:yAxisMin,max:yAxisMax,title:{text:axisTitle}},xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{pointStart:pointStart,events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};export{BarGraph as B,CircleChart as C,Gauge as G,LineGraph as L};
|