From 871c40d81d70d2c3484f02345041974d18d12813 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Mon, 20 Nov 2023 16:22:19 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4dev?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker.har | Bin 0 -> 16353 bytes harmony/datetimepicker/.gitignore | 6 + harmony/datetimepicker/build-profile.json5 | 10 + harmony/datetimepicker/hvigorfile.ts | 25 +++ harmony/datetimepicker/index.ets | 24 +++ harmony/datetimepicker/oh-package.json5 | 13 ++ .../src/main/cpp/CMakeLists.txt | 7 + .../src/main/cpp/ComponentDescriptors.h | 34 ++++ .../DateTimePickerEventEmitRequestHandler.h | 84 ++++++++ .../src/main/cpp/DateTimePickerJSIBinder.h | 69 +++++++ .../src/main/cpp/DateTimePickerNapiBinder.h | 69 +++++++ .../src/main/cpp/DateTimePickerPackage.h | 65 ++++++ .../src/main/cpp/EventEmitters.cpp | 46 +++++ .../src/main/cpp/EventEmitters.h | 51 +++++ harmony/datetimepicker/src/main/cpp/Props.cpp | 54 +++++ harmony/datetimepicker/src/main/cpp/Props.h | 115 +++++++++++ .../src/main/cpp/ShadowNodes.cpp | 33 ++++ .../datetimepicker/src/main/cpp/ShadowNodes.h | 49 +++++ .../datetimepicker/src/main/cpp/States.cpp | 32 +++ harmony/datetimepicker/src/main/cpp/States.h | 50 +++++ harmony/datetimepicker/src/main/ets/Logger.ts | 63 ++++++ .../src/main/ets/RNDateTimePicker.ets | 186 ++++++++++++++++++ harmony/datetimepicker/src/main/module.json5 | 9 + .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 16 ++ .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../resources/base/profile/main_pages.json | 5 + .../main/resources/en_US/element/string.json | 16 ++ .../main/resources/zh_CN/element/string.json | 16 ++ package.json | 31 ++- src/datetimepicker.harmony.js | 131 ++++++++++++ src/datetimepicker.windows.js | 1 - src/picker.harmony.js | 26 +++ src/specs/NativeComponentDateTimePicker.js | 53 ++--- src/types.js | 1 - 35 files changed, 1363 insertions(+), 35 deletions(-) create mode 100644 harmony/datetimepicker.har create mode 100644 harmony/datetimepicker/.gitignore create mode 100644 harmony/datetimepicker/build-profile.json5 create mode 100644 harmony/datetimepicker/hvigorfile.ts create mode 100644 harmony/datetimepicker/index.ets create mode 100644 harmony/datetimepicker/oh-package.json5 create mode 100644 harmony/datetimepicker/src/main/cpp/CMakeLists.txt create mode 100644 harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h create mode 100644 harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h create mode 100644 harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h create mode 100644 harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h create mode 100644 harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h create mode 100644 harmony/datetimepicker/src/main/cpp/EventEmitters.cpp create mode 100644 harmony/datetimepicker/src/main/cpp/EventEmitters.h create mode 100644 harmony/datetimepicker/src/main/cpp/Props.cpp create mode 100644 harmony/datetimepicker/src/main/cpp/Props.h create mode 100644 harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp create mode 100644 harmony/datetimepicker/src/main/cpp/ShadowNodes.h create mode 100644 harmony/datetimepicker/src/main/cpp/States.cpp create mode 100644 harmony/datetimepicker/src/main/cpp/States.h create mode 100644 harmony/datetimepicker/src/main/ets/Logger.ts create mode 100644 harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets create mode 100644 harmony/datetimepicker/src/main/module.json5 create mode 100644 harmony/datetimepicker/src/main/resources/base/element/color.json create mode 100644 harmony/datetimepicker/src/main/resources/base/element/string.json create mode 100644 harmony/datetimepicker/src/main/resources/base/media/icon.png create mode 100644 harmony/datetimepicker/src/main/resources/base/profile/main_pages.json create mode 100644 harmony/datetimepicker/src/main/resources/en_US/element/string.json create mode 100644 harmony/datetimepicker/src/main/resources/zh_CN/element/string.json create mode 100644 src/datetimepicker.harmony.js create mode 100644 src/picker.harmony.js diff --git a/harmony/datetimepicker.har b/harmony/datetimepicker.har new file mode 100644 index 0000000000000000000000000000000000000000..f6924fe9e60e1f20c28d86b29915350d7a3b05f4 GIT binary patch literal 16353 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 literal 0 HcmV?d00001 diff --git a/harmony/datetimepicker/.gitignore b/harmony/datetimepicker/.gitignore new file mode 100644 index 00000000..e2713a27 --- /dev/null +++ b/harmony/datetimepicker/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/harmony/datetimepicker/build-profile.json5 b/harmony/datetimepicker/build-profile.json5 new file mode 100644 index 00000000..eae947d4 --- /dev/null +++ b/harmony/datetimepicker/build-profile.json5 @@ -0,0 +1,10 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "targets": [ + { + "name": "default", + } + ] +} \ No newline at end of file diff --git a/harmony/datetimepicker/hvigorfile.ts b/harmony/datetimepicker/hvigorfile.ts new file mode 100644 index 00000000..b4b93187 --- /dev/null +++ b/harmony/datetimepicker/hvigorfile.ts @@ -0,0 +1,25 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { harTasks } from '@ohos/hvigor-ohos-plugin'; diff --git a/harmony/datetimepicker/index.ets b/harmony/datetimepicker/index.ets new file mode 100644 index 00000000..5f08a9e0 --- /dev/null +++ b/harmony/datetimepicker/index.ets @@ -0,0 +1,24 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +export * from './src/main/ets/RNDateTimePicker' \ No newline at end of file diff --git a/harmony/datetimepicker/oh-package.json5 b/harmony/datetimepicker/oh-package.json5 new file mode 100644 index 00000000..aac50786 --- /dev/null +++ b/harmony/datetimepicker/oh-package.json5 @@ -0,0 +1,13 @@ +{ + "license": "ISC", + "types": "", + "devDependencies": { + "rnoh": "file:../rnoh" + }, + "name": "rnoh-date-time-picker", + "description": "date-time-picker in harmony", + "main": "index.ets", + "version": "0.0.1", + "dependencies": {} +} + diff --git a/harmony/datetimepicker/src/main/cpp/CMakeLists.txt b/harmony/datetimepicker/src/main/cpp/CMakeLists.txt new file mode 100644 index 00000000..6a06095a --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.13) +set(CMAKE_VERBOSE_MAKEFILE on) + +file(GLOB rnoh_datetime_picker_SRC CONFIGURE_DEPENDS *.cpp) +add_library(rnoh_datetime_picker SHARED ${rnoh_datetime_picker_SRC}) +target_include_directories(rnoh_datetime_picker PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(rnoh_datetime_picker PUBLIC rnoh) \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h b/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h new file mode 100644 index 00000000..4ae9f418 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h @@ -0,0 +1,34 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once + +#include "ShadowNodes.h" +#include + +namespace facebook{ +namespace react{ +using RNDateTimePickerComponentDescriptor = ConcreteComponentDescriptor; + +} //namespace react +} //namespace facebook \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h new file mode 100644 index 00000000..9b64f5c8 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h @@ -0,0 +1,84 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once +#include +#include +#include "RNOH/ArkJS.h" +#include "RNOH/EventEmitRequestHandler.h" +#include "EventEmitters.h" + +using namespace facebook; +namespace rnoh { + +enum DateEventType { + DATETIME_CHANGE = 0, + DATETIME_PICKERDISMISS = 1 +}; + +DateEventType getDateEventType(ArkJS &arkJs,napi_value eventObject) +{ + auto eventType = arkJs.getString(arkJs.getObjectProperty(eventObject,"type")); + if(eventType == "onChange"){ + return DateEventType::DATETIME_CHANGE; + }else if(eventType == "onPickerDismiss"){ + return DateEventType::DATETIME_PICKERDISMISS; + }else { + throw std::runtime_error("Unknown Page event type"); + } +} + +class DateTimePickerEventEmitRequestHandler : public EventEmitRequestHandler{ + public: + void handleEvent(EventEmitRequestHandler::Context const &ctx) override + { + if(ctx.eventName != "RNDateTimePicker"){ + return; + } + ArkJS arkJs(ctx.env); + auto eventEmitter = ctx.shadowViewRegistry->getEventEmitter(ctx.tag); + if(eventEmitter == nullptr){ + return; + } + switch (getDateEventType(arkJs,ctx.payload)){ + case DateEventType::DATETIME_CHANGE:{ + double positionIn = arkJs.getDouble(arkJs.getObjectProperty(ctx.payload,"timestamp")); + double offsetIn = arkJs.getDouble(arkJs.getObjectProperty(ctx.payload,"utcOffset")); + react::RNDateTimePickerEventEmitter::OnChange event = {.timestamp=positionIn, .utcOffset=(int)offsetIn}; + eventEmitter->onChange(event); + break; + } + case DateEventType::DATETIME_PICKERDISMISS:{ +// double pageIndex = arkJs.getDouble(arkJs.getObjectProperty(ctx.payload,"pageIndex")); + react::RNDateTimePickerEventEmitter::OnPickerDismiss event={}; + eventEmitter->onPickerDismiss(event); + break; + } + default: + break; + } + }; +}; +} // namespace rnoh + + diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h new file mode 100644 index 00000000..c3a50369 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h @@ -0,0 +1,69 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once +#include "RNOHCorePackage/ComponentBinders/ViewComponentJSIBinder.h" + +namespace rnoh{ +class DateTimePickerJSIBinder : public ViewComponentJSIBinder { + facebook::jsi::Object createNativeProps(facebook::jsi::Runtime &rt) override + { + auto object = ViewComponentJSIBinder::createNativeProps(rt); + object.setProperty(rt,"maximumDate","string"); + object.setProperty(rt,"minimumDate","string"); +// object.setProperty(rt,"date","double"); ////luoxf + object.setProperty(rt,"date","string");////luoxf + object.setProperty(rt,"locale","string"); + object.setProperty(rt,"minuteInterval","number"); + + object.setProperty(rt,"mode","string");//枚举 + object.setProperty(rt,"timeZoneOffsetInMinutes","number"); + object.setProperty(rt,"timeZoneName","string"); + object.setProperty(rt,"textColor","string");//SharedColor + object.setProperty(rt,"accentColor","string");//SharedColor + + object.setProperty(rt,"themeVariant","string");//枚举 + object.setProperty(rt,"displayIOS","string");//枚举 + object.setProperty(rt,"enabled","boolean"); + object.setProperty(rt,"is24Hour","boolean"); + + return object; + } + + facebook::jsi::Object createBubblingEventTypes(facebook::jsi::Runtime &rt) override + { + // LOG(INFO) << "RNOH datetimepicker:createBubblingEventTypes"; + facebook::jsi::Object events(rt); + events.setProperty(rt,"topChange",createBubblingCapturedEvent(rt,"onChange")); + events.setProperty(rt,"topPickerDismiss",createBubblingCapturedEvent(rt,"onPickerDismiss")); + return events; + } + + facebook::jsi::Object createDirectEventTypes(facebook::jsi::Runtime &rt) override + { + facebook::jsi::Object events(rt); + //createDirectEvent + return events; + } +}; +}// namespace rnoh \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h new file mode 100644 index 00000000..d566386d --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h @@ -0,0 +1,69 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once +#include "RNOHCorePackage/ComponentBinders/ViewComponentNapiBinder.h" +#include "Props.h" +#include "States.h" +#include +namespace rnoh{ + +class DateTimePickerNapiBinder : public ViewComponentNapiBinder { +public: + std::string toDateStr(int64_t date){ + std::stringstream ss; + std::string strRes; + ss << date; + ss >> strRes; + return strRes; + } + napi_value createProps(napi_env env, facebook::react::ShadowView const shadowView) override + { + napi_value napiViewProps = ViewComponentNapiBinder::createProps(env,shadowView); + if(auto props = std::dynamic_pointer_cast(shadowView.props) ){ + + return ArkJS(env) + .getObjectBuilder(napiViewProps) + .addProperty("maximumDate", toDateStr(props->maximumDate)) + .addProperty("minimumDate", toDateStr(props->minimumDate)) +// .addProperty("date", props->date) +// .addProperty("date", "stringluoxf:100000") + .addProperty("date", toDateStr(props->date)) + .addProperty("locale",props->locale) + .addProperty("minuteInterval",props->minuteInterval) + .addProperty("mode",props->mode) + .addProperty("timeZoneOffsetInMinutes",props->timeZoneOffsetInMinutes) + .addProperty("textColor",props->textColor) + .addProperty("accentColor",props->accentColor) + + .addProperty("themeVariant",props->themeVariant) + .addProperty("displayIOS",props->displayIOS) + .addProperty("enabled",props->enabled) + .addProperty("is24Hour",props->is24Hour) + .build(); + } + return napiViewProps; + }; +}; + +}// namespace rnoh \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h new file mode 100644 index 00000000..8dc482da --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h @@ -0,0 +1,65 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef HARMONY_DATETIME_SRC_MAIN_CPP_VIEWPAGERPACKAGE_H +#define HARMONY_DATETIME_SRC_MAIN_CPP_VIEWPAGERPACKAGE_H + +#include "RNOH/Package.h" +#include "ComponentDescriptors.h" +#include "DateTimePickerJSIBinder.h" +#include "DateTimePickerNapiBinder.h" +#include "DateTimePickerEventEmitRequestHandler.h" + + +using namespace rnoh; +using namespace facebook; +namespace rnoh { + +class DateTimePickerPackage : public Package { + public: + DateTimePickerPackage(Package::Context ctx) : Package(ctx){} + + std::vector createComponentDescriptorProviders() override + { + return { + facebook::react::concreteComponentDescriptorProvider(), + }; + } + + ComponentJSIBinderByString createComponentJSIBinderByName() override + { + return {{"RNDateTimePicker", std::make_shared()}}; + }; + + ComponentNapiBinderByString createComponentNapiBinderByName() override + { + return {{"RNDateTimePicker", std::make_shared()}}; + }; + + EventEmitRequestHandlers createEventEmitRequestHandlers() override + { + return {std::make_shared()}; + } +}; +} //namespace rnoh +#endif diff --git a/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp b/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp new file mode 100644 index 00000000..9ae38b7e --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp @@ -0,0 +1,46 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "EventEmitters.h" + +namespace facebook{ + namespace react { + +void RNDateTimePickerEventEmitter::onChange(OnChange event) const { + dispatchEvent("change",[event=std::move(event)](jsi::Runtime &runtime){ + auto payload = jsi::Object(runtime); + payload.setProperty(runtime,"timestamp",event.timestamp); + payload.setProperty(runtime,"utcOffset",event.utcOffset); + return payload; + }); +} +void RNDateTimePickerEventEmitter::onPickerDismiss(OnPickerDismiss event) const{ + dispatchEvent("pickerDismiss",[event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + return payload; + }); +} + + } //namespace react +} //namespace facebook diff --git a/harmony/datetimepicker/src/main/cpp/EventEmitters.h b/harmony/datetimepicker/src/main/cpp/EventEmitters.h new file mode 100644 index 00000000..ef87897e --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/EventEmitters.h @@ -0,0 +1,51 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once + +#include +#include + +namespace facebook { +namespace react { + +class JSI_EXPORT RNDateTimePickerEventEmitter : public ViewEventEmitter { +public: + using ViewEventEmitter::ViewEventEmitter; + + struct OnChange { + double timestamp; + int utcOffset; + }; + + struct OnPickerDismiss { + + }; + + void onChange(OnChange value) const; + + void onPickerDismiss(OnPickerDismiss value) const; +}; + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/Props.cpp b/harmony/datetimepicker/src/main/cpp/Props.cpp new file mode 100644 index 00000000..8fce63c1 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/Props.cpp @@ -0,0 +1,54 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "Props.h" +#include +#include + +namespace facebook { +namespace react { + +RNDateTimePickerProps::RNDateTimePickerProps( + const PropsParserContext &context, + const RNDateTimePickerProps &sourceProps, + const RawProps &rawProps): ViewProps(context,sourceProps,rawProps), + + maximumDate(convertRawProp(context,rawProps,"maximumDate",sourceProps.maximumDate,{0})), + minimumDate(convertRawProp(context,rawProps,"minimumDate",sourceProps.minimumDate,{0})), + date(convertRawProp(context,rawProps,"date",sourceProps.date, {0})), + locale(convertRawProp(context,rawProps,"locale",sourceProps.locale,{})), + minuteInterval(convertRawProp(context,rawProps,"minuteInterval",sourceProps.minuteInterval,{0})), + mode(convertRawProp(context,rawProps,"mode",sourceProps.mode,{"date"})), + timeZoneOffsetInMinutes(convertRawProp(context,rawProps,"timeZoneOffsetInMinutes",sourceProps.timeZoneOffsetInMinutes,{0.0})), + timeZoneName(convertRawProp(context,rawProps,"timeZoneName",sourceProps.timeZoneName,{})), + textColor(convertRawProp(context,rawProps,"textColor",sourceProps.textColor,{})), + accentColor(convertRawProp(context,rawProps,"accentColor",sourceProps.accentColor,{})), + themeVariant(convertRawProp(context,rawProps,"themeVariant",sourceProps.themeVariant,{"unspecified"})), + displayIOS(convertRawProp(context,rawProps,"displayIOS",sourceProps.displayIOS,{"default"})), + is24Hour(convertRawProp(context,rawProps,"is24Hour",sourceProps.is24Hour,{true})), + enabled(convertRawProp(context,rawProps,"enabled",sourceProps.enabled,{true})) + {} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/Props.h b/harmony/datetimepicker/src/main/cpp/Props.h new file mode 100644 index 00000000..cf7b4c60 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/Props.h @@ -0,0 +1,115 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once + +#include +#include +#include +#include + +namespace facebook { +namespace react { + +enum class RNDateTimePickerMode { Date, Time, Datetime, Countdown}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, RNDateTimePickerMode &result) { + auto string = (std::string)value; + if(string == "date") { result = RNDateTimePickerMode::Date; return;} + if(string == "time") { result = RNDateTimePickerMode::Time; return;} + if(string == "datetime") { result = RNDateTimePickerMode::Datetime; return;} + if(string == "countdown") { result = RNDateTimePickerMode::Countdown; return; } + abort(); +} + +static inline std::string toString(const RNDateTimePickerMode &value){ + switch (value) { + case RNDateTimePickerMode::Date: return "date"; + case RNDateTimePickerMode::Time: return "time"; + case RNDateTimePickerMode::Datetime: return "datetime"; + case RNDateTimePickerMode::Countdown: return "countdown"; + } +} + +enum class RNDateTimePickerThemeVariant { Dark, Light, Unspecified}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, RNDateTimePickerThemeVariant &result) { + auto string = (std::string)value; + if(string == "dark") { result = RNDateTimePickerThemeVariant::Dark; return;} + if(string == "light") { result = RNDateTimePickerThemeVariant::Light; return;} + if(string == "unspecified") { result = RNDateTimePickerThemeVariant::Unspecified; return; } + abort(); +} + +static inline std::string toString(const RNDateTimePickerThemeVariant &value){ + switch (value) { + case RNDateTimePickerThemeVariant::Dark: return "dark"; + case RNDateTimePickerThemeVariant::Light: return "light"; + case RNDateTimePickerThemeVariant::Unspecified: return "unspecified"; + } +} +enum class RNDateTimePickerDisplayIOS { Default, Spinner, Compact, Inline}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, RNDateTimePickerDisplayIOS &result) { + auto string = (std::string)value; + if(string == "default") { result = RNDateTimePickerDisplayIOS::Default; return;} + if(string == "spinner") { result = RNDateTimePickerDisplayIOS::Spinner; return;} + if(string == "compact") { result = RNDateTimePickerDisplayIOS::Compact; return; } + if(string == "inline") { result = RNDateTimePickerDisplayIOS::Inline; return; } + abort(); +} + +static inline std::string toString(const RNDateTimePickerDisplayIOS &value){ + switch (value) { + case RNDateTimePickerDisplayIOS::Default: return "default"; + case RNDateTimePickerDisplayIOS::Spinner: return "spinner"; + case RNDateTimePickerDisplayIOS::Compact: return "compact"; + case RNDateTimePickerDisplayIOS::Inline: return "inline"; + } +} + +class JSI_EXPORT RNDateTimePickerProps final : public ViewProps { + public: + RNDateTimePickerProps() = default; + RNDateTimePickerProps(const PropsParserContext& context, const RNDateTimePickerProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + int64_t maximumDate{0}; + int64_t minimumDate{0}; + int64_t date{0}; + std::string locale{}; + int minuteInterval{0}; + std::string mode{ toString(RNDateTimePickerMode::Date)}; + facebook::react::Float timeZoneOffsetInMinutes{0.0}; + std::string timeZoneName{}; + std::string textColor{}; + std::string accentColor{}; + std::string themeVariant{toString(RNDateTimePickerThemeVariant::Unspecified)}; + std::string displayIOS{toString(RNDateTimePickerDisplayIOS::Default)}; + bool enabled{true}; + bool is24Hour{true}; +}; + +} // namespace react +} // namespace facebook diff --git a/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp b/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp new file mode 100644 index 00000000..75e8f99f --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp @@ -0,0 +1,33 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "ShadowNodes.h" + +namespace facebook { +namespace react { + + extern const char RNDateTimePickerComponentName[] = "RNDateTimePicker"; + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/ShadowNodes.h b/harmony/datetimepicker/src/main/cpp/ShadowNodes.h new file mode 100644 index 00000000..26e56375 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/ShadowNodes.h @@ -0,0 +1,49 @@ + +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#pragma once + +#include "EventEmitters.h" +#include "Props.h" +#include "States.h" + +#include +#include + +namespace facebook { +namespace react { + +JSI_EXPORT extern const char RNDateTimePickerComponentName[]; + +/* + * `ShadowNode` for component. + */ +using RNDateTimePickerShadowNode = ConcreteViewShadowNode< + RNDateTimePickerComponentName, + RNDateTimePickerProps, + RNDateTimePickerEventEmitter, + RNDateTimePickerState>; +} // namespace react +} // namespace facebook diff --git a/harmony/datetimepicker/src/main/cpp/States.cpp b/harmony/datetimepicker/src/main/cpp/States.cpp new file mode 100644 index 00000000..769d2e80 --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/States.cpp @@ -0,0 +1,32 @@ + +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "States.h" + +namespace facebook { +namespace react { + + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/States.h b/harmony/datetimepicker/src/main/cpp/States.h new file mode 100644 index 00000000..8192af1e --- /dev/null +++ b/harmony/datetimepicker/src/main/cpp/States.h @@ -0,0 +1,50 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + +class RNDateTimePickerState { + public: + RNDateTimePickerState() = default; + +#ifdef ANDROID + RNDateTimePickerState(RNDateTimePickerState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/ets/Logger.ts b/harmony/datetimepicker/src/main/ets/Logger.ts new file mode 100644 index 00000000..a101ca97 --- /dev/null +++ b/harmony/datetimepicker/src/main/ets/Logger.ts @@ -0,0 +1,63 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +import hilog from '@ohos.hilog'; + +class Logger { + private domain: number; + private prefix: string; + private format: string = '%{public}s, %{public}s'; + private isDebug: boolean; + + /** + * constructor. + * + * @param Prefix Identifies the log tag. + * @param domain Domain Indicates the service domain, which is a hexadecimal integer ranging from 0x0 to 0xFFFFF. + */ + constructor(prefix: string = 'MyApp', domain: number = 0xFF00, isDebug = false) { + this.prefix = prefix; + this.domain = domain; + this.isDebug = isDebug; + } + + debug(...args: string[]):void{ + if(this.isDebug){ + hilog.debug(this.domain,this.prefix,this.format,args); + } + } + + info(...args: string[]): void{ + hilog.info(this.domain,this.prefix,this.format,args); + } + + warn(...args: string[]): void{ + hilog.warn(this.domain,this.prefix,this.format,args); + } + + error(...args: string[]): void{ + hilog.error(this.domain,this.prefix,this.format,args); + } +} + +export default new Logger('datetimepicker', 0xFF00, false) \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets b/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets new file mode 100644 index 00000000..42db2d74 --- /dev/null +++ b/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets @@ -0,0 +1,186 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +import { + Descriptor, + RNOHContext, + ViewBaseProps, + RNViewBase, + ComponentBuilderContext, + RNComponentFactory +} from 'rnoh' +import inputMethod from '@ohos.inputMethod'; +import Logger from './Logger'; + +export const DATETIME_PICKER_VIEW_TYPE = "RNDateTimePicker" + +export interface ViewPagerProps extends ViewBaseProps { + maximumDate: string + minimumDate: string + date: string + locale: string + minuteInterval: number // + mode: string + timeZoneOffsetInMinutes: number // + timeZoneName: string // + textColor: string // + accentColor: string // + themeVariant: string // + displayIOS: string + enabled: boolean // + is24Hour: boolean //add 0926 +} + +export type PickerDescriptor = Descriptor<"RNDateTimePicker", ViewPagerProps> + +const TAG:string = "RNDateTimePicker" + +@Component +export struct RNDateTimePicker { + ctx!: RNOHContext + tag: number = 0 + @BuilderParam buildCustomComponent: (componentBuilderContext: ComponentBuilderContext) => void + @State descriptor: PickerDescriptor = {} as PickerDescriptor + private unregisterDescriptorChangesListener?: () => void = undefined + + @State selectDate: Date = new Date() + @State isMilitaryTime: boolean = false //true=24h制 + @State isLunar: boolean = false //true=显示农历 + + aboutToAppear() { + + this.descriptor = this.ctx.descriptorRegistry.getDescriptor(this.tag) + this.unregisterDescriptorChangesListener = this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag, + (newDescriptor) => { + this.descriptor = (newDescriptor as PickerDescriptor) + Logger.debug(TAG,`[RNOH]: in RNDateTimePicker,descriptor change :${JSON.stringify(this.descriptor.props)}`) + this.isMilitaryTime = this.descriptor.props.is24Hour + } + ) + Logger.info(TAG,`[RNOH]: in RNDateTimePicker,propsout :${JSON.stringify(this.descriptor.props)}`) + this.selectDate = new Date(Number.parseInt(this.descriptor.props.date)); + Logger.debug(TAG,`[RNOH]: RNDateTimePicker,out selectDate :${this.selectDate}`) + this.isMilitaryTime = this.descriptor.props.is24Hour + + } + onPageHide() { + Logger.debug(TAG,`[RNOH]: in RNDateTimePicker,onPageHide`) + + } + + aboutToDisappear() { + Logger.debug(TAG,`[RNOH]: in RNDateTimePicker,aboutToDisappear`) + this.onPickerDismiss() + this.unregisterDescriptorChangesListener?.() + } + + onDateChange(dateIn: Date) { + Logger.debug(TAG,`RNOH in PickerView onChange,${JSON.stringify(dateIn)}`) + let unit = 1000 * 60 + let time = dateIn.getTime() + + //It is the offset in minutes between the selected date and UTC time. + let offset = time / unit; + this.ctx.rnInstanceManager.emitComponentEvent( + this.descriptor.tag, + DATETIME_PICKER_VIEW_TYPE, + { + type: "onChange", + utcOffset: offset, + timestamp: time + } + ); + } + + onPickerDismiss() { + Logger.debug(TAG,`RNOH in PickerView onPickerDismiss`) + this.ctx.rnInstanceManager.emitComponentEvent( + this.descriptor.tag, + DATETIME_PICKER_VIEW_TYPE, + { + type: "onPickerDismiss" + } + ); + } + //"default" - Automatically pick the best style available for the current platform & mode. + //"spinner" - the usual pre-iOS 14 appearance with a wheel from which you choose values + //"compact" - Affects only iOS 14 and later. Will fall back to "spinner" if not supported. + //"inline" + build() { + RNViewBase({ ctx: this.ctx, tag: this.tag }) { + // RNComponentFactory({ctx:this.ctx,tag:this.tag,buildCustomComponent:this.buildCustomComponent}) + if (this.descriptor.props.mode === "date" || this.descriptor.props.mode === "default") { + if (this.descriptor.props.displayIOS === "compact" || this.descriptor.props.displayIOS === "inline") { + + CalendarPicker({ hintRadius: 17, selected: this.selectDate }) + + .edgeAlign(CalendarAlign.END) + // .textStyle({color:this.descriptor.props.textColor,font:{size:16,weight:FontWeight.Normal}}) + .textStyle({ color: this.descriptor.props.textColor }) + .enabled(this.descriptor.props.enabled) + .width("100%").height("100%") + .onChange((newDate:Date) => { + Logger.debug(TAG,"CalendarPicker onChange:" + JSON.stringify(newDate)) + //0927验证发现 没有执行回调 + this.selectDate.setFullYear(newDate.getFullYear(), newDate.getMonth(), newDate.getDay()) + this.onDateChange(this.selectDate) + }) + } else if (this.descriptor.props.displayIOS === "spinner" || this.descriptor.props.displayIOS === "default") { + DatePicker({ + start: Number.parseInt(this.descriptor.props.minimumDate) != 0 ? new Date(Number.parseInt(this.descriptor.props.minimumDate)) : new Date(1970, 0, 0), + end: Number.parseInt(this.descriptor.props.maximumDate) != 0 ? new Date(Number.parseInt(this.descriptor.props.maximumDate)) : new Date(2100, 0, 0), + selected: this.selectDate + }) + // .disappearTextStyle({color:Color.Gray,font:{size:'16fp',weight:FontWeight.Bold}}) + // .textStyle({color:'#ff182431',font:{size:'18fp',weight:FontWeight.Normal}}) + // .selectedTextStyle({color:'#ff0000FF',font:{size:'26fp',weight:FontWeight.Regular}}) + .lunar(this.isLunar) + .enabled(this.descriptor.props.enabled) + .width("100%").height("100%") + .onChange((value: DatePickerResult) => { + this.selectDate.setFullYear(value.year, value.month, value.day) + Logger.debug(TAG,"DatePicker,select current date is: "+ JSON.stringify(value)) + this.onDateChange(this.selectDate) + }) + } + } else if (this.descriptor.props.mode === "time") { + TimePicker({ + selected: this.selectDate, + }) + .useMilitaryTime(this.isMilitaryTime) + .enabled(this.descriptor.props.enabled) + .onChange((value: TimePickerResult) => { + this.selectDate.setHours(value.hour, value.minute) + Logger.debug(TAG,'TimePicker,select current date is: ' + JSON.stringify(value)) + this.onDateChange(this.selectDate) + }) + // .disappearTextStyle({color:Color.Red,font:{size:15,weight:FontWeight.Lighter}}) + // .textStyle({color:Color.Black,font: {size:20,weight:FontWeight.Normal}}) + // .selectedTextStyle({color:Color.Blue,font:{size:30,weight:FontWeight.Bolder}}) + .width("100%").height("100%") + } + // .position({y:this.descriptor.layoutMetrics.frame.origin.y, x:this.descriptor.layoutMetrics.frame.origin.x}) + + } + } +} \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/module.json5 b/harmony/datetimepicker/src/main/module.json5 new file mode 100644 index 00000000..59f10ece --- /dev/null +++ b/harmony/datetimepicker/src/main/module.json5 @@ -0,0 +1,9 @@ +{ + "module": { + "name": "datetimepicker", + "type": "har", + "deviceTypes": [ + "default" + ] + } +} \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/resources/base/element/color.json b/harmony/datetimepicker/src/main/resources/base/element/color.json new file mode 100644 index 00000000..3c712962 --- /dev/null +++ b/harmony/datetimepicker/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/resources/base/element/string.json b/harmony/datetimepicker/src/main/resources/base/element/string.json new file mode 100644 index 00000000..247ebf72 --- /dev/null +++ b/harmony/datetimepicker/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "Pager_viewAbility_desc", + "value": "description" + }, + { + "name": "Pager_viewAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/resources/base/media/icon.png b/harmony/datetimepicker/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 +// const majorVersionIOS = parseInt(Platfrom.Version, 10); +// if(display === IOS_DISPLAY.inline && majorVersionIOS < 14){ +// // inline is available since 14.0 +// return IOS_DISPLAY.spinner; +// } +// if(majorVersionIOS < 14){ +// // NOTE this should compare against 13.4, not 14 according to https://developer.apple.com/documentation/uikit/uidatepickerstyle/uidatepickerstylecompact?changes=latest_minor&language=objc +// // but UIDatePickerStyleCompact does not seem to work prior to 14 +// // only the spinner display (UIDatePickerStyleWheels) is thus available below 14 +// return IOS_DISPLAY.spinner; +// } +// +// return display +// } + +export default function Picker({ + value, + locale, + maximumDate, + minimumDate, + minuteInterval, + timeZoneOffsetInMinutes, + timeZoneName, + textColor, + accentColor, + themeVariant, + onChange, + mode = IOS_MODE.date, + display: providedDisplay = IOS_DISPLAY.default, + disabled = false, + is24Hour = true, + ...other +}:IOSNativeProps): React.Node { + sharedPropsValidation({value, timeZoneOffsetInMinutes, timeZoneName}); + + // const display = getDisplaySafe(providedDisplay) + const display = providedDisplay; + + const _onChange = (event: NativeEventIOS) => { + const timestamp = event.nativeEvent.timestamp; + const unifiedEvent: DateTimePickerEvent = { + ...event, + type:EVENT_TYPE_SET, + }; + + const date = timestamp !== undefined ? new Date(timestamp) : undefined; + + onChange && onChange(unifiedEvent, date); + }; + + const onDismiss = ()=> { + // TODO introduce separate onDismissed event listener + onChange && + onChange( + { + type:EVENT_TYPE_DISMISSED, + nativeEvent: { + timestamp: value.getTime(), + utcOffset: 0, // TODO vonovak - the dismiss event should not carry any date information + }, + }, + value, + ); + }; + + return ( + true} + onResponderTerminationRequest = {()=> false} + displayIOS = {display} + enabled = {disabled !== true} + is24Hour = {is24Hour} + /> + ); +} \ No newline at end of file diff --git a/src/datetimepicker.windows.js b/src/datetimepicker.windows.js index b008503d..3a0e7782 100644 --- a/src/datetimepicker.windows.js +++ b/src/datetimepicker.windows.js @@ -39,7 +39,6 @@ export default function RNDateTimePickerQWE( sharedPropsValidation({value: props?.value}); const localProps = { - accessibilityLabel: props.accessibilityLabel, dayOfWeekFormat: props.dayOfWeekFormat, dateFormat: props.dateFormat, firstDayOfWeek: props.firstDayOfWeek, diff --git a/src/picker.harmony.js b/src/picker.harmony.js new file mode 100644 index 00000000..4fc0807a --- /dev/null +++ b/src/picker.harmony.js @@ -0,0 +1,26 @@ +/** + * MIT License + * + * Copyright (C) 2023 Huawei Device Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +import RNDateTimePicker from './specs/NativeComponentDateTimePicker'; + +export default RNDateTimePicker; \ No newline at end of file diff --git a/src/specs/NativeComponentDateTimePicker.js b/src/specs/NativeComponentDateTimePicker.js index 526dbc8f..1d4905a7 100644 --- a/src/specs/NativeComponentDateTimePicker.js +++ b/src/specs/NativeComponentDateTimePicker.js @@ -4,40 +4,41 @@ import type {ColorValue} from 'react-native/Libraries/StyleSheet/StyleSheet'; import type {HostComponent} from 'react-native'; import type { - BubblingEventHandler, - Double, - Int32, - WithDefault, + BubblingEventHandler, + Double, + Int32, + WithDefault, } from 'react-native/Libraries/Types/CodegenTypes'; import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; type DateTimePickerEvent = $ReadOnly<{| - timestamp: Double, - utcOffset: Int32, + timestamp:Double, + utcOffset:Int32, |}>; type NativeProps = $ReadOnly<{| - ...ViewProps, - onChange?: ?BubblingEventHandler, - onPickerDismiss?: ?BubblingEventHandler, - maximumDate?: ?Double, - minimumDate?: ?Double, - date?: ?Double, - locale?: ?string, - minuteInterval?: ?Int32, - mode?: WithDefault<'date' | 'time' | 'datetime' | 'countdown', 'date'>, - timeZoneOffsetInMinutes?: ?Double, - timeZoneName?: ?string, - textColor?: ?ColorValue, - accentColor?: ?ColorValue, - themeVariant?: WithDefault<'dark' | 'light' | 'unspecified', 'unspecified'>, - displayIOS?: WithDefault< - 'default' | 'spinner' | 'compact' | 'inline', - 'default', - >, - enabled?: WithDefault, + ...ViewProps, + onChange?: ?BubblingEventHandler, + onPickerDismiss?: ?BubblingEventHandler, + maximumDate?: ?Double, + minimumDate?: ?Double, + date?: ?Double, + locale?: ?string, + minuteInterval?: ?Int32, + mode?: WithDefault<'date' | 'time' | 'datetime' | 'countdown','date'>, + timeZoneOffsetInMinutes?: ?Double, + timeZoneName?: ?string, + textColor?: ?ColorValue, + accentColor?: ?ColorValue, + themeVariant?: WithDefault<'dark' | 'light' | 'unspecified', 'unspecified'>, + displayIOS?: WithDefault< + 'default' | 'spinner' | 'compact' | 'inline', + 'default', + >, + is24Hour?: WithDefault, + enabled?: WithDefault, |}>; export default (codegenNativeComponent('RNDateTimePicker', { - excludedPlatforms: ['android'], + excludedPlatforms: ['android'], }): HostComponent); diff --git a/src/types.js b/src/types.js index 521c1f82..d2630ed3 100644 --- a/src/types.js +++ b/src/types.js @@ -254,5 +254,4 @@ export type WindowsNativeProps = $ReadOnly<{| timeZoneOffsetInSeconds?: number, is24Hour?: boolean, minuteInterval?: number, - accessibilityLabel?: string, |}>; From 0053d6d8070600482f0588c587509527e23a782a Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Tue, 21 Nov 2023 14:30:00 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0npmrc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .npmrc | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..06997556 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +@react-native-oh-library:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=${TOKEN} \ No newline at end of file From 6ff12eda9c581434998bf3155fe461668ded78b2 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Tue, 21 Nov 2023 16:35:06 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 7 +- src/index.d.ts | 228 ------------------------------------------------- 2 files changed, 5 insertions(+), 230 deletions(-) delete mode 100644 src/index.d.ts diff --git a/package.json b/package.json index b0f808b3..9ad8d1de 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,10 @@ { - "name": "@react-native-community/datetimepicker", + "name": "@react-native-oh-library/datetimepicker", "version": "7.5.0-0.0.1", "description": "DateTimePicker component for React Native", + "harmony": { + "alias": "@react-native-community/datetimepicker" + }, "main": "lib/commonjs/index", "module": "lib/module/index", "react-native": "src/index", @@ -26,7 +29,7 @@ "!**/__mocks__" ], "publishConfig": { - "access": "public" + "registry": "https://npm.pkg.github.com" }, "react-native-builder-bob": { "source": "src", diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index a3c346ad..00000000 --- a/src/index.d.ts +++ /dev/null @@ -1,228 +0,0 @@ -import {FC, Ref, SyntheticEvent} from 'react'; -import {ColorValue, NativeMethods, ViewProps} from 'react-native'; - -type IOSMode = 'date' | 'time' | 'datetime' | 'countdown'; -type AndroidMode = 'date' | 'time'; -type Display = 'spinner' | 'default' | 'clock' | 'calendar'; -type IOSDisplay = 'default' | 'compact' | 'inline' | 'spinner'; -type MinuteInterval = 1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 15 | 20 | 30; -type DAY_OF_WEEK = 0 | 1 | 2 | 3 | 4 | 5 | 6; - -export type Event = SyntheticEvent< - Readonly<{ - timestamp: number; - }> ->; - -export type EvtTypes = 'set' | 'neutralButtonPressed' | 'dismissed'; - -export type DateTimePickerEvent = { - type: EvtTypes; - nativeEvent: { - timestamp: number; - utcOffset: number; - }; -}; - -type BaseOptions = { - /** - * The currently selected date. - */ - value: Date; - - /** - * Date change handler. - * - * This is called when the user changes the date or time in the UI. - * The first argument is an Event, the second a selected Date. - */ - onChange?: (event: DateTimePickerEvent, date?: Date) => void; -}; - -type DateOptions = BaseOptions & { - /** - * Maximum date. - * - * Restricts the range of possible date/time values. - */ - maximumDate?: Date; - - /** - * Minimum date. - * - * Restricts the range of possible date/time values. - */ - minimumDate?: Date; -}; - -type TimeOptions = Readonly< - BaseOptions & { - /** - * Display TimePicker in 24 hour. - */ - is24Hour?: boolean; - } ->; - -export type BaseProps = Readonly< - Omit & - DateOptions & { - /** - * The tz database name in https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - */ - timeZoneName?: string; - } ->; - -export type IOSNativeProps = Readonly< - BaseProps & { - /** - * The date picker locale. - */ - locale?: string; - - /** - * The interval at which minutes can be selected. - */ - minuteInterval?: MinuteInterval; - - /** - * The date picker mode. - */ - mode?: IOSMode; - - /** - * Timezone offset in minutes. - * - * By default, the date picker will use the device's timezone. With this - * parameter, it is possible to force a certain timezone offset. For - * instance, to show times in Pacific Standard Time, pass -7 * 60. - */ - timeZoneOffsetInMinutes?: number; - - /** - * The date picker text color. - */ - textColor?: string; - - /** - * The date picker accent color. - * - * Sets the color of the selected, date and navigation icons. - * Has no effect for display 'spinner'. - */ - accentColor?: string; - - /** - * Override theme variant used by iOS native picker - */ - themeVariant?: 'dark' | 'light'; - - /** - * Sets the preferredDatePickerStyle for picker - */ - display?: IOSDisplay; - - /** - * Is this picker disabled? - */ - disabled?: boolean; - } ->; - -export type ButtonType = {label?: string; textColor?: ColorValue}; - -export type AndroidNativeProps = Readonly< - BaseProps & - DateOptions & - TimeOptions & { - /** - * The date picker mode. - */ - mode?: AndroidMode; - - /** - * The display options. - */ - display?: Display; - - /** - * The interval at which minutes can be selected. - */ - minuteInterval?: MinuteInterval; - - positiveButton?: ButtonType; - neutralButton?: ButtonType; - negativeButton?: ButtonType; - - /** - * @deprecated use neutralButton instead - * */ - neutralButtonLabel?: string; - /** - * @deprecated use positiveButton instead - * */ - positiveButtonLabel?: string; - /** - * @deprecated use negativeButton instead - * */ - negativeButtonLabel?: string; - - /** - * callback when an error occurs inside the date picker native code (such as null activity) - */ - onError?: (arg: Error) => void; - } ->; - -export type DatePickerOptions = DateOptions & { - display?: Display; -}; - -export type TimePickerOptions = TimeOptions & { - display?: Display; -}; - -export type RCTDateTimePickerNative = NativeMethods; -export type NativeRef = { - current: Ref | null; -}; - -export type WindowsNativeProps = Readonly< - BaseProps & - DateOptions & - TimeOptions & { - /** - * The display options. - */ - display?: Display; - - placeholderText?: string; - dateFormat?: - | 'day month year' - | 'dayofweek day month' - | 'longdate' - | 'shortdate'; - dayOfWeekFormat?: - | '{dayofweek.abbreviated(2)}' - | '{dayofweek.abbreviated(3)}' - | '{dayofweek.full}'; - firstDayOfWeek?: DAY_OF_WEEK; - timeZoneOffsetInSeconds?: number; - is24Hour?: boolean; - minuteInterval?: number; - accessibilityLabel?: string; - } ->; - -declare namespace DateTimePickerAndroidType { - const open: (args: AndroidNativeProps) => void; - const dismiss: (mode: AndroidNativeProps['mode']) => Promise; -} - -declare const RNDateTimePicker: FC< - IOSNativeProps | AndroidNativeProps | WindowsNativeProps ->; - -export default RNDateTimePicker; -export const DateTimePickerAndroid: typeof DateTimePickerAndroidType; From 070238daf558d2a5c9bc7c0b35f475e0a015c116 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Tue, 21 Nov 2023 17:26:17 +0800 Subject: [PATCH 04/18] =?UTF-8?q?type.js=E6=94=B9=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/types.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types.js b/src/types.js index d2630ed3..521c1f82 100644 --- a/src/types.js +++ b/src/types.js @@ -254,4 +254,5 @@ export type WindowsNativeProps = $ReadOnly<{| timeZoneOffsetInSeconds?: number, is24Hour?: boolean, minuteInterval?: number, + accessibilityLabel?: string, |}>; From 0291a3f068c52a93986555f4158cfb9cef123ebf Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Tue, 21 Nov 2023 18:41:52 +0800 Subject: [PATCH 05/18] =?UTF-8?q?.d.ts=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.d.ts | 228 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 src/index.d.ts diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 00000000..a3c346ad --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,228 @@ +import {FC, Ref, SyntheticEvent} from 'react'; +import {ColorValue, NativeMethods, ViewProps} from 'react-native'; + +type IOSMode = 'date' | 'time' | 'datetime' | 'countdown'; +type AndroidMode = 'date' | 'time'; +type Display = 'spinner' | 'default' | 'clock' | 'calendar'; +type IOSDisplay = 'default' | 'compact' | 'inline' | 'spinner'; +type MinuteInterval = 1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 15 | 20 | 30; +type DAY_OF_WEEK = 0 | 1 | 2 | 3 | 4 | 5 | 6; + +export type Event = SyntheticEvent< + Readonly<{ + timestamp: number; + }> +>; + +export type EvtTypes = 'set' | 'neutralButtonPressed' | 'dismissed'; + +export type DateTimePickerEvent = { + type: EvtTypes; + nativeEvent: { + timestamp: number; + utcOffset: number; + }; +}; + +type BaseOptions = { + /** + * The currently selected date. + */ + value: Date; + + /** + * Date change handler. + * + * This is called when the user changes the date or time in the UI. + * The first argument is an Event, the second a selected Date. + */ + onChange?: (event: DateTimePickerEvent, date?: Date) => void; +}; + +type DateOptions = BaseOptions & { + /** + * Maximum date. + * + * Restricts the range of possible date/time values. + */ + maximumDate?: Date; + + /** + * Minimum date. + * + * Restricts the range of possible date/time values. + */ + minimumDate?: Date; +}; + +type TimeOptions = Readonly< + BaseOptions & { + /** + * Display TimePicker in 24 hour. + */ + is24Hour?: boolean; + } +>; + +export type BaseProps = Readonly< + Omit & + DateOptions & { + /** + * The tz database name in https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + */ + timeZoneName?: string; + } +>; + +export type IOSNativeProps = Readonly< + BaseProps & { + /** + * The date picker locale. + */ + locale?: string; + + /** + * The interval at which minutes can be selected. + */ + minuteInterval?: MinuteInterval; + + /** + * The date picker mode. + */ + mode?: IOSMode; + + /** + * Timezone offset in minutes. + * + * By default, the date picker will use the device's timezone. With this + * parameter, it is possible to force a certain timezone offset. For + * instance, to show times in Pacific Standard Time, pass -7 * 60. + */ + timeZoneOffsetInMinutes?: number; + + /** + * The date picker text color. + */ + textColor?: string; + + /** + * The date picker accent color. + * + * Sets the color of the selected, date and navigation icons. + * Has no effect for display 'spinner'. + */ + accentColor?: string; + + /** + * Override theme variant used by iOS native picker + */ + themeVariant?: 'dark' | 'light'; + + /** + * Sets the preferredDatePickerStyle for picker + */ + display?: IOSDisplay; + + /** + * Is this picker disabled? + */ + disabled?: boolean; + } +>; + +export type ButtonType = {label?: string; textColor?: ColorValue}; + +export type AndroidNativeProps = Readonly< + BaseProps & + DateOptions & + TimeOptions & { + /** + * The date picker mode. + */ + mode?: AndroidMode; + + /** + * The display options. + */ + display?: Display; + + /** + * The interval at which minutes can be selected. + */ + minuteInterval?: MinuteInterval; + + positiveButton?: ButtonType; + neutralButton?: ButtonType; + negativeButton?: ButtonType; + + /** + * @deprecated use neutralButton instead + * */ + neutralButtonLabel?: string; + /** + * @deprecated use positiveButton instead + * */ + positiveButtonLabel?: string; + /** + * @deprecated use negativeButton instead + * */ + negativeButtonLabel?: string; + + /** + * callback when an error occurs inside the date picker native code (such as null activity) + */ + onError?: (arg: Error) => void; + } +>; + +export type DatePickerOptions = DateOptions & { + display?: Display; +}; + +export type TimePickerOptions = TimeOptions & { + display?: Display; +}; + +export type RCTDateTimePickerNative = NativeMethods; +export type NativeRef = { + current: Ref | null; +}; + +export type WindowsNativeProps = Readonly< + BaseProps & + DateOptions & + TimeOptions & { + /** + * The display options. + */ + display?: Display; + + placeholderText?: string; + dateFormat?: + | 'day month year' + | 'dayofweek day month' + | 'longdate' + | 'shortdate'; + dayOfWeekFormat?: + | '{dayofweek.abbreviated(2)}' + | '{dayofweek.abbreviated(3)}' + | '{dayofweek.full}'; + firstDayOfWeek?: DAY_OF_WEEK; + timeZoneOffsetInSeconds?: number; + is24Hour?: boolean; + minuteInterval?: number; + accessibilityLabel?: string; + } +>; + +declare namespace DateTimePickerAndroidType { + const open: (args: AndroidNativeProps) => void; + const dismiss: (mode: AndroidNativeProps['mode']) => Promise; +} + +declare const RNDateTimePicker: FC< + IOSNativeProps | AndroidNativeProps | WindowsNativeProps +>; + +export default RNDateTimePicker; +export const DateTimePickerAndroid: typeof DateTimePickerAndroidType; From bb7966e9a0d307af9e7ac22992454a0243988e8d Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Wed, 22 Nov 2023 15:09:38 +0800 Subject: [PATCH 06/18] =?UTF-8?q?eslint=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/datetimepicker.harmony.js | 150 ++++++++++----------- src/picker.harmony.js | 2 +- src/specs/NativeComponentDateTimePicker.js | 54 ++++---- 3 files changed, 103 insertions(+), 103 deletions(-) diff --git a/src/datetimepicker.harmony.js b/src/datetimepicker.harmony.js index 2c44d54e..23e5766d 100644 --- a/src/datetimepicker.harmony.js +++ b/src/datetimepicker.harmony.js @@ -24,19 +24,19 @@ import RNDateTimePicker from './picker'; import {dateToMilliseconds, sharedPropsValidation} from './utils'; import { - IOS_DISPLAY, - EVENT_TYPE_SET, - EVENT_TYPE_DISMISSED, - IOS_MODE, + IOS_DISPLAY, + EVENT_TYPE_SET, + EVENT_TYPE_DISMISSED, + IOS_MODE, } from './constants'; import * as React from 'react'; //import {Platform} from 'react-native'; import type { - DateTimePickerEvent, - NativeEventIOS, - IOSNativeProps, - IOSDisplay, + DateTimePickerEvent, + NativeEventIOS, + IOSNativeProps, + IOSDisplay, } from './types'; // const getDisplaySafe = (display: IOSDisplay): IOSDisplay=>{ @@ -56,76 +56,76 @@ import type { // } export default function Picker({ - value, - locale, - maximumDate, - minimumDate, - minuteInterval, - timeZoneOffsetInMinutes, - timeZoneName, - textColor, - accentColor, - themeVariant, - onChange, - mode = IOS_MODE.date, - display: providedDisplay = IOS_DISPLAY.default, - disabled = false, - is24Hour = true, - ...other -}:IOSNativeProps): React.Node { - sharedPropsValidation({value, timeZoneOffsetInMinutes, timeZoneName}); + value, + locale, + maximumDate, + minimumDate, + minuteInterval, + timeZoneOffsetInMinutes, + timeZoneName, + textColor, + accentColor, + themeVariant, + onChange, + mode = IOS_MODE.date, + display: providedDisplay = IOS_DISPLAY.default, + disabled = false, + is24Hour = true, + ...other +}: IOSNativeProps): React.Node { + sharedPropsValidation({value, timeZoneOffsetInMinutes, timeZoneName}); - // const display = getDisplaySafe(providedDisplay) - const display = providedDisplay; + // const display = getDisplaySafe(providedDisplay) + const display = providedDisplay; - const _onChange = (event: NativeEventIOS) => { - const timestamp = event.nativeEvent.timestamp; - const unifiedEvent: DateTimePickerEvent = { - ...event, - type:EVENT_TYPE_SET, - }; + const _onChange = (event: NativeEventIOS) => { + const timestamp = event.nativeEvent.timestamp; + const unifiedEvent: DateTimePickerEvent = { + ...event, + type: EVENT_TYPE_SET, + }; - const date = timestamp !== undefined ? new Date(timestamp) : undefined; + const date = timestamp !== undefined ? new Date(timestamp) : undefined; - onChange && onChange(unifiedEvent, date); - }; + onChange && onChange(unifiedEvent, date); + }; - const onDismiss = ()=> { - // TODO introduce separate onDismissed event listener - onChange && - onChange( - { - type:EVENT_TYPE_DISMISSED, - nativeEvent: { - timestamp: value.getTime(), - utcOffset: 0, // TODO vonovak - the dismiss event should not carry any date information - }, - }, - value, - ); - }; + const onDismiss = () => { + // TODO introduce separate onDismissed event listener + onChange && + onChange( + { + type: EVENT_TYPE_DISMISSED, + nativeEvent: { + timestamp: value.getTime(), + utcOffset: 0, // TODO vonovak - the dismiss event should not carry any date information + }, + }, + value, + ); + }; - return ( - true} - onResponderTerminationRequest = {()=> false} - displayIOS = {display} - enabled = {disabled !== true} - is24Hour = {is24Hour} - /> - ); -} \ No newline at end of file + return ( + true} + onResponderTerminationRequest={() => false} + displayIOS={display} + enabled={disabled !== true} + is24Hour={is24Hour} + /> + ); +} diff --git a/src/picker.harmony.js b/src/picker.harmony.js index 4fc0807a..532a9242 100644 --- a/src/picker.harmony.js +++ b/src/picker.harmony.js @@ -23,4 +23,4 @@ */ import RNDateTimePicker from './specs/NativeComponentDateTimePicker'; -export default RNDateTimePicker; \ No newline at end of file +export default RNDateTimePicker; diff --git a/src/specs/NativeComponentDateTimePicker.js b/src/specs/NativeComponentDateTimePicker.js index 1d4905a7..c24c1733 100644 --- a/src/specs/NativeComponentDateTimePicker.js +++ b/src/specs/NativeComponentDateTimePicker.js @@ -4,41 +4,41 @@ import type {ColorValue} from 'react-native/Libraries/StyleSheet/StyleSheet'; import type {HostComponent} from 'react-native'; import type { - BubblingEventHandler, - Double, - Int32, - WithDefault, + BubblingEventHandler, + Double, + Int32, + WithDefault, } from 'react-native/Libraries/Types/CodegenTypes'; import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; type DateTimePickerEvent = $ReadOnly<{| - timestamp:Double, - utcOffset:Int32, + timestamp: Double, + utcOffset: Int32, |}>; type NativeProps = $ReadOnly<{| - ...ViewProps, - onChange?: ?BubblingEventHandler, - onPickerDismiss?: ?BubblingEventHandler, - maximumDate?: ?Double, - minimumDate?: ?Double, - date?: ?Double, - locale?: ?string, - minuteInterval?: ?Int32, - mode?: WithDefault<'date' | 'time' | 'datetime' | 'countdown','date'>, - timeZoneOffsetInMinutes?: ?Double, - timeZoneName?: ?string, - textColor?: ?ColorValue, - accentColor?: ?ColorValue, - themeVariant?: WithDefault<'dark' | 'light' | 'unspecified', 'unspecified'>, - displayIOS?: WithDefault< - 'default' | 'spinner' | 'compact' | 'inline', - 'default', - >, - is24Hour?: WithDefault, - enabled?: WithDefault, + ...ViewProps, + onChange?: ?BubblingEventHandler, + onPickerDismiss?: ?BubblingEventHandler, + maximumDate?: ?Double, + minimumDate?: ?Double, + date?: ?Double, + locale?: ?string, + minuteInterval?: ?Int32, + mode?: WithDefault<'date' | 'time' | 'datetime' | 'countdown', 'date'>, + timeZoneOffsetInMinutes?: ?Double, + timeZoneName?: ?string, + textColor?: ?ColorValue, + accentColor?: ?ColorValue, + themeVariant?: WithDefault<'dark' | 'light' | 'unspecified', 'unspecified'>, + displayIOS?: WithDefault< + 'default' | 'spinner' | 'compact' | 'inline', + 'default', + >, + is24Hour?: WithDefault, + enabled?: WithDefault, |}>; export default (codegenNativeComponent('RNDateTimePicker', { - excludedPlatforms: ['android'], + excludedPlatforms: ['android'], }): HostComponent); From 1b2b39bb0929c5027dde2d705051fdca6d06227c Mon Sep 17 00:00:00 2001 From: Young-zhiqiang <1529833211@qq.com> Date: Thu, 23 Nov 2023 14:10:51 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E4=BF=AE=E6=AD=A3package=EF=BC=8Cwindows?= =?UTF-8?q?.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +++--- src/datetimepicker.windows.js | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9ad8d1de..b1623633 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-oh-library/datetimepicker", - "version": "7.5.0-0.0.1", + "version": "7.6.1-0.0.1", "description": "DateTimePicker component for React Native", "harmony": { "alias": "@react-native-community/datetimepicker" @@ -105,10 +105,10 @@ "postinstall-postinstall": "^2.1.0", "prettier": "^2.8.8", "react": "18.2.0", - "react-native": "0.72.0", + "react-native": "^0.71.10", "react-native-builder-bob": "^0.18.3", "react-native-localize": "^3.0.0", - "react-native-test-app": "2.3.13", + "react-native-test-app": "2.5.32", "react-native-windows": "^0.71.3", "react-test-renderer": "18.2.0", "semantic-release": "^19.0.3" diff --git a/src/datetimepicker.windows.js b/src/datetimepicker.windows.js index 3a0e7782..b008503d 100644 --- a/src/datetimepicker.windows.js +++ b/src/datetimepicker.windows.js @@ -39,6 +39,7 @@ export default function RNDateTimePickerQWE( sharedPropsValidation({value: props?.value}); const localProps = { + accessibilityLabel: props.accessibilityLabel, dayOfWeekFormat: props.dayOfWeekFormat, dateFormat: props.dateFormat, firstDayOfWeek: props.firstDayOfWeek, From 3fa4641ff5c2319a6dd928588462279d5d16ff1b Mon Sep 17 00:00:00 2001 From: luoeng225 Date: Fri, 24 Nov 2023 18:28:35 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=85=AC=E4=BB=93=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .npmrc | 2 -- package.json | 10 ++++------ 2 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 .npmrc diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 06997556..00000000 --- a/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -@react-native-oh-library:registry=https://npm.pkg.github.com -//npm.pkg.github.com/:_authToken=${TOKEN} \ No newline at end of file diff --git a/package.json b/package.json index b1623633..51e58b17 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,7 @@ { - "name": "@react-native-oh-library/datetimepicker", + "name": "@react-native-oh-tpl/datetimepicker", "version": "7.6.1-0.0.1", "description": "DateTimePicker component for React Native", - "harmony": { - "alias": "@react-native-community/datetimepicker" - }, "main": "lib/commonjs/index", "module": "lib/module/index", "react-native": "src/index", @@ -29,7 +26,8 @@ "!**/__mocks__" ], "publishConfig": { - "registry": "https://npm.pkg.github.com" + "registry": "https://registry.npmjs.org/", + "access": "public" }, "react-native-builder-bob": { "source": "src", @@ -62,7 +60,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/react-native-oh-library/datetimepicker" + "url": "https://github.com/react-native-oh-library/datetimepicker.git" }, "keywords": [ "react-native-component", From 5b01222b2fb6f736eb132c587487b1c65ea92b18 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Mon, 4 Dec 2023 15:40:36 +0800 Subject: [PATCH 09/18] =?UTF-8?q?ets=E6=BA=90=E7=A0=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81value=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets b/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets index 42db2d74..3dbbff88 100644 --- a/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets +++ b/harmony/datetimepicker/src/main/ets/RNDateTimePicker.ets @@ -75,6 +75,7 @@ export struct RNDateTimePicker { this.descriptor = (newDescriptor as PickerDescriptor) Logger.debug(TAG,`[RNOH]: in RNDateTimePicker,descriptor change :${JSON.stringify(this.descriptor.props)}`) this.isMilitaryTime = this.descriptor.props.is24Hour + this.selectDate = new Date(Number.parseInt(this.descriptor.props.date)); } ) Logger.info(TAG,`[RNOH]: in RNDateTimePicker,propsout :${JSON.stringify(this.descriptor.props)}`) diff --git a/package.json b/package.json index 51e58b17..37fbdede 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-oh-tpl/datetimepicker", - "version": "7.6.1-0.0.1", + "version": "7.6.2-0.0.2", "description": "DateTimePicker component for React Native", "main": "lib/commonjs/index", "module": "lib/module/index", From 547cce9525985c1369973c90cd064dfbed8f8031 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Mon, 4 Dec 2023 16:18:42 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E6=9B=B4=E6=96=B0har=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker.har | Bin 16353 -> 16302 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/harmony/datetimepicker.har b/harmony/datetimepicker.har index f6924fe9e60e1f20c28d86b29915350d7a3b05f4..bb405d3db4a6dcdd7cf07b8121dea722c2c38947 100644 GIT binary patch literal 16302 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 literal 16353 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 From 75c9bf6d230c2d8781e7c0680e08afc7fc892194 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Mon, 4 Dec 2023 16:53:59 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E9=87=8D=E6=96=B0=E4=B8=8A=E4=BC=A0har?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker.har | Bin 16302 -> 16311 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/harmony/datetimepicker.har b/harmony/datetimepicker.har index bb405d3db4a6dcdd7cf07b8121dea722c2c38947..9761ed9e88d595f9993d2458633fef44c6c0e9d5 100644 GIT binary patch delta 16265 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 delta 16280 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 G_WuDXejz3R From d189b9218d388a1432e2b3990c1aaa517e3e2f44 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Wed, 6 Dec 2023 11:42:12 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9onchange=E5=9B=9E?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker.har | Bin 16311 -> 16283 bytes .../src/main/ets/RNDateTimePicker.ets | 8 +++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/harmony/datetimepicker.har b/harmony/datetimepicker.har index 9761ed9e88d595f9993d2458633fef44c6c0e9d5..21ced7c9a5ac7791e801727408fcaa466b041ed0 100644 GIT binary patch literal 16283 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 { Logger.debug(TAG,"CalendarPicker onChange:" + JSON.stringify(newDate)) //0927验证发现 没有执行回调 - this.selectDate.setFullYear(newDate.getFullYear(), newDate.getMonth(), newDate.getDay()) + // this.selectDate.setFullYear(newDate.getFullYear(), newDate.getMonth(), newDate.getDay()) + this.selectDate = newDate this.onDateChange(this.selectDate) }) } else if (this.descriptor.props.displayIOS === "spinner" || this.descriptor.props.displayIOS === "default") { @@ -158,8 +159,9 @@ export struct RNDateTimePicker { .lunar(this.isLunar) .enabled(this.descriptor.props.enabled) .width("100%").height("100%") - .onChange((value: DatePickerResult) => { - this.selectDate.setFullYear(value.year, value.month, value.day) + .onDateChange((value: Date) => { + // this.selectDate.setFullYear(value.year, value.month, value.day) + this.selectDate = value Logger.debug(TAG,"DatePicker,select current date is: "+ JSON.stringify(value)) this.onDateChange(this.selectDate) }) From 86b6c0afa780468c9a3afaad1254cc58744a6ff1 Mon Sep 17 00:00:00 2001 From: liu-bug123 <1518171514@qq.com> Date: Fri, 8 Dec 2023 16:35:08 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9OAT=E6=89=AB=E6=8F=8Fco?= =?UTF-8?q?decheck=E6=A3=80=E6=9F=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker/OAT.xml | 38 +++++++++++++++++++ harmony/datetimepicker/README.OpenSource | 11 ++++++ .../src/main/cpp/ComponentDescriptors.h | 9 +++-- .../DateTimePickerEventEmitRequestHandler.h | 10 +++-- .../src/main/cpp/DateTimePickerJSIBinder.h | 10 +++-- .../src/main/cpp/DateTimePickerNapiBinder.h | 10 +++-- .../src/main/cpp/DateTimePickerPackage.h | 7 ++-- .../src/main/cpp/EventEmitters.cpp | 2 +- .../src/main/cpp/EventEmitters.h | 7 +++- harmony/datetimepicker/src/main/cpp/Props.cpp | 2 +- harmony/datetimepicker/src/main/cpp/Props.h | 7 +++- .../src/main/cpp/ShadowNodes.cpp | 2 +- .../datetimepicker/src/main/cpp/ShadowNodes.h | 6 ++- .../datetimepicker/src/main/cpp/States.cpp | 2 +- harmony/datetimepicker/src/main/cpp/States.h | 7 +++- src/datetimepicker.harmony.js | 2 +- src/picker.harmony.js | 2 +- 17 files changed, 104 insertions(+), 30 deletions(-) create mode 100644 harmony/datetimepicker/OAT.xml create mode 100644 harmony/datetimepicker/README.OpenSource diff --git a/harmony/datetimepicker/OAT.xml b/harmony/datetimepicker/OAT.xml new file mode 100644 index 00000000..bf636592 --- /dev/null +++ b/harmony/datetimepicker/OAT.xml @@ -0,0 +1,38 @@ + + + + LICENSE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/harmony/datetimepicker/README.OpenSource b/harmony/datetimepicker/README.OpenSource new file mode 100644 index 00000000..8346063e --- /dev/null +++ b/harmony/datetimepicker/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "datetimepicker", + "License": "MIT License", + "License File": "https://github.com/react-native-oh-library/datetimepicker/blob/harmony/LICENSE.md", + "Version Number": "7.6.2", + "Owner" : "Dylan Vann " + "Upstream URL": "https://github.com/react-native-datetimepicker/datetimepicker", + "Description": "datetimepicker, React Native date & time picker component." + } +] \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h b/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h index 4ae9f418..b1f77594 100644 --- a/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h +++ b/harmony/datetimepicker/src/main/cpp/ComponentDescriptors.h @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -21,7 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_CPP_C_TRS_H +#define HEADER_FILE_CPP_C_TRS_H #include "ShadowNodes.h" #include @@ -31,4 +33,5 @@ namespace react{ using RNDateTimePickerComponentDescriptor = ConcreteComponentDescriptor; } //namespace react -} //namespace facebook \ No newline at end of file +} //namespace facebook +#endif \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h index 9b64f5c8..af1a0ef6 100644 --- a/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerEventEmitRequestHandler.h @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -21,7 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_CPP_D_LER_H +#define HEADER_FILE_CPP_D_LER_H + #include #include #include "RNOH/ArkJS.h" @@ -69,7 +72,6 @@ class DateTimePickerEventEmitRequestHandler : public EventEmitRequestHandler{ break; } case DateEventType::DATETIME_PICKERDISMISS:{ -// double pageIndex = arkJs.getDouble(arkJs.getObjectProperty(ctx.payload,"pageIndex")); react::RNDateTimePickerEventEmitter::OnPickerDismiss event={}; eventEmitter->onPickerDismiss(event); break; @@ -80,5 +82,5 @@ class DateTimePickerEventEmitRequestHandler : public EventEmitRequestHandler{ }; }; } // namespace rnoh - +#endif diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h index c3a50369..567fc2e9 100644 --- a/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerJSIBinder.h @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -21,7 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_D_J_DER_H +#define HEADER_FILE_D_J_DER_H + #include "RNOHCorePackage/ComponentBinders/ViewComponentJSIBinder.h" namespace rnoh{ @@ -66,4 +69,5 @@ class DateTimePickerJSIBinder : public ViewComponentJSIBinder { return events; } }; -}// namespace rnoh \ No newline at end of file +}// namespace rnoh +#endif \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h index d566386d..e648f058 100644 --- a/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerNapiBinder.h @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -21,7 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_CPP_D_N_DER_H +#define HEADER_FILE_CPP_D_N_DER_H + #include "RNOHCorePackage/ComponentBinders/ViewComponentNapiBinder.h" #include "Props.h" #include "States.h" @@ -66,4 +69,5 @@ class DateTimePickerNapiBinder : public ViewComponentNapiBinder { }; }; -}// namespace rnoh \ No newline at end of file +}// namespace rnoh +#endif \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h b/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h index 8dc482da..8da28eb2 100644 --- a/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h +++ b/harmony/datetimepicker/src/main/cpp/DateTimePickerPackage.h @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -21,8 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef HARMONY_DATETIME_SRC_MAIN_CPP_VIEWPAGERPACKAGE_H -#define HARMONY_DATETIME_SRC_MAIN_CPP_VIEWPAGERPACKAGE_H + +#ifndef HARMONY_DATETIME_SRC_MAIN_CPP_D_P_AGE_H +#define HARMONY_DATETIME_SRC_MAIN_CPP_D_P_AGE_H #include "RNOH/Package.h" #include "ComponentDescriptors.h" diff --git a/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp b/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp index 9ae38b7e..e461d0f5 100644 --- a/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp +++ b/harmony/datetimepicker/src/main/cpp/EventEmitters.cpp @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER diff --git a/harmony/datetimepicker/src/main/cpp/EventEmitters.h b/harmony/datetimepicker/src/main/cpp/EventEmitters.h index ef87897e..9902c653 100644 --- a/harmony/datetimepicker/src/main/cpp/EventEmitters.h +++ b/harmony/datetimepicker/src/main/cpp/EventEmitters.h @@ -21,7 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_CPP_E_E_ERS_H +#define HEADER_FILE_CPP_E_E_ERS_H #include #include @@ -48,4 +50,5 @@ class JSI_EXPORT RNDateTimePickerEventEmitter : public ViewEventEmitter { }; } // namespace react -} // namespace facebook \ No newline at end of file +} // namespace facebook +#endif \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/Props.cpp b/harmony/datetimepicker/src/main/cpp/Props.cpp index 8fce63c1..9c51c79f 100644 --- a/harmony/datetimepicker/src/main/cpp/Props.cpp +++ b/harmony/datetimepicker/src/main/cpp/Props.cpp @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER diff --git a/harmony/datetimepicker/src/main/cpp/Props.h b/harmony/datetimepicker/src/main/cpp/Props.h index cf7b4c60..8b5f6422 100644 --- a/harmony/datetimepicker/src/main/cpp/Props.h +++ b/harmony/datetimepicker/src/main/cpp/Props.h @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -21,7 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_CPP_P_OPS_H +#define HEADER_FILE_CPP_P_OPS_H #include #include @@ -113,3 +115,4 @@ class JSI_EXPORT RNDateTimePickerProps final : public ViewProps { } // namespace react } // namespace facebook +#endif \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp b/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp index 75e8f99f..684c4940 100644 --- a/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp +++ b/harmony/datetimepicker/src/main/cpp/ShadowNodes.cpp @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER diff --git a/harmony/datetimepicker/src/main/cpp/ShadowNodes.h b/harmony/datetimepicker/src/main/cpp/ShadowNodes.h index 26e56375..6ff154dd 100644 --- a/harmony/datetimepicker/src/main/cpp/ShadowNodes.h +++ b/harmony/datetimepicker/src/main/cpp/ShadowNodes.h @@ -14,7 +14,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER @@ -23,7 +23,8 @@ * SOFTWARE. */ -#pragma once +#ifndef HEADER_FILE_CPP_S_DES_H +#define HEADER_FILE_CPP_S_DES_H #include "EventEmitters.h" #include "Props.h" @@ -47,3 +48,4 @@ using RNDateTimePickerShadowNode = ConcreteViewShadowNode< RNDateTimePickerState>; } // namespace react } // namespace facebook +#endif \ No newline at end of file diff --git a/harmony/datetimepicker/src/main/cpp/States.cpp b/harmony/datetimepicker/src/main/cpp/States.cpp index 769d2e80..d5746f6c 100644 --- a/harmony/datetimepicker/src/main/cpp/States.cpp +++ b/harmony/datetimepicker/src/main/cpp/States.cpp @@ -14,7 +14,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER diff --git a/harmony/datetimepicker/src/main/cpp/States.h b/harmony/datetimepicker/src/main/cpp/States.h index 8192af1e..8ba36af7 100644 --- a/harmony/datetimepicker/src/main/cpp/States.h +++ b/harmony/datetimepicker/src/main/cpp/States.h @@ -21,7 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#pragma once + +#ifndef HEADER_FILE_CPP_S_TES_H +#define HEADER_FILE_CPP_S_TES_H #ifdef ANDROID #include @@ -47,4 +49,5 @@ class RNDateTimePickerState { #endif }; } // namespace react -} // namespace facebook \ No newline at end of file +} // namespace facebook +#endif \ No newline at end of file diff --git a/src/datetimepicker.harmony.js b/src/datetimepicker.harmony.js index 23e5766d..b1d94397 100644 --- a/src/datetimepicker.harmony.js +++ b/src/datetimepicker.harmony.js @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER diff --git a/src/picker.harmony.js b/src/picker.harmony.js index 532a9242..1a98704b 100644 --- a/src/picker.harmony.js +++ b/src/picker.harmony.js @@ -13,7 +13,7 @@ * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANT KIND, EXPRESS OR + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER From c72b4e0f1d186af259cd6e40e35db1e79bdb527c Mon Sep 17 00:00:00 2001 From: liu-bug123 <@1518171514@qq.com> Date: Thu, 14 Dec 2023 14:27:38 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E9=87=8D=E6=96=B0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=A3=80=E6=9F=A5=E5=90=8E=E7=9A=84=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0har=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harmony/datetimepicker.har | Bin 16283 -> 20323 bytes harmony/datetimepicker/README.OpenSource | 4 +- harmony/datetimepicker/README.md | 262 ++++++++++++++++++ harmony/datetimepicker/index.ets | 2 +- .../src/main/cpp/EventEmitters.h | 2 +- harmony/datetimepicker/src/main/cpp/States.h | 2 +- harmony/datetimepicker/src/main/ets/Logger.ts | 2 +- .../src/main/ets/RNDateTimePicker.ets | 2 +- 8 files changed, 269 insertions(+), 7 deletions(-) create mode 100644 harmony/datetimepicker/README.md diff --git a/harmony/datetimepicker.har b/harmony/datetimepicker.har index 21ced7c9a5ac7791e801727408fcaa466b041ed0..3ed384aa2a942e1a4a62d1006d198fb2d0606f3b 100644 GIT binary patch literal 20323 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" + "Owner" : "Martijn Swaagman " "Upstream URL": "https://github.com/react-native-datetimepicker/datetimepicker", "Description": "datetimepicker, React Native date & time picker component." } diff --git a/harmony/datetimepicker/README.md b/harmony/datetimepicker/README.md new file mode 100644 index 00000000..a7db105d --- /dev/null +++ b/harmony/datetimepicker/README.md @@ -0,0 +1,262 @@ +> 模板版本:v0.0.1 + +

+

@react-native-community/datetimepicker

+

+

+ + Supported platforms + + + License + +

+ +## 安装与使用 + +进入到工程目录并输入以下命令: + + + +**正在 npm 发布中,当前请先从仓库[Release](https://github.com/react-native-oh-library/datetimepicker/releases)中获取库 tgz,通过使用本地依赖来安装本库。** + +#### **yarn** + +```bash +yarn add xxx +``` + +#### **npm** + +```bash +npm install xxx +``` + + + +下面的代码展示了这个库的基本使用场景: + +```js +import DateTimePicker from '@react-native-community/datetimepicker'; + +export const App = () => { + const [date, setDate] = useState(new Date(1598051730000)); + const [mode, setMode] = useState('date'); + const [show, setShow] = useState(false); + + const onChange = (event, selectedDate) => { + const currentDate = selectedDate; + setShow(false); + setDate(currentDate); + }; + + const showMode = (currentMode) => { + setShow(true); + setMode(currentMode); + }; + + const showDatepicker = () => { + showMode('date'); + }; + + const showTimepicker = () => { + showMode('time'); + }; + + return ( + +