+ {title && (
+
{title}
+ )}
{description && (
-
+
{description}
)}
@@ -226,24 +228,12 @@ export const Popup: FunctionComponent<
)}
>
)}
- {closeable && (
-
- {React.isValidElement(closeIcon) ? closeIcon : }
-
- )}
+ {renderCloseIcon()}
)
}
if (closeable) {
- return (
- <>
- {closeable && (
-
- {React.isValidElement(closeIcon) ? closeIcon : }
-
- )}
- >
- )
+ return renderCloseIcon()
}
}
const renderPop = () => {
@@ -285,20 +275,33 @@ export const Popup: FunctionComponent<
onClick={onHandleClickOverlay}
/>
) : null}
- <>{renderPop()}>
+ {renderPop()}
>
)
}
useEffect(() => {
- visible && open()
- !visible && close()
+ visible ? open() : close()
}, [visible])
useEffect(() => {
setTransitionName(transition || `${classPrefix}-slide-${position}`)
}, [position, transition])
+ const resolveContainer = (getContainer: Teleport | undefined) => {
+ const container =
+ typeof getContainer === 'function' ? getContainer() : getContainer
+ return container || document.body
+ }
+
+ const renderToContainer = (getContainer: Teleport, node: ReactElement) => {
+ if (getContainer) {
+ const container = resolveContainer(getContainer)
+ return createPortal(node, container) as ReactPortal
+ }
+ return node
+ }
+
return <>{renderToContainer(portal as Teleport, renderNode())}>
}
diff --git a/src/packages/timeselect/__test__/__snapshots__/timeselect.spec.tsx.snap b/src/packages/timeselect/__test__/__snapshots__/timeselect.spec.tsx.snap
index 9ab6b57b77..e1495fa7ec 100644
--- a/src/packages/timeselect/__test__/__snapshots__/timeselect.spec.tsx.snap
+++ b/src/packages/timeselect/__test__/__snapshots__/timeselect.spec.tsx.snap
@@ -1,5 +1,3 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`timeselect props test 1`] = `"
"`;
-
-exports[`timeselect props test 2`] = `"
"`;
+exports[`timeselect props test 1`] = `"
"`;
diff --git a/src/packages/timeselect/__test__/timeselect.spec.tsx b/src/packages/timeselect/__test__/timeselect.spec.tsx
index a476128b18..05b5cf475d 100644
--- a/src/packages/timeselect/__test__/timeselect.spec.tsx
+++ b/src/packages/timeselect/__test__/timeselect.spec.tsx
@@ -1,5 +1,5 @@
import * as React from 'react'
-import { render, waitFor } from '@testing-library/react'
+import { fireEvent, render, waitFor } from '@testing-library/react'
import '@testing-library/jest-dom'
import ReactTestUtils from 'react-dom/test-utils'
import { TimeSelect } from '../timeselect'
@@ -29,14 +29,13 @@ test('timeselect props test', async () => {
return
}
const { container } = render(
)
- await waitFor(() => {
- expect(container.outerHTML).toMatchSnapshot()
- })
+ expect(container.outerHTML).toMatchSnapshot()
})
test('timeselect event test', async () => {
const handleDateChange = vi.fn()
const handleTimeChange = vi.fn()
+ const handleSelect = vi.fn()
const App = () => {
return (
{
options={options}
onDateChange={handleDateChange}
onTimeChange={handleTimeChange}
+ onSelect={handleSelect}
/>
)
}
@@ -61,5 +61,12 @@ test('timeselect event test', async () => {
children: [options[0].children[0]],
},
])
+
+ const close = container.querySelector(
+ '.nut-popup-title-right-top-right'
+ ) as Element
+ fireEvent.click(close)
+ const overlay = container.querySelector('.nut-overlay') as HTMLElement
+ expect(overlay.style.display).toEqual('')
})
})
diff --git a/src/packages/timeselect/demos/taro/demo1.tsx b/src/packages/timeselect/demos/taro/demo1.tsx
index f5eb8291f6..80ef3b072b 100644
--- a/src/packages/timeselect/demos/taro/demo1.tsx
+++ b/src/packages/timeselect/demos/taro/demo1.tsx
@@ -53,9 +53,6 @@ const Demo1 = () => {
{
optionKey={optionKey}
defaultValue={defaultValue}
visible={visible}
- style={{
- height: '30%',
- }}
onSelect={handleSelect}
onDateChange={handleDateChange}
onTimeChange={handleTimeChange}
diff --git a/src/packages/timeselect/demos/taro/demo3.tsx b/src/packages/timeselect/demos/taro/demo3.tsx
index e10c71251e..977856880b 100644
--- a/src/packages/timeselect/demos/taro/demo3.tsx
+++ b/src/packages/timeselect/demos/taro/demo3.tsx
@@ -53,9 +53,6 @@ const Demo3 = () => {
> = (
position="bottom"
title={title || locale.timeselect.pickupTime}
style={{
- width: '100%',
- height: '20%',
...style,
}}
onClose={closeFun}
diff --git a/src/packages/timeselect/timeselect.tsx b/src/packages/timeselect/timeselect.tsx
index a0ad3b94b8..1e6b91d674 100644
--- a/src/packages/timeselect/timeselect.tsx
+++ b/src/packages/timeselect/timeselect.tsx
@@ -144,8 +144,6 @@ export const TimeSelect: FunctionComponent> = (
position="bottom"
title={title || locale.timeselect.pickupTime}
style={{
- width: '100%',
- height: '20%',
...style,
}}
onClose={closeFun}
diff --git a/src/styles/variables.scss b/src/styles/variables.scss
index 58c9661fc1..3fd4faf536 100644
--- a/src/styles/variables.scss
+++ b/src/styles/variables.scss
@@ -1018,30 +1018,28 @@ $overlay-animation-duration: var(
0.3s
) !default;
//popup(✅)
-$popup-border-radius: var(--nutui-popup-border-radius, 24px) !default;
-$popup-icon-size: var(--nutui-popup-icon-size, $font-size-xl) !default;
+$popup-border-radius: var(--nutui-popup-border-radius, $radius-xl) !default;
+$popup-icon-size: var(--nutui-popup-icon-size, 20px) !default;
$popup-title-padding: var(--nutui-popup-title-padding, 16px) !default;
$popup-title-font-size: var(
--nutui-popup-title-font-size,
- $font-size-xl
+ $font-size-l
) !default;
-$popup-description-font-size: var(
- --nutui-popup-description-font-size,
- $font-size-xs
+$popup-title-font-weight: var(
+ --nutui-popup-title-font-weight,
+ $font-weight-bold
) !default;
-$popup-title-height: var(--nutui-popup-title-height, 50px) !default;
-$popup-title-border-bottom: var(--nutui-popup-title-border-bottom, 0) !default;
-$popup-animation-duration: var(--nutui-popup-animation-duration, 0.3s) !default;
-$popup-icon-size: var(--nutui-popup-icon-size, $font-size-xl) !default;
$popup-description-font-size: var(
--nutui-popup-description-font-size,
- $font-size-xs
+ $font-size-base
) !default;
-$popup-title-font-weight: var(
- --nutui-popup-title-font-weight,
- $font-weight-bold
+$popup-description-spacing: var(
+ --nutui-popup-description-spacing,
+ $spacing-base
) !default;
$popup-title-height: var(--nutui-popup-title-height, 50px) !default;
+$popup-title-border-bottom: var(--nutui-popup-title-border-bottom, 0) !default;
+$popup-animation-duration: var(--nutui-popup-animation-duration, 0.3s) !default;
// Notify(✅)
$notify-text-color: var(--nutui-notify-text-color, $white) !default;