playbook_ui 15.0.0.pre.alpha.PLAY236510413 → 15.0.0.pre.alpha.play1986inlineloadingsolidvariant10321
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/_playbook.scss +1 -3
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +0 -2
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +0 -1
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +0 -1
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +4 -48
- data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +1 -5
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +8 -6
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +65 -0
- data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +2 -2
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +2 -13
- data/app/pb_kits/playbook/pb_icon/icon.rb +1 -9
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +0 -3
- data/app/pb_kits/playbook/pb_text_input/docs/example.yml +0 -3
- data/app/pb_kits/playbook/pb_text_input/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +3 -2
- data/app/pb_kits/playbook/pb_text_input/text_input.test.js +0 -38
- data/dist/chunks/{_line_graph-B5Dr0Huy.js → _line_graph-CApw7aQD.js} +1 -1
- data/dist/chunks/_typeahead-J1_avqdO.js +6 -0
- data/dist/chunks/{_weekday_stacked-DjQv3Sok.js → _weekday_stacked-BvW0QnF8.js} +2 -2
- data/dist/chunks/{lib-BTs5acfO.js → lib-CY5ZPzic.js} +1 -1
- data/dist/chunks/{pb_form_validation-CKkaQFX3.js → pb_form_validation-D3b0JKHH.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +0 -6
- data/dist/playbook-doc.js +2 -2
- 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 +8 -42
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.scss +0 -3
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.tsx +0 -62
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.html.erb +0 -31
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +0 -81
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.html.erb +0 -25
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +0 -40
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.md +0 -5
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.html.erb +0 -27
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +0 -39
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +0 -5
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.html.erb +0 -93
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +0 -131
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.md +0 -14
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.html.erb +0 -42
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +0 -58
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.html.erb +0 -24
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +0 -38
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.html.erb +0 -22
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +0 -33
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.html.erb +0 -118
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +0 -144
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +0 -60
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.html.erb +0 -24
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +0 -42
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.html.erb +0 -38
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +0 -52
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +0 -29
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +0 -11
- data/app/pb_kits/playbook/pb_pb_circle_chart/pbCircleChartTheme.ts +0 -88
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.html.erb +0 -1
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.rb +0 -28
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.test.jsx +0 -51
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +0 -41
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +0 -80
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +0 -1
- data/dist/chunks/_typeahead-GbjDoSSQ.js +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db6853982084088c352fbaebcc9d4815525ef2e1d5b3f1bb4afd6c5b18debf49
|
4
|
+
data.tar.gz: 9953ba7ead3e65d4357fb88933055ec5b7cb65d342c93bca21485615ce3b29cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5c749fac180a2f02edeacd6b41e36b8bfb917dc6f60cb6fac3ef2e70947a87adf64526cbf96fefeeb26e73d973f650970cb0101d3c4e16b77e5ec45aa7bf041
|
7
|
+
data.tar.gz: bbd0144bb4d40303864e5f804d78a1aa2eb6f585c7d66809c15a097d03de7ddcb5d12a2083e293694738873d292cbbac668ccc00c5a0342c69a49f6182a33023
|
@@ -1,6 +1,5 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
|
4
3
|
@import 'pb_advanced_table/advanced_table';
|
5
4
|
@import 'pb_avatar/avatar';
|
6
5
|
@import 'pb_background/background';
|
@@ -33,7 +32,6 @@
|
|
33
32
|
@import 'pb_distribution_bar/distribution_bar';
|
34
33
|
@import 'pb_draggable/draggable';
|
35
34
|
@import 'pb_dropdown/dropdown';
|
36
|
-
@import 'pb_empty_state/empty_state';
|
37
35
|
@import 'pb_file_upload/file_upload';
|
38
36
|
@import 'pb_filter/filter';
|
39
37
|
@import 'pb_fixed_confirmation_toast/fixed_confirmation_toast';
|
@@ -109,7 +107,7 @@
|
|
109
107
|
@import 'pb_user/user';
|
110
108
|
@import 'pb_user_badge/user_badge';
|
111
109
|
@import 'pb_weekday_stacked/weekday_stacked';
|
112
|
-
@import '
|
110
|
+
@import 'pb_empty_state/empty_state';
|
113
111
|
@import 'utilities/mixins';
|
114
112
|
@import 'utilities/spacing';
|
115
113
|
@import 'utilities/cursor';
|
@@ -65,7 +65,6 @@ const CircleIconButton = (props: CircleIconButtonProps): React.ReactElement => {
|
|
65
65
|
id={id}
|
66
66
|
>
|
67
67
|
<Button
|
68
|
-
aria={aria}
|
69
68
|
dark={dark}
|
70
69
|
disabled={disabled}
|
71
70
|
htmlType={type}
|
@@ -79,7 +78,6 @@ const CircleIconButton = (props: CircleIconButtonProps): React.ReactElement => {
|
|
79
78
|
>
|
80
79
|
<Icon
|
81
80
|
fixedWidth
|
82
|
-
htmlOptions={{'aria-hidden': true}}
|
83
81
|
icon={icon}
|
84
82
|
/>
|
85
83
|
</Button>
|
@@ -89,48 +89,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
89
89
|
}
|
90
90
|
}
|
91
91
|
|
92
|
-
// Helper function to get min/max years based on yearRange. If minDate/maxDate provided, grab year from those values
|
93
|
-
const getMinMaxYears = () => {
|
94
|
-
const [minYear, maxYear] = yearRange;
|
95
|
-
|
96
|
-
const extractYear = (dateOption: typeof minDate | typeof maxDate): number | null => {
|
97
|
-
if (!dateOption) return null;
|
98
|
-
|
99
|
-
// If it's already a number, assume it's a year
|
100
|
-
if (typeof dateOption === 'number') {
|
101
|
-
return dateOption;
|
102
|
-
}
|
103
|
-
|
104
|
-
// If it's a string, extract year with regex
|
105
|
-
if (typeof dateOption === 'string') {
|
106
|
-
const match = dateOption.match(/\b(19|20)\d{2}\b/);
|
107
|
-
return match ? parseInt(match[0], 10) : null;
|
108
|
-
}
|
109
|
-
|
110
|
-
// If it's a Date object, get the year directly
|
111
|
-
if (dateOption instanceof Date) {
|
112
|
-
return dateOption.getFullYear();
|
113
|
-
}
|
114
|
-
|
115
|
-
return null;
|
116
|
-
};
|
117
|
-
|
118
|
-
const setMinYear = minDate ? (extractYear(minDate) ?? minYear) : minYear;
|
119
|
-
const setMaxYear = maxDate ? (extractYear(maxDate) ?? maxYear) : maxYear;
|
120
|
-
|
121
|
-
return { setMinYear, setMaxYear };
|
122
|
-
};
|
123
|
-
|
124
|
-
const { setMinYear, setMaxYear } = getMinMaxYears()
|
125
|
-
|
126
|
-
// Helper function to get min/max dates based on yearRange
|
127
|
-
const getMinMaxDates = () => {
|
128
|
-
const setMinDate = minDate || `01/01/${setMinYear}`
|
129
|
-
const setMaxDate = maxDate || `12/31/${setMaxYear}`
|
130
|
-
|
131
|
-
return { setMinDate, setMaxDate }
|
132
|
-
}
|
133
|
-
|
134
92
|
const disabledWeekDays = () => {
|
135
93
|
return (
|
136
94
|
[
|
@@ -243,8 +201,6 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
243
201
|
// | Flatpickr initializer w/ config |
|
244
202
|
// ===========================================================
|
245
203
|
|
246
|
-
const { setMinDate, setMaxDate } = getMinMaxDates()
|
247
|
-
|
248
204
|
flatpickr(`#${pickerId}`, {
|
249
205
|
allowInput,
|
250
206
|
closeOnSelect,
|
@@ -256,8 +212,8 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
256
212
|
locale: {
|
257
213
|
rangeSeparator: ' to '
|
258
214
|
},
|
259
|
-
maxDate
|
260
|
-
minDate
|
215
|
+
maxDate,
|
216
|
+
minDate,
|
261
217
|
mode,
|
262
218
|
nextArrow: '<i class="far fa-angle-right"></i>',
|
263
219
|
onOpen: [() => {
|
@@ -294,7 +250,7 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
294
250
|
|
295
251
|
// create html option tags for desired years
|
296
252
|
let years = ''
|
297
|
-
for (let year =
|
253
|
+
for (let year = yearRange[1]; year >= yearRange[0]; year--) {
|
298
254
|
years += `<option value="${year}">${year}</option>`
|
299
255
|
}
|
300
256
|
|
@@ -367,7 +323,7 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
367
323
|
}
|
368
324
|
// === End of Automatic Sync Logic ===
|
369
325
|
|
370
|
-
|
326
|
+
|
371
327
|
// Adding dropdown icons to year and month select
|
372
328
|
dropdown.insertAdjacentHTML('afterend', `<i class="year-dropdown-icon">${angleDown}</i>`)
|
373
329
|
if (picker.monthElements[0].parentElement) {
|
@@ -12,14 +12,10 @@ export const CloseIcon = (props: CloseIconProps): React.ReactElement => {
|
|
12
12
|
const timesIcon = getAllIcons()["times"]
|
13
13
|
return (
|
14
14
|
<div
|
15
|
-
aria-label="Close Dialog"
|
16
15
|
className="pb_dialog_close_icon"
|
17
|
-
onClick={onClose}
|
18
|
-
role="button"
|
19
|
-
tabIndex={0}
|
16
|
+
onClick={onClose}
|
20
17
|
>
|
21
18
|
<Icon
|
22
|
-
aria={{ "hidden": true }}
|
23
19
|
className="svg-inline--fa"
|
24
20
|
customIcon={timesIcon.icon as unknown as { [key: string]: SVGElement }}
|
25
21
|
fixedWidth
|
@@ -73,8 +73,8 @@ const Dialog = (props: DialogProps): React.ReactElement => {
|
|
73
73
|
const ariaProps = buildAriaProps(aria);
|
74
74
|
const dataProps = buildDataProps(data)
|
75
75
|
const htmlProps = buildHtmlProps(htmlOptions);
|
76
|
-
const
|
77
|
-
base: classnames("pb_dialog", buildCss("pb_dialog", size, placement)
|
76
|
+
const dialogClassNames = {
|
77
|
+
base: classnames("pb_dialog", buildCss("pb_dialog", size, placement)),
|
78
78
|
afterOpen: "pb_dialog_after_open",
|
79
79
|
beforeClose: "pb_dialog_before_close",
|
80
80
|
};
|
@@ -93,8 +93,10 @@ const Dialog = (props: DialogProps): React.ReactElement => {
|
|
93
93
|
|
94
94
|
const dynamicInlineProps = globalInlineProps(props);
|
95
95
|
|
96
|
-
const
|
96
|
+
const classes = classnames(
|
97
97
|
buildCss("pb_dialog_wrapper"),
|
98
|
+
globalProps(props),
|
99
|
+
className
|
98
100
|
);
|
99
101
|
|
100
102
|
const [triggerOpened, setTriggerOpened] = useState(false),
|
@@ -171,13 +173,13 @@ const Dialog = (props: DialogProps): React.ReactElement => {
|
|
171
173
|
{...ariaProps}
|
172
174
|
{...dataProps}
|
173
175
|
{...htmlProps}
|
174
|
-
className={
|
176
|
+
className={classes}
|
175
177
|
>
|
176
178
|
<Modal
|
177
179
|
ariaHideApp={false}
|
178
|
-
className={
|
180
|
+
className={dialogClassNames}
|
179
181
|
closeTimeoutMS={200}
|
180
|
-
contentLabel="
|
182
|
+
contentLabel="Minimal Modal Example"
|
181
183
|
id={id}
|
182
184
|
isOpen={modalIsOpened}
|
183
185
|
onRequestClose={onClose}
|
@@ -12,7 +12,7 @@
|
|
12
12
|
data-cancel-button-id="<%= object.cancel_button_id %>"
|
13
13
|
<% end %>
|
14
14
|
>
|
15
|
-
<%= pb_content_tag(:dialog
|
15
|
+
<%= pb_content_tag(:dialog) do %>
|
16
16
|
<% if object.status === "" && object.title %>
|
17
17
|
<%= pb_rails("dialog/dialog_header", props: { title: object.title, id: object.id }) %>
|
18
18
|
<% end %>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
// Three places in Nitro depend on this function inside the window scope.
|
2
|
+
// We will keep this file until we remove this dependency from Nitro.
|
3
|
+
const dialogHelper = () => {
|
4
|
+
const openTrigger = document.querySelectorAll("[data-open-dialog]");
|
5
|
+
const closeTrigger = document.querySelectorAll("[data-close-dialog]");
|
6
|
+
const dialogs = document.querySelectorAll(".pb_dialog_rails")
|
7
|
+
|
8
|
+
const loadingButton = document.querySelector('[data-disable-with="Loading"]');
|
9
|
+
if (loadingButton) {
|
10
|
+
loadingButton.addEventListener("click", function() {
|
11
|
+
const okayLoadingButton = document.querySelector('[data-disable-with="Loading"]');
|
12
|
+
const cancelButton = document.querySelector('[data-disable-cancel-with="Loading"]');
|
13
|
+
let currentClass = okayLoadingButton.className;
|
14
|
+
let cancelClass = cancelButton ? cancelButton.className : "";
|
15
|
+
|
16
|
+
let newClass = currentClass.replace("_enabled", "_disabled_loading");
|
17
|
+
let newCancelClass = cancelClass.replace("_enabled", "_disabled");
|
18
|
+
|
19
|
+
// Disable the buttons
|
20
|
+
okayLoadingButton.disabled = true;
|
21
|
+
if (cancelButton) cancelButton.disabled = true;
|
22
|
+
|
23
|
+
okayLoadingButton.className = newClass;
|
24
|
+
if (cancelButton) cancelButton.className = newCancelClass;
|
25
|
+
});
|
26
|
+
}
|
27
|
+
|
28
|
+
|
29
|
+
openTrigger.forEach((open) => {
|
30
|
+
open.addEventListener("click", () => {
|
31
|
+
var openTriggerData = open.dataset.openDialog;
|
32
|
+
var targetDialog = document.getElementById(openTriggerData)
|
33
|
+
if (targetDialog.open) return;
|
34
|
+
targetDialog.showModal();
|
35
|
+
});
|
36
|
+
});
|
37
|
+
|
38
|
+
closeTrigger.forEach((close) => {
|
39
|
+
close.addEventListener("click", () => {
|
40
|
+
var closeTriggerData = close.dataset.closeDialog;
|
41
|
+
document.getElementById(closeTriggerData).close();
|
42
|
+
});
|
43
|
+
});
|
44
|
+
|
45
|
+
// Close dialog box on outside click
|
46
|
+
dialogs.forEach((dialogElement) => {
|
47
|
+
dialogElement.addEventListener("mousedown", (event) => {
|
48
|
+
const dialogParentDataset = dialogElement.parentElement.dataset
|
49
|
+
if (dialogParentDataset.overlayClick === "overlay_close") return
|
50
|
+
|
51
|
+
const dialogModal = event.target.getBoundingClientRect()
|
52
|
+
const clickedOutsideDialogModal = event.clientX < dialogModal.left ||
|
53
|
+
event.clientX > dialogModal.right ||
|
54
|
+
event.clientY < dialogModal.top ||
|
55
|
+
event.clientY > dialogModal.bottom
|
56
|
+
|
57
|
+
if (clickedOutsideDialogModal) {
|
58
|
+
dialogElement.close()
|
59
|
+
event.stopPropagation()
|
60
|
+
}
|
61
|
+
})
|
62
|
+
})
|
63
|
+
};
|
64
|
+
|
65
|
+
export default dialogHelper;
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<%= pb_rails("flex", props: {classname:object.classname, spacing:"between", padding:"sm", align:"center"}) do %>
|
3
3
|
<%= content.presence || object.title %>
|
4
4
|
|
5
|
-
<button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %>
|
6
|
-
<%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon)
|
5
|
+
<button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %> >
|
6
|
+
<%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon) }) %>
|
7
7
|
</button>
|
8
8
|
<% end %>
|
9
9
|
<%= pb_rails("section_separator") %>
|
@@ -20,7 +20,7 @@ export type IconSizes = "lg"
|
|
20
20
|
| ""
|
21
21
|
|
22
22
|
type IconProps = {
|
23
|
-
aria?: {
|
23
|
+
aria?: {[key: string]: string},
|
24
24
|
border?: string,
|
25
25
|
className?: string,
|
26
26
|
color?: string,
|
@@ -211,15 +211,7 @@ const Icon = (props: IconProps) => {
|
|
211
211
|
)
|
212
212
|
|
213
213
|
aria.label ? null : aria.label = `${icon} icon`
|
214
|
-
|
215
|
-
const normalizedAria: { [key: string]: string } = Object.fromEntries(
|
216
|
-
Object.entries(aria).map(([key, value]) => [
|
217
|
-
key,
|
218
|
-
typeof value === "boolean" ? String(value) : value,
|
219
|
-
])
|
220
|
-
)
|
221
|
-
|
222
|
-
const ariaProps = buildAriaProps(normalizedAria)
|
214
|
+
const ariaProps: {[key: string]: any} = buildAriaProps(aria)
|
223
215
|
const dataProps: {[key: string]: any} = buildDataProps(data)
|
224
216
|
const htmlProps = buildHtmlProps(htmlOptions)
|
225
217
|
|
@@ -230,7 +222,6 @@ const Icon = (props: IconProps) => {
|
|
230
222
|
<>
|
231
223
|
{
|
232
224
|
React.cloneElement(iconElement || customIcon, {
|
233
|
-
...ariaProps,
|
234
225
|
...dataProps,
|
235
226
|
...htmlProps,
|
236
227
|
className: classes,
|
@@ -246,7 +237,6 @@ const Icon = (props: IconProps) => {
|
|
246
237
|
return (
|
247
238
|
<>
|
248
239
|
<span
|
249
|
-
{...ariaProps}
|
250
240
|
{...dataProps}
|
251
241
|
{...htmlProps}
|
252
242
|
className={classesEmoji}
|
@@ -260,7 +250,6 @@ const Icon = (props: IconProps) => {
|
|
260
250
|
return (
|
261
251
|
<>
|
262
252
|
<i
|
263
|
-
{...ariaProps}
|
264
253
|
{...dataProps}
|
265
254
|
{...htmlProps}
|
266
255
|
className={classes}
|
@@ -110,20 +110,12 @@ module Playbook
|
|
110
110
|
svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ")
|
111
111
|
svg["id"] = object.id
|
112
112
|
svg["data"] = object.data
|
113
|
+
svg["aria"] = object.aria
|
113
114
|
svg["height"] = "auto"
|
114
115
|
svg["width"] = "auto"
|
115
116
|
svg["tabindex"] = object.tabindex
|
116
117
|
fill_color = object.color || "currentColor"
|
117
118
|
doc.at_css("path")["fill"] = fill_color
|
118
|
-
|
119
|
-
if object.aria.present?
|
120
|
-
object.aria.each do |key, value|
|
121
|
-
k = key.to_s
|
122
|
-
attr = k.start_with?("aria-") ? k : "aria-#{k.tr('_', '-')}"
|
123
|
-
svg[attr] = value
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
119
|
raw doc
|
128
120
|
rescue OpenURI::HTTPError, StandardError
|
129
121
|
# Handle any exceptions and return an empty string
|
@@ -36,7 +36,6 @@ type TextInputProps = {
|
|
36
36
|
alignment?: "right" | "left",
|
37
37
|
border?: boolean,
|
38
38
|
},
|
39
|
-
autoComplete?: boolean | string,
|
40
39
|
} & GlobalProps
|
41
40
|
|
42
41
|
const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>) => {
|
@@ -60,7 +59,6 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
|
|
60
59
|
type = 'text',
|
61
60
|
value = '',
|
62
61
|
children = null,
|
63
|
-
autoComplete = true,
|
64
62
|
} = props
|
65
63
|
|
66
64
|
const ariaProps = buildAriaProps(aria)
|
@@ -144,7 +142,6 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
|
|
144
142
|
childInput ? React.cloneElement(children, { className: "text_input" }) :
|
145
143
|
(<input
|
146
144
|
{...domSafeProps(props)}
|
147
|
-
autoComplete={typeof autoComplete === "string" ? autoComplete : ( autoComplete ? undefined : "off" )}
|
148
145
|
className="text_input"
|
149
146
|
disabled={disabled}
|
150
147
|
id={id}
|
@@ -9,8 +9,6 @@ examples:
|
|
9
9
|
- text_input_no_label: No Label
|
10
10
|
- text_input_options: Input Options
|
11
11
|
- text_input_mask: Mask
|
12
|
-
- text_input_autocomplete: Autocomplete
|
13
|
-
|
14
12
|
react:
|
15
13
|
- text_input_default: Default
|
16
14
|
- text_input_error: With Error
|
@@ -21,7 +19,6 @@ examples:
|
|
21
19
|
- text_input_no_label: No Label
|
22
20
|
- text_input_mask: Mask
|
23
21
|
- text_input_sanitize: Sanitized Masked Input
|
24
|
-
- text_input_autocomplete: Autocomplete
|
25
22
|
|
26
23
|
|
27
24
|
swift:
|
@@ -7,4 +7,3 @@ export { default as TextInputInline } from './_text_input_inline.jsx'
|
|
7
7
|
export { default as TextInputNoLabel } from './_text_input_no_label.jsx'
|
8
8
|
export { default as TextInputMask } from './_text_input_mask.jsx'
|
9
9
|
export { default as TextInputSanitize } from './_text_input_sanitize.jsx'
|
10
|
-
export { default as TextInputAutocomplete } from './_text_input_autocomplete.jsx'
|
@@ -15,7 +15,8 @@ module Playbook
|
|
15
15
|
"cvv" => '\d{3,4}',
|
16
16
|
}.freeze
|
17
17
|
|
18
|
-
prop :autocomplete,
|
18
|
+
prop :autocomplete, type: Playbook::Props::Boolean,
|
19
|
+
default: true
|
19
20
|
prop :disabled, type: Playbook::Props::Boolean,
|
20
21
|
default: false
|
21
22
|
prop :error
|
@@ -68,7 +69,7 @@ module Playbook
|
|
68
69
|
|
69
70
|
def all_input_options
|
70
71
|
{
|
71
|
-
autocomplete: autocomplete
|
72
|
+
autocomplete: autocomplete ? nil : "off",
|
72
73
|
class: "text_input #{input_options.dig(:classname) || ''}",
|
73
74
|
data: validation_data,
|
74
75
|
disabled: disabled,
|
@@ -306,41 +306,3 @@ test('returns masked CVV value', () => {
|
|
306
306
|
|
307
307
|
expect(input.value).toBe('')
|
308
308
|
})
|
309
|
-
|
310
|
-
test('adds autocomplete string attribute', () => {
|
311
|
-
render(
|
312
|
-
<TextInput
|
313
|
-
autoComplete="family-name"
|
314
|
-
data={{ testid: testId }}
|
315
|
-
/>
|
316
|
-
)
|
317
|
-
|
318
|
-
const kit = screen.getByTestId(testId)
|
319
|
-
const input = within(kit).getByRole('textbox')
|
320
|
-
expect(input).toHaveAttribute("autocomplete", "family-name")
|
321
|
-
})
|
322
|
-
|
323
|
-
test('adds autocomplete "off" attribute', () => {
|
324
|
-
render(
|
325
|
-
<TextInput
|
326
|
-
autoComplete={false}
|
327
|
-
data={{ testid: testId }}
|
328
|
-
/>
|
329
|
-
)
|
330
|
-
|
331
|
-
const kit = screen.getByTestId(testId)
|
332
|
-
const input = within(kit).getByRole('textbox')
|
333
|
-
expect(input).toHaveAttribute("autocomplete", "off")
|
334
|
-
})
|
335
|
-
|
336
|
-
test('does not add autocomplete attribute otherwise', () => {
|
337
|
-
render(
|
338
|
-
<TextInput
|
339
|
-
data={{ testid: testId }}
|
340
|
-
/>
|
341
|
-
)
|
342
|
-
|
343
|
-
const kit = screen.getByTestId(testId)
|
344
|
-
const input = within(kit).getByRole('textbox')
|
345
|
-
expect(input).not.toHaveAttribute("autocomplete")
|
346
|
-
})
|
@@ -1 +1 @@
|
|
1
|
-
import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{c as buildAriaProps,d as buildDataProps,e as buildHtmlProps,H as HighchartsReact,f as Highcharts,g as classnames,h as globalProps,i as HighchartsMore,S as SolidGauge,j as buildCss}from"./_typeahead-GbjDoSSQ.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-BTs5acfO.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{b as buildAriaProps,c as buildDataProps,d as buildHtmlProps,H as HighchartsReact,e as Highcharts,f as classnames,g as globalProps,h as HighchartsMore,S as SolidGauge,i as buildCss}from"./_typeahead-J1_avqdO.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-CY5ZPzic.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};
|