@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
64 lines • 13.6 kB
JavaScript
import { ConnectedPositioningStrategy } from './connected-positioning-strategy';
import { Util } from '../utilities';
export class BaseFitPositionStrategy extends ConnectedPositioningStrategy {
/** @inheritdoc */
position(contentElement, size, document, initialCall) {
const rects = super.calculateElementRectangles(contentElement);
const connectedFit = {};
if (initialCall) {
connectedFit.targetRect = rects.targetRect;
connectedFit.contentElementRect = rects.elementRect;
this._initialSettings = this._initialSettings || Object.assign({}, this.settings);
this.settings = Object.assign({}, this._initialSettings);
connectedFit.viewPortRect = Util.getViewportRect(document);
this.updateViewPortFit(connectedFit);
if (connectedFit.fitHorizontal.back < 0 || connectedFit.fitHorizontal.forward < 0 ||
connectedFit.fitVertical.back < 0 || connectedFit.fitVertical.forward < 0) {
this.fitInViewport(contentElement, connectedFit);
}
}
this.setStyle(contentElement, rects.targetRect, rects.elementRect, connectedFit);
}
/**
* Checks if element can fit in viewport and updates provided connectedFit
* with the result
* @param connectedFit connectedFit to update
*/
updateViewPortFit(connectedFit) {
connectedFit.left = this.calculateLeft(connectedFit.targetRect, connectedFit.contentElementRect, this.settings.horizontalStartPoint, this.settings.horizontalDirection, connectedFit.horizontalOffset ? connectedFit.horizontalOffset : 0);
connectedFit.right = connectedFit.left + connectedFit.contentElementRect.width;
connectedFit.fitHorizontal = {
back: Math.round(connectedFit.left - connectedFit.viewPortRect.left),
forward: Math.round(connectedFit.viewPortRect.right - connectedFit.right)
};
connectedFit.top = this.calculateTop(connectedFit.targetRect, connectedFit.contentElementRect, this.settings.verticalStartPoint, this.settings.verticalDirection, connectedFit.verticalOffset ? connectedFit.verticalOffset : 0);
connectedFit.bottom = connectedFit.top + connectedFit.contentElementRect.height;
connectedFit.fitVertical = {
back: Math.round(connectedFit.top - connectedFit.viewPortRect.top),
forward: Math.round(connectedFit.viewPortRect.bottom - connectedFit.bottom)
};
}
/**
* Calculates the position of the left border of the element if it gets positioned
* with provided start point and direction
* @param targetRect Rectangle of the target where element is attached
* @param elementRect Rectangle of the element
* @param startPoint Start point of the target
* @param direction Direction in which to show the element
*/
calculateLeft(targetRect, elementRect, startPoint, direction, offset) {
return targetRect.right + targetRect.width * startPoint + elementRect.width * direction + offset;
}
/**
* Calculates the position of the top border of the element if it gets positioned
* with provided position settings related to the target
* @param targetRect Rectangle of the target where element is attached
* @param elementRect Rectangle of the element
* @param startPoint Start point of the target
* @param direction Direction in which to show the element
*/
calculateTop(targetRect, elementRect, startPoint, direction, offset) {
return targetRect.bottom + targetRect.height * startPoint + elementRect.height * direction + offset;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maXQtcG9zaXRpb24tc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL292ZXJsYXkvcG9zaXRpb24vYmFzZS1maXQtcG9zaXRpb24tc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUFrRSxJQUFJLEVBQStCLE1BQU0sY0FBYyxDQUFDO0FBRWpJLE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsNEJBQTRCO0lBSTlFLGtCQUFrQjtJQUNsQixRQUFRLENBQUMsY0FBMkIsRUFBRSxJQUFVLEVBQUUsUUFBbUIsRUFBRSxXQUFxQjtRQUN4RixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0QsTUFBTSxZQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFdBQVcsRUFBRTtZQUNiLFlBQVksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUMzQyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pELFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckMsSUFBSSxZQUFZLENBQUMsYUFBYSxD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dGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbmluZ1N0cmF0ZWd5IH0gZnJvbSAnLi9jb25uZWN0ZWQtcG9zaXRpb25pbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgSG9yaXpvbnRhbEFsaWdubWVudCwgVmVydGljYWxBbGlnbm1lbnQsIFBvc2l0aW9uU2V0dGluZ3MsIFNpemUsIFV0aWwsIENvbm5lY3RlZEZpdCwgT3V0T2ZWaWV3UG9ydCB9IGZyb20gJy4uL3V0aWxpdGllcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRml0UG9zaXRpb25TdHJhdGVneSBleHRlbmRzIENvbm5lY3RlZFBvc2l0aW9uaW5nU3RyYXRlZ3kge1xuICAgIHByb3RlY3RlZCBfaW5pdGlhbFNpemU6IFNpemU7XG4gICAgcHJvdGVjdGVkIF9pbml0aWFsU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3M7XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwb3NpdGlvbihjb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQsIHNpemU6IFNpemUsIGRvY3VtZW50PzogRG9jdW1lbnQsIGluaXRpYWxDYWxsPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCByZWN0cyA9IHN1cGVyLmNhbGN1bGF0ZUVsZW1lbnRSZWN0YW5nbGVzKGNvbnRlbnRFbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29ubmVjdGVkRml0OiBDb25uZWN0ZWRGaXQgPSB7fTtcbiAgICAgICAgaWYgKGluaXRpYWxDYWxsKSB7XG4gICAgICAgICAgICBjb25uZWN0ZWRGaXQudGFyZ2V0UmVjdCA9IHJlY3RzLnRhcmdldFJlY3Q7XG4gICAgICAgICAgICBjb25uZWN0ZWRGaXQuY29udGVudEVsZW1lbnRSZWN0ID0gcmVjdHMuZWxlbWVudFJlY3Q7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsU2V0dGluZ3MgPSB0aGlzLl9pbml0aWFsU2V0dGluZ3MgfHwgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5faW5pdGlhbFNldHRpbmdzKTtcbiAgICAgICAgICAgIGNvbm5lY3RlZEZpdC52aWV3UG9ydFJlY3QgPSBVdGlsLmdldFZpZXdwb3J0UmVjdChkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdQb3J0Rml0KGNvbm5lY3RlZEZpdCk7XG4gICAgICAgICAgICBpZiAoY29ubmVjdGVkRml0LmZpdEhvcml6b250YWwuYmFjayA8IDAgfHwgY29ubmVjdGVkRml0LmZpdEhvcml6b250YWwuZm9yd2FyZCA8IDAgfHxcbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRGaXQuZml0VmVydGljYWwuYmFjayA8IDAgfHwgY29ubmVjdGVkRml0LmZpdFZlcnRpY2FsLmZvcndhcmQgPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maXRJblZpZXdwb3J0KGNvbnRlbnRFbGVtZW50LCBjb25uZWN0ZWRGaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3R5bGUoY29udGVudEVsZW1lbnQsIHJlY3RzLnRhcmdldFJlY3QsIHJlY3RzLmVsZW1lbnRSZWN0LCBjb25uZWN0ZWRGaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBlbGVtZW50IGNhbiBmaXQgaW4gdmlld3BvcnQgYW5kIHVwZGF0ZXMgcHJvdmlkZWQgY29ubmVjdGVkRml0XG4gICAgICogd2l0aCB0aGUgcmVzdWx0XG4gICAgICogQHBhcmFtIGNvbm5lY3RlZEZpdCBjb25uZWN0ZWRGaXQgdG8gdXBkYXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZpZXdQb3J0Rml0KGNvbm5lY3RlZEZpdDogQ29ubmVjdGVkRml0KSB7XG4gICAgICAgIGNvbm5lY3RlZEZpdC5sZWZ0ID0gdGhpcy5jYWxjdWxhdGVMZWZ0KFxuICAgICAgICAgICAgY29ubmVjdGVkRml0LnRhcmdldFJlY3QsXG4gICAgICAgICAgICBjb25uZWN0ZWRGaXQuY29udGVudEVsZW1lbnRSZWN0LFxuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5ob3Jpem9udGFsU3RhcnRQb2ludCxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuaG9yaXpvbnRhbERpcmVjdGlvbixcbiAgICAgICAgICAgIGNvbm5lY3RlZEZpdC5ob3Jpem9udGFsT2Zmc2V0ID8gY29ubmVjdGVkRml0Lmhvcml6b250YWxPZmZzZXQgOiAwKTtcbiAgICAgICAgY29ubmVjdGVkRml0LnJpZ2h0ID0gY29ubmVjdGVkRml0LmxlZnQgKyBjb25uZWN0ZWRGaXQuY29udGVudEVsZW1lbnRSZWN0LndpZHRoO1xuICAgICAgICBjb25uZWN0ZWRGaXQuZml0SG9yaXpvbnRhbCA9IHtcbiAgICAgICAgICAgICAgICBiYWNrOiBNYXRoLnJvdW5kKGNvbm5lY3RlZEZpdC5sZWZ0IC0gY29ubmVjdGVkRml0LnZpZXdQb3J0UmVjdC5sZWZ0KSxcbiAgICAgICAgICAgICAgICBmb3J3YXJkOiBNYXRoLnJvdW5kKGNvbm5lY3RlZEZpdC52aWV3UG9ydFJlY3QucmlnaHQgLSBjb25uZWN0ZWRGaXQucmlnaHQpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIGNvbm5lY3RlZEZpdC50b3AgPSB0aGlzLmNhbGN1bGF0ZVRvcChcbiAgICAgICAgICAgIGNvbm5lY3RlZEZpdC50YXJnZXRSZWN0LFxuICAgICAgICAgICAgY29ubmVjdGVkRml0LmNvbnRlbnRFbGVtZW50UmVjdCxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MudmVydGljYWxTdGFydFBvaW50LFxuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy52ZXJ0aWNhbERpcmVjdGlvbixcbiAgICAgICAgICAgIGNvbm5lY3RlZEZpdC52ZXJ0aWNhbE9mZnNldCA/IGNvbm5lY3RlZEZpdC52ZXJ0aWNhbE9mZnNldCA6IDApO1xuICAgICAgICBjb25uZWN0ZWRGaXQuYm90dG9tID0gY29ubmVjdGVkRml0LnRvcCArIGNvbm5lY3RlZEZpdC5jb250ZW50RWxlbWVudFJlY3QuaGVpZ2h0O1xuICAgICAgICBjb25uZWN0ZWRGaXQuZml0VmVydGljYWwgPSB7XG4gICAgICAgICAgICBiYWNrOiBNYXRoLnJvdW5kKGNvbm5lY3RlZEZpdC50b3AgLSBjb25uZWN0ZWRGaXQudmlld1BvcnRSZWN0LnRvcCksXG4gICAgICAgICAgICBmb3J3YXJkOiBNYXRoLnJvdW5kKGNvbm5lY3RlZEZpdC52aWV3UG9ydFJlY3QuYm90dG9tIC0gY29ubmVjdGVkRml0LmJvdHRvbSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGVmdCBib3JkZXIgb2YgdGhlIGVsZW1lbnQgaWYgaXQgZ2V0cyBwb3NpdGlvbmVkXG4gICAgICogd2l0aCBwcm92aWRlZCBzdGFydCBwb2ludCBhbmQgZGlyZWN0aW9uXG4gICAgICogQHBhcmFtIHRhcmdldFJlY3QgUmVjdGFuZ2xlIG9mIHRoZSB0YXJnZXQgd2hlcmUgZWxlbWVudCBpcyBhdHRhY2hlZFxuICAgICAqIEBwYXJhbSBlbGVtZW50UmVjdCBSZWN0YW5nbGUgb2YgdGhlIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gc3RhcnRQb2ludCBTdGFydCBwb2ludCBvZiB0aGUgdGFyZ2V0XG4gICAgICogQHBhcmFtIGRpcmVjdGlvbiBEaXJlY3Rpb24gaW4gd2hpY2ggdG8gc2hvdyB0aGUgZWxlbWVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjYWxjdWxhdGVMZWZ0KFxuICAgICAgICB0YXJnZXRSZWN0OiBDbGllbnRSZWN0LCBlbGVtZW50UmVjdDogQ2xpZW50UmVjdCwgc3RhcnRQb2ludDogSG9yaXpvbnRhbEFsaWdubWVudCwgZGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LCBvZmZzZXQ/OiBudW1iZXIpOlxuICAgICAgICBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdC5yaWdodCArIHRhcmdldFJlY3Qud2lkdGggKiBzdGFydFBvaW50ICsgZWxlbWVudFJlY3Qud2lkdGggKiBkaXJlY3Rpb24gKyBvZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvcCBib3JkZXIgb2YgdGhlIGVsZW1lbnQgaWYgaXQgZ2V0cyBwb3NpdGlvbmVkXG4gICAgICogd2l0aCBwcm92aWRlZCBwb3NpdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSB0YXJnZXRcbiAgICAgKiBAcGFyYW0gdGFyZ2V0UmVjdCBSZWN0YW5nbGUgb2YgdGhlIHRhcmdldCB3aGVyZSBlbGVtZW50IGlzIGF0dGFjaGVkXG4gICAgICogQHBhcmFtIGVsZW1lbnRSZWN0IFJlY3RhbmdsZSBvZiB0aGUgZWxlbWVudFxuICAgICAqIEBwYXJhbSBzdGFydFBvaW50IFN0YXJ0IHBvaW50IG9mIHRoZSB0YXJnZXRcbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uIERpcmVjdGlvbiBpbiB3aGljaCB0byBzaG93IHRoZSBlbGVtZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNhbGN1bGF0ZVRvcChcbiAgICAgICAgdGFyZ2V0UmVjdDogQ2xpZW50UmVjdCwgZWxlbWVudFJlY3Q6IENsaWVudFJlY3QsIHN0YXJ0UG9pbnQ6IFZlcnRpY2FsQWxpZ25tZW50LCBkaXJlY3Rpb246IFZlcnRpY2FsQWxpZ25tZW50LCBvZmZzZXQ/OiBudW1iZXIpOlxuICAgICAgICBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGFyZ2V0UmVjdC5ib3R0b20gKyB0YXJnZXRSZWN0LmhlaWdodCAqIHN0YXJ0UG9pbnQgKyBlbGVtZW50UmVjdC5oZWlnaHQgKiBkaXJlY3Rpb24gKyBvZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRml0cyB0aGUgZWxlbWVudCBpbnRvIHZpZXdwb3J0IGFjY29yZGluZyB0byB0aGUgcG9zaXRpb24gc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBlbGVtZW50IHRvIGZpdCBpbiB2aWV3cG9ydFxuICAgICAqIEBwYXJhbSBjb25uZWN0ZWRGaXQgY29ubmVjdGVkRml0IG9iamVjdCBjb250YWluaW5nIGFsbCBuZWNlc3NhcnkgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBmaXRJblZpZXdwb3J0KFxuICAgICAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICAgICAgY29ubmVjdGVkRml0OiBDb25uZWN0ZWRGaXQpO1xufVxuXG5cbiJdfQ==