playbook_ui 14.15.0.pre.alpha.play1917lodashremoval2of36615 → 14.15.0.pre.rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/Context/AdvancedTableContext.tsx +3 -143
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +99 -45
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +7 -123
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +299 -153
- data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +1 -1
- data/app/pb_kits/playbook/pb_card/_card.tsx +1 -2
- data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +1 -1
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +1 -4
- data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +0 -2
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +6 -5
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +0 -2
- data/app/pb_kits/playbook/pb_drawer/_drawer.scss +3 -43
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +3 -3
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +37 -20
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.html.erb +1 -20
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +6 -6
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +0 -1
- data/app/pb_kits/playbook/pb_drawer/docs/example.yml +0 -6
- data/app/pb_kits/playbook/pb_drawer/drawer.html.erb +12 -20
- data/app/pb_kits/playbook/pb_drawer/drawer.rb +1 -49
- data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.tsx +4 -5
- data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.tsx +2 -2
- data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +1 -2
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +2 -2
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +2 -9
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +0 -4
- data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_form_pill/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +1 -7
- data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +1 -1
- data/app/pb_kits/playbook/pb_lightbox/Carousel/Slide.tsx +1 -1
- data/app/pb_kits/playbook/pb_lightbox/Carousel/Slides.tsx +1 -1
- data/app/pb_kits/playbook/pb_lightbox/Carousel/Thumbnails.tsx +1 -1
- data/app/pb_kits/playbook/pb_line_graph/_line_graph.tsx +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss +0 -7
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +3 -13
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +0 -6
- data/app/pb_kits/playbook/pb_overlay/_overlay.scss +0 -13
- data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +1 -7
- data/app/pb_kits/playbook/pb_overlay/docs/example.yml +0 -3
- data/app/pb_kits/playbook/pb_overlay/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_overlay/overlay.html.erb +3 -5
- data/app/pb_kits/playbook/pb_overlay/overlay.rb +1 -16
- data/app/pb_kits/playbook/pb_overlay/overlay.test.jsx +0 -12
- data/app/pb_kits/playbook/pb_popover/_popover.tsx +2 -2
- data/app/pb_kits/playbook/pb_popover/popover.test.js +1 -1
- data/app/pb_kits/playbook/pb_radio/_radio.tsx +74 -85
- data/app/pb_kits/playbook/pb_radio/docs/example.yml +1 -2
- data/app/pb_kits/playbook/pb_radio/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_radio/radio.test.js +0 -16
- data/app/pb_kits/playbook/pb_select/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_select/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_select/select.html.erb +5 -3
- data/app/pb_kits/playbook/pb_select/select.rb +0 -8
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +5 -1
- data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.html.erb +4 -1
- data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.html.erb +5 -1
- data/app/pb_kits/playbook/pb_text_input/inputMask.ts +3 -2
- data/app/pb_kits/playbook/pb_timeline/_timeline.scss +2 -2
- data/app/pb_kits/playbook/pb_title/_title.scss +0 -32
- data/app/pb_kits/playbook/pb_title/_title.tsx +1 -10
- data/app/pb_kits/playbook/pb_title/docs/_title_default.html.erb +2 -1
- data/app/pb_kits/playbook/pb_title/docs/_title_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_title/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_title/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_title/title.rb +1 -10
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +3 -0
- data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +0 -25
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon.erb +10 -0
- data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -4
- data/app/pb_kits/playbook/pb_tooltip/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_tooltip/index.js +1 -1
- data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +2 -10
- data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +5 -51
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -5
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_custom_options.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +1 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_typeahead/index.ts +8 -61
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +2 -17
- data/app/pb_kits/playbook/utilities/object.ts +1 -103
- data/app/pb_kits/playbook/utilities/text.ts +1 -1
- data/dist/chunks/_typeahead-PqkcDf1H.js +36 -0
- data/dist/chunks/_weekday_stacked-BrSrpj7J.js +45 -0
- data/dist/chunks/{lib-e7oBFFDo.js → lib-D3us1bGD.js} +2 -2
- data/dist/chunks/{pb_form_validation-CMXevI1t.js → pb_form_validation-BpihMSOQ.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +2 -2
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +7 -61
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +0 -127
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +0 -55
- data/app/pb_kits/playbook/pb_advanced_table/Components/TablePagination.tsx +0 -33
- data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +0 -275
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +0 -66
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +0 -195
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/CellRendererUtils.tsx +0 -73
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/RowUtils.ts +0 -52
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/TableContainerStyles.ts +0 -80
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_infinite_scroll.jsx +0 -50
- data/app/pb_kits/playbook/pb_advanced_table/docs/advanced_table_mock_data_infinite_scroll.json +0 -152002
- data/app/pb_kits/playbook/pb_date_picker/index.ts +0 -38
- data/app/pb_kits/playbook/pb_dialog/index.js +0 -75
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.html.erb +0 -8
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.html.erb +0 -33
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +0 -0
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.html.erb +0 -24
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.html.erb +0 -21
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.md +0 -1
- data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.html.erb +0 -49
- data/app/pb_kits/playbook/pb_drawer/index.js +0 -257
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.html.erb +0 -40
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.jsx +0 -50
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_wrapped.md +0 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +0 -72
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.jsx +0 -91
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.html.erb +0 -11
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.jsx +0 -37
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar_rails.md +0 -1
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar_react.md +0 -1
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.html.erb +0 -11
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.md +0 -1
- data/app/pb_kits/playbook/pb_overlay/index.js +0 -61
- data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.jsx +0 -60
- data/app/pb_kits/playbook/pb_radio/docs/_radio_react_hook.md +0 -1
- data/app/pb_kits/playbook/pb_select/docs/_select_react_hook.jsx +0 -58
- data/app/pb_kits/playbook/pb_select/docs/_select_react_hook.md +0 -1
- data/app/pb_kits/playbook/pb_select/index.js +0 -38
- data/app/pb_kits/playbook/pb_title/docs/_title_display_size.html.erb +0 -7
- data/app/pb_kits/playbook/pb_title/docs/_title_display_size.jsx +0 -54
- data/app/pb_kits/playbook/pb_title/docs/_title_display_size.md +0 -1
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.html.erb +0 -39
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay_rails.md +0 -3
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon_rails.html.erb +0 -22
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.html.erb +0 -26
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.jsx +0 -69
- data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.md +0 -3
- data/app/pb_kits/playbook/pb_tooltip/floating_ui.js +0 -282
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options.html.erb +0 -45
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options.md +0 -5
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options_pure_rails.html.erb +0 -33
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_dynamic_options_pure_rails.md +0 -3
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_react_hook.jsx +0 -66
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_react_hook.md +0 -1
- data/app/pb_kits/playbook/utilities/object.test.js +0 -237
- data/dist/chunks/_typeahead-CdVbIURO.js +0 -36
- data/dist/chunks/_weekday_stacked-BSTKfYPJ.js +0 -45
@@ -1,38 +0,0 @@
|
|
1
|
-
import PbEnhancedElement from "../pb_enhanced_element";
|
2
|
-
|
3
|
-
const DATE_PICKER_WRAPPER_SELECTOR = '[data-pb-date-picker]';
|
4
|
-
const SELECT_VALIDATION_MESSAGE_CLASS = '.pb_body_kit_negative';
|
5
|
-
|
6
|
-
export default class PbDatePicker extends PbEnhancedElement {
|
7
|
-
static get selector() {
|
8
|
-
return DATE_PICKER_WRAPPER_SELECTOR;
|
9
|
-
}
|
10
|
-
|
11
|
-
connect() {
|
12
|
-
this.setValidationMessage();
|
13
|
-
}
|
14
|
-
|
15
|
-
setValidationMessage() {
|
16
|
-
const validationMessage = this.element.dataset?.validationMessage;
|
17
|
-
const inputElement = this.element.querySelector("input");
|
18
|
-
|
19
|
-
if (validationMessage) {
|
20
|
-
const setErrorTextContent = (text, timeout) => {
|
21
|
-
setTimeout(() => {
|
22
|
-
const errorMessageElement = this.element.querySelector(SELECT_VALIDATION_MESSAGE_CLASS);
|
23
|
-
if (errorMessageElement) {
|
24
|
-
errorMessageElement.textContent = text;
|
25
|
-
} else {
|
26
|
-
setErrorTextContent(text, 100);
|
27
|
-
}
|
28
|
-
}, timeout);
|
29
|
-
};
|
30
|
-
|
31
|
-
inputElement.addEventListener("change", (e) => {
|
32
|
-
if (!e.target.checkValidity()) {
|
33
|
-
setErrorTextContent(validationMessage, 300);
|
34
|
-
}
|
35
|
-
});
|
36
|
-
}
|
37
|
-
}
|
38
|
-
}
|
@@ -1,75 +0,0 @@
|
|
1
|
-
import PbEnhancedElement from "../pb_enhanced_element";
|
2
|
-
|
3
|
-
const DIALOG_WRAPPER_SELECTOR = "[data-pb-dialog-wrapper]";
|
4
|
-
|
5
|
-
export default class PbDialog extends PbEnhancedElement {
|
6
|
-
static get selector() {
|
7
|
-
return DIALOG_WRAPPER_SELECTOR;
|
8
|
-
}
|
9
|
-
|
10
|
-
connect() {
|
11
|
-
window.addEventListener("DOMContentLoaded", () => this.setupDialog())
|
12
|
-
window.addEventListener("turbo:frame-load", () => this.setupDialog())
|
13
|
-
}
|
14
|
-
|
15
|
-
setupDialog() {
|
16
|
-
const openTrigger = document.querySelectorAll("[data-open-dialog]");
|
17
|
-
const closeTrigger = document.querySelectorAll("[data-close-dialog]");
|
18
|
-
const dialogs = document.querySelectorAll(".pb_dialog_rails")
|
19
|
-
|
20
|
-
const loadingButton = document.querySelector('[data-disable-with="Loading"]');
|
21
|
-
if (loadingButton) {
|
22
|
-
loadingButton.addEventListener("click", function () {
|
23
|
-
const okayLoadingButton = document.querySelector('[data-disable-with="Loading"]');
|
24
|
-
const cancelButton = document.querySelector('[data-disable-cancel-with="Loading"]');
|
25
|
-
let currentClass = okayLoadingButton.className;
|
26
|
-
let cancelClass = cancelButton ? cancelButton.className : "";
|
27
|
-
|
28
|
-
let newClass = currentClass.replace("_enabled", "_disabled_loading");
|
29
|
-
let newCancelClass = cancelClass.replace("_enabled", "_disabled");
|
30
|
-
|
31
|
-
// Disable the buttons
|
32
|
-
okayLoadingButton.disabled = true;
|
33
|
-
if (cancelButton) cancelButton.disabled = true;
|
34
|
-
|
35
|
-
okayLoadingButton.className = newClass;
|
36
|
-
if (cancelButton) cancelButton.className = newCancelClass;
|
37
|
-
});
|
38
|
-
}
|
39
|
-
|
40
|
-
openTrigger.forEach((open) => {
|
41
|
-
open.addEventListener("click", () => {
|
42
|
-
var openTriggerData = open.dataset.openDialog;
|
43
|
-
var targetDialog = document.getElementById(openTriggerData)
|
44
|
-
if (targetDialog.open) return;
|
45
|
-
targetDialog.showModal();
|
46
|
-
});
|
47
|
-
});
|
48
|
-
|
49
|
-
closeTrigger.forEach((close) => {
|
50
|
-
close.addEventListener("click", () => {
|
51
|
-
var closeTriggerData = close.dataset.closeDialog;
|
52
|
-
document.getElementById(closeTriggerData).close();
|
53
|
-
});
|
54
|
-
});
|
55
|
-
|
56
|
-
// Close dialog box on outside click
|
57
|
-
dialogs.forEach((dialogElement) => {
|
58
|
-
dialogElement.addEventListener("mousedown", (event) => {
|
59
|
-
const dialogParentDataset = dialogElement.parentElement.dataset
|
60
|
-
if (dialogParentDataset.overlayClick === "overlay_close") return
|
61
|
-
|
62
|
-
const dialogModal = event.target.getBoundingClientRect()
|
63
|
-
const clickedOutsideDialogModal = event.clientX < dialogModal.left ||
|
64
|
-
event.clientX > dialogModal.right ||
|
65
|
-
event.clientY < dialogModal.top ||
|
66
|
-
event.clientY > dialogModal.bottom
|
67
|
-
|
68
|
-
if (clickedOutsideDialogModal) {
|
69
|
-
dialogElement.close()
|
70
|
-
event.stopPropagation()
|
71
|
-
}
|
72
|
-
})
|
73
|
-
})
|
74
|
-
}
|
75
|
-
}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<%= pb_rails("flex") do %>
|
2
|
-
<%= pb_rails("button", props: { text: "Drawer with border right", margin_right: "sm", data: {"open-drawer": "drawer-12"} }) %>
|
3
|
-
|
4
|
-
<%= pb_rails("drawer", props: {
|
5
|
-
id:"drawer-12",
|
6
|
-
overlay: false,
|
7
|
-
border: "right"
|
8
|
-
}) do %>
|
9
|
-
Test me (Border Right)
|
10
|
-
<% end %>
|
11
|
-
|
12
|
-
|
13
|
-
<%= pb_rails("button", props: { text: "Drawer with border left", margin_right: "sm", data: {"open-drawer": "drawer-13"} }) %>
|
14
|
-
|
15
|
-
<%= pb_rails("drawer", props: {
|
16
|
-
id:"drawer-13",
|
17
|
-
overlay: false,
|
18
|
-
border: "left"
|
19
|
-
}) do %>
|
20
|
-
Test me (Border Left)
|
21
|
-
<% end %>
|
22
|
-
|
23
|
-
<%= pb_rails("button", props: { text: "Drawer with border full", data: {"open-drawer": "drawer-14"} }) %>
|
24
|
-
|
25
|
-
<%= pb_rails("drawer", props: {
|
26
|
-
id:"drawer-14",
|
27
|
-
overlay: false,
|
28
|
-
border: "full"
|
29
|
-
}) do %>
|
30
|
-
Test me (Border Full)
|
31
|
-
<% end %>
|
32
|
-
<% end %>
|
33
|
-
|
File without changes
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<%= pb_rails("button", props: { padding: "xs", margin_right: "sm", data: {"open-drawer": "drawer-4"} }) do %>
|
2
|
-
<%= pb_rails("icon", props: { icon: "bars", size: "2x" }) %>
|
3
|
-
<% end %>
|
4
|
-
|
5
|
-
<%= pb_rails("drawer", props: {
|
6
|
-
id:"drawer-4",
|
7
|
-
within_element: true,
|
8
|
-
placement: "bottom",
|
9
|
-
breakpoint: "md",
|
10
|
-
size: "full"
|
11
|
-
}) do %>
|
12
|
-
<%= pb_rails("nav", props: { display: {xl: "none", lg: "none", md: "none", sm: "block" } }) do %>
|
13
|
-
<%= pb_rails("nav/item", props: { text: "Photos", link: "#" }) %>
|
14
|
-
<%= pb_rails("nav/item", props: { text: "Music", link: "#" }) %>
|
15
|
-
<%= pb_rails("nav/item", props: { text: "Video", link: "#", active: true }) %>
|
16
|
-
<%= pb_rails("nav/item", props: { text: "Files", link: "#" }) %>
|
17
|
-
<% end %>
|
18
|
-
<%= pb_rails("nav", props: { display: {md: "block", sm: "none", xs: "none" }, orientation: "horizontal" }) do %>
|
19
|
-
<%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
|
20
|
-
<%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
|
21
|
-
<%= pb_rails("nav/item", props: { text: "Service ", link: "#" }) %>
|
22
|
-
<%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
|
23
|
-
<% end %>
|
24
|
-
<% end %>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
<%= pb_rails("flex") do %>
|
2
|
-
<%= pb_rails("button", props: { text: "No Overlay Drawer", margin_right: "sm", data: {"open-drawer": "drawer-10"} }) %>
|
3
|
-
|
4
|
-
<%= pb_rails("drawer", props: {
|
5
|
-
id:"drawer-10",
|
6
|
-
overlay: false
|
7
|
-
}) do %>
|
8
|
-
Test me (No Overlay)
|
9
|
-
<% end %>
|
10
|
-
|
11
|
-
|
12
|
-
<%= pb_rails("button", props: { text: "Overlay Drawer", data: {"open-drawer": "drawer-11"} }) %>
|
13
|
-
|
14
|
-
<%= pb_rails("drawer", props: {
|
15
|
-
id:"drawer-11",
|
16
|
-
placement: "right"
|
17
|
-
}) do %>
|
18
|
-
Test me (Has Overlay)
|
19
|
-
<% end %>
|
20
|
-
<% end %>
|
21
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
Click the button to close the drawer when there is no overlay.
|
@@ -1,49 +0,0 @@
|
|
1
|
-
<%= pb_rails("flex") do %>
|
2
|
-
<%= pb_rails("button", props: { text: "XS Drawer", margin_right: "sm", data: {"open-drawer": "drawer-5"} }) %>
|
3
|
-
|
4
|
-
<%= pb_rails("drawer", props: {
|
5
|
-
id:"drawer-5",
|
6
|
-
size: "xs"
|
7
|
-
}) do %>
|
8
|
-
XS
|
9
|
-
<% end %>
|
10
|
-
|
11
|
-
<%= pb_rails("button", props: { text: "SM Drawer", margin_right: "sm", data: {"open-drawer": "drawer-6"} }) %>
|
12
|
-
|
13
|
-
<%= pb_rails("drawer", props: {
|
14
|
-
id:"drawer-6",
|
15
|
-
size: "sm",
|
16
|
-
placement: "right"
|
17
|
-
}) do %>
|
18
|
-
This is a small drawer
|
19
|
-
<% end %>
|
20
|
-
|
21
|
-
<%= pb_rails("button", props: { text: "MD Drawer", margin_right: "sm", data: {"open-drawer": "drawer-7"} }) %>
|
22
|
-
|
23
|
-
<%= pb_rails("drawer", props: {
|
24
|
-
id:"drawer-7",
|
25
|
-
size: "md"
|
26
|
-
}) do %>
|
27
|
-
This is a medium drawer
|
28
|
-
<% end %>
|
29
|
-
|
30
|
-
<%= pb_rails("button", props: { text: "LG Drawer", margin_right: "sm", data: {"open-drawer": "drawer-8"} }) %>
|
31
|
-
|
32
|
-
<%= pb_rails("drawer", props: {
|
33
|
-
id:"drawer-8",
|
34
|
-
size: "lg",
|
35
|
-
placement: "right"
|
36
|
-
}) do %>
|
37
|
-
This is a large drawer
|
38
|
-
<% end %>
|
39
|
-
|
40
|
-
<%= pb_rails("button", props: { text: "XL Drawer", margin_right: "sm", data: {"open-drawer": "drawer-9"} }) %>
|
41
|
-
|
42
|
-
<%= pb_rails("drawer", props: {
|
43
|
-
id:"drawer-9",
|
44
|
-
size: "xl"
|
45
|
-
}) do %>
|
46
|
-
This is an extra large drawer
|
47
|
-
<% end %>
|
48
|
-
<% end %>
|
49
|
-
|
@@ -1,257 +0,0 @@
|
|
1
|
-
import PbEnhancedElement from "../pb_enhanced_element"
|
2
|
-
|
3
|
-
export default class PbDrawer extends PbEnhancedElement {
|
4
|
-
static get selector() {
|
5
|
-
return ".pb_drawer_wrapper"
|
6
|
-
}
|
7
|
-
|
8
|
-
connect() {
|
9
|
-
this.handleToggleClick = this.handleToggleClick.bind(this)
|
10
|
-
this.handleOutsideClick = this.handleOutsideClick.bind(this)
|
11
|
-
this.handleResize = this.handleResize.bind(this)
|
12
|
-
|
13
|
-
this._toggleTriggers = Array.from(document.querySelectorAll("[data-open-drawer]"))
|
14
|
-
this._toggleTriggers.forEach(el => {
|
15
|
-
el.addEventListener("click", this.handleToggleClick)
|
16
|
-
})
|
17
|
-
|
18
|
-
this._wrappers = Array.from(document.querySelectorAll(".pb_drawer_wrapper"))
|
19
|
-
this._wrappers.forEach(el => {
|
20
|
-
el.addEventListener("mousedown", this.handleOutsideClick)
|
21
|
-
})
|
22
|
-
|
23
|
-
this._withinElementDrawers = Array.from(
|
24
|
-
document.querySelectorAll(".pb_drawer_within_element_rails[data-breakpoint]")
|
25
|
-
)
|
26
|
-
|
27
|
-
window.addEventListener("resize", this.handleResize)
|
28
|
-
this.handleResize()
|
29
|
-
}
|
30
|
-
|
31
|
-
disconnect() {
|
32
|
-
this._toggleTriggers.forEach(el => {
|
33
|
-
el.removeEventListener("click", this.handleToggleClick)
|
34
|
-
})
|
35
|
-
this._wrappers.forEach(el => {
|
36
|
-
el.removeEventListener("mousedown", this.handleOutsideClick)
|
37
|
-
})
|
38
|
-
window.removeEventListener("resize", this.handleResize)
|
39
|
-
}
|
40
|
-
|
41
|
-
getOverlay(wrapper) {
|
42
|
-
if (wrapper.id && wrapper.id.startsWith("drawer-wrapper-")) {
|
43
|
-
const overlayId = wrapper.id.replace("drawer-wrapper-", "drawer-overlay-")
|
44
|
-
return document.getElementById(overlayId)
|
45
|
-
}
|
46
|
-
return wrapper.querySelector(".pb_drawer_overlay") || wrapper.querySelector(".pb_drawer_no_overlay")
|
47
|
-
}
|
48
|
-
|
49
|
-
handleToggleClick(event) {
|
50
|
-
const trigger = event.currentTarget
|
51
|
-
const drawerId = trigger.dataset.openDrawer
|
52
|
-
const dialog = document.getElementById(drawerId)
|
53
|
-
if (!dialog) return
|
54
|
-
|
55
|
-
if (dialog.classList.contains("pb_drawer_within_element_rails")) {
|
56
|
-
if (dialog.classList.contains("open")) {
|
57
|
-
this.closeWithinElementDrawer(dialog)
|
58
|
-
dialog.dataset.manualOpen = "false"
|
59
|
-
} else {
|
60
|
-
this.openWithinElementDrawer(dialog)
|
61
|
-
dialog.dataset.manualOpen = "true"
|
62
|
-
}
|
63
|
-
return
|
64
|
-
}
|
65
|
-
|
66
|
-
const wrapperId = `drawer-wrapper-${drawerId}`
|
67
|
-
const wrapper = document.getElementById(wrapperId)
|
68
|
-
if (!wrapper) return
|
69
|
-
|
70
|
-
if (wrapper !== this.element) return
|
71
|
-
|
72
|
-
if (wrapper.classList.contains("open")) {
|
73
|
-
this.closeDrawer(wrapper, dialog)
|
74
|
-
wrapper.dataset.manualOpen = "false"
|
75
|
-
} else {
|
76
|
-
this.openDrawer(wrapper, dialog)
|
77
|
-
wrapper.dataset.manualOpen = "true"
|
78
|
-
}
|
79
|
-
}
|
80
|
-
|
81
|
-
openWithinElementDrawer(dialog) {
|
82
|
-
if (dialog.classList.contains("open")) return
|
83
|
-
dialog.style.maxHeight = "0px"
|
84
|
-
dialog.offsetHeight
|
85
|
-
dialog.classList.add("open")
|
86
|
-
// Get trigger's height and add it to the final height
|
87
|
-
const trigger = document.querySelector(`[data-open-drawer="${dialog.id}"]`)
|
88
|
-
const triggerHeight = trigger ? trigger.offsetHeight : 0
|
89
|
-
const finalHeight = (dialog.scrollHeight + triggerHeight) + "px"
|
90
|
-
dialog.style.maxHeight = finalHeight
|
91
|
-
dialog.addEventListener("transitionend", function handleOpenEnd(e) {
|
92
|
-
if (e.propertyName === "max-height") {
|
93
|
-
dialog.style.maxHeight = "none"
|
94
|
-
dialog.removeEventListener("transitionend", handleOpenEnd)
|
95
|
-
}
|
96
|
-
})
|
97
|
-
}
|
98
|
-
|
99
|
-
closeWithinElementDrawer(dialog) {
|
100
|
-
if (!dialog.classList.contains("open")) return
|
101
|
-
const currentHeight = dialog.scrollHeight
|
102
|
-
dialog.style.maxHeight = currentHeight + "px"
|
103
|
-
dialog.offsetHeight
|
104
|
-
dialog.classList.remove("open")
|
105
|
-
dialog.style.maxHeight = "0px"
|
106
|
-
dialog.addEventListener("transitionend", function handleCloseEnd(e) {
|
107
|
-
if (e.propertyName === "max-height") {
|
108
|
-
dialog.removeEventListener("transitionend", handleCloseEnd)
|
109
|
-
dialog.style.maxHeight = "0px"
|
110
|
-
}
|
111
|
-
})
|
112
|
-
}
|
113
|
-
|
114
|
-
openDrawer(wrapper, dialog) {
|
115
|
-
const behavior = wrapper.dataset.behavior
|
116
|
-
const size = wrapper.dataset.size
|
117
|
-
const placement = wrapper.dataset.placement
|
118
|
-
this.handlePushOpen(behavior, size, placement)
|
119
|
-
|
120
|
-
wrapper.style.display = ""
|
121
|
-
const overlay = this.getOverlay(wrapper)
|
122
|
-
if (overlay) overlay.style.display = ""
|
123
|
-
|
124
|
-
wrapper.classList.add("open")
|
125
|
-
dialog.classList.add("open")
|
126
|
-
}
|
127
|
-
|
128
|
-
closeDrawer(wrapper, dialog) {
|
129
|
-
const behavior = wrapper.dataset.behavior
|
130
|
-
this.handlePushClose(behavior)
|
131
|
-
|
132
|
-
if (wrapper.className.includes("open")) wrapper.style.display = "none"
|
133
|
-
const overlay = this.getOverlay(wrapper)
|
134
|
-
if (overlay && wrapper.className.includes("open")) overlay.style.display = "none"
|
135
|
-
|
136
|
-
wrapper.classList.remove("open")
|
137
|
-
dialog.classList.remove("open")
|
138
|
-
}
|
139
|
-
|
140
|
-
handleOutsideClick(event) {
|
141
|
-
const wrapper = event.currentTarget
|
142
|
-
const dialog = wrapper.querySelector(".pb_drawer")
|
143
|
-
const overlay = this.getOverlay(wrapper)
|
144
|
-
|
145
|
-
if (dialog && dialog.classList.contains("pb_drawer_within_element_rails")) {
|
146
|
-
return
|
147
|
-
}
|
148
|
-
|
149
|
-
if (wrapper.dataset.overlayClick === "overlay_close" && event.target === overlay) {
|
150
|
-
this.closeDrawer(wrapper, dialog)
|
151
|
-
event.stopPropagation()
|
152
|
-
return
|
153
|
-
}
|
154
|
-
|
155
|
-
const dialogRect = dialog.getBoundingClientRect()
|
156
|
-
const clickedOutside =
|
157
|
-
event.clientX < dialogRect.left ||
|
158
|
-
event.clientX > dialogRect.right ||
|
159
|
-
event.clientY < dialogRect.top ||
|
160
|
-
event.clientY > dialogRect.bottom
|
161
|
-
|
162
|
-
if (clickedOutside) {
|
163
|
-
this.closeDrawer(wrapper, dialog)
|
164
|
-
event.stopPropagation()
|
165
|
-
}
|
166
|
-
}
|
167
|
-
|
168
|
-
handleResize() {
|
169
|
-
const breakpointValues = {
|
170
|
-
none: 0,
|
171
|
-
xs: 575,
|
172
|
-
sm: 768,
|
173
|
-
md: 992,
|
174
|
-
lg: 1200,
|
175
|
-
xl: 1400,
|
176
|
-
}
|
177
|
-
|
178
|
-
// Process wrappers
|
179
|
-
this._wrappers.forEach(wrapper => {
|
180
|
-
const bp = wrapper.dataset.breakpoint || "none"
|
181
|
-
if (bp === "none") return
|
182
|
-
|
183
|
-
const threshold = breakpointValues[bp] || 0
|
184
|
-
const dialog = wrapper.querySelector(".pb_drawer")
|
185
|
-
const trigger = dialog ? document.querySelector(`[data-open-drawer="${dialog.id}"]`) : null
|
186
|
-
|
187
|
-
if (window.innerWidth >= threshold) {
|
188
|
-
if (!wrapper.classList.contains("open")) {
|
189
|
-
this.openDrawer(wrapper, dialog)
|
190
|
-
}
|
191
|
-
if (trigger) trigger.style.display = "none"
|
192
|
-
} else {
|
193
|
-
if (trigger) trigger.style.display = ""
|
194
|
-
if (wrapper.classList.contains("open") && wrapper.dataset.manualOpen !== "true") {
|
195
|
-
this.closeDrawer(wrapper, dialog)
|
196
|
-
}
|
197
|
-
}
|
198
|
-
})
|
199
|
-
|
200
|
-
// Process within element drawers
|
201
|
-
this._withinElementDrawers.forEach(drawer => {
|
202
|
-
const bp = drawer.dataset.breakpoint || "none"
|
203
|
-
if (bp === "none") return
|
204
|
-
|
205
|
-
const threshold = breakpointValues[bp] || 0
|
206
|
-
const trigger = document.querySelector(`[data-open-drawer="${drawer.id}"]`)
|
207
|
-
|
208
|
-
if (window.innerWidth >= threshold) {
|
209
|
-
if (!drawer.classList.contains("open")) {
|
210
|
-
this.openWithinElementDrawer(drawer)
|
211
|
-
}
|
212
|
-
if (trigger) trigger.style.display = "none"
|
213
|
-
} else {
|
214
|
-
if (trigger) trigger.style.display = ""
|
215
|
-
if (drawer.classList.contains("open") && drawer.dataset.manualOpen !== "true") {
|
216
|
-
this.closeWithinElementDrawer(drawer)
|
217
|
-
}
|
218
|
-
}
|
219
|
-
})
|
220
|
-
}
|
221
|
-
|
222
|
-
handlePushOpen(behavior, size, placement) {
|
223
|
-
if (behavior !== "push") return
|
224
|
-
|
225
|
-
const sizeMap = {
|
226
|
-
xl: "365px",
|
227
|
-
lg: "300px",
|
228
|
-
md: "250px",
|
229
|
-
sm: "200px",
|
230
|
-
xs: "64px",
|
231
|
-
full: "100%",
|
232
|
-
}
|
233
|
-
|
234
|
-
const body = document.querySelector("body")
|
235
|
-
if (!body) return
|
236
|
-
|
237
|
-
if (placement === "left") {
|
238
|
-
body.style.cssText = `margin-left: ${sizeMap[size]} !important; margin-right: '' !important;`
|
239
|
-
} else if (placement === "right") {
|
240
|
-
body.style.cssText = `margin-right: ${sizeMap[size]} !important; margin-left: '' !important;`
|
241
|
-
}
|
242
|
-
body.classList.add("PBDrawer__Body--open")
|
243
|
-
}
|
244
|
-
|
245
|
-
handlePushClose(behavior) {
|
246
|
-
if (behavior !== "push") return
|
247
|
-
|
248
|
-
const body = document.querySelector("body")
|
249
|
-
if (!body) return
|
250
|
-
|
251
|
-
if (body.classList.contains("PBDrawer__Body--open")) {
|
252
|
-
body.classList.add("PBDrawer__Body--close")
|
253
|
-
}
|
254
|
-
body.style.cssText = ""
|
255
|
-
body.classList.remove("PBDrawer__Body--open")
|
256
|
-
}
|
257
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
names = [
|
3
|
-
{ label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
|
4
|
-
{ label: 'Isabella Anastasia Wellington', value: 'Isabella Anastasia Wellington' },
|
5
|
-
{ label: 'Christopher Maximilian Harrington', value: 'Christopher Maximilian Harrington' },
|
6
|
-
{ label: 'Elizabeth Seraphina Kensington', value: 'Elizabeth Seraphina Kensington' },
|
7
|
-
{ label: 'Theodore Jonathan Abernathy', value: 'Theodore Jonathan Abernathy' },
|
8
|
-
]
|
9
|
-
%>
|
10
|
-
|
11
|
-
<%= pb_rails("typeahead", props: {
|
12
|
-
html_options: { style: { maxWidth: "240px" }},
|
13
|
-
id: "typeahead-form-pill",
|
14
|
-
is_multi: true,
|
15
|
-
options: names,
|
16
|
-
label: "Wrapped Within Typeahead",
|
17
|
-
pills: true,
|
18
|
-
wrapped: true,
|
19
|
-
}) %>
|
20
|
-
|
21
|
-
<%= pb_rails("caption", props: { text: "Form Pill Wrapped Text" }) %>
|
22
|
-
<%= pb_rails("card", props: { max_width: "xs" }) do %>
|
23
|
-
<%= pb_rails("form_pill", props: {
|
24
|
-
name: "Princess Amelia Mignonette Grimaldi Thermopolis Renaldo",
|
25
|
-
avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
|
26
|
-
tabindex: 0,
|
27
|
-
wrapped: true,
|
28
|
-
}) %>
|
29
|
-
<%= pb_rails("form_pill", props: {
|
30
|
-
icon: "badge-check",
|
31
|
-
text: "icon and a very long tag to show wrapped text",
|
32
|
-
tabindex: 0,
|
33
|
-
wrapped: true,
|
34
|
-
}) %>
|
35
|
-
<%= pb_rails("form_pill", props: {
|
36
|
-
text: "form pill long tag no tooltip show wrapped text",
|
37
|
-
tabindex: 0,
|
38
|
-
wrapped: true,
|
39
|
-
}) %>
|
40
|
-
<% end %>
|
@@ -1,50 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import { Card, Caption, FormPill, Typeahead } from 'playbook-ui'
|
3
|
-
|
4
|
-
const names = [
|
5
|
-
{ label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
|
6
|
-
{ label: 'Isabella Anastasia Wellington', value: 'Isabella Anastasia Wellington' },
|
7
|
-
{ label: 'Christopher Maximilian Harrington', value: 'Christopher Maximilian Harrington' },
|
8
|
-
{ label: 'Elizabeth Seraphina Kensington', value: 'Elizabeth Seraphina Kensington' },
|
9
|
-
{ label: 'Theodore Jonathan Abernathy', value: 'Theodore Jonathan Abernathy' },
|
10
|
-
]
|
11
|
-
|
12
|
-
const FormPillWrapped = (props) => {
|
13
|
-
return (
|
14
|
-
<>
|
15
|
-
<Typeahead
|
16
|
-
htmlOptions={{ style: { maxWidth: "240px" } }}
|
17
|
-
isMulti
|
18
|
-
label="Wrapped Within Typeahead"
|
19
|
-
options={names}
|
20
|
-
wrapped
|
21
|
-
{...props}
|
22
|
-
/>
|
23
|
-
<Caption text="Form Pill Wrapped Text"/>
|
24
|
-
<Card maxWidth="xs">
|
25
|
-
<FormPill
|
26
|
-
avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
|
27
|
-
name="Princess Amelia Mignonette Grimaldi Thermopolis Renaldo"
|
28
|
-
onClick={() => alert('Click!')}
|
29
|
-
tabIndex={0}
|
30
|
-
wrapped
|
31
|
-
/>
|
32
|
-
<FormPill
|
33
|
-
icon="badge-check"
|
34
|
-
onClick={() => {alert('Click!')}}
|
35
|
-
tabIndex={0}
|
36
|
-
text="icon and a very long tag to show wrapped text"
|
37
|
-
wrapped
|
38
|
-
/>
|
39
|
-
<FormPill
|
40
|
-
onClick={() => {alert('Click!')}}
|
41
|
-
tabIndex={0}
|
42
|
-
text="form pill with a very long tag to show wrapped text"
|
43
|
-
wrapped
|
44
|
-
/>
|
45
|
-
</Card>
|
46
|
-
</>
|
47
|
-
)
|
48
|
-
}
|
49
|
-
|
50
|
-
export default FormPillWrapped
|
@@ -1,72 +0,0 @@
|
|
1
|
-
<% treeData = [{
|
2
|
-
label: "Power Home Remodeling",
|
3
|
-
value: "Power Home Remodeling",
|
4
|
-
id: "100",
|
5
|
-
expanded: true,
|
6
|
-
children: [
|
7
|
-
{
|
8
|
-
label: "People",
|
9
|
-
value: "People",
|
10
|
-
id: "101",
|
11
|
-
expanded: true,
|
12
|
-
children: [
|
13
|
-
{
|
14
|
-
label: "Talent Acquisition",
|
15
|
-
value: "Talent Acquisition",
|
16
|
-
id: "102",
|
17
|
-
},
|
18
|
-
{
|
19
|
-
label: "Business Affairs",
|
20
|
-
value: "Business Affairs",
|
21
|
-
id: "103",
|
22
|
-
children: [
|
23
|
-
{
|
24
|
-
label: "Initiatives",
|
25
|
-
value: "Initiatives",
|
26
|
-
id: "104",
|
27
|
-
},
|
28
|
-
{
|
29
|
-
label: "Learning & Development",
|
30
|
-
value: "Learning & Development",
|
31
|
-
id: "105",
|
32
|
-
},
|
33
|
-
],
|
34
|
-
},
|
35
|
-
{
|
36
|
-
label: "People Experience",
|
37
|
-
value: "People Experience",
|
38
|
-
id: "106",
|
39
|
-
},
|
40
|
-
],
|
41
|
-
},
|
42
|
-
{
|
43
|
-
label: "Contact Center",
|
44
|
-
value: "Contact Center",
|
45
|
-
id: "107",
|
46
|
-
children: [
|
47
|
-
{
|
48
|
-
label: "Appointment Management",
|
49
|
-
value: "Appointment Management",
|
50
|
-
id: "108",
|
51
|
-
},
|
52
|
-
{
|
53
|
-
label: "Customer Service",
|
54
|
-
value: "Customer Service",
|
55
|
-
id: "109",
|
56
|
-
},
|
57
|
-
{
|
58
|
-
label: "Energy",
|
59
|
-
value: "Energy",
|
60
|
-
id: "110",
|
61
|
-
},
|
62
|
-
],
|
63
|
-
},
|
64
|
-
],
|
65
|
-
}] %>
|
66
|
-
|
67
|
-
<%= pb_rails("multi_level_select", props: {
|
68
|
-
disabled: true,
|
69
|
-
id: "multi-level-select-default-rails",
|
70
|
-
name: "my_array",
|
71
|
-
tree_data: treeData
|
72
|
-
}) %>
|