playbook_ui 15.0.0.pre.alpha.PLAY2468phonenuminputvalidation10790 → 15.0.0.pre.alpha.PLAY2473rowhighlightfix10510
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 +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +0 -12
- data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +13 -67
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +2 -2
- data/app/pb_kits/playbook/pb_card/_card.scss +4 -12
- data/app/pb_kits/playbook/pb_card/_card.tsx +3 -3
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +0 -10
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +0 -3
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +0 -8
- data/app/pb_kits/playbook/pb_contact/_contact.tsx +0 -5
- data/app/pb_kits/playbook/pb_contact/contact.rb +0 -4
- data/app/pb_kits/playbook/pb_contact/contact.test.js +1 -21
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +1 -16
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +0 -15
- data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +0 -6
- data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +0 -6
- 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 +4 -19
- data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +0 -1
- data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +1 -2
- data/app/pb_kits/playbook/pb_nav/_item.tsx +5 -19
- data/app/pb_kits/playbook/pb_nav/_nav.scss +0 -27
- data/app/pb_kits/playbook/pb_nav/_nav.test.js +0 -16
- data/app/pb_kits/playbook/pb_nav/_nav.tsx +0 -5
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_nav/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_nav/item.html.erb +2 -6
- data/app/pb_kits/playbook/pb_nav/nav.rb +1 -6
- 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_phone_number_input/_phone_number_input.tsx +2 -43
- 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 +5 -13
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +0 -23
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +7 -45
- data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +1 -4
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +8 -24
- data/app/pb_kits/playbook/pb_timestamp/docs/_time_stamp_default.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +10 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +9 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +17 -3
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +15 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +2 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +2 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +14 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +14 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.html.erb +4 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +4 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +6 -18
- data/app/pb_kits/playbook/pb_timestamp/docs/index.js +0 -6
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +7 -29
- data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +4 -69
- data/dist/chunks/{_line_graph-CspDMr9b.js → _line_graph-BBny-YYZ.js} +1 -1
- data/dist/chunks/{_typeahead-B_wpgm_J.js → _typeahead-CeyJ6-GF.js} +2 -2
- data/dist/chunks/{_weekday_stacked-CXzARuTy.js → _weekday_stacked-Dfq9Ls3V.js} +3 -3
- data/dist/chunks/{lib-QZuu1ltS.js → lib-BTs5acfO.js} +1 -1
- data/dist/chunks/pb_form_validation-CKkaQFX3.js +1 -0
- 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/engine.rb +1 -0
- data/lib/playbook/forms/builder/form_field_builder.rb +1 -28
- data/lib/playbook/kit_base.rb +2 -23
- data/lib/playbook/version.rb +1 -1
- metadata +27 -73
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.md +0 -5
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.html.erb +0 -6
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.jsx +0 -39
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.md +0 -1
- 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_section_separator/section_separator.test.js +0 -165
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.md +0 -5
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.html.erb +0 -12
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.jsx +0 -25
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.html.erb +0 -4
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.jsx +0 -17
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.html.erb +0 -18
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.jsx +0 -44
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.md +0 -5
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.html.erb +0 -16
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.jsx +0 -30
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.html.erb +0 -16
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.jsx +0 -30
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.md +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.html.erb +0 -26
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.jsx +0 -41
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.md +0 -1
- data/dist/chunks/componentRegistry-DzmmLR2x.js +0 -1
- data/dist/chunks/pb_form_validation-W63gNcnu.js +0 -1
@@ -48,30 +48,3 @@
|
|
48
48
|
&:hover { cursor: pointer; }
|
49
49
|
}
|
50
50
|
}
|
51
|
-
|
52
|
-
.pb_nav_extended_underline {
|
53
|
-
position: relative;
|
54
|
-
|
55
|
-
// Add full-width border using pseudo-element so as not to break the active item border
|
56
|
-
&::after {
|
57
|
-
content: '';
|
58
|
-
position: absolute;
|
59
|
-
bottom: 0;
|
60
|
-
left: 0;
|
61
|
-
right: 0;
|
62
|
-
height: 3px;
|
63
|
-
background-color: $border_light;
|
64
|
-
z-index: 1;
|
65
|
-
}
|
66
|
-
|
67
|
-
.pb_nav_list_kit_item_active.pb_nav_list_item_link {
|
68
|
-
position: relative;
|
69
|
-
z-index: 2;
|
70
|
-
}
|
71
|
-
|
72
|
-
&.dark {
|
73
|
-
&::after {
|
74
|
-
background-color: rgba($white, $opacity_3);
|
75
|
-
}
|
76
|
-
}
|
77
|
-
}
|
@@ -117,19 +117,3 @@ test('should change variant', () => {
|
|
117
117
|
const kit = screen.getByTestId(navTestId)
|
118
118
|
expect(kit).toHaveClass('pb_nav_list_subtle_vertical_highlight')
|
119
119
|
})
|
120
|
-
|
121
|
-
test('extendedUnderline should work as expected', () => {
|
122
|
-
render(
|
123
|
-
<NavDefault extendedUnderline
|
124
|
-
orientation="horizontal"
|
125
|
-
/>
|
126
|
-
)
|
127
|
-
const kit = screen.getByTestId(navTestId)
|
128
|
-
expect(kit).toHaveClass('pb_nav_extended_underline')
|
129
|
-
})
|
130
|
-
|
131
|
-
test('extendedUnderline should not be applied when orientation is vertical', () => {
|
132
|
-
render(<NavDefault extendedUnderline />)
|
133
|
-
const kit = screen.getByTestId(navTestId)
|
134
|
-
expect(kit).not.toHaveClass('pb_nav_extended_underline')
|
135
|
-
})
|
@@ -14,7 +14,6 @@ type NavProps = {
|
|
14
14
|
className?: string | string[],
|
15
15
|
data?: Record<string, unknown>,
|
16
16
|
dark?: boolean,
|
17
|
-
extendedUnderline?: boolean,
|
18
17
|
highlight?: boolean,
|
19
18
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
20
19
|
id?: string,
|
@@ -34,7 +33,6 @@ const Nav = (props: NavProps): React.ReactElement => {
|
|
34
33
|
className,
|
35
34
|
data = {},
|
36
35
|
dark = false,
|
37
|
-
extendedUnderline = false,
|
38
36
|
highlight = true,
|
39
37
|
htmlOptions = {},
|
40
38
|
id,
|
@@ -54,9 +52,6 @@ const Nav = (props: NavProps): React.ReactElement => {
|
|
54
52
|
highlight: highlight,
|
55
53
|
borderless: borderless,
|
56
54
|
}),
|
57
|
-
// extended underline is only applicable for horizontal normal nav, should not
|
58
|
-
// affect other variants or orientations
|
59
|
-
variant === 'normal' && orientation === 'horizontal' && extendedUnderline && 'pb_nav_extended_underline',
|
60
55
|
globalProps(props),
|
61
56
|
className
|
62
57
|
)
|
@@ -17,7 +17,6 @@ examples:
|
|
17
17
|
- horizontal_nav: Horizontal Nav
|
18
18
|
- subtle_horizontal_nav: Subtle Horizontal Nav
|
19
19
|
- bold_horizontal_nav: Bold Horizontal Nav
|
20
|
-
- horizontal_nav_extendedunderline: Horizontal Nav With Extended Underline
|
21
20
|
- block_nav: Block
|
22
21
|
- block_no_title_nav: Without Title
|
23
22
|
- new_tab: Open in a New Tab
|
@@ -43,7 +42,6 @@ examples:
|
|
43
42
|
- horizontal_nav: Horizontal Nav
|
44
43
|
- subtle_horizontal_nav: Subtle Horizontal Nav
|
45
44
|
- bold_horizontal_nav: Bold Horizontal Nav
|
46
|
-
- horizontal_nav_extendedunderline: Horizontal Nav With Extended Underline
|
47
45
|
- block_nav: Block
|
48
46
|
- block_no_title_nav: Without Title
|
49
47
|
- new_tab: Open in a New Tab
|
@@ -19,5 +19,4 @@ export { default as CollapsibleNavWithAllOptions} from "./_collapsible_nav_with_
|
|
19
19
|
export { default as NavWithFontControl } from "./_nav_with_font_control.jsx"
|
20
20
|
export { default as NavWithSpacingControl } from "./_nav_with_spacing_control.jsx"
|
21
21
|
export { default as CollapsibleNavItemSpacing } from "./_collapsible_nav_item_spacing.jsx"
|
22
|
-
export { default as CollapsibleNavNoIcon } from "./_collapsible_nav_no_icon.jsx"
|
23
|
-
export { default as HorizontalNavExtendedunderline } from './_horizontal_nav_extendedunderline.jsx'
|
22
|
+
export { default as CollapsibleNavNoIcon } from "./_collapsible_nav_no_icon.jsx"
|
@@ -3,9 +3,7 @@
|
|
3
3
|
<%= pb_rails("collapsible/collapsible_main", props: { name: "default-collapsible-nav", icon: object.collapsible_icons, size: "xs", dark: object.dark, classname:object.margin_classes }) do %>
|
4
4
|
<%= pb_content_tag( object.tag,
|
5
5
|
href: object.link && object.link,
|
6
|
-
target: object.link && object.target
|
7
|
-
onkeydown: !object.link ? "if(event.key==='Enter'||event.key===' '){event.preventDefault(); this.click();}" : nil,
|
8
|
-
tabindex: object.link ? nil : 0,
|
6
|
+
target: object.link && object.target
|
9
7
|
) do %>
|
10
8
|
<% if object.image_url %>
|
11
9
|
<%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper_collapsible" }) %>
|
@@ -25,9 +23,7 @@
|
|
25
23
|
<% else %>
|
26
24
|
<%= pb_content_tag( object.tag,
|
27
25
|
href: object.link && object.link,
|
28
|
-
target: object.link && object.target
|
29
|
-
onkeydown: !object.link ? "if(event.key==='Enter'||event.key===' '){event.preventDefault(); this.click();}" : nil,
|
30
|
-
tabindex: object.link ? nil : 0,
|
26
|
+
target: object.link && object.target
|
31
27
|
) do %>
|
32
28
|
<% if object.image_url %>
|
33
29
|
<%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper" }) %>
|
@@ -14,10 +14,9 @@ module Playbook
|
|
14
14
|
prop :highlight, type: Playbook::Props::Boolean, default: true
|
15
15
|
prop :borderless, type: Playbook::Props::Boolean, default: false
|
16
16
|
prop :tabbing, type: Playbook::Props::Boolean, default: false
|
17
|
-
prop :extended_underline, type: Playbook::Props::Boolean, default: false
|
18
17
|
|
19
18
|
def classname
|
20
|
-
generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class)
|
19
|
+
generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class)
|
21
20
|
end
|
22
21
|
|
23
22
|
def data
|
@@ -35,10 +34,6 @@ module Playbook
|
|
35
34
|
def borderless_class
|
36
35
|
borderless ? "borderless" : nil
|
37
36
|
end
|
38
|
-
|
39
|
-
def extended_underline_class
|
40
|
-
variant === "normal" && orientation === "horizontal" && extended_underline ? " pb_nav_extended_underline" : ""
|
41
|
-
end
|
42
37
|
end
|
43
38
|
end
|
44
39
|
end
|
@@ -4,8 +4,8 @@
|
|
4
4
|
|
5
5
|
<%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_breached" }) %>
|
6
6
|
|
7
|
-
|
8
|
-
window.addEventListener("
|
7
|
+
<%= javascript_tag do %>
|
8
|
+
window.addEventListener("DOMContentLoaded", () => {
|
9
9
|
|
10
10
|
// variables for the kits you are targeting
|
11
11
|
const passphrase = document.querySelector(".passphrase_breached").querySelector("input")
|
@@ -142,4 +142,4 @@
|
|
142
142
|
});
|
143
143
|
|
144
144
|
})
|
145
|
-
|
145
|
+
<% end %>
|
@@ -10,8 +10,8 @@
|
|
10
10
|
<%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_common" }) %>
|
11
11
|
|
12
12
|
|
13
|
-
|
14
|
-
window.addEventListener("
|
13
|
+
<%= javascript_tag do %>
|
14
|
+
window.addEventListener("DOMContentLoaded", () => {
|
15
15
|
|
16
16
|
const commonText = document.querySelector("#body_common")
|
17
17
|
|
@@ -133,4 +133,4 @@
|
|
133
133
|
});
|
134
134
|
|
135
135
|
})
|
136
|
-
|
136
|
+
<% end %>
|
@@ -4,8 +4,8 @@
|
|
4
4
|
|
5
5
|
<div id="match"> </div>
|
6
6
|
|
7
|
-
|
8
|
-
window.addEventListener("
|
7
|
+
<%= javascript_tag do %>
|
8
|
+
window.addEventListener("DOMContentLoaded", () => {
|
9
9
|
|
10
10
|
const useState = (defaultValue) => {
|
11
11
|
let value = defaultValue;
|
@@ -48,4 +48,4 @@
|
|
48
48
|
|
49
49
|
}
|
50
50
|
})
|
51
|
-
|
51
|
+
<% end %>
|
@@ -32,8 +32,8 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
-
|
36
|
-
window.addEventListener("
|
35
|
+
<%= javascript_tag do %>
|
36
|
+
window.addEventListener("DOMContentLoaded", () => {
|
37
37
|
|
38
38
|
|
39
39
|
// variables for the passphrase kits you are targeting
|
@@ -320,4 +320,4 @@
|
|
320
320
|
|
321
321
|
|
322
322
|
})
|
323
|
-
|
323
|
+
<% end %>
|
@@ -7,8 +7,8 @@
|
|
7
7
|
<%= pb_rails("text_input", props: { label: "Passphrase Strength", value: "0", disabled: true, id: "calc_strength_change" }) %>
|
8
8
|
|
9
9
|
|
10
|
-
|
11
|
-
window.addEventListener("
|
10
|
+
<%= javascript_tag do %>
|
11
|
+
window.addEventListener("DOMContentLoaded", () => {
|
12
12
|
|
13
13
|
// variables for the kits you are targeting
|
14
14
|
const passphrase = document.querySelector(".passphrase_change").querySelector("input")
|
@@ -120,4 +120,4 @@
|
|
120
120
|
});
|
121
121
|
|
122
122
|
})
|
123
|
-
|
123
|
+
<% end %>
|
@@ -110,41 +110,18 @@ 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
|
114
113
|
const [inputValue, setInputValue] = useState(value)
|
115
114
|
const [error, setError] = useState(props.error)
|
116
115
|
const [dropDownIsOpen, setDropDownIsOpen] = useState(false)
|
117
116
|
const [selectedData, setSelectedData] = useState()
|
118
117
|
const [hasTyped, setHasTyped] = useState(false)
|
119
118
|
|
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
|
-
|
138
119
|
useEffect(() => {
|
139
|
-
|
140
|
-
if (hasError) {
|
120
|
+
if ((error ?? '').length > 0) {
|
141
121
|
onValidate(false)
|
142
122
|
} else {
|
143
123
|
onValidate(true)
|
144
124
|
}
|
145
|
-
|
146
|
-
// Update validation state whenever error changes
|
147
|
-
updateValidationState(hasError)
|
148
125
|
}, [error, onValidate])
|
149
126
|
|
150
127
|
/*
|
@@ -158,10 +135,6 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
158
135
|
setInputValue("")
|
159
136
|
setError("")
|
160
137
|
setHasTyped(false)
|
161
|
-
// Only clear validation state if field was required
|
162
|
-
if (required) {
|
163
|
-
updateValidationState(false)
|
164
|
-
}
|
165
138
|
},
|
166
139
|
inputNode() {
|
167
140
|
return inputRef.current
|
@@ -239,21 +212,10 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
239
212
|
}
|
240
213
|
}
|
241
214
|
|
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
|
-
}
|
250
215
|
|
251
216
|
const validateErrors = () => {
|
252
217
|
if (!hasTyped && !error) return
|
253
218
|
|
254
|
-
// First check if required field is empty
|
255
|
-
if (validateRequiredField()) return
|
256
|
-
|
257
219
|
if (itiRef.current) isValid(itiRef.current.isValidNumber())
|
258
220
|
if (validateOnlyNumbers(itiRef.current)) return
|
259
221
|
if (validateTooLongNumber(itiRef.current)) return
|
@@ -348,10 +310,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>
|
|
348
310
|
value: inputValue
|
349
311
|
}
|
350
312
|
|
351
|
-
let wrapperProps: Record<string, unknown> = {
|
352
|
-
className: classes,
|
353
|
-
ref: wrapperRef // Add ref to wrapper
|
354
|
-
}
|
313
|
+
let wrapperProps: Record<string, unknown> = { className: classes }
|
355
314
|
|
356
315
|
if (!isEmpty(aria)) textInputProps = {...textInputProps, ...ariaProps}
|
357
316
|
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-
|
17
|
-
.find(element => element.getAttribute('data-
|
16
|
+
const editorContainer = [...document.querySelectorAll('[data-react-props]')]
|
17
|
+
.find(element => element.getAttribute('data-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,13 +53,10 @@ $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;
|
57
56
|
&::before {
|
58
|
-
|
59
|
-
@include section_separator_vertical(false);
|
57
|
+
display: none;
|
60
58
|
}
|
61
59
|
&::after {
|
62
|
-
flex: 1;
|
63
60
|
@include section_separator_vertical(false);
|
64
61
|
}
|
65
62
|
}
|
@@ -90,7 +87,7 @@ $section_colors_dark: (
|
|
90
87
|
background: none;
|
91
88
|
}
|
92
89
|
&.pb_section_separator_vertical {
|
93
|
-
&::
|
90
|
+
&::after {
|
94
91
|
border: 1px dashed $color_value;
|
95
92
|
background: none;
|
96
93
|
}
|
@@ -109,7 +106,7 @@ $section_colors_dark: (
|
|
109
106
|
}
|
110
107
|
|
111
108
|
&.pb_section_separator_vertical {
|
112
|
-
&::
|
109
|
+
&::after {
|
113
110
|
@include section_separator_vertical(true);
|
114
111
|
}
|
115
112
|
}
|
@@ -118,11 +115,6 @@ $section_colors_dark: (
|
|
118
115
|
&::before, &::after {
|
119
116
|
@include section_separator_dashed(true);
|
120
117
|
}
|
121
|
-
&.pb_section_separator_vertical {
|
122
|
-
&::before, &::after {
|
123
|
-
@include section_separator_dashed(true);
|
124
|
-
}
|
125
|
-
}
|
126
118
|
}
|
127
119
|
}
|
128
120
|
|
@@ -134,7 +126,7 @@ $section_colors_dark: (
|
|
134
126
|
}
|
135
127
|
|
136
128
|
&.pb_section_separator_vertical {
|
137
|
-
&::
|
129
|
+
&::after {
|
138
130
|
@include section_separator_vertical(false);
|
139
131
|
background: $color_value;
|
140
132
|
}
|
@@ -146,7 +138,7 @@ $section_colors_dark: (
|
|
146
138
|
background: none;
|
147
139
|
}
|
148
140
|
&.pb_section_separator_vertical {
|
149
|
-
&::
|
141
|
+
&::after {
|
150
142
|
border: 1px dashed $color_value;
|
151
143
|
background: none;
|
152
144
|
}
|
@@ -11,27 +11,4 @@
|
|
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 %>
|
37
14
|
<% end %>
|
@@ -2,25 +2,8 @@ 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'
|
7
5
|
|
8
|
-
const
|
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 = (
|
6
|
+
const children = (
|
24
7
|
<Card
|
25
8
|
borderRadius="rounded"
|
26
9
|
justifyContent="center"
|
@@ -37,33 +20,12 @@ const childrenVertical = (
|
|
37
20
|
|
38
21
|
const SectionSeparatorChildren = (props) => {
|
39
22
|
return (
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
-
|
23
|
+
<SectionSeparator
|
24
|
+
{...props}
|
25
|
+
lineStyle='dashed'
|
26
|
+
>
|
27
|
+
{children}
|
28
|
+
</SectionSeparator>
|
67
29
|
)
|
68
30
|
}
|
69
31
|
|
@@ -7,10 +7,7 @@
|
|
7
7
|
<% end %>
|
8
8
|
<% end %>
|
9
9
|
<% if object.orientation === 'vertical' %>
|
10
|
-
|
11
|
-
<%= content %>
|
12
|
-
<% elsif object.text %>
|
13
|
-
<span><%= pb_rails("caption", props: { text: object.text }) %></span>
|
10
|
+
<%= pb_rails("flex", props: { orientation: "column"}) do %>
|
14
11
|
<% end %>
|
15
12
|
<%end%>
|
16
13
|
<% end %>
|
@@ -18,11 +18,9 @@ type TimestampProps = {
|
|
18
18
|
timezone: string,
|
19
19
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
20
20
|
id?: string,
|
21
|
-
showCurrentYear?: boolean,
|
22
21
|
showDate?: boolean,
|
23
22
|
showUser?: boolean,
|
24
23
|
hideUpdated?: boolean,
|
25
|
-
showTime?: boolean,
|
26
24
|
showTimezone?: boolean,
|
27
25
|
unstyled?: boolean,
|
28
26
|
variant?: "default" | "elapsed" | "updated"
|
@@ -39,11 +37,9 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
39
37
|
text,
|
40
38
|
timezone,
|
41
39
|
timestamp,
|
42
|
-
showCurrentYear = false,
|
43
40
|
showDate = true,
|
44
41
|
showUser = false,
|
45
42
|
hideUpdated = false,
|
46
|
-
showTime = true,
|
47
43
|
showTimezone = false,
|
48
44
|
unstyled = false,
|
49
45
|
variant = 'default',
|
@@ -59,6 +55,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
59
55
|
)
|
60
56
|
|
61
57
|
const currentYear = new Date().getFullYear().toString()
|
58
|
+
const dateDisplay = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
|
62
59
|
const shouldShowUser = showUser == true && text.length > 0
|
63
60
|
const shouldShowTimezone = showTimezone == true && timezone.length > 0
|
64
61
|
const updatedText = hideUpdated ? "" : "Last updated"
|
@@ -73,26 +70,16 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
73
70
|
return timeDisplay
|
74
71
|
}
|
75
72
|
|
76
|
-
const baseDateDisplay = () => {
|
77
|
-
let display = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
|
78
|
-
if (DateTime.toYear(timestamp, timezone).toString() !== currentYear || showCurrentYear) {
|
79
|
-
display = `${display}, ${DateTime.toYear(timestamp, timezone)}`
|
80
|
-
}
|
81
|
-
return display
|
82
|
-
}
|
83
|
-
|
84
73
|
const fullDateDisplay = () => {
|
85
|
-
|
86
|
-
|
74
|
+
let fullDisplay = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
|
75
|
+
if (DateTime.toYear(timestamp, timezone).toString() !== currentYear) {
|
76
|
+
fullDisplay = `${fullDisplay}, ${DateTime.toYear(timestamp, timezone)}`
|
77
|
+
}
|
78
|
+
return `${fullDisplay} ${' \u00b7 '} ${fullTimeDisplay()}`
|
87
79
|
}
|
88
80
|
|
89
81
|
const formatUpdatedString = () => {
|
90
|
-
|
91
|
-
if (shouldShowUser) finalUpdatedString.push(`by ${text}`)
|
92
|
-
if (showDate && !showTime) finalUpdatedString.push(`on ${baseDateDisplay()}`)
|
93
|
-
if (showDate && showTime) finalUpdatedString.push(`on ${baseDateDisplay()} at ${timeDisplay}`)
|
94
|
-
if (showTime && !showDate) finalUpdatedString.push(`at ${timeDisplay}`)
|
95
|
-
return `Last updated ${finalUpdatedString.join(' ')}`
|
82
|
+
return `Last updated ${userDisplay} on ${dateDisplay} at ${timeDisplay}`
|
96
83
|
}
|
97
84
|
|
98
85
|
const formatElapsedString = () => {
|
@@ -106,10 +93,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
106
93
|
case 'elapsed':
|
107
94
|
return formatElapsedString()
|
108
95
|
default:
|
109
|
-
|
110
|
-
if (showDate && !showTime) return baseDateDisplay()
|
111
|
-
if (!showDate && showTime) return fullTimeDisplay()
|
112
|
-
return text
|
96
|
+
return showDate ? timestamp ? fullDateDisplay() : text : fullTimeDisplay()
|
113
97
|
}
|
114
98
|
}
|
115
99
|
|
@@ -0,0 +1 @@
|
|
1
|
+
Use these only to display status updates in areas that has a lot of data.
|
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
<%= pb_rails("timestamp", props: {
|
10
10
|
timestamp: DateTime.now,
|
11
|
+
show_date: true,
|
11
12
|
align: "left"
|
12
13
|
}) %>
|
13
14
|
|
@@ -15,6 +16,7 @@
|
|
15
16
|
|
16
17
|
<%= pb_rails("timestamp", props: {
|
17
18
|
timestamp: DateTime.now + 4.years,
|
19
|
+
show_date: true,
|
18
20
|
align: "left"
|
19
21
|
}) %>
|
20
22
|
|
@@ -22,6 +24,7 @@
|
|
22
24
|
|
23
25
|
<%= pb_rails("timestamp", props: {
|
24
26
|
timestamp: DateTime.now - 1.year,
|
27
|
+
show_date: true,
|
25
28
|
align: "left"
|
26
29
|
}) %>
|
27
30
|
|
@@ -37,6 +40,7 @@
|
|
37
40
|
|
38
41
|
<%= pb_rails("timestamp", props: {
|
39
42
|
timestamp: DateTime.now,
|
43
|
+
show_date: true,
|
40
44
|
align: "center"
|
41
45
|
}) %>
|
42
46
|
|
@@ -44,6 +48,7 @@
|
|
44
48
|
|
45
49
|
<%= pb_rails("timestamp", props: {
|
46
50
|
timestamp: DateTime.now + 4.years,
|
51
|
+
show_date: true,
|
47
52
|
align: "center"
|
48
53
|
}) %>
|
49
54
|
|
@@ -51,6 +56,7 @@
|
|
51
56
|
|
52
57
|
<%= pb_rails("timestamp", props: {
|
53
58
|
timestamp: DateTime.now - 1.year,
|
59
|
+
show_date: true,
|
54
60
|
align: "center"
|
55
61
|
}) %>
|
56
62
|
|
@@ -58,6 +64,7 @@
|
|
58
64
|
|
59
65
|
<%= pb_rails("timestamp", props: {
|
60
66
|
timestamp: DateTime.now,
|
67
|
+
show_date: false,
|
61
68
|
align: "right"
|
62
69
|
}) %>
|
63
70
|
|
@@ -65,6 +72,7 @@
|
|
65
72
|
|
66
73
|
<%= pb_rails("timestamp", props: {
|
67
74
|
timestamp: DateTime.now,
|
75
|
+
show_date: true,
|
68
76
|
align: "right"
|
69
77
|
}) %>
|
70
78
|
|
@@ -72,6 +80,7 @@
|
|
72
80
|
|
73
81
|
<%= pb_rails("timestamp", props: {
|
74
82
|
timestamp: DateTime.now + 4.years,
|
83
|
+
show_date: true,
|
75
84
|
align: "right"
|
76
85
|
}) %>
|
77
86
|
|
@@ -79,5 +88,6 @@
|
|
79
88
|
|
80
89
|
<%= pb_rails("timestamp", props: {
|
81
90
|
timestamp: DateTime.now - 1.year,
|
91
|
+
show_date: true,
|
82
92
|
align: "right"
|
83
93
|
}) %>
|