UNPKG

wix-style-react

Version:
84 lines (75 loc) 2.99 kB
import { baseUniDriverFactory } from 'wix-ui-test-utils/base-driver'; import { tooltipDriverFactory } from '../Tooltip/Tooltip.uni.driver'; import { dataHooks } from './constants'; import deprecationLog from '../utils/deprecationLog'; export const sliderUniDriverFactory = (base, body) => { const $sliderHandles = () => base.$$(`[data-hook="${dataHooks.sliderHandle}"]`); const $sliderDots = () => base.$$('.wsr-slider-dot'); const $sliderMarks = () => base.$$(`[data-hook="${dataHooks.sliderMarkLabel}"]`); const getTooltipDriver = async index => { const sliderDataHook = await base.attr('data-hook'); const tooltipDataHook = sliderDataHook ? `${sliderDataHook}-${dataHooks.sliderTooltip}-${index}` : `${dataHooks.sliderTooltip}-${index}`; return tooltipDriverFactory( base.$(`[data-hook="${tooltipDataHook}"]`), body, ); }; let currentHandleIndex = 0; return { ...baseUniDriverFactory(base), /** returns true if slider grade is selected */ isDotSelected: number => $sliderDots() .get(number - 1) .hasClass('wsr-slider-dot-active'), /** returns number of slider grades */ numOfSliderDots: () => $sliderDots().count(), /** returns number of slider handles */ numOfSliderHandles: () => $sliderHandles().count(), /** returns number of slider marks labels */ numOfSliderMarksLabels: () => $sliderMarks().count(), /** returns slider tooltip value */ getToolTipValue: async ({ handleIndex } = {}) => { if (!handleIndex) { deprecationLog( 'handleIndex is not provided, in next major release this will be required', ); } const index = handleIndex || currentHandleIndex; const tooltipDriver = await getTooltipDriver(index); let text = null; try { text = await tooltipDriver.getTooltipText(); } catch {} return text; }, /** hovers on slider handle */ hoverHandle: async ({ handleIndex }) => { deprecationLog( 'hoverHandle is deprecated and will be removed in next major release, please use getToolTipValue directly with handleIndex', ); currentHandleIndex = handleIndex; const tooltipDriver = await getTooltipDriver(handleIndex); return tooltipDriver.mouseEnter(); }, /** mouse leaves slider handle */ unHoverHandle: async ({ handleIndex }) => { deprecationLog( 'unHoverHandle is deprecated and will be removed in next major release, please use getToolTipValue directly with handleIndex', ); currentHandleIndex = 0; const tooltipDriver = await getTooltipDriver(handleIndex); return tooltipDriver.mouseLeave(); }, /** returns if the slider is disabled */ isDisabled: async () => { return !!(await base.$('.wsr-slider-disabled')); }, /** returns direction either horizontal or vertical */ getDirection: async () => base.attr('data-direction'), }; };