playbook_ui 15.0.0.pre.alpha.PLAY2467contactkitinternational10329 → 15.0.0.pre.alpha.PLAY2468phonenuminputvalidation10790
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 +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +24 -11
- data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/RowUtils.ts +7 -2
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +67 -13
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +2 -2
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_card/_card.scss +12 -4
- data/app/pb_kits/playbook/pb_card/_card.tsx +3 -3
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +10 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +3 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +8 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +2 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +1 -0
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +6 -4
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +48 -4
- data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +5 -1
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +6 -8
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +2 -2
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +9 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +3 -3
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/pb_form_validation.js +19 -4
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +13 -2
- data/app/pb_kits/playbook/pb_icon/icon.rb +9 -1
- data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +1 -0
- data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +2 -1
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +3 -1
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +5 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +24 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +11 -0
- data/app/pb_kits/playbook/pb_nav/_item.tsx +19 -5
- data/app/pb_kits/playbook/pb_nav/_nav.scss +27 -0
- data/app/pb_kits/playbook/pb_nav/_nav.test.js +16 -0
- data/app/pb_kits/playbook/pb_nav/_nav.tsx +5 -0
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.html.erb +6 -0
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.jsx +39 -0
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.md +1 -0
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_nav/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_nav/item.html.erb +6 -2
- data/app/pb_kits/playbook/pb_nav/nav.rb +6 -1
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.html.erb +3 -3
- data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.scss +0 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.tsx +62 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.html.erb +35 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.jsx +49 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_rails.md +1 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_react.md +2 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.html.erb +38 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.jsx +51 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.html.erb +46 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.jsx +62 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.md +3 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.html.erb +47 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.jsx +60 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.html.erb +25 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.jsx +36 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_non_clickable.jsx +44 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +100 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.jsx +126 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.html.erb +32 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.jsx +48 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.html.erb +68 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.jsx +81 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.html.erb +31 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.jsx +42 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.md +2 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.html.erb +35 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.jsx +51 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/example.yml +27 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/index.js +11 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pbBarGraphTheme.ts +106 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.html.erb +1 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.rb +28 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pbbargraph.test.jsx +31 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.scss +3 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.tsx +62 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.html.erb +31 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +81 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.html.erb +25 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +40 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.md +5 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.html.erb +27 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +39 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +5 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.html.erb +93 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +131 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.md +14 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.html.erb +42 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +58 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.html.erb +24 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +38 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.html.erb +22 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +33 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.html.erb +118 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +144 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +60 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.html.erb +24 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +42 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.html.erb +38 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +52 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +29 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +11 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pbCircleChartTheme.ts +88 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.html.erb +1 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.rb +28 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.test.jsx +51 -0
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +43 -2
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +2 -2
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +13 -5
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +23 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +45 -7
- data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -1
- data/app/pb_kits/playbook/pb_section_separator/section_separator.test.js +165 -0
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +3 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +41 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +80 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +1 -0
- data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
- data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -3
- data/app/pb_kits/playbook/pb_text_input/text_input.test.js +38 -0
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +24 -8
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +0 -10
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +0 -9
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +3 -17
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +0 -15
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +0 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +0 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.md +5 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.html.erb +12 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.jsx +25 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.html.erb +4 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.jsx +17 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.html.erb +18 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.jsx +44 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +0 -14
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +0 -14
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.html.erb +0 -4
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +0 -4
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.md +5 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.html.erb +16 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.jsx +30 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.html.erb +16 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.jsx +30 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.html.erb +26 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.jsx +41 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +18 -6
- data/app/pb_kits/playbook/pb_timestamp/docs/index.js +6 -0
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +29 -7
- data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +69 -4
- data/dist/chunks/{_line_graph-CApw7aQD.js → _line_graph-CspDMr9b.js} +1 -1
- data/dist/chunks/_typeahead-B_wpgm_J.js +6 -0
- data/dist/chunks/_weekday_stacked-CXzARuTy.js +37 -0
- data/dist/chunks/componentRegistry-DzmmLR2x.js +1 -0
- data/dist/chunks/{lib-CY5ZPzic.js → lib-QZuu1ltS.js} +1 -1
- data/dist/chunks/pb_form_validation-W63gNcnu.js +1 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +15 -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/engine.rb +0 -1
- data/lib/playbook/forms/builder/form_field_builder.rb +37 -2
- data/lib/playbook/kit_base.rb +23 -2
- data/lib/playbook/version.rb +1 -1
- metadata +110 -28
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +0 -65
- data/app/pb_kits/playbook/pb_timestamp/docs/_time_stamp_default.md +0 -1
- data/dist/chunks/_typeahead-J1_avqdO.js +0 -6
- data/dist/chunks/_weekday_stacked-BSRRJewP.js +0 -37
- data/dist/chunks/pb_form_validation-D3b0JKHH.js +0 -1
@@ -0,0 +1,42 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { PbCircleChart } from "playbook-ui";
|
3
|
+
|
4
|
+
const data= [
|
5
|
+
{
|
6
|
+
name: "Waiting for Calls",
|
7
|
+
y: 41,
|
8
|
+
},
|
9
|
+
{
|
10
|
+
name: "On Call",
|
11
|
+
y: 49,
|
12
|
+
},
|
13
|
+
{
|
14
|
+
name: "After Call",
|
15
|
+
y: 10,
|
16
|
+
},
|
17
|
+
]
|
18
|
+
|
19
|
+
|
20
|
+
const PbCircleChartRounded = (props) => {
|
21
|
+
const chartOptions = {
|
22
|
+
series: [{ data: data }],
|
23
|
+
plotOptions: {
|
24
|
+
pie: {
|
25
|
+
borderColor: null,
|
26
|
+
borderWidth: 20,
|
27
|
+
innerSize: '100%',
|
28
|
+
},
|
29
|
+
},
|
30
|
+
};
|
31
|
+
|
32
|
+
return (
|
33
|
+
<div>
|
34
|
+
<PbCircleChart
|
35
|
+
options={chartOptions}
|
36
|
+
{...props}
|
37
|
+
/>
|
38
|
+
</div>
|
39
|
+
);
|
40
|
+
};
|
41
|
+
|
42
|
+
export default PbCircleChartRounded;
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<% data = [
|
2
|
+
{
|
3
|
+
name: 'Facebook',
|
4
|
+
y: 2498,
|
5
|
+
},
|
6
|
+
{
|
7
|
+
name: 'YouTube',
|
8
|
+
y: 2000,
|
9
|
+
},
|
10
|
+
{
|
11
|
+
name: 'WhatsApp',
|
12
|
+
y: 2000,
|
13
|
+
},
|
14
|
+
{
|
15
|
+
name: 'Facebook Messenger',
|
16
|
+
y: 1300,
|
17
|
+
},
|
18
|
+
{
|
19
|
+
name: 'WeChat',
|
20
|
+
y: 1165,
|
21
|
+
},
|
22
|
+
{
|
23
|
+
name: 'Instagram',
|
24
|
+
y: 1000,
|
25
|
+
},
|
26
|
+
{
|
27
|
+
name: 'Tik Tok',
|
28
|
+
y: 800,
|
29
|
+
},
|
30
|
+
] %>
|
31
|
+
|
32
|
+
<% chart_options = {
|
33
|
+
series: [{ data: data }],
|
34
|
+
title: { text: "Active Users on Social Media" },
|
35
|
+
} %>
|
36
|
+
|
37
|
+
|
38
|
+
<%= pb_rails("pb_circle_chart", props: { options: chart_options }) %>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { PbCircleChart } from "playbook-ui";
|
3
|
+
|
4
|
+
const data= [
|
5
|
+
{
|
6
|
+
name: 'Facebook',
|
7
|
+
y: 2498,
|
8
|
+
},
|
9
|
+
{
|
10
|
+
name: 'YouTube',
|
11
|
+
y: 2000,
|
12
|
+
},
|
13
|
+
{
|
14
|
+
name: 'WhatsApp',
|
15
|
+
y: 2000,
|
16
|
+
},
|
17
|
+
{
|
18
|
+
name: 'Facebook Messenger',
|
19
|
+
y: 1300,
|
20
|
+
},
|
21
|
+
{
|
22
|
+
name: 'WeChat',
|
23
|
+
y: 1165,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
name: 'Instagram',
|
27
|
+
y: 1000,
|
28
|
+
},
|
29
|
+
{
|
30
|
+
name: 'Tik Tok',
|
31
|
+
y: 800,
|
32
|
+
},
|
33
|
+
]
|
34
|
+
|
35
|
+
|
36
|
+
const PbCircleChartWithTitle = (props) => {
|
37
|
+
const chartOptions = {
|
38
|
+
title: { text: "Active Users on Social Media" },
|
39
|
+
series: [{ data: data }],
|
40
|
+
};
|
41
|
+
|
42
|
+
return (
|
43
|
+
<div>
|
44
|
+
<PbCircleChart
|
45
|
+
options={chartOptions}
|
46
|
+
{...props}
|
47
|
+
/>
|
48
|
+
</div>
|
49
|
+
);
|
50
|
+
};
|
51
|
+
|
52
|
+
export default PbCircleChartWithTitle;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
examples:
|
2
|
+
|
3
|
+
rails:
|
4
|
+
- pb_circle_chart_default: Default
|
5
|
+
- pb_circle_chart_rounded: Rounded Corners
|
6
|
+
- pb_circle_chart_block_content: Accepts Any Block
|
7
|
+
- pb_circle_chart_color_overrides: Color Overrides
|
8
|
+
- pb_circle_chart_data_with_labels: Data with Labels
|
9
|
+
- pb_circle_chart_data_with_legend: Data with Legend
|
10
|
+
- pb_circle_chart_data_legend_position: Legend Position
|
11
|
+
- pb_circle_chart_with_title: With Title
|
12
|
+
- pb_circle_chart_inner_sizes: Inner Circle Size Options
|
13
|
+
- pb_circle_chart_custom_tooltip: Tooltip Customization
|
14
|
+
|
15
|
+
|
16
|
+
react:
|
17
|
+
- pb_circle_chart_default: Default
|
18
|
+
- pb_circle_chart_live_data: Live Data
|
19
|
+
- pb_circle_chart_rounded: Rounded Corners
|
20
|
+
- pb_circle_chart_block_content: Accepts Any Block
|
21
|
+
- pb_circle_chart_color_overrides: Color Overrides
|
22
|
+
- pb_circle_chart_data_with_labels: Data with Labels
|
23
|
+
- pb_circle_chart_data_with_legend: Data with Legend
|
24
|
+
- pb_circle_chart_data_legend_position: Legend Position
|
25
|
+
- pb_circle_chart_with_title: With Title
|
26
|
+
- pb_circle_chart_inner_sizes: Inner Circle Size Options
|
27
|
+
- pb_circle_chart_custom_tooltip: Tooltip Customization
|
28
|
+
|
29
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export { default as PbCircleChartDefault } from './_pb_circle_chart_default.jsx'
|
2
|
+
export { default as PbCircleChartLiveData } from './_pb_circle_chart_live_data.jsx'
|
3
|
+
export { default as PbCircleChartRounded } from './_pb_circle_chart_rounded.jsx'
|
4
|
+
export { default as PbCircleChartBlockContent } from './_pb_circle_chart_block_content.jsx'
|
5
|
+
export { default as PbCircleChartColorOverrides } from './_pb_circle_chart_color_overrides.jsx'
|
6
|
+
export { default as PbCircleChartDataWithLabels } from './_pb_circle_chart_data_with_labels.jsx'
|
7
|
+
export { default as PbCircleChartDataWithLegend } from './_pb_circle_chart_data_with_legend.jsx'
|
8
|
+
export { default as PbCircleChartDataLegendPosition } from './_pb_circle_chart_data_legend_position.jsx'
|
9
|
+
export { default as PbCircleChartWithTitle } from './_pb_circle_chart_with_title.jsx'
|
10
|
+
export { default as PbCircleChartInnerSizes } from './_pb_circle_chart_inner_sizes.jsx'
|
11
|
+
export { default as PbCircleChartCustomTooltip } from './_pb_circle_chart_custom_tooltip.jsx'
|
@@ -0,0 +1,88 @@
|
|
1
|
+
import colors from '../tokens/exports/_colors.module.scss'
|
2
|
+
import typography from '../tokens/exports/_typography.module.scss'
|
3
|
+
|
4
|
+
const pbCircleChartTheme = {
|
5
|
+
title: {
|
6
|
+
text: "",
|
7
|
+
style: {
|
8
|
+
color: colors.text_lt_default,
|
9
|
+
fontFamily: typography.font_family_base,
|
10
|
+
fontWeight: typography.bold,
|
11
|
+
fontSize: typography.heading_3,
|
12
|
+
},
|
13
|
+
},
|
14
|
+
chart: {
|
15
|
+
type: "pie",
|
16
|
+
},
|
17
|
+
tooltip: {
|
18
|
+
backgroundColor: {
|
19
|
+
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
20
|
+
stops: [
|
21
|
+
[0, colors.bg_dark],
|
22
|
+
[1, colors.bg_dark],
|
23
|
+
],
|
24
|
+
},
|
25
|
+
pointFormat:
|
26
|
+
'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: ' +
|
27
|
+
"<b>{point.y}</b>",
|
28
|
+
followPointer: true,
|
29
|
+
shadow: false,
|
30
|
+
borderWidth: 0,
|
31
|
+
borderRadius: 10,
|
32
|
+
style: {
|
33
|
+
fontFamily: typography.font_family_base,
|
34
|
+
color: colors.text_dk_default,
|
35
|
+
fontWeight: typography.regular,
|
36
|
+
fontSize: typography.text_smaller,
|
37
|
+
},
|
38
|
+
},
|
39
|
+
plotOptions: {
|
40
|
+
pie: {
|
41
|
+
dataLabels: {
|
42
|
+
enabled: false,
|
43
|
+
connectorShape: "straight",
|
44
|
+
connectorWidth: 3,
|
45
|
+
format: "<div>{point.name}</div>",
|
46
|
+
style: {
|
47
|
+
fontFamily: typography.font_family_base,
|
48
|
+
fontSize: typography.text_smaller,
|
49
|
+
color: colors.text_lt_light,
|
50
|
+
fontWeight: typography.regular,
|
51
|
+
textOutline: '2px $white',
|
52
|
+
},
|
53
|
+
},
|
54
|
+
innerSize: '50%',
|
55
|
+
borderColor: "",
|
56
|
+
borderWidth: null as number | null,
|
57
|
+
colors: [
|
58
|
+
colors.data_1,
|
59
|
+
colors.data_2,
|
60
|
+
colors.data_3,
|
61
|
+
colors.data_4,
|
62
|
+
colors.data_5,
|
63
|
+
colors.data_6,
|
64
|
+
colors.data_7,
|
65
|
+
],
|
66
|
+
},
|
67
|
+
},
|
68
|
+
legend: {
|
69
|
+
layout: 'horizontal',
|
70
|
+
align: 'center',
|
71
|
+
verticalAlign: 'bottom',
|
72
|
+
itemStyle: {
|
73
|
+
fontFamily: typography.font_family_base,
|
74
|
+
color: colors.text_lt_light,
|
75
|
+
fontWeight: typography.regular,
|
76
|
+
fontSize: typography.text_smaller,
|
77
|
+
},
|
78
|
+
itemHoverStyle: {
|
79
|
+
color: colors.text_lt_default,
|
80
|
+
},
|
81
|
+
itemHiddenStyle: {
|
82
|
+
color: colors.text_lt_lighter,
|
83
|
+
},
|
84
|
+
},
|
85
|
+
credits: { enabled: false }
|
86
|
+
}
|
87
|
+
|
88
|
+
export default pbCircleChartTheme;
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= react_component('PbCircleChart', object.react_props) %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbPbCircleChart
|
5
|
+
class PbCircleChart < ::Playbook::KitBase
|
6
|
+
prop :options, default: {}
|
7
|
+
prop :container_props, default: {}
|
8
|
+
|
9
|
+
def react_props
|
10
|
+
{
|
11
|
+
options: options,
|
12
|
+
containerProps: container_props_hash,
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def container_props_hash
|
17
|
+
container_props.merge({
|
18
|
+
id: id,
|
19
|
+
className: classname,
|
20
|
+
}).compact
|
21
|
+
end
|
22
|
+
|
23
|
+
def classname
|
24
|
+
generate_classname("pb_pb_circle_chart")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { render, screen } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import { PbCircleChart } from 'playbook-ui'
|
5
|
+
|
6
|
+
beforeEach(() => {
|
7
|
+
// Silences error logs within the test suite.
|
8
|
+
jest.spyOn(console, 'error');
|
9
|
+
jest.spyOn(console, 'warn');
|
10
|
+
console.error.mockImplementation(() => {});
|
11
|
+
console.warn.mockImplementation(() => {});
|
12
|
+
});
|
13
|
+
|
14
|
+
afterEach(() => {
|
15
|
+
console.error.mockRestore();
|
16
|
+
console.warn.mockRestore();
|
17
|
+
});
|
18
|
+
|
19
|
+
const chartOptions = {
|
20
|
+
series: [
|
21
|
+
{
|
22
|
+
data: [
|
23
|
+
{
|
24
|
+
name: "Waiting for Calls",
|
25
|
+
y: 41,
|
26
|
+
},
|
27
|
+
{
|
28
|
+
name: "On Call",
|
29
|
+
y: 49,
|
30
|
+
},
|
31
|
+
{
|
32
|
+
name: "After Call",
|
33
|
+
y: 10,
|
34
|
+
},
|
35
|
+
],
|
36
|
+
},
|
37
|
+
],
|
38
|
+
};
|
39
|
+
|
40
|
+
const testId = 'pbcirclechart1';
|
41
|
+
|
42
|
+
test('Kit to exist', () => {
|
43
|
+
render(
|
44
|
+
<PbCircleChart
|
45
|
+
data={{testid: testId}}
|
46
|
+
options={chartOptions}
|
47
|
+
/>
|
48
|
+
)
|
49
|
+
expect(screen.getByTestId(testId)).toBeInTheDocument()
|
50
|
+
})
|
51
|
+
|
@@ -110,18 +110,41 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
110
110
|
|
111
111
|
const inputRef = useRef<HTMLInputElement | null>(null)
|
112
112
|
const itiRef = useRef<any>(null);
|
113
|
+
const wrapperRef = useRef<HTMLDivElement | null>(null); // Add wrapper ref
|
113
114
|
const [inputValue, setInputValue] = useState(value)
|
114
115
|
const [error, setError] = useState(props.error)
|
115
116
|
const [dropDownIsOpen, setDropDownIsOpen] = useState(false)
|
116
117
|
const [selectedData, setSelectedData] = useState()
|
117
118
|
const [hasTyped, setHasTyped] = useState(false)
|
118
119
|
|
120
|
+
// Function to update validation state on the wrapper element
|
121
|
+
// Only applies when input is required
|
122
|
+
const updateValidationState = (hasError: boolean) => {
|
123
|
+
if (wrapperRef.current && required) {
|
124
|
+
if (hasError) {
|
125
|
+
wrapperRef.current.classList.add('pb_phone_number_validation_error')
|
126
|
+
wrapperRef.current.setAttribute('data-pb-phone-validation-error', 'true')
|
127
|
+
} else {
|
128
|
+
wrapperRef.current.classList.remove('pb_phone_number_validation_error')
|
129
|
+
wrapperRef.current.removeAttribute('data-pb-phone-validation-error')
|
130
|
+
}
|
131
|
+
} else if (wrapperRef.current && !required) {
|
132
|
+
// Always clear validation state if field is not required
|
133
|
+
wrapperRef.current.classList.remove('pb_phone_number_validation_error')
|
134
|
+
wrapperRef.current.removeAttribute('data-pb-phone-validation-error')
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
119
138
|
useEffect(() => {
|
120
|
-
|
139
|
+
const hasError = (error ?? '').length > 0
|
140
|
+
if (hasError) {
|
121
141
|
onValidate(false)
|
122
142
|
} else {
|
123
143
|
onValidate(true)
|
124
144
|
}
|
145
|
+
|
146
|
+
// Update validation state whenever error changes
|
147
|
+
updateValidationState(hasError)
|
125
148
|
}, [error, onValidate])
|
126
149
|
|
127
150
|
/*
|
@@ -135,6 +158,10 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
135
158
|
setInputValue("")
|
136
159
|
setError("")
|
137
160
|
setHasTyped(false)
|
161
|
+
// Only clear validation state if field was required
|
162
|
+
if (required) {
|
163
|
+
updateValidationState(false)
|
164
|
+
}
|
138
165
|
},
|
139
166
|
inputNode() {
|
140
167
|
return inputRef.current
|
@@ -212,10 +239,21 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
212
239
|
}
|
213
240
|
}
|
214
241
|
|
242
|
+
// Validation for required empty fields
|
243
|
+
const validateRequiredField = () => {
|
244
|
+
if (required && (!inputValue || inputValue.trim() === '')) {
|
245
|
+
setError('Missing phone number')
|
246
|
+
return true
|
247
|
+
}
|
248
|
+
return false
|
249
|
+
}
|
215
250
|
|
216
251
|
const validateErrors = () => {
|
217
252
|
if (!hasTyped && !error) return
|
218
253
|
|
254
|
+
// First check if required field is empty
|
255
|
+
if (validateRequiredField()) return
|
256
|
+
|
219
257
|
if (itiRef.current) isValid(itiRef.current.isValidNumber())
|
220
258
|
if (validateOnlyNumbers(itiRef.current)) return
|
221
259
|
if (validateTooLongNumber(itiRef.current)) return
|
@@ -310,7 +348,10 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
310
348
|
value: inputValue
|
311
349
|
}
|
312
350
|
|
313
|
-
let wrapperProps: Record<string, unknown> = {
|
351
|
+
let wrapperProps: Record<string, unknown> = {
|
352
|
+
className: classes,
|
353
|
+
ref: wrapperRef // Add ref to wrapper
|
354
|
+
}
|
314
355
|
|
315
356
|
if (!isEmpty(aria)) textInputProps = {...textInputProps, ...ariaProps}
|
316
357
|
if (!isEmpty(data)) wrapperProps = {...wrapperProps, ...dataProps}
|
@@ -13,8 +13,8 @@
|
|
13
13
|
<script>
|
14
14
|
document.addEventListener('DOMContentLoaded', () => {
|
15
15
|
function handleButtonClick() {
|
16
|
-
const editorContainer = [...document.querySelectorAll('[data-react-props]')]
|
17
|
-
.find(element => element.getAttribute('data-react-props')?.includes('"id":"content-preview-editor"'))
|
16
|
+
const editorContainer = [...document.querySelectorAll('[data-pb-react-props]')]
|
17
|
+
.find(element => element.getAttribute('data-pb-react-props')?.includes('"id":"content-preview-editor"'))
|
18
18
|
|
19
19
|
const editorElement = editorContainer?.querySelector('trix-editor')
|
20
20
|
const inputId = editorElement?.getAttribute('input')
|
@@ -53,10 +53,13 @@ $section_colors_dark: (
|
|
53
53
|
.pb_section_separator_vertical {
|
54
54
|
margin-left: $space_xs;
|
55
55
|
margin-right: $space_xs;
|
56
|
+
flex-direction: column;
|
56
57
|
&::before {
|
57
|
-
|
58
|
+
flex: 1;
|
59
|
+
@include section_separator_vertical(false);
|
58
60
|
}
|
59
61
|
&::after {
|
62
|
+
flex: 1;
|
60
63
|
@include section_separator_vertical(false);
|
61
64
|
}
|
62
65
|
}
|
@@ -87,7 +90,7 @@ $section_colors_dark: (
|
|
87
90
|
background: none;
|
88
91
|
}
|
89
92
|
&.pb_section_separator_vertical {
|
90
|
-
&::after {
|
93
|
+
&::before, &::after {
|
91
94
|
border: 1px dashed $color_value;
|
92
95
|
background: none;
|
93
96
|
}
|
@@ -106,7 +109,7 @@ $section_colors_dark: (
|
|
106
109
|
}
|
107
110
|
|
108
111
|
&.pb_section_separator_vertical {
|
109
|
-
&::after {
|
112
|
+
&::before, &::after {
|
110
113
|
@include section_separator_vertical(true);
|
111
114
|
}
|
112
115
|
}
|
@@ -115,6 +118,11 @@ $section_colors_dark: (
|
|
115
118
|
&::before, &::after {
|
116
119
|
@include section_separator_dashed(true);
|
117
120
|
}
|
121
|
+
&.pb_section_separator_vertical {
|
122
|
+
&::before, &::after {
|
123
|
+
@include section_separator_dashed(true);
|
124
|
+
}
|
125
|
+
}
|
118
126
|
}
|
119
127
|
}
|
120
128
|
|
@@ -126,7 +134,7 @@ $section_colors_dark: (
|
|
126
134
|
}
|
127
135
|
|
128
136
|
&.pb_section_separator_vertical {
|
129
|
-
&::after {
|
137
|
+
&::before, &::after {
|
130
138
|
@include section_separator_vertical(false);
|
131
139
|
background: $color_value;
|
132
140
|
}
|
@@ -138,7 +146,7 @@ $section_colors_dark: (
|
|
138
146
|
background: none;
|
139
147
|
}
|
140
148
|
&.pb_section_separator_vertical {
|
141
|
-
&::after {
|
149
|
+
&::before, &::after {
|
142
150
|
border: 1px dashed $color_value;
|
143
151
|
background: none;
|
144
152
|
}
|
@@ -11,4 +11,27 @@
|
|
11
11
|
padding_right: "xs"
|
12
12
|
}) %>
|
13
13
|
<% end %>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<%= pb_rails("flex", props: { classname: "flex-container", margin_top: "lg", vertical: "stretch" }) do %>
|
17
|
+
<%= pb_rails("body", props: { classname: "flex-item" }) do %>
|
18
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
|
19
|
+
<% end %>
|
20
|
+
<%= pb_rails("section_separator", props: { orientation: "vertical" }) do %>
|
21
|
+
<%= pb_rails("card", props: {
|
22
|
+
border_radius: "rounded",
|
23
|
+
justify_content: "center",
|
24
|
+
padding: "none"
|
25
|
+
}) do %>
|
26
|
+
<%= pb_rails("caption", props: {
|
27
|
+
text: "TODAY",
|
28
|
+
size: "xs",
|
29
|
+
padding_left: "xs",
|
30
|
+
padding_right: "xs"
|
31
|
+
}) %>
|
32
|
+
<% end %>
|
33
|
+
<% end %>
|
34
|
+
<%= pb_rails("body", props: { classname: "flex-item" }) do %>
|
35
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
|
36
|
+
<% end %>
|
14
37
|
<% end %>
|
@@ -2,8 +2,25 @@ import React from 'react'
|
|
2
2
|
import Card from '../../pb_card/_card'
|
3
3
|
import Caption from '../../pb_caption/_caption'
|
4
4
|
import SectionSeparator from '../../pb_section_separator/_section_separator'
|
5
|
+
import Flex from '../../pb_flex/_flex'
|
6
|
+
import FlexItem from '../../pb_flex/_flex_item'
|
5
7
|
|
6
|
-
const
|
8
|
+
const childrenHorizontal = (
|
9
|
+
<Card
|
10
|
+
borderRadius="rounded"
|
11
|
+
justifyContent="center"
|
12
|
+
padding="none"
|
13
|
+
>
|
14
|
+
<Caption
|
15
|
+
paddingLeft="xs"
|
16
|
+
paddingRight="xs"
|
17
|
+
size="xs"
|
18
|
+
text="TODAY"
|
19
|
+
/>
|
20
|
+
</Card>
|
21
|
+
)
|
22
|
+
|
23
|
+
const childrenVertical = (
|
7
24
|
<Card
|
8
25
|
borderRadius="rounded"
|
9
26
|
justifyContent="center"
|
@@ -20,12 +37,33 @@ const children = (
|
|
20
37
|
|
21
38
|
const SectionSeparatorChildren = (props) => {
|
22
39
|
return (
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
40
|
+
<>
|
41
|
+
<SectionSeparator
|
42
|
+
{...props}
|
43
|
+
lineStyle='dashed'
|
44
|
+
>
|
45
|
+
{childrenHorizontal}
|
46
|
+
</SectionSeparator>
|
47
|
+
<Flex
|
48
|
+
inline="flex-container"
|
49
|
+
marginTop="lg"
|
50
|
+
vertical="stretch"
|
51
|
+
>
|
52
|
+
<FlexItem>
|
53
|
+
{'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
|
54
|
+
</FlexItem>
|
55
|
+
<SectionSeparator
|
56
|
+
orientation="vertical"
|
57
|
+
{...props}
|
58
|
+
>
|
59
|
+
{childrenVertical}
|
60
|
+
</SectionSeparator>
|
61
|
+
<FlexItem>
|
62
|
+
{'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua'}
|
63
|
+
</FlexItem>
|
64
|
+
</Flex>
|
65
|
+
</>
|
66
|
+
|
29
67
|
)
|
30
68
|
}
|
31
69
|
|
@@ -7,7 +7,10 @@
|
|
7
7
|
<% end %>
|
8
8
|
<% end %>
|
9
9
|
<% if object.orientation === 'vertical' %>
|
10
|
-
|
10
|
+
<% if content %>
|
11
|
+
<%= content %>
|
12
|
+
<% elsif object.text %>
|
13
|
+
<span><%= pb_rails("caption", props: { text: object.text }) %></span>
|
11
14
|
<% end %>
|
12
15
|
<%end%>
|
13
16
|
<% end %>
|