diff --git a/CHANGELOG.md b/CHANGELOG.md index b38d2ad76b..a28a4d6a43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# v2.6.23 + +`2024-10-18` + +- :sparkles: feat(calendar): support renderBottomButton props (#2645) +- :sparkles: feat(calendar): support deleteIcon props (#2644) +- :bug: fix(overlay): tour position offset in tour.taro (#2631) +- :bug: fix: import error (#2648) +- :bug: fix(dialog): remove defaultprops (#2639) + # v2.6.22 `2024-10-12` diff --git a/package.json b/package.json index 1bef6161e2..d48191ebc0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nutui/nutui-react-taro", - "version": "2.6.22", + "version": "2.6.23", "style": "dist/style.css", "main": "dist/nutui.react.umd.js", "module": "dist/esm/nutui-react.es.js", diff --git a/src/packages/avatarcropper/avatarcropper.tsx b/src/packages/avatarcropper/avatarcropper.tsx index eecf16d357..6317a009c3 100644 --- a/src/packages/avatarcropper/avatarcropper.tsx +++ b/src/packages/avatarcropper/avatarcropper.tsx @@ -12,7 +12,7 @@ import { BasicComponent, ComponentDefaults } from '@/utils/typings' import { useTouch } from '@/utils/use-touch' import { clamp, preventDefault } from '@/utils' import { getRect } from '@/utils/use-client-rect' -import { useConfig } from '@/packages/configprovider/configprovider.taro' +import { useConfig } from '@/packages/configprovider' export type AvatarCropperToolbarPosition = 'top' | 'bottom' export type AvatarCropperShape = 'square' | 'round' diff --git a/src/packages/calendar/calendar.taro.tsx b/src/packages/calendar/calendar.taro.tsx index 5e38fbc5d7..713eabee14 100644 --- a/src/packages/calendar/calendar.taro.tsx +++ b/src/packages/calendar/calendar.taro.tsx @@ -23,8 +23,10 @@ export interface CalendarProps { showSubTitle?: boolean scrollAnimation?: boolean firstDayOfWeek: number + closeIcon?: ReactNode disableDate: (date: CalendarDay) => boolean renderHeaderButtons?: () => string | JSX.Element + renderBottomButton?: () => string | JSX.Element renderDay?: (date: CalendarDay) => string | JSX.Element renderDayTop?: (date: CalendarDay) => string | JSX.Element renderDayBottom?: (date: CalendarDay) => string | JSX.Element @@ -88,8 +90,10 @@ export const Calendar = React.forwardRef< showSubTitle, scrollAnimation, firstDayOfWeek, + closeIcon, disableDate, renderHeaderButtons, + renderBottomButton, renderDay, renderDayTop, renderDayBottom, @@ -153,6 +157,7 @@ export const Calendar = React.forwardRef< firstDayOfWeek={firstDayOfWeek} disableDate={disableDate} renderHeaderButtons={renderHeaderButtons} + renderBottomButton={renderBottomButton} renderDay={renderDay} renderDayTop={renderDayTop} renderDayBottom={renderDayBottom} @@ -176,6 +181,7 @@ export const Calendar = React.forwardRef< onOverlayClick={closePopup} onCloseIconClick={closePopup} style={{ height: '83%' }} + closeIcon={closeIcon} > {renderItem()} diff --git a/src/packages/calendar/calendar.tsx b/src/packages/calendar/calendar.tsx index 57a9330f36..327a1109a5 100644 --- a/src/packages/calendar/calendar.tsx +++ b/src/packages/calendar/calendar.tsx @@ -23,8 +23,10 @@ export interface CalendarProps { showSubTitle?: boolean scrollAnimation?: boolean firstDayOfWeek: number + closeIcon?: ReactNode disableDate: (date: CalendarDay) => boolean renderHeaderButtons?: () => string | JSX.Element + renderBottomButton?: () => string | JSX.Element renderDay?: (date: CalendarDay) => string | JSX.Element renderDayTop?: (date: CalendarDay) => string | JSX.Element renderDayBottom?: (date: CalendarDay) => string | JSX.Element @@ -88,8 +90,10 @@ export const Calendar = React.forwardRef< showSubTitle, scrollAnimation, firstDayOfWeek, + closeIcon, disableDate, renderHeaderButtons, + renderBottomButton, renderDay, renderDayTop, renderDayBottom, @@ -138,6 +142,7 @@ export const Calendar = React.forwardRef< children={children} type={type} autoBackfill={autoBackfill} + renderBottomButton={renderBottomButton} popup={popup} title={title || locale.calendaritem.title} defaultValue={defaultValue} @@ -172,6 +177,7 @@ export const Calendar = React.forwardRef< position="bottom" round closeable + closeIcon={closeIcon} destroyOnClose onOverlayClick={closePopup} onCloseIconClick={closePopup} diff --git a/src/packages/calendar/demos/h5/demo1.tsx b/src/packages/calendar/demos/h5/demo1.tsx index a5235e190c..18e7f906fa 100644 --- a/src/packages/calendar/demos/h5/demo1.tsx +++ b/src/packages/calendar/demos/h5/demo1.tsx @@ -1,5 +1,6 @@ import React, { useState } from 'react' import { Cell, Calendar } from '@nutui/nutui-react' +import { Star } from '@nutui/icons-react' const Demo1 = () => { const d = new Date() @@ -39,6 +40,7 @@ const Demo1 = () => { onClose={closeSwitch} onConfirm={setChooseValue} onDayClick={select} + closeIcon={} /> ) diff --git a/src/packages/calendar/demos/taro/demo1.tsx b/src/packages/calendar/demos/taro/demo1.tsx index baefc59d7d..fb890ac4a4 100644 --- a/src/packages/calendar/demos/taro/demo1.tsx +++ b/src/packages/calendar/demos/taro/demo1.tsx @@ -1,5 +1,6 @@ import React, { useState } from 'react' import { Cell, Calendar } from '@nutui/nutui-react-taro' +import { Star } from '@nutui/icons-react' const Demo1 = () => { const d = new Date() @@ -39,6 +40,7 @@ const Demo1 = () => { onClose={closeSwitch} onConfirm={setChooseValue} onDayClick={select} + closeIcon={} /> ) diff --git a/src/packages/calendar/doc.en-US.md b/src/packages/calendar/doc.en-US.md index 3886c8906f..160eed3c20 100644 --- a/src/packages/calendar/doc.en-US.md +++ b/src/packages/calendar/doc.en-US.md @@ -120,8 +120,10 @@ import { Calendar } from '@nutui/nutui-react' | showSubTitle | whether to show sub title for calendar | `boolean` | `true` | | scrollAnimation | whether to start scroll animation | `boolean` | `true` | | firstDayOfWeek | first day of week | `0-6` | `0` | +| closeIcon | Custom Icon | `ReactNode` | `close` | | disableDate | set disable date | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | custom buttons, under the title but above the subtitle | `() => string` \| `JSX.Element` | `-` | +| renderBottomButton | Custom calendar bottom button | `() => string` \| `JSX.Element` | `-` | | renderDay | day info | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayTop | something above day | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayBottom | something under day | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | diff --git a/src/packages/calendar/doc.md b/src/packages/calendar/doc.md index 34f28b5fef..4edee2c0d1 100644 --- a/src/packages/calendar/doc.md +++ b/src/packages/calendar/doc.md @@ -120,8 +120,10 @@ import { Calendar } from '@nutui/nutui-react' | showSubTitle | 是否展示日期标题 | `boolean` | `true` | | scrollAnimation | 是否启动滚动动画 | `boolean` | `true` | | firstDayOfWeek | 设置周起始日 | `0-6` | `0` | +| closeIcon | 自定义 Icon | `ReactNode` | `close` | | disableDate | 设置不可选日期 | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | 自定义日历标题下部,可用以添加自定义操作 | `() => string` \| `JSX.Element` | `-` | +| renderBottomButton | 自定义日历底部按钮 | `() => string` \| `JSX.Element` | `-` | | renderDay | 日期信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayTop | 日期顶部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayBottom | 日期底部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | diff --git a/src/packages/calendar/doc.taro.md b/src/packages/calendar/doc.taro.md index 1fc0cb0881..659755d0b4 100644 --- a/src/packages/calendar/doc.taro.md +++ b/src/packages/calendar/doc.taro.md @@ -120,8 +120,10 @@ import { Calendar } from '@nutui/nutui-react-taro' | showSubTitle | 是否展示日期标题 | `boolean` | `true` | | scrollAnimation | 是否启动滚动动画 | `boolean` | `true` | | firstDayOfWeek | 设置周起始日 | `0-6` | `0` | +| closeIcon | 自定义 Icon | `ReactNode` | `close` | | disableDate | 设置不可选日期 | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | 自定义日历标题下部,可用以添加自定义操作 | `() => string` \| `JSX.Element` | `-` | +| renderBottomButton | 自定义日历底部按钮 | `() => string` \| `JSX.Element` | `-` | | renderDay | 日期信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayTop | 日期顶部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayBottom | 日期底部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | diff --git a/src/packages/calendar/doc.zh-TW.md b/src/packages/calendar/doc.zh-TW.md index 1def02daa5..86954b7a65 100644 --- a/src/packages/calendar/doc.zh-TW.md +++ b/src/packages/calendar/doc.zh-TW.md @@ -120,8 +120,10 @@ import { Calendar } from '@nutui/nutui-react' | showSubTitle | 是否展示日期標題 | `boolean` | `true` | | scrollAnimation | 是否啟動滾動動畫 | `boolean` | `true` | | firstDayOfWeek | 設置周起始日 | `0-6` | `0` | +| closeIcon | 自定義 Icon | `ReactNode` | `close` | | disableDate | 設置不可選日期 | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | 自定義日歴標題下部,可用以添加自定義操作 | `() => string` \| `JSX.Element` | `-` | +| renderBottomButton | 自定義日歴底部按鈕 | `() => string` \| `JSX.Element` | `-` | | renderDay | 日期信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayTop | 日期頂部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | renderDayBottom | 日期底部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | diff --git a/src/packages/calendarcard/calendarcard.tsx b/src/packages/calendarcard/calendarcard.tsx index 2afcb0cc8b..f590d0f662 100644 --- a/src/packages/calendarcard/calendarcard.tsx +++ b/src/packages/calendarcard/calendarcard.tsx @@ -9,7 +9,7 @@ import { getCurrentWeekDays, getPrevMonthDays, } from './utils' -import { useConfig } from '@/packages/configprovider/configprovider' +import { useConfig } from '@/packages/configprovider' import type { CalendarCardDay, CalendarCardMonth, diff --git a/src/packages/calendaritem/calendaritem.taro.tsx b/src/packages/calendaritem/calendaritem.taro.tsx index fa772e210e..82c847d6d6 100644 --- a/src/packages/calendaritem/calendaritem.taro.tsx +++ b/src/packages/calendaritem/calendaritem.taro.tsx @@ -56,6 +56,7 @@ export interface CalendarItemProps extends PopupProps { firstDayOfWeek: number disableDate: (date: CalendarDay) => boolean renderHeaderButtons: () => string | JSX.Element + renderBottomButton: () => string | JSX.Element renderDay: (date: CalendarDay) => string | JSX.Element renderDayTop: (date: CalendarDay) => string | JSX.Element renderDayBottom: (date: CalendarDay) => string | JSX.Element @@ -121,6 +122,7 @@ export const CalendarItem = React.forwardRef< renderDay, renderDayTop, renderDayBottom, + renderBottomButton, value, onConfirm, onUpdate, @@ -876,8 +878,14 @@ export const CalendarItem = React.forwardRef< return (
{children} -
- {confirmText || locale.confirm} +
+ {renderBottomButton ? ( + renderBottomButton() + ) : ( +
+ {confirmText || locale.confirm} +
+ )}
) diff --git a/src/packages/calendaritem/calendaritem.tsx b/src/packages/calendaritem/calendaritem.tsx index 445d28abc5..96a33e7f16 100644 --- a/src/packages/calendaritem/calendaritem.tsx +++ b/src/packages/calendaritem/calendaritem.tsx @@ -10,7 +10,7 @@ import { getPreMonthDates, } from '@/utils/date' import requestAniFrame from '@/utils/raf' -import { useConfig } from '@/packages/configprovider/configprovider' +import { useConfig } from '@/packages/configprovider' import { usePropsValue } from '@/utils/use-props-value' import { splitDate, @@ -55,6 +55,7 @@ export interface CalendarItemProps extends PopupProps { firstDayOfWeek: number disableDate: (date: CalendarDay) => boolean renderHeaderButtons: () => string | JSX.Element + renderBottomButton: () => string | JSX.Element renderDay: (date: CalendarDay) => string | JSX.Element renderDayTop: (date: CalendarDay) => string | JSX.Element renderDayBottom: (date: CalendarDay) => string | JSX.Element @@ -116,6 +117,7 @@ export const CalendarItem = React.forwardRef< firstDayOfWeek, disableDate, renderHeaderButtons, + renderBottomButton, renderDay, renderDayTop, renderDayBottom, @@ -875,8 +877,14 @@ export const CalendarItem = React.forwardRef< return (
{children} -
- {confirmText || locale.confirm} +
+ {renderBottomButton ? ( + renderBottomButton() + ) : ( +
+ {confirmText || locale.confirm} +
+ )}
) diff --git a/src/packages/cascader/cascader.tsx b/src/packages/cascader/cascader.tsx index fc973d9ddc..f6c4c2f647 100644 --- a/src/packages/cascader/cascader.tsx +++ b/src/packages/cascader/cascader.tsx @@ -22,7 +22,7 @@ import { import Tree from './tree' import { ComponentDefaults } from '@/utils/typings' import { usePropsValue } from '@/utils/use-props-value' -import { useConfig } from '@/packages/configprovider/configprovider.taro' +import { useConfig } from '@/packages/configprovider' export interface CascaderProps extends Pick< diff --git a/src/packages/grid/__test__/__snapshots__/grid.spec.tsx.snap b/src/packages/grid/__test__/__snapshots__/grid.spec.tsx.snap index 7dcd1750ea..be66fe2a05 100644 --- a/src/packages/grid/__test__/__snapshots__/grid.spec.tsx.snap +++ b/src/packages/grid/__test__/__snapshots__/grid.spec.tsx.snap @@ -7,7 +7,7 @@ exports[`render with custom content 1`] = ` >
{ expect(container).toMatchSnapshot() }) -test('render with column num', () => { - const { container } = render( - <> - - - - - - - - - - - - - - - - - - - - - - ) - - const regionItem = container.querySelector('.nut-grid-item') - expect(regionItem).toHaveStyle('flex-basis:33.333333333333336%') -}) - test('render with props gap', () => { const { container } = render( <> @@ -89,7 +59,7 @@ test('render with props gap', () => { ) const regionItem = container.querySelector('.nut-grid-item') - expect(regionItem).toHaveStyle('padding-right:3px') + expect(regionItem).toHaveStyle('margin-right:3px') }) test('render with props reverse', () => { diff --git a/src/packages/grid/grid.taro.tsx b/src/packages/grid/grid.taro.tsx index aa3043adc8..f962d82872 100644 --- a/src/packages/grid/grid.taro.tsx +++ b/src/packages/grid/grid.taro.tsx @@ -2,7 +2,6 @@ import React, { CSSProperties, FunctionComponent } from 'react' import classNames from 'classnames' import GridContext from './grid.taro.context' import { GridItem, GridItemProps } from '../griditem/griditem.taro' -import { pxCheck } from '@/utils/px-check' export type GridDirection = 'horizontal' | 'vertical' @@ -64,9 +63,6 @@ export const Grid: FunctionComponent< if (style) { styleSelf = style } - if (gap) { - styleSelf.paddingLeft = pxCheck(gap) - } return styleSelf } diff --git a/src/packages/grid/grid.tsx b/src/packages/grid/grid.tsx index 06c10c436d..68bab56ff7 100644 --- a/src/packages/grid/grid.tsx +++ b/src/packages/grid/grid.tsx @@ -2,7 +2,6 @@ import React, { CSSProperties, FunctionComponent } from 'react' import classNames from 'classnames' import { GridItem, GridItemProps } from '../griditem/griditem' import GridContext from './grid.context' -import { pxCheck } from '@/utils/px-check' export type GridDirection = 'horizontal' | 'vertical' @@ -64,9 +63,6 @@ export const Grid: FunctionComponent< if (style) { styleSelf = style } - if (gap) { - styleSelf.paddingLeft = pxCheck(gap) - } return styleSelf } diff --git a/src/packages/griditem/griditem.taro.tsx b/src/packages/griditem/griditem.taro.tsx index 3b0568b76f..2c3b7a98aa 100644 --- a/src/packages/griditem/griditem.taro.tsx +++ b/src/packages/griditem/griditem.taro.tsx @@ -58,14 +58,17 @@ export const GridItem: FunctionComponent< const rootStyle = () => { const styles: CSSProperties = { - flexBasis: `${100 / +columns}%`, + flexBasis: `calc((100% - ${pxCheck((+columns - 1) * Number(gap))}) / ${columns})`, ...style, } if (square) { styles.paddingTop = `${100 / +columns}%` } else if (gap) { - styles.paddingRight = pxCheck(gap) + if ((index + 1) % Number(columns) !== 0) { + styles.marginRight = pxCheck(gap) + } + if (index >= Number(columns)) { styles.marginTop = pxCheck(gap) } diff --git a/src/packages/griditem/griditem.tsx b/src/packages/griditem/griditem.tsx index 2e1f30cfe7..cd487f1ec1 100644 --- a/src/packages/griditem/griditem.tsx +++ b/src/packages/griditem/griditem.tsx @@ -55,17 +55,19 @@ export const GridItem: FunctionComponent< const classPrefix = 'nut-grid-item' const classes = classNames(classPrefix, className) const context = useContext(GridContext) - const rootStyle = () => { const styles: CSSProperties = { - flexBasis: `${100 / +columns}%`, + flexBasis: `calc((100% - ${pxCheck((+columns - 1) * Number(gap))}) / ${columns})`, ...style, } if (square) { styles.paddingTop = `${100 / +columns}%` } else if (gap) { - styles.paddingRight = pxCheck(gap) + if ((index + 1) % Number(columns) !== 0) { + styles.marginRight = pxCheck(gap) + } + if (index >= Number(columns)) { styles.marginTop = pxCheck(gap) } diff --git a/src/packages/overlay/overlay.scss b/src/packages/overlay/overlay.scss index 110934d781..f32f58f5ea 100644 --- a/src/packages/overlay/overlay.scss +++ b/src/packages/overlay/overlay.scss @@ -23,10 +23,6 @@ .nut-overflow-hidden { overflow: hidden !important; - - .taro_page { - overflow: hidden !important; - } } .nut-overlay-slide {