diff --git a/CHANGELOG.md b/CHANGELOG.md index a28a4d6a43..3d4d6a48d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1343 +1,102 @@ -# 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` - -- :sparkles: feat(popup): lockscroll 增加可选值 strict, 用于支持 iOS12 (#2629) -- :bug: fix(dialog): revert defaultprops -- :bug: fix(range): usememo (#2638) -- :bug: fix(backtop & menu): lint, code simplification, deprecated pageYOffset removed (#2633) -- :bug: fix: taro async warning in taro-h5 env (#2636) -- :bug: fix(range): refactor & lint fixed (#2637) -- :bug: fix(radio): lint fixed (#2635) -- :bug: fix(navbar): safearea displays abnormal when safeAreaInsetTop has been set true (#2632) -- :bug: fix: usecallback to fix render too many times, button,animatingnumbers,avatar,audio; and fix avatargroup when length > maxsize (#2628) -- 🏡 chore(demo): display bound dispatchSetState in demo8 of table demos (#2626) -- 📖 docs: swiper 可通过 css 的 touch-action 设置用户操作行为 (#2630) -- 📖 docs: 文档构建出现未闭合标签的错误提示 - -# v2.6.21 - -`2024-09-27` - -- 🏡 chore: update dependency linguist-languages to be included within package (#2607) -- :sparkles: feat(Uploader): add support for deleteIcon prop customization (#2618) -- :bug: fix: 修改jd小程序高版本弹幕不滚动问题 (#2612) - -# v2.6.20 - -`2024-09-20` - -- :bug: fix: i18n (#2597) -- :bug: fix: 类型构建错误 (#2605) -- 🏡 chore: replace local prettier plugin with npm package (#2603) - -# v2.6.19 - -`2024-09-13` - -- 🏡 chore(deps): update dependency vite-plugin-dts to v4 (#2533) -- :bug: fix(cascader): 受控状态下 value 变化时同步组件选中状态 (#2591) -- :bug: fix: 移除不必要的 fragment 元素 (#2587) -- :bug: fix(datepicker): show zero on page (#2582) -- :bug: fix: findDomNode from transition (#2525) -- :bug: fix(props): add mergeProps utility to resolve all defaultProps warnings (#2581) -- 🪵 refactor: resolve sass nested rules warning (#2579) - -# v2.6.18 - -`2024-09-06` - -- 🏡 chore: remove deprecated (#2573) -- 🏡 chore(deps): update dependency marked to v14 (#2532) -- :sparkles: feat: demos for popup & dialog (#2574) -- :sparkles: feat: beforeupload (#2567) -- :bug: fix: remove icons defaultprops (#2571) -- :bug: fix(input): type props didnot work when equals number|digit (#2563) -- :bug: fix: dialog -- :bug: fix(sticky): should rerender when zIndex changes (#2572) -- :bug: fix(sticky): rerender sticky when threshold change (#2564) -- :bug: fix(deps): update dependency jscodeshift to v17 (#2534) - -# v2.6.17 - -`2024-08-30` - -- 🏡 chore(form): form demo (#2528) -- 📖 docs(readme): fix pnpm run dev weapp jd dir (#2514) -- :sparkles: feat(cell): add clickable prop to support click style feedback (#2527) -- :sparkles: feat(image-preview): 增加索引字段,用于预览内容排序 (#2519) -- :bug: fix(tabs.taro.tsx): 解决在不需要滚动的时候,切换tab产生tab位置错乱的问题 (#2554) -- :bug: fix(uploader): beforeUpload should trigger every time before uploading (#2553) -- :bug: fix(PullToRefresh): 修复PullToRefresh组件disabled属性在taro中无效的问题 (#2538) -- :bug: fix(uploader): ios 下无法回显的问题修复 (#2550) -- :bug: fix(uploader): sizeType prop didnot work when weapp || jd (#2526) - -# v2.6.16 - -`2024-08-03` - -- 📖 docs(card): correct doc (#2504) @Alex-huxiyang -- :sparkles: feat(menu): menu-item 组件增加标题icon自定义方式 (#2488) @zhangming -- :sparkles: feat(form): Form.Item 增加 align 属性 (#2492) @zhangming -- :bug: fix(inputNumber): correct onChange, onOverlimit event triggering timing when async & sync (#2509) @Alex-huxiyang -- :bug: fix(uploader): xhrBeforeUpload判断错误 (#2507) @Alex-huxiyang -- :bug: fix(swiper): correct onChange ts type (#2493) @Alex-huxiyang -- 🪵 refactor(numberkeyboard): optimize code & correct defaultProps (#2508) @Alex-huxiyang -- 🏡 chore(cell): unify ts type & docs (#2496) @Alex-huxiyang -- 🏡 chore(deps): update vitest monorepo to v2 (major) (#2439) @renovate[bot] -- 🏡 chore(deps): update dependency glob to v11 (#2438) @renovate[bot] -- 🏡 chore(deps): update dependency inquirer to v10 (#2420) @renovate[bot] -- 🏡 chore(deps): update dependency marked to v13 (#2358) @renovate[bot] - -# v2.6.15 - -`2024-07-26` - -- 🏡 chore: run md-table-format when git commit changes (#2484) @Alex-huxiyang -- :sparkles: feat(menu): allow custom classnames for Menu and dynamic titles (#2480) @Alex-huxiyang -- :sparkles: feat(watermark): support multi-line text (#2477) @xiaoyatong -- :bug: fix: move defaultprops (#2482) @xiaoyatong -- :bug: fix: snapshot update (#2481) @Alex-huxiyang -- :bug: fix(uploader): image 居中展示 (#2475) @xiaoyatong -- :bug: fix(infiniteLoading): rest 导致事件无法触发 (#2474) @oasis-cloud -- :bug: fix: sticky 构建时类型错误 @oasis-cloud -- :bug: fix(uploader): images should display when they've been successfully uploaded (#2448) @Alex-huxiyang -- :bug: fix: 修复日历进行快捷选择日期时 点击确认获取的是上一次的日期 (#2436) @yangqianlu -- 🪵 refactor: table (#2473) @zanyuki-jd -- 🪵 refactor: sticky (#2468) @oasis-cloud - -# v2.6.14 - -`2024-07-19` - -- :sparkles: feat(menuitem): 新增css类名,增强自定义样式能力 (#2443) @Alex-huxiyang -- :sparkles: feat(empty): add css variable nutui-empty-background-color (#2451) @Alex-huxiyang -- :sparkles: feat(infiniteLoading): 继承 scrollView 的 props 类型 (#2441) @oasis-cloud -- :bug: fix(cascader): 初始化设置value未成功选中 (#2435) @Alex-huxiyang -- :bug: fix(swiper): display abnormal when dir = 'rtl' (#2454) @Alex-huxiyang -- :bug: fix(form): 兼容校验时机 (#2437) @Alex-huxiyang -- :bug: fix(form): 在FromInstance增加validateFields方法的定义 (#2450) @jinjl - -# v2.6.13 - -`2024-07-12` - -- :sparkles: feat: tabs滚动条兼容火狐浏览器 (#2431) @JoanneXu6677 -- :sparkles: feat(drag): add the ability to support onDrag, onDragStart, onDragEnd callbacks (#2418) @Alex-huxiyang -- :bug: fix(formItem): validateTrigger无法正确触发校验 (#2433) @Alex-huxiyang -- :bug: fix: 日历组件滚动到顶部时 出现空白问题 (#2409) @522109452 -- :bug: fix(imagepreview): 无法在预期情景正确关闭图片的异常 (#2421) @Alex-huxiyang - -# v2.6.12 - -`2024-07-05` - -- :sparkles: feat: add pagination whether to show pages in imagepreview (#2411) @xiaoyatong -- :bug: fix(uploader): pre-upload pmage preview bug (#2416) @Alex-huxiyang -- :bug: fix(taro-form-demo): 点击演示demo表单内的重置会触发提交表单事件bug修复 (#2415) @Skedush -- :bug: fix(form): validator 中的 value 类型更新为 any (#2406) @oasis-cloud -- :bug: fix(uploader): 京东小程序中可上传时可选择图片和视频 (#2410) @xueshufive -- :bug: fix(avatarcropper): 报错 (#2364) @Alex-huxiyang -- :bug: fix(form): setFields未触发校验 (#2400) @Alex-huxiyang - -# v2.6.11 - -`2024-06-28` - -- :sparkles: feat(table): table新增自定义行 (#2390) @zanyuki-jd -- :bug: fix(fixednav): 可拖拽元素样式缺失 (#2391) @oasis-cloud - -# v2.6.10 - -`2024-06-21` - -- 🏡 chore: 文档未来规范 (#2373) @Alex-huxiyang -- 🤖 ci: 统一使用 pnpm @oasis-cloud -- :sparkles: feat(tabpane): 增添修改tabpane背景色的主题变量 (#2366) @Alex-huxiyang -- :bug: fix(tabs): 修复tabs异步设置titles滚动失效(#2351) (#2369) @ShuchenEason -- :bug: fix: umd 中替换环境变量 (#2368) @oasis-cloud - -# v2.6.9 - -`2024-06-14` - -- :sparkles: feat(form): footer 容器增加 className (#2345) @oasis-cloud -- :bug: fix: 解决Drag组件拖拽后会在原地留一个遮挡元素问题+解决weapp/taro-h5多个demo拖拽位置不正确问题 (#2330) @irisSong -- :bug: fix(searchbar): 修复 clear 时未触发 change 的问题 (#2262) @eiinu - -# v2.6.8 - -`2024-05-31` - -- :sparkles: feat(button): 新增 button 原始类型属性 (#2195) @Jiankian -- :sparkles: feat(card): add card hide price and shop usage (#2292) @wick -- :bug: fix(cascader): onPathChange is not a function (#2308) @oasis-cloud -- :bug: fix: safearea for ac (#2293) @xiaoyatong -- :bug: fix(InputNumber): 扩大点击区域 (#2302) @xiaoyatong -- :bug: fix(picker): 函数调用之前检查 locale 是否已经定义 (#2259) @Alex-huxiyang -- 🏡 chore(demo): 更新组件引用方式 (#2304) @oasis-cloud -- 🏡 chore: fix typos (#2300) @Snoppy - -# v2.6.7 - -`2024-05-28` - -- :sparkles: feat: 签名组件增加当没有签名或已清空的情况下的参数暴露 (#2288) @xiaoyatong -- :bug: fix: ActionSheet 增加安全区处理 (#2286) @xiaoyatong -- :bug: fix(actionsheet): 去掉无意义的 padding,popup 已不再暴露 (#2285) @xiaoyatong - -# v2.6.6 - -`2024-05-24` - -- 🏡 chore(tag): css样式变量修复 (#2279) @Alex-huxiyang -- 🏡 chore(deps): update dependency eslint-plugin-markdown to v5 (#2218) @renovate[bot] -- 📖 docs(uploader): update (#2265) @eiinu -- :bug: fix(input): placeholder 无法设置空字符串 (#2282) @oasis-cloud -- :bug: fix(imagepreview): 阻止冒泡,防止点击图片关闭 (#2281) @Alex-huxiyang -- :bug: fix(FormItem): 修复initialValue属性初始化未被正确加入到Formstore中导致的问题 (#2247) @Alex-huxiyang - -# v2.6.5 - -`2024-05-17` - -\*🏡 chore(image): 官网taro的demo显示与h5不一致 (#2244) @Alex-huxiyang - -- :bug: fix(circleprogress): update demo (#2260) @Eiinu -- :bug: fix: 移除 defaultProps(2) (#2254) @Eiinu -- :bug: fix: 关于checkbox&tabs的doc与demo修改 (#2253) @Alex-huxiyang -- :bug: fix(table): 修复部分由于场景下width未生效导致的一些问题 (#2241) @Alex-huxiyang -- :bug: fix(menu): 选项文字很多时右侧箭头展示异常 (#2252) @Alex-huxiyang -- :bug: fix(input): 修复特殊场景下自动清除失效问题 (#2240) @Eiinu - -# v2.6.4 - -`2024-05-10` - -- 🏡 chore: 修改默认的微信基础库版本 (#2235) @eiinu -- 🏡 chore(image): demo代码风格优化 (#2220) @Alex-huxiyang -- 📖 docs(uploader): 文件上传编码使用提示 (#2224) @Alex-huxiyang -- :bug: fix(imagePreview): 阻止关闭预览事件对父结构的非必要影响 (#2227) @Alex-huxiyang -- :bug: fix(picker): 修复连续多次打开 picker 时显示值错误 (#2222) @eiinu -- :bug: fix(virtualList): 修复部分场景onScroll不触发 (#2221) @Alex-huxiyang -- :bug: fix: 移除 defaultProps (#2230) @eiinu - -# v2.6.3 - -`2024-04-30` - -- :bug: fix(tabs): 修复特殊场景下 value 设置未生效问题 (#2211) @eiinu - :art: style(Tabs.Tabpane): 给Tabs.Tabpane新增内边距样式变量,使得使用者可以自由控制该内边距。 (#2210) @jianhuagao -- 🏡 chore(icon): update demo (#2214) @eiinu - -# v2.6.2 - -`2024-04-26` - -- :bug: fix(datepicker): 修复受控方式下选项联动更新问题 (#2201) @eiinu -- :bug: fix(signature): 调整清空时机并更新demo (#2190) @Alex-huxiyang -- :bug: fix(ellipsis): 部分场景下的ref报错 (#2200) @Alex-huxiyang -- :bug: fix(inputnumber): 修复设置`InputNumber`组件className不生效的问题 (#2188) @Kurisu - :art: style: jmapp style 语义化 (#2052) @zhehu1 - :art: style(CellGroup): 给`CellGroup`组件新增外边距样式变量,使得使用者可以自由控制该外边距。 (#2189) @Kurisu - :art: style(badge): jdesign badge 样式 (#2164) @zhehu1 -- 📖 docs(tag):修复demo描述错误 (#2204) @jianhuagao - -# v2.6.1 - -`2024-04-19` - -- :bug: fix(image): standardize demos (#2177) @Alex-huxiyang -- :bug: fix(cellgroup): 去掉 cellgroup 未单独使用的 style 属性 (#2176) @kurisu994 -- :bug: fix(site): png url error & key duplicate (#2178) @Alex-huxiyang -- :bug: fix(swiper): 异步加载 indicator 不显示 (#2167) @Alex-huxiyang - -# v2.6.0 - -`2024-04-12` - -- 🪵 refactor(swiper): H5 下实现重构,增加 focus 模式 (#1962) @oasis-cloud -- :sparkles: feat: input 的 onFocus 增加 height 键盘高度参数 (#2154) @alex.zeng -- :bug: fix(drag): demo拆解与规范 (#2163) @eiinu -- :bug: fix(form): 可定义 fontsize (#2162) @oasis-cloud -- 🏡 chore(picker): demo拆解与规范 (#2157) @Alex-huxiyang -- 🏡 chore(radio): demo拆解与规范 (#2158) @LuckyLucy -- 🏡 chore(menu): demo拆解与规范 (#2153) @Alex-huxiyang -- 🏡 chore(loading): demo拆解与规范 (#2155) @Alex-huxiyang -- 🏡 chore(notify): demo拆解与规范 (#2151) @Alex-huxiyang - -# v2.5.2 - -`2024-04-03` - -- 🏡 chore(form): demo拆解与规范 (#2148) @oasis-cloud -- 🏡 chore(countdown): demo拆解与规范 (#2147) @Alex-huxiyang -- 🏡 chore(cascader): demo拆解与规范 (#2144) @Alex-huxiyang -- 🏡 chore(checkbox): demo拆解与规范 (#2146) @Alex-huxiyang -- :bug: fix(calendarcard): 直接抛出ondayclick (#2150) @oasis-cloud -- :bug: fix(radio): 样式变量修复(issue) (#2149) @Alex-huxiyang - -# v2.5.1 - -`2024-03-29` - -\*🏡 chore(deps): update dependency @types/testing-library\_\_jest-dom to v6 (#2127) @renovate[bot] - -- 📖 docs(readme): change npm to pnpm in the document (#2131) @JedediahXu -- :sparkles: feat(popover): rtl (#2121) @xiaoyatong -- :sparkles: feat(ellipsis): rtl (#2128) @irisSong -- :sparkles: feat(Form): rtl (#2120) @xiaoyatong -- :sparkles: feat(progress): Taro新增lazy属性 (#2108) @Alex-huxiyang -- :bug: fix(datepicker): 修复 datepicker 类型为hour-minutes/time时选中值无法回显的问题 (#2141) @yeyu98 -- :bug: fix(Toast): demo拆解与规范 (#2073) @OrdinarySF -- :bug: fix(calendar): demo拆解与规范 (#2137) @mikasayw -- :bug: fix(DatePicker): demo拆解与规范 (#2133) @yeyu98 -- :bug: fix(uploader): demo拆解与规范 (#2140) @irisSong -- :bug: fix(tabs): 修复 tab 过多时滚动定位不准确的问题 (#2135) @eiinu -- :bug: fix(range): demo拆解与规范 (#2139) @ShuchenEason -- :bug: fix(imagepreview): demo拆解与规范 (#2134) @Alex-huxiyang -- :bug: fix(textarea): demo拆解与规范 (#2132) @Amylee9712 -- :bug: fix(tour): demo拆解与规范 (#2130) @Alex-huxiyang -- :bug: fix(actionsheet): demo拆解与规范 (#2124) @ZissyW -- :bug: fix(icon): update taro demo (#2129) @eiinu -- :bug: fix(popup): demo拆解与规范 (#2122) @ZissyW -- :bug: fix(numberkeyboard): demo拆解与规范 (#2123) @ZissyW - -# v2.5.0 - -`2024-03-22` - -- :sparkles: feat(Popover): 新增单条数据的demo展示 (#2117) @xiaoyatong -- :sparkles: feat(progress): 支持taro的lazy属性 & demo拆解与规范 (#2086) @Alex-huxiyang -- :bug: fix(dialog): 关闭按钮默认在底部,24px白色图标 (#2118) @irisSong -- :bug: fix(noticebar): fix docs (#2119) @xiaoyatong -- :bug: fix(virtuallist): demo拆解与规范 (#2116) @eiinu -- :bug: fix: 修复address组件onChange参数透传问题 (#2110) @DreamSeeker321 -- :bug: fix(Icon): 小程序下展示异常问题修复 (#2114) @xiaoyatong -- :bug: fix(swiper): demo拆解与规范 (#2115) @Alex-huxiyang -- :bug: fix(audio): demo拆解与规范 (#2111) @Alex-huxiyang -- :bug: fix(animatingnumbers): demo拆解与规范 (#2109) @Alex-huxiyang -- :bug: fix(video): demo拆解与规范 (#2104) @eiinu -- :bug: fix(avatarcropper): demo拆解与规范 (#2103) @eiinu -- :bug: fix(steps): demo拆解与规范 (#2105) @eiinu -- :bug: fix: 修复 demo 目录报错 (#2107) @eiinu -- :bug: fix(swipe): 修改demo文案 (#2106) @xiaoyatong -- :bug: fix(shortpassword): demo拆解与规范 (#2102) @Alex-huxiyang -- :bug: fix(circleprogress): demo拆解与规范 (#2091) @Alex-huxiyang -- :bug: fix: vitest (#2101) @xiaoyatong -- :bug: fix(table): demo拆解与规范 (#2074) @Alex-huxiyang -- :bug: fix(timeselect): demo拆解与规范 (#2087) @Alex-huxiyang -- :bug: fix(tabs): demo拆解与规范 (#2066) @yeyu98 -- :bug: fix(signature): demo拆解与规范 (#2099) @Alex-huxiyang -- :bug: fix(tag): taro 下自定义icon无法展示 (#2088) @eiinu -- :bug: fix(animate): demo拆解与规范 (#2085) @eiinu -- :bug: fix(collapse): demo拆解与规范 (#2094) @eiinu -- :bug: fix(barrage): 简化demo (#2100) @xiaoyatong -- :bug: fix(barrage): demo拆解与规范 (#2098) @joyfully-W -- :bug: fix: taro-demo full class (#2095) @eiinu -- :bug: fix(Ellipsis): 修复小程序环境下给Ellipsis设置字号后工作不正常的问题 (#2078) @FPG-Alan -- :bug: fix: test (#2096) @xiaoyatong -- :bug: fix: 代码块修改为等宽字体 (#2092) @eiinu -- 🚦 Revert "feat(progress): 支持taro的lazy属性 & demo拆解与规范 (#2086)" @oasis-cloud -- 🏡 chore(calendarcard): demo 拆解与规范 (#2026) @eiinu -- 🏡 chore: 优化组件类型导出 (#2036) @eiinu -- 🏡 chore(deps): update dependency happy-dom to v14 (#2097) @renovate[bot] -- 🏡 chore: update changelog @oasis-cloud -- 📖 docs(overlay): fix typo @eiinu - -# v2.4.2 - -`2024-03-20` - -- 🔨 chore(row): 优化 className (#2054) @eiinu -- :sparkles: feat(backtop): rtl (#2051) @xiaoyatong -- :sparkles: feat(NoticeBar): 增加right 属性,支持更多可自定义内容 @xiaoyatong -- :bug: fix(address): demo拆解与规范 (#2068) @Alex-huxiyang -- :bug: fix(avatar): demo规范与调整 (#2071) @Alex-huxiyang -- :bug: fix(badge): demo拆解与规范 (#2060) @sd -- :bug: fix(calendarcard): 修复受控模式 (#2063) @eiinu -- :bug: fix(Card): demo拆解与规范 (#2072) @joyfully-W -- :bug: fix(dialog): demo拆解与规范 (#2069) @irisSong -- :bug: fix(fixedNav): demo拆解与规范 (#2048) @Alex-huxiyang -- :bug: fix(icon): 处理 rtl 部分 (#2050) @xiaoyatong -- :bug: fix(indicator): demo拆解与规范 (#2090) @eiinu -- :bug: fix(infiniteLoading): demo拆解与规范+增加joy logo的demo (#2081) @irisSong -- :bug: fix(input): demo拆解与规范 (#2035) @yeyu1998 -- :bug: fix(navbar): demo拆解与规范 (#2055) @Alex-huxiyang -- :bug: fix(pagination): demo拆解与规范 (#2079) @Alex-huxiyang -- :bug: fix(price): demo拆解与规范 (#2082) @Alex-huxiyang -- :bug: fix(pulltorefresh): demo中下拉图标修改为joy logo (#2084) @irisSong -- :bug: fix(rate): demo拆解与规范 (#2045) @sandra -- :bug: fix(SearchBar): demo拆解与规范 (#2064) @joyfully-W -- :bug: fix(sideNavBar): demo拆解与规范 (#2058) @Alex-huxiyang -- :bug: fix(skeleton): demo拆解与规范 (#2047) @sd -- :bug: fix(sticky): demo拆解与规范 (#2024) @Alex-huxiyang -- :bug: fix(swiper): rtl (#2061) @xiaoyatong -- :bug: fix(tabbar): demo拆解与规范&脚本增强 (#2059) @Alex-huxiyang -- :bug: fix(trendarrow): demo拆解与规范 (#2075) @ber -- :bug: fix(watermark): demo拆解与规范 (#2083) @eiinu -- :bug: fix: update copy-docs-h5-or-taro.js (#2080) @eiinu -- test: migrate jest to vitest (#2057) @eiinu - -# v2.4.1 - -`2024-03-15` - -- :sparkles: feat(badge): 新增 fill 属性 (#2042) @eiinu -- :sparkles: feat(button): 增加xlarge,按钮内图标大小追随按钮当前字号 (#2037) @xiaoyatong -- :sparkles: feat(ci): add issue-close.yml (#2031) @eiinu -- :sparkles: feat(infiniteloading): add type props (#2027) @irisSong -- :sparkles: feat(pulltorefresh): 增加 type 属性,支持深色背景设置 (#2044) @xiaoyatong -- :sparkles: feat(tabs): rtl (#2004) @irisSong -- :bug: fix(backtop): demo拆解与规范 (#2025) @Alex-huxiyang -- :bug: fix(badge): 修复value传入0时显示不正确的问题 (#2006) @boiboif -- :bug: fix(build): 移除构建产物中重复的类型文件 (#2038) @eiinu -- :bug: fix(calendarcard): 选择范围时支持仅选择单个日期 (#2009) @eiinu -- :bug: fix(configProvidder): demo拆解与自动替换脚本&configProvider规范统一 (#2005) @Alex-huxiyang -- :bug: fix(divider): demo拆解与规范 (#2013) @Alex-huxiyang -- :bug: fix(elevator): demo拆解与规范 (#2030) @Alex-huxiyang -- :bug: fix(ellipsis): 修复设置行数超过内容高度时只显示一行内容的问题 (#2028) @boiboif -- :bug: fix(Empty): 调整默认图片为jd图片 (#2032) @xiaoyatong -- :bug: fix(grid): demo拆解与规范 (#2014) @Alex-huxiyang -- :bug: fix(icon): demo拆解与规范 (#2010) @Alex-huxiyang -- :bug: fix(Image): demo拆解与规范 (#2011) @Alex-huxiyang -- :bug: fix(layout): demo拆解与规范 & 修复脚本在不同操作系统的正则匹配出错 (#2016) @Alex-huxiyang -- :bug: fix(overlay): demo拆解与规范 (#2012) @Alex-huxiyang -- :bug: fix(popover): 调整demo (#2043) @xiaoyatong -- :bug: fix(range): touchmove 回调中 rect 获取失败时终止 (#2029) @eiinu -- :bug: fix(space): demo拆解与规范 (#2021) @Alex-huxiyang -- :bug: fix(switch):switch组件demo代码重构 (#2033) @jiangjin3323 -- :bug: fix: docs (#2023) @xiaoyatong -- :bug: fix: fix swipe slide element get rect width error (#2017) @awefeng -- :bug: fix: 构建站点主题变量未成功引入 (#2002) @oasis - style(button): jmapp style (#2019) @zhehu1 - -# v2.4.0 - -`2024-03-08` - -- :sparkles: feat(inputnumber): update UI (#1989) @oasis-cloud -- :sparkles: feat(checkbox): list model (#1957) @oasis-cloud -- :sparkles: feat(dialog): added custom content area demo (#1995) @irisSong -- :sparkles: feat(dialog): support bottom close button (#1978) @irisSong -- :sparkles: feat(dialog): support confirm button loading effect (#1983) @bbf -- :sparkles: feat(empty): 图片变更 (#1988) @xiaoyatong -- :sparkles: feat(noticebar): supports the center layout (#1972) @irisSong -- :sparkles: feat(popover): 增加 light 和 dark 模式的区分 (#1977) @xiaoyatong -- :sparkles: feat(swipe): 增加自定义高度的demo (#1996) @xiaoyatong -- :sparkles: feat(rtl): badge (#1986) @eiinu -- :sparkles: feat(rtl): collapse (#1981) @eiinu -- :sparkles: feat(rtl): noticebar (#1984) @eiinu -- :sparkles: feat(rtl): table (#1982) @eiinu -- :sparkles: feat(animatingNumbers): support rtl (#1985) @irisSong -- :bug: fix(badge): the text set by value unwrap (#1992) @irisSong -- :bug: fix(cell): unify the demos of Cell (#1998) @Alex-huxiyang -- :bug: fix(toast): add deprecated prop msg (#1999) @eiinu -- :bug: fix(toast): 变更 taro下的属性 msg 为 content,增加 taro 下 demo (#1994) @xiaoyatong -- :bug: fix(virtuallist): 修复 vitrual list 组件 Taro 下获取窗口高度不正确的问题 (#1993) @CDog34 -- :bug: fix: dts 插件升级导致构建产物路径错误 (#1979) @oasis-cloud -- :bug: fix: tabs 小程序滚动操作问题 (#1969) @feiyang1020 -- 🔨 chore(deps): bump typescript v5 (#1975) @eiinu -- 🔨 chore(deps): update commitlint monorepo to v19 (#1976) @renovate[bot] -- 🔨 chore: 构建 demo 要定义 **PROJECTID** (#1974) @oasis-cloud -- 📖 docs(tabs): fix typo (#1997) @eiinu - -# v2.3.12 - -`2024-03-01` - -- :sparkles: feat(inputnumber): taro 环境下增加 number类型的键盘 (#1965) @LING_ZI_QING -- :sparkles: feat(rtl): support progress & range (#1961) @eiinu -- :bug: fix(elevator): 修复增加页码的逻辑 (#1960) @oasis-cloud -- :bug: fix(elevator): 解决部分安卓手机右侧导航高亮偏差问题 (#1966) @irisSong -- :bug: fix(form): after setting validateTrigger, `trigger` should be excluded (#1963) @oasis-cloud -- :bug: fix(form): 组件更新时,标签结构变化,会导致失去焦点 (#1973) @oasis-cloud -- :bug: fix(inputnumber): provide finalValue (#1959) @oasis-cloud -- 📖 docs: 修复文档 (#1964) @xiaoyatong -- 🛠 refactor(docs): 文档支持通过标签使用已有的 demo 代码 (#1950) @Alex-huxiyang -- 🛠 refactor: adjust build target to ES6, reduce size of configprovider (#1949) @oasis-cloud -- 🔨 chore(ci): update workflows (#1970) @eiinu -- 🔨 chore(dev): development mode, remove duplicate CSS stylesheets (#1958) @oasis-cloud -- 🔨 chore: remove CSS logic conflicting with MDX (#1971) @oasis-cloud - -# v2.3.11 - -`2024-02-23` - -- :sparkles: feat(inputnumber): support allow empty (#1943) @oasis -- :bug: fix(actionsheet): 关闭弹窗后内容显示在页面,优化 popup 相关属性传递 (#1954) @LING_ZI_QING -- :bug: fix(rtl): css 样式变量部分 (#1944) @xiaoyatong -- :bug: fix(form): validateFields support promise (#1955) @oasis - -# v2.3.10 - -`2024-02-06` - -- :sparkles: feat(form): support renderProps (#1937) @oasis-cloud -- :sparkles: feat(shortpassword): support ref for form (#1930) @oasis-cloud -- :sparkles: feat: 生成用于 rtl 校对的 css 文件 (#1927) @oasis-cloud -- :bug: fix(barrage): 解决新增弹幕重叠问题+不同宽度弹幕滚动速度不一致问题+重构taro版本 (#1942) @irisSong -- :bug: fix(popover): can not be closed (#1931) @oasis-cloud -- :bug: fix(sticky): 适配 taro (#1928) @xiaoyatong -- :bug: fix(tabs): 修订左对齐样式 (#1929) @xiaoyatong -- 📖 docs(tabs): 文档可读性优化 (#1935) @Alex-huxiyang - -# v2.3.9 - -`2024-02-02` - -- :sparkles: feat: generate stylesheets containing RTL-related styles (#1889) @oasis-cloud -- :bug: fix(infiniteloading): infiniteloading 点击后再滑动,操作出现异常 (#1919) @JQ -- :bug: fix(input): controlled mode, content clearing does not work (#1912) @oasis-cloud -- :bug: fix(popup): support destroyOnClose (#1914) @oasis-cloud -- :bug: fix(rtl): 修复文本 margin (#1926) @xiaoyatong -- :bug: fix(textarea): 修复maxlength=-1时无法输入字符的情况 (#1910) @xiaoyatong -- :bug: fix(input): 受控模式下在 H5 无法清空内容 (#1925) @oasis-cloud -- :bug: fix(rtl): 左右方向箭头的处理 (#1922) @xiaoyatong -- 📖 docs(backtop): 文档可读性优化 (#1909) @Alex-huxiyang -- 📖 docs(image): correct the error attribute (#1916) @oasis-cloud -- 📖 docs(layout): 文档可读性优化 (#1904) @Alex-huxiyang -- 📖 docs(navbar): 文档可读性优化 (#1915) @Alex-huxiyang -- 📖 docs(sidenavbar): 文档可读性优化 (#1920) @Alex-huxiyang -- 📖 docs(sticky): 文档可读性优化 (#1906) @Alex-huxiyang -- 📖 docs(tabbar): 文档可读性优化 (#1921) @Alex-huxiyang - -# v2.3.8 - -`2024-01-26` - -- 🔨 chore: 修复dev环境下demo分包体超过2M问题 (#1905) @xiaoyatong -- 📖 docs(configprovider): 文档可读性优化 (#1882) @Alex-huxiyang -- 📖 docs(grid): 文档可读性优化 (#1903) @Alex-huxiyang -- 📖 docs(swiper): customize pagination controls (#1892) @oasis-cloud -- :sparkles: feat(navbar): title区域自适应宽度 (#1891) @irisSong -- :sparkles: feat(rate): 新增 touchable 属性支持滑动选择 (#1880) @eiinu -- :sparkles: feat(video): support passing through attributes for Taro Video (#1890) @xiaoyatong -- :sparkles: feat: radiogroup add shape props (#1898) @oasis-cloud -- :bug: fix(ellipsis): 修复小程序文本省略问题 (#1888) @eiinu -- :bug: fix(ellipsis): 在 taro 小程序下尽量展示的平滑舒适 (#1902) @xiaoyatong -- :bug: fix(image): 文档可读性优化 (#1887) @Alex-huxiyang -- :bug: fix(overlay): 文档可读性优化 (#1894) @Alex-huxiyang -- :bug: fix(rate): 修复 rate 高度问题 (#1883) @eiinu -- :bug: fix(steps): 小程序的真机情况下出现的换行的情况 (#1899) @xiaoyatong -- :bug: fix(swiper): 轮播跳帧 (#1886) @oasis-cloud -- :bug: fix(tabs): 解决组件嵌套tabs,横向滚动位置计算偏差问题 (#1884) @irisSong -- :bug: fix: doc、demo调整&优化 @huxiyang3 -- :bug: fix: taro.createSelectorQuery not function (#1907) @oasis-cloud - -# v2.3.7 - -`2024-01-19` - -- :sparkles: feat(checkbox): 增加至少选择项数量的设置功能 (#1859) @oasis -- :sparkles: feat(dialog): 增加关闭按钮 (#1872) @irisSong -- :sparkles: feat(imagepreview): 新增 closeIcon & closeIconPosition (#1873) @eiinu -- :sparkles: feat(numberkeyboard): add title right actions (#1881) @xiaoyatong -- :sparkles: feat: support debugging RTL in the H5 development environment (#1865) @oasis -- :bug: fix(space): 主/交叉轴的 demo 与国际化改进 (#1867) @Alex-huxiyang -- :bug: fix(animatingnumbers): 修复单元测试问题 (#1878) @eiinu -- :bug: fix(button): demo和doc一致化、文档代码优化、属性补充 (#1875) @Alex-huxiyang -- :bug: fix(cell): doc、demo一致化改进 (#1877) @Alex-huxiyang -- :bug: fix(popover): 置于滚动容器中,popover 需要跟随滚动,修复选中项的样式 (#1869) @oasis -- :bug: fix(table): fixed sticky css (#1866) @xiaoyatong -- :bug: fix(tabs): 纵向图标未对齐问题 (#1868) @irisSong -- :bug: fix(Textarea): 文档demo中props拼写错误修改 (#1874) @irisSong -- :bug: fix(uploader): fix the styles when custom progress (#1863) @xiaoyatong -- :bug: fix: 增加 CSS 变量配置颜色的例子,完善 color 属性的使用场景描述 (#1857) @oasis -- 📖 docs(avatar): add list display mode (#1862) @oasis -- 📖 docs(icon): 更新文档 (#1879) @eiinu -- 📖 docs(shortpassword): 增加onComplete的demo及文档 (#1860) @xiaoyatong -- 🛠 refactor(circleprogress): optimize animation duration (#1861) @oasis - -# v2.3.6 - -`2024-01-12` - -- :sparkles: feat(space): update demos and docs of justify and align (#1856) @Alex-huxiyang -- :sparkles: feat(tag): image text (#1851) @oasis -- :sparkles: feat: doc文档优化 (#1850) @Alex-huxiyang -- :bug: fix(swiper): fix props of saving image at taro, fix parameter of onChange, update taro version to 3.6.22 (#1847) @xiaoyatong -- :bug: fix: fix some components display bad with the white screen at taro when is development (#1852) @xiaoyatong -- 🔨 chore(deps): update icons to v1.0.2 (#1853) @oasis - -# v2.3.5 - -`2024-01-05` - -- :sparkles: feat(avatarcropper): 新增属性shape,可设置裁剪样式为圆形 (#1842) @Marvin Gui -- :sparkles: feat(dialog): 新增 CSS 变量 (#1844) @LING_ZI_QING -- :sparkles: feat(range): marks type optimization (#1833) @oasis-cloud -- :sparkles: feat(tabs): 新增 CSS 变量 (#1835) @LING_ZI_QING -- :bug: fix(avatarcropper): fix cannot display when it is development at taro (#1840) @xiaoyatong -- :bug: fix(empty): fix import at taro (#1839) @xiaoyatong -- :bug: fix(picker): 优化 options 的 text 属性的判空逻辑 (#1837) @oasis-cloud -- :bug: fix(picker): 修复 safari 下 mask 样式问题 (#1843) @eiinu -- :bug: fix(pulltorefresh): 修复安卓小程序下拉卡顿问题 (#1830) @NickH -- :bug: fix(tabs): docs and jmapp css variables (#1838) @xiaoyatong -- 🔨 chore(deps): update @nutui/icons to v1.0.1 (#1836) @oasis-cloud - -# v2.3.4 - -`2023-12-29` - -- 📖 docs(nabvar): showtoas 改为 showToast (#1826) @MingHui -- :bug: fix(datepicker): 未设置 value/defaultValue 时渲染 0 (#1819) @RyanCW -- :bug: fix(infiniteLoading): ssr (#1828) @xiaoyatong -- :bug: fix(infiniteLoading): 修改类名及demo (#1818) @xiaoyatong -- :bug: fix(popover): icon cannot be displayed at taro (#1820) @xiaoyatong -- :bug: fix(popver): bottom positon (#1823) @xiaoyatong -- :bug: fix(tabbar): fix icon color (#1816) @xiaoyatong -- :bug: fix(virtualList): 等高模式下的抖动处理, 不定高模式快速滑动白屏 (#1825) @oasis-cloud -- :bug: fix(watermark): fix demos (#1817) @xiaoyatong -- 🛠 refactor(infiniteloading): onRefresh、onLoadMore 改为 Promise 类型,去掉显示调用 done 方法 (#1827) @oasis-cloud - -# v2.3.3 - -`2023-12-22` - -- :sparkles: feat(form): validateFields 挂到实例上 (#1813) @oasis-cloud -- :sparkles: feat(table): 增加table锁定头部、左侧列、右侧列 (#1775) @zhehu1 -- :bug: fix(Button): incorrect color for danger (#1809) @vczyh -- :bug: fix(cascader): 增加 ref 上的 open 和 close 方法,支持 form 中使用 (#1799) @oasis-cloud -- :bug: fix(datepicker): 受控模式不生效 (#1797) @oasis-cloud -- :bug: fix(infiniteloading): scrollview 的 scrolltop 不应该根据高度设置 (#1804) @oasis-cloud -- :bug: fix(pulltorefresh): icon 部分拆到demo中 (#1812) @xiaoyatong -- :bug: fix(tabbaritem): 将 clone 子元素的方法,改为 context 的方式,隐藏内部使用的 props,精简对外暴露的 props 类型 (#1811) @oasis-cloud -- :bug: fix(tabs): 导航滚动到可视范围需要显示指定 name,调整为内置 uuid 替代 name (#1800) @oasis-cloud -- 🔨 chore: use svg64 in taro (#1805) @xiaoyatong - -# v2.3.2 - -`2023-12-15` - -- 📖 docs(cascader): 动态加载文档代码与 demo 保持一致,回显已选数据 (#1787) @LING_ZI_QING -- :sparkles: feat(fixednav): add the list icon for ReactNode (#1786) @sunsunmonkey -- :bug: fix(cascader): second column data cannot be displayed (#1796) @xiaoyatong -- :bug: fix: popup minheight for iPhone14 pro max (#1795) @xiaoyatong -- :bug: fix: toast duration too long (#1794) @xiaoyatong -- 🛠 refactor(swiper): implementing sliding logic through useTouch (#1793) @oasis-cloud -- 🛠 refactor: 类型文件统一为 types,增加 fixednavitem 类型 (#1789) @oasis-cloud - -# v2.3.1 - -`2023-12-13` - -- :bug: fix(searchbar): 小程序环境不支持 _ 选择器,将 _ 展开为 div、span、svg (#1777) @oasis-cloud -- :bug: fix: jmapp variables (#1776) @xiaoyatong -- :bug: fix: icon 使用方式错误 (#1778) @xiaoyatong -- :bug: fix: 使用 popup 的组件,采用 scrollview 实现 (#1782) @oasis-cloud - -# v2.3.0 - -`2023-12-08` - -- 🔨 chore(config): demo 的配置文件中增加 css 主题 (#1765) @oasis-cloud -- 🔨 chore(deps): update dependency @nutui/icons-\* to 0.0.5 (#1767) @oasis-cloud -- 📖 docs(avatar): 修改demo值,改为可支持变量 (#1752) @xiaoyatong -- 📖 docs(checkbox): checkedIcon 改为 activeIcon (#1724) @oasis-cloud -- 📖 docs(countdown): 修复文档中的文案多语言化 (#1723) @xiaoyatong -- 📖 docs(form): 文档增加 useForm 的示例 (#1708) @oasis-cloud -- 📖 docs(overlay): 文档优化 (#1706) @xiaoyatong -- 📖 docs(picker): fix docs (#1740) @xiaoyatong -- 📖 docs(popup): 禁止滚动穿透示例 (#1769) @oasis-cloud -- 📖 docs(pulltorefresh): 增加 scrollTop 相关 demo (#1755) @oasis-cloud -- 📖 docs(table): 修改文档 (#1731) @xiaoyatong -- 📖 docs(tour): fix tour demo (#1759) @xiaoyatong -- 📖 docs: address and collapse doc icons (#1692) @xiaoyatong -- 📖 docs: fix docs (#1678) @xiaoyatong -- :sparkles: feat(calendarcard): 限制范围时禁止面板切换 (#1688) @eiinu -- :sparkles: feat(checkbox): add button mode (#1738) @xiaoyatong -- :sparkles: feat(empty): adds title,size,and actions (#1697) @xiaoyatong -- :sparkles: feat(example): add with-rsbuild example (#1661) @Kurisu -- :sparkles: feat(form): 增加上下结构的展示的demo (#1729) @xiaoyatong -- :sparkles: feat(infiniteloading): 优化布局,添加css变量,增加demo (#1760) @xiaoyatong -- :sparkles: feat(navbar): 增加标题左对齐方式,优化左侧icon的布局,调整className类 名和css 变量 (#1750) @xiaoyatong -- :sparkles: feat(pagination): add lite mode and css variable (#1743) @xiaoyatong -- :sparkles: feat(popover): 新增属性 action,简化css 变量 (#1747) @xiaoyatong -- :sparkles: feat(popup): 增加description属性,调整从底部弹出时的样式,默认为 round 模式 (#1749) @xiaoyatong -- :sparkles: feat(searchbar): 增加属性 backable 可返回,简化css变量 (#1736) @xiaoyatong -- :sparkles: feat(tabs): 新增模式 divider 及 demo (#1761) @xiaoyatong -- :sparkles: feat(tabs): 新增简约,卡片,按钮/胶囊模式,简化CSS变量,变更className类 名 (#1727) @xiaoyatong -- :sparkles: feat: add dashed and rightIcon, and changed fill default value as outline (#1695) @xiaoyatong -- :sparkles: feat: theme updated to v12 (#1573) @xiaoyatong -- :sparkles: feat: update icons (#1693) @xiaoyatong -- :sparkles: feat: 收敛 icons (#1687) @xiaoyatong -- :bug: fix(calendar): 日历设置结束时间超过开始时间后白屏 (#1745) @oasis-cloud -- :bug: fix(datepicker): 起始时间与结束时间更新后,时间选项数组更新 (#1694) @学友 -- :bug: fix(dialog): 调整dialog button大小 (#1720) @xiaoyatong -- :bug: fix(form): 设置 errorMessageAlign="right" 错误文案无法右对齐 (#1709) @oasis-cloud -- :bug: fix(form): 重置功能无法清空报错信息 (#1711) @oasis-cloud -- :bug: fix(image): 修复开启 lazy 后 loading 失效问题 (#1768) @eiinu -- :bug: fix(indicator): 修订样式名称和样式变量 (#1712) @xiaoyatong -- :bug: fix(swiper): demo 中分页器样式显示错误 (#1703) @xiaoyatong -- :bug: fix: address close icon cannot be customed (#1685) @xiaoyatong -- :bug: fix: change drag demo radius value of button (#1701) @xiaoyatong -- :bug: fix: picker 和 address 在 form 中使用,未阻止冒泡,导致取消和确认无法关闭 (#1710) @oasis-cloud -- :bug: fix: 对使用icon的demo 进行了size 设置的废弃,使用了默认size (#1728) @xiaoyatong -- :bug: fix: 调整demo中button大小,调整stoke的默认颜色 (#1717) @xiaoyatong -- 🛠 refactor(cell): 修订类名 (#1722) @xiaoyatong -- 🛠 refactor(numberkeyboard): 修订类名和样式变量 (#1719) @xiaoyatong -- 🛠 refactor(swipe): 修订className类名 (#1715) @xiaoyatong -- 🛠 refactor(switch): 修改样式名称及样式变量,添加相应demo (#1714) @xiaoyatong -- 🛠 refactor(table): props 中的 data 校验逻辑异常 (#1675) @oasis-cloud -- 🛠 refactor(timeselect): 优化结构,简化css变量 (#1732) @xiaoyatong -- 🛠 refactor: css 变量命名规范(主题色部分,不含灰阶) (#1679) @xiaoyatong -- 🛠 refactor: rename card classname (#1700) @xiaoyatong - style(button): class 名 nut-button\_\_warp 更改为 nut-button-wrap (#1705) @xiaoyatong - style(calendar): 优化css变量 (#1753) @xiaoyatong - style(cascader): 去掉无意义样式,修订文档样式变量 (#1757) @xiaoyatong - style(circleprogress): docs 优化,修订 css 变量 (#1699) @xiaoyatong - style(collapse): add border-bottom as an item (#1698) @xiaoyatong - style(fixednav): 废弃 bem 规范, 修订 css 变量 (#1702) @xiaoyatong - style(input): 增加css 变量,优化demo和文档 (#1730) @xiaoyatong - style(inputnumber): 简化css变量,修订className类名 (#1737) @xiaoyatong - style(loading): 修订css变量名,补充css变量文档 (#1721) @xiaoyatong - style(menu): 优化css变量命名,修改className 类名 (#1746) @xiaoyatong - style(noticebar): 修订类名和css变量 (#1751) @xiaoyatong - style(notify): 优化样式布局 (#1762) @xiaoyatong - style(picker): 修改css变量 (#1735) @xiaoyatong - style(radio): 优化css变量和样式 (#1756) @xiaoyatong - style(range): 修订样式变量 (#1718) @xiaoyatong - style(rate): 修订 css 变量 (#1707) @xiaoyatong - style(sidnavbar): 修订css 变量 (#1734) @xiaoyatong - style(steps): 优化steps样式结构,改进css变量名 (#1741) @xiaoyatong - style(tabbar): add css variable (#1742) @xiaoyatong - style(tag): 修订样式变量 (#1733) @xiaoyatong - style(toast): 调整样式,补充demo的多语言化 (#1754) @xiaoyatong - style(trendarrow): 修订className类名 (#1716) @xiaoyatong - style(uploader): 修订样式css变量 (#1758) @xiaoyatong - style: animatenumbers number css (#1681) @xiaoyatong - style: 修订className (#1770) @xiaoyatong - -# v2.2.0 - -`2023-11-24` - -- :sparkles: feat(badge): 优化结构 (#1663) @xiaoyatong -- :sparkles: feat(dialog): 标题前增加结构 (#1666) @xiaoyatong -- :sparkles: feat(grid): 增加 demo (#1660) @xiaoyatong -- :sparkles: feat(image): 增加 demo (#1658) @xiaoyatong -- :sparkles: feat(theme): 修订 fontSize (#1674) @xiaoyatong -- :bug: fix(elevator): 索引定位不准 (#1667) @oasis-cloud -- :bug: fix(swiper): swiper-item 宽高异常问题 (#1657) @eiinu -- :bug: fix(uploader): Update uploader.tsx (#1656) @Kurisu -- :bug: fix(uploader): uploader when item type is undefined (#1650) @xiaoyatong -- 🛠 refactor: css 变量命名规范(主题色部分,不含灰阶) (#1679) @xiaoyatong -- 🛠 refactor: elevator css and variables (#1668) @xiaoyatong -- 🛠 refactor: 防抖方法归一 (#1664) @xiaoyatong -- 🌈 style: delete dark in demos (#1670) @xiaoyatong -- 🌈 style: divider css 修改, 修改部分css变量 (#1669) @xiaoyatong -- 🌈 style: 清理样式变量 (#1673) @xiaoyatong -- 📖 docs(address): 修复非受控模式演示代码不显示 (#1659) @haitao -- 📖 docs: fix docs (#1678) @xiaoyatong -- 📖 docs: 修改文档 (#1662) @xiaoyatong -- 🔨 chore: add jmapp (#1665) @xiaoyatong - -# v2.1.0 - -`2023-11-17` - -- :sparkles: feat(Button): size 增加可选值 mini (#1617) @eiinu -- :sparkles: feat(calendarcard): 增加自定义 className (#1636) @eiinu -- :sparkles: feat(infiniteLoading): 通过scrolltolower触发加载事件 (#1633) @oasis-cloud -- :sparkles: feat(safearea): 新增安全区组件 (#1642) @oasis-cloud -- :sparkles: feat(toast): 通过 config 方法设置内容区的className (#1632) @oasis-cloud -- :sparkles: feat: uploader taro h5 支持 video (#1605) @xiaoyatong -- :bug: fix(infiniteloading): onloadmore 无法获取最新的 state (#1644) @oasis-cloud -- :bug: fix: change text in locales (#1634) @xiaoyatong -- :bug: fix: picker and datepicker theme config at taro and indicator css at taro (#1615) @xiaoyatong -- :bug: fix: 日历close样式,可自定义样式;修改弹幕样式;更名CircleClose为Failure、Issue 为 Tips (#1648) @xiaoyatong -- :bug: fix: 🐛 修复swipe存在点击事件时,触发onTouchStart,获取到rightRect为null导致的报错问题 (#1608) @Levidcd -- 🚀 perf: radio reverse and demos (#1631) @xiaoyatong -- 🛠 refactor(classname): 调整 classname 的顺序 (#1637) @oasis-cloud -- 📖 docs(cell): 增加卡片类型的 demo (#1639) @oasis-cloud -- 📖 docs(sideNavBar): handleClose 改为 onClose (#1635) @haitao - -# v2.0.24 - -`2023-11-10` - -- 🚀 perf(deps): 升级 icons 依赖,icons 包体积缩减 (#1604) @oasis-cloud -- 🚀 perf(CalendarCard): taro demo 性能优化 (#1593) @eiinu -- :sparkles: feat(Toast): 新增 wordBreak 属性 (#1606) @eiinu -- :sparkles: feat: picker and datepicker add onCancel (#1603) @xiaoyatong -- :sparkles: feat: 类似微信头像裁剪组件 (#1564) @Marvin Gui -- :bug: fix(CalendarCard): 初始化渲染逻辑优化 (#1596) @eiinu -- :bug: fix(circleprogress): 计算出现 NaN 导致组件展示为 100% 的情况 (#1602) @oasis-cloud -- :bug: fix(elevator): 替换文档展示pagation到showKeys (#1598) @HaiTao -- :bug: fix(tag): 修复加载样式问题 #1588 (#1592) @eiinu -- :bug: fix: picker & DatePicker onConfirm failed (#1601) @xiaoyatong -- :bug: fix: swiper indicator zindex at taro (#1586) @xiaoyatong -- :bug: fix: taro event detail is undefined (#1591) @xiaoyatong -- :bug: fix: virtuallist key at taro (#1584) @xiaoyatong -- :bug: fix: 标签上的属性默认为 true,导致渲染 lockscroll 相关的 class (#1599) @oasis-cloud -- 📖 docs(form): 由于文案包含姓名等文字,导致小程序审核不通过 (#1609) @oasis-cloud -- 📖 docs: V1 升 V2 差异点更新 (#1607) @JQ - -# v2.0.23 - -`2023-11-03` - -- :sparkles: feat(image): ssr 适配 (#1579) @eiinu -- :sparkles: feat: 新增组件 calendar (#1565) @eiinu -- :bug: fix: calendar scrolltop bad (#1583) @xiaoyatong -- :bug: fix: noticebar 垂直滚动初始化时,无法及时展示元素信息 (#1576) @xiaoyatong -- :bug: fix: popup zindex at taro and picker adds popupProps (#1581) @xiaoyatong -- :bug: fix: popup zindex failed to set (#1578) @xiaoyatong -- :bug: fix: searchbar lose focus when input nothing but input the delete (#1577) @xiaoyatong -- :bug: fix: taro 编译 H5 出现滚动穿透 (#1537) @oasis-cloud - -# v2.0.22 - -`2023-10-27` - -- :sparkles: feat(NoticeBar): leftIcon 可自定义,并且支持设置 null 后不展示 icon (#1562) @oasis-cloud -- :bug: fix(Dialog): 点击蒙层无法关闭 (#1552) @oasis-cloud -- :bug: fix(Input): onChange 执行多次 (#1551) @oasis-cloud -- :bug: fix(Swipe): 禁止父元素滚动的 demo (#1560) @oasis-cloud -- :bug: fix: image height in taro (#1567) @xiaoyatong -- 🛠 refactor(Tabs): 滚动到可视区域代码优化,同时放开 tab title 的宽度限制 (#1563) @oasis-cloud - -# v2.0.21 - -`2023-10-18` - -- :sparkles: feat(Uploader): onFileItemClick 增加索引参数 (#1544) @oasis-cloud -- :sparkles: feat: add demo about infiniteloading (#1533) @xiaoyatong -- :bug: fix(menu): getBoundingClientRect 兼容 H5 (#1548) @oasis-cloud -- :bug: fix: form input blur (#1542) @oasis-cloud -- :bug: fix: imagepreview h5 (#1538) @xiaoyatong -- :bug: fix: jdapp picker's item-height doesn't match jdapp's default setting (#1545) @xiaoyatong -- :bug: fix: taro image and imagepreivew on h5 (#1532) @xiaoyatong -- :bug: fix: zindex of popover because popup changed its zindex (#1543) @xiaoyatong -- 📖 docs(tabbar): Correct module names of tabbar component (#1539) @HUMORCE - -# v2.0.20 - -`2023-10-13` - -- :sparkles: feat: add demo about infiniteloading (#1533) @xiaoyatong -- :bug: fix(form): 自定义校验 promise 返回错误不能被正确收集 (#1523) @samber -- :bug: fix(popup): popup zIndex 无效 (#1521) @Clay Zhang -- :bug: fix: demo format (#1530) @xiaoyatong -- :bug: fix: taro image and imagepreivew on h5 (#1532) @xiaoyatong -- :bug: fix: taro image default width and height (#1531) @xiaoyatong - -# v2.0.19 - -`2023-09-27` - -- :sparkles: feat(menu): overlay onclick 事件中调用 hideMenuItem 实现关闭 (#1505) @oasis-cloud -- :sparkles: feat(menu): onClose 事件增加触发来源参数 (#1502) @oasis-cloud -- :sparkles: feat(swiper): swiperItem 支持设置 className (#1504) @oasis-cloud -- :bug: fix(uploader): 受控模式调整,props 类型调整,回调参数修正 (#1500) @oasis-cloud -- :bug: fix: imagepreview with control (#1480) @xiaoyatong -- :bug: fix: indicator 超长换行 (#1486) @oasis-cloud -- :bug: fix: menu 在 lockscroll 的时候不需要加滚动事件 (#1509) @oasis-cloud -- :bug: fix: ios和android下点击button时出现半透明灰色遮罩 (#1495) @Kurisu - -# v2.0.18 - -`2023-09-20` - -- :sparkles: feat(menu): 增加受控和非受控的模式 (#1433) @oasis-cloud -- :sparkles: feat: menu 展开关闭事件增加参数 (#1447) @oasis-cloud -- :bug: fix(Badge): Badge位置值兼容两种类型,添加css变量min-width (#1410) @beginnerZhang -- :bug: fix(Notify): type NotifyType incorrectly spelling warning as waring (#1441) @Katz -- :bug: fix: calendar 在 iOS 中不展示开始和结束 (#1471) @oasis-cloud -- :bug: fix: swiperItem 的子元素在 H5 中设置 onClick 无效 (#1472) @oasis-cloud -- :bug: fix: uploader 列表类型内置上传按钮 (#1477) @oasis-cloud -- :bug: fix: uploader 缩略图圆角样式未生效 (#1476) @oasis-cloud -- :bug: fix: useFrom 类型优化 (#1473) @oasis-cloud -- :bug: fix: zIndex 层级统一调整 (#1460) @oasis-cloud -- :bug: fix: 组件依赖样式处理 (#1474) @xiaoyatong -- 📖 docs: form 组件文档格式化 (#1436) @oasis-cloud - -# v2.0.17 - -`2023-09-13` - -- :sparkles: feat: form 增加 validateTrigger 和 getFieldsValue (#1411) @oasis-cloud -- :bug: fix: add popupProps (#1426) @oasis-cloud -- :bug: fix: form label position left (#1412) @oasis-cloud -- :bug: fix: lint errors (#1406) @xiaoyatong -- :bug: fix: review package update (#1423) @xiaoyatong -- :bug: fix: swipe component fails to slide in Alipay (#1399) @oasis-cloud -- :bug: fix: table expose rowIndex (#1400) @oasis-cloud -- :bug: fix: toast组件 duration 设置无效 (#1424) @oasis-cloud -- 🔨 chore: glob & prettier update (#1427) @xiaoyatong -- 🔨 chore: swc 版本恢复 (#1425) @oasis-cloud - -# v2.0.16 - -`2023-09-06` - -- :sparkles: feat: form 支持分割线 (#1389) @oasis-cloud -- :bug: fix(pulltorefresh): 修复 H5 卡顿 & 小程序滑动距离问题 @eiinu -- :bug: fix: csstransition using findDOMNode which is deprecated (#1370) @oasis-cloud -- :bug: fix: dialog 的函数调用增加对 classname 和 style 的支持 (#1391) @oasis-cloud -- :bug: fix: swipe 阻止页面滚动 (#1380) @oasis-cloud -- :bug: fix: useForm 在类组件下报错,可以采用 ref 的方式使用 FormInstance (#1383) @oasis-cloud -- :bug: fix: 多个 Swipe 的滑动选项完全相等 (#1334) @Clay Zhang -- 📖 docs: toast组件完善了样式变量 (#1379) @ivan-My - -# v2.0.15 - -`2023-08-30` - -- :sparkles: feat: support next.js (#1326) @oasis-cloud -- :bug: fix: dialog content 失效 (#1323) @oasis-cloud -- :bug: fix: space 复制按钮重复 (#1322) @oasis-cloud -- 🔨 chore(tabs): 更新文档与 demo (#1339) @eiinu - -# v2.0.14 - -`2023-08-18` - -- :bug: fix: skeleton row 设置为 1 时, 宽度只能固定为70% (#1306) @ivan-My -- :bug: fix: loading 构建产物增加类型注释 (#1320) @oasis-cloud -- :bug: fix: space 构建产物增加类型注释 (#1321) @oasis-cloud -- 📖 docs: dialog 指令式用法注意事项 (#1318) @oasis-cloud - -# v2.0.13 - -`2023-08-16` - -- :sparkles: feat: dialog 支持函数调用 (#1315) @oasis-cloud -- :sparkles: feat: toast 支持函数调用 (#1307) @oasis-cloud -- :sparkles: feat: 提取 Taro 的 Demo 到 workspace (#1302) @oasis-cloud -- :bug: fix: icons 版本更新 (#1310) @oasis-cloud -- :bug: fix: 非 undefined 的 falsely 值无法传递给子组件 (#1312) @qnnp -- 📖 docs: 删除了skeleton文档中无用的props(width,height) (#1303) @ivan-My - -# v2.0.12 - -`2023-08-11` - -- :bug: fix(Avatar): 解决在小程序环境下,使用Avatar.Group无法正常展示头像问题 (#1296) @Tralafalgar Wang -- :bug: fix: overlay 的 zIndex 属性改为 css 变量 (#1294) @oasis-cloud -- :bug: fix: 修复 form 设置 labelPosition=top 的样式 (#1300) @oasis-cloud - -# v2.0.11 - -`2023-08-09` - -- :sparkles: feat: 新增 tour 引导组件 (#1279) @junjun666 -- :bug: fix: h5下多选上传时 uid 重复的问题 (#1269) @Liuqh233 -- :bug: fix: input 组件点击清除图标无法清空内容 (#1292) @oasis-cloud -- :bug: fix: numberkeyboard 设置标题后,完成按钮应该触发 onConfirm 事件 (#1285) @oasis-cloud -- :bug: fix: uploader h5/taro 增加校验 (#1297) @junjun666 -- :bug: fix: uploader taro-h5 上传状态样式错乱 (#1293) @junjun666 -- 📖 docs: divider 组件的 styles 属性示例改为 style (#1290) @oasis-cloud -- 📖 docs: numberkeyboard 的 type 属性类型更新 (#1284) @oasis-cloud -- 📖 docs: step 组件的 description 属性示例改为节点的实现方式 (#1289) @oasis-cloud -- 📖 docs: 调整 image tao 文档中引入包名 (#1295) @oasis-cloud - -# v2.0.10 - -`2023-08-04` - -- :sparkles: feat: loading 组件 (#1204) @mike8625 -- :sparkles: feat: 日历支持footer的children定义,增加日历+datepicker的demo (#1277) @xiaoyatong -- :bug: fix: elevator 计算索引出现 -1,导致组件运行报错 (#1276) @oasis-cloud -- :bug: fix: loading 组件导出 props 类型 (#1278) @oasis-cloud - -# v2.0.9 - -`2023-08-02` - -- :sparkles: feat(notify): 支持函数调用的展开和关闭 (#1271) @oasis-cloud -- :bug: fix: space 版本号修改为 2.0 (#1265) @oasis-cloud -- 🔨 chore(config): 优化 taro demo 环境配置文件 (#1266) @oasis-cloud -- 📖 docs: cascader 文档更新 (#1270) @vapao -- 📖 docs: tag 文档和 demo 同步 (#1275) @oasis-cloud -- 📖 docs: 升级文档更新 (#1274) @oasis-cloud - -# v2.0.8 - -`2023-07-28` - -- :sparkles: feat: 增加了space组件 (#1259) @ivan-My -- 🛠 refactor: tabs 去除 console (#1261) @vapao -- 🔨 chore(script): 简化开发环境启动逻辑 (#1264) @eiinu - -# v2.0.7 - -`2023-07-26` - -- :sparkles: feat: formitem label 支持 reactnode (#1254) @oasis-cloud -- :sparkles: feat: uploader 添加上传的响应数据 (#1251) @逍遥 -- 🔨 chore: 优化 any 类型 (#1222) @junjun666 -- 📖 docs(SearchBar): 补充 onClear 属性说明 (#1256) @Tralafalgar Wang - -# v2.0.6 - -`2023-07-21` - -- :bug: fix(Address): 修复Address组件通过点击CloseIcon和Overlay关闭后,无法再次打开的问题 (#1233) @Tralafalgar Wang -- :bug: fix(button): 渐变色导致边框出现重叠 (#1250) @oasis-cloud - -# v2.0.5 - -`2023-07-19` - -- :bug: fix(sticky): 组件卸载移除 tap 事件改为移除 scroll 事件 (#1235) @oasis-cloud -- :bug: fix: height is null (#1239) @Liuqh233 -- :bug: fix: 修复popover滑动定位错位的问题 (#1232) @junjun666 -- :sparkles: perf: configProvider 组件性能优化 (#1230) @大喵 -- 🔨 chore: site 内部移除 taro components @oasis-cloud - -# v2.0.4 - -`2023-07-14` - -- :sparkles: feat: configprovider 组件支持传入 className 和 style 属性 (#1219) @大喵 -- :bug: fix(button): fill=none & type=default 样式修复 (#1215) @eiinu -- :bug: fix(form): formItem 的 props 改为 Partial (#1221) @oasis-cloud -- :bug: fix: cascader onChange 触发2次问题修复 (#1224) @xiaoyatong -- :bug: fix: countdown手动控制demo展示样式优化 (#1229) @irisSong -- :bug: fix: signature组件提取样式变量+修复taro h5 demo签字时滚动问题 (#1220) @irisSong -- :bug: fix: tabs组件在抖音小程序展示异常 (#1211) @oasis-cloud -- :bug: fix: 修复signature小程序下demo签字时页面跟随滚动问题 (#1225) @irisSong -- :bug: fix: 文档格式化 @hanyuxinting - -# v2.0.3 - -`2023-07-12` - -- :sparkles: feat: image 支持 taro (#1190) @oasis-cloud -- :sparkles: feat: menu 增加打开和关闭的回调方法 (#1206) @oasis-cloud -- :sparkles: feat: 类型文件中导出组件的 props, 简化组件 props 引入方式 (#1205) @oasis-cloud -- :bug: fix: infiniteloading taro doc (#1207) @junjun666 -- :bug: fix: 组件2.0走查问题修复 (#1172) @junjun666 -- 🔨 chore: pnpm workspace (#1199) @junjun666 -- 🔨 chore: 兼容ssr之修复引入组件库启动报错 (#1212) @junjun666 -- 📖 docs(form): nativeType 改为 formType (#1209) @oasis-cloud - -# v2.0.2 - -`2023-07-07` - -- :sparkles: feat: 日历增加不可选状态、增加style、className 的透传 (#1193) @xiaoyatong -- :bug: fix: animatingNumber组件暗黑模式适配+demo优化 (#1184) @irisSong -- :bug: fix: circleprogress color 属性的类型优化 (#1191) @junjun666 -- 🔨 chore(backtop): 优化 demo 和文档 (#1186) @eiinu -- 🔨 chore(deps): add @nutui/touch-emulator (#1196) @eiinu -- 🔨 chore(progress): update demo (#1192) @eiinu -- 🔨 chore: overlay 动效优化 (#1183) @junjun666 - -# v2.0.1 - -`2023-07-05` - -- :sparkles: feat: tag 新增 info 类型 (#1180) @xiaoyatong -- :bug: fix(searchbar): 修复 Taro-H5 下 onSearch 无法触发的问题 (#1178) @eiinu -- :bug: fix: button 组件在 taro h5 中不设置 opentype (#1167) @oasis-cloud -- :bug: fix: datepicker 修改列数据后,更新下一级数据 (#1179) @xiaoyatong -- :bug: fix: demo 中 input 布局换行 (#1170) @oasis-cloud -- :bug: fix: demo 中 tabs 采用独立状态 (#1169) @oasis-cloud -- :bug: fix: eslint 错误修复 (#1175) @oasis-cloud -- :bug: fix: form 在处理组件受控和非受控的时候存在冲突 (#1166) @oasis-cloud -- :bug: fix: 关闭主题定制入口 (#1171) @oasis-cloud -- :bug: fix: 调整 demo 中 image 组件的间距 (#1168) @oasis-cloud -- 📖 docs: swiper 文档中的 autoplay 描述修复 (#1165) @oasis-cloud -- 📖 docs: update doc link (#1176) @eiinu - -# v2.0.0-beta.3 - -`2023-06-30` - -- 🔨 chore: 增加组件名称调整的内容 (#1161) @oasis-cloud -- 📖 docs: 统一升级文档中的修改的描述术语 (#1159) @xiaoyatong -- :bug: fix: 修改migrate文档 (#1164) @junjun666 -- :bug: fix: 单元测试问题修复 (#1158) @eiinu -- 🛠 refactor: 调整 MenuItem CellGroup SwiperItem 使用方式为 Menu.Item Cell.Group… (#1160) @oasis-cloud - -# v2.0.0-beta.2 - -`2023-06-28` - -- :sparkles: feat: 日历组件新增选择周 type='week' 模式 (#1152) @xiaoyatong -- :bug: fix: dialog spelling mistake (#1148) @Katz -- :bug: fix: fit&wxwork (#1146) @junjun666 -- :bug: fix: 优化 TrendArrow 组件 props (#1150) @irisSong -- :bug: fix: 修改navbar组件demo样式 (#1145) @irisSong -- 🛠 refactor: 属性定义走查修复 (#1149) @xiaoyatong -- 🔨 chore(virtuallist): 调整 itemRender (#1151) @eiinu - -# v2.0.0-beta.1 - -`2023-06-21` - -- :bug: fix(collapse): 测试问题修复 (#1132) @eiinu -- :bug: fix: address taro 白屏 (#1140) @xiaoyatong -- :bug: fix: popup title (#1143) @xiaoyatong -- :bug: fix: remove bem (#1138) @oasis-cloud -- :bug: fix: 修复toast组件屏幕锁定不能滚动的问题 (#1134) @junjun666 -- :bug: fix: 单元测试问题修复 (#1137) @eiinu -- 🛠 refactor: address (#1104) @xiaoyatong -- 🛠 refactor: calendar (#1087) @xiaoyatong -- 🔨 chore(ci): delete sync-gitcode.yml @eiinu -- 🔨 chore: popover review (#1127) @junjun666 -- 🔨 chore: 更新 taro 版本到 3.6.8 @oasis-cloud -- 🔨 chore: 移除 @bem-react/classname (#1142) @oasis-cloud - -# v2.0.0-alpha.18 - -`2023-06-16` - -- 🔨 chore(tabbar): 调整 Badge 相关 Props (#1126) @eiinu -- 📖 docs: update migrate-from-v1.md (#1131) @eiinu -- :sparkles: feat: 修改升级文档 (#1125) @oasis-cloud -- :bug: fix: button 组件在 taro h5 中的类型优化 (#1133) @oasis-cloud -- :bug: fix: uploader 英文文档修改 (#1124) @oasis-cloud -- :bug: fix: 修复inputnumber在taro H5样式失效的问题 (#1130) @junjun666 -- :bug: fix: 完善migrate-from-v1文档 (#1129) @irisSong - -# v2.0.0-alpha.17 - -`2023-06-14` - -- :bug: fix: searchbar shape=round 效果差的问题 (#1109) @xiaoyatong -- :bug: fix: swipe 类型和文档优化 (#1122) @oasis-cloud -- 🛠 refactor: form (#1118) @oasis-cloud -- 📖 docs: 修改布局文档相关 @hanyuxinting -- 📖 docs: 文档走查及问题修复 (#1123) @xiaoyatong -- 📖 docs: 文档走查及问题修复-基础&布局组件(#1117) @eiinu -- 📖 docs: 文档走查及问题修复-导航组件 (#1119) @xiaoyatong - -# v2.0.0-alpha.16 - -`2023-06-09` - -- :bug: fix(toast): 修复连续调用 show 方法时无法销毁的问题 (#1102) @eiinu -- :bug: fix: dialog 需要增加 overlay 的样式,否则按需加载样式出现异常 (#1103) @oasis-cloud -- :bug: fix: menu 组件被使用 transform 的组件嵌套后,遮罩层发生偏移 (#1093) @oasis-cloud -- :bug: fix: noticebar 修复小程序多行展示问题 (#1107) @xiaoyatong -- :bug: fix: pikcer 在关闭动画未结束时修改 visible,导致状态更新异常 (#1097) @oasis-cloud -- 🛠 refactor: datepicker (#1091) @xiaoyatong -- 🔨 chore: 修复 Taro Demo 的字号 (#1105) @oasis-cloud -- 🔨 chore(script): 生成 Props 功能增强 (#1096) @eiinu -- 📖 docs: 文档修订 (#1106) @xiaoyatong - -# v2.0.0-alpha.15 - -`2023-06-07` - -- :sparkles: feat(ci): add codecov (#1092) @eiinu -- :sparkles: feat(ci): add lint action (#1098) @eiinu -- :sparkles: feat: imagepreview 组件在小程序中支持长按图片保存 (#1090) @oasis-cloud -- :bug: fix: 单元测试问题修复 (#1095) @eiinu -- 🛠 refactor: card (#1069) @拧巴的猫 -- 🛠 refactor: infiniteloading (#1085) @junjun666 -- 🛠 refactor: signature (#1080) @拧巴的猫 -- 🛠 refactor: tag (#1089) @xiaoyatong -- 🛠 refactor: TimeSelect (#1088) @eiinu - -# v2.0.0-alpha.14 - -`2023-06-02` - -- 🛠 refactor: barrage (#1072) @junjun666 -- 🛠 refactor: popover (#1060) @junjun666 -- 🛠 refactor: sidenavbar (#1057) @oasis-cloud -- :bug: fix(backtop): 修改 demo (#1083) @eiinu -- :bug: fix: ellipsis 在 taro 构建的 H5 中偶现无法暂时省略号的情况 (#1076) @oasis-cloud -- :bug: fix: input 组件忽略 maxlength 和 password 属性 (#1079) @oasis-cloud -- :bug: fix: menu 的 closeOnClickOverlay 改为 closeOnOverlayClick (#1084) @oasis-cloud -- :bug: fix: picker 组件渲染的时候触发 onConfirm (#1082) @oasis-cloud -- 📖 docs(textarea): 更新文档说明 (#1086) @eiinu -- 📖 docs: checkbox demo 增加头部 (#1075) @oasis-cloud -- 📖 docs: 文档中 css 变量表格的文案优化 (#1077) @oasis-cloud - -# v2.0.0-alpha.13 - -`2023-05-31` - -- 🛠 refactor: animatingNumbers (#1048) @拧巴的猫 -- 🛠 refactor: trendArrow (#1066) @拧巴的猫 -- 🛠 refactor: video (#1034) @junjun666 -- 🛠 refactor: watermark (#1071) @eiinu -- :sparkles: feat: 构建类型文件中的注释,方便在编辑器中查看属性的说明 (#1068) @oasis-cloud -- :bug: fix: popup 在 taro 中的动效优化 (#1065) @oasis-cloud -- :bug: fix: 修改 uploader 和 video 的 taro 文档 (#1070) @junjun666 -- 📖 docs: correct spelling errors (#1058) @konka - -# v2.0.0-alpha.12 - -`2023-05-26` - -- 🛠 refactor: actionSheet (#1053) @xiaoyatong -- 🛠 refactor: countdown (#1040) @拧巴的猫 -- 🛠 refactor: searchBar (#1047) @xiaoyatong -- 🛠 refactor: shortPassword (#1046) @eiinu -- 🛠 refactor: toast (#1026) @justExplore -- 🛠 refactor: virtualList (#1056) @eiinu -- :sparkles: feat: ellipsis add width attribute (#1038) @Zhu Da Shuai -- :sparkles: feat: 导出主题中的 CSS 变量类型 (#1050) @oasis-cloud -- 📖 docs: import touch-emulator (#1045) @oasis-cloud - -# v2.0.0-alpha.11 - -`2023-05-24` - -- 🛠 refactor: collapse (#1027) @eiinu -- 🛠 refactor: Skeleton (#1036) @eiinu -- :sparkles: feat: 添加土耳其语 (#1028) @manin -- :bug: fix(fixednav): 修改 onSelect 参数顺序 (#1035) @eiinu -- :bug: fix: 修复taro下拉刷新组件偶发未触发canRelease状态时松手,组件不会自动回弹的问题 (#1029) @Z-Bokle -- 🔨 chore: 增加同步升级文档到 docs 仓库的脚本 (#1044) @oasis-cloud -- 🔨 chore: 完善组件导出的类型 (#1039) @oasis-cloud -- 🔨 chore: 构建每个组件的 css 文件 (#1037) @oasis-cloud -- 📖 docs: 文档 props 标题统一修复 (#1041) @oasis-cloud - -# v2.0.0-alpha.10 - -`2023-05-19` - -- :sparkles: feat(progress): 添加 lazy、delay 属性 (#1023) @eiinu -- :bug: fix: swiper loop 模式位置计算错误 (#1018) @oasis-cloud -- 🛠 refactor: imagepreview (#1019) @xiaoyatong -- 🛠 refactor: noticebar (#1024) @xiaoyatong -- 🛠 refactor: steps (#1021) @oasis-cloud -- 📖 docs: icon 文档修订 (#1022) @oasis-cloud - -# v2.0.0-alpha.9 - -`2023-05-17` - -- :sparkles: feat: add create-properties.js (#1001) @eiinu -- :sparkles: feat: cascader支持受控 (#1000) @xiaoyatong -- :sparkles: feat: elevator 支持右侧索引是否展示 (#1006) @拧巴的猫 -- :bug: fix(image): lazy 优化观察对象数量 (#1015) @eiinu -- :bug: fix: tabs children 变更后需要展示新的 title (#999) @oasis-cloud -- :bug: fix: 格式化,删掉某些无用代码 (#1014) @xiaoyatong -- 🛠 refactor: notify (#983) @拧巴的猫 -- 🛠 refactor: NumberKeyboard (#1012) @eiinu -- 🛠 refactor: price (#989) @拧巴的猫 -- 🛠 refactor: pulltorefresh (#1011) @oasis-cloud -- 🛠 refactor: radio (#1009) @oasis-cloud -- 🛠 refactor: Range (#991) @eiinu -- 🛠 refactor: swiper 重构;indcator 的索引计算改为从 0 开始 (#1008) @oasis-cloud -- 🔨 chore: autoplay -> autoPlay (#1007) @eiinu -- 📖 docs(tabbar): update description (#1004) @eiinu - -# v2.0.0-alpha.8 - -`2023-05-12` - -- :sparkles:feat: cascader支持受控 (#1000) @xiaoyatong -- :bug: fix: tabs children 变更后需要展示新的 title (#999) @oasis-cloud -- 🛠 refactor: Range (#991) @eiinu - -# v2.0.0-alpha.7 - -`2023-05-12` - -- :bug: fix: tabs children 变化需要更新选中状态 @oasis-cloud - -# v2.0.0-alpha.6 - -`2023-05-12` - -- 🛠 refactor: cascader (#993) @xiaoyatong -- 🛠 refactor: picker (#975) @xiaoyatong -- 🛠 refactor: table (#982) @xiaoyatong -- 🛠 refactor: TextArea (#979) @eiinu -- :bug: fix: image src 初始状态未空,导致出发加载失败事件 (#988) @oasis-cloud -- 📖 docs(progress): demo 代码更新 (#986) @eiinu -- 📖 docs(progress): update demo (#987) @eiinu -- 📖 docs: tabs 文档中的 titleNode 修改为 title (#995) @oasis-cloud -- 🔨 chore: taro es 构建移入 vite 配置文件 (#990) @oasis-cloud - -# v2.0.0-alpha.5 - -`2023-05-10` - -- 🛠 refactor: checkbox (#974) @oasis-cloud -- 🛠 refactor: circleprogress-v2.0 (#949) @junjun666 -- 🛠 refactor: ellipsis-v2.0 (#963) @junjun666 -- 🛠 refactor: empty-v2.0 (#977) @junjun666 -- 🛠 refactor: swipe (#958) @justExplore -- 🛠 refactor:avatar-v2.0 (#970) @junjun666 -- 📖 docs: 增加 icon 的复制功能 (#973) @oasis-cloud -- :sparkles: feat: cellgroup组件增加单元格之间是否展示分割线props (#961) @拧巴的猫 -- :bug: fix: tabbar 通过 Tabbar.Item 方式使用未加载 item 的样式 (#972) @oasis-cloud -- :bug: fix: 修复elevator小程序快速滑动后闪动问题 (#984) @拧巴的猫 - -# v2.0.0-alpha.4 - -`2023-05-05` - -- 🛠 refactor: circleprogress-v2.0 (#949) @junjun666 -- 🛠 refactor: input (#962) @oasis-cloud -- 🛠 refactor: Tabbar (#935) @eiinu -- :bug: fix: badge 组件的默认样式中,去掉 margin-right (#967) @xiaoyatong -- 🎨 style: fix endLine display error (#964) @HaiTao - -# v2.0.0-alpha.3 - -`2023-04-28` - -- :bug: fix: overlay 属性 onClick 暴露、lockscroll 相关demo 修订 (#959) @xiaoyatong -- :bug: fix: 修改taro增加主题编译 (#950) @junjun666 -- 🛠 refactor: dialog (#945) @xiaoyatong -- 🛠 refactor: switch (#941) @拧巴的猫 -- 🛠 refactor: tabs (#939) @oasis-cloud -- 🔨 chore: website 2.0 (#955) @oasis-cloud -- 📖 docs: button 文档表格优化 (#956) @oasis-cloud - -# v2.0.0-alpha.2 - -`2023-04-26` - -- 🛠 refactor: navbar (#890) @拧巴的猫 -- 🛠 refactor: animate (#940) @junjun666 -- 🛠 refactor: badge (#936) @xiaoyatong -- 🛠 refactor: drag (#937) @拧巴的猫 -- 🛠 refactor: elevator (#927) @拧巴的猫 -- 🛠 refactor: menu (#923) @oasis-cloud -- 🛠 refactor: progress (#943) @eiinu -- 🔨 chore: sync pnpm-lock @oasis-cloud -- :bug: fix: 修改taro增加主题编译 (#950) @junjun666 - -# v2.0.0-alpha.1 - -`2023-04-21` - -- 🔨 chore: markdown 中 props、css variables 类型和默认值增加代码标识 @oasis-cloud -- 🛠 refactor: Audio (#930) @eiinu -- 🛠 refactor: layout (#934) @oasis-cloud -- 🛠 refactor: popup 2.0 (#929) @xiaoyatong -- 🛠 refactor: uploader (#902) @junjun666 - -# v2.0.0-alpha.0 - -`2023-04-20` - -- 🛠 refactor: backtop (#912) @eiinu -- 🛠 refactor: button (#904) @oasis-cloud -- 🛠 refactor: cell (#876) @拧巴的猫 -- 🛠 refactor: divider (#891) @junjun666 -- 🛠 refactor: fixednav (#865) @eiinu -- 🛠 refactor: grid (#882) @eiinu -- 🛠 refactor: image (#892) @oasis-cloud -- 🛠 refactor: indicator (#893) @xiaoyatong -- 🛠 refactor: inputnumber (#888) @junjun666 -- 🛠 refactor: overlay (#886) @junjun666 -- 🛠 refactor: pagination (#861) @eiinu -- 🛠 refactor: Rate (#894) @eiinu -- 🛠 refactor: sticky (#906) @oasis-cloud +# v3.0.0 + +`2025-02-28` + +### 1. **Fix (修复问题)** + +- `fix(swiper): 设置横向轮播后,手势无法触发页面的滚动 (#3004)` +- `fix(form): replace with Taro Form and add the rest property for passt… (#3016)` +- `fix: check harmony adaptions (#3005)` +- `fix: badge harmony (#3001)` +- `fix: jdharmonycpp version and dd attribute are updated (#2997)` +- `fix: throw error should not block the export of component (#2996)` +- `fix: remove demo conditional restrictions & update the creation process (#2991)` +- `fix: receiving a 404 error when publishing npm in CI (#2994)` +- `fix: adjust pr-label strategy (#2984)` +- `fix: github actions permission (#2981)` +- `fix: resolve 'Resource not accessible by integration' (#2980)` +- `fix: add PR review labels automation (#2972)` +- `fix: calender footer button css (#2971)` +- `fix: corepack manager use pnpm failed (#2965)` +- `fix: update variables` +- `fix: update the v15 style (#2843)` +- `fix: modifykey` +- `fix(elevator): harmony适配 (#2836)` +- `fix: popover dark and maxwidth` +- `fix: aimate不再设置inline-block` +- `fix(countup): 分隔符文字颜色支持css变量修改 (#2871)` +- `fix: jd white screen (#2824)` +- `fix: space harmony (#2817)` +- `fix(empty): correct css and docs (#2819)` +- `fix: change scss import path (#2812)` +- `fix(timeselect): harmony适配 (#2806)` +- `fix(Ellipsis): Correction of text (#2778)` +- `fix(progress): fix style & support icon demo (#2729)` +- `fix(pagination): color of icon (#2769)` +- `fix(toast): svg color (#2775)` +- `fix: loading (#2733)` +- `fix: radio type (#2735)` +- `fix(searchbar): 多端适配 (#2657)` +- `fix: vite5 relative warnings and deprecated usage (#2704)` +- `fix(inputnumber): icon 适配 && 修改icon宽度和设定的--nut-icon-width一致 (#2707)` +- `fix(cell): update Icon (#2716)` +- `fix: 恢复icon,简化demo (#2725)` + +### 2. **Refactor (代码重构)** + +- `refactor: datepicker (#3023)` +- `refactor: picker (#2990)` +- `refactor: popup 优化代码 (#2944)` +- `refactor: new components are generated automatically (#2940)` +- `refactor: remove special handling for rntaro's environment configuration and component (#2934)` +- `refactor: site running faster when it's development (#2926)` +- `refactor: replace lodash.isEqual with react-fast-compare (#2925)` +- `refactor: add global scss (#2798)` +- `refactor: use compatible systemInfo util API (#2975)` +- `refactor: fixed overlay zIndex is not effective, and extract types of compnoents (#2954)` +- `refactor: popup 优化代码 (#2944)` +- `refactor: tabs 适配鸿蒙 (#2820)` +- `refactor: modify import mode (#2782)` +- `refactor: modify ts (#2781)` +- `refactor: add global scss (#2798)` +- `refactor: fix icon svg (#2742)` +- `refactor: backtop using hoverbutton and v15 adaption (#2866)` + +### 3. **Feat (新增功能)** + +- `feat: pickerview 组件 (#2986)` +- `feat: icons 的替换方案优化,支持无法可用 icon 映射的情况 (#2922)` +- `feat: sidebar 组件 (#2868)` +- `feat: lottie 组件 (#2867)` +- `feat(price): v15 (#2885)` +- `feat(indicator): v15 (#2746)` +- `feat(input): v15 (#2889)` +- `feat(textarea): v15 (#2887)` +- `feat(navbar): v15 (#2881)` +- `feat(infinite): v15 (#2841)` +- `feat(backtop): v15 (#2866)` +- `feat(badge): v15 (#2826)` +- `feat(numberkeyboard): v15 (#2799)` +- `feat(inputNumber): v15 (#2823)` +- `feat(tabs): v15 (#2820)` +- `feat(checkbox): v15 (#2730)` +- `feat(button): v15 (#2737)` +- `feat(calendarcard): v15 (#2732)` +- `feat(radio): v15 (#2721)` +- `feat(input): v15 (#2711)` +- `feat(pagination): v15 (#2712)` +- `feat(trendarrow): v15 (#2540)` +- `feat(Toast): v15 (#2299)` + +### 4. **Perf (性能优化)** + +- `perf: input (#2978)` +- `perf: 优化渲染节点 (#2967)` +- `perf: 优化 animate (#2968)` + +# v2.x + +去 [GitHub](https://github.com/jdf2e/nutui-react/blob/2.x-stable/CHANGELOG.md) 查看 `1.x` 的 Change Log。 # v1.x diff --git a/package.json b/package.json index 278e2eac89..26d7f71d2a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nutui/nutui-react-taro", - "version": "3.0.0-beta.15", + "version": "3.0.0", "style": "dist/style.css", "main": "dist/nutui.react.umd.js", "module": "dist/es/packages/nutui.react.build.js", @@ -221,7 +221,7 @@ "vinyl-fs": "^4.0.0", "vite": "^5.1.3", "vite-plugin-dts": "4.2.1", - "vitest": "^3.0.0", + "vitest": "^3.0.7", "vitest-canvas-mock": "^0.3.3", "yargs": "^17.7.2" }, diff --git a/packages/nutui-taro-demo/package.json b/packages/nutui-taro-demo/package.json index 50a82a8f65..17c10a3897 100644 --- a/packages/nutui-taro-demo/package.json +++ b/packages/nutui-taro-demo/package.json @@ -60,7 +60,7 @@ "@dongdesign/inject-jd-platform-styles": "1.0.4", "@jdtaro/plugin-platform-jdhybrid": "0.2.1", "@jdtaro/taro-platform-jdharmony": "2.0.70", - "@jdtaro/plugin-platform-jdharmony-cpp": "0.1.22", + "@jdtaro/plugin-platform-jdharmony-cpp": "0.1.29-beta.0", "@nutui/replace-icons": "^1.0.0", "@nutui/touch-emulator": "^1.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b0dcedc55..ba0df60c7e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,22 +107,22 @@ importers: version: 1.10.4(@swc/helpers@0.5.15) '@tarojs/components': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + version: 4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) '@tarojs/plugin-platform-alipay': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9) '@tarojs/plugin-platform-jd': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9) '@tarojs/plugin-platform-weapp': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9) '@tarojs/react': specifier: 4.0.8-beta.1 version: 4.0.8-beta.1(react@18.3.1) '@tarojs/taro': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + version: 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.6.3 @@ -173,10 +173,10 @@ importers: version: 4.3.4(vite@5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)) '@vitest/coverage-v8': specifier: ^2.0.4 - version: 2.1.8(vitest@3.0.5) + version: 2.1.8(vitest@3.0.7) '@vitest/ui': specifier: ^2.0.4 - version: 2.1.8(vitest@3.0.5) + version: 2.1.8(vitest@3.0.7) autoprefixer: specifier: ^10.4.17 version: 10.4.20(postcss@8.4.49) @@ -370,11 +370,11 @@ importers: specifier: 4.2.1 version: 4.2.1(@types/node@20.17.12)(rollup@4.30.0)(typescript@5.7.2)(vite@5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)) vitest: - specifier: ^3.0.0 - version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + specifier: ^3.0.7 + version: 3.0.7(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) vitest-canvas-mock: specifier: ^0.3.3 - version: 0.3.3(vitest@3.0.5) + version: 0.3.3(vitest@3.0.7) yargs: specifier: ^17.7.2 version: 17.7.2 @@ -548,25 +548,25 @@ importers: version: 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.8-beta.1) '@tarojs/plugin-platform-alipay': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) '@tarojs/plugin-platform-h5': specifier: 4.0.8-beta.1 version: 4.0.8-beta.1(31635786561422ef85b36f9130e58fd5) '@tarojs/plugin-platform-jd': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) '@tarojs/plugin-platform-qq': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1))(@tarojs/shared@4.0.8-beta.1) '@tarojs/plugin-platform-swan': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) '@tarojs/plugin-platform-tt': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) '@tarojs/plugin-platform-weapp': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + version: 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) '@tarojs/react': specifier: 4.0.8-beta.1 version: 4.0.8-beta.1(react@18.3.1) @@ -2937,25 +2937,25 @@ packages: '@tarojs/shared': 4.0.8-beta.1 '@tarojs/binding-darwin-arm64@4.0.8-beta.1': - resolution: {integrity: sha512-+uZyAnNzJS7SZDiq2dfz6CpsLfJQbvu2IkSfpvzBbUVkCx1aVBcJyd3KOfj/2XyKtmy7KL6/ErE5dCAlyZHZYQ==, tarball: https://registry.npmjs.org/@tarojs/binding-darwin-arm64/-/binding-darwin-arm64-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-+uZyAnNzJS7SZDiq2dfz6CpsLfJQbvu2IkSfpvzBbUVkCx1aVBcJyd3KOfj/2XyKtmy7KL6/ErE5dCAlyZHZYQ==} engines: {node: '>= 18'} cpu: [arm64] os: [darwin] '@tarojs/binding-darwin-x64@4.0.8-beta.1': - resolution: {integrity: sha512-8PfLles6fInzsX2CFA7ER9W3IxJaCDrzg2QT0Bf9ojK1mhAkM3arPxF1cLcFUh1qy4CcE10ffuFRuLADly9ftQ==, tarball: https://registry.npmjs.org/@tarojs/binding-darwin-x64/-/binding-darwin-x64-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-8PfLles6fInzsX2CFA7ER9W3IxJaCDrzg2QT0Bf9ojK1mhAkM3arPxF1cLcFUh1qy4CcE10ffuFRuLADly9ftQ==} engines: {node: '>= 18'} cpu: [x64] os: [darwin] '@tarojs/binding-linux-x64-gnu@4.0.8-beta.1': - resolution: {integrity: sha512-GOb/Y0Oio+ZWuKV/m/H8B+w/B1TfEMm7XkGUYCaMCh6k1Shib6rNTJU/pFciNnGJmzAH1vkD8/9MIK5SAB/dDQ==, tarball: https://registry.npmjs.org/@tarojs/binding-linux-x64-gnu/-/binding-linux-x64-gnu-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-GOb/Y0Oio+ZWuKV/m/H8B+w/B1TfEMm7XkGUYCaMCh6k1Shib6rNTJU/pFciNnGJmzAH1vkD8/9MIK5SAB/dDQ==} engines: {node: '>= 18'} cpu: [x64] os: [linux] '@tarojs/binding-win32-x64-msvc@4.0.8-beta.1': - resolution: {integrity: sha512-+a7zei9n7lWA2HbHvNgqQ/fwhFapnuGwffeALVpNKNLDtXKXUInmuHdyhBDqMeBov4ilzL26XjZt7phar0lYuQ==, tarball: https://registry.npmjs.org/@tarojs/binding-win32-x64-msvc/-/binding-win32-x64-msvc-4.0.8-beta.1.tgz} + resolution: {integrity: sha512-+a7zei9n7lWA2HbHvNgqQ/fwhFapnuGwffeALVpNKNLDtXKXUInmuHdyhBDqMeBov4ilzL26XjZt7phar0lYuQ==} engines: {node: '>= 18'} cpu: [x64] os: [win32] @@ -3004,67 +3004,71 @@ packages: resolution: {integrity: sha512-47RBazAoiRjhyr44ND5ZKnfTQ/+G4xPEyG+4CrMnFydV7M+AtgWr2SfTbew4h/ChJEC7AZDNr9bWbQAwlQqUTg==} engines: {node: '>= 18'} + '@tarojs/helper@4.0.9': + resolution: {integrity: sha512-+fCnoRUNMqoGI1+OALQH4whQPiVfcX7vzCvm5w/bA0LFRPMux0rdjWa91agEpfoJHDr7bYdhkYbLFbdGWabVxQ==} + engines: {node: '>= 18'} + '@tarojs/parse-css-to-stylesheet-android-arm-eabi@0.0.69': - resolution: {integrity: sha512-xfn55ehFWjbIzDTu+0QwMkCf8icC7jwAiDm2S7Cv5Og83gSzMUCb76KzEAwgTSTe0wiLrDai2HAhBftpE4V1Qw==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-android-arm-eabi/-/parse-css-to-stylesheet-android-arm-eabi-0.0.69.tgz} + resolution: {integrity: sha512-xfn55ehFWjbIzDTu+0QwMkCf8icC7jwAiDm2S7Cv5Og83gSzMUCb76KzEAwgTSTe0wiLrDai2HAhBftpE4V1Qw==} engines: {node: '>= 10'} cpu: [arm] os: [android] '@tarojs/parse-css-to-stylesheet-android-arm64@0.0.69': - resolution: {integrity: sha512-ojVo41qGp+/NUaGGXuuT2/bc0K4H1vzvindeYpUj6LkGL0gQSitdXnviYEnUFqfrMvn7bx1wKTy3uLtADqxgPQ==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-android-arm64/-/parse-css-to-stylesheet-android-arm64-0.0.69.tgz} + resolution: {integrity: sha512-ojVo41qGp+/NUaGGXuuT2/bc0K4H1vzvindeYpUj6LkGL0gQSitdXnviYEnUFqfrMvn7bx1wKTy3uLtADqxgPQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] '@tarojs/parse-css-to-stylesheet-darwin-arm64@0.0.69': - resolution: {integrity: sha512-xtk3WmfYKvlTxGgxjz6DSqcKmRxXRPG+1bINvvOmcQYbOZtl9cw6X4fC/B204SEv06uC8MYaUZ0z0AbjGzZFrA==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-darwin-arm64/-/parse-css-to-stylesheet-darwin-arm64-0.0.69.tgz} + resolution: {integrity: sha512-xtk3WmfYKvlTxGgxjz6DSqcKmRxXRPG+1bINvvOmcQYbOZtl9cw6X4fC/B204SEv06uC8MYaUZ0z0AbjGzZFrA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@tarojs/parse-css-to-stylesheet-darwin-universal@0.0.69': - resolution: {integrity: sha512-AkXvr4bVy1a8d0xOXxhc05352ubTU2G6h4t1RFuzYJLzMBbQWAI60iHcSaCWhkuV9HUl+3UXv0NoW0NkXq19cw==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-darwin-universal/-/parse-css-to-stylesheet-darwin-universal-0.0.69.tgz} + resolution: {integrity: sha512-AkXvr4bVy1a8d0xOXxhc05352ubTU2G6h4t1RFuzYJLzMBbQWAI60iHcSaCWhkuV9HUl+3UXv0NoW0NkXq19cw==} engines: {node: '>= 10'} os: [darwin] '@tarojs/parse-css-to-stylesheet-darwin-x64@0.0.69': - resolution: {integrity: sha512-3CTu0tXFZ7aLONaIdrZibKqYUD5IyivF6wfE9CYNEbkkxZoJU29dJ2o9kfVpcxFwKq/4BuH1TKWGYCiCOSyo4g==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-darwin-x64/-/parse-css-to-stylesheet-darwin-x64-0.0.69.tgz} + resolution: {integrity: sha512-3CTu0tXFZ7aLONaIdrZibKqYUD5IyivF6wfE9CYNEbkkxZoJU29dJ2o9kfVpcxFwKq/4BuH1TKWGYCiCOSyo4g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@tarojs/parse-css-to-stylesheet-linux-arm-gnueabihf@0.0.69': - resolution: {integrity: sha512-LFx3R8X/JXrBeNnlJOgvOxPTaWF7kUl6NMbOUWQbIfx/opqducTVAqrRF9ev1pYlbkRoQpabls8Z21LXDuYaaw==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-arm-gnueabihf/-/parse-css-to-stylesheet-linux-arm-gnueabihf-0.0.69.tgz} + resolution: {integrity: sha512-LFx3R8X/JXrBeNnlJOgvOxPTaWF7kUl6NMbOUWQbIfx/opqducTVAqrRF9ev1pYlbkRoQpabls8Z21LXDuYaaw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-arm64-gnu@0.0.69': - resolution: {integrity: sha512-nKlCyYz8NUVI7P8qS3j3tq49ZesGKgoXt3WH5iNPT1PEflxuSgA9T6UcPtUy0X/RolOF6p5Gd/UyhxcY2dUg+A==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-arm64-gnu/-/parse-css-to-stylesheet-linux-arm64-gnu-0.0.69.tgz} + resolution: {integrity: sha512-nKlCyYz8NUVI7P8qS3j3tq49ZesGKgoXt3WH5iNPT1PEflxuSgA9T6UcPtUy0X/RolOF6p5Gd/UyhxcY2dUg+A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-arm64-musl@0.0.69': - resolution: {integrity: sha512-bYODGCEx1Ni4EMNuZU95IUPqVZAXsY9gIc5CPSfKQ2j167Vbeo/gskQk/uNVjmnYJ69PplgJ9npylINgLIPIrA==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-arm64-musl/-/parse-css-to-stylesheet-linux-arm64-musl-0.0.69.tgz} + resolution: {integrity: sha512-bYODGCEx1Ni4EMNuZU95IUPqVZAXsY9gIc5CPSfKQ2j167Vbeo/gskQk/uNVjmnYJ69PplgJ9npylINgLIPIrA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-x64-gnu@0.0.69': - resolution: {integrity: sha512-89f03s+txGJ1c8Zc6Ib4qTAP4YhfFbVFq29XExqbC7eGvpQl5DeOtwonO5DBwMc7lA+LG4b1Q4CMXE3qodn2eA==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-x64-gnu/-/parse-css-to-stylesheet-linux-x64-gnu-0.0.69.tgz} + resolution: {integrity: sha512-89f03s+txGJ1c8Zc6Ib4qTAP4YhfFbVFq29XExqbC7eGvpQl5DeOtwonO5DBwMc7lA+LG4b1Q4CMXE3qodn2eA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/parse-css-to-stylesheet-linux-x64-musl@0.0.69': - resolution: {integrity: sha512-vyewIf1KysXYNIJdkzc9JSPguTG9zD65Belk3H186mLR18KtsvrqNqlWnP8kKfduF4ixh6qt0F2PkKbeI9PZvg==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-linux-x64-musl/-/parse-css-to-stylesheet-linux-x64-musl-0.0.69.tgz} + resolution: {integrity: sha512-vyewIf1KysXYNIJdkzc9JSPguTG9zD65Belk3H186mLR18KtsvrqNqlWnP8kKfduF4ixh6qt0F2PkKbeI9PZvg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/parse-css-to-stylesheet-win32-x64-msvc@0.0.69': - resolution: {integrity: sha512-CHKlVjAiSAZTFNV8GkfXV88Jy9yyFSvKBAO3++l2KSQUBUWmPX775FbH+god2BOLf5SfAXRPd0HVAEK9qNeHXQ==, tarball: https://registry.npmjs.org/@tarojs/parse-css-to-stylesheet-win32-x64-msvc/-/parse-css-to-stylesheet-win32-x64-msvc-0.0.69.tgz} + resolution: {integrity: sha512-CHKlVjAiSAZTFNV8GkfXV88Jy9yyFSvKBAO3++l2KSQUBUWmPX775FbH+god2BOLf5SfAXRPd0HVAEK9qNeHXQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3074,60 +3078,60 @@ packages: engines: {node: '>= 10'} '@tarojs/plugin-doctor-darwin-arm64@0.0.13': - resolution: {integrity: sha512-BRqMB6jOflPIVdQEJ5vJ7j1OcEcgg65IPPY9YVNx5MnYE/SoZj6/yWvmDNc507ZEkWd4H1sJ4Jfk7eKUxm44PQ==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-darwin-arm64/-/plugin-doctor-darwin-arm64-0.0.13.tgz} + resolution: {integrity: sha512-BRqMB6jOflPIVdQEJ5vJ7j1OcEcgg65IPPY9YVNx5MnYE/SoZj6/yWvmDNc507ZEkWd4H1sJ4Jfk7eKUxm44PQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@tarojs/plugin-doctor-darwin-universal@0.0.13': - resolution: {integrity: sha512-qIv94zgybce+Wq6/Bgy+Np+3BM2SYipuuKTg4LU3ALfJ+YxJetYDcbat9GPxulZqyvxKshYaYtusfwzCu+QWEw==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-darwin-universal/-/plugin-doctor-darwin-universal-0.0.13.tgz} + resolution: {integrity: sha512-qIv94zgybce+Wq6/Bgy+Np+3BM2SYipuuKTg4LU3ALfJ+YxJetYDcbat9GPxulZqyvxKshYaYtusfwzCu+QWEw==} engines: {node: '>= 10'} os: [darwin] '@tarojs/plugin-doctor-darwin-x64@0.0.13': - resolution: {integrity: sha512-zjx3OGlcyOTr+VoRcFmQQcsXscwNucpynlhEYS3ZlofVe9qI0LeTMb/jbMriT/W0c1b4nlVaM8sv+HKz4NKUeA==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-darwin-x64/-/plugin-doctor-darwin-x64-0.0.13.tgz} + resolution: {integrity: sha512-zjx3OGlcyOTr+VoRcFmQQcsXscwNucpynlhEYS3ZlofVe9qI0LeTMb/jbMriT/W0c1b4nlVaM8sv+HKz4NKUeA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@tarojs/plugin-doctor-linux-arm-gnueabihf@0.0.13': - resolution: {integrity: sha512-WkViXfZNrB7HRoDySNhm6JG1IaIBmYGWZDwz0BuhkDQPZLfCCy6v01rSo5wfHGdyLnDg6CkENBS1IrdIU9zK+A==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-arm-gnueabihf/-/plugin-doctor-linux-arm-gnueabihf-0.0.13.tgz} + resolution: {integrity: sha512-WkViXfZNrB7HRoDySNhm6JG1IaIBmYGWZDwz0BuhkDQPZLfCCy6v01rSo5wfHGdyLnDg6CkENBS1IrdIU9zK+A==} engines: {node: '>= 10'} cpu: [arm] os: [linux] '@tarojs/plugin-doctor-linux-arm64-gnu@0.0.13': - resolution: {integrity: sha512-C6ZjqhyOqBcI4y+BFXYjBHBZY6441fO5YIoMv3Sc+nAV+LR1vvyGJ95JcC+Vma+sEjxRMP0IO9lvcLRIcrbrsA==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-arm64-gnu/-/plugin-doctor-linux-arm64-gnu-0.0.13.tgz} + resolution: {integrity: sha512-C6ZjqhyOqBcI4y+BFXYjBHBZY6441fO5YIoMv3Sc+nAV+LR1vvyGJ95JcC+Vma+sEjxRMP0IO9lvcLRIcrbrsA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/plugin-doctor-linux-arm64-musl@0.0.13': - resolution: {integrity: sha512-V1HnFITOLgHVyQ+OCa1oPFKOtGFRtP91vlbUGfOwMA4GeOVw9g28W/hfTyucTCkfZWlrssLehgW6L2AGAMXh2w==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-arm64-musl/-/plugin-doctor-linux-arm64-musl-0.0.13.tgz} + resolution: {integrity: sha512-V1HnFITOLgHVyQ+OCa1oPFKOtGFRtP91vlbUGfOwMA4GeOVw9g28W/hfTyucTCkfZWlrssLehgW6L2AGAMXh2w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@tarojs/plugin-doctor-linux-x64-gnu@0.0.13': - resolution: {integrity: sha512-oetfzBW60uenPBBF4/NE6Mf0Iwkw1YGqIIBiN++aVQynbWrmMzWBsW8kleZ5vN1npxI9aud9EfRU1uM37DrG2A==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-x64-gnu/-/plugin-doctor-linux-x64-gnu-0.0.13.tgz} + resolution: {integrity: sha512-oetfzBW60uenPBBF4/NE6Mf0Iwkw1YGqIIBiN++aVQynbWrmMzWBsW8kleZ5vN1npxI9aud9EfRU1uM37DrG2A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/plugin-doctor-linux-x64-musl@0.0.13': - resolution: {integrity: sha512-OdIF/kFwwM0kQPDnpkanhvfWRaAI6EtDmpM9rQA/Lu2QcJq86w5d7X/WSN0U2xF1nialAUrfl79NyIaEzp4Fcw==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-linux-x64-musl/-/plugin-doctor-linux-x64-musl-0.0.13.tgz} + resolution: {integrity: sha512-OdIF/kFwwM0kQPDnpkanhvfWRaAI6EtDmpM9rQA/Lu2QcJq86w5d7X/WSN0U2xF1nialAUrfl79NyIaEzp4Fcw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.13': - resolution: {integrity: sha512-nIbG2SliRhRwACLa1kNMskcfjsihp+3tZQMAxl+LoYUq6JRaWgP3vH2nHkDyZHTCheBTDtAaupqXWrYF3w+U6g==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-win32-ia32-msvc/-/plugin-doctor-win32-ia32-msvc-0.0.13.tgz} + resolution: {integrity: sha512-nIbG2SliRhRwACLa1kNMskcfjsihp+3tZQMAxl+LoYUq6JRaWgP3vH2nHkDyZHTCheBTDtAaupqXWrYF3w+U6g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] '@tarojs/plugin-doctor-win32-x64-msvc@0.0.13': - resolution: {integrity: sha512-G1mjsGzyeb4TPw7RoqOl4xPPhf5Lfp4BH9hjfBYbGM0RL5UFHmhfzvn2Icrriyk68v2GoQeHroZ2p6qAtbXdBw==, tarball: https://registry.npmjs.org/@tarojs/plugin-doctor-win32-x64-msvc/-/plugin-doctor-win32-x64-msvc-0.0.13.tgz} + resolution: {integrity: sha512-G1mjsGzyeb4TPw7RoqOl4xPPhf5Lfp4BH9hjfBYbGM0RL5UFHmhfzvn2Icrriyk68v2GoQeHroZ2p6qAtbXdBw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3243,6 +3247,10 @@ packages: resolution: {integrity: sha512-x7xi9l2yq9WwupetxbbPP1DFzIptBxaznvrJ2TFHIgw+w3UZa3LuGcQah5ii1TSEkUXKqjkkx4IvaHNDc1atSQ==} engines: {node: '>= 18'} + '@tarojs/runner-utils@4.0.9': + resolution: {integrity: sha512-MRY7mGrMFdPtVL6iajO2a/2Oc7RVN1wGHzoR2ywDiyr5zWX6BSKo35HZuaCsmNg71wbVVBR5Ax4SiLe5dsQrjg==} + engines: {node: '>= 18'} + '@tarojs/runtime@4.0.8-beta.1': resolution: {integrity: sha512-+CX93bBHvedJwv/uUA+mSFXc4AVhujjIMP0fhPN91FUl+AYL4nxZzzJakNOEtPZGljN2XYRSZFnWKHF+glJsqA==} engines: {node: '>= 18'} @@ -3251,10 +3259,18 @@ packages: resolution: {integrity: sha512-DbIObz72QzJhxJM96RhaTPzml2Z0D26TKj3jBpRC8Q3jshvnwGQmhLlrFdVSB+gzGZKWsKxpgZxAZzMG1ILDRw==} engines: {node: '>= 18'} + '@tarojs/service@4.0.9': + resolution: {integrity: sha512-Nwb6/pdVttM1GLOJ4OKxcBeNwcYoPQNvSxvkGSyc5iH10BItT5fRv+/pkBABbHCWs/eMMGLHIzI3HzNUVYq9SA==} + engines: {node: '>= 18'} + '@tarojs/shared@4.0.8-beta.1': resolution: {integrity: sha512-DJAgcPxNI4678uNbyLABqKygsickAJ9aG9v9ctNYvtvlCBscRJlMoa0FASNn1Fm4mVgPKH/8KfSJr0frqIEVLw==} engines: {node: '>= 18'} + '@tarojs/shared@4.0.9': + resolution: {integrity: sha512-IJzlMysQte/X/46ETIN2wF/AuUbGBgPFrt5ALU6hQTyQuYHspAajYlzvgNPhvviVvkPpze+DF27ZpSa87Mk0vg==} + engines: {node: '>= 18'} + '@tarojs/taro-h5@4.0.8-beta.1': resolution: {integrity: sha512-D5ZFDGFDpDikpk7XQ1cIMwqkeVPXQAhNq3AoD5MGnmkhkl5kGA50lOdH9gPjGim+7FbETRtJ06J4yFM5NiyQ5Q==} peerDependencies: @@ -3860,8 +3876,8 @@ packages: '@vitest/expect@2.1.8': resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} - '@vitest/expect@3.0.5': - resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz} + '@vitest/expect@3.0.7': + resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-3.0.7.tgz} '@vitest/mocker@2.1.8': resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} @@ -3874,8 +3890,8 @@ packages: vite: optional: true - '@vitest/mocker@3.0.5': - resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz} + '@vitest/mocker@3.0.7': + resolution: {integrity: sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.7.tgz} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -3888,8 +3904,8 @@ packages: '@vitest/pretty-format@2.1.8': resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - '@vitest/pretty-format@3.0.5': - resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz} + '@vitest/pretty-format@3.0.7': + resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.7.tgz} '@vitest/runner@1.6.0': resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} @@ -3897,8 +3913,8 @@ packages: '@vitest/runner@2.1.8': resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} - '@vitest/runner@3.0.5': - resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz} + '@vitest/runner@3.0.7': + resolution: {integrity: sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-3.0.7.tgz} '@vitest/snapshot@1.6.0': resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} @@ -3906,8 +3922,8 @@ packages: '@vitest/snapshot@2.1.8': resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} - '@vitest/snapshot@3.0.5': - resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz} + '@vitest/snapshot@3.0.7': + resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.7.tgz} '@vitest/spy@1.6.0': resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} @@ -3915,8 +3931,8 @@ packages: '@vitest/spy@2.1.8': resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} - '@vitest/spy@3.0.5': - resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz} + '@vitest/spy@3.0.7': + resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-3.0.7.tgz} '@vitest/ui@2.1.8': resolution: {integrity: sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==} @@ -3929,8 +3945,8 @@ packages: '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - '@vitest/utils@3.0.5': - resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz} + '@vitest/utils@3.0.7': + resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-3.0.7.tgz} '@volar/language-core@2.4.11': resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} @@ -4697,6 +4713,10 @@ packages: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==, tarball: https://registry.npmjs.org/chai/-/chai-5.2.0.tgz} + engines: {node: '>=12'} + chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -8072,6 +8092,9 @@ packages: loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==, tarball: https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz} + lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} @@ -9638,7 +9661,7 @@ packages: react: '>=18' react-reconciler@0.29.0: - resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} + resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==, tarball: https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz} engines: {node: '>=0.10.0'} peerDependencies: react: ^18.2.0 @@ -11280,8 +11303,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==, tarball: https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz} + vite-node@3.0.7: + resolution: {integrity: sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==, tarball: https://registry.npmjs.org/vite-node/-/vite-node-3.0.7.tgz} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -11387,16 +11410,16 @@ packages: jsdom: optional: true - vitest@3.0.5: - resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==, tarball: https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz} + vitest@3.0.7: + resolution: {integrity: sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==, tarball: https://registry.npmjs.org/vitest/-/vitest-3.0.7.tgz} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.5 - '@vitest/ui': 3.0.5 + '@vitest/browser': 3.0.7 + '@vitest/ui': 3.0.7 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -14349,6 +14372,11 @@ snapshots: '@tarojs/runtime': 4.0.8-beta.1 '@tarojs/shared': 4.0.8-beta.1 + '@tarojs/api@4.0.8-beta.1(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.9)': + dependencies: + '@tarojs/runtime': 4.0.8-beta.1 + '@tarojs/shared': 4.0.9 + '@tarojs/binding-darwin-arm64@4.0.8-beta.1': optional: true @@ -14393,12 +14421,12 @@ snapshots: - debug - supports-color - '@tarojs/components-advanced@4.0.8-beta.1(4f25aadf1f41180dc456fc4146f9c8c1)': + '@tarojs/components-advanced@4.0.8-beta.1(4db457bb1462e2d585a3bf6b20d34e61)': dependencies: - '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) '@tarojs/runtime': 4.0.8-beta.1 '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/taro': 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@tarojs/taro': 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) classnames: 2.5.1 csstype: 3.1.3 memoize-one: 6.0.0 @@ -14459,13 +14487,13 @@ snapshots: - webpack-chain - webpack-dev-server - '@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15)))': + '@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))': dependencies: '@stencil/core': 2.22.3 - '@tarojs/components-advanced': 4.0.8-beta.1(4f25aadf1f41180dc456fc4146f9c8c1) + '@tarojs/components-advanced': 4.0.8-beta.1(a401d440388d8a660a222e0f935754ff) '@tarojs/runtime': 4.0.8-beta.1 '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/taro': 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@tarojs/taro': 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) classnames: 2.5.1 hammerjs: 2.0.8 hls.js: 1.5.18 @@ -14484,13 +14512,13 @@ snapshots: - webpack-chain - webpack-dev-server - '@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))': + '@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15)))': dependencies: '@stencil/core': 2.22.3 - '@tarojs/components-advanced': 4.0.8-beta.1(a401d440388d8a660a222e0f935754ff) + '@tarojs/components-advanced': 4.0.8-beta.1(4db457bb1462e2d585a3bf6b20d34e61) '@tarojs/runtime': 4.0.8-beta.1 '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/taro': 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) + '@tarojs/taro': 4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) classnames: 2.5.1 hammerjs: 2.0.8 hls.js: 1.5.18 @@ -14536,6 +14564,33 @@ snapshots: - '@swc/helpers' - supports-color + '@tarojs/helper@4.0.9(@swc/helpers@0.5.15)': + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + '@swc/core': 1.3.96(@swc/helpers@0.5.15) + '@swc/register': 0.1.10(@swc/core@1.3.96(@swc/helpers@0.5.15)) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + chokidar: 3.6.0 + cross-spawn: 7.0.6 + debug: 4.4.0(supports-color@8.1.1) + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + esbuild: 0.21.5 + find-yarn-workspace-root: 2.0.0 + fs-extra: 11.2.0 + lodash: 4.17.21 + require-from-string: 2.0.2 + resolve: 1.22.10 + supports-hyperlinks: 3.1.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + '@tarojs/parse-css-to-stylesheet-android-arm-eabi@0.0.69': optional: true @@ -14653,11 +14708,16 @@ snapshots: '@tarojs/runtime': 4.0.8-beta.1 '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/plugin-platform-alipay@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': + '@tarojs/plugin-platform-alipay@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': dependencies: - '@tarojs/service': 4.0.8-beta.1(@swc/helpers@0.5.15) + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) '@tarojs/shared': 4.0.8-beta.1 + '@tarojs/plugin-platform-alipay@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9)': + dependencies: + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) + '@tarojs/shared': 4.0.9 + '@tarojs/plugin-platform-h5@4.0.8-beta.1(31635786561422ef85b36f9130e58fd5)': dependencies: '@babel/core': 7.26.0 @@ -14715,32 +14775,42 @@ snapshots: - webpack-cli - webpack-dev-server - '@tarojs/plugin-platform-jd@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': + '@tarojs/plugin-platform-jd@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': dependencies: - '@tarojs/service': 4.0.8-beta.1(@swc/helpers@0.5.15) + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/plugin-platform-qq@4.0.8-beta.1(@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1))(@tarojs/shared@4.0.8-beta.1)': + '@tarojs/plugin-platform-jd@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9)': dependencies: - '@tarojs/plugin-platform-weapp': 4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) + '@tarojs/shared': 4.0.9 + + '@tarojs/plugin-platform-qq@4.0.8-beta.1(@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1))(@tarojs/shared@4.0.8-beta.1)': + dependencies: + '@tarojs/plugin-platform-weapp': 4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1) '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/plugin-platform-swan@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': + '@tarojs/plugin-platform-swan@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': dependencies: - '@tarojs/service': 4.0.8-beta.1(@swc/helpers@0.5.15) + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) '@tarojs/shared': 4.0.8-beta.1 - '@tarojs/plugin-platform-tt@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': + '@tarojs/plugin-platform-tt@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': dependencies: - '@tarojs/service': 4.0.8-beta.1(@swc/helpers@0.5.15) + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) '@tarojs/shared': 4.0.8-beta.1 webpack-sources: 3.2.3 - '@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': + '@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)': dependencies: - '@tarojs/service': 4.0.8-beta.1(@swc/helpers@0.5.15) + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) '@tarojs/shared': 4.0.8-beta.1 + '@tarojs/plugin-platform-weapp@4.0.8-beta.1(@tarojs/service@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9)': + dependencies: + '@tarojs/service': 4.0.9(@swc/helpers@0.5.15) + '@tarojs/shared': 4.0.9 + '@tarojs/react@4.0.8-beta.1(react@18.3.1)': dependencies: '@tarojs/runtime': 4.0.8-beta.1 @@ -14769,6 +14839,15 @@ snapshots: - '@swc/helpers' - supports-color + '@tarojs/runner-utils@4.0.9(@swc/helpers@0.5.15)': + dependencies: + '@tarojs/helper': 4.0.9(@swc/helpers@0.5.15) + rollup: 3.29.5 + scss-bundle: 3.1.2 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + '@tarojs/runtime@4.0.8-beta.1': dependencies: '@tarojs/shared': 4.0.8-beta.1 @@ -14789,8 +14868,25 @@ snapshots: - '@swc/helpers' - supports-color + '@tarojs/service@4.0.9(@swc/helpers@0.5.15)': + dependencies: + '@tarojs/helper': 4.0.9(@swc/helpers@0.5.15) + '@tarojs/runner-utils': 4.0.9(@swc/helpers@0.5.15) + '@tarojs/shared': 4.0.9 + joi: 17.13.3 + lodash: 4.17.21 + ora: 5.4.1 + resolve: 1.22.10 + tapable: 2.2.1 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/helpers' + - supports-color + '@tarojs/shared@4.0.8-beta.1': {} + '@tarojs/shared@4.0.9': {} + '@tarojs/taro-h5@4.0.8-beta.1(72d2ffd84649411181d9d11efc235ebe)': dependencies: '@tarojs/api': 4.0.8-beta.1(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.8-beta.1) @@ -14820,15 +14916,32 @@ snapshots: - '@swc/helpers' - supports-color - '@tarojs/taro@4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15)))': + '@tarojs/taro@4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))': dependencies: '@tarojs/api': 4.0.8-beta.1(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.8-beta.1) - '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) '@tarojs/helper': 4.0.8-beta.1(@swc/helpers@0.5.15) '@tarojs/runtime': 4.0.8-beta.1 '@tarojs/shared': 4.0.8-beta.1 '@types/postcss-url': 10.0.4 postcss: 8.4.49 + optionalDependencies: + '@types/react': 18.3.18 + html-webpack-plugin: 5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) + rollup: 3.29.5 + webpack: 5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)) + webpack-chain: 6.5.1 + webpack-dev-server: 4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) + + '@tarojs/taro@4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15)))': + dependencies: + '@tarojs/api': 4.0.8-beta.1(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.8-beta.1) + '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@tarojs/helper': 4.0.9(@swc/helpers@0.5.15) + '@tarojs/runtime': 4.0.8-beta.1 + '@tarojs/shared': 4.0.8-beta.1 + '@types/postcss-url': 10.0.4 + postcss: 8.4.49 optionalDependencies: '@types/react': 18.3.18 html-webpack-plugin: 5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) @@ -14837,22 +14950,22 @@ snapshots: webpack-chain: 6.5.1 webpack-dev-server: 4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) - '@tarojs/taro@4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@tarojs/shared@4.0.8-beta.1)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))': + '@tarojs/taro@4.0.8-beta.1(@tarojs/components@4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@tarojs/shared@4.0.9)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15)))': dependencies: - '@tarojs/api': 4.0.8-beta.1(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.8-beta.1) - '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) - '@tarojs/helper': 4.0.8-beta.1(@swc/helpers@0.5.15) + '@tarojs/api': 4.0.8-beta.1(@tarojs/runtime@4.0.8-beta.1)(@tarojs/shared@4.0.9) + '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.9(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@4.30.0)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + '@tarojs/helper': 4.0.9(@swc/helpers@0.5.15) '@tarojs/runtime': 4.0.8-beta.1 - '@tarojs/shared': 4.0.8-beta.1 + '@tarojs/shared': 4.0.9 '@types/postcss-url': 10.0.4 postcss: 8.4.49 optionalDependencies: '@types/react': 18.3.18 - html-webpack-plugin: 5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) - rollup: 3.29.5 - webpack: 5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)) + html-webpack-plugin: 5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) + rollup: 4.30.0 + webpack: 5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15)) webpack-chain: 6.5.1 - webpack-dev-server: 4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) + webpack-dev-server: 4.15.2(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))) '@tarojs/vite-runner@4.0.8-beta.1(@swc/helpers@0.5.15)(@tarojs/runtime@4.0.8-beta.1)(@types/babel__core@7.20.5)(jiti@2.4.2)(postcss@8.4.49)(rollup@3.29.5)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.5)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0))': dependencies: @@ -15670,7 +15783,7 @@ snapshots: - supports-color optional: true - '@vitest/coverage-v8@2.1.8(vitest@3.0.5)': + '@vitest/coverage-v8@2.1.8(vitest@3.0.7)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -15684,7 +15797,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + vitest: 3.0.7(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) transitivePeerDependencies: - supports-color @@ -15701,11 +15814,11 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/expect@3.0.5': + '@vitest/expect@3.0.7': dependencies: - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.1.2 + '@vitest/spy': 3.0.7 + '@vitest/utils': 3.0.7 + chai: 5.2.0 tinyrainbow: 2.0.0 '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@22.10.5)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0))': @@ -15716,9 +15829,9 @@ snapshots: optionalDependencies: vite: 5.4.11(@types/node@22.10.5)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) - '@vitest/mocker@3.0.5(vite@5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0))': + '@vitest/mocker@3.0.7(vite@5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0))': dependencies: - '@vitest/spy': 3.0.5 + '@vitest/spy': 3.0.7 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: @@ -15728,7 +15841,7 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@3.0.5': + '@vitest/pretty-format@3.0.7': dependencies: tinyrainbow: 2.0.0 @@ -15743,9 +15856,9 @@ snapshots: '@vitest/utils': 2.1.8 pathe: 1.1.2 - '@vitest/runner@3.0.5': + '@vitest/runner@3.0.7': dependencies: - '@vitest/utils': 3.0.5 + '@vitest/utils': 3.0.7 pathe: 2.0.3 '@vitest/snapshot@1.6.0': @@ -15760,9 +15873,9 @@ snapshots: magic-string: 0.30.17 pathe: 1.1.2 - '@vitest/snapshot@3.0.5': + '@vitest/snapshot@3.0.7': dependencies: - '@vitest/pretty-format': 3.0.5 + '@vitest/pretty-format': 3.0.7 magic-string: 0.30.17 pathe: 2.0.3 @@ -15774,7 +15887,7 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@3.0.5': + '@vitest/spy@3.0.7': dependencies: tinyspy: 3.0.2 @@ -15790,7 +15903,7 @@ snapshots: vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) optional: true - '@vitest/ui@2.1.8(vitest@3.0.5)': + '@vitest/ui@2.1.8(vitest@3.0.7)': dependencies: '@vitest/utils': 2.1.8 fflate: 0.8.2 @@ -15799,7 +15912,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + vitest: 3.0.7(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) '@vitest/utils@1.6.0': dependencies: @@ -15814,10 +15927,10 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 - '@vitest/utils@3.0.5': + '@vitest/utils@3.0.7': dependencies: - '@vitest/pretty-format': 3.0.5 - loupe: 3.1.2 + '@vitest/pretty-format': 3.0.7 + loupe: 3.1.3 tinyrainbow: 2.0.0 '@volar/language-core@2.4.11': @@ -16734,6 +16847,14 @@ snapshots: loupe: 3.1.2 pathval: 2.0.0 + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -20944,6 +21065,8 @@ snapshots: loupe@3.1.2: {} + loupe@3.1.3: {} + lower-case@1.1.4: {} lower-case@2.0.2: @@ -24717,7 +24840,7 @@ snapshots: - supports-color - terser - vite-node@3.0.5(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): + vite-node@3.0.7(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) @@ -24804,10 +24927,10 @@ snapshots: stylus: 0.64.0 terser: 5.37.0 - vitest-canvas-mock@0.3.3(vitest@3.0.5): + vitest-canvas-mock@0.3.3(vitest@3.0.7): dependencies: jest-canvas-mock: 2.5.2 - vitest: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + vitest: 3.0.7(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) vitest@1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: @@ -24833,7 +24956,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 18.19.70 - '@vitest/ui': 2.1.8(vitest@3.0.5) + '@vitest/ui': 2.1.8(vitest@3.0.7) happy-dom: 17.1.0 jsdom: 24.1.3 transitivePeerDependencies: @@ -24870,7 +24993,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.5 - '@vitest/ui': 2.1.8(vitest@3.0.5) + '@vitest/ui': 2.1.8(vitest@3.0.7) happy-dom: 17.1.0 jsdom: 24.1.3 transitivePeerDependencies: @@ -24921,16 +25044,16 @@ snapshots: - supports-color - terser - vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): + vitest@3.0.7(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: - '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(vite@5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)) - '@vitest/pretty-format': 3.0.5 - '@vitest/runner': 3.0.5 - '@vitest/snapshot': 3.0.5 - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.1.2 + '@vitest/expect': 3.0.7 + '@vitest/mocker': 3.0.7(vite@5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)) + '@vitest/pretty-format': 3.0.7 + '@vitest/runner': 3.0.7 + '@vitest/snapshot': 3.0.7 + '@vitest/spy': 3.0.7 + '@vitest/utils': 3.0.7 + chai: 5.2.0 debug: 4.4.0(supports-color@8.1.1) expect-type: 1.1.0 magic-string: 0.30.17 @@ -24941,12 +25064,12 @@ snapshots: tinypool: 1.0.2 tinyrainbow: 2.0.0 vite: 5.4.11(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) - vite-node: 3.0.5(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + vite-node: 3.0.7(@types/node@20.17.12)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 20.17.12 - '@vitest/ui': 2.1.8(vitest@3.0.5) + '@vitest/ui': 2.1.8(vitest@3.0.7) happy-dom: 14.12.3 jsdom: 24.1.3 transitivePeerDependencies: diff --git a/scripts/build-taro.mjs b/scripts/build-taro.mjs index ebee0ca63b..c0e84ce542 100644 --- a/scripts/build-taro.mjs +++ b/scripts/build-taro.mjs @@ -12,7 +12,7 @@ import { access, mkdir, readFile, writeFile } from 'fs/promises' import { basename, dirname, extname, join, relative, resolve } from 'path' import j from 'jscodeshift' import { readFileSync } from 'fs' -import { relativeFilePath } from './relative-path.mjs' +import { relativePath } from './relative-path.mjs' import { codeShift } from './build-comments-to-dts.mjs' import { generate } from './build-theme-typings.mjs' @@ -59,7 +59,7 @@ const transform = (file, api, replace) => { return } const dir = join(__dirname, alias.replace('@/', '../src/')) - path.node.source.value = relativeFilePath(file.path, dir)?.replace( + path.node.source.value = relativePath(dir, file.path)?.replace( '.taro', '', ) @@ -232,32 +232,23 @@ async function buildUMD() { async function buildAllCSS() { // 拷贝styles - async function copyStyles() { - await copy( - resolve(__dirname, '../src/styles'), - resolve(__dirname, `../${dist}/styles`), - ) - + async function generateAllStyles() { + const projectID = process.env.VITE_APP_PROJECT_ID const content = [ - `@import './styles/theme-default.scss';`, - `@import './styles/variables.scss';`, + `@import './styles/variables${projectID ? `-${projectID}` : ''}.scss';`, `@import './styles/mixins/index.scss';`, `@import './styles/animation/index.scss';`, ] - const projectID = process.env.VITE_APP_PROJECT_ID - if (projectID) { - content[1] = `@import '../variables-${projectID}.scss';` - } const scssFiles = await glob([`${dist}/es/packages/**/*.scss`]) scssFiles.forEach((file) => { content.push( - `@import '${relativeFilePath(`/${dist}/style.scss`, '/' + file)}';`, + `@import '${relativePath('/' + file, `/${dist}/style.scss`)}';`, ) }) dest(`${dist}/style.scss`, content.join('\n')) } - await copyStyles() + await generateAllStyles() await vite.build({ logLevel: 'error', resolve: { @@ -277,6 +268,25 @@ async function buildAllCSS() { } async function buildThemeCSS() { + const files = await glob([`${dist}/styles/theme-*.scss`], { + ignore: [`${dist}/types/src/**/*.taro.d.ts`], + }) + const projectID = process.env.VITE_APP_PROJECT_ID + const inputFiles = {} + files.forEach(filePath => { + const themeName = basename(filePath, 'scss').replace('theme-', '') + if (!projectID) { + inputFiles[themeName] = `./${filePath}` + } else { + if (themeName === projectID) { + inputFiles['default'] = `./${filePath}` + } + if (themeName === `${projectID}-dark`) { + inputFiles['dark'] = `./${filePath}` + } + } + }) + await vite.build({ logLevel: 'error', resolve: { @@ -285,16 +295,14 @@ async function buildThemeCSS() { build: { emptyOutDir: false, rollupOptions: { + input: inputFiles, output: [ { dir: `${dist}/styles/themes`, - assetFileNames: 'default.css', + assetFileNames: '[name].css', }, ], }, - lib: { - entry: `./${dist}/styles/themes/default.scss`, - }, }, }) } @@ -305,21 +313,6 @@ async function copyStyles() { resolve(__dirname, '../src/styles'), resolve(__dirname, `../${dist}/styles`), ) - - let content = [ - `@import '../theme-default.scss';`, - `@import '../theme-dark.scss';`, - `@import '../jd-font';`, - ] - const projectID = process.env.VITE_APP_PROJECT_ID - if (projectID) { - content = [ - `@import '../theme-${projectID}.scss';`, - `@import '../jd-font';`, - ] - } - - dest(`${dist}/styles/themes/default.scss`, content.join('\n')) } // 构建样式 @@ -443,6 +436,8 @@ async function copyReleaseFiles() { const npmPublishDir = dist.replace('dist', '') await copy(join(__dirname, '../README.md'), join(`${npmPublishDir}/README.md`)) await copy(join(__dirname, '../CHANGELOG.md'), join(`${npmPublishDir}/CHANGELOG.md`)) + await copy(join(__dirname, '../src/packages/lottie/animation'), join(`${npmPublishDir}/dist/es/packages/lottie/animation`)) + await copy(join(__dirname, '../src/packages/lottie/animation'), join(`${npmPublishDir}/dist/cjs/packages/lottie/animation`)) await writeFile(join(__dirname, `../${npmPublishDir}/package.json`), generateReleasePackageJson()) } @@ -484,8 +479,6 @@ console.time('Build Declaration') await buildDeclaration() console.timeEnd('Build Declaration') -// await exportProps() - await deleteAsync([ `${dist}/es/packages/nutui.react.js`, `${dist}/es/packages/nutui.react.d.ts`, diff --git a/scripts/build.mjs b/scripts/build.mjs index d081671d87..5b7c6928cb 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -12,7 +12,7 @@ import { access, mkdir, readFile, writeFile } from 'fs/promises' import { basename, dirname, extname, join, relative, resolve } from 'path' import j from 'jscodeshift' import { readFileSync } from 'fs' -import { relativeFilePath } from './relative-path.mjs' +import { relativePath } from './relative-path.mjs' import { codeShift } from './build-comments-to-dts.mjs' import { generate } from './build-theme-typings.mjs' @@ -120,7 +120,7 @@ async function buildDeclaration() { : '' if (!importAlias) return const dir = join(__dirname, importAlias.replace('@/', '../src/')) - path.node.source.value = relativeFilePath(file.path, dir) + path.node.source.value = relativePath(dir, file.path) }) .toSource() } @@ -177,35 +177,26 @@ async function buildUMD(p) { }, }) } - +// 针对不同包构建全量的 style async function buildAllCSS() { // 拷贝styles - async function copyStyles() { - await copy( - resolve(__dirname, '../src/styles'), - resolve(__dirname, `../${dist}/styles`), - ) - + async function generateAllStyles() { + const projectID = process.env.VITE_APP_PROJECT_ID const content = [ - `@import './styles/theme-default.scss';`, - `@import './styles/variables.scss';`, + `@import './styles/variables${projectID ? `-${projectID}` : ''}.scss';`, `@import './styles/mixins/index.scss';`, `@import './styles/animation/index.scss';`, ] - const projectID = process.env.VITE_APP_PROJECT_ID - if (projectID) { - content[1] = `@import '../variables-${projectID}.scss';` - } const scssFiles = await glob([`${dist}/es/packages/**/*.scss`]) scssFiles.forEach((file) => { content.push( - `@import '${relativeFilePath(`/${dist}/style.scss`, '/' + file)}';`, + `@import '${relativePath('/' + file, `/${dist}/style.scss`)}';`, ) }) dest(`${dist}/style.scss`, content.join('\n')) } - await copyStyles() + await generateAllStyles() await vite.build({ logLevel: 'error', resolve: { @@ -225,6 +216,30 @@ async function buildAllCSS() { } async function buildThemeCSS() { + const files = await glob([`${dist}/styles/theme-*.scss`], { + ignore: [`${dist}/types/src/**/*.taro.d.ts`], + }) + const projectID = process.env.VITE_APP_PROJECT_ID + const inputFiles = {} + // nuitui 官方包包含全部主题文件,包括: + // default.css 默认明亮主题 + // dark.css 默认暗黑主题 + // jmapp.css、jrkf.css 主题 + // 例如:jmapp 包只包含 jmapp 的主题文件,且是默认主题文件。 + files.forEach(filePath => { + const themeName = basename(filePath, 'scss').replace('theme-', '') + if (!projectID) { + inputFiles[themeName] = `./${filePath}` + } else { + if (themeName === projectID) { + inputFiles['default'] = `./${filePath}` + } + if (themeName === `${projectID}-dark`) { + inputFiles['dark'] = `./${filePath}` + } + } + }) + await vite.build({ logLevel: 'error', resolve: { @@ -233,41 +248,23 @@ async function buildThemeCSS() { build: { emptyOutDir: false, rollupOptions: { + input: inputFiles, output: [ { dir: `${dist}/styles/themes`, - assetFileNames: 'default.css', + assetFileNames: '[name].css', }, ], }, - lib: { - entry: `./${dist}/styles/themes/default.scss`, - }, }, }) } -// 拷贝styles async function copyStyles() { await copy( resolve(__dirname, '../src/styles'), resolve(__dirname, `../${dist}/styles`), ) - - let content = [ - `@import '../theme-default.scss';`, - `@import '../theme-dark.scss';`, - `@import '../jd-font';`, - ] - const projectID = process.env.VITE_APP_PROJECT_ID - if (projectID) { - content = [ - `@import '../theme-${projectID}.scss';`, - `@import '../jd-font';`, - ] - } - - dest(`${dist}/styles/themes/default.scss`, content.join('\n')) } // 构建样式 @@ -384,6 +381,8 @@ async function copyReleaseFiles() { const npmPublishDir = dist.replace('dist', '') await copy(join(__dirname, '../README.md'), join(`${npmPublishDir}/README.md`)) await copy(join(__dirname, '../CHANGELOG.md'), join(`${npmPublishDir}/CHANGELOG.md`)) + await copy(join(__dirname, '../src/packages/lottie/animation'), join(`${npmPublishDir}/dist/es/packages/lottie/animation`)) + await copy(join(__dirname, '../src/packages/lottie/animation'), join(`${npmPublishDir}/dist/cjs/packages/lottie/animation`)) await writeFile(join(__dirname, `../${npmPublishDir}/package.json`), generateReleasePackageJson()) } @@ -438,4 +437,4 @@ console.timeEnd('Build JSDoc') console.time('Copy package.json readme.md') await copyReleaseFiles() -console.timeEnd('Copy package.json readme.md') \ No newline at end of file +console.timeEnd('Copy package.json readme.md') diff --git a/scripts/relative-path.mjs b/scripts/relative-path.mjs index 7a90a20c33..9d35833c89 100644 --- a/scripts/relative-path.mjs +++ b/scripts/relative-path.mjs @@ -1,33 +1,21 @@ -import * as path from 'path' +import { resolve } from 'path' -export function relativeFilePath(from, to) { - if ( - (from[0] === path.sep && to[0] !== path.sep) || - (from[0] !== path.sep && to[0] === path.sep) - ) { - return '' - } - - if (from[from.length - 1] === path.sep || to[to.length - 1] === path.sep) { - return '' - } +export function relativePath(target, source) { + const resolveSource = resolve(source) + const resolveTarget = resolve(target) - const fromPath = from.split(path.sep) - const toPath = to.split(path.sep) - - let i = 0 - while (i < fromPath.length - 1) { - if (toPath[i] === undefined || fromPath[i] !== toPath[i]) { - break - } - ++i + let str = resolveTarget.substr(0, resolve(resolveTarget).lastIndexOf('/')) + while (resolveSource.indexOf(str) == -1) { + str = str.substr(0, str.lastIndexOf('/')) } - const val = toPath.slice(i).join(path.sep) - - if (i === fromPath.length - 1) { - return '.' + path.sep + val + const remain = resolveSource.replace(str+'/', '') + const matchedSlash = remain.match(/\//g) + let res = '' + if (!matchedSlash) { + res = resolveTarget.replace(str+'/', './') + } else { + res = resolveTarget.replace(str+'/', '../'.repeat(matchedSlash.length)) } - - return `..${path.sep}`.repeat(fromPath.length - 1 - i) + val -} + return res +} \ No newline at end of file diff --git a/scripts/replace-css-var.js b/scripts/replace-css-var.js index fafe4b94d0..c558d7cac1 100644 --- a/scripts/replace-css-var.js +++ b/scripts/replace-css-var.js @@ -22,7 +22,7 @@ const variables = fs.readFileSync( const theme = fs.readFileSync( path.join(__dirname, '../src/styles/theme-default.scss'), -).toString() +).toString().replace('@import "./jd-font";', '').replace(`@import './jd-font';`, '') const exclude = ['icon'] components.forEach((component) => { diff --git a/src/config.json b/src/config.json index ac1ac996d7..f03f604839 100644 --- a/src/config.json +++ b/src/config.json @@ -170,7 +170,6 @@ "name": "布局组件", "enName": "layout", "packages": [ - { "version": "3.0.0", "name": "Divider", @@ -224,17 +223,17 @@ "dd": true }, { - "version": "3.0.0", - "name": "Col", - "type": "component", - "cName": "列", - "desc": "布局组件中的列", - "sort": 3, - "show": false, - "exportEmpty": true, - "author": "yushuang24", - "dd": true - }, + "version": "3.0.0", + "name": "Col", + "type": "component", + "cName": "列", + "desc": "布局组件中的列", + "sort": 3, + "show": false, + "exportEmpty": true, + "author": "yushuang24", + "dd": true + }, { "version": "3.0.0", "name": "Row", @@ -585,6 +584,19 @@ "author": "dsj", "dd": false }, + { + "version": "3.0.0", + "name": "DatePickerView", + "type": "component", + "cName": "日期选择器视图", + "desc": "DatePickerView 是 DatePicker 的内容区域", + "sort": 16, + "show": true, + "taro": true, + "v15": false, + "dd": false, + "author": "songsong" + }, { "version": "2.0.0", "name": "Form", diff --git a/src/packages/button/button.scss b/src/packages/button/button.scss index 75b660a967..9d88be721e 100644 --- a/src/packages/button/button.scss +++ b/src/packages/button/button.scss @@ -253,6 +253,7 @@ } &-disabled, + &-disabled.nut-button-icononly, &-solid-disabled { color: $button-primary-color; background: $button-primary-disabled; diff --git a/src/packages/button/demos/taro/demo4.tsx b/src/packages/button/demos/taro/demo4.tsx index b5b01ab2fd..3b6899277b 100644 --- a/src/packages/button/demos/taro/demo4.tsx +++ b/src/packages/button/demos/taro/demo4.tsx @@ -1,4 +1,5 @@ import React from 'react' +import { Text } from '@tarojs/components' import { Button, Cell } from '@nutui/nutui-react-taro' import { Plus, Star } from '@nutui/icons-react-taro' import { harmony } from '@/utils/platform-taro' @@ -13,8 +14,8 @@ const Demo4 = () => { - diff --git a/src/packages/calendarcard/demos/h5/demo2.tsx b/src/packages/calendarcard/demos/h5/demo2.tsx index fbde3d7e52..741b0732a0 100644 --- a/src/packages/calendarcard/demos/h5/demo2.tsx +++ b/src/packages/calendarcard/demos/h5/demo2.tsx @@ -8,12 +8,11 @@ import { const Demo2 = () => { const [val, setVal] = useState(() => { - // return []; - return [new Date('2023-01-01'), new Date('2023-01-03')] + return [new Date('2025-01-01'), new Date('2025-01-03')] }) const onChange = (val: CalendarCardValue) => { setVal(val as Date[]) - console.log(val) + console.log('onChange', val) } return ( <> diff --git a/src/packages/calendarcard/demos/h5/demo3.tsx b/src/packages/calendarcard/demos/h5/demo3.tsx index 4d1c429434..f6d779cf83 100644 --- a/src/packages/calendarcard/demos/h5/demo3.tsx +++ b/src/packages/calendarcard/demos/h5/demo3.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' const Demo3 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/h5/demo4.tsx b/src/packages/calendarcard/demos/h5/demo4.tsx index 44c3785e99..cdf6bc29e2 100644 --- a/src/packages/calendarcard/demos/h5/demo4.tsx +++ b/src/packages/calendarcard/demos/h5/demo4.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' const Demo4 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/h5/demo5.tsx b/src/packages/calendarcard/demos/h5/demo5.tsx index fdf77ed3be..f619c5fdde 100644 --- a/src/packages/calendarcard/demos/h5/demo5.tsx +++ b/src/packages/calendarcard/demos/h5/demo5.tsx @@ -2,9 +2,9 @@ import React, { useState } from 'react' import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' const Demo5 = () => { - const [date, setDate] = useState(() => new Date('2023-01-01')) + const [date, setDate] = useState(() => new Date('2025-01-01')) const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) setDate(val as Date) } return diff --git a/src/packages/calendarcard/demos/h5/demo7.tsx b/src/packages/calendarcard/demos/h5/demo7.tsx index 38422609b5..35258ed6e6 100644 --- a/src/packages/calendarcard/demos/h5/demo7.tsx +++ b/src/packages/calendarcard/demos/h5/demo7.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' const Demo7 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/h5/demo8.tsx b/src/packages/calendarcard/demos/h5/demo8.tsx index e8ab760cb9..eb5cfda44e 100644 --- a/src/packages/calendarcard/demos/h5/demo8.tsx +++ b/src/packages/calendarcard/demos/h5/demo8.tsx @@ -3,11 +3,11 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' const Demo8 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return ( diff --git a/src/packages/calendarcard/demos/h5/demo9.tsx b/src/packages/calendarcard/demos/h5/demo9.tsx index 0e6d58d2f2..02482619dc 100644 --- a/src/packages/calendarcard/demos/h5/demo9.tsx +++ b/src/packages/calendarcard/demos/h5/demo9.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' const Demo9 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return ( { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/taro/demo10.tsx b/src/packages/calendarcard/demos/taro/demo10.tsx index 47f5baf754..581598dd1a 100644 --- a/src/packages/calendarcard/demos/taro/demo10.tsx +++ b/src/packages/calendarcard/demos/taro/demo10.tsx @@ -29,7 +29,7 @@ const Demo10 = () => { value={date} onChange={(d: CalendarCardValue) => setDate(d as Date)} /> - + diff --git a/src/packages/calendarcard/demos/taro/demo11.tsx b/src/packages/calendarcard/demos/taro/demo11.tsx index bf33f863a4..fd999bf1f9 100644 --- a/src/packages/calendarcard/demos/taro/demo11.tsx +++ b/src/packages/calendarcard/demos/taro/demo11.tsx @@ -10,12 +10,12 @@ const Demo11 = () => { const CalendarCardRef = useRef(null) return ( <> - + - diff --git a/src/packages/calendarcard/demos/taro/demo2.tsx b/src/packages/calendarcard/demos/taro/demo2.tsx index e82e4b3e42..ef21e17f2e 100644 --- a/src/packages/calendarcard/demos/taro/demo2.tsx +++ b/src/packages/calendarcard/demos/taro/demo2.tsx @@ -8,8 +8,7 @@ import { const Demo2 = () => { const [val, setVal] = useState(() => { - // return []; - return [new Date('2023-01-01'), new Date('2023-01-03')] + return [new Date('2023-01-01'), new Date('2025-01-03')] }) const onChange = (val: CalendarCardValue) => { setVal(val as Date[]) @@ -17,7 +16,7 @@ const Demo2 = () => { } return ( <> - + {val.map((d) => { return ( diff --git a/src/packages/calendarcard/demos/taro/demo3.tsx b/src/packages/calendarcard/demos/taro/demo3.tsx index d5d8ae294d..fedb68321f 100644 --- a/src/packages/calendarcard/demos/taro/demo3.tsx +++ b/src/packages/calendarcard/demos/taro/demo3.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' const Demo3 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/taro/demo4.tsx b/src/packages/calendarcard/demos/taro/demo4.tsx index 3e304b98d7..56717ed8b8 100644 --- a/src/packages/calendarcard/demos/taro/demo4.tsx +++ b/src/packages/calendarcard/demos/taro/demo4.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' const Demo4 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/taro/demo5.tsx b/src/packages/calendarcard/demos/taro/demo5.tsx index 6a9ceba936..783d29e7a5 100644 --- a/src/packages/calendarcard/demos/taro/demo5.tsx +++ b/src/packages/calendarcard/demos/taro/demo5.tsx @@ -2,9 +2,9 @@ import React, { useState } from 'react' import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' const Demo5 = () => { - const [date, setDate] = useState(() => new Date('2023-01-01')) + const [date, setDate] = useState(() => new Date('2025-01-01')) const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) setDate(val as Date) } return diff --git a/src/packages/calendarcard/demos/taro/demo7.tsx b/src/packages/calendarcard/demos/taro/demo7.tsx index 0d8e0df280..374aa84665 100644 --- a/src/packages/calendarcard/demos/taro/demo7.tsx +++ b/src/packages/calendarcard/demos/taro/demo7.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' const Demo7 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return } diff --git a/src/packages/calendarcard/demos/taro/demo8.tsx b/src/packages/calendarcard/demos/taro/demo8.tsx index 8c7ecdf5c8..d1030066a5 100644 --- a/src/packages/calendarcard/demos/taro/demo8.tsx +++ b/src/packages/calendarcard/demos/taro/demo8.tsx @@ -3,7 +3,7 @@ import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' const Demo8 = () => { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return ( { const onChange = (val: CalendarCardValue) => { - console.log(val) + console.log('onChange', val) } return ( - - - + + + + diff --git a/src/packages/checkbox/__test__/checkbox.spec.tsx b/src/packages/checkbox/__test__/checkbox.spec.tsx index e453285673..5978438a8a 100644 --- a/src/packages/checkbox/__test__/checkbox.spec.tsx +++ b/src/packages/checkbox/__test__/checkbox.spec.tsx @@ -1,6 +1,7 @@ import React, { useState } from 'react' import { fireEvent, render } from '@testing-library/react' import '@testing-library/jest-dom' +import { Check } from '@nutui/icons-react' import { Checkbox } from '../checkbox' import { CheckboxGroup } from '../../checkboxgroup/checkboxgroup' @@ -36,6 +37,32 @@ test('should props correctly', () => { expect(handleChange).not.toBeCalled() }) +test('round props correctly', () => { + const { container, queryByText, getByTestId } = render( + } + className="test" + label={ +
+
复选框
+
+ } + defaultChecked + /> + ) + expect( + container.querySelector('.nut-checkbox-button-icon-checked') + ).toBeInTheDocument() +}) + test('should fireEvent correctly', () => { const handleChange = vi.fn((value) => { value diff --git a/src/packages/checkbox/checkbox.scss b/src/packages/checkbox/checkbox.scss index 219df33a42..ebcb5b6b6d 100644 --- a/src/packages/checkbox/checkbox.scss +++ b/src/packages/checkbox/checkbox.scss @@ -7,13 +7,20 @@ &-icon { color: $color-text-disabled; font-size: $checkbox-icon-font-size; + flex-shrink: 0; + } + + &-icon-wrap { + font-size: 0px; + line-height: 0px; + border-radius: 50%; + box-shadow: 0px 2px 4px 0px rgba(255, 15, 35, 0.2); } &-icon-checked { color: $color-primary; transition-duration: 0.3s; transition-property: color, border-color, background-color; - box-shadow: 0px 2px 4px 0px #ff0f2333; border-radius: 50%; &.nut-checkbox-icon-disabled { @@ -25,6 +32,7 @@ margin-left: $checkbox-label-margin-left; font-size: $checkbox-label-font-size; color: $checkbox-label-color; + flex-shrink: 0; &-disabled { color: $color-text-disabled; @@ -59,6 +67,7 @@ position: relative; display: inline-flex; align-items: center; + min-height: 32px; padding: $checkbox-button-padding; font-size: $checkbox-button-font-size; background: $checkbox-button-background; @@ -92,29 +101,28 @@ display: flex; align-items: flex-end; justify-content: flex-end; + } - &-checked { - width: 12px; - height: 12px; - position: absolute; - color: $white; - top: 50%; - left: 50%; - transform: translate(-3px, -3px); - } - - // background-color: $color-primary; - .nut-icon { - position: absolute; - font-size: 12px; - width: 12px; - height: 12px; + .nut-checkbox-button-icon-checked { + width: 12px; + height: 12px; + position: absolute; + color: $white; + right: 0; + bottom: 0; + transform: translate(-1px, -2px); + } - &:before { - top: auto; - bottom: -22px; - margin-left: 6px; - } + .nut-icon { + position: absolute; + font-size: 12px; + width: 12px; + height: 12px; + + &:before { + top: auto; + bottom: -22px; + margin-left: 6px; } } } @@ -126,15 +134,13 @@ } &-list-item { - width: 100%; display: flex; - justify-content: flex-start; - align-items: center; + justify-content: space-between; padding: $checkbox-list-item-padding; border-top: $checkbox-list-item-border; .nut-checkbox-label { - flex: auto; + flex: none; } .nut-icon { diff --git a/src/packages/checkbox/checkbox.taro.tsx b/src/packages/checkbox/checkbox.taro.tsx index e6cbb18268..60fe1af40e 100644 --- a/src/packages/checkbox/checkbox.taro.tsx +++ b/src/packages/checkbox/checkbox.taro.tsx @@ -1,7 +1,7 @@ -import React, { ReactNode, useContext, useEffect, useState, FC } from 'react' +import React, { FC, ReactNode, useContext, useEffect, useState } from 'react' import { CheckDisabled, Checked, CheckNormal } from '@nutui/icons-react-taro' import classNames from 'classnames' -import { View } from '@tarojs/components' +import { CheckboxProps as TCheckboxProps, View } from '@tarojs/components' import { BasicComponent, ComponentDefaults } from '@/utils/typings' import Context from '../checkboxgroup/context' import { usePropsValue } from '@/hooks/use-props-value' @@ -37,8 +37,7 @@ const defaultProps = { const classPrefix = 'nut-checkbox' export const Checkbox: FC< - Partial & - Omit, 'onChange'> + Partial> > = (props) => { const { children } = { ...defaultProps, @@ -121,7 +120,9 @@ export const Checkbox: FC< return React.isValidElement(activeIcon) ? ( activeIcon ) : ( - + + + ) } const color = () => { @@ -174,9 +175,10 @@ export const Checkbox: FC< > {children || label} {innerChecked && activeIcon ? ( - + <> + {activeIcon} - + ) : null} ) @@ -184,10 +186,10 @@ export const Checkbox: FC< const renderListItem = () => { return ( - - {renderLabel()} + <> {renderIcon()} - + {renderLabel()} + ) } @@ -212,6 +214,7 @@ export const Checkbox: FC< classPrefix, { [`${classPrefix}-reverse`]: labelPosition === 'left', + 'nut-checkbox-list-item': ctx?.list, }, className )} diff --git a/src/packages/checkbox/checkbox.tsx b/src/packages/checkbox/checkbox.tsx index a92da8b34a..9a2e526965 100644 --- a/src/packages/checkbox/checkbox.tsx +++ b/src/packages/checkbox/checkbox.tsx @@ -126,7 +126,9 @@ export const Checkbox: FunctionComponent< return React.isValidElement(activeIcon) ? ( activeIcon ) : ( - +
+ +
) } const color = () => { @@ -179,9 +181,10 @@ export const Checkbox: FunctionComponent< > {children || label} {innerChecked && activeIcon ? ( -
+ <> +
{activeIcon} -
+ ) : null}
) @@ -189,10 +192,10 @@ export const Checkbox: FunctionComponent< const renderListItem = () => { return ( -
- {renderLabel()} + <> {renderIcon()} -
+ {renderLabel()} + ) } @@ -217,6 +220,7 @@ export const Checkbox: FunctionComponent< classPrefix, { [`${classPrefix}-reverse`]: labelPosition === 'left', + 'nut-checkbox-list-item': ctx?.list, }, className )} diff --git a/src/packages/checkbox/demos/h5/demo15.tsx b/src/packages/checkbox/demos/h5/demo15.tsx index 87fd46c2cb..2146cbe542 100644 --- a/src/packages/checkbox/demos/h5/demo15.tsx +++ b/src/packages/checkbox/demos/h5/demo15.tsx @@ -19,7 +19,7 @@ const Demo15 = () => { ]) return ( - + diff --git a/src/packages/checkbox/demos/taro/demo1.tsx b/src/packages/checkbox/demos/taro/demo1.tsx index d788202b18..69d4a9bb20 100644 --- a/src/packages/checkbox/demos/taro/demo1.tsx +++ b/src/packages/checkbox/demos/taro/demo1.tsx @@ -2,6 +2,7 @@ import React, { useState } from 'react' import { View } from '@tarojs/components' import { Check } from '@nutui/icons-react-taro' import { Cell, Checkbox } from '@nutui/nutui-react-taro' +import pxTransform from '@/utils/px-transform' const Demo1 = () => { const [checked] = useState(false) @@ -13,9 +14,11 @@ const Demo1 = () => { { alignItems: 'center', }} > - 复选框 - 描述信息 + + 复选框 + + + 描述信息 +
} defaultChecked={!checked} /> } - className="test" label={ { alignItems: 'center', }} > - 复选框 - 描述信息 + + 复选框 + + + 描述信息 + } defaultChecked={checked} /> { alignItems: 'center', }} > - 复选框 - 描述信息 + + 复选框 + + + 描述信息 +
} defaultChecked={checked} diff --git a/src/packages/checkbox/demos/taro/demo15.tsx b/src/packages/checkbox/demos/taro/demo15.tsx index 5e1e15776c..968c2e1796 100644 --- a/src/packages/checkbox/demos/taro/demo15.tsx +++ b/src/packages/checkbox/demos/taro/demo15.tsx @@ -1,13 +1,15 @@ import React from 'react' -import { Checkbox } from '@nutui/nutui-react-taro' +import { Cell, Checkbox } from '@nutui/nutui-react-taro' const Demo15 = () => { return ( - - - - - + + + + + + + ) } export default Demo15 diff --git a/src/packages/checkbox/demos/taro/demo6.tsx b/src/packages/checkbox/demos/taro/demo6.tsx index 37a829b484..dfbca870b4 100644 --- a/src/packages/checkbox/demos/taro/demo6.tsx +++ b/src/packages/checkbox/demos/taro/demo6.tsx @@ -8,6 +8,7 @@ const Demo6 = () => { @@ -16,6 +17,7 @@ const Demo6 = () => { diff --git a/src/packages/checkboxgroup/checkboxgroup.scss b/src/packages/checkboxgroup/checkboxgroup.scss index 47f6ceff8e..8ddaea06fc 100644 --- a/src/packages/checkboxgroup/checkboxgroup.scss +++ b/src/packages/checkboxgroup/checkboxgroup.scss @@ -42,26 +42,27 @@ } &-list { - width: 100%; + flex-grow: 1; border-bottom: $checkbox-list-item-border; border-top: $checkbox-list-item-border; padding: $checkbox-list-padding; background: $checkbox-list-background-color; + box-sizing: border-box; .nut-checkbox { margin-bottom: 5px; - &:first-child { - .nut-checkbox-list-item { - border-top: none; - } - } - &.nut-checkbox-reverse { - width: 100%; + width: auto; + flex-grow: 1; justify-content: space-between; } } + .nut-checkbox-list-item { + &:first-child { + border-top: none; + } + } } } diff --git a/src/packages/checkboxgroup/checkboxgroup.taro.tsx b/src/packages/checkboxgroup/checkboxgroup.taro.tsx index 086b087ef2..11942fbbfb 100644 --- a/src/packages/checkboxgroup/checkboxgroup.taro.tsx +++ b/src/packages/checkboxgroup/checkboxgroup.taro.tsx @@ -1,5 +1,6 @@ import React, { useCallback, useImperativeHandle } from 'react' import classNames from 'classnames' +import { View } from '@tarojs/components' import { RadioGroupOption } from '@/packages/radiogroup/types' import { Checkbox } from '../checkbox/checkbox.taro' import Context from './context' @@ -9,8 +10,9 @@ import { CheckboxLabelPosition, CheckboxLimit, } from '@/packages/checkboxgroup/types' +import { BasicComponent } from '@/utils/typings' -export interface CheckboxGroupProps { +export interface CheckboxGroupProps extends BasicComponent { disabled?: boolean value?: string[] defaultValue?: string[] @@ -37,11 +39,7 @@ const defaultProps = { const classPrefix = 'nut-checkboxgroup' export const CheckboxGroup = React.forwardRef( - ( - props: Partial & - Omit, 'onChange'>, - ref - ) => { + (props: Partial, ref) => { const { children, className, @@ -133,7 +131,7 @@ export const CheckboxGroup = React.forwardRef( }, }} > -
{options?.length ? renderOptions() : children} -
+ ) } diff --git a/src/packages/collapse/demo.taro.tsx b/src/packages/collapse/demo.taro.tsx index 5446b2fbd2..0a9fc4da4d 100644 --- a/src/packages/collapse/demo.taro.tsx +++ b/src/packages/collapse/demo.taro.tsx @@ -45,9 +45,7 @@ const CollapseDemo = () => { return ( <>
- + {translated.header1} diff --git a/src/packages/collapse/doc.en-US.md b/src/packages/collapse/doc.en-US.md index 5f99d9a566..cce867ac30 100644 --- a/src/packages/collapse/doc.en-US.md +++ b/src/packages/collapse/doc.en-US.md @@ -5,7 +5,7 @@ Place the content in multiple folded panels, and click the panel title to expand ## Import ```tsx -import { Collapse } from 'nutui-react' +import { Collapse } from '@nutui/nutui-react' ``` ## Code demonstration diff --git a/src/packages/collapse/doc.md b/src/packages/collapse/doc.md index 0cbe106fe4..71894472f9 100644 --- a/src/packages/collapse/doc.md +++ b/src/packages/collapse/doc.md @@ -5,7 +5,7 @@ ## 引入 ```tsx -import { Collapse } from 'nutui-react' +import { Collapse } from '@nutui/nutui-react' ``` ## 示例代码 diff --git a/src/packages/collapse/doc.taro.md b/src/packages/collapse/doc.taro.md index 148a732b4e..1e4f807f36 100644 --- a/src/packages/collapse/doc.taro.md +++ b/src/packages/collapse/doc.taro.md @@ -5,7 +5,7 @@ ## 引入 ```tsx -import { Collapse } from 'nutui-react-taro' +import { Collapse } from '@nutui/nutui-react-taro' ``` ## 示例代码 diff --git a/src/packages/collapse/doc.zh-TW.md b/src/packages/collapse/doc.zh-TW.md index 4ef4dee47f..13be92a927 100644 --- a/src/packages/collapse/doc.zh-TW.md +++ b/src/packages/collapse/doc.zh-TW.md @@ -5,7 +5,7 @@ ## 引入 ```tsx -import { Collapse } from 'nutui-react' +import { Collapse } from '@nutui/nutui-react' ``` ## 示例代碼 diff --git a/src/packages/configprovider/demo.taro.tsx b/src/packages/configprovider/demo.taro.tsx index af0200bed0..c395dd7ff6 100644 --- a/src/packages/configprovider/demo.taro.tsx +++ b/src/packages/configprovider/demo.taro.tsx @@ -8,26 +8,30 @@ import Demo3 from './demos/taro/demo3' import Demo4 from './demos/taro/demo4' import Demo5 from './demos/taro/demo5' import { useTranslate } from '@/sites/assets/locale/taro' +import { harmony } from '@/utils/platform-taro' const ConfigProviderDemo = () => { const [translated] = useTranslate({ 'zh-CN': { - title1: 'Textarea 默认', - title2: 'Textarea 英文', + title1: 'Textarea 默认-禁用', + title2: 'Textarea 英文-禁用', defaultTheme: '默认主题', - customTheme: '定制主题', + customTheme: `定制主题${harmony() ? '【暂不支持】' : ''}`, + RTL: harmony() ? 'RTL【暂不支持】' : 'RTL', }, 'zh-TW': { - title1: '默認用法', - title2: 'Textarea 英文', + title1: 'Textarea 默認用法-禁用', + title2: 'Textarea 英文-禁用', defaultTheme: '默認主題', - customTheme: '定制主題', + customTheme: `定制主題${harmony() ? '【暂不支持】' : ''}`, + RTL: harmony() ? 'RTL【暂不支持】' : 'RTL', }, 'en-US': { - title1: 'Textarea default', - title2: 'Textarea en-US', + title1: 'Textarea default + disabled', + title2: 'Textarea en-US + disabled', customTheme: 'Custom Theme', - defaultTheme: 'Default Theme', + defaultTheme: `Default Theme ${harmony() ? '[Pendding]' : ''}`, + RTL: harmony() ? 'RTL[Pendding]' : 'RTL', }, }) return ( @@ -42,7 +46,7 @@ const ConfigProviderDemo = () => { {translated.title2} - RTL + {translated.RTL} diff --git a/src/packages/configprovider/doc.en-US.md b/src/packages/configprovider/doc.en-US.md index 059e7dc5e8..91afea13a5 100644 --- a/src/packages/configprovider/doc.en-US.md +++ b/src/packages/configprovider/doc.en-US.md @@ -29,7 +29,7 @@ You can override these CSS variables directly in your code, and the styling of t } ``` -> @nutui/nutui-react comes with two theme files default:@nutui/nutui-react/dist/styles/theme-default.scss; dark:@nutui/nutui-react/dist/styles/theme-dark.scss; If you want to use the dark theme, you can import the dark theme file in your project. +> @nutui/nutui-react comes with two theme files default:@nutui/nutui-react/dist/styles/themes/default.css; dark:@nutui/nutui-react/dist/styles/themes/dark.css; If you want to use the dark theme, you can import the dark theme file in your project. #### Overrides via ConfigProvider diff --git a/src/packages/configprovider/doc.md b/src/packages/configprovider/doc.md index 4d2ba9d91e..ac92f3a18d 100644 --- a/src/packages/configprovider/doc.md +++ b/src/packages/configprovider/doc.md @@ -29,7 +29,7 @@ NutUI-React 可以通过 [CSS 变量](https://developer.mozilla.org/zh-CN/docs/W } ``` -> @nutui/nutui-react 中带了两个主题文件 默认主题:@nutui/nutui-react/dist/styles/theme-default.scss; 暗黑主题:@nutui/nutui-react/dist/styles/theme-dark.scss; 如果想使用暗黑主题,可以在项目中导入暗黑主题文件。 +> @nutui/nutui-react 中带了两个主题文件 默认主题:@nutui/nutui-react/dist/styles/themes/default.css; 暗黑主题:@nutui/nutui-react/dist/styles/themes/dark.css; 如果想使用暗黑主题,可以在项目中导入暗黑主题文件。 #### 通过 ConfigProvider 覆盖 diff --git a/src/packages/configprovider/doc.taro.md b/src/packages/configprovider/doc.taro.md index fa8ad1d5bf..e4b243fb5a 100644 --- a/src/packages/configprovider/doc.taro.md +++ b/src/packages/configprovider/doc.taro.md @@ -29,7 +29,7 @@ NutUI-React 可以通过 [CSS 变量](https://developer.mozilla.org/zh-CN/docs/W } ``` -> @nutui/nutui-react 中带了两个主题文件 默认主题:@nutui/nutui-react/dist/styles/theme-default.scss; 暗黑主题:@nutui/nutui-react/dist/styles/theme-dark.scss; 如果想使用暗黑主题,可以在项目中导入暗黑主题文件。 +> @nutui/nutui-react-taro 中带了两个主题文件 默认主题:@nutui/nutui-react-taro/dist/styles/themes/default.css; 暗黑主题:@nutui/nutui-react-taro/dist/styles/themes/dark.css; 如果想使用暗黑主题,可以在项目中导入暗黑主题文件。 #### 通过 ConfigProvider 覆盖 diff --git a/src/packages/configprovider/doc.zh-TW.md b/src/packages/configprovider/doc.zh-TW.md index db2158c672..63de7efd33 100644 --- a/src/packages/configprovider/doc.zh-TW.md +++ b/src/packages/configprovider/doc.zh-TW.md @@ -29,7 +29,7 @@ NutUI-React 可以通過 \[CSS 變數\]( @nutui/nutui-react 中帶了兩個主題檔 默認主題:@nutui/nutui-react/dist/styles/theme-default.scss; 暗黑主題:@nutui/nutui-react/dist/styles/theme-dark.scss; 如果想使用暗黑主題,可以在專案中導入暗黑主題檔。 +> @nutui/nutui-react 中帶了兩個主題檔 默認主題:@nutui/nutui-react/dist/styles/themes/default.css; 暗黑主題:@nutui/nutui-react/dist/styles/themes/dark.css; 如果想使用暗黑主題,可以在專案中導入暗黑主題檔。 #### 通過 ConfigProvider 覆蓋 diff --git a/src/packages/configprovider/types.ts b/src/packages/configprovider/types.ts index 5ba2151ea5..7bb03ddf50 100644 --- a/src/packages/configprovider/types.ts +++ b/src/packages/configprovider/types.ts @@ -199,6 +199,7 @@ export type NutCSSVariables = | 'nutuiInputBorderBottomWidth' | 'nutuiInputDisabledColor' | 'nutuiInputFontSize' + | 'nutuiInputLineheight' | 'nutuiInputBorderRadius' | 'nutuiInputColor' | 'nutuiInputBackgroundColor' diff --git a/src/packages/datepicker/datepicker.taro.tsx b/src/packages/datepicker/datepicker.taro.tsx index 4cf3c985eb..0824dd06ee 100644 --- a/src/packages/datepicker/datepicker.taro.tsx +++ b/src/packages/datepicker/datepicker.taro.tsx @@ -4,6 +4,8 @@ import React, { ForwardRefRenderFunction, useImperativeHandle, } from 'react' +import isEqual from 'react-fast-compare' +import classNames from 'classnames' import { View } from '@tarojs/components' import Picker from '@/packages/picker/index.taro' import { useConfig } from '@/packages/configprovider/index.taro' @@ -77,6 +79,9 @@ const InternalPicker: ForwardRefRenderFunction< seconds: lang.seconds, } + const classPrefix = 'nut-datepicker' + const cls = classNames(classPrefix, className) + const [pickerValue, setPickerValue] = useState([]) const [pickerOptions, setPickerOptions] = useState([]) @@ -111,9 +116,8 @@ const InternalPicker: ForwardRefRenderFunction< selectedOptions: PickerOptions, index: number ) => { - const isEqual = new Date(innerDate)?.getTime() === newDate?.getTime() if (newDate && isDate(newDate)) { - if (!isEqual) { + if (!isEqual(new Date(selectedDate)?.getTime(), newDate?.getTime())) { setInnerDate(formatValue(newDate, startDate, endDate)) } onChange?.( @@ -130,8 +134,7 @@ const InternalPicker: ForwardRefRenderFunction< const handleConfirmDateComparison = (newDate: Date | null) => { if (newDate && isDate(newDate)) { - const isEqual = new Date(selectedDate)?.getTime() === newDate?.getTime() - if (!isEqual) { + if (!isEqual(new Date(selectedDate)?.getTime(), newDate?.getTime())) { setSelectedDate(formatValue(newDate, startDate, endDate)) } } @@ -223,7 +226,7 @@ const InternalPicker: ForwardRefRenderFunction< return ( <> {typeof children === 'function' && children(selectedDate)} - + {pickerOptions.length && ( ([]) const [pickerOptions, setPickerOptions] = useState([]) @@ -109,9 +114,8 @@ const InternalPicker: ForwardRefRenderFunction< selectedOptions: PickerOptions, index: number ) => { - const isEqual = new Date(innerDate)?.getTime() === newDate?.getTime() if (newDate && isDate(newDate)) { - if (!isEqual) { + if (!isEqual(new Date(selectedDate)?.getTime(), newDate?.getTime())) { setInnerDate(formatValue(newDate, startDate, endDate)) } onChange?.( @@ -128,8 +132,7 @@ const InternalPicker: ForwardRefRenderFunction< const handleConfirmDateComparison = (newDate: Date | null) => { if (newDate && isDate(newDate)) { - const isEqual = new Date(selectedDate)?.getTime() === newDate?.getTime() - if (!isEqual) { + if (!isEqual(new Date(selectedDate)?.getTime(), newDate?.getTime())) { setSelectedDate(formatValue(newDate, startDate, endDate)) } } @@ -221,7 +224,7 @@ const InternalPicker: ForwardRefRenderFunction< return ( <> {typeof children === 'function' && children(selectedDate)} -
+
{pickerOptions.length && ( +
+
+
+
+
+ 2015 +
+
+ 2016 +
+
+ 2017 +
+
+ 2018 +
+
+ 2019 +
+
+ 2020 +
+
+ 2021 +
+
+ 2022 +
+
+ 2023 +
+
+ 2024 +
+
+ 2025 +
+
+ 2026 +
+
+ 2027 +
+
+ 2028 +
+
+ 2029 +
+
+ 2030 +
+
+ 2031 +
+
+ 2032 +
+
+ 2033 +
+
+ 2034 +
+
+ 2035 +
+
+
+
+
+
+ 01 +
+
+ 02 +
+
+ 03 +
+
+ 04 +
+
+ 05 +
+
+ 06 +
+
+ 07 +
+
+ 08 +
+
+ 09 +
+
+ 10 +
+
+ 11 +
+
+ 12 +
+
+
+
+
+
+ 01 +
+
+ 02 +
+
+ 03 +
+
+ 04 +
+
+ 05 +
+
+ 06 +
+
+ 07 +
+
+ 08 +
+
+ 09 +
+
+ 10 +
+
+ 11 +
+
+ 12 +
+
+ 13 +
+
+ 14 +
+
+ 15 +
+
+ 16 +
+
+ 17 +
+
+ 18 +
+
+ 19 +
+
+ 20 +
+
+ 21 +
+
+ 22 +
+
+ 23 +
+
+ 24 +
+
+ 25 +
+
+ 26 +
+
+ 27 +
+
+ 28 +
+
+ 29 +
+
+ 30 +
+
+ 31 +
+
+
+
+
+
+
+
+`; diff --git a/src/packages/datepickerview/__test__/datepickerview.spec.tsx b/src/packages/datepickerview/__test__/datepickerview.spec.tsx new file mode 100644 index 0000000000..1900e67242 --- /dev/null +++ b/src/packages/datepickerview/__test__/datepickerview.spec.tsx @@ -0,0 +1,153 @@ +import React from 'react' +import { render } from '@testing-library/react' +import '@testing-library/jest-dom' +import { DatePickerView } from '../datepickerview' + +const currentYear = new Date().getFullYear() +test('Show Chinese', async () => { + const { container } = render( + + ) + + expect( + container.querySelectorAll('.nut-pickerview-roller-item')[0] + ).toHaveTextContent('年') +}) + +test('Min date & Max date', async () => { + const { container, rerender } = render( + + ) + + const columns = container.querySelectorAll('.nut-pickerview-list') + const lists = columns[0].querySelectorAll('.nut-pickerview-roller-item-tiled') + expect(lists.length).toBe(3) + rerender( + + ) + rerender( + + ) + rerender( + + ) + rerender( + + ) + const formatter = (type: string, option: any) => { + switch (type) { + case 'year': + option.label += '' + break + case 'month': + option.label += 'M' + break + case 'day': + option.label += 'D' + break + case 'hour': + option.label += 'H' + break + case 'minute': + option.label += 'M' + break + default: + option.label += '' + } + return option + } + rerender( + + ) +}) + +test('Increment step setting', async () => { + const { container } = render( + + ) + + const columns = container.querySelectorAll('.nut-pickerview-list') + const lists = columns[1].querySelectorAll('.nut-pickerview-roller-item') + expect(lists.length).toBe(12) +}) + +test('Filter Time', async () => { + const filter = vi.fn((type, options) => { + if (type === 'hour') { + return options.filter((option: any) => Number(option.value) % 6 === 0) + } + return options + }) + + const { container } = render( + + ) + + const columns = container.querySelectorAll('.nut-pickerview-list') + const lists = columns[3].querySelectorAll('.nut-pickerview-roller-item') + expect(lists.length).toBe(4) +}) diff --git a/src/packages/datepickerview/datepickerview.scss b/src/packages/datepickerview/datepickerview.scss new file mode 100644 index 0000000000..cc903b87ef --- /dev/null +++ b/src/packages/datepickerview/datepickerview.scss @@ -0,0 +1,4 @@ +.nut-datepickerview { + display: flex; + width: 100%; +} diff --git a/src/packages/datepickerview/datepickerview.taro.tsx b/src/packages/datepickerview/datepickerview.taro.tsx new file mode 100644 index 0000000000..5fd29ae0c9 --- /dev/null +++ b/src/packages/datepickerview/datepickerview.taro.tsx @@ -0,0 +1,184 @@ +import React, { useState, useEffect, FunctionComponent } from 'react' +import classNames from 'classnames' +import { View } from '@tarojs/components' +import isEqual from 'react-fast-compare' +import { padZero } from '@/utils/pad-zero' +import PickerView, { + PickerOptions, + PickerValue, +} from '@/packages/pickerview/index.taro' +import { useConfig } from '@/packages/configprovider' +import { usePropsValue } from '@/hooks/use-props-value' +import { ComponentDefaults } from '@/utils/typings' +import { isDate } from '@/utils/is-date' +import { + formatValue, + generateDatePickerRanges, + generatePickerColumnWithCallback, + getDatePartValue, + handlePickerValueChange, +} from '@/packages/datepicker/utils' +import { DatePickerViewProps } from './types' + +const currentYear = new Date().getFullYear() + +const defaultProps = { + ...ComponentDefaults, + type: 'date', + showChinese: false, + threeDimensional: true, + minuteStep: 1, + startDate: new Date(currentYear - 10, 0, 1), + endDate: new Date(currentYear + 10, 11, 31), +} as DatePickerViewProps + +export const DatePickerView: FunctionComponent> = ( + props +) => { + const { + startDate, + endDate, + type, + showChinese, + minuteStep, + defaultValue, + formatter, + filter, + onChange, + threeDimensional, + className, + style, + } = { + ...defaultProps, + ...props, + } + + const classPrefix = 'nut-datepickerview' + const cls = classNames(classPrefix, className) + + const { locale } = useConfig() + const lang = locale.datepicker + + const zhCNType: { [key: string]: string } = { + day: lang.day, + year: lang.year, + month: lang.month, + hour: lang.hour, + minute: lang.min, + seconds: lang.seconds, + } + + const [pickerValue, setPickerValue] = useState([]) + const [pickerOptions, setPickerOptions] = useState([]) + + const [selectedDate, setSelectedDate] = usePropsValue({ + value: props.value && formatValue(props.value, startDate, endDate), + defaultValue: defaultValue && formatValue(defaultValue, startDate, endDate), + finalValue: 0, + }) + + const handleDateComparison = ( + newDate: Date | null, + selectedOptions: PickerOptions, + index: number + ) => { + if (newDate && isDate(newDate)) { + if (!isEqual(new Date(selectedDate)?.getTime(), newDate?.getTime())) { + setSelectedDate(formatValue(newDate, startDate, endDate)) + onChange?.( + selectedOptions, + [ + String(newDate.getFullYear()), + padZero(newDate.getMonth() + 1), + padZero(newDate.getDate()), + ], + index + ) + } + } + } + + const handleChange = ( + selectedOptions: PickerOptions, + selectedValue: PickerValue[], + index: number + ) => { + handlePickerValueChange( + selectedOptions, + selectedValue, + index, + type, + defaultValue || startDate || endDate, + handleDateComparison + ) + } + + const generatePickerColumns = (): PickerOptions[] => { + const dateRanges = generateDatePickerRanges( + type, + selectedDate, + startDate, + endDate + ) + + const columns = dateRanges.map((rangeConfig, columnIndex) => { + const { type: columnType, range } = rangeConfig + const selectedValue = getDatePartValue(columnType, selectedDate) + + const pickerColumn = generatePickerColumnWithCallback( + range[0], + range[1], + selectedValue, + columnType, + minuteStep, + (selectedIndex, options) => { + pickerValue[columnIndex] = options[selectedIndex]?.value + setPickerValue([...pickerValue]) + }, + showChinese, + zhCNType, + formatter + ) + + if (filter?.(columnType, pickerColumn)) { + return filter(columnType, pickerColumn) + } + + return pickerColumn + }) + + return columns || [] + } + + useEffect(() => { + if ( + !isEqual( + new Date(selectedDate)?.getTime(), + new Date(selectedDate)?.getTime() + ) + ) { + setSelectedDate(selectedDate) + } + }, [selectedDate]) + + useEffect(() => { + setPickerOptions(generatePickerColumns()) + }, [selectedDate, startDate, endDate]) + + return ( + + {pickerOptions.length && ( + { + handleChange(selectedOptions, value, index) + }} + threeDimensional={threeDimensional} + /> + )} + + ) +} + +DatePickerView.displayName = 'NutDatePickerView' diff --git a/src/packages/datepickerview/datepickerview.tsx b/src/packages/datepickerview/datepickerview.tsx new file mode 100644 index 0000000000..fb3742820e --- /dev/null +++ b/src/packages/datepickerview/datepickerview.tsx @@ -0,0 +1,183 @@ +import React, { useState, useEffect, FunctionComponent } from 'react' +import classNames from 'classnames' +import isEqual from 'react-fast-compare' +import { padZero } from '@/utils/pad-zero' +import PickerView, { + PickerOptions, + PickerValue, +} from '@/packages/pickerview/index' +import { useConfig } from '@/packages/configprovider' +import { usePropsValue } from '@/hooks/use-props-value' +import { ComponentDefaults } from '@/utils/typings' +import { isDate } from '@/utils/is-date' +import { + formatValue, + generateDatePickerRanges, + generatePickerColumnWithCallback, + getDatePartValue, + handlePickerValueChange, +} from '@/packages/datepicker/utils' +import { DatePickerViewProps } from './types' + +const currentYear = new Date().getFullYear() + +const defaultProps = { + ...ComponentDefaults, + type: 'date', + showChinese: false, + threeDimensional: true, + minuteStep: 1, + startDate: new Date(currentYear - 10, 0, 1), + endDate: new Date(currentYear + 10, 11, 31), +} as DatePickerViewProps + +export const DatePickerView: FunctionComponent> = ( + props +) => { + const { + startDate, + endDate, + type, + showChinese, + minuteStep, + defaultValue, + formatter, + filter, + onChange, + threeDimensional, + className, + style, + } = { + ...defaultProps, + ...props, + } + + const classPrefix = 'nut-datepickerview' + const cls = classNames(classPrefix, className) + + const { locale } = useConfig() + const lang = locale.datepicker + + const zhCNType: { [key: string]: string } = { + day: lang.day, + year: lang.year, + month: lang.month, + hour: lang.hour, + minute: lang.min, + seconds: lang.seconds, + } + + const [pickerValue, setPickerValue] = useState([]) + const [pickerOptions, setPickerOptions] = useState([]) + + const [selectedDate, setSelectedDate] = usePropsValue({ + value: props.value && formatValue(props.value, startDate, endDate), + defaultValue: defaultValue && formatValue(defaultValue, startDate, endDate), + finalValue: 0, + }) + + const handleDateComparison = ( + newDate: Date | null, + selectedOptions: PickerOptions, + index: number + ) => { + if (newDate && isDate(newDate)) { + if (!isEqual(new Date(selectedDate)?.getTime(), newDate?.getTime())) { + setSelectedDate(formatValue(newDate, startDate, endDate)) + onChange?.( + selectedOptions, + [ + String(newDate.getFullYear()), + padZero(newDate.getMonth() + 1), + padZero(newDate.getDate()), + ], + index + ) + } + } + } + + const handleChange = ( + selectedOptions: PickerOptions, + selectedValue: PickerValue[], + index: number + ) => { + handlePickerValueChange( + selectedOptions, + selectedValue, + index, + type, + defaultValue || startDate || endDate, + handleDateComparison + ) + } + + const generatePickerColumns = (): PickerOptions[] => { + const dateRanges = generateDatePickerRanges( + type, + selectedDate, + startDate, + endDate + ) + + const columns = dateRanges.map((rangeConfig, columnIndex) => { + const { type: columnType, range } = rangeConfig + const selectedValue = getDatePartValue(columnType, selectedDate) + + const pickerColumn = generatePickerColumnWithCallback( + range[0], + range[1], + selectedValue, + columnType, + minuteStep, + (selectedIndex, options) => { + pickerValue[columnIndex] = options[selectedIndex]?.value + setPickerValue([...pickerValue]) + }, + showChinese, + zhCNType, + formatter + ) + + if (filter?.(columnType, pickerColumn)) { + return filter(columnType, pickerColumn) + } + + return pickerColumn + }) + + return columns || [] + } + + useEffect(() => { + if ( + !isEqual( + new Date(selectedDate)?.getTime(), + new Date(selectedDate)?.getTime() + ) + ) { + setSelectedDate(selectedDate) + } + }, [selectedDate]) + + useEffect(() => { + setPickerOptions(generatePickerColumns()) + }, [selectedDate, startDate, endDate]) + + return ( +
+ {pickerOptions.length && ( + { + handleChange(selectedOptions, value, index) + }} + threeDimensional={threeDimensional} + /> + )} +
+ ) +} + +DatePickerView.displayName = 'NutDatePickerView' diff --git a/src/packages/datepickerview/demo.taro.tsx b/src/packages/datepickerview/demo.taro.tsx new file mode 100644 index 0000000000..3e4da160ee --- /dev/null +++ b/src/packages/datepickerview/demo.taro.tsx @@ -0,0 +1,38 @@ +import React from 'react' +import Taro from '@tarojs/taro' +import { ScrollView, View } from '@tarojs/components' +import { useTranslate } from '@/sites/assets/locale/taro' +import Header from '@/sites/components/header' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' + +const DatePickerViewDemo = () => { + const [translated] = useTranslate({ + 'zh-CN': { + basic: '选择日期', + mmdd: '选择月日', + }, + + 'zh-TW': { + basic: '選擇日期', + mmdd: '選擇月日', + }, + 'en-US': { + basic: 'Choose Date', + mmdd: 'Choose Month-Day', + }, + }) + return ( + <> +
+ + {translated.basic} + +

{translated.mmdd}

+ +
+ + ) +} + +export default DatePickerViewDemo diff --git a/src/packages/datepickerview/demo.tsx b/src/packages/datepickerview/demo.tsx new file mode 100644 index 0000000000..636354eb7c --- /dev/null +++ b/src/packages/datepickerview/demo.tsx @@ -0,0 +1,33 @@ +import React from 'react' +import { useTranslate } from '@/sites/assets/locale' +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' + +const DatePickerViewDemo = () => { + const [translated] = useTranslate({ + 'zh-CN': { + basic: '选择日期', + mmdd: '选择月日', + }, + 'zh-TW': { + basic: '選擇日期', + mmdd: '選擇月日', + }, + 'en-US': { + basic: 'Choose Date', + mmdd: 'Choose Month-Day', + }, + }) + + return ( + <> +
+

{translated.basic}

+ +

{translated.mmdd}

+ +
+ + ) +} +export default DatePickerViewDemo diff --git a/src/packages/datepickerview/demos/h5/demo1.tsx b/src/packages/datepickerview/demos/h5/demo1.tsx new file mode 100644 index 0000000000..0d023d57b5 --- /dev/null +++ b/src/packages/datepickerview/demos/h5/demo1.tsx @@ -0,0 +1,78 @@ +import React, { useState } from 'react' +import { + DatePickerView, + Cell, + PickerValue, + PickerOptions, + CellGroup, +} from '@nutui/nutui-react' +import isEqual from 'react-fast-compare' + +const useDatePicker = (initialDate: Date) => { + const defaultDateObj = { + year: initialDate.getFullYear(), + month: initialDate.getMonth() + 1, + day: initialDate.getDate(), + } + + const defaultDesc = `${defaultDateObj.year}年${defaultDateObj.month}月${defaultDateObj.day}日` + const defaultValue = Object.values(defaultDateObj).join('-') + + return { defaultDesc, defaultValue } +} + +const Demo1 = () => { + const defaultDate = new Date() + const { defaultDesc: defaultDesc1, defaultValue: defaultValue1 } = + useDatePicker(defaultDate) + const { defaultDesc: defaultDesc2, defaultValue: defaultValue2 } = + useDatePicker(defaultDate) + + const [desc1, setDesc1] = useState(defaultDesc1) + + const [value, setValue] = useState(defaultValue2) + const [desc2, setDesc2] = useState(defaultDesc2) + + const handleChange = + (setDesc: (desc: string) => void, setValue?: (value: string) => void) => + (selectedOptions: PickerOptions, value: PickerValue[]) => { + if (setValue) { + if (isEqual(value, ['2026', '02', '26'])) { + setValue('2026/03/22') + setDesc('2026年03月22日') + } else { + setValue(value.join('/')) + setDesc(selectedOptions.map((option) => option.label).join('')) + } + } else { + setDesc(selectedOptions.map((option) => option.label).join('')) + } + } + + return ( + <> + + + + + + + + + + + + + + ) +} + +export default Demo1 diff --git a/src/packages/datepickerview/demos/h5/demo2.tsx b/src/packages/datepickerview/demos/h5/demo2.tsx new file mode 100644 index 0000000000..2d627dc6b4 --- /dev/null +++ b/src/packages/datepickerview/demos/h5/demo2.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react' +import { + DatePickerView, + Cell, + PickerOptions, + CellGroup, +} from '@nutui/nutui-react' + +const Demo2 = () => { + const defaultValue = new Date() + const [desc, setDesc] = useState( + `${defaultValue.getMonth() + 1}-${defaultValue.getDate()}` + ) + + const onChange = (options: PickerOptions) => { + setDesc(options.map((option) => option.label).join('-')) + } + return ( + + + + onChange(selectedOptions)} + /> + + + ) +} +export default Demo2 diff --git a/src/packages/datepickerview/demos/taro/demo1.tsx b/src/packages/datepickerview/demos/taro/demo1.tsx new file mode 100644 index 0000000000..2ae37c258b --- /dev/null +++ b/src/packages/datepickerview/demos/taro/demo1.tsx @@ -0,0 +1,78 @@ +import React, { useState } from 'react' +import { + DatePickerView, + Cell, + PickerValue, + PickerOptions, + CellGroup, +} from '@nutui/nutui-react-taro' +import isEqual from 'react-fast-compare' + +const useDatePicker = (initialDate: Date) => { + const defaultDateObj = { + year: initialDate.getFullYear(), + month: initialDate.getMonth() + 1, + day: initialDate.getDate(), + } + + const defaultDesc = `${defaultDateObj.year}年${defaultDateObj.month}月${defaultDateObj.day}日` + const defaultValue = Object.values(defaultDateObj).join('-') + + return { defaultDesc, defaultValue } +} + +const Demo1 = () => { + const defaultDate = new Date() + const { defaultDesc: defaultDesc1, defaultValue: defaultValue1 } = + useDatePicker(defaultDate) + const { defaultDesc: defaultDesc2, defaultValue: defaultValue2 } = + useDatePicker(defaultDate) + + const [desc1, setDesc1] = useState(defaultDesc1) + + const [value, setValue] = useState(defaultValue2) + const [desc2, setDesc2] = useState(defaultDesc2) + + const handleChange = + (setDesc: (desc: string) => void, setValue?: (value: string) => void) => + (selectedOptions: PickerOptions, value: PickerValue[]) => { + if (setValue) { + if (isEqual(value, ['2026', '02', '26'])) { + setValue('2026/03/22') + setDesc('2026年03月22日') + } else { + setValue(value.join('/')) + setDesc(selectedOptions.map((option) => option.label).join('')) + } + } else { + setDesc(selectedOptions.map((option) => option.label).join('')) + } + } + + return ( + <> + + + + + + + + + + + + + + ) +} + +export default Demo1 diff --git a/src/packages/datepickerview/demos/taro/demo2.tsx b/src/packages/datepickerview/demos/taro/demo2.tsx new file mode 100644 index 0000000000..68c59725a0 --- /dev/null +++ b/src/packages/datepickerview/demos/taro/demo2.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react' +import { + DatePickerView, + Cell, + PickerOptions, + CellGroup, +} from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const defaultValue = new Date() + const [desc, setDesc] = useState( + `${defaultValue.getMonth() + 1}-${defaultValue.getDate()}` + ) + + const onChange = (options: PickerOptions) => { + setDesc(options.map((option) => option.label).join('-')) + } + return ( + + + + onChange(selectedOptions)} + /> + + + ) +} +export default Demo2 diff --git a/src/packages/datepickerview/doc.en-US.md b/src/packages/datepickerview/doc.en-US.md new file mode 100644 index 0000000000..03ab86f457 --- /dev/null +++ b/src/packages/datepickerview/doc.en-US.md @@ -0,0 +1,43 @@ +# DatePicker + +Used to select time, support date and time dimensions. + +## Import + +```tsx +import { DatePickerView } from '@nutui/nutui' +``` + +### Choose Date + +:::demo + + + +::: + +### Choose Month-Day + +:::demo + + + +::: + +## DatePicker + +### Props + +| Property | Description | Type | Default | +| --- | --- | --- | --- | +| defaultValue | Default date | `Date` | `null` | +| value | controlled date | `Date` | `null` | +| type | Can be set to date time year-month month-day datehour hour-minutes | `string` | `date` | +| minuteStep | Option minute step | `number` | `1` | +| showChinese | Show Chinese | `boolean` | `false` | +| startDate | Start date | `Date` | `Ten years ago on January 1` | +| endDate | End date | `Date` | `Ten years later on December 31` | +| formatter | Option text formatter | `(type: string, option: PickerOption) => PickerOption` | `-` | +| filter | Option filter | `(type: string, options: PickerOptions) => PickerOptions` | `-` | +| threeDimensional | Turn on 3D effects | `boolean` | `true` | +| onChange | Emitted when current option changed. | `(options, value, index) => void` | `-` | diff --git a/src/packages/datepickerview/doc.md b/src/packages/datepickerview/doc.md new file mode 100644 index 0000000000..fa1e52b734 --- /dev/null +++ b/src/packages/datepickerview/doc.md @@ -0,0 +1,47 @@ +# DatePickerView 日期选择器视图 + +时间选择器,支持日期、年月、时分等维度。 + +## 引入 + +```tsx +import { DatePickerView } from '@nutui/nutui' +``` + +## 示例代码 + +### 选择日期 + +:::demo + + + +::: + +### 选择月日 + +通过 type 属性来定义需要选择的时间类型。将 type 设置为 year-month 即可选择年份和月份,设置为 month-day 即可选择月份和日期。 + +:::demo + + + +::: + +## DatePicker + +### Props + +| 属性 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| defaultValue | 初始值 | `Date` | `null` | +| value | 受控 | `Date` | `null` | +| type | 类时间类型,可选值 date time year-month month-day datehour datetime hour-minutes | `string` | `date` | +| minuteStep | 分钟步进值 | `number` | `1` | +| showChinese | 每列是否展示中文 | `boolean` | `false` | +| startDate | 开始日期 | `Date` | `十年前` | +| endDate | 结束日期 | `Date` | `十年后` | +| formatter | 选项格式化函数 | `(type: string, option: PickerOption) => PickerOption` | `-` | +| filter | 选项过滤函数 | `(type: string, options: PickerOptions) => PickerOptions` | `-` | +| threeDimensional | 是否开启3D效果 | `boolean` | `true` | +| onChange | 选项改变时触发 | `(options, value, index) => void` | `-` | diff --git a/src/packages/datepickerview/doc.taro.md b/src/packages/datepickerview/doc.taro.md new file mode 100644 index 0000000000..e68ed5b298 --- /dev/null +++ b/src/packages/datepickerview/doc.taro.md @@ -0,0 +1,47 @@ +# DatePickerView 日期选择器视图 + +时间选择器,支持日期、年月、时分等维度。 + +## 引入 + +```tsx +import { DatePickerView } from '@nutui/nutui-taro' +``` + +## 示例代码 + +### 选择日期 + +:::demo + + + +::: + +### 选择月日 + +通过 type 属性来定义需要选择的时间类型。将 type 设置为 year-month 即可选择年份和月份,设置为 month-day 即可选择月份和日期。 + +:::demo + + + +::: + +## DatePicker + +### Props + +| 属性 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| defaultValue | 初始值 | `Date` | `null` | +| value | 受控 | `Date` | `null` | +| type | 类时间类型,可选值 date time year-month month-day datehour datetime hour-minutes | `string` | `date` | +| minuteStep | 分钟步进值 | `number` | `1` | +| showChinese | 每列是否展示中文 | `boolean` | `false` | +| startDate | 开始日期 | `Date` | `十年前` | +| endDate | 结束日期 | `Date` | `十年后` | +| formatter | 选项格式化函数 | `(type: string, option: PickerOption) => PickerOption` | `-` | +| filter | 选项过滤函数 | `(type: string, options: PickerOptions) => PickerOptions` | `-` | +| threeDimensional | 是否开启3D效果 | `boolean` | `true` | +| onChange | 选项改变时触发 | `(options, value, index) => void` | `-` | diff --git a/src/packages/datepickerview/doc.zh-TW.md b/src/packages/datepickerview/doc.zh-TW.md new file mode 100644 index 0000000000..e24427b108 --- /dev/null +++ b/src/packages/datepickerview/doc.zh-TW.md @@ -0,0 +1,47 @@ +# DatePickerView 日期选择器視圖 + +時間選擇器,支持日期、年月、時分等維度。 + +## 引入 + +```tsx +import { DatePickerView } from '@nutui/nutui' +``` + +## 示例代碼 + +### 選擇日期 + +:::demo + + + +::: + +### 選擇月日 + +通過 type 屬性來定義需要選擇的時間類型。將 type 設置為 year-month 即可選擇年份和月份,設置為 month-day 即可選擇月份和日期。 + +:::demo + + + +::: + +## DatePicker + +### Props + +| 屬性 | 說明 | 類型 | 默認值 | +| --- | --- | --- | --- | +| defaultValue | 初始值 | `Date` | `null` | +| value | 受控 | `Date` | `null` | +| type | 類時間類型,可選值 date time year-month month-day datehour datetime hour-minutes | `string` | `date` | +| minuteStep | 分鐘步進值 | `number` | `1` | +| showChinese | 每列是否展示中文 | `boolean` | `false` | +| startDate | 開始日期 | `Date` | `十年前` | +| endDate | 結束日期 | `Date` | `十年後` | +| formatter | 選項格式化函數 | `(type: string, option: PickerOption) => PickerOption` | `-` | +| filter | 選項過濾函數 | `(type: string, options: PickerOptions) => PickerOptions` | `-` | +| threeDimensional | 是否開啟3D效果 | `boolean` | `true` | +| onChange | 選項改變時觸發 | `(options, value, index) => void` | `-` | diff --git a/src/packages/datepickerview/index.taro.ts b/src/packages/datepickerview/index.taro.ts new file mode 100644 index 0000000000..0a801ae90f --- /dev/null +++ b/src/packages/datepickerview/index.taro.ts @@ -0,0 +1,4 @@ +import { DatePickerView } from './datepickerview.taro' + +export type { DatePickerViewProps } from './types' +export default DatePickerView diff --git a/src/packages/datepickerview/index.ts b/src/packages/datepickerview/index.ts new file mode 100644 index 0000000000..a200f20d23 --- /dev/null +++ b/src/packages/datepickerview/index.ts @@ -0,0 +1,4 @@ +import { DatePickerView } from './datepickerview' + +export type { DatePickerViewProps } from './types' +export default DatePickerView diff --git a/src/packages/datepickerview/types.ts b/src/packages/datepickerview/types.ts new file mode 100644 index 0000000000..3f6a8414e0 --- /dev/null +++ b/src/packages/datepickerview/types.ts @@ -0,0 +1,31 @@ +import { BasicComponent } from '@/utils/typings' +import { + PickerOptions, + PickerValue, + PickerOption, +} from '@/packages/pickerview/types' + +export interface DatePickerViewProps extends BasicComponent { + value?: Date + defaultValue?: Date + type: + | 'date' + | 'time' + | 'year-month' + | 'month-day' + | 'datehour' + | 'datetime' + | 'hour-minutes' + showChinese: boolean + minuteStep: number + startDate: Date + endDate: Date + threeDimensional: boolean + formatter: (type: string, option: PickerOption) => PickerOption + filter: (type: string, options: PickerOptions) => PickerOptions + onChange: ( + selectedOptions: PickerOptions, + selectedValue: PickerValue[], + columnIndex: number + ) => void +} diff --git a/src/packages/dialog/dialog.scss b/src/packages/dialog/dialog.scss index 0aed9a8a87..a4de948d00 100644 --- a/src/packages/dialog/dialog.scss +++ b/src/packages/dialog/dialog.scss @@ -8,7 +8,9 @@ align-items: center; width: $dialog-width; min-width: $dialog-min-width; + /* #ifndef harmony*/ max-height: 67%; + /* #endif */ min-height: $dialog-min-height; padding: $dialog-padding; box-sizing: border-box; @@ -26,7 +28,6 @@ -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); border-radius: $dialog-border-radius; - z-index: $dialog-z-index; animation-duration: 0.3s; } @@ -112,15 +113,10 @@ min-width: 100%; } - .nut-dialog-footer-ok { - order: 1; - } - .nut-dialog-footer-cancel { margin: 0; color: $color-text; font-size: $font-size-base; - order: 2; display: flex; justify-content: center; margin-top: $dialog-vertical-footer-ok-margin-top; diff --git a/src/packages/dialog/dialog.taro.tsx b/src/packages/dialog/dialog.taro.tsx index 9f14971362..e5c26ac1e0 100644 --- a/src/packages/dialog/dialog.taro.tsx +++ b/src/packages/dialog/dialog.taro.tsx @@ -17,6 +17,7 @@ import { import { useLockScrollTaro } from '@/hooks/use-lock-scoll-taro' import { mergeProps } from '@/utils/merge-props' import { defaultOverlayProps } from '@/packages/overlay/overlay.taro' +import { harmony } from '@/utils/platform-taro' const defaultProps: DialogBasicProps = { ...defaultOverlayProps, @@ -122,43 +123,68 @@ export const BaseDialog: FunctionComponent> & { const btnClass = hideCancelButton || hideConfirmButton ? `${classPrefix}-footer-block` : '' + const renderCancelOfVertical = () => { + return ( + !hideCancelButton && ( + handleCancel(e)} + > + {cancelText || locale.cancel} + + ) + ) + } + + const renderCancel = () => { + return ( + !hideCancelButton && ( + + ) + ) + } + + const renderConfirm = () => { + return ( + !hideConfirmButton && ( + + ) + ) + } + return ( footer || ( <> - {!hideCancelButton && - (footerDirection === 'vertical' ? ( - handleCancel(e)} - > - {cancelText || locale.cancel} - - ) : ( - - ))} - - {!hideConfirmButton && ( - + {footerDirection === 'vertical' ? ( + <> + {renderConfirm()} + {renderCancelOfVertical()} + + ) : ( + <> + {renderCancel()} + {renderConfirm()} + )} ) @@ -193,46 +219,50 @@ export const BaseDialog: FunctionComponent> & { } } + const renderContent = () => { + const contentZIndex = harmony() ? zIndex + 1 : zIndex // 解决harmony层级问题 + return ( + + + {content || children} + + + ) + } + return ( - <> - {overlay && ( - - )} - - - - {content || children} - - - + {overlay && ( + + )} + {renderContent()} ) } diff --git a/src/packages/dialog/dialog.tsx b/src/packages/dialog/dialog.tsx index c049d16c61..e1bb241f5d 100644 --- a/src/packages/dialog/dialog.tsx +++ b/src/packages/dialog/dialog.tsx @@ -93,6 +93,7 @@ const BaseDialog: ForwardRefRenderFunction< {!hideCancelButton && (footerDirection === 'vertical' ? (
handleCancel(e)} > diff --git a/src/packages/dialog/dialogwrap.tsx b/src/packages/dialog/dialogwrap.tsx index 1879928345..ff911faa19 100644 --- a/src/packages/dialog/dialogwrap.tsx +++ b/src/packages/dialog/dialogwrap.tsx @@ -62,7 +62,7 @@ export const DialogWrap: FunctionComponent< unmountOnExit appear > - + ) diff --git a/src/packages/dialog/doc.en-US.md b/src/packages/dialog/doc.en-US.md index ea0c40abd3..975dc2e905 100644 --- a/src/packages/dialog/doc.en-US.md +++ b/src/packages/dialog/doc.en-US.md @@ -145,7 +145,6 @@ The component provides the following CSS variables, which can be used to customi | Name | Description | Default | | --- | --- | --- | -| \--nutui-dialog-z-index | dialog z index | `$mask-content-z-index` | | \--nutui-dialog-width | dialog width | `295px` | | \--nutui-dialog-min-width | dialog min width | `240px` | | \--nutui-dialog-padding | dialog padding | `24px` | diff --git a/src/packages/dialog/doc.md b/src/packages/dialog/doc.md index e2491e58df..f338e1e8ee 100644 --- a/src/packages/dialog/doc.md +++ b/src/packages/dialog/doc.md @@ -145,7 +145,6 @@ export default function App() { | 名称 | 说明 | 默认值 | | --- | --- | --- | -| \--nutui-dialog-z-index | 对话框的z-index | `$mask-content-z-index` | | \--nutui-dialog-width | 对话框宽度 | `295px` | | \--nutui-dialog-min-width | 对话框最小宽度 | `240px` | | \--nutui-dialog-padding | 对话框padding | `24px` | diff --git a/src/packages/dialog/doc.taro.md b/src/packages/dialog/doc.taro.md index ef32c52a3f..fbc0fdc24a 100644 --- a/src/packages/dialog/doc.taro.md +++ b/src/packages/dialog/doc.taro.md @@ -125,7 +125,6 @@ DialogOptions 是 DialogProps 的子集,包含如下属性:title, content, f | 名称 | 说明 | 默认值 | | --- | --- | --- | -| \--nutui-dialog-z-index | 对话框的z-index | `$mask-content-z-index` | | \--nutui-dialog-width | 对话框宽度 | `295px` | | \--nutui-dialog-min-width | 对话框最小宽度 | `240px` | | \--nutui-dialog-padding | 对话框padding | `24px` | diff --git a/src/packages/dialog/doc.zh-TW.md b/src/packages/dialog/doc.zh-TW.md index fbde368995..c0e14354d5 100644 --- a/src/packages/dialog/doc.zh-TW.md +++ b/src/packages/dialog/doc.zh-TW.md @@ -145,7 +145,6 @@ export default function App() { | 名稱 | 說明 | 默認值 | | --- | --- | --- | -| \--nutui-dialog-z-index | 對話框的z-index | `$mask-content-z-index` | | \--nutui-dialog-width | 對話框寬度 | `295px` | | \--nutui-dialog-min-width | 對話框最小寬度 | `240px` | | \--nutui-dialog-padding | 對話框padding | `24px` | diff --git a/src/packages/icon/doc.en-US.md b/src/packages/icon/doc.en-US.md index 004d454fa9..29adf55f7c 100644 --- a/src/packages/icon/doc.en-US.md +++ b/src/packages/icon/doc.en-US.md @@ -172,6 +172,6 @@ The component provides the following CSS variables, which can be used to customi | Name | Description | Default | | --- | --- | --- | -| \--nutui-icon-height | height of iconfont container | `16px` | -| \--nutui-icon-width | width of iconfont container | `16px` | -| \--nutui-icon-line-height | iconfont line height | `16px` | +| \--nut-icon-height | height of iconfont container | `16px` | +| \--nut-icon-width | width of iconfont container | `16px` | +| \--nut-icon-line-height | iconfont line height | `16px` | diff --git a/src/packages/icon/doc.md b/src/packages/icon/doc.md index ca5f053a9b..0e5a8c51a6 100644 --- a/src/packages/icon/doc.md +++ b/src/packages/icon/doc.md @@ -171,6 +171,6 @@ export default App | 名称 | 说明 | 默认值 | | --- | --- | --- | -| \--nutui-icon-height | iconfont 容器的高度 | `16px` | -| \--nutui-icon-width | iconfont 容器的宽度 | `16px` | -| \--nutui-icon-line-height | iconfont 的行高 | `16px` | +| \--nut-icon-height | iconfont 容器的高度 | `16px` | +| \--nut-icon-width | iconfont 容器的宽度 | `16px` | +| \--nut-icon-line-height | iconfont 的行高 | `16px` | diff --git a/src/packages/icon/doc.taro.md b/src/packages/icon/doc.taro.md index def16d1a7e..c4b953e328 100644 --- a/src/packages/icon/doc.taro.md +++ b/src/packages/icon/doc.taro.md @@ -174,6 +174,6 @@ export default App | 名称 | 说明 | 默认值 | | --- | --- | --- | -| \--nutui-icon-height | iconfont 容器的高度 | `16px` | -| \--nutui-icon-width | iconfont 容器的宽度 | `16px` | -| \--nutui-icon-line-height | iconfont 的行高 | `16px` | +| \--nut-icon-height | iconfont 容器的高度 | `16px` | +| \--nut-icon-width | iconfont 容器的宽度 | `16px` | +| \--nut-icon-line-height | iconfont 的行高 | `16px` | diff --git a/src/packages/icon/doc.zh-TW.md b/src/packages/icon/doc.zh-TW.md index 3db64e15d1..a58b25d429 100644 --- a/src/packages/icon/doc.zh-TW.md +++ b/src/packages/icon/doc.zh-TW.md @@ -172,6 +172,6 @@ export default App | 名稱 | 說明 | 默認值 | | --- | --- | --- | -| \--nutui-icon-height | iconfont 容器的高度 | `16px` | -| \--nutui-icon-width | iconfont 容器的寬度 | `16px` | -| \--nutui-icon-line-height | iconfont 的行高 | `16px` | +| \--nut-icon-height | iconfont 容器的高度 | `16px` | +| \--nut-icon-width | iconfont 容器的寬度 | `16px` | +| \--nut-icon-line-height | iconfont 的行高 | `16px` | diff --git a/src/packages/indicator/demos/taro/demo1.tsx b/src/packages/indicator/demos/taro/demo1.tsx index 4dfb8e95c0..0d4565d431 100644 --- a/src/packages/indicator/demos/taro/demo1.tsx +++ b/src/packages/indicator/demos/taro/demo1.tsx @@ -11,7 +11,7 @@ const Demo1 = () => { - + diff --git a/src/packages/indicator/demos/taro/demo2.tsx b/src/packages/indicator/demos/taro/demo2.tsx index 38a62ac50c..986333dd2c 100644 --- a/src/packages/indicator/demos/taro/demo2.tsx +++ b/src/packages/indicator/demos/taro/demo2.tsx @@ -2,54 +2,28 @@ import React from 'react' import { Cell, Indicator } from '@nutui/nutui-react-taro' import { View } from '@tarojs/components' import pxTransform from '@/utils/px-transform' -import { harmony } from '@/utils/platform-taro' const Demo2 = () => { return ( - {5} + 5 diff --git a/src/packages/indicator/demos/taro/demo4.tsx b/src/packages/indicator/demos/taro/demo4.tsx index fa3b6c087a..70352c6353 100644 --- a/src/packages/indicator/demos/taro/demo4.tsx +++ b/src/packages/indicator/demos/taro/demo4.tsx @@ -1,7 +1,6 @@ import React from 'react' import { Cell, Indicator } from '@nutui/nutui-react-taro' import { View } from '@tarojs/components' -import { harmony } from '@/utils/platform-taro' import pxTransform from '@/utils/px-transform' const Demo4 = () => { @@ -10,47 +9,22 @@ const Demo4 = () => { - {5} + 5 { current={2} direction="vertical" style={{ - marginLeft: 50, + marginLeft: pxTransform(50), }} /> @@ -68,7 +42,7 @@ const Demo4 = () => { direction="vertical" type="slide" style={{ - marginLeft: '50px', + marginLeft: pxTransform(50), }} /> @@ -79,7 +53,7 @@ const Demo4 = () => { direction="vertical" color="white" style={{ - marginLeft: '50px', + marginLeft: pxTransform(50), }} /> diff --git a/src/packages/indicator/doc.taro.md b/src/packages/indicator/doc.taro.md index 7b0331f69b..c8ea0bbb19 100644 --- a/src/packages/indicator/doc.taro.md +++ b/src/packages/indicator/doc.taro.md @@ -22,7 +22,7 @@ import { Indicator } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -30,7 +30,7 @@ import { Indicator } from '@nutui/nutui-react-taro' :::demo - + ::: diff --git a/src/packages/indicator/indicator.scss b/src/packages/indicator/indicator.scss index 6272f82c1b..af9b0e90cc 100644 --- a/src/packages/indicator/indicator.scss +++ b/src/packages/indicator/indicator.scss @@ -17,17 +17,13 @@ height: $indicator-dot-size; border-radius: 50%; background-color: $color-border-disabled; - margin: 0 $indicator-dot-margin; + margin-left: $indicator-dot-margin; opacity: 0.4; - &:first-child { + &-0 { margin-left: 0px; } - &:last-child { - margin-right: 0px; - } - &-active { width: $indicator-dot-active-size; border-radius: $indicator-border-radius; @@ -66,6 +62,16 @@ height: 6px; } } + + &.nut-indicator-fixed-width { + &.nut-indicator-white { + .nut-indicator-dot { + &-active { + height: 6px; + } + } + } + } } } @@ -106,7 +112,6 @@ position: relative; box-sizing: content-box; background: rgba(255, 255, 255, 0.4); - border: 1px solid rgba(0, 0, 0, 0.06); opacity: 1; } @@ -118,6 +123,7 @@ background: rgba(255, 255, 255, 1); } } + &-dot { &-active { background: rgba(255, 255, 255, 1); @@ -141,16 +147,13 @@ .nut-indicator { &-dot { - margin: $indicator-dot-margin 0; + margin: 0px; + margin-top: $indicator-dot-margin; - &:first-child { + &-0 { margin-top: 0px; } - &:last-child { - margin-bottom: 0px; - } - &-active { width: $indicator-dot-size; height: $indicator-dot-active-size; @@ -171,12 +174,7 @@ [dir='rtl'] .nut-indicator, .nut-rtl .nut-indicator { &-dot { - &:first-child { - margin-left: $indicator-dot-margin; - margin-right: 0px; - } - - &:last-child { + &-0 { margin-right: $indicator-dot-margin; margin-left: 0px; } diff --git a/src/packages/indicator/indicator.taro.tsx b/src/packages/indicator/indicator.taro.tsx index 87b192b78f..4b04ca3a3c 100644 --- a/src/packages/indicator/indicator.taro.tsx +++ b/src/packages/indicator/indicator.taro.tsx @@ -1,6 +1,7 @@ import React, { FunctionComponent, ReactNode } from 'react' import classNames from 'classnames' import { View, ViewProps } from '@tarojs/components' +import pxTransform from '@/utils/px-transform' export type IndicatorType = 'anchor' | 'slide' export type IndicatorColor = 'primary' | 'white' @@ -53,11 +54,14 @@ export const Indicator: FunctionComponent< children || ( ) ) : ( - + ) ) } @@ -70,7 +74,7 @@ export const Indicator: FunctionComponent< return ( diff --git a/src/packages/input/doc.en-US.md b/src/packages/input/doc.en-US.md index fda7f39a48..959b34a349 100644 --- a/src/packages/input/doc.en-US.md +++ b/src/packages/input/doc.en-US.md @@ -163,4 +163,5 @@ The component provides the following CSS variables, which can be used to customi | \--nutui-input-background-color | background color | `$color-background-overlay` | | \--nutui-input-border-radius | border radius | `0` | | \--nutui-input-font-size | font size | `$font-size-base` | +| \--nutui-input-lineheight | line height | `$font-size-l` | | \--nutui-input-padding | input padding | `10px 25px` | diff --git a/src/packages/input/doc.md b/src/packages/input/doc.md index 742675b8e1..76959fe9fa 100644 --- a/src/packages/input/doc.md +++ b/src/packages/input/doc.md @@ -166,4 +166,5 @@ import { Input } from '@nutui/nutui-react' | \--nutui-input-background-color | 输入框背景颜色 | `$color-background-overlay` | | \--nutui-input-border-radius | 输入框圆角 | `0` | | \--nutui-input-font-size | 文本字号 | `$font-size-base` | +| \--nutui-input-lineheight | 行高 | `$font-size-l` | | \--nutui-input-padding | 输入框容器的内边距 | `10px 25px` | diff --git a/src/packages/input/doc.taro.md b/src/packages/input/doc.taro.md index ff83b33374..136769fd56 100644 --- a/src/packages/input/doc.taro.md +++ b/src/packages/input/doc.taro.md @@ -166,4 +166,5 @@ import { Input } from '@nutui/nutui-react-taro' | \--nutui-input-background-color | 输入框背景颜色 | `$color-background-overlay` | | \--nutui-input-border-radius | 输入框圆角 | `0` | | \--nutui-input-font-size | 文本字号 | `$font-size-base` | +| \--nutui-input-lineheight | 行高 | `$font-size-l` | | \--nutui-input-padding | 输入框容器的内边距 | `10px 25px` | diff --git a/src/packages/input/doc.zh-TW.md b/src/packages/input/doc.zh-TW.md index 735f068904..ba64fd7ad0 100644 --- a/src/packages/input/doc.zh-TW.md +++ b/src/packages/input/doc.zh-TW.md @@ -163,4 +163,5 @@ import { Input } from '@nutui/nutui-react' | \--nutui-input-background-color | 输入框背景颜色 | `$color-background-overlay` | | \--nutui-input-border-radius | 输入框圆角 | `0` | | \--nutui-input-font-size | 文本字号 | `$font-size-base` | +| \--nutui-input-lineheight | 行高 | `$font-size-l` | | \--nutui-input-padding | 输入框容器的内边距 | `10px 25px` | diff --git a/src/packages/input/input.scss b/src/packages/input/input.scss index e5ba903534..2bdc779e78 100644 --- a/src/packages/input/input.scss +++ b/src/packages/input/input.scss @@ -27,7 +27,7 @@ flex: 1; color: $color-title; font-size: $input-font-size; - line-height: $input-font-size; + line-height: $input-lineheight; padding: 0; border: 0; outline: 0 none; diff --git a/src/packages/loading/demos/taro/demo4.tsx b/src/packages/loading/demos/taro/demo4.tsx index 765485a0ad..4ac4ae8688 100644 --- a/src/packages/loading/demos/taro/demo4.tsx +++ b/src/packages/loading/demos/taro/demo4.tsx @@ -3,7 +3,7 @@ import { Loading, Cell } from '@nutui/nutui-react-taro' const Demo4 = () => { return ( - + 加载中 ) diff --git a/src/packages/loading/demos/taro/demo7.tsx b/src/packages/loading/demos/taro/demo7.tsx index 8bf6796868..71dc4b56d0 100644 --- a/src/packages/loading/demos/taro/demo7.tsx +++ b/src/packages/loading/demos/taro/demo7.tsx @@ -5,7 +5,7 @@ import { Star } from '@nutui/icons-react-taro' const Demo7 = () => { return ( - } /> + } /> ) } diff --git a/src/packages/loading/demos/taro/demo8.tsx b/src/packages/loading/demos/taro/demo8.tsx index 7caeb95fd2..15ad0e1c7d 100644 --- a/src/packages/loading/demos/taro/demo8.tsx +++ b/src/packages/loading/demos/taro/demo8.tsx @@ -1,6 +1,7 @@ import React, { useState } from 'react' import { View } from '@tarojs/components' import { Button, Cell, Loading, Overlay } from '@nutui/nutui-react-taro' +import pxTransform from '@/utils/px-transform' const Demo8 = () => { const [visible, setVisible] = useState(false) @@ -22,7 +23,11 @@ const Demo8 = () => { return ( <> - diff --git a/src/packages/loading/loading.scss b/src/packages/loading/loading.scss index 356d340396..92415b4f76 100644 --- a/src/packages/loading/loading.scss +++ b/src/packages/loading/loading.scss @@ -4,7 +4,7 @@ align-items: center; justify-content: center; - &.nut-loading-vertical { + &-vertical { flex-direction: column; } @@ -21,6 +21,7 @@ font-size: $loading-icon-size; } } + .nut-loading-lottie-box { width: 56px; height: 56px; @@ -29,10 +30,15 @@ } .nut-loading-text { - padding-top: $spacing-base; color: $loading-color; font-size: $loading-font-size; } + + &-vertical { + .nut-loading-text { + padding-top: $spacing-base; + } + } } @keyframes nut-loading-rotation { diff --git a/src/packages/navbar/demos/taro/demo1.tsx b/src/packages/navbar/demos/taro/demo1.tsx index 2494f5967f..5baad42e1a 100644 --- a/src/packages/navbar/demos/taro/demo1.tsx +++ b/src/packages/navbar/demos/taro/demo1.tsx @@ -13,15 +13,17 @@ const Demo1 = () => { alignItems: 'center', }, title: { + display: 'flex', + alignItems: 'center', + flex: 1, fontSize: pxTransform(18), fontWeight: 'bold', - lineHeight: pxTransform(26), }, description: { fontSize: pxTransform(12), fontWeight: 400, color: 'rgba(0,0,0, 0.5)', - lineHeight: pxTransform(16), + height: pxTransform(16), }, } return ( diff --git a/src/packages/navbar/demos/taro/demo2.tsx b/src/packages/navbar/demos/taro/demo2.tsx index 43dbc34304..26c56d10c6 100644 --- a/src/packages/navbar/demos/taro/demo2.tsx +++ b/src/packages/navbar/demos/taro/demo2.tsx @@ -13,15 +13,17 @@ const Demo2 = () => { alignItems: 'center', }, title: { + display: 'flex', + alignItems: 'center', + flex: 1, fontSize: pxTransform(18), fontWeight: 'bold', - lineHeight: pxTransform(26), }, description: { fontSize: pxTransform(12), fontWeight: 400, color: 'rgba(0,0,0, 0.5)', - lineHeight: pxTransform(16), + height: pxTransform(16), }, } return ( diff --git a/src/packages/numberkeyboard/numberkeyboard.taro.tsx b/src/packages/numberkeyboard/numberkeyboard.taro.tsx index 47f125f763..207805dca5 100644 --- a/src/packages/numberkeyboard/numberkeyboard.taro.tsx +++ b/src/packages/numberkeyboard/numberkeyboard.taro.tsx @@ -161,6 +161,7 @@ export const NumberKeyboard: FunctionComponent< onOverlayClick={onClose} onCloseIconClick={onClose} zIndex={9999} + style={{ minHeight: 0 }} overlayStyle={{ backgroundColor: 'rgba(0, 0, 0, 0)' }} > diff --git a/src/packages/overlay/demos/taro/demo3.tsx b/src/packages/overlay/demos/taro/demo3.tsx index e2f7105bd4..c1379a40f8 100644 --- a/src/packages/overlay/demos/taro/demo3.tsx +++ b/src/packages/overlay/demos/taro/demo3.tsx @@ -15,7 +15,6 @@ const Demo3 = () => { 设置动画时间 - { @@ -70,23 +69,17 @@ export const Overlay: FunctionComponent< ) return ( - <> - {!harmony() ? ( - - {renderOverlay()} - - ) : ( - innerVisible && renderOverlay() - )} - + + {renderOverlay()} + ) } diff --git a/src/packages/pickerview/doc.taro.md b/src/packages/pickerview/doc.taro.md index cc0bcb4e1d..de7507dc6f 100644 --- a/src/packages/pickerview/doc.taro.md +++ b/src/packages/pickerview/doc.taro.md @@ -14,7 +14,7 @@ import { PickerView } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -22,7 +22,7 @@ import { PickerView } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -30,7 +30,7 @@ import { PickerView } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -38,7 +38,7 @@ import { PickerView } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -46,7 +46,7 @@ import { PickerView } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -54,7 +54,7 @@ import { PickerView } from '@nutui/nutui-react-taro' :::demo - + ::: diff --git a/src/packages/popover/doc.taro.md b/src/packages/popover/doc.taro.md index 0eca49b5e2..a0a588c3d0 100644 --- a/src/packages/popover/doc.taro.md +++ b/src/packages/popover/doc.taro.md @@ -84,7 +84,7 @@ bottom-end # 底部右侧位置 :::demo - + ::: diff --git a/src/packages/popup/demos/h5/demo4.tsx b/src/packages/popup/demos/h5/demo4.tsx index fe289e1976..4d764481f5 100644 --- a/src/packages/popup/demos/h5/demo4.tsx +++ b/src/packages/popup/demos/h5/demo4.tsx @@ -42,6 +42,7 @@ const Demo4 = () => { position="bottom" onCloseIconClick={() => { console.log('onCloseIconClick') + setShowCloseIconStop(false) }} /> diff --git a/src/packages/popup/demos/taro/demo4.tsx b/src/packages/popup/demos/taro/demo4.tsx index 21b23d977b..f066d69d0a 100644 --- a/src/packages/popup/demos/taro/demo4.tsx +++ b/src/packages/popup/demos/taro/demo4.tsx @@ -42,6 +42,7 @@ const Demo4 = () => { position="bottom" onCloseIconClick={() => { console.log('onCloseIconClick') + setShowCloseIconStop(false) }} /> diff --git a/src/packages/popup/demos/taro/demo8.tsx b/src/packages/popup/demos/taro/demo8.tsx index c88e32c2fe..9a9253ab2b 100644 --- a/src/packages/popup/demos/taro/demo8.tsx +++ b/src/packages/popup/demos/taro/demo8.tsx @@ -18,6 +18,9 @@ const Demo8 = () => { title="禁止滚动穿透" position="bottom" lockScroll + onClose={() => { + setScrollPenetration(false) + }} > {Array.from({ length: 200 }) diff --git a/src/packages/popup/popup.scss b/src/packages/popup/popup.scss index b0d80ee228..51a352ad8a 100644 --- a/src/packages/popup/popup.scss +++ b/src/packages/popup/popup.scss @@ -143,7 +143,6 @@ opacity: 0; transform: scale(0.8); } - to { opacity: 1; transform: scale(1); @@ -155,7 +154,6 @@ opacity: 1; transform: scale(1); } - to { opacity: 0; transform: scale(0.8); @@ -178,7 +176,6 @@ from { opacity: 0; } - to { opacity: 1; } @@ -188,7 +185,6 @@ from { opacity: 1; } - to { opacity: 0; } @@ -211,6 +207,9 @@ from { transform: translate3d(0, -100%, 0); } + to { + transform: translate3d(0, 0%, 0); + } } @keyframes popup-slide-top-exit { @@ -238,6 +237,9 @@ from { transform: translate3d(100%, 0, 0); } + to { + transform: translate3d(0%, 0, 0); + } } @keyframes popup-slide-right-exit { @@ -265,6 +267,9 @@ from { transform: translate3d(0, 100%, 0); } + to { + transform: translate3d(0, 0%, 0); + } } @keyframes slide-bottom-exit { @@ -292,6 +297,9 @@ from { transform: translate3d(-100%, 0, 0); } + to { + transform: translate3d(0%, 0, 0); + } } @keyframes popup-slide-left-exit { diff --git a/src/packages/popup/popup.taro.tsx b/src/packages/popup/popup.taro.tsx index 760ba8daa1..e93f3df538 100644 --- a/src/packages/popup/popup.taro.tsx +++ b/src/packages/popup/popup.taro.tsx @@ -14,6 +14,7 @@ import { defaultOverlayProps } from '@/packages/overlay/overlay.taro' import Overlay from '@/packages/overlay/index.taro' import { useLockScrollTaro } from '@/hooks/use-lock-scoll-taro' import { PopupProps, Teleport } from './types.taro' +import { harmony } from '@/utils/platform-taro' const defaultProps: PopupProps = { ...defaultOverlayProps, @@ -84,7 +85,8 @@ export const Popup: FunctionComponent< const overlayStyles = { ...overlayStyle, } - const popStyles = { ...style, zIndex: index } + const contentZIndex = harmony() ? index + 1 : index // 解决harmony层级问题 + const popStyles = { zIndex: contentZIndex, ...style } const popClassName = classNames( classPrefix, { @@ -179,6 +181,23 @@ export const Popup: FunctionComponent< return renderCloseIcon() } } + + const renderContent = () => { + return ( + <> + + {renderTitle()} + {showChildren ? children : null} + + + ) + } const renderPop = () => { return ( - - {renderTitle()} - {showChildren ? children : null} - + {renderContent()} ) } @@ -208,7 +218,7 @@ export const Popup: FunctionComponent< const renderNode = () => { return ( <> - {overlay && ( + {overlay ? ( - )} + ) : null} {renderPop()} ) diff --git a/src/packages/radio/demos/h5/demo7.tsx b/src/packages/radio/demos/h5/demo7.tsx index a8c58125d7..51a8880bd6 100644 --- a/src/packages/radio/demos/h5/demo7.tsx +++ b/src/packages/radio/demos/h5/demo7.tsx @@ -6,7 +6,7 @@ const Demo7 = () => { 自定义尺寸 diff --git a/src/packages/radio/demos/taro/demo7.tsx b/src/packages/radio/demos/taro/demo7.tsx index 64a9bbbf85..d75a80ce67 100644 --- a/src/packages/radio/demos/taro/demo7.tsx +++ b/src/packages/radio/demos/taro/demo7.tsx @@ -6,7 +6,7 @@ const Demo7 = () => { 自定义尺寸 diff --git a/src/packages/radio/radio.scss b/src/packages/radio/radio.scss index 4471e64faa..c14481526c 100644 --- a/src/packages/radio/radio.scss +++ b/src/packages/radio/radio.scss @@ -5,11 +5,6 @@ align-items: center; flex-shrink: 0; - &:last-child { - margin-bottom: 0 !important; - margin-right: 0 !important; - } - &.nut-radio-reverse { flex-direction: row-reverse; @@ -56,6 +51,7 @@ &-button { display: inline-flex; align-items: center; + min-height: 30px; padding: $radio-button-padding; font-size: $radio-button-font-size; background: $radio-button-background; diff --git a/src/packages/radiogroup/radiogroup.scss b/src/packages/radiogroup/radiogroup.scss index 118c930340..661a6e775e 100644 --- a/src/packages/radiogroup/radiogroup.scss +++ b/src/packages/radiogroup/radiogroup.scss @@ -9,6 +9,10 @@ &-button { background-color: $radio-button-background; } + + &:last-child { + margin: 0; + } } &-vertical { @@ -30,9 +34,9 @@ } &-horizontal { - .nut-radio { - display: inline-flex; + display: flex; + .nut-radio { &-button { border: 1px solid $white; } @@ -41,6 +45,10 @@ border: $radio-button-active-border; background-color: $color-primary-light-pressed; } + + &:last-child { + margin: 0 $radiogroup-radio-margin $radiogroup-radio-margin-bottom 0; + } } } diff --git a/src/packages/searchbar/demos/taro/demo3.tsx b/src/packages/searchbar/demos/taro/demo3.tsx index 1cbe893f18..d1aa20bcb2 100644 --- a/src/packages/searchbar/demos/taro/demo3.tsx +++ b/src/packages/searchbar/demos/taro/demo3.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react' -import { SearchBar, ConfigProvider, Toast } from '@nutui/nutui-react-taro' +import { ConfigProvider, SearchBar, Toast } from '@nutui/nutui-react-taro' const Demo3 = () => { const [show, SetShow] = useState(false) diff --git a/src/packages/searchbar/demos/taro/demo5.tsx b/src/packages/searchbar/demos/taro/demo5.tsx index 2f1c4f906d..a3e10a597f 100644 --- a/src/packages/searchbar/demos/taro/demo5.tsx +++ b/src/packages/searchbar/demos/taro/demo5.tsx @@ -2,9 +2,9 @@ import React from 'react' import { SearchBar } from '@nutui/nutui-react-taro' import { ArrowLeft, - Photograph, - More, Close, + More, + Photograph, Star, } from '@nutui/icons-react-taro' diff --git a/src/packages/searchbar/searchbar.taro.tsx b/src/packages/searchbar/searchbar.taro.tsx index 76d9ec5c93..f6bacfe201 100644 --- a/src/packages/searchbar/searchbar.taro.tsx +++ b/src/packages/searchbar/searchbar.taro.tsx @@ -115,13 +115,10 @@ export const SearchBar: FunctionComponent< clearable ? `${classPrefix}-input-clear` : '' }`} ref={searchRef} - style={style} value={value || ''} placeholder={placeholder || locale.placeholder} disabled={disabled || readOnly} maxlength={maxLength} - // @ts-ignore - // onKeyDown={onKeypress} onInput={onInput} onFocus={focus} onBlur={blur} diff --git a/src/packages/searchbar/searchbar.tsx b/src/packages/searchbar/searchbar.tsx index 9901b7b5f9..5d30ffd976 100644 --- a/src/packages/searchbar/searchbar.tsx +++ b/src/packages/searchbar/searchbar.tsx @@ -114,7 +114,6 @@ export const SearchBar: FunctionComponent< clearable ? `${classPrefix}-input-clear` : '' }`} ref={searchRef} - style={style} value={value || ''} placeholder={placeholder || locale.placeholder} disabled={disabled} diff --git a/src/packages/segmented/doc.taro.md b/src/packages/segmented/doc.taro.md index 1339cb5266..baa117d2db 100644 --- a/src/packages/segmented/doc.taro.md +++ b/src/packages/segmented/doc.taro.md @@ -14,7 +14,7 @@ import { Segmented } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -22,7 +22,7 @@ import { Segmented } from '@nutui/nutui-react-taro' :::demo - + ::: @@ -30,7 +30,7 @@ import { Segmented } from '@nutui/nutui-react-taro' :::demo - + ::: diff --git a/src/packages/space/doc.md b/src/packages/space/doc.md index beca0938cf..a6cc915ff1 100644 --- a/src/packages/space/doc.md +++ b/src/packages/space/doc.md @@ -75,7 +75,7 @@ import { Space } from '@nutui/nutui-react' ### 样式变量 -组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/components/config-provider)。 +组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/component/configprovider)。 | 名称 | 默认值 | 描述 | | --- | --- | --- | diff --git a/src/packages/space/doc.taro.md b/src/packages/space/doc.taro.md index 19ae033c38..3ec527ca1a 100644 --- a/src/packages/space/doc.taro.md +++ b/src/packages/space/doc.taro.md @@ -75,7 +75,7 @@ import { Space } from '@nutui/nutui-react-taro' ### 样式变量 -组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/components/config-provider)。 +组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/component/configprovider)。 | 名称 | 默认值 | 描述 | | --- | --- | --- | diff --git a/src/packages/sticky/doc.taro.md b/src/packages/sticky/doc.taro.md index 63a2e5c844..cc8dbdaf52 100644 --- a/src/packages/sticky/doc.taro.md +++ b/src/packages/sticky/doc.taro.md @@ -2,7 +2,7 @@ 效果同 css 中的 position: sticky,对低端浏览器可使用其做兼容 -> 支持吸顶、吸底、容器内吸顶效果,也可以使用官方sticky组件 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/extended/component-plus/sticky.html +> 支持吸顶、吸底、容器内吸顶效果,也可以使用官方[sticky组件](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/extended/component-plus/sticky.html) ## 引入 diff --git a/src/packages/textarea/demo.taro.tsx b/src/packages/textarea/demo.taro.tsx index 5d4a9027a5..32f0e0c096 100644 --- a/src/packages/textarea/demo.taro.tsx +++ b/src/packages/textarea/demo.taro.tsx @@ -94,7 +94,7 @@ const TextAreaDemo = () => { {translated.textAlign} -

{translated.error}

+ {translated.error}
diff --git a/src/packages/textarea/demos/h5/demo1.tsx b/src/packages/textarea/demos/h5/demo1.tsx index 3e32704ca2..81789ed6a9 100644 --- a/src/packages/textarea/demos/h5/demo1.tsx +++ b/src/packages/textarea/demos/h5/demo1.tsx @@ -1,7 +1,7 @@ import React from 'react' import { Space, TextArea } from '@nutui/nutui-react' -const Demo1 = () => { +const Demo = () => { return (