98 lines
5.0 KiB
JavaScript
98 lines
5.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var tslib_1 = require("tslib");
|
|
var props_1 = require("./props");
|
|
var fmtEvent_1 = tslib_1.__importDefault(require("../_util/fmtEvent"));
|
|
var value_1 = tslib_1.__importDefault(require("../mixins/value"));
|
|
var systemInfo;
|
|
Component({
|
|
props: props_1.PopoverDefaultProps,
|
|
data: {
|
|
adjustedPlacement: '',
|
|
},
|
|
mixins: [
|
|
(0, value_1.default)({
|
|
valueKey: 'visible',
|
|
defaultValueKey: 'defaultVisible',
|
|
transformValue: function (val) {
|
|
var _this = this;
|
|
var value = val || false;
|
|
var _a = this.props, placement = _a.placement, autoAdjustOverflow = _a.autoAdjustOverflow;
|
|
if (autoAdjustOverflow) {
|
|
if (value) {
|
|
setTimeout(function () {
|
|
my.createSelectorQuery()
|
|
.select("#ant-popover-content-".concat(_this.$id))
|
|
.boundingClientRect()
|
|
.exec(function (ret) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
var rect, adjustedPlacement, left, top, width, height, e_1;
|
|
return tslib_1.__generator(this, function (_a) {
|
|
switch (_a.label) {
|
|
case 0:
|
|
rect = ret === null || ret === void 0 ? void 0 : ret[0];
|
|
adjustedPlacement = placement;
|
|
if (!rect) return [3 /*break*/, 5];
|
|
left = rect.left, top = rect.top, width = rect.width, height = rect.height;
|
|
if (top < 0) {
|
|
adjustedPlacement = adjustedPlacement.replace('top', 'bottom');
|
|
}
|
|
if (left < 0) {
|
|
adjustedPlacement = adjustedPlacement.replace('left', 'right');
|
|
}
|
|
if (!!systemInfo) return [3 /*break*/, 4];
|
|
_a.label = 1;
|
|
case 1:
|
|
_a.trys.push([1, 3, , 4]);
|
|
return [4 /*yield*/, my.getSystemInfo()];
|
|
case 2:
|
|
systemInfo = _a.sent();
|
|
return [3 /*break*/, 4];
|
|
case 3:
|
|
e_1 = _a.sent();
|
|
console.warn('getSystemInfo fail');
|
|
return [3 /*break*/, 4];
|
|
case 4:
|
|
if (systemInfo) {
|
|
if (left + width > systemInfo.windowWidth) {
|
|
adjustedPlacement = adjustedPlacement.replace('right', 'left');
|
|
}
|
|
if (top + height >
|
|
systemInfo.windowHeight -
|
|
systemInfo.titleBarHeight -
|
|
systemInfo.statusBarHeight) {
|
|
adjustedPlacement = adjustedPlacement.replace('bottom', 'top');
|
|
}
|
|
}
|
|
_a.label = 5;
|
|
case 5:
|
|
this.setData({ adjustedPlacement: adjustedPlacement });
|
|
return [2 /*return*/];
|
|
}
|
|
});
|
|
}); });
|
|
});
|
|
}
|
|
else {
|
|
this.setData({ adjustedPlacement: '' });
|
|
}
|
|
}
|
|
return {
|
|
needUpdate: true,
|
|
value: value,
|
|
};
|
|
},
|
|
}),
|
|
],
|
|
methods: {
|
|
onVisibleChange: function () {
|
|
var onVisibleChange = this.props.onVisibleChange;
|
|
var value = !this.getValue();
|
|
if (!this.isControlled()) {
|
|
this.update(value);
|
|
}
|
|
if (onVisibleChange) {
|
|
return onVisibleChange(value, (0, fmtEvent_1.default)(this.props));
|
|
}
|
|
},
|
|
},
|
|
}); |