{"_id":"@bingtang-rn/react-native-calendario","_rev":"2-ac2d4641a1d5bc028386350fb8ee8c70","name":"@bingtang-rn/react-native-calendario","dist-tags":{"latest":"3.5.3"},"versions":{"3.5.2":{"name":"@bingtang-rn/react-native-calendario","version":"3.5.2","keywords":["react-native","harmony","harmonyos","calendar","react-native-calendario"],"license":"MIT","_id":"@bingtang-rn/react-native-calendario@3.5.2","maintainers":[{"name":"luyizouyuan","email":"189605613@qq.com"}],"homepage":"https://gitcode.com/rn_ohos_plugin/react_native_calendario","dist":{"shasum":"5834147a9e1c2811efd7a1e3b4fa52ba39e1af22","tarball":"https://registry.npmjs.org/@bingtang-rn/react-native-calendario/-/react-native-calendario-3.5.2.tgz","fileCount":19,"integrity":"sha512-48uwB2flBjHOnwUghjNbmIwljPS23SdSnyJSiWJJRQtpHvql5/BA0T5XvWW18bQFu5arsRjTahtKdobUJ6DZ9w==","signatures":[{"sig":"MEQCIBVnX1sjCMRXt6zS2gMH0iX6w/a9CAOZQJV4Wv2uw4BQAiBfZcrVQDAe4n2BFQIGAJyANJlEHPl5ii02GkWOyix20Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42583},"main":"src/index.tsx","types":"src/index.tsx","module":"src/index.tsx","engines":{"node":">=18"},"gitHead":"7191e5a7860f81d767cc9d39a5a9ce76cf3bdfdf","harmony":{"alias":"react-native-calendario"},"private":false,"scripts":{},"_npmUser":{"name":"luyizouyuan","email":"189605613@qq.com"},"repository":{"url":"https://gitcode.com/rn_ohos_plugin/react_native_calendario","type":"git"},"_npmVersion":"11.12.1","description":"适配鸿蒙版本，提供react_native_calendario组件。","directories":{},"_nodeVersion":"24.15.0","dependencies":{"moment":"2.30.1","react-native-month":"1.6.3"},"react-native":"src/index.tsx","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.3","metro":"^0.81.0","react":"18.2.0","typescript":"5.0.4","@types/react":"18.2.79","react-native":"0.72.5","@react-native/typescript-config":"0.79.5","@react-native-oh/react-native-harmony-cli":"^0.77.50"},"peerDependencies":{"react-native":">=0.72"},"_npmOperationalInternal":{"tmp":"tmp/react-native-calendario_3.5.2_1785417782989_0.39410844332983763","host":"s3://npm-registry-packages-npm-production"}},"3.5.3":{"_id":"@bingtang-rn/react-native-calendario@3.5.3","dist":{"shasum":"bc7af6bf4cf183a6d0f3f582b95abbc398ae4eea","tarball":"https://registry.npmjs.org/@bingtang-rn/react-native-calendario/-/react-native-calendario-3.5.3.tgz","fileCount":19,"integrity":"sha512-r1PDQlySdTg6NSFdigipuYC+Ti8oqp2phaE6hNQrNeVQ1zSU63BbgRMr4k3EPn1FzwDD05unhlfxe5IUQaLVoA==","signatures":[{"sig":"MEYCIQDiR4FC2uWU6ayY8RwIHDtZMG6Qzth2ukxyS7SxE0vprAIhAIdvqpdNo+DL4ahfnsBBNRvG95Ehn3iNnY5mr0J9D9Bi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBZMeyA2QJkMLHrliJQJlSsNbTbpekrXnwFzWle5ZlePAiATIYH6TpGJN7NDfCFlbE0wgbRoSLX+u1UTDF0ZFqxWgA=="}],"unpackedSize":42838},"main":"src/index.tsx","name":"@bingtang-rn/react-native-calendario","_from":"file:bingtang-rn-react-native-calendario-3.5.3.tgz","types":"src/index.tsx","module":"src/index.tsx","engines":{"node":">=18"},"harmony":{"alias":"react-native-calendario"},"license":"MIT","private":false,"scripts":{},"version":"3.5.3","_npmUser":{"name":"luyizouyuan","email":"189605613@qq.com"},"homepage":"https://gitcode.com/rn_ohos_plugin/react_native_calendario","keywords":["react-native","harmony","harmonyos","calendar","react-native-calendario"],"_resolved":"D:\\code\\rn\\npm\\batch\\react_native_calendario\\bingtang-rn-react-native-calendario-3.5.3.tgz","_integrity":"sha512-r1PDQlySdTg6NSFdigipuYC+Ti8oqp2phaE6hNQrNeVQ1zSU63BbgRMr4k3EPn1FzwDD05unhlfxe5IUQaLVoA==","repository":{"url":"https://gitcode.com/rn_ohos_plugin/react_native_calendario","type":"git"},"_npmVersion":"11.12.1","description":"适配鸿蒙版本，提供react_native_calendario组件。","directories":{},"maintainers":[{"name":"luyizouyuan","email":"189605613@qq.com"}],"_nodeVersion":"24.15.0","dependencies":{"moment":"2.30.1","react-native-month":"1.6.3"},"react-native":"src/index.tsx","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.3","metro":"^0.81.0","react":"18.2.0","typescript":"5.0.4","@types/react":"18.2.79","react-native":"0.72.5","@react-native/typescript-config":"0.79.5","@react-native-oh/react-native-harmony-cli":"^0.77.50"},"peerDependencies":{"react-native":">=0.72"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-calendario_3.5.3_1790568700237_0.8105780841355732"}}},"time":{"created":"2026-07-30T13:23:02.805Z","modified":"2026-09-28T04:11:40.535Z","3.5.2":"2026-07-30T13:23:03.132Z","3.5.3":"2026-09-28T04:11:40.326Z"},"license":"MIT","homepage":"https://gitcode.com/rn_ohos_plugin/react_native_calendario","keywords":["react-native","harmony","harmonyos","calendar","react-native-calendario"],"repository":{"url":"https://gitcode.com/rn_ohos_plugin/react_native_calendario","type":"git"},"description":"适配鸿蒙版本，提供react_native_calendario组件。","maintainers":[{"name":"luyizouyuan","email":"189605613@qq.com"}],"readme":"# @bingtang-rn/react-native-calendario for HarmonyOS\r\n\r\n本项目基于 [react-native-calendario](https://github.com/maggialejandro/react-native-calendario) 开发，为 React Native 鸿蒙（OpenHarmony）适配版本。如果在使用过程中有任何问题，可以在GitCode提Issue，会及时跟进。issue地址：[issues](https://gitcode.com/rn_ohos_plugin/react_native_calendario/issues)。\r\n\r\n## 版本对应关系\r\n\r\n| 鸿蒙适配包版本 | 原始库版本 | 支持 RN 版本 | Autolink | 编译 API 版本 |\r\n| ------------ | ---------- | ------------ | -------- | ------------- |\r\n| 见发布记录 | 3.5.2 | 0.72+ | 否（js-only） | API17+ |\r\n\r\n## 安装\r\n\r\n```bash\r\nnpm install @bingtang-rn/react-native-calendario\r\n```\r\n\r\n## 使用\r\n\r\n```tsx\r\nimport { Calendar } from 'react-native-calendario';\r\n\r\n// Range selection\r\n<Calendar\r\n  onPress={(date) => console.log(date)}\r\n  startDate={new Date('2025-07-05')}\r\n  endDate={new Date('2025-07-18')}\r\n  startingMonth=\"2025-06-01\"\r\n  numberOfMonths={12}\r\n  firstDayMonday\r\n  theme={{ activeDayContainerStyle: { backgroundColor: '#6d95da' } }}\r\n/>\r\n\r\n// Single day selection\r\n<Calendar\r\n  onPress={(date) => console.log(date)}\r\n  startDate={new Date()}\r\n  disableRange\r\n  startingMonth=\"2025-06-01\"\r\n/>\r\n```\r\n\r\n> import 时使用原库名 'react-native-calendario'，而非鸿蒙包名。RNOH 通过 harmony.alias 自动映射。\r\n\r\n**平台差异**：\r\n- 本库为纯 JS 组件库，无原生模块依赖，HarmonyOS 上行为与其他平台一致。\r\n- Platform.OS === 'web' 分支在鸿蒙端不会命中，走原生 FlatList 虚拟化路径。\r\n\r\n**权限要求**：\r\n- 无需任何系统权限。\r\n\r\n## Link\r\n\r\n| 版本 | 是否支持 Autolink |\r\n|------|------------------|\r\n| 当前版本 | 否（js-only，无需原生注册） |\r\n\r\n本库为 js-only 类型，无原生 TurboModule/Fabric 组件，无需原生 Package 注册。通过 ``harmony.alias`` 将 `react-native-calendario` 的 import 重定向到 `@bingtang-rn/react-native-calendario`，由 Metro bundler 在 JS 层完成映射。\r\n\r\n<details>\r\n<summary>Manual Link 配置</summary>\r\n\r\n> **说明**：本库为 js-only 类型，无需原生 Package 注册。以下为确认 alias 配置正确。\r\n\r\n### 确认 harmony.alias\r\n\r\n在 `ohos/package.json` 中确认 `harmony.alias` 配置：\r\n\r\n```json\r\n{\r\n  \"harmony\": {\r\n    \"alias\": \"react-native-calendario\"\r\n  }\r\n}\r\n```\r\n\r\n此配置由 scaffold 自动生成，确保 Metro 将 `react-native-calendario` 的 import 重定向到 `@bingtang-rn/react-native-calendario`。\r\n\r\n</details>\r\n\r\n## 属性 / API\r\n\r\n| API | 描述 | 参数 | 返回值 | HarmonyOS 支持 |\r\n|-----|------|------|--------|----------------|\r\n| Calendar | 日历月份滚动列表组件 | CalendarProps | JSX.Element | 完全支持 |\r\n| onPress | 日期点击回调 | date: Date | void | 完全支持 |\r\n| startDate | 选中起始日期 | Date | — | 完全支持 |\r\n| endDate | 选中结束日期 | Date | — | 完全支持 |\r\n| startingMonth | 首个渲染月份 | string | — | 完全支持 |\r\n| numberOfMonths | 渲染月份数 | number | — | 完全支持 |\r\n| minDate | 最小可选日期 | Date | — | 完全支持 |\r\n| maxDate | 最大可选日期 | Date | — | 完全支持 |\r\n| disableRange | 禁用范围选择 | boolean | — | 完全支持 |\r\n| firstDayMonday | 周一为每周第一天 | boolean | — | 完全支持 |\r\n| locale | 语言设置 | LocaleType | — | 完全支持 |\r\n| theme | 自定义样式 | ThemeType | — | 完全支持 |\r\n| monthHeight | 月份行高 | number | — | 完全支持 |\r\n| markedDays | 日期标记（多圆点） | MarkedDays | — | 完全支持 |\r\n| disabledDays | 禁用日期 | object | — | 完全支持 |\r\n| showWeekdays | 显示星期列 | boolean | — | 完全支持 |\r\n| showMonthTitle | 显示月份标题 | boolean | — | 完全支持 |\r\n| dayNames | 自定义星期名 | string[] | — | 完全支持 |\r\n| monthNames | 自定义月份名 | string[] | — | 完全支持 |\r\n| disableOffsetDays | 隐藏非当月日期 | boolean | — | 完全支持 |\r\n| renderDayContent | 自定义日期内容渲染 | function | — | 完全支持 |\r\n| renderAllMonths | Web 端渲染全部月份 | boolean | — | 部分支持（Web专用，鸿蒙端无效） |\r\n| calculateMonthHeightDynamically | 动态计算月份高度 | boolean | — | 完全支持 |\r\n| initialListSize | FlatList initialNumToRender | number | — | 完全支持 |\r\n| initialScrollIndex | 初始滚动位置 | number | — | 完全支持 |\r\n| viewableItemsChanged | 可见项变化回调 | function | — | 完全支持 |\r\n| viewableRangeOffset | 可见范围偏移量 | number | — | 完全支持 |\r\n| contentContainerStyle | FlatList 内容容器样式 | StyleProp | — | 完全支持 |\r\n| showsVerticalScrollIndicator | 显示垂直滚动条 | boolean | — | 完全支持 |\r\n| RangeType | 范围选择类型 | type | — | 完全支持 |\r\n| LocaleType | 语言枚举 | type | — | 完全支持 |\r\n| ThemeType | 主题类型 | type | — | 完全支持 |\r\n| DayType | 日期类型 | type | — | 完全支持 |\r\n| ViewableItemsType | 可见项类型 | type | — | 完全支持 |\r\n| CalendarProps | 组件 Props 类型 | type | — | 完全支持 |\r\n\r\n### 平台差异\r\n- renderAllMonths：Web 专用属性，在 HarmonyOS 上无效。鸿蒙端使用 FlatList 虚拟化列表渲染月份。\r\n- Platform.OS 判断：源码中 Platform.OS === 'web' 在鸿蒙端不会命中，始终走原生 FlatList 路径（含 getItemLayout、removeClippedSubviews、initialScrollIndex）。\r\n\r\n### 未实现功能\r\n无。本库为纯 JS/TS React Native 组件库，所有公开能力均通过标准 RN 组件和 JS 逻辑实现，RNOH 完整支持。\r\n\r\n### 使用限制\r\n- 依赖 moment (2.30.1)：纯 JS 日期库，不使用 Intl API，在鸿蒙 Hermes 引擎上完全兼容。\r\n- 依赖 react-native-month (1.6.3)：纯 JS/TS RN 组件库，使用标准 RN 组件，无原生代码，通过 RNOH 直接运行。\r\n- 无需任何系统权限声明。\r\n\r\n## 快速验证（运行 Example）\r\n\r\n### 前置条件\r\n\r\n| 依赖 | 版本要求 |\r\n|------|----------|\r\n| Node.js | >= 18 |\r\n| DevEco Studio | 5.0+ / 6.0+ |\r\n| HarmonyOS SDK | API 17+ |\r\n\r\n### 运行步骤\r\n\r\n**1. 克隆仓库**\r\n\r\n```bash\r\ngit clone <仓库地址>\r\ncd <仓库目录>\r\n```\r\n\r\n**2. 安装依赖并构建**\r\n\r\n```bash\r\nnpm install --legacy-peer-deps\r\nnpm pack\r\n```\r\n\r\n**3. 进入 example 目录，安装依赖**\r\n\r\n```bash\r\ncd example\r\nnpm install --legacy-peer-deps\r\n```\r\n\r\n**4. 生成 JS Bundle**\r\n\r\n```bash\r\nnpm run dev\r\n```\r\n\r\n产物：harmony/entry/src/main/resources/rawfile/bundle.harmony.js\r\n\r\n**5. 用 DevEco Studio 打开鸿蒙工程**\r\n\r\n- 打开 DevEco Studio\r\n- 选择 example/harmony 目录\r\n- 等待 Sync 完成\r\n\r\n**6. 编译并运行 HAP**\r\n\r\n在 DevEco Studio 中点击运行按钮，将 HAP 安装到设备/模拟器。\r\n\r\n> **注意**：Example 中已预置插件依赖和 Package 注册，无需手动配置 Link。\r\n\r\n## 约束与限制\r\n\r\n### 兼容性\r\n\r\n- RNOH: 0.72+\r\n- HarmonyOS SDK: API 17+\r\n- DevEco Studio: 5.0+\r\n\r\n## 遗留问题\r\n\r\n无\r\n\r\n## 开源协议\r\n\r\n本项目基于 MIT License，详见 [LICENSE](./LICENSE) 文件。\r\n","readmeFilename":"README.md"}