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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3ed0631c51b54669ffc7faa87720d44235290b760f64df26d8cad1af3e527d5
|
4
|
+
data.tar.gz: 06da8419d842a780b2e5567affe683a5c28e227400a5231f82bdc6d920411186
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ac52928a5ea5c597a37469b85f6509cbd26236e7e5195b9636d8409cfc7ad513d22ddb4a7889f47bf12d7d1fca748704fcd72007b89acef5e66a93cf4681db4
|
7
|
+
data.tar.gz: faa7715595570f694456f0d9a19430c3ff0b7cbdf66ab1f63e8a843110541e1da10fb22149e004069bc82dd8a27a7469f279e9fd41957befdcca61d3f21b8038
|
@@ -1,6 +1,5 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
|
4
3
|
@import 'pb_advanced_table/advanced_table';
|
5
4
|
@import 'pb_avatar/avatar';
|
6
5
|
@import 'pb_background/background';
|
@@ -110,7 +109,6 @@
|
|
110
109
|
@import 'pb_weekday_stacked/weekday_stacked';
|
111
110
|
@import 'pb_empty_state/empty_state';
|
112
111
|
@import 'pb_pb_bar_graph/pb_bar_graph';
|
113
|
-
@import 'pb_pb_circle_chart/pb_circle_chart';
|
114
112
|
@import 'utilities/mixins';
|
115
113
|
@import 'utilities/spacing';
|
116
114
|
@import 'utilities/cursor';
|
@@ -30,7 +30,6 @@ const TableCellRenderer = ({
|
|
30
30
|
columnPinning,
|
31
31
|
customRowStyle,
|
32
32
|
columnDefinitions,
|
33
|
-
isMultiHeaderColumn = false,
|
34
33
|
}: {
|
35
34
|
row: Row<GenericObject>
|
36
35
|
collapsibleTrail?: boolean
|
@@ -39,18 +38,12 @@ const TableCellRenderer = ({
|
|
39
38
|
columnPinning: { left: string[] }
|
40
39
|
customRowStyle?: GenericObject
|
41
40
|
columnDefinitions?: {[key:string]:any}[]
|
42
|
-
isMultiHeaderColumn?: boolean
|
43
41
|
}) => {
|
44
42
|
return (
|
45
43
|
<>
|
46
44
|
{row.getVisibleCells().map((cell: Cell<GenericObject, unknown>, i: number) => {
|
47
45
|
const isPinnedLeft = columnPinning.left.includes(cell.column.id);
|
48
|
-
// Add a border to the right of each group of columns for multi-header column tables
|
49
46
|
const isLastCell = (() => {
|
50
|
-
if (!isMultiHeaderColumn) {
|
51
|
-
return false;
|
52
|
-
}
|
53
|
-
|
54
47
|
const parent = cell.column.parent;
|
55
48
|
if (!parent) {
|
56
49
|
const last = row.getVisibleCells().at(-1);
|
@@ -140,9 +133,6 @@ export const RegularTableView = ({
|
|
140
133
|
|
141
134
|
const columnPinning = table.getState().columnPinning || { left: [] };
|
142
135
|
const columnDefinitions = table.options.meta?.columnDefinitions || [];
|
143
|
-
const isMultiHeaderColumn = columnDefinitions.some(
|
144
|
-
(obj: Record<string, unknown>) => "columns" in obj
|
145
|
-
);
|
146
136
|
|
147
137
|
// Row pinning
|
148
138
|
function PinnedRow({ row }: { row: Row<any> }) {
|
@@ -168,7 +158,6 @@ export const RegularTableView = ({
|
|
168
158
|
columnDefinitions={columnDefinitions}
|
169
159
|
columnPinning={columnPinning}
|
170
160
|
customRowStyle={customRowStyle}
|
171
|
-
isMultiHeaderColumn={isMultiHeaderColumn}
|
172
161
|
loading={loading}
|
173
162
|
row={row}
|
174
163
|
stickyLeftColumn={stickyLeftColumn}
|
@@ -232,7 +221,6 @@ export const RegularTableView = ({
|
|
232
221
|
columnDefinitions={columnDefinitions}
|
233
222
|
columnPinning={columnPinning}
|
234
223
|
customRowStyle={customRowStyle}
|
235
|
-
isMultiHeaderColumn={isMultiHeaderColumn}
|
236
224
|
loading={loading}
|
237
225
|
row={row}
|
238
226
|
stickyLeftColumn={stickyLeftColumn}
|
@@ -104,7 +104,7 @@ export const VirtualizedTableView = ({
|
|
104
104
|
// Create debounced version of the width measurement function
|
105
105
|
const handleResize = debounce(() => {
|
106
106
|
setColumnWidths(getHeaderCellWidths());
|
107
|
-
},
|
107
|
+
}, 100);
|
108
108
|
|
109
109
|
// Add the event listener
|
110
110
|
window.addEventListener('resize', handleResize);
|
@@ -249,10 +249,8 @@
|
|
249
249
|
}
|
250
250
|
|
251
251
|
.pb_advanced_table_body {
|
252
|
-
|
253
|
-
|
254
|
-
border-right: 1px solid $border_light !important;
|
255
|
-
}
|
252
|
+
.last-cell {
|
253
|
+
border-right: 1px solid $border_light !important;
|
256
254
|
}
|
257
255
|
tr td:first-child {
|
258
256
|
padding-left: 8px !important;
|
@@ -703,14 +701,6 @@
|
|
703
701
|
}
|
704
702
|
}
|
705
703
|
}
|
706
|
-
|
707
|
-
.pb_advanced_table_header {
|
708
|
-
> tr {
|
709
|
-
.last-header-cell:last-of-type {
|
710
|
-
border-right-width: 0 !important;
|
711
|
-
}
|
712
|
-
}
|
713
|
-
}
|
714
704
|
}
|
715
705
|
}
|
716
706
|
|
@@ -985,14 +975,14 @@
|
|
985
975
|
// Firefox-specific fix for last-header-cell and last-cell vertical borders
|
986
976
|
@-moz-document url-prefix() {
|
987
977
|
.pb_advanced_table_header {
|
988
|
-
.last-header-cell
|
978
|
+
.last-header-cell {
|
989
979
|
border-right: none !important;
|
990
980
|
box-shadow: 1px 0 0 0 $border_light !important;
|
991
981
|
}
|
992
982
|
}
|
993
983
|
|
994
984
|
.pb_advanced_table_body {
|
995
|
-
.last-cell
|
985
|
+
.last-cell {
|
996
986
|
border-right: none !important;
|
997
987
|
box-shadow: 1px 0 0 0 $border_light !important;
|
998
988
|
}
|
@@ -1001,14 +991,14 @@
|
|
1001
991
|
// Dark mode Firefox fixes
|
1002
992
|
&.dark {
|
1003
993
|
.pb_advanced_table_header {
|
1004
|
-
.last-header-cell
|
994
|
+
.last-header-cell {
|
1005
995
|
border-right: none !important;
|
1006
996
|
box-shadow: 1px 0 0 0 $border_dark !important;
|
1007
997
|
}
|
1008
998
|
}
|
1009
999
|
|
1010
1000
|
.pb_advanced_table_body {
|
1011
|
-
.last-cell
|
1001
|
+
.last-cell {
|
1012
1002
|
border-right: none !important;
|
1013
1003
|
box-shadow: 1px 0 0 0 $border_dark !important;
|
1014
1004
|
}
|
@@ -1021,62 +1011,18 @@
|
|
1021
1011
|
.pb-advanced-table-popover-option:hover {
|
1022
1012
|
background-color: $bg_light;
|
1023
1013
|
}
|
1024
|
-
|
1025
1014
|
// Removes borders when Wrapped inside the Card Kit
|
1026
|
-
.pb_card_kit > .pb_advanced_table
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
box-shadow: none !important; // prevents double up of borders on Firefox when in Card Kit
|
1015
|
+
.pb_card_kit > .pb_advanced_table .pb_advanced_table_body .last-cell,
|
1016
|
+
.pb_card_kit > .pb_advanced_table .pb_advanced_table_header .last-header-cell,
|
1017
|
+
.pb_card_kit > .pb_advanced_table .pb_advanced_table_body tr td:last-child,
|
1018
|
+
.pb_card_kit > .pb_advanced_table .pb_advanced_table_header tr th:last-child {
|
1031
1019
|
border-right: none !important;
|
1032
|
-
}
|
1033
|
-
|
1034
|
-
// Without vertical border, remove all last-cell borders
|
1035
|
-
// Specifically for header to prevent thicker borders in firefox.
|
1036
|
-
.pb_table:not(.vertical-border) {
|
1037
|
-
.pb_advanced_table_header .last-header-cell {
|
1038
|
-
box-shadow: none !important;
|
1039
|
-
}
|
1040
|
-
}
|
1041
|
-
// Firefox fix
|
1042
|
-
@-moz-document url-prefix() {
|
1043
|
-
.pb_advanced_table_header {
|
1044
|
-
.last-header-cell {
|
1045
|
-
box-shadow: 1px 0 0 0 $border_light !important;
|
1046
|
-
}
|
1047
|
-
}
|
1048
|
-
}
|
1049
|
-
|
1050
|
-
// For tables WITH vertical borders, only remove border from actual last column
|
1051
|
-
.pb_table.vertical-border {
|
1052
|
-
.pb_advanced_table_body .last-cell:not(:last-child),
|
1053
|
-
.pb_advanced_table_header .last-header-cell:not(:last-child) {
|
1054
|
-
box-shadow: none !important;
|
1055
|
-
border-right: 1px solid $border_light !important;
|
1056
|
-
}
|
1057
|
-
|
1058
|
-
// Dark mode
|
1059
|
-
&.dark {
|
1060
|
-
.pb_advanced_table_body .last-cell:not(:last-child),
|
1061
|
-
.pb_advanced_table_header .last-header-cell:not(:last-child) {
|
1062
|
-
border-right: 1px solid $border_dark !important;
|
1063
|
-
}
|
1064
|
-
}
|
1065
|
-
}
|
1066
|
-
|
1067
|
-
// Support column group border colors
|
1068
|
-
&.pb_advanced_table[class*="column-group-border-"] {
|
1069
|
-
.pb_advanced_table_body .last-cell:not(:last-child),
|
1070
|
-
.pb_advanced_table_header .last-header-cell:not(:last-child) {
|
1071
|
-
border-right: 1px solid var(--column-border-color) !important;
|
1072
|
-
}
|
1073
|
-
}
|
1074
1020
|
}
|
1075
1021
|
|
1076
|
-
//
|
1077
|
-
.pb_card_kit > .pb_advanced_table tr:last-child,
|
1022
|
+
// Removes borders when Wrapped inside the Card Kit
|
1023
|
+
.pb_card_kit > .pb_advanced_table tr:last-child,
|
1078
1024
|
.pb_card_kit > .pb_advanced_table .last-row-cell {
|
1079
1025
|
td {
|
1080
|
-
border-bottom: none !important;
|
1026
|
+
border-bottom: none !important;
|
1081
1027
|
}
|
1082
1028
|
}
|
@@ -20,7 +20,7 @@
|
|
20
20
|
// Dark mode
|
21
21
|
.pb_card_kit.dark {
|
22
22
|
@include pb_card_dark;
|
23
|
-
|
23
|
+
|
24
24
|
&.pb_card_kit_selected {
|
25
25
|
@include pb_card_selected_dark;
|
26
26
|
}
|
@@ -33,8 +33,7 @@
|
|
33
33
|
|
34
34
|
// Highlight styles
|
35
35
|
.pb_card_kit_highlight_top,
|
36
|
-
.pb_card_kit_highlight_side
|
37
|
-
.pb_card_kit_highlight_right_side {
|
36
|
+
.pb_card_kit_highlight_side {
|
38
37
|
overflow: hidden;
|
39
38
|
}
|
40
39
|
|
@@ -53,20 +52,13 @@
|
|
53
52
|
}
|
54
53
|
}
|
55
54
|
|
56
|
-
// Highlight side variants
|
55
|
+
// Highlight side variants
|
57
56
|
@each $color_name, $color_value in $pb_card_highlight_colors {
|
58
57
|
.pb_card_kit_highlight_side.pb_card_kit_highlight_#{$color_name}::before {
|
59
58
|
@include pb_card_highlight($pb_card_highlight_size, 100%, $color_value);
|
60
59
|
}
|
61
60
|
}
|
62
61
|
|
63
|
-
// Highlight side right variants
|
64
|
-
@each $color_name, $color_value in $pb_card_highlight_colors {
|
65
|
-
.pb_card_kit_highlight_right_side.pb_card_kit_highlight_#{$color_name}::before {
|
66
|
-
@include pb_card_right_highlight($pb_card_highlight_size, 100%, $color_value);
|
67
|
-
}
|
68
|
-
}
|
69
|
-
|
70
62
|
// Card Header
|
71
63
|
.pb_card_header_kit {
|
72
64
|
flex-grow: 0;
|
@@ -76,7 +68,7 @@
|
|
76
68
|
padding: $space_sm;
|
77
69
|
border: 0;
|
78
70
|
border-radius: $pb_card_header_border_radius $pb_card_header_border_radius 0px 0px;
|
79
|
-
|
71
|
+
|
80
72
|
// Inherit border radius from parent card
|
81
73
|
.pb_card_kit_border_radius_xs & {
|
82
74
|
border-radius: $border_radius_xs $border_radius_xs 0px 0px;
|
@@ -26,7 +26,7 @@ type CardPropTypes = {
|
|
26
26
|
dragHandle?: boolean,
|
27
27
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
28
28
|
highlight?: {
|
29
|
-
position?: "side" | "
|
29
|
+
position?: "side" | "top",
|
30
30
|
color?: string,
|
31
31
|
},
|
32
32
|
id?: string,
|
@@ -56,7 +56,7 @@ const Header = (props: CardHeaderProps) => {
|
|
56
56
|
const { children, className, headerColor = 'category_1', headerColorStriped = false } = props
|
57
57
|
const headerColorCSS = `pb_card_header_kit_${headerColor}`
|
58
58
|
const headerStripedCSS = headerColorStriped ? `pb_card_header_kit_${headerColor}_striped` : ''
|
59
|
-
|
59
|
+
|
60
60
|
const headerCSS = classnames(
|
61
61
|
'pb_card_header_kit',
|
62
62
|
headerColorCSS,
|
@@ -108,7 +108,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
|
|
108
108
|
const borderRadiusCSS = borderRadius !== 'md' ? `pb_card_kit_border_radius_${borderRadius}` : ''
|
109
109
|
const highlightPositionCSS = highlight.position ? `pb_card_kit_highlight_${highlight.position}` : ''
|
110
110
|
const highlightColorCSS = highlight.color ? `pb_card_kit_highlight_${highlight.color}` : ''
|
111
|
-
|
111
|
+
|
112
112
|
const cardCss = classnames(
|
113
113
|
'pb_card_kit', // Base class
|
114
114
|
selectedCSS,
|
@@ -87,16 +87,6 @@ $pb_card_header_colors: map-merge(map-merge(map-merge($product_colors, $addition
|
|
87
87
|
background: $background;
|
88
88
|
}
|
89
89
|
|
90
|
-
@mixin pb_card_right_highlight($width, $height, $background){
|
91
|
-
content: "";
|
92
|
-
position: absolute;
|
93
|
-
top: 0;
|
94
|
-
right: 0;
|
95
|
-
width: $width;
|
96
|
-
height: $height;
|
97
|
-
background: $background;
|
98
|
-
}
|
99
|
-
|
100
90
|
@mixin pb_card_header_color($header_color) {
|
101
91
|
background: $header_color;
|
102
92
|
}
|
@@ -4,9 +4,6 @@
|
|
4
4
|
<%= pb_rails("card", props: {highlight: {position: "top", color:"warning"}, margin_bottom: "sm"}) do %>
|
5
5
|
Top Position & Warning Color
|
6
6
|
<% end %>
|
7
|
-
<%= pb_rails("card", props: {highlight: {position: "right_side", color:"product_5_highlight"}, margin_bottom: "sm"}) do %>
|
8
|
-
Right Side Position & Product 5 Highlight Color
|
9
|
-
<% end %>
|
10
7
|
<%= pb_rails("card", props: {highlight: {position: "side", color:"category_2"}, margin_bottom: "sm"}) do %>
|
11
8
|
Side Position & Category 2 Color
|
12
9
|
<% end %>
|
@@ -21,14 +21,6 @@ const CardHighlight = (props) => {
|
|
21
21
|
{'Top Position & Warning Color'}
|
22
22
|
</Card>
|
23
23
|
|
24
|
-
<Card
|
25
|
-
{...props}
|
26
|
-
highlight={{ position: 'right_side', color: 'product_5_highlight' }}
|
27
|
-
marginBottom="sm"
|
28
|
-
>
|
29
|
-
{'Right Side Position & Product 5 Highlight Color'}
|
30
|
-
</Card>
|
31
|
-
|
32
24
|
<Card
|
33
25
|
{...props}
|
34
26
|
highlight={{ position: 'side', color: 'category_2' }}
|
@@ -17,7 +17,6 @@ const contactTypeMap: { [key: string]: string } = {
|
|
17
17
|
'work': 'phone-office',
|
18
18
|
'work-cell': 'phone-laptop',
|
19
19
|
'wrong-phone': 'phone-slash',
|
20
|
-
'international': 'globe',
|
21
20
|
}
|
22
21
|
|
23
22
|
const envelopeIcon = getAllIcons()["envelope"].icon as unknown as { [key: string]: SVGElement }
|
@@ -25,10 +24,6 @@ const envelopeIcon = getAllIcons()["envelope"].icon as unknown as { [key: string
|
|
25
24
|
const formatContact = (contactString: string, contactType: string) => {
|
26
25
|
if (contactType === 'email') return contactString
|
27
26
|
|
28
|
-
// International phone numbers are unformatted
|
29
|
-
if (contactType === 'international') return contactString
|
30
|
-
|
31
|
-
// Format US numbers
|
32
27
|
const cleaned = contactString.replace(/\D/g, '')
|
33
28
|
const phoneNumber = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/)
|
34
29
|
|
@@ -29,8 +29,6 @@ module Playbook
|
|
29
29
|
"phone-slash"
|
30
30
|
when "extension"
|
31
31
|
"phone-plus"
|
32
|
-
when "international"
|
33
|
-
"globe"
|
34
32
|
else # "unknown" || "other"
|
35
33
|
"phone"
|
36
34
|
end
|
@@ -41,8 +39,6 @@ module Playbook
|
|
41
39
|
contact_value
|
42
40
|
elsif contact_type == "extension" && contact_value.match(/^\d{4}$/)
|
43
41
|
contact_value
|
44
|
-
elsif contact_type == "international"
|
45
|
-
contact_value
|
46
42
|
else
|
47
43
|
number_to_phone(formatted_value, area_code: true)
|
48
44
|
end
|
@@ -66,12 +66,6 @@ test('returns correct icon', () => {
|
|
66
66
|
contactValue="1234"
|
67
67
|
data={{ testid: 'test-extension' }}
|
68
68
|
/>
|
69
|
-
<Contact
|
70
|
-
contactDetail="International"
|
71
|
-
contactType="international"
|
72
|
-
contactValue="+44 20 7946 0958"
|
73
|
-
data={{ testid: 'test-international' }}
|
74
|
-
/>
|
75
69
|
<Contact
|
76
70
|
contactDetail=""
|
77
71
|
contactType=""
|
@@ -89,11 +83,10 @@ test('returns correct icon', () => {
|
|
89
83
|
expect(screen.getByTestId('test-wrong-phone').querySelector('.pb_custom_icon')).toBeInTheDocument()
|
90
84
|
expect(screen.getByTestId('test-wrong-type').querySelector('.pb_custom_icon')).toBeInTheDocument()
|
91
85
|
expect(screen.getByTestId('test-extension').querySelector('.pb_custom_icon')).toBeInTheDocument()
|
92
|
-
expect(screen.getByTestId('test-international').querySelector('.pb_custom_icon')).toBeInTheDocument()
|
93
86
|
expect(screen.getByTestId('test-empty').querySelector('.pb_custom_icon')).toBeInTheDocument()
|
94
87
|
})
|
95
88
|
|
96
|
-
test("not compliant values return null in
|
89
|
+
test("not compliant values return null in phone related contact types", () => {
|
97
90
|
const notCompliantValues = [
|
98
91
|
"349-185-998223",
|
99
92
|
"349-1858",
|
@@ -136,16 +129,3 @@ test("not compliant values return null in US phone related contact types", () =>
|
|
136
129
|
)
|
137
130
|
})
|
138
131
|
})
|
139
|
-
|
140
|
-
test('international contact type preserves original format', () => {
|
141
|
-
render(
|
142
|
-
<Contact
|
143
|
-
contactType="international"
|
144
|
-
contactValue="+44 20 7946 0958"
|
145
|
-
data={{ testid: 'test-international-format' }}
|
146
|
-
/>
|
147
|
-
)
|
148
|
-
|
149
|
-
const kit = screen.getByTestId('test-international-format')
|
150
|
-
expect(kit).toHaveTextContent('+44 20 7946 0958')
|
151
|
-
})
|
@@ -13,7 +13,7 @@
|
|
13
13
|
}) %>
|
14
14
|
|
15
15
|
<%= pb_rails("contact", props: {
|
16
|
-
contact_type: "
|
16
|
+
contact_type: "wrong number",
|
17
17
|
contact_value: "3245627482",
|
18
18
|
}) %>
|
19
19
|
|
@@ -21,18 +21,3 @@
|
|
21
21
|
contact_type: "work-cell",
|
22
22
|
contact_value: "349-185-9988",
|
23
23
|
}) %>
|
24
|
-
|
25
|
-
<%= pb_rails("contact", props: {
|
26
|
-
contact_type: "wrong-phone",
|
27
|
-
contact_value: "2124396666",
|
28
|
-
}) %>
|
29
|
-
|
30
|
-
<%= pb_rails("contact", props: {
|
31
|
-
contact_type: "extension",
|
32
|
-
contact_value: "1233",
|
33
|
-
}) %>
|
34
|
-
|
35
|
-
<%= pb_rails("contact", props: {
|
36
|
-
contact_type: "international",
|
37
|
-
contact_value: "+44 7700 900461",
|
38
|
-
}) %>
|
@@ -28,21 +28,6 @@ const ContactDefault = (props) => {
|
|
28
28
|
contactValue="3245627482"
|
29
29
|
{...props}
|
30
30
|
/>
|
31
|
-
<Contact
|
32
|
-
contactType="wrong-phone"
|
33
|
-
contactValue="2124396666"
|
34
|
-
{...props}
|
35
|
-
/>
|
36
|
-
<Contact
|
37
|
-
contactType='extension'
|
38
|
-
contactValue="1234"
|
39
|
-
{...props}
|
40
|
-
/>
|
41
|
-
<Contact
|
42
|
-
contactType="international"
|
43
|
-
contactValue="+44 7700 900461"
|
44
|
-
{...props}
|
45
|
-
/>
|
46
31
|
</div>
|
47
32
|
)
|
48
33
|
}
|
@@ -90,7 +90,7 @@
|
|
90
90
|
<%= pb_form_with(scope: :example, method: :get, url: "", validate: true) do |form| %>
|
91
91
|
<%= form.typeahead :example_typeahead_validation, props: { data: { typeahead_example2: true, user: {} }, label: true, placeholder: "Search for a user", required: true, validation: { message: "Please select a user." } } %>
|
92
92
|
<%= form.text_field :example_text_field_validation, props: { label: true, required: true } %>
|
93
|
-
<%= form.phone_number_field :example_phone_number_field_validation, props: { label: "Example phone field", hidden_inputs: true
|
93
|
+
<%= form.phone_number_field :example_phone_number_field_validation, props: { label: "Example phone field", hidden_inputs: true } %>
|
94
94
|
<%= form.email_field :example_email_field_validation, props: { label: true, required: true } %>
|
95
95
|
<%= form.number_field :example_number_field_validation, props: { label: true, required: true } %>
|
96
96
|
<%= form.search_field :example_project_number_validation, props: { label: true, required: true, validation: { pattern: "[0-9]{2}-[0-9]{5}", message: "Please enter a valid project number (example: 33-12345)." } } %>
|
@@ -2,13 +2,12 @@ import PbEnhancedElement from '../pb_enhanced_element'
|
|
2
2
|
import { debounce } from '../utilities/object'
|
3
3
|
|
4
4
|
// Kit selectors
|
5
|
-
const KIT_SELECTOR
|
6
|
-
const ERROR_MESSAGE_SELECTOR
|
5
|
+
const KIT_SELECTOR = '[class^="pb_"][class*="_kit"]'
|
6
|
+
const ERROR_MESSAGE_SELECTOR = '.pb_body_kit_negative'
|
7
7
|
|
8
8
|
// Validation selectors
|
9
|
-
const FORM_SELECTOR
|
10
|
-
const REQUIRED_FIELDS_SELECTOR
|
11
|
-
const PHONE_NUMBER_VALIDATION_ERROR_SELECTOR = '[data-pb-phone-validation-error="true"]'
|
9
|
+
const FORM_SELECTOR = 'form[data-pb-form-validation="true"]'
|
10
|
+
const REQUIRED_FIELDS_SELECTOR = 'input[required],textarea[required],select[required]'
|
12
11
|
|
13
12
|
const FIELD_EVENTS = [
|
14
13
|
'change',
|
@@ -29,14 +28,6 @@ class PbFormValidation extends PbEnhancedElement {
|
|
29
28
|
}, 250), false)
|
30
29
|
})
|
31
30
|
})
|
32
|
-
|
33
|
-
// Add event listener to check for phone number validation errors
|
34
|
-
this.element.addEventListener('submit', (event) => {
|
35
|
-
if (this.hasPhoneNumberValidationErrors()) {
|
36
|
-
event.preventDefault()
|
37
|
-
return false
|
38
|
-
}
|
39
|
-
})
|
40
31
|
}
|
41
32
|
|
42
33
|
validateFormField(event) {
|
@@ -77,12 +68,6 @@ class PbFormValidation extends PbEnhancedElement {
|
|
77
68
|
if (errorMessageContainer) errorMessageContainer.remove()
|
78
69
|
}
|
79
70
|
|
80
|
-
// Check if there are phone number input errors
|
81
|
-
hasPhoneNumberValidationErrors() {
|
82
|
-
const phoneNumberErrors = this.element.querySelectorAll(PHONE_NUMBER_VALIDATION_ERROR_SELECTOR)
|
83
|
-
return phoneNumberErrors.length > 0
|
84
|
-
}
|
85
|
-
|
86
71
|
get errorMessageContainer() {
|
87
72
|
const errorContainer = document.createElement('div')
|
88
73
|
const kitClassName = ERROR_MESSAGE_SELECTOR.replace(/\./, '')
|
@@ -140,8 +140,7 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
140
140
|
delete filteredProps?.marginLeft;
|
141
141
|
|
142
142
|
|
143
|
-
const
|
144
|
-
const Tag = isLink ? "a" : "div"
|
143
|
+
const Tag = link ? "a" : "div";
|
145
144
|
const activeClass = active === true ? "active" : "";
|
146
145
|
const highlightedBorderClass = active === true && highlighted_border === false ? "highlighted_border_none" : "";
|
147
146
|
const collapsibleTrailClass = collapsible && collapsibleTrail ? "collapsible_trail" : "";
|
@@ -201,13 +200,6 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
201
200
|
|
202
201
|
const collapsibleClasses = buildCss("collapsible_nav_wrapper", activeClass, highlightedBorderClass, collapsibleTrailClass)
|
203
202
|
|
204
|
-
const handleKeyDown = (e: React.KeyboardEvent) => {
|
205
|
-
if (!isLink && (e.key === "Enter" || e.key === " ")) {
|
206
|
-
e.preventDefault()
|
207
|
-
onClick?.()
|
208
|
-
}
|
209
|
-
}
|
210
|
-
|
211
203
|
return (
|
212
204
|
<>
|
213
205
|
{collapsible ? (
|
@@ -230,18 +222,15 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
230
222
|
{...dataProps}
|
231
223
|
{...htmlProps}
|
232
224
|
className={classes}
|
233
|
-
href={
|
225
|
+
href={link}
|
234
226
|
id={id}
|
235
|
-
|
236
|
-
tabIndex={!isLink ? 0 : undefined}
|
237
|
-
target={isLink ? target : undefined}
|
227
|
+
target={target}
|
238
228
|
>
|
239
229
|
{imageUrl && (
|
240
230
|
<div
|
241
231
|
className="pb_nav_list_item_icon_section_collapsible"
|
242
232
|
key={imageUrl}
|
243
233
|
onClick={(e) => handleIconClick(e)}
|
244
|
-
onKeyDown={!isLink ? handleKeyDown : undefined}
|
245
234
|
>
|
246
235
|
<Image className="pb_nav_img_wrapper"
|
247
236
|
url={imageUrl}
|
@@ -276,13 +265,10 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
276
265
|
{...dataProps}
|
277
266
|
{...htmlProps}
|
278
267
|
className={classes}
|
279
|
-
href={
|
268
|
+
href={link}
|
280
269
|
id={id}
|
281
270
|
onClick={onClick}
|
282
|
-
|
283
|
-
role={!isLink ? "button" : undefined}
|
284
|
-
tabIndex={!isLink ? 0 : undefined}
|
285
|
-
target={isLink ? target : undefined}
|
271
|
+
target={target}
|
286
272
|
>
|
287
273
|
{imageUrl && (
|
288
274
|
<div className="pb_nav_list_item_icon_section"
|