Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.

Commit 563b9f3

Browse files
committed
fix(popover): remove popover style destructuring
1 parent eff5ea3 commit 563b9f3

File tree

15 files changed

+205
-33
lines changed

15 files changed

+205
-33
lines changed

@types/components.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* This is a generated file. Do not edit it's contents.
88
*
9-
* This file was generated on 2023-03-07T16:51:08.517Z
9+
* This file was generated on 2023-03-07T17:27:38.918Z
1010
*/
1111

1212
import { ChakraProps, chakra } from "@chakra-ui/vue-system"

components.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* This is a generated file. Do not edit it's contents.
88
*
9-
* This file was generated on 2023-03-07T16:51:08.517Z
9+
* This file was generated on 2023-03-07T17:27:38.918Z
1010
*/
1111

1212
import { ChakraProps, chakra } from "@chakra-ui/vue-system"

packages/c-popover/src/c-popover-positioner.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@ export const CPopoverPositioner = defineComponent({
1212
const styles = useStyles()
1313

1414
return () => {
15-
const { style, ...positionerProps } = api.value.positionerProps
16-
const { opacity, ...styleProps } = style
1715
return (
1816
<chakra.div
1917
__css={styles.value.popper}
20-
{...positionerProps}
21-
style={styleProps}
18+
{...api.value.positionerProps}
2219
__label="popover__popper"
2320
>
2421
<chakra.div {...attrs}>{slots.default?.()}</chakra.div>

packages/c-popover/src/use-popover.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { connect, Context as PopoverContext, machine } from "@zag-js/popover"
22
import { normalizeProps, useMachine } from "@zag-js/vue"
3-
import { computed, reactive, Ref, ref, watch } from "vue"
3+
import { computed, reactive, watch } from "vue"
44
import type { Optional } from "@chakra-ui/vue-utils"
55
import { useId } from "@chakra-ui/vue-composables"
66

@@ -19,10 +19,6 @@ export interface UsePopoverProps {
1919
emit: CallableFunction
2020
}
2121

22-
function wait(delay: number) {
23-
return new Promise((resolve) => setTimeout(resolve, delay))
24-
}
25-
2622
export function usePopover(props: UsePopoverProps) {
2723
const { context, emit } = props
2824
const popoverContext = reactive(context)

packages/c-tooltip/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,13 @@
3434
"dev": "tsup --watch"
3535
},
3636
"dependencies": {
37-
"@chakra-ui/vue-system": "workspace:*"
37+
"@chakra-ui/vue-composables": "workspace:*",
38+
"@chakra-ui/vue-system": "workspace:*",
39+
"@chakra-ui/vue-utils": "workspace:*",
40+
"@vueuse/motion": "^1.6.0",
41+
"@zag-js/popper": "^0.2.5",
42+
"@zag-js/tooltip": "^0.2.13",
43+
"@zag-js/vue": "^0.2.10"
3844
},
3945
"devDependencies": {
4046
"vue": "^3.2.37"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { computed, defineComponent, watchEffect } from "vue"
2+
import { useTooltipContext } from "./tooltip.context"
3+
import { HTMLChakraProps, chakra } from "@chakra-ui/vue-system"
4+
5+
export type CTooltipArrowProps = HTMLChakraProps<"div">
6+
export const CTooltipArrow = defineComponent({
7+
name: "CTooltipArrow",
8+
setup(_, { slots, attrs }) {
9+
const api = useTooltipContext()
10+
return () => (
11+
<chakra.div {...api.value.arrowProps}>
12+
<chakra.div {...api.value.arrowTipProps} {...attrs} />
13+
</chakra.div>
14+
)
15+
},
16+
})
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { computed, defineComponent, watchEffect } from "vue"
2+
import { useTooltipContext } from "./tooltip.context"
3+
import { HTMLChakraProps, chakra } from "@chakra-ui/vue-system"
4+
5+
export type CTooltipPositionerProps = HTMLChakraProps<"div">
6+
export const CTooltipPositioner = defineComponent({
7+
name: "CTooltipPositioner",
8+
setup(_, { slots, attrs }) {
9+
const api = useTooltipContext()
10+
return () => (
11+
<chakra.div {...api.value.positionerProps} {...attrs}>
12+
{slots.default?.()}
13+
</chakra.div>
14+
)
15+
},
16+
})

packages/c-tooltip/src/c-tooltip.tsx

Lines changed: 58 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,64 @@
88
* @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.2
99
*/
1010

11-
import { defineComponent, h, Fragment, PropType } from "vue"
12-
import {
13-
chakra,
14-
DOMElements,
15-
} from "@chakra-ui/vue-system"
11+
import { computed, defineComponent, h, Fragment, PropType } from "vue"
12+
import { chakra, DOMElements } from "@chakra-ui/vue-system"
13+
import { TooltipProvider } from "./tooltip.context"
14+
import { useTooltip, UseTooltipProps } from "./use-tooltip"
15+
import type * as PP from "@zag-js/popper"
1616

17-
export interface CTooltipProps {}
17+
type UseTooltipPropsContext = UseTooltipProps["context"]
18+
19+
export type CTooltipProps = UseTooltipPropsContext
20+
21+
const VueTooltipProps = {
22+
ids: {
23+
type: Object as PropType<CTooltipProps["ids"]>,
24+
},
25+
openDelay: {
26+
type: Number as PropType<CTooltipProps["openDelay"]>,
27+
},
28+
closeDelay: {
29+
type: Number as PropType<CTooltipProps["closeDelay"]>,
30+
},
31+
closeOnPointerDown: {
32+
type: Boolean as PropType<CTooltipProps["closeOnPointerDown"]>,
33+
},
34+
closeOnEsc: {
35+
type: Boolean as PropType<CTooltipProps["closeOnEsc"]>,
36+
default: true,
37+
},
38+
interactive: {
39+
type: Boolean as PropType<CTooltipProps["interactive"]>,
40+
},
41+
"aria-label": {
42+
type: String as PropType<CTooltipProps["aria-label"]>,
43+
},
44+
positioning: {
45+
type: Object as PropType<CTooltipProps["positioning"]>,
46+
},
47+
disabled: {
48+
type: Boolean as PropType<CTooltipProps["disabled"]>,
49+
},
50+
getRootNode: {
51+
type: Function as PropType<CTooltipProps["getRootNode"]>,
52+
},
53+
}
1854

1955
export const CTooltip = defineComponent({
20-
props: {
21-
as: {
22-
type: [Object, String] as PropType<DOMElements>,
23-
default: "div",
24-
},
25-
},
26-
setup(props, { slots, attrs }) {
27-
return () => (
28-
<chakra.div as={props.as} {...attrs}>
29-
{slots}
30-
</chakra.div>
31-
)
32-
},
33-
})
56+
name: "Tooltip",
57+
props: VueTooltipProps,
58+
emits: ["open", "close"],
59+
setup(props, { slots, emit }) {
60+
const tooltipProps = computed<UseTooltipProps>(() => ({
61+
context: props,
62+
emit,
63+
}))
64+
65+
const api = useTooltip(tooltipProps.value)
66+
67+
TooltipProvider(api)
68+
69+
return () => slots?.default?.()
70+
},
71+
})

packages/c-tooltip/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from "./c-tooltip"
1+
export { CTooltip, type CTooltipProps } from "./c-tooltip"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import type { connect } from "@zag-js/tooltip"
2+
import type { ComputedRef } from "vue"
3+
import { createContext } from "@chakra-ui/vue-utils"
4+
import type { UseTooltipReturn } from "./use-tooltip"
5+
6+
export const [TooltipProvider, useTooltipContext] = createContext<
7+
ComputedRef<ReturnType<typeof connect>>
8+
>({
9+
name: "CTooltipContext",
10+
strict: true,
11+
})
12+
13+
export type TooltipContext = UseTooltipReturn

0 commit comments

Comments
 (0)