Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DS-541 Floating Action Buttons #2423

Merged
merged 75 commits into from
Apr 15, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
7820e1a
first pass
cjwhitedev Dec 23, 2021
c79466e
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Dec 23, 2021
8ed9107
DS-541 documentation. prepare for code review.
cjwhitedev Jan 13, 2022
d241c10
DS-541 component wrap up
cjwhitedev Jan 21, 2022
ae039fa
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Jan 21, 2022
ef53f3e
add position shift to demo
cjwhitedev Jan 21, 2022
de1b33b
rename component and make it more semantic
cjwhitedev Jan 27, 2022
f52787f
add tests
cjwhitedev Jan 27, 2022
1019a82
add animation and update test
cjwhitedev Jan 28, 2022
b70a0c1
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Jan 28, 2022
860c38a
merge master incache
cjwhitedev Jan 28, 2022
ba60b57
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Jan 28, 2022
8b16ad6
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Feb 3, 2022
17b451c
PR feedback
cjwhitedev Feb 3, 2022
4c67978
add simple tooltip to button element
cjwhitedev Feb 11, 2022
7f37902
fab overhaul
cjwhitedev Feb 11, 2022
503f3d1
update jest test
cjwhitedev Feb 15, 2022
477a83a
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Feb 15, 2022
c9f386d
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Feb 17, 2022
42e5431
added ul and li schemas, renamed scss variables to be namespaced.
cjwhitedev Feb 17, 2022
725291c
rename position to placement and options to start and end
cjwhitedev Feb 17, 2022
9380768
made content required on the toggle button. made show_on_scroll a dat…
cjwhitedev Feb 18, 2022
0ea1633
update button simple tooltip. change show_on_load to hide. remove re…
cjwhitedev Feb 23, 2022
22d59ae
remote z-index from button
cjwhitedev Feb 24, 2022
81b94f6
revert tooltip work
cjwhitedev Feb 25, 2022
423bbc0
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Feb 25, 2022
d84ff79
fix list toggle conflict
cjwhitedev Feb 28, 2022
7280f7c
DS-541: FAB css anime
Mar 1, 2022
a0e112a
DS-541: FAB js more than one btn test
Mar 1, 2022
e1694ce
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Mar 1, 2022
3d90559
update docs, update test, rewrite animation.
cjwhitedev Mar 3, 2022
3d41e4f
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Mar 3, 2022
f19e92f
motion reduce styles
cjwhitedev Mar 3, 2022
947fc81
ds-541: clean up css
mikemai2awesome Mar 8, 2022
bb13dcc
ds-541: fix small button icon size
mikemai2awesome Mar 8, 2022
63a4918
ds-541: fix spacing and transitions
mikemai2awesome Mar 8, 2022
6ae6fdd
ds-541: fix toggle button
mikemai2awesome Mar 8, 2022
c8e5750
ds-541: organize docs
mikemai2awesome Mar 8, 2022
c1f38f6
ds-541: scope flex to list item with children
mikemai2awesome Mar 8, 2022
63338ac
ds-541: fix placement and offsets
mikemai2awesome Mar 8, 2022
7423ac5
ds-541: fix css var fallback order
mikemai2awesome Mar 8, 2022
831edca
ds-541: fix placement and offsets math
mikemai2awesome Mar 8, 2022
d92fd46
ds-541: animate toggle button icons
mikemai2awesome Mar 8, 2022
226b3a5
ds-541: refine docs
mikemai2awesome Mar 8, 2022
433b0b1
ds-541: update description
mikemai2awesome Mar 8, 2022
9a083bf
fix demos. clean up code. show by default so it works without js. fi…
cjwhitedev Mar 15, 2022
f66378c
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Mar 15, 2022
4f750d5
update tests to reflect recent changes
cjwhitedev Mar 15, 2022
f3e0f76
ds-541: update doc copy
mikemai2awesome Mar 21, 2022
e46d0ae
hide when scrolled to top.
cjwhitedev Mar 22, 2022
291689d
ds-541: fix css transition and remove unnecessary line in twig
mikemai2awesome Mar 22, 2022
3f07ce5
remove FAB palcement.
cjwhitedev Mar 22, 2022
54e7bfa
Merge branch 'feature/DS-541-floating-action-buttons' of ssh://github…
cjwhitedev Mar 22, 2022
f073612
more placement removal
cjwhitedev Mar 22, 2022
60ad7cd
update test after removing placement.
cjwhitedev Mar 22, 2022
df7a2eb
ds-541: update docs
mikemai2awesome Mar 22, 2022
20f1201
ds-541: fix show on scroll demo
mikemai2awesome Mar 22, 2022
6751cac
ds-541: rewrite schema descriptions
mikemai2awesome Mar 22, 2022
cf27c70
prettier formatting
cjwhitedev Mar 22, 2022
d63489c
Merge branch 'master' into feature/DS-541-floating-action-buttons
danielamorse Mar 23, 2022
51c5348
DS-541: rename showOnScroll, minor JS tweaks
danielamorse Mar 24, 2022
475e886
move show on scroll position to list item instead of main component.
cjwhitedev Mar 24, 2022
864e9e2
make scroll reveal work with multiple list items.
cjwhitedev Mar 24, 2022
ea35828
remove 'children' in favor of a new query. resolve more showOnScroll …
cjwhitedev Mar 25, 2022
ca0b45c
add another item to show on scroll demo
cjwhitedev Mar 28, 2022
a6a3217
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Apr 4, 2022
86aa978
increment package version
cjwhitedev Apr 4, 2022
fa2d63c
scrollhandler overhaul
cjwhitedev Apr 5, 2022
86c8ef4
DS-541: remove hide_on_load
cjwhitedev Apr 11, 2022
83ef78b
DS-541: selector update
cjwhitedev Apr 11, 2022
2cde480
Merge branch 'master' into feature/DS-541-floating-action-buttons
cjwhitedev Apr 11, 2022
d13f397
DS-541: Minor JS style edit
danielamorse Apr 15, 2022
5d2983c
DS-541: Remove remaining scroll-position demos
danielamorse Apr 15, 2022
557ed4a
ds-541: fix docs
mikemai2awesome Apr 15, 2022
c57ddea
ds-541: fix anchors
mikemai2awesome Apr 15, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,19 @@
{% include '@bolt-layouts-layout/layout-item.twig' with {
content: banner,
} only %}

{% set title %}
{% include '@bolt-components-headline/headline.twig' with {
text: 'Article Title',
attributes: {
id: 'main-title'
},
} only %}
{% endset %}
{% include '@bolt-layouts-layout/layout-item.twig' with {
content: 'Bacon ipsum dolor amet burgdoggen beef rump sausage. Chislic beef hamburger turducken pork chop. Shank drumstick biltong, landjaeger ham hock meatloaf swine flank. Swine tenderloin shank, sirloin pork chicken jerky chislic ball tip.',
} only %}
{% include '@bolt-layouts-layout/layout-item.twig' with {
content: 'Ground round kielbasa meatloaf, bacon flank rump pancetta. Burgdoggen hamburger jowl turducken chicken, jerky flank kielbasa pork belly beef ribs fatback boudin shankle rump turkey. Fatback andouille chicken ground round beef, tail buffalo pastrami capicola chislic sausage leberkas short ribs. Kielbasa jowl jerky, swine porchetta boudin drumstick andouille chicken flank ribeye.',
} only %}
{% include '@bolt-layouts-layout/layout-item.twig' with {
content: 'Picanha biltong salami pork chop capicola t-bone jowl tongue. Cow pork chop jowl capicola, doner pork jerky short loin spare ribs turducken frankfurter shankle sausage. Spare ribs pork biltong, chicken alcatra cow picanha brisket drumstick tongue prosciutto shank beef tail pig. Kielbasa t-bone venison chislic, tongue pork tenderloin capicola chuck pastrami jerky.',
} only %}
{% include '@bolt-layouts-layout/layout-item.twig' with {
content: 'Hamburger pastrami short loin pork belly salami pig. Spare ribs sausage t-bone ham hock turkey pork chop tri-tip picanha. Venison turducken beef ribs cow, corned beef swine spare ribs pork chop. Turducken venison pork chop short ribs, fatback tri-tip turkey leberkas t-bone pig andouille ham brisket tongue. Meatloaf bresaola frankfurter pork loin chicken doner, flank beef ground round biltong beef ribs landjaeger pastrami leberkas.',
} only %}
{% include '@bolt-layouts-layout/layout-item.twig' with {
content: 'Short loin andouille ball tip, filet mignon beef ribs chicken cupim ground round pork chop beef tongue. Swine flank jerky pastrami kielbasa short loin tenderloin short ribs prosciutto turkey sirloin turducken jowl. Salami ribeye ball tip, buffalo kielbasa tail doner burgdoggen leberkas meatball. Rump buffalo salami chislic venison landjaeger boudin, ribeye tongue.',
content: title,
} only %}

{% include '@bolt-layouts-layout/layout-item.twig' with {
content: 'Bacon ipsum dolor amet burgdoggen beef rump sausage. Chislic beef hamburger turducken pork chop. Shank drumstick biltong, landjaeger ham hock meatloaf swine flank. Swine tenderloin shank, sirloin pork chicken jerky chislic ball tip.',
} only %}
Expand Down Expand Up @@ -121,11 +119,11 @@
{% set fab_list_items %}
{% include '@bolt-components-floating-action-buttons/floating-action-buttons-li.twig' with {
content: scroll_to_top_button,
show_on_scroll_position: '100px'
show_on_scroll_selector: '#main-title'
} only %}
{% include '@bolt-components-floating-action-buttons/floating-action-buttons-li.twig' with {
content: placeholder_button,
show_on_scroll_position: '50px'
show_on_scroll_selector: '#main-title'
} only %}
{% include '@bolt-components-floating-action-buttons/floating-action-buttons-li.twig' with {
content: placeholder_button,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,6 @@
{% set fab_list_items %}
{% include '@bolt-components-floating-action-buttons/floating-action-buttons-li.twig' with {
content: scroll_to_top_button,
show_on_scroll_position: '100px'
} only %}
{% include '@bolt-components-floating-action-buttons/floating-action-buttons-li.twig' with {
content: share_button,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% set description %}
The <code>show_on_scroll_position</code> prop on the list item allows floating action buttons to show on scroll.
The <code>show_on_scroll_selector</code> prop on the list item allows floating action buttons to show on scroll.
{% endset %}

{% set notes %}
Expand Down Expand Up @@ -29,7 +29,7 @@
{% set twig_markup %}{% verbatim %}
{% include '@bolt-components-floating-action-buttons/floating-action-buttons-li.twig' with {
content: content,
show_on_scroll_position: '100px'
show_on_scroll_selector: '#main-title'
} only %}
{% endverbatim %}{% endset %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

exports[`Bolt Floating Action Buttons default 1`] = `
<div class="c-bolt-floating-action-buttons">
<ul class="c-bolt-floating-action-buttons__list js-bolt-floating-action-buttons-list">
<ul class="c-bolt-floating-action-buttons__list c-bolt-floating-action-buttons__list--hidden js-bolt-floating-action-buttons-list">
<li class="c-bolt-floating-action-buttons__list-item js-bolt-floating-action-buttons-list-item">
<button type="button"
class="e-bolt-button e-bolt-button--icon-only"
Expand Down Expand Up @@ -91,7 +91,7 @@ exports[`Bolt Floating Action Buttons default 1`] = `
Toggle Menu
</span>
</bolt-tooltip>
<ul class="c-bolt-floating-action-buttons__list js-bolt-floating-action-buttons-list">
<ul class="c-bolt-floating-action-buttons__list c-bolt-floating-action-buttons__list--hidden js-bolt-floating-action-buttons-list">
</ul>
</li>
</ul>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import { render, stopServer } from '../../../testing/testing-helpers';
import schema from '../floating-action-buttons.schema';
// eslint-disable-next-line camelcase
const { show_on_scroll_position } = schema.properties;
let page, fixtures;

afterAll(async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ module.exports = {
description:
'Renders a list of secondary buttons. Use the floating-action-buttons-ul.twig template to render a list. Only use this prop if the floating-action-buttons-toggle-button.twig template is used for the content prop.',
},
show_on_scroll_position: {
show_on_scroll_selector: {
type: 'string',
description:
'This will leave the list item hidden until the page is scrolled to a certain position. A percentage or pixel value must be passed here as a string (ie. "20%" or "200px").',
'This will leave the list item hidden until the page is scrolled to to show then hide a certain element (ie. "h1").',
cjwhitedev marked this conversation as resolved.
Show resolved Hide resolved
},
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
'c-bolt-floating-action-buttons__list-item',
'js-bolt-floating-action-buttons-list-item',
children ? 'c-bolt-floating-action-buttons__list-item--has-children',
show_on_scroll_position ? 'c-bolt-floating-action-buttons__list-item--hidden',
show_on_scroll_position ? 'js-bolt-floating-action-buttons-list-item--hidden'
show_on_scroll_selector ? 'c-bolt-floating-action-buttons__list-item--hidden',
show_on_scroll_selector ? 'js-bolt-floating-action-buttons-list-item--hidden'
] %}

<li {{ attributes.addClass(classes) }}
{% if this.data.show_on_scroll_position.value %}data-show-on-scroll-position="{{ this.data.show_on_scroll_position.value }}"{% endif %}
{{ this.props|without("class")|without("show_on_scroll_position") }}>
{% if this.data.show_on_scroll_selector.value %}data-show-on-scroll-selector="{{ this.data.show_on_scroll_selector.value }}"{% endif %}
{{ this.props|without("class")|without("show_on_scroll_selector") }}>
{{ content }}

{% if children %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,35 +95,30 @@ export class BoltFloatingActionButtons {
}
}

getScrollPositionFromProp(el) {
let revealPosition = 0;
const scrollInt = parseInt(el.dataset.showOnScrollPosition, 10);
const pageHeight = window.innerHeight;

if (el.dataset.showOnScrollPosition.includes('px')) {
revealPosition = scrollInt;
} else if (el.dataset.showOnScrollPosition.includes('%')) {
// set a pixel value based on the percentage value.
revealPosition = pageHeight * (scrollInt / 100);
}
return revealPosition;
}

addScrollHandler(el) {
let scrollPosition = window.scrollY;
const revealPosition = this.getScrollPositionFromProp(el);
const callback = entries => {
entries.forEach(entry => {
const isIntersectingTop =
entry.intersectionRect.top >= entry.boundingClientRect.top;
const isLeaving = entry.intersectionRatio === 0;

const scrollHandler = () => {
scrollPosition = window.scrollY;
if (revealPosition > 0 && scrollPosition >= revealPosition) {
el.classList.remove(
'c-bolt-floating-action-buttons__list-item--hidden',
);
} else {
el.classList.add('c-bolt-floating-action-buttons__list-item--hidden');
}
if (isIntersectingTop) {
if (isLeaving) {
// leaving
el.classList.remove(
'c-bolt-floating-action-buttons__list-item--hidden',
);
} else {
// entering
el.classList.add(
'c-bolt-floating-action-buttons__list-item--hidden',
);
}
}
});
};

window.addEventListener('scroll', scrollHandler);
const observer = new IntersectionObserver(callback);
observer.observe(document.querySelector(el.dataset.showOnScrollSelector));
cjwhitedev marked this conversation as resolved.
Show resolved Hide resolved
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
{# Array of classes based on the defined + default props #}
{% set classes = [
'c-bolt-floating-action-buttons',
(this.data.hide_on_load.value or this.data.show_on_scroll_position.value) ? 'c-bolt-floating-action-buttons--hidden' : '',
this.data.hide_on_load.value ? 'c-bolt-floating-action-buttons--hidden' : '',
cjwhitedev marked this conversation as resolved.
Show resolved Hide resolved
] %}

<div
Expand Down