summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/lib/utils/common_utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/lib/utils/common_utils.js')
-rw-r--r--app/assets/javascripts/lib/utils/common_utils.js14
1 files changed, 11 insertions, 3 deletions
diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js
index 4a48852159a..a60748215ab 100644
--- a/app/assets/javascripts/lib/utils/common_utils.js
+++ b/app/assets/javascripts/lib/utils/common_utils.js
@@ -31,7 +31,7 @@ export const getProjectSlug = () => {
};
export const getGroupSlug = () => {
- if (isInGroupsPage()) {
+ if (isInProjectPage() || isInGroupsPage()) {
return $('body').data('group');
}
return null;
@@ -244,22 +244,28 @@ export const contentTop = () => {
);
};
-export const scrollToElement = element => {
+export const scrollToElement = (element, options = {}) => {
let $el = element;
if (!(element instanceof $)) {
$el = $(element);
}
const { top } = $el.offset();
+ const { offset = 0 } = options;
// eslint-disable-next-line no-jquery/no-animate
return $('body, html').animate(
{
- scrollTop: top - contentTop(),
+ scrollTop: top - contentTop() + offset,
},
200,
);
};
+export const scrollToElementWithContext = element => {
+ const offsetMultiplier = -0.1;
+ return scrollToElement(element, { offset: window.innerHeight * offsetMultiplier });
+};
+
/**
* Returns a function that can only be invoked once between
* each browser screen repaint.
@@ -718,6 +724,8 @@ export const convertObjectProps = (conversionFunction, obj = {}, options = {}) =
} else {
acc[conversionFunction(prop)] = convertObjectProps(conversionFunction, val, options);
}
+ } else if (isObjParameterArray) {
+ acc[prop] = val;
} else {
acc[conversionFunction(prop)] = val;
}