FIX: improves positioning of select-kit body
This commit is contained in:
parent
c689731fab
commit
460c905dc6
|
@ -111,11 +111,10 @@ export default Ember.Mixin.create({
|
|||
const discourseHeader = $(".d-header")[0];
|
||||
const discourseHeaderHeight = discourseHeader ? (discourseHeader.getBoundingClientRect().top + this._computedStyle(discourseHeader, "height")) : 0;
|
||||
const bodyHeight = this._computedStyle(this.$body()[0], "height");
|
||||
const windowWidth = $(window).width();
|
||||
const componentHeight = this._computedStyle(this.get("element"), "height");
|
||||
const componentWidth = this._computedStyle(this.get("element"), "width");
|
||||
const offsetTop = this.get("element").getBoundingClientRect().top;
|
||||
const offsetBottom = this.get("element").getBoundingClientRect().bottom;
|
||||
const windowWidth = $(window).width();
|
||||
|
||||
if (this.get("fullWidthOnMobile") && (this.site && this.site.isMobileDevice)) {
|
||||
const margin = 10;
|
||||
|
@ -124,30 +123,27 @@ export default Ember.Mixin.create({
|
|||
options.width = windowWidth - margin * 2;
|
||||
options.maxWidth = options.minWidth = "unset";
|
||||
} else {
|
||||
const parentWidth = this.$scrollableParent().length ? this.$scrollableParent().width() : windowWidth;
|
||||
const bodyWidth = this._computedStyle(this.$body()[0], "width");
|
||||
|
||||
if (this._isRTL()) {
|
||||
const horizontalSpacing = this.get("element").getBoundingClientRect().right;
|
||||
const hasHorizontalSpace = horizontalSpacing - (this.get("horizontalOffset") + bodyWidth) > 0;
|
||||
if (hasHorizontalSpace) {
|
||||
this.setProperties({ isLeftAligned: true, isRightAligned: false });
|
||||
options.left = bodyWidth + this.get("horizontalOffset");
|
||||
let marginToEdge;
|
||||
if (this.$scrollableParent().length) {
|
||||
marginToEdge = this.$().offset().left - this.$scrollableParent().offset().left;
|
||||
} else {
|
||||
this.setProperties({ isLeftAligned: false, isRightAligned: true });
|
||||
options.right = - (bodyWidth - componentWidth + this.get("horizontalOffset"));
|
||||
marginToEdge = this.get("element").getBoundingClientRect().left;
|
||||
}
|
||||
} else {
|
||||
const horizontalSpacing = this.get("element").getBoundingClientRect().left;
|
||||
const hasHorizontalSpace = (windowWidth - (this.get("horizontalOffset") + horizontalSpacing + bodyWidth) > 0);
|
||||
if (hasHorizontalSpace) {
|
||||
|
||||
const enoughMarginToOppositeEdge = (parentWidth - marginToEdge - bodyWidth + this.get("horizontalOffset")) > 0;
|
||||
if (enoughMarginToOppositeEdge) {
|
||||
this.setProperties({ isLeftAligned: true, isRightAligned: false });
|
||||
options.left = this.get("horizontalOffset");
|
||||
options.right = "unset";
|
||||
} else {
|
||||
this.setProperties({ isLeftAligned: false, isRightAligned: true });
|
||||
options.left = "unset";
|
||||
options.right = this.get("horizontalOffset");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const fullHeight = this.get("verticalOffset") + bodyHeight + componentHeight;
|
||||
const hasBelowSpace = $(window).height() - offsetBottom - fullHeight > 0;
|
||||
|
@ -166,8 +162,8 @@ export default Ember.Mixin.create({
|
|||
|
||||
_applyFixedPosition() {
|
||||
if (this.get("isExpanded") !== true) return;
|
||||
if (this.$fixedPlaceholder().length === 1) return;
|
||||
if (this.$scrollableParent().length === 0) return;
|
||||
if (this.$fixedPlaceholder().length) return;
|
||||
if (!this.$scrollableParent().length) return;
|
||||
|
||||
const width = this._computedStyle(this.get("element"), "width");
|
||||
const height = this._computedStyle(this.get("element"), "height");
|
||||
|
|
Loading…
Reference in New Issue