playbook_ui 15.2.0.pre.rc.0 → 15.2.0.pre.rc.1
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/Hooks/useTableState.ts +0 -2
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +4 -0
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.html.erb +16 -16
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.jsx +2 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.html.erb +31 -31
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.jsx +4 -3
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +14 -6
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.html.erb +8 -4
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +5 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.md +1 -0
- data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +3 -1
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +6 -0
- data/dist/chunks/{_line_graph-C9stNsP3.js → _line_graph-BnK1i7QI.js} +1 -1
- data/dist/chunks/{_typeahead-D3MtsWXG.js → _typeahead-pbS3fEzb.js} +1 -1
- data/dist/chunks/{_weekday_stacked-Bvc7R5vH.js → _weekday_stacked-OOFiMFSs.js} +2 -2
- data/dist/chunks/vendor.js +1 -1
- 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 +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 546011bcfa494f21ffd8e652c370cd79d29c69b37622a28f39e4d9b17e247a04
|
4
|
+
data.tar.gz: 1264d2c526d2b5c19aeba58e361831e6f199b5bf4f98792435718034c8ea2d5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 149f32f88fbe9ca09eb3c0c1edb1817fb8a4359ab267e64c152f0091ab5b8cd461a9eee43cabf808ed56068ad3252e76e9d2b453745cff244f567a89635f3c4b
|
7
|
+
data.tar.gz: b3d31afb483359259300b0071b6946c135278a735aa011390ec1e3774dcaa1e26237c97b07432c2db48f542637873c71fe71e2bd7f1ebae3e87c1ee42fa24eb2
|
@@ -3,12 +3,12 @@
|
|
3
3
|
<%= pb_rails("button", props: { text: "Delete Status", data: {"open-dialog": "dialog-stacked-delete"}, margin_right: "md" }) %>
|
4
4
|
|
5
5
|
|
6
|
-
<%= pb_rails("dialog", props: {
|
7
|
-
id:"dialog-stacked-default",
|
6
|
+
<%= pb_rails("dialog", props: {
|
7
|
+
id:"dialog-stacked-default",
|
8
8
|
status: "default",
|
9
|
-
size: "sm",
|
10
|
-
title: "Are you sure?",
|
11
|
-
text: "Text explaining why there is an alert",
|
9
|
+
size: "sm",
|
10
|
+
title: "Are you sure?",
|
11
|
+
text: "Text explaining why there is an alert",
|
12
12
|
}) do %>
|
13
13
|
<%= pb_rails("dialog/dialog_footer") do %>
|
14
14
|
<%= pb_rails("flex", props: { orientation: "column", padding_x:"md", padding: "sm" }) do %>
|
@@ -18,12 +18,12 @@
|
|
18
18
|
<% end %>
|
19
19
|
<% end %>
|
20
20
|
|
21
|
-
<%= pb_rails("dialog", props: {
|
22
|
-
id:"dialog-stacked-caution",
|
21
|
+
<%= pb_rails("dialog", props: {
|
22
|
+
id:"dialog-stacked-caution",
|
23
23
|
status: "caution",
|
24
|
-
size: "sm",
|
25
|
-
title: "Are you sure?",
|
26
|
-
text: "This is the action you will be taking",
|
24
|
+
size: "sm",
|
25
|
+
title: "Are you sure?",
|
26
|
+
text: "This is the action you will be taking",
|
27
27
|
}) do %>
|
28
28
|
<%= pb_rails("dialog/dialog_footer") do %>
|
29
29
|
<%= pb_rails("flex", props: { orientation: "column", padding_x:"md", padding: "sm" }) do %>
|
@@ -33,16 +33,16 @@
|
|
33
33
|
<% end %>
|
34
34
|
<% end %>
|
35
35
|
|
36
|
-
<%= pb_rails("dialog", props: {
|
37
|
-
id:"dialog-stacked-delete",
|
36
|
+
<%= pb_rails("dialog", props: {
|
37
|
+
id:"dialog-stacked-delete",
|
38
38
|
status: "delete",
|
39
|
-
size: "sm",
|
40
|
-
title: "Delete",
|
41
|
-
text: "You are about to delete ...",
|
39
|
+
size: "sm",
|
40
|
+
title: "Delete",
|
41
|
+
text: "You are about to delete ...",
|
42
42
|
}) do %>
|
43
43
|
<%= pb_rails("dialog/dialog_footer") do %>
|
44
44
|
<%= pb_rails("flex", props: { orientation: "column", padding_x:"md", padding: "sm" }) do %>
|
45
|
-
<%= pb_rails("button", props: { text: "Yes, Action", full_width: true }) %>
|
45
|
+
<%= pb_rails("button", props: { text: "Yes, Action", variant: "danger", full_width: true }) %>
|
46
46
|
<%= pb_rails("button", props: { text: "No, Cancel", variant: "secondary", full_width: true, margin_top: "sm", data: {"close-dialog": "dialog-stacked-delete" } }) %>
|
47
47
|
<% end %>
|
48
48
|
<% end %>
|
@@ -51,7 +51,7 @@ const DialogStackedAlert = () => {
|
|
51
51
|
return (
|
52
52
|
<div>
|
53
53
|
<Flex
|
54
|
-
rowGap="xs"
|
54
|
+
rowGap="xs"
|
55
55
|
wrap
|
56
56
|
>
|
57
57
|
<Button
|
@@ -93,6 +93,7 @@ const DialogStackedAlert = () => {
|
|
93
93
|
<Button
|
94
94
|
fullWidth
|
95
95
|
onClick={dialog.toggle}
|
96
|
+
variant= {dialog.status == "delete" ? "danger" : "primary"}
|
96
97
|
>
|
97
98
|
{dialog.buttonOneText}
|
98
99
|
</Button>
|
@@ -8,12 +8,12 @@
|
|
8
8
|
<%= pb_rails("button", props: { text: "Success Status", data: {"open-dialog": "dialog-status-success"}, margin_right: "md" }) %>
|
9
9
|
<% end %>
|
10
10
|
|
11
|
-
<%= pb_rails("dialog", props: {
|
12
|
-
id:"dialog-status-default",
|
11
|
+
<%= pb_rails("dialog", props: {
|
12
|
+
id:"dialog-status-default",
|
13
13
|
status: "default",
|
14
|
-
size: "status_size",
|
15
|
-
title: "Are you sure?",
|
16
|
-
text: "Text explaining why there is an alert",
|
14
|
+
size: "status_size",
|
15
|
+
title: "Are you sure?",
|
16
|
+
text: "Text explaining why there is an alert",
|
17
17
|
}) do %>
|
18
18
|
<%= pb_rails("dialog/dialog_footer") do %>
|
19
19
|
<%= pb_rails("flex", props: { spacing:"between", padding_x:"md", padding_bottom:"md", padding: "sm" }) do %>
|
@@ -23,12 +23,12 @@
|
|
23
23
|
<% end %>
|
24
24
|
<% end %>
|
25
25
|
|
26
|
-
<%= pb_rails("dialog", props: {
|
27
|
-
id:"dialog-status-info",
|
26
|
+
<%= pb_rails("dialog", props: {
|
27
|
+
id:"dialog-status-info",
|
28
28
|
status: "info",
|
29
|
-
size: "status_size",
|
30
|
-
title: "Information",
|
31
|
-
text: "Text explaining why there is an alert",
|
29
|
+
size: "status_size",
|
30
|
+
title: "Information",
|
31
|
+
text: "Text explaining why there is an alert",
|
32
32
|
}) do %>
|
33
33
|
<%= pb_rails("dialog/dialog_footer") do %>
|
34
34
|
<%= pb_rails("flex", props: { spacing:"between", padding_x:"md", padding_bottom:"md", padding: "sm" }) do %>
|
@@ -37,12 +37,12 @@
|
|
37
37
|
<% end %>
|
38
38
|
<% end %>
|
39
39
|
|
40
|
-
<%= pb_rails("dialog", props: {
|
41
|
-
id:"dialog-status-caution",
|
40
|
+
<%= pb_rails("dialog", props: {
|
41
|
+
id:"dialog-status-caution",
|
42
42
|
status: "caution",
|
43
|
-
size: "status_size",
|
44
|
-
title: "Are you Sure?",
|
45
|
-
text: "This is the action you will be taking",
|
43
|
+
size: "status_size",
|
44
|
+
title: "Are you Sure?",
|
45
|
+
text: "This is the action you will be taking",
|
46
46
|
}) do %>
|
47
47
|
<%= pb_rails("dialog/dialog_footer") do %>
|
48
48
|
<%= pb_rails("flex", props: { spacing:"between", padding_x:"md", padding_bottom:"md", padding: "sm" }) do %>
|
@@ -52,27 +52,27 @@
|
|
52
52
|
<% end %>
|
53
53
|
<% end %>
|
54
54
|
|
55
|
-
<%= pb_rails("dialog", props: {
|
56
|
-
id:"dialog-status-delete",
|
55
|
+
<%= pb_rails("dialog", props: {
|
56
|
+
id:"dialog-status-delete",
|
57
57
|
status: "delete",
|
58
|
-
size: "status_size",
|
59
|
-
title: "Delete",
|
60
|
-
text: "You are about to delete ...",
|
58
|
+
size: "status_size",
|
59
|
+
title: "Delete",
|
60
|
+
text: "You are about to delete ...",
|
61
61
|
}) do %>
|
62
62
|
<%= pb_rails("dialog/dialog_footer") do %>
|
63
63
|
<%= pb_rails("flex", props: { spacing:"between", padding_x:"md", padding_bottom:"md", padding: "sm" }) do %>
|
64
|
-
<%= pb_rails("button", props: { text: "Yes, Delete" }) %>
|
64
|
+
<%= pb_rails("button", props: { text: "Yes, Delete", variant: "danger" }) %>
|
65
65
|
<%= pb_rails("button", props: { text: "No, Cancel", variant: "secondary", data: {"close-dialog": "dialog-status-delete" } }) %>
|
66
66
|
<% end %>
|
67
67
|
<% end %>
|
68
68
|
<% end %>
|
69
69
|
|
70
|
-
<%= pb_rails("dialog", props: {
|
71
|
-
id:"dialog-status-error",
|
70
|
+
<%= pb_rails("dialog", props: {
|
71
|
+
id:"dialog-status-error",
|
72
72
|
status: "error",
|
73
|
-
size: "status_size",
|
74
|
-
title: "Error Message",
|
75
|
-
text: "Text explaining the error",
|
73
|
+
size: "status_size",
|
74
|
+
title: "Error Message",
|
75
|
+
text: "Text explaining the error",
|
76
76
|
}) do %>
|
77
77
|
<%= pb_rails("dialog/dialog_footer") do %>
|
78
78
|
<%= pb_rails("flex", props: { spacing:"between", padding_x:"md", padding_bottom:"md", padding: "sm" }) do %>
|
@@ -81,12 +81,12 @@
|
|
81
81
|
<% end %>
|
82
82
|
<% end %>
|
83
83
|
|
84
|
-
<%= pb_rails("dialog", props: {
|
85
|
-
id:"dialog-status-success",
|
84
|
+
<%= pb_rails("dialog", props: {
|
85
|
+
id:"dialog-status-success",
|
86
86
|
status: "success",
|
87
|
-
size: "status_size",
|
88
|
-
title: "Success!",
|
89
|
-
text: "Text explaining what is successful",
|
87
|
+
size: "status_size",
|
88
|
+
title: "Success!",
|
89
|
+
text: "Text explaining what is successful",
|
90
90
|
}) do %>
|
91
91
|
<%= pb_rails("dialog/dialog_footer") do %>
|
92
92
|
<%= pb_rails("flex", props: { spacing:"between", padding_x:"md", padding_bottom:"md", padding: "sm" }) do %>
|
@@ -83,8 +83,8 @@ const DialogStatus = () => {
|
|
83
83
|
|
84
84
|
return (
|
85
85
|
<div>
|
86
|
-
<Flex
|
87
|
-
rowGap="xs"
|
86
|
+
<Flex
|
87
|
+
rowGap="xs"
|
88
88
|
wrap
|
89
89
|
>
|
90
90
|
<Button
|
@@ -117,7 +117,7 @@ const DialogStatus = () => {
|
|
117
117
|
>
|
118
118
|
{"Success Status"}
|
119
119
|
</Button>
|
120
|
-
<Button
|
120
|
+
<Button
|
121
121
|
marginRight="md"
|
122
122
|
onClick={toggleErrorAlert}
|
123
123
|
>
|
@@ -152,6 +152,7 @@ const DialogStatus = () => {
|
|
152
152
|
<Button
|
153
153
|
onClick={dialog.toggle}
|
154
154
|
paddingRight="xl"
|
155
|
+
variant={dialog.status == "delete" ? "danger" : "primary"}
|
155
156
|
>
|
156
157
|
{dialog.buttonOneText}
|
157
158
|
</Button>
|
@@ -140,10 +140,14 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
|
|
140
140
|
formattedValue = value
|
141
141
|
}
|
142
142
|
|
143
|
+
const errorId = error ? `${id}-error` : undefined
|
144
|
+
|
143
145
|
const textInput = (
|
144
146
|
childInput ? React.cloneElement(children, { className: "text_input" }) :
|
145
147
|
(<input
|
146
148
|
{...domSafeProps(props)}
|
149
|
+
aria-describedby={errorId}
|
150
|
+
aria-invalid={!!error}
|
147
151
|
autoComplete={typeof autoComplete === "string" ? autoComplete : ( autoComplete ? undefined : "off" )}
|
148
152
|
className="text_input"
|
149
153
|
disabled={disabled}
|
@@ -202,16 +206,20 @@ const TextInput = (props: TextInputProps, ref: React.LegacyRef<HTMLInputElement>
|
|
202
206
|
{...htmlProps}
|
203
207
|
className={css}
|
204
208
|
>
|
205
|
-
{label &&
|
206
|
-
<
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
209
|
+
{label && (
|
210
|
+
<label htmlFor={id}>
|
211
|
+
<Caption className="pb_text_input_kit_label"
|
212
|
+
text={label}
|
213
|
+
/>
|
214
|
+
</label>
|
215
|
+
)}
|
211
216
|
<div className={`${addOnCss} text_input_wrapper`}>
|
212
217
|
{render}
|
213
218
|
|
214
219
|
{error && <Body
|
220
|
+
aria={{ atomic: "true", live: "polite" }}
|
221
|
+
htmlOptions={{ role: "alert" }}
|
222
|
+
id={errorId}
|
215
223
|
status="negative"
|
216
224
|
text={error}
|
217
225
|
variant={null}
|
@@ -9,23 +9,27 @@
|
|
9
9
|
|
10
10
|
<%= pb_rails("text_input", props: {
|
11
11
|
label: "Last Name",
|
12
|
-
placeholder: "Enter last name"
|
12
|
+
placeholder: "Enter last name",
|
13
|
+
id: "last-name"
|
13
14
|
}) %>
|
14
15
|
|
15
16
|
<%= pb_rails("text_input", props: {
|
16
17
|
label: "Phone Number",
|
17
18
|
type: "phone",
|
18
|
-
placeholder: "Enter phone number"
|
19
|
+
placeholder: "Enter phone number",
|
20
|
+
id: "phone"
|
19
21
|
}) %>
|
20
22
|
|
21
23
|
<%= pb_rails("text_input", props: {
|
22
24
|
label: "Email Address",
|
23
25
|
type: "email",
|
24
|
-
placeholder: "Enter email address"
|
26
|
+
placeholder: "Enter email address",
|
27
|
+
id: "email"
|
25
28
|
}) %>
|
26
29
|
|
27
30
|
<%= pb_rails("text_input", props: {
|
28
31
|
label: "Zip Code",
|
29
32
|
type: "number",
|
30
|
-
placeholder: "Enter zip code"
|
33
|
+
placeholder: "Enter zip code",
|
34
|
+
id: "zip"
|
31
35
|
}) %>
|
@@ -38,6 +38,7 @@ const TextInputDefault = (props) => {
|
|
38
38
|
{...props}
|
39
39
|
/>
|
40
40
|
<TextInput
|
41
|
+
id="last-name"
|
41
42
|
label="Last Name"
|
42
43
|
name="lastName"
|
43
44
|
onChange={handleOnChangeFormField}
|
@@ -46,6 +47,7 @@ const TextInputDefault = (props) => {
|
|
46
47
|
{...props}
|
47
48
|
/>
|
48
49
|
<TextInput
|
50
|
+
id="phone"
|
49
51
|
label="Phone Number"
|
50
52
|
name="phone"
|
51
53
|
onChange={handleOnChangeFormField}
|
@@ -55,6 +57,7 @@ const TextInputDefault = (props) => {
|
|
55
57
|
{...props}
|
56
58
|
/>
|
57
59
|
<TextInput
|
60
|
+
id="email"
|
58
61
|
label="Email Address"
|
59
62
|
name="email"
|
60
63
|
onChange={handleOnChangeFormField}
|
@@ -64,6 +67,7 @@ const TextInputDefault = (props) => {
|
|
64
67
|
{...props}
|
65
68
|
/>
|
66
69
|
<TextInput
|
70
|
+
id="zip"
|
67
71
|
label="Zip Code"
|
68
72
|
name="zip"
|
69
73
|
onChange={handleOnChangeFormField}
|
@@ -84,6 +88,7 @@ const TextInputDefault = (props) => {
|
|
84
88
|
<br />
|
85
89
|
|
86
90
|
<TextInput
|
91
|
+
id="first-name"
|
87
92
|
label="First Name"
|
88
93
|
onChange={handleOnChangeFirstName}
|
89
94
|
placeholder="Enter first name"
|
@@ -0,0 +1 @@
|
|
1
|
+
Add an `id` to your Text Input so that clicking the label will move focus directly to the input.
|
@@ -1,6 +1,8 @@
|
|
1
1
|
<%= pb_content_tag(:div, id: nil ) do %>
|
2
2
|
<% if object.label.present? %>
|
3
|
+
<label for="<%= object.input_options[:id] || object.id %>" >
|
3
4
|
<%= pb_rails("caption", props: { text: object.label, dark: object.dark, classname: "pb_text_input_kit_label" }) %>
|
5
|
+
</label>
|
4
6
|
<% end %>
|
5
7
|
<%= content_tag(:div, class: "#{add_on_class} text_input_wrapper") do %>
|
6
8
|
<% if content.present? %>
|
@@ -15,7 +17,7 @@
|
|
15
17
|
<% else %>
|
16
18
|
<%= input_tag %>
|
17
19
|
<% end %>
|
18
|
-
<%= pb_rails("body", props: {dark: object.dark, status: "negative", text: object.error}) if object.error %>
|
20
|
+
<%= pb_rails("body", props: {dark: object.dark, status: "negative", text: object.error, id: object.error_id, aria: { atomic: "true", live: "polite" }, html_options: { role: "alert" }}) if object.error %>
|
19
21
|
<% end %>
|
20
22
|
<% end %>
|
21
23
|
|
@@ -64,10 +64,16 @@ module Playbook
|
|
64
64
|
"#{object.id}-sanitized" if id.present?
|
65
65
|
end
|
66
66
|
|
67
|
+
def error_id
|
68
|
+
"#{id}-error" if error.present?
|
69
|
+
end
|
70
|
+
|
67
71
|
private
|
68
72
|
|
69
73
|
def all_input_options
|
70
74
|
{
|
75
|
+
'aria-describedby': error.present? ? error_id : nil,
|
76
|
+
'aria-invalid': error.present?,
|
71
77
|
autocomplete: autocomplete == true ? nil : (autocomplete.presence || "off"),
|
72
78
|
class: "text_input #{input_options.dig(:classname) || ''}",
|
73
79
|
data: validation_data,
|
@@ -1 +1 @@
|
|
1
|
-
import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{d as buildAriaProps,e as buildDataProps,f as buildHtmlProps,H as HighchartsReact,g as Highcharts,h as classnames,i as globalProps,j as HighchartsMore,S as SolidGauge,k as buildCss}from"./_typeahead-D3MtsWXG.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-QZuu1ltS.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{d as buildAriaProps,e as buildDataProps,f as buildHtmlProps,H as HighchartsReact,g as Highcharts,h as classnames,i as globalProps,j as HighchartsMore,S as SolidGauge,k as buildCss}from"./_typeahead-pbS3fEzb.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-QZuu1ltS.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};
|