wix-style-react
Version:
201 lines (177 loc) • 6.86 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _AddItem = _interopRequireDefault(require("../AddItem/AddItem.driver"));
var _testkit = require("wix-ui-core/dist/src/testkit");
var _constants = require("./constants");
var _Tooltip = require("wix-ui-core/dist/src/components/tooltip/Tooltip.driver");
var imageViewerDriverFactory = function imageViewerDriverFactory(_ref) {
var _element = _ref.element,
wrapper = _ref.wrapper,
eventTrigger = _ref.eventTrigger;
var byHook = function byHook(dataHook) {
return _element.querySelector("[data-hook=\"".concat(dataHook, "\"]"));
};
var hasDataAttribute = function hasDataAttribute(dataAttr, el) {
return el.getAttribute(dataAttr) === 'true';
};
var addItemDriver = function addItemDriver() {
return (0, _AddItem["default"])({
element: byHook(_constants.dataHooks.addItem),
eventTrigger: eventTrigger
});
};
var tooltipTestkit = function tooltipTestkit(dataHook) {
return (0, _testkit.tooltipTestkitFactory)({
wrapper: _element,
dataHook: dataHook
});
};
var getImageElement = function getImageElement() {
return byHook(_constants.dataHooks.image);
};
var getPreviousImageElement = function getPreviousImageElement() {
return byHook(_constants.dataHooks.previousImage);
};
var isImagesContainerElementVisible = function isImagesContainerElementVisible() {
return hasDataAttribute(_constants.dataAttributes.containerVisible, byHook(_constants.dataHooks.imagesContainer));
};
var isImageElementVisible = function isImageElementVisible(imgElement) {
return hasDataAttribute(_constants.dataAttributes.imageVisible, imgElement);
};
var hoverElement = function hoverElement() {
return eventTrigger.mouseOver(_element);
};
var showButtons = hoverElement;
return {
exists: function exists() {
return !!_element;
},
getElement: function getElement() {
return _element;
},
// for backward compatibility
element: function element() {
return _element;
},
// same as unidriver language
updateExists: function updateExists() {
return !!byHook(_constants.dataHooks.update);
},
updateButtonExists: function updateButtonExists() {
return !!byHook(_constants.dataHooks.update);
},
removeButtonExists: function removeButtonExists() {
return !!byHook(_constants.dataHooks.remove);
},
downloadButtonExists: function downloadButtonExists() {
return !!byHook(_constants.dataHooks.download);
},
moreButtonExists: function moreButtonExists() {
return !!byHook(_constants.dataHooks.more);
},
clickAdd: function clickAdd() {
return addItemDriver().click();
},
clickUpdate: function clickUpdate() {
showButtons();
eventTrigger.click(byHook(_constants.dataHooks.update));
},
clickDownload: function clickDownload() {
showButtons();
eventTrigger.click(byHook(_constants.dataHooks.download));
},
clickRemove: function clickRemove() {
showButtons();
eventTrigger.click(byHook(_constants.dataHooks.remove));
},
getContainerStyles: function getContainerStyles() {
return _element.getAttribute('style');
},
getAddTooltipContent: function getAddTooltipContent() {
return addItemDriver().getTooltipContent();
},
getUpdateTooltipContent: function getUpdateTooltipContent() {
var updateTooltip = tooltipTestkit(_constants.dataHooks.updateTooltip);
showButtons();
updateTooltip.mouseEnter();
return updateTooltip.getContentElement().textContent;
},
getDownloadTooltipContent: function getDownloadTooltipContent() {
var downloadTooltip = tooltipTestkit(_constants.dataHooks.downloadTooltip);
showButtons();
downloadTooltip.mouseEnter();
return downloadTooltip.getContentElement().textContent;
},
getRemoveTooltipContent: function getRemoveTooltipContent() {
var removeTooltip = tooltipTestkit(_constants.dataHooks.removeTooltip);
showButtons();
removeTooltip.mouseEnter();
return removeTooltip.getContentElement().textContent;
},
getMoreTooltipContent: function getMoreTooltipContent() {
var moreTooltip = tooltipTestkit(_constants.dataHooks.moreTooltip);
showButtons();
moreTooltip.mouseEnter();
return moreTooltip.getContentElement().textContent;
},
isDisabled: function isDisabled() {
return _element.getAttribute('data-disabled') === 'true';
},
isAddItemVisible: function isAddItemVisible() {
return !!byHook(_constants.dataHooks.addItem);
},
isLoaderVisible: function isLoaderVisible() {
return !!byHook(_constants.dataHooks.loader);
},
isImageLoaded: function isImageLoaded() {
return hasDataAttribute(_constants.dataAttributes.imageLoaded, _element);
},
isImageVisible: function isImageVisible() {
var image = getImageElement();
return !!image && isImageElementVisible(image) && isImagesContainerElementVisible();
},
isPreviousImageVisible: function isPreviousImageVisible() {
var previousImage = getPreviousImageElement();
return !!previousImage && isImageElementVisible(previousImage) && isImagesContainerElementVisible();
},
getImageUrl: function getImageUrl() {
var imageUrl = getImageElement();
return imageUrl && imageUrl.getAttribute('src');
},
getPreviousImageUrl: function getPreviousImageUrl() {
var previousImage = getPreviousImageElement();
return previousImage && previousImage.getAttribute('src');
},
hover: function hover() {
return hoverElement();
},
// Status
/** Return true if the given status is displayed */
hasStatus: function hasStatus(status) {
var statusEl = _element.querySelector("[data-hook='".concat(_constants.dataHooks.errorTooltip, "']"));
return (statusEl && statusEl.getAttribute('data-status')) === status;
},
/** If there's a status message, returns its text value */
getStatusMessage: function getStatusMessage() {
var tooltipText = null;
var tooltipDriver = (0, _Tooltip.tooltipDriverFactory)({
element: _element.querySelector('[data-hook="status-indicator-tooltip"]'),
eventTrigger: eventTrigger
});
if (tooltipDriver.exists()) {
tooltipDriver.mouseEnter();
var contentElement = tooltipDriver.getContentElement();
if (contentElement) {
tooltipText = contentElement.textContent;
}
}
return tooltipText;
}
};
};
var _default = imageViewerDriverFactory;
exports["default"] = _default;