Fixed #4795 - v2 DataTable: Frozen column improvements

pull/5039/head
tugcekucukoglu 2023-11-10 14:18:19 +03:00
parent 4dd5b46a2f
commit 52f5c5a09a
5 changed files with 34 additions and 4 deletions

View File

@ -343,7 +343,7 @@ export default {
let align = this.columnProp('alignFrozen');
if (align === 'right') {
let right = 0;
let next = this.$el.nextElementSibling;
let next = DomHandler.getNextElementSibling(this.$el, '.p-frozen-column');
if (next) {
right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
}

View File

@ -45,7 +45,7 @@ export default {
let align = this.columnProp('alignFrozen');
if (align === 'right') {
let right = 0;
let next = this.$el.nextElementSibling;
let next = DomHandler.getNextElementSibling(this.$el, '.p-frozen-column');
if (next) {
right = DomHandler.getOuterWidth(next) + parseFloat(next.style.left);
}

View File

@ -155,7 +155,7 @@ export default {
let align = this.columnProp('alignFrozen');
if (align === 'right') {
let right = 0;
let next = this.$el.nextElementSibling;
let next = DomHandler.getNextElementSibling(this.$el, '.p-frozen-column');
if (next) {
right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
}
@ -163,7 +163,7 @@ export default {
}
else {
let left = 0;
let prev = this.$el.previousElementSibling;
let prev = DomHandler.getPreviousElementSibling(this.$el, '.p-frozen-column');
if (prev) {
left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
}

View File

@ -480,6 +480,34 @@ export default class DomHandler {
return focusableElements.length > 0 ? focusableElements[0] : null;
}
static getPreviousElementSibling(element, selector) {
let previousElement = element.previousElementSibling;
while (previousElement) {
if (previousElement.matches(selector)) {
return previousElement;
} else {
previousElement = previousElement.previousElementSibling;
}
}
return null;
}
static getNextElementSibling(element, selector) {
let nextElement = element.nextElementSibling;
while (nextElement) {
if (nextElement.matches(selector)) {
return nextElement;
} else {
nextElement = nextElement.nextElementSibling;
}
}
return null;
}
static isClickable(element) {
const targetNode = element.nodeName;
const parentNode = element.parentElement && element.parentElement.nodeName;

View File

@ -44,6 +44,8 @@ export declare class DomHandler {
static invokeElementMethod(el: HTMLElement, methodName: string, args: any): void;
static getFocusableElements(el: HTMLElement): any[];
static getFirstFocusableElement(el: HTMLElement): any;
static getPreviousElementSibling(el: HTMLElement, selector?: string): any;
static getNextElementSibling(el: HTMLElement, selector?: string): any;
static isClickable(el: HTMLElement): boolean;
static applyStyle(el: HTMLElement, style: any): void;
static isIOS(): boolean;