playbook_ui 14.14.0.pre.alpha.PBNTR907reactfilterpopoverpropswidthbug6557 → 14.14.0.pre.alpha.pbntr500currencykithandlingofnullvalues6275
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_card/_card.tsx +1 -2
- data/app/pb_kits/playbook/pb_currency/_currency.tsx +2 -1
- data/app/pb_kits/playbook/pb_currency/currency.html.erb +1 -1
- data/app/pb_kits/playbook/pb_currency/currency.rb +2 -14
- data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.html.erb +1 -3
- 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_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_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_icon_button/docs/example.yml +0 -4
- 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_progress_step/progress_step_item.html.erb +2 -2
- 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_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/example.yml +1 -3
- data/app/pb_kits/playbook/pb_tooltip/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_tooltip/index.js +2 -2
- data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +2 -10
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +2 -36
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -5
- data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -2
- 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 -29
- data/dist/chunks/_typeahead-PqkcDf1H.js +36 -0
- data/dist/chunks/_weekday_stacked-BhC8Xp9l.js +45 -0
- data/dist/chunks/{lib-5OzNgeeu.js → lib-D3us1bGD.js} +2 -2
- data/dist/chunks/{pb_form_validation-DGhKbZtO.js → pb_form_validation-BpihMSOQ.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +3 -3
- 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 +1 -1
- metadata +6 -64
- 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_currency/docs/_currency_null_display_rails.md +0 -1
- data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display_react.md +0 -1
- data/app/pb_kits/playbook/pb_date_picker/index.ts +0 -38
- 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_icon_button/_icon_button.tsx +0 -71
- data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.jsx +0 -17
- data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.jsx +0 -61
- data/app/pb_kits/playbook/pb_icon_button/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_icon_button/icon_button.test.jsx +0 -39
- 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_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/utilities/object.test.js +0 -99
- data/dist/chunks/_typeahead-F4bG5YsC.js +0 -36
- data/dist/chunks/_weekday_stacked-CaWVQMMq.js +0 -45
@@ -1 +0,0 @@
|
|
1
|
-
To customize how the `amount` field appears when it is empty, use the `null_display` prop and set it to the desired value you want to display.
|
@@ -1 +0,0 @@
|
|
1
|
-
To customize how the `amount` field appears when it is empty, use the `nullDisplay` prop and set it to the desired value you want to display.
|
@@ -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,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,71 +0,0 @@
|
|
1
|
-
|
2
|
-
import React from 'react'
|
3
|
-
import classnames from 'classnames'
|
4
|
-
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
|
-
import { globalProps } from '../utilities/globalProps'
|
6
|
-
|
7
|
-
import Button from '../pb_button/_button'
|
8
|
-
import Icon from '../pb_icon/_icon'
|
9
|
-
import { IconSizes } from "../pb_icon/_icon"
|
10
|
-
|
11
|
-
type IconButtonProps = {
|
12
|
-
aria?: { [key: string]: string },
|
13
|
-
className?: string,
|
14
|
-
data?: { [key: string]: string },
|
15
|
-
htmlType?: 'submit' | 'reset' | 'button' | undefined,
|
16
|
-
icon?: string,
|
17
|
-
id?: string,
|
18
|
-
link?: string,
|
19
|
-
newWindow?: boolean,
|
20
|
-
size?: IconSizes,
|
21
|
-
target?: string,
|
22
|
-
variant?: 'default' | 'link',
|
23
|
-
}
|
24
|
-
|
25
|
-
const IconButton = (props: IconButtonProps) => {
|
26
|
-
const {
|
27
|
-
aria = {},
|
28
|
-
className,
|
29
|
-
data = {},
|
30
|
-
htmlType = 'button',
|
31
|
-
icon = 'bars',
|
32
|
-
id,
|
33
|
-
link,
|
34
|
-
newWindow = false,
|
35
|
-
size = "2x",
|
36
|
-
target,
|
37
|
-
variant = "default",
|
38
|
-
} = props
|
39
|
-
|
40
|
-
const ariaProps = buildAriaProps(aria)
|
41
|
-
const dataProps = buildDataProps(data)
|
42
|
-
const classes = classnames(buildCss('pb_icon_button_kit', variant), globalProps(props), className)
|
43
|
-
|
44
|
-
return (
|
45
|
-
<div
|
46
|
-
{...ariaProps}
|
47
|
-
{...dataProps}
|
48
|
-
className={classes}
|
49
|
-
id={id}
|
50
|
-
>
|
51
|
-
<Button
|
52
|
-
borderRadius="lg"
|
53
|
-
htmlType={htmlType}
|
54
|
-
link={link}
|
55
|
-
newWindow={newWindow}
|
56
|
-
target={target}
|
57
|
-
>
|
58
|
-
<Icon
|
59
|
-
className="icon_button_icon"
|
60
|
-
fixedWidth
|
61
|
-
icon={icon}
|
62
|
-
paddingX="xxs"
|
63
|
-
paddingY="xs"
|
64
|
-
size={size}
|
65
|
-
/>
|
66
|
-
</Button>
|
67
|
-
</div>
|
68
|
-
)
|
69
|
-
}
|
70
|
-
|
71
|
-
export default IconButton
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import React from 'react'
|
2
|
-
import { IconButton } from 'playbook-ui'
|
3
|
-
|
4
|
-
const IconButtonDefault = (props) => (
|
5
|
-
<div>
|
6
|
-
<IconButton
|
7
|
-
{...props}
|
8
|
-
/>
|
9
|
-
<IconButton
|
10
|
-
{...props}
|
11
|
-
marginTop="md"
|
12
|
-
variant="link"
|
13
|
-
/>
|
14
|
-
</div>
|
15
|
-
)
|
16
|
-
|
17
|
-
export default IconButtonDefault
|