UNPKG

tdesign-mobile-vue

Version:
1 lines 41.2 kB
{"version":3,"file":"guide.mjs","sources":["../../src/guide/guide.tsx"],"sourcesContent":["import { computed, defineComponent, ref, toRefs, h, nextTick, onMounted, watch, Teleport } from 'vue';\nimport { isFunction } from 'lodash-es';\nimport TPopover, { PopoverProps } from '../popover';\nimport TPopup, { PopupProps } from '../popup';\nimport TButton, { ButtonProps } from '../button';\nimport config from '../config';\nimport useVModel from '../hooks/useVModel';\nimport { addClass, getWindowScroll, removeClass } from '../shared/dom';\nimport setStyle from '../_common/js/utils/setStyle';\nimport guideProps from './props';\nimport { GuideStep, TdGuideProps } from './type';\nimport { isFixed, getRelativePosition, getTargetElm, scrollToParentVisibleArea, scrollToElm } from './utils';\nimport { GuideCrossProps } from './interface';\nimport { SizeEnum } from '../common';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-guide`,\n components: {\n TPopover,\n TButton,\n TPopup,\n },\n props: guideProps,\n setup(props: TdGuideProps, context) {\n const { current, modelValue, finishButtonProps, hideCounter, hideSkip, steps, zIndex } = toRefs(props);\n const [innerCurrent, setInnerCurrent] = useVModel(\n current,\n modelValue,\n props.defaultCurrent,\n props.onChange,\n 'current',\n );\n\n const { globalConfig } = useConfig('guide');\n const guideClass = usePrefixClass('guide');\n\n const LOCK_CLASS = `${guideClass.value}--lock`;\n\n // 覆盖层,用于覆盖所有元素\n const overlayLayerRef = ref<HTMLElement>();\n // 高亮层,用于高亮元素\n const highlightLayerRef = ref<HTMLElement>();\n // 提示层,用于高亮元素\n const referenceLayerRef = ref<HTMLElement>();\n // 当前高亮的元素\n const currentHighlightLayerElm = ref<HTMLElement>();\n // dialog wrapper ref\n const popoverWrapperRef = ref<HTMLElement>();\n // 是否开始展示\n const actived = ref(false);\n // 步骤总数\n const stepsTotal = computed(() => steps.value.length);\n // 当前步骤的信息\n const currentStepInfo = computed<GuideStep>(() => steps.value[innerCurrent.value]);\n // 当前是否为 popover\n const isPopover = computed(() => getCurrentCrossProps('mode') === 'popover');\n const popoverVisible = ref(false);\n const isPopoverCenter = computed(() => isPopover.value && currentStepInfo.value.placement === 'center');\n const stepProps = computed(() => {\n if (isPopover.value) {\n return {\n visible: popoverVisible.value,\n placement: isPopoverCenter.value ? 'bottom' : currentStepInfo.value.placement,\n theme: 'light',\n showArrow: false,\n ...currentStepInfo.value.popoverProps,\n } as PopoverProps;\n }\n return {\n visible: popoverVisible.value,\n zIndex: zIndex.value,\n placement: 'center',\n // destroyOnClose: true,\n class: `${guideClass.value}__dialog`,\n overlayProps: {\n zIndex: zIndex.value - 1,\n },\n } as PopupProps;\n });\n\n // 当前元素位置状态\n const currentElmIsFixed = computed(() => isFixed(currentHighlightLayerElm.value || document.body));\n // 获取当前步骤的属性值 用户当前步骤设置 > 用户组件设置的\n const getCurrentCrossProps = <Key extends keyof GuideCrossProps>(propsName: Key) =>\n currentStepInfo.value[propsName] ?? props[propsName];\n\n const hWithParams = (params: Record<string, any> = { currentStepInfo: currentStepInfo.value }) => {\n // @ts-ignore\n const newH = (...args: any[]) => h(...args);\n return Object.assign(newH, params);\n };\n\n // highlight layer 相关\n // 获取当前步骤的用户设定的高亮内容\n const currentCustomHighlightContent = computed(() => {\n const { highlightContent } = currentStepInfo.value;\n\n let node: any = highlightContent;\n if (isFunction(highlightContent)) {\n // 支持函数\n node = highlightContent(hWithParams());\n } else if (context.slots.highlightContent) {\n // 支持插槽\n node = context.slots.highlightContent(hWithParams());\n } else if (context.slots['highlight-content']) {\n // 支持插槽\n node = context.slots['highlight-content'](hWithParams());\n }\n // 给自定义元素添加类名\n if (node) {\n if (!node.props) node.props = {};\n node.props.class = node.props.class || '';\n }\n return node;\n });\n // 是否展示高亮区域\n const showCustomHighlightContent = computed(() => Boolean(currentCustomHighlightContent.value && isPopover.value));\n\n const showOverlay = computed(() => getCurrentCrossProps('showOverlay'));\n\n const highlightClass = computed(() => [\n `${guideClass.value}__highlight`,\n `${guideClass.value}__highlight--${isPopover.value ? 'popover' : 'dialog'}`,\n `${guideClass.value}--${currentElmIsFixed.value && isPopover.value ? 'fixed' : 'absolute'}`,\n ]);\n const maskClass = computed(() => [`${guideClass.value}__highlight--${showOverlay.value ? 'mask' : 'nomask'}`]);\n const wrapperClass = computed(() => [\n `${guideClass.value}__wrapper`,\n `${guideClass.value}--${currentElmIsFixed.value ? 'fixed' : 'absolute'}`,\n {\n [`${guideClass.value}__wrapper--content`]: !!currentStepInfo.value.content,\n },\n ]);\n const popoverClass = computed(() => [`${guideClass.value}__reference`]);\n const contentClass = computed(() => [`${guideClass.value}__content--${isPopover.value ? 'popover' : 'dialog'}`]);\n const footerClass = computed(() => [\n `${guideClass.value}__footer`,\n `${guideClass.value}__footer--${isPopover.value ? 'popover' : 'dialog'}`,\n ]);\n\n const isLast = computed(() => innerCurrent.value === stepsTotal.value - 1);\n const buttonSize = computed(() => (isPopover.value ? 'extra-small' : 'medium') as SizeEnum);\n\n // 设置高亮层的位置\n const setHighlightLayerPosition = (highlightLayer: HTMLElement, isReference = false) => {\n let { top, left } = getRelativePosition(currentHighlightLayerElm.value);\n let { width, height } = currentHighlightLayerElm.value.getBoundingClientRect();\n const highlightPadding = getCurrentCrossProps('highlightPadding');\n\n if (isPopover.value) {\n width += highlightPadding * 2;\n height += highlightPadding * 2;\n top -= highlightPadding;\n left -= highlightPadding;\n } else {\n const { scrollTop, scrollLeft } = getWindowScroll();\n top += scrollTop;\n left += scrollLeft;\n }\n\n const style = {\n top: `${top}px`,\n left: `${left}px`,\n };\n\n // 展示自定义高亮\n if (showCustomHighlightContent.value) {\n // 高亮框本身不设定宽高,引用用框的宽高设定为用户自定义的宽高\n if (isReference) {\n const { width, height } = highlightLayerRef.value.getBoundingClientRect();\n Object.assign(style, {\n width: `${width}px`,\n height: `${height}px`,\n });\n } else {\n Object.assign(style, {\n width: 'auto',\n height: 'auto',\n });\n }\n } else {\n Object.assign(style, {\n width: `${width}px`,\n height: `${height}px`,\n });\n }\n\n setStyle(highlightLayer, style);\n };\n\n const setReferenceFullW = (referenceElements: HTMLElement[]): void => {\n const style = {\n left: 0,\n width: '100vw',\n };\n\n referenceElements.forEach((elem) => setStyle(elem, style));\n };\n\n const showPopoverGuide = () => {\n nextTick(() => {\n currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);\n if (!currentHighlightLayerElm.value) return;\n scrollToParentVisibleArea(currentHighlightLayerElm.value);\n setHighlightLayerPosition(highlightLayerRef.value);\n setHighlightLayerPosition(popoverWrapperRef.value, true);\n setHighlightLayerPosition(referenceLayerRef.value, true);\n scrollToElm(currentHighlightLayerElm.value);\n isPopoverCenter.value && setReferenceFullW([referenceLayerRef.value, popoverWrapperRef.value]);\n });\n };\n\n const showDialogGuide = () => {\n nextTick(() => {\n currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);\n scrollToParentVisibleArea(currentHighlightLayerElm.value);\n setHighlightLayerPosition(highlightLayerRef.value);\n scrollToElm(currentHighlightLayerElm.value);\n });\n };\n\n const showGuide = () => {\n if (isPopover.value) {\n showPopoverGuide();\n } else {\n showDialogGuide();\n }\n nextTick(() => {\n popoverVisible.value = true;\n });\n };\n\n const destroyGuide = () => {\n highlightLayerRef.value?.parentNode.removeChild(highlightLayerRef.value);\n overlayLayerRef.value?.parentNode.removeChild(overlayLayerRef.value);\n removeClass(document.body, LOCK_CLASS);\n };\n\n const renderButtonContent = (buttonProps: ButtonProps, defaultContent: string) => {\n const { content } = buttonProps || {};\n return isFunction(content) ? content(h) : content || defaultContent;\n };\n\n const handleSkip = (e: MouseEvent) => {\n const total = stepsTotal.value;\n actived.value = false;\n setInnerCurrent(-1, { e, total });\n props.onSkip?.({ e, current: innerCurrent.value, total });\n };\n\n const handleNext = (e: MouseEvent) => {\n const total = stepsTotal.value;\n setInnerCurrent(innerCurrent.value + 1, { e, total });\n props.onNextStepClick?.({\n e,\n next: innerCurrent.value + 1,\n current: innerCurrent.value,\n total,\n });\n };\n\n const handleFinish = (e: MouseEvent) => {\n const total = stepsTotal.value;\n actived.value = false;\n setInnerCurrent(-1, { e, total });\n props.onFinish?.({ e, current: innerCurrent.value, total });\n };\n\n const handleBack = (e: MouseEvent) => {\n const total = stepsTotal.value;\n setInnerCurrent(0, { e, total });\n props.onBack?.({ e, current: innerCurrent.value, total });\n };\n\n const contentProps = computed(() => ({\n handleSkip,\n handleNext,\n handleFinish,\n handleBack,\n current: innerCurrent.value,\n total: stepsTotal.value,\n }));\n\n const initGuide = () => {\n if (innerCurrent.value >= 0 && innerCurrent.value < steps.value.length) {\n if (!actived.value) {\n actived.value = true;\n addClass(document.body, LOCK_CLASS);\n }\n showGuide();\n }\n };\n\n watch(innerCurrent, (val) => {\n if (val >= 0 && val < stepsTotal.value) {\n isPopover.value && (popoverVisible.value = false);\n initGuide();\n } else {\n actived.value = false;\n destroyGuide();\n }\n });\n\n onMounted(() => {\n initGuide();\n });\n\n return () => {\n const renderStepContent = () => {\n const renderTitleNode = () => {\n const { title } = currentStepInfo.value;\n let renderTitle: any = null;\n if (isFunction(title)) {\n renderTitle = title(hWithParams());\n } else if (context.slots.title) {\n renderTitle = context.slots.title(hWithParams());\n } else if (typeof title === 'string') {\n renderTitle = title;\n } else if (title) {\n renderTitle = h(title);\n }\n return renderTitle;\n };\n const renderBodyNode = () => {\n const { body } = currentStepInfo.value;\n let renderBody: any = null;\n if (isFunction(body)) {\n renderBody = body(hWithParams());\n } else if (context.slots.body) {\n renderBody = context.slots.body(hWithParams());\n } else if (typeof body === 'string') {\n renderBody = body;\n } else if (body) {\n renderBody = h(body);\n }\n return renderBody;\n };\n const renderCounterNode = () => {\n const params = {\n total: stepsTotal.value,\n current: innerCurrent.value,\n };\n let renderCounter: any = null;\n const { counter } = props;\n if (isFunction(counter)) {\n renderCounter = counter(h, params);\n } else if (context.slots.counter) {\n renderCounter = context.slots.counter(hWithParams(params));\n } else if (counter) {\n renderCounter = h(counter, params);\n }\n return renderCounter || ` (${innerCurrent.value + 1}/${stepsTotal.value})`;\n };\n return (\n <div class={contentClass.value}>\n <div class={`${guideClass.value}__tooltip`}>\n <div class={`${guideClass.value}__title`}>{renderTitleNode()}</div>\n <div class={`${guideClass.value}__desc`}>{renderBodyNode()}</div>\n </div>\n <div class={footerClass.value}>\n {!hideSkip.value && !isLast.value && (\n <TButton\n key=\"skip\"\n class={`${guideClass.value}__skip`}\n theme=\"light\"\n size={buttonSize.value}\n variant=\"base\"\n content={globalConfig.value.skip}\n {...getCurrentCrossProps('skipButtonProps')}\n onClick={handleSkip}\n />\n )}\n {!isLast.value && (\n <TButton\n key=\"next\"\n class={`${guideClass.value}__next`}\n theme=\"primary\"\n size={buttonSize.value}\n variant=\"base\"\n {...getCurrentCrossProps('nextButtonProps')}\n onClick={handleNext}\n >\n {{\n content: () => (\n <>\n {renderButtonContent(getCurrentCrossProps('nextButtonProps'), globalConfig.value.next)}\n {!hideCounter.value && renderCounterNode()}\n </>\n ),\n }}\n </TButton>\n )}\n {isLast.value && (\n <TButton\n key=\"back\"\n class={`${guideClass.value}__back`}\n theme=\"light\"\n size={buttonSize.value}\n variant=\"base\"\n content={globalConfig.value.back}\n {...getCurrentCrossProps('backButtonProps')}\n onClick={handleBack}\n ></TButton>\n )}\n {isLast.value && (\n <TButton\n key=\"finish\"\n class={`${guideClass.value}__finish`}\n theme=\"primary\"\n size={buttonSize.value}\n variant=\"base\"\n {...(finishButtonProps.value ?? {})}\n onClick={handleFinish}\n >\n {{\n content: () => (\n <>\n {renderButtonContent(finishButtonProps.value, globalConfig.value.finish)}\n {!hideCounter.value && renderCounterNode()}\n </>\n ),\n }}\n </TButton>\n )}\n </div>\n </div>\n );\n };\n const renderContentNode = () => {\n const { content } = currentStepInfo.value;\n let renderContent;\n if (isFunction(content)) {\n renderContent = content(hWithParams(contentProps.value));\n } else if (context.slots.content) {\n renderContent = context.slots.content(hWithParams(contentProps.value));\n } else if (content) {\n renderContent = h(content, contentProps.value);\n }\n return renderContent;\n };\n const renderPopover = () => {\n return (\n <TPopover {...(stepProps.value as PopoverProps)}>\n {{\n triggerElement: () =>\n isPopover.value && <div ref={referenceLayerRef} class={[...popoverClass.value]}></div>,\n content: () => (isPopover.value && renderContentNode() ? renderContentNode() : renderStepContent()),\n }}\n </TPopover>\n );\n };\n const renderPopup = () => {\n return (\n <TPopup {...(stepProps.value as PopupProps)}>\n {{\n default: () => (isPopover.value && renderContentNode() ? renderContentNode() : renderStepContent()),\n }}\n </TPopup>\n );\n };\n const renderCurrentCustomHighlightContentNode = () => {\n const { highlightContent } = currentStepInfo.value;\n\n let node: any = highlightContent;\n if (isFunction(highlightContent)) {\n // 支持函数\n node = highlightContent(hWithParams());\n } else if (context.slots.highlightContent) {\n // 支持插槽\n node = context.slots.highlightContent(hWithParams());\n } else if (context.slots['highlight-content']) {\n // 支持插槽\n node = context.slots['highlight-content'](hWithParams());\n }\n // 给自定义元素添加类名\n if (node) {\n if (!node.props) node.props = {};\n node.props.class = node.props.class || '';\n }\n return node;\n };\n return (\n <>\n {actived.value && (\n <Teleport to=\"body\">\n <div\n ref={overlayLayerRef}\n class={`${guideClass.value}__overlay`}\n style={{ zIndex: `${zIndex.value - 2}` }}\n ></div>\n <div\n ref={highlightLayerRef}\n class={[...highlightClass.value, ...maskClass.value]}\n style={{ zIndex: `${zIndex.value - 1}` }}\n >\n {showCustomHighlightContent.value && renderCurrentCustomHighlightContentNode()}\n </div>\n <div ref={popoverWrapperRef} class={wrapperClass.value} style={{ zIndex: zIndex.value }}>\n {isPopover.value ? renderPopover() : renderPopup()}\n </div>\n </Teleport>\n )}\n </>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","components","TPopover","TButton","TPopup","props","guideProps","setup","context","_toRefs","toRefs","current","modelValue","finishButtonProps","hideCounter","hideSkip","steps","zIndex","_useVModel","useVModel","defaultCurrent","onChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","_useConfig","useConfig","globalConfig","guideClass","usePrefixClass","LOCK_CLASS","concat","value","overlayLayerRef","ref","highlightLayerRef","referenceLayerRef","currentHighlightLayerElm","popoverWrapperRef","actived","stepsTotal","computed","length","currentStepInfo","isPopover","getCurrentCrossProps","popoverVisible","isPopoverCenter","placement","stepProps","_objectSpread","visible","theme","showArrow","popoverProps","class","overlayProps","currentElmIsFixed","isFixed","document","body","propsName","_currentStepInfo$valu","hWithParams","params","arguments","undefined","newH","h","apply","Object","assign","currentCustomHighlightContent","highlightContent","node","isFunction","slots","showCustomHighlightContent","Boolean","showOverlay","highlightClass","maskClass","wrapperClass","_defineProperty","content","popoverClass","contentClass","footerClass","isLast","buttonSize","setHighlightLayerPosition","highlightLayer","isReference","_getRelativePosition","getRelativePosition","top","left","_currentHighlightLaye","getBoundingClientRect","width","height","highlightPadding","_getWindowScroll","getWindowScroll","scrollTop","scrollLeft","style","_highlightLayerRef$va","setStyle","setReferenceFullW","referenceElements","forEach","elem","showPopoverGuide","nextTick","getTargetElm","element","scrollToParentVisibleArea","scrollToElm","showDialogGuide","showGuide","destroyGuide","_highlightLayerRef$va2","_overlayLayerRef$valu","parentNode","removeChild","removeClass","renderButtonContent","buttonProps","defaultContent","_ref2","handleSkip","e","_props$onSkip","total","onSkip","call","handleNext","_props$onNextStepClic","onNextStepClick","next","handleFinish","_props$onFinish","onFinish","handleBack","_props$onBack","onBack","contentProps","initGuide","addClass","watch","val","onMounted","renderStepContent","_finishButtonProps$va","renderTitleNode","title","renderTitle","renderBodyNode","renderBody","renderCounterNode","renderCounter","counter","_createVNode","_mergeProps","skip","back","finish","renderContentNode","renderContent","renderPopover","triggerElement","_toConsumableArray","renderPopup","default","renderCurrentCustomHighlightContentNode","_Fragment","Teleport","_default"],"mappings":"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"}