react-native-platform-components 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PlatformComponents.podspec +1 -1
- package/README.md +47 -51
- package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +664 -0
- package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +241 -0
- package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +159 -0
- package/android/src/main/java/com/platformcomponents/PCButtonView.kt +527 -0
- package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +204 -0
- package/android/src/main/java/com/platformcomponents/PCContextMenuView.kt +41 -151
- package/android/src/main/java/com/platformcomponents/PCContextMenuViewManager.kt +7 -63
- package/android/src/main/java/com/platformcomponents/PCDatePickerView.kt +310 -115
- package/android/src/main/java/com/platformcomponents/PCDatePickerViewManager.kt +23 -3
- package/android/src/main/java/com/platformcomponents/PCExpressive.kt +112 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonView.kt +485 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonViewManager.kt +109 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +247 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +73 -0
- package/android/src/main/java/com/platformcomponents/PCHaptics.kt +46 -0
- package/android/src/main/java/com/platformcomponents/PCImageLoader.kt +42 -7
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerView.kt +32 -0
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerViewManager.kt +31 -0
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassView.kt +32 -6
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassViewManager.kt +4 -0
- package/android/src/main/java/com/platformcomponents/PCMenuSupport.kt +280 -0
- package/android/src/main/java/com/platformcomponents/PCNavigationBarSupport.kt +332 -0
- package/android/src/main/java/com/platformcomponents/PCNavigationRailView.kt +448 -0
- package/android/src/main/java/com/platformcomponents/PCNavigationRailViewManager.kt +176 -0
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +35 -17
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +20 -3
- package/android/src/main/java/com/platformcomponents/PCSelectionMenuView.kt +371 -39
- package/android/src/main/java/com/platformcomponents/PCSelectionMenuViewManager.kt +18 -4
- package/android/src/main/java/com/platformcomponents/PCTabBarView.kt +397 -0
- package/android/src/main/java/com/platformcomponents/PCTabBarViewManager.kt +182 -0
- package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +1393 -0
- package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +354 -0
- package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
- package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +8 -0
- package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
- package/android/src/main/res/values/attrs.xml +13 -0
- package/android/src/main/res/values/ids.xml +5 -0
- package/android/src/main/res/values/styles.xml +207 -0
- package/ios/PCButton.h +10 -0
- package/ios/PCButton.mm +311 -0
- package/ios/PCButtonGroup.h +10 -0
- package/ios/PCButtonGroup.mm +323 -0
- package/ios/PCButtonGroupView.swift +473 -0
- package/ios/PCButtonSupport.swift +312 -0
- package/ios/PCButtonView.swift +438 -0
- package/ios/PCConstants.swift +23 -2
- package/ios/PCContextMenu.mm +28 -110
- package/ios/PCContextMenu.swift +106 -167
- package/ios/PCDatePicker.mm +21 -9
- package/ios/PCDatePickerView.swift +94 -20
- package/ios/PCFloatingActionButton.h +10 -0
- package/ios/PCFloatingActionButton.mm +177 -0
- package/ios/PCFloatingActionButtonView.swift +426 -0
- package/ios/PCFloatingToolbar.h +10 -0
- package/ios/PCFloatingToolbar.mm +103 -0
- package/ios/PCFloatingToolbarView.swift +336 -0
- package/ios/PCHaptics.swift +91 -0
- package/ios/PCImageLoader.swift +76 -12
- package/ios/PCLiquidGlass.mm +36 -0
- package/ios/PCLiquidGlass.swift +221 -114
- package/ios/PCLiquidGlassContainer.h +10 -0
- package/ios/PCLiquidGlassContainer.mm +84 -0
- package/ios/PCLiquidGlassContainer.swift +69 -0
- package/ios/PCMenuItems.h +76 -0
- package/ios/PCMenuSupport.swift +350 -0
- package/ios/PCNavigationRail.h +10 -0
- package/ios/PCNavigationRail.mm +270 -0
- package/ios/PCNavigationRailView.swift +415 -0
- package/ios/PCSegmentedControl.mm +17 -2
- package/ios/PCSegmentedControl.swift +57 -7
- package/ios/PCSelectionMenu.mm +36 -8
- package/ios/PCSelectionMenu.swift +224 -48
- package/ios/PCTabBar.h +10 -0
- package/ios/PCTabBar.mm +285 -0
- package/ios/PCTabBarAccessory.h +10 -0
- package/ios/PCTabBarAccessory.mm +93 -0
- package/ios/PCTabBarAccessoryView.swift +96 -0
- package/ios/PCTabBarView.swift +671 -0
- package/ios/PCTextField.h +10 -0
- package/ios/PCTextField.mm +546 -0
- package/ios/PCTextFieldView.swift +1558 -0
- package/lib/commonjs/Button.js +149 -0
- package/lib/commonjs/Button.js.map +1 -0
- package/lib/commonjs/ButtonGroup.js +109 -0
- package/lib/commonjs/ButtonGroup.js.map +1 -0
- package/lib/commonjs/ButtonGroupNativeComponent.ts +191 -0
- package/lib/commonjs/ButtonNativeComponent.ts +192 -0
- package/lib/commonjs/ContextMenu.js +9 -48
- package/lib/commonjs/ContextMenu.js.map +1 -1
- package/lib/commonjs/ContextMenuNativeComponent.ts +47 -49
- package/lib/commonjs/DatePicker.js +98 -2
- package/lib/commonjs/DatePicker.js.map +1 -1
- package/lib/commonjs/DatePickerNativeComponent.ts +19 -2
- package/lib/commonjs/FloatingActionButton.js +60 -0
- package/lib/commonjs/FloatingActionButton.js.map +1 -0
- package/lib/commonjs/FloatingActionButtonNativeComponent.ts +58 -0
- package/lib/commonjs/FloatingToolbar.js +77 -0
- package/lib/commonjs/FloatingToolbar.js.map +1 -0
- package/lib/commonjs/FloatingToolbarNativeComponent.ts +47 -0
- package/lib/commonjs/LiquidGlass.js +7 -1
- package/lib/commonjs/LiquidGlass.js.map +1 -1
- package/lib/commonjs/LiquidGlassContainer.js +32 -0
- package/lib/commonjs/LiquidGlassContainer.js.map +1 -0
- package/lib/commonjs/LiquidGlassContainerNativeComponent.ts +17 -0
- package/lib/commonjs/LiquidGlassNativeComponent.ts +8 -0
- package/lib/commonjs/NavigationRail.js +104 -0
- package/lib/commonjs/NavigationRail.js.map +1 -0
- package/lib/commonjs/NavigationRailNativeComponent.ts +107 -0
- package/lib/commonjs/PlatformComponentsProvider.js +18 -0
- package/lib/commonjs/PlatformComponentsProvider.js.map +1 -0
- package/lib/commonjs/SegmentedControl.js +18 -85
- package/lib/commonjs/SegmentedControl.js.map +1 -1
- package/lib/commonjs/SegmentedControlNativeComponent.ts +14 -0
- package/lib/commonjs/SelectionMenu.js +27 -3
- package/lib/commonjs/SelectionMenu.js.map +1 -1
- package/lib/commonjs/SelectionMenuNativeComponent.ts +26 -4
- package/lib/commonjs/SplitButton.js +98 -0
- package/lib/commonjs/SplitButton.js.map +1 -0
- package/lib/commonjs/TabBar.js +203 -0
- package/lib/commonjs/TabBar.js.map +1 -0
- package/lib/commonjs/TabBarAccessoryNativeComponent.ts +19 -0
- package/lib/commonjs/TabBarNativeComponent.ts +145 -0
- package/lib/commonjs/TextField.js +358 -0
- package/lib/commonjs/TextField.js.map +1 -0
- package/lib/commonjs/TextFieldNativeComponent.ts +324 -0
- package/lib/commonjs/focusRegistry.js +79 -0
- package/lib/commonjs/focusRegistry.js.map +1 -0
- package/lib/commonjs/haptics.js +2 -0
- package/lib/commonjs/haptics.js.map +1 -0
- package/lib/commonjs/icons.js +106 -0
- package/lib/commonjs/icons.js.map +1 -0
- package/lib/commonjs/index.js +143 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +157 -63
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/jest.js +910 -0
- package/lib/commonjs/jest.js.map +1 -0
- package/lib/commonjs/labelStyle.js +27 -0
- package/lib/commonjs/labelStyle.js.map +1 -0
- package/lib/commonjs/menuItems.js +68 -0
- package/lib/commonjs/menuItems.js.map +1 -0
- package/lib/commonjs/reactNativeInternals.d.js +2 -0
- package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
- package/lib/commonjs/selectionIdentifiers.js +18 -0
- package/lib/commonjs/selectionIdentifiers.js.map +1 -0
- package/lib/commonjs/submitBehavior.js +19 -0
- package/lib/commonjs/submitBehavior.js.map +1 -0
- package/lib/commonjs/tabItems.js +49 -0
- package/lib/commonjs/tabItems.js.map +1 -0
- package/lib/commonjs/web/Button.js +170 -0
- package/lib/commonjs/web/Button.js.map +1 -0
- package/lib/commonjs/web/ButtonGroup.js +119 -0
- package/lib/commonjs/web/ButtonGroup.js.map +1 -0
- package/lib/commonjs/web/DatePicker.js +168 -0
- package/lib/commonjs/web/DatePicker.js.map +1 -0
- package/lib/commonjs/web/DateRangePicker.js +137 -0
- package/lib/commonjs/web/DateRangePicker.js.map +1 -0
- package/lib/commonjs/web/Dialog.js +54 -0
- package/lib/commonjs/web/Dialog.js.map +1 -0
- package/lib/commonjs/web/FloatingActionButton.js +98 -0
- package/lib/commonjs/web/FloatingActionButton.js.map +1 -0
- package/lib/commonjs/web/Icon.js +34 -0
- package/lib/commonjs/web/Icon.js.map +1 -0
- package/lib/commonjs/web/NativeTheme.js +28 -0
- package/lib/commonjs/web/NativeTheme.js.map +1 -0
- package/lib/commonjs/web/NavigationRail.js +139 -0
- package/lib/commonjs/web/NavigationRail.js.map +1 -0
- package/lib/commonjs/web/PlatformComponentsProvider.js +51 -0
- package/lib/commonjs/web/PlatformComponentsProvider.js.map +1 -0
- package/lib/commonjs/web/SegmentedControl.js +117 -0
- package/lib/commonjs/web/SegmentedControl.js.map +1 -0
- package/lib/commonjs/web/SelectionMenu.js +142 -0
- package/lib/commonjs/web/SelectionMenu.js.map +1 -0
- package/lib/commonjs/web/SplitButton.js +35 -0
- package/lib/commonjs/web/SplitButton.js.map +1 -0
- package/lib/commonjs/web/TabBar.js +131 -0
- package/lib/commonjs/web/TabBar.js.map +1 -0
- package/lib/commonjs/web/TextField.js +322 -0
- package/lib/commonjs/web/TextField.js.map +1 -0
- package/lib/commonjs/web/components.js +36 -0
- package/lib/commonjs/web/components.js.map +1 -0
- package/lib/commonjs/web/containers.js +121 -0
- package/lib/commonjs/web/containers.js.map +1 -0
- package/lib/commonjs/web/dateInput.js +116 -0
- package/lib/commonjs/web/dateInput.js.map +1 -0
- package/lib/commonjs/web/shared.js +192 -0
- package/lib/commonjs/web/shared.js.map +1 -0
- package/lib/commonjs/webComponents.js +6 -0
- package/lib/commonjs/webComponents.js.map +1 -0
- package/lib/module/Button.js +142 -0
- package/lib/module/Button.js.map +1 -0
- package/lib/module/ButtonGroup.js +102 -0
- package/lib/module/ButtonGroup.js.map +1 -0
- package/lib/module/ButtonGroupNativeComponent.ts +191 -0
- package/lib/module/ButtonNativeComponent.ts +192 -0
- package/lib/module/ContextMenu.js +9 -48
- package/lib/module/ContextMenu.js.map +1 -1
- package/lib/module/ContextMenuNativeComponent.ts +47 -49
- package/lib/module/DatePicker.js +98 -4
- package/lib/module/DatePicker.js.map +1 -1
- package/lib/module/DatePickerNativeComponent.ts +19 -2
- package/lib/module/FloatingActionButton.js +53 -0
- package/lib/module/FloatingActionButton.js.map +1 -0
- package/lib/module/FloatingActionButtonNativeComponent.ts +58 -0
- package/lib/module/FloatingToolbar.js +70 -0
- package/lib/module/FloatingToolbar.js.map +1 -0
- package/lib/module/FloatingToolbarNativeComponent.ts +47 -0
- package/lib/module/LiquidGlass.js +7 -1
- package/lib/module/LiquidGlass.js.map +1 -1
- package/lib/module/LiquidGlassContainer.js +26 -0
- package/lib/module/LiquidGlassContainer.js.map +1 -0
- package/lib/module/LiquidGlassContainerNativeComponent.ts +17 -0
- package/lib/module/LiquidGlassNativeComponent.ts +8 -0
- package/lib/module/NavigationRail.js +99 -0
- package/lib/module/NavigationRail.js.map +1 -0
- package/lib/module/NavigationRailNativeComponent.ts +107 -0
- package/lib/module/PlatformComponentsProvider.js +13 -0
- package/lib/module/PlatformComponentsProvider.js.map +1 -0
- package/lib/module/SegmentedControl.js +18 -85
- package/lib/module/SegmentedControl.js.map +1 -1
- package/lib/module/SegmentedControlNativeComponent.ts +14 -0
- package/lib/module/SelectionMenu.js +27 -3
- package/lib/module/SelectionMenu.js.map +1 -1
- package/lib/module/SelectionMenuNativeComponent.ts +26 -4
- package/lib/module/SplitButton.js +91 -0
- package/lib/module/SplitButton.js.map +1 -0
- package/lib/module/TabBar.js +196 -0
- package/lib/module/TabBar.js.map +1 -0
- package/lib/module/TabBarAccessoryNativeComponent.ts +19 -0
- package/lib/module/TabBarNativeComponent.ts +145 -0
- package/lib/module/TextField.js +352 -0
- package/lib/module/TextField.js.map +1 -0
- package/lib/module/TextFieldNativeComponent.ts +324 -0
- package/lib/module/focusRegistry.js +75 -0
- package/lib/module/focusRegistry.js.map +1 -0
- package/lib/module/haptics.js +2 -0
- package/lib/module/haptics.js.map +1 -0
- package/lib/module/icons.js +101 -0
- package/lib/module/icons.js.map +1 -0
- package/lib/module/index.js +13 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +12 -59
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/jest.js +840 -0
- package/lib/module/jest.js.map +1 -0
- package/lib/module/labelStyle.js +23 -0
- package/lib/module/labelStyle.js.map +1 -0
- package/lib/module/menuItems.js +65 -0
- package/lib/module/menuItems.js.map +1 -0
- package/lib/module/reactNativeInternals.d.js +2 -0
- package/lib/module/reactNativeInternals.d.js.map +1 -0
- package/lib/module/selectionIdentifiers.js +14 -0
- package/lib/module/selectionIdentifiers.js.map +1 -0
- package/lib/module/submitBehavior.js +15 -0
- package/lib/module/submitBehavior.js.map +1 -0
- package/lib/module/tabItems.js +45 -0
- package/lib/module/tabItems.js.map +1 -0
- package/lib/module/web/Button.js +164 -0
- package/lib/module/web/Button.js.map +1 -0
- package/lib/module/web/ButtonGroup.js +113 -0
- package/lib/module/web/ButtonGroup.js.map +1 -0
- package/lib/module/web/DatePicker.js +162 -0
- package/lib/module/web/DatePicker.js.map +1 -0
- package/lib/module/web/DateRangePicker.js +131 -0
- package/lib/module/web/DateRangePicker.js.map +1 -0
- package/lib/module/web/Dialog.js +48 -0
- package/lib/module/web/Dialog.js.map +1 -0
- package/lib/module/web/FloatingActionButton.js +94 -0
- package/lib/module/web/FloatingActionButton.js.map +1 -0
- package/lib/module/web/Icon.js +29 -0
- package/lib/module/web/Icon.js.map +1 -0
- package/lib/module/web/NativeTheme.js +23 -0
- package/lib/module/web/NativeTheme.js.map +1 -0
- package/lib/module/web/NavigationRail.js +133 -0
- package/lib/module/web/NavigationRail.js.map +1 -0
- package/lib/module/web/PlatformComponentsProvider.js +44 -0
- package/lib/module/web/PlatformComponentsProvider.js.map +1 -0
- package/lib/module/web/SegmentedControl.js +112 -0
- package/lib/module/web/SegmentedControl.js.map +1 -0
- package/lib/module/web/SelectionMenu.js +137 -0
- package/lib/module/web/SelectionMenu.js.map +1 -0
- package/lib/module/web/SplitButton.js +30 -0
- package/lib/module/web/SplitButton.js.map +1 -0
- package/lib/module/web/TabBar.js +126 -0
- package/lib/module/web/TabBar.js.map +1 -0
- package/lib/module/web/TextField.js +316 -0
- package/lib/module/web/TextField.js.map +1 -0
- package/lib/module/web/components.js +33 -0
- package/lib/module/web/components.js.map +1 -0
- package/lib/module/web/containers.js +112 -0
- package/lib/module/web/containers.js.map +1 -0
- package/lib/module/web/dateInput.js +109 -0
- package/lib/module/web/dateInput.js.map +1 -0
- package/lib/module/web/shared.js +179 -0
- package/lib/module/web/shared.js.map +1 -0
- package/lib/module/webComponents.js +4 -0
- package/lib/module/webComponents.js.map +1 -0
- package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Button.d.ts +184 -0
- package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts +117 -0
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +154 -0
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +148 -0
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ContextMenu.d.ts +20 -33
- package/lib/typescript/commonjs/src/ContextMenu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +45 -47
- package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DatePicker.d.ts +74 -1
- package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +16 -1
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/FloatingActionButton.d.ts +67 -0
- package/lib/typescript/commonjs/src/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts +43 -0
- package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +75 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +36 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LiquidGlass.d.ts +17 -0
- package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts +27 -0
- package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
- package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +7 -0
- package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/NavigationRail.d.ts +86 -0
- package/lib/typescript/commonjs/src/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts +81 -0
- package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts +6 -0
- package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts +35 -47
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +11 -0
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SelectionMenu.d.ts +44 -2
- package/lib/typescript/commonjs/src/SelectionMenu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +20 -4
- package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SplitButton.d.ts +83 -0
- package/lib/typescript/commonjs/src/SplitButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TabBar.d.ts +144 -0
- package/lib/typescript/commonjs/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts +13 -0
- package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts +110 -0
- package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TextField.d.ts +332 -0
- package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +240 -0
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
- package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/haptics.d.ts +20 -0
- package/lib/typescript/commonjs/src/haptics.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/icons.d.ts +58 -0
- package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +13 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.web.d.ts +25 -133
- package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/jest.d.ts +139 -0
- package/lib/typescript/commonjs/src/jest.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
- package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/menuItems.d.ts +100 -0
- package/lib/typescript/commonjs/src/menuItems.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts +3 -0
- package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/sharedTypes.d.ts +6 -1
- package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/submitBehavior.d.ts +9 -0
- package/lib/typescript/commonjs/src/submitBehavior.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/tabItems.d.ts +55 -0
- package/lib/typescript/commonjs/src/tabItems.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/Button.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/Button.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts +11 -0
- package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/DatePicker.d.ts +14 -0
- package/lib/typescript/commonjs/src/web/DatePicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts +11 -0
- package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/Dialog.d.ts +12 -0
- package/lib/typescript/commonjs/src/web/Dialog.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts +8 -0
- package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/Icon.d.ts +12 -0
- package/lib/typescript/commonjs/src/web/Icon.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/NativeTheme.d.ts +10 -0
- package/lib/typescript/commonjs/src/web/NativeTheme.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/NavigationRail.d.ts +8 -0
- package/lib/typescript/commonjs/src/web/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts +10 -0
- package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts +8 -0
- package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts +10 -0
- package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/SplitButton.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/SplitButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/TabBar.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/TabBar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/TextField.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/TextField.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/components.d.ts +17 -0
- package/lib/typescript/commonjs/src/web/components.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/containers.d.ts +24 -0
- package/lib/typescript/commonjs/src/web/containers.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/dateInput.d.ts +20 -0
- package/lib/typescript/commonjs/src/web/dateInput.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/shared.d.ts +43 -0
- package/lib/typescript/commonjs/src/web/shared.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/webComponents.d.ts +43 -0
- package/lib/typescript/commonjs/src/webComponents.d.ts.map +1 -0
- package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
- package/lib/typescript/module/src/Button.d.ts +184 -0
- package/lib/typescript/module/src/Button.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonGroup.d.ts +117 -0
- package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +154 -0
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts +148 -0
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ContextMenu.d.ts +20 -33
- package/lib/typescript/module/src/ContextMenu.d.ts.map +1 -1
- package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +45 -47
- package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePicker.d.ts +74 -1
- package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +16 -1
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/FloatingActionButton.d.ts +67 -0
- package/lib/typescript/module/src/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts +43 -0
- package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts +75 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +36 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/LiquidGlass.d.ts +17 -0
- package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
- package/lib/typescript/module/src/LiquidGlassContainer.d.ts +27 -0
- package/lib/typescript/module/src/LiquidGlassContainer.d.ts.map +1 -0
- package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
- package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +7 -0
- package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/NavigationRail.d.ts +86 -0
- package/lib/typescript/module/src/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts +81 -0
- package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/PlatformComponentsProvider.d.ts +6 -0
- package/lib/typescript/module/src/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/SegmentedControl.d.ts +35 -47
- package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +11 -0
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/SelectionMenu.d.ts +44 -2
- package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
- package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +20 -4
- package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/SplitButton.d.ts +83 -0
- package/lib/typescript/module/src/SplitButton.d.ts.map +1 -0
- package/lib/typescript/module/src/TabBar.d.ts +144 -0
- package/lib/typescript/module/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts +13 -0
- package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/TabBarNativeComponent.d.ts +110 -0
- package/lib/typescript/module/src/TabBarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/TextField.d.ts +332 -0
- package/lib/typescript/module/src/TextField.d.ts.map +1 -0
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +240 -0
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
- package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
- package/lib/typescript/module/src/haptics.d.ts +20 -0
- package/lib/typescript/module/src/haptics.d.ts.map +1 -0
- package/lib/typescript/module/src/icons.d.ts +58 -0
- package/lib/typescript/module/src/icons.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +13 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/index.web.d.ts +25 -133
- package/lib/typescript/module/src/index.web.d.ts.map +1 -1
- package/lib/typescript/module/src/jest.d.ts +139 -0
- package/lib/typescript/module/src/jest.d.ts.map +1 -0
- package/lib/typescript/module/src/labelStyle.d.ts +20 -0
- package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
- package/lib/typescript/module/src/menuItems.d.ts +100 -0
- package/lib/typescript/module/src/menuItems.d.ts.map +1 -0
- package/lib/typescript/module/src/selectionIdentifiers.d.ts +3 -0
- package/lib/typescript/module/src/selectionIdentifiers.d.ts.map +1 -0
- package/lib/typescript/module/src/sharedTypes.d.ts +6 -1
- package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
- package/lib/typescript/module/src/submitBehavior.d.ts +9 -0
- package/lib/typescript/module/src/submitBehavior.d.ts.map +1 -0
- package/lib/typescript/module/src/tabItems.d.ts +55 -0
- package/lib/typescript/module/src/tabItems.d.ts.map +1 -0
- package/lib/typescript/module/src/web/Button.d.ts +9 -0
- package/lib/typescript/module/src/web/Button.d.ts.map +1 -0
- package/lib/typescript/module/src/web/ButtonGroup.d.ts +11 -0
- package/lib/typescript/module/src/web/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/module/src/web/DatePicker.d.ts +14 -0
- package/lib/typescript/module/src/web/DatePicker.d.ts.map +1 -0
- package/lib/typescript/module/src/web/DateRangePicker.d.ts +11 -0
- package/lib/typescript/module/src/web/DateRangePicker.d.ts.map +1 -0
- package/lib/typescript/module/src/web/Dialog.d.ts +12 -0
- package/lib/typescript/module/src/web/Dialog.d.ts.map +1 -0
- package/lib/typescript/module/src/web/FloatingActionButton.d.ts +8 -0
- package/lib/typescript/module/src/web/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/module/src/web/Icon.d.ts +12 -0
- package/lib/typescript/module/src/web/Icon.d.ts.map +1 -0
- package/lib/typescript/module/src/web/NativeTheme.d.ts +10 -0
- package/lib/typescript/module/src/web/NativeTheme.d.ts.map +1 -0
- package/lib/typescript/module/src/web/NavigationRail.d.ts +8 -0
- package/lib/typescript/module/src/web/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts +10 -0
- package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/web/SegmentedControl.d.ts +8 -0
- package/lib/typescript/module/src/web/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/module/src/web/SelectionMenu.d.ts +10 -0
- package/lib/typescript/module/src/web/SelectionMenu.d.ts.map +1 -0
- package/lib/typescript/module/src/web/SplitButton.d.ts +9 -0
- package/lib/typescript/module/src/web/SplitButton.d.ts.map +1 -0
- package/lib/typescript/module/src/web/TabBar.d.ts +9 -0
- package/lib/typescript/module/src/web/TabBar.d.ts.map +1 -0
- package/lib/typescript/module/src/web/TextField.d.ts +9 -0
- package/lib/typescript/module/src/web/TextField.d.ts.map +1 -0
- package/lib/typescript/module/src/web/components.d.ts +17 -0
- package/lib/typescript/module/src/web/components.d.ts.map +1 -0
- package/lib/typescript/module/src/web/containers.d.ts +24 -0
- package/lib/typescript/module/src/web/containers.d.ts.map +1 -0
- package/lib/typescript/module/src/web/dateInput.d.ts +20 -0
- package/lib/typescript/module/src/web/dateInput.d.ts.map +1 -0
- package/lib/typescript/module/src/web/shared.d.ts +43 -0
- package/lib/typescript/module/src/web/shared.d.ts.map +1 -0
- package/lib/typescript/module/src/webComponents.d.ts +43 -0
- package/lib/typescript/module/src/webComponents.d.ts.map +1 -0
- package/package.json +55 -4
- package/plugin/build/index.d.ts +3 -2
- package/plugin/build/index.d.ts.map +1 -1
- package/react-native.config.js +6 -0
- package/shared/PCButtonComponentDescriptors-custom.h +22 -0
- package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
- package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
- package/shared/PCButtonGroupShadowNode-custom.h +55 -0
- package/shared/PCButtonGroupState-custom.h +61 -0
- package/shared/PCButtonShadowNode-custom.cpp +48 -0
- package/shared/PCButtonShadowNode-custom.h +55 -0
- package/shared/PCButtonState-custom.h +61 -0
- package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
- package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
- package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
- package/shared/PCFloatingActionButtonState-custom.h +61 -0
- package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
- package/shared/PCNavigationRailShadowNode-custom.h +42 -0
- package/shared/PCNavigationRailState-custom.h +62 -0
- package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
- package/shared/PCTabBarShadowNode-custom.cpp +54 -0
- package/shared/PCTabBarShadowNode-custom.h +54 -0
- package/shared/PCTabBarState-custom.h +62 -0
- package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
- package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
- package/shared/PCTextFieldShadowNode-custom.h +55 -0
- package/shared/PCTextFieldState-custom.h +61 -0
- package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +6 -0
- package/src/Button.tsx +359 -0
- package/src/ButtonGroup.tsx +251 -0
- package/src/ButtonGroupNativeComponent.ts +191 -0
- package/src/ButtonNativeComponent.ts +192 -0
- package/src/ContextMenu.tsx +34 -81
- package/src/ContextMenuNativeComponent.ts +47 -49
- package/src/DatePicker.tsx +182 -4
- package/src/DatePickerNativeComponent.ts +19 -2
- package/src/FloatingActionButton.tsx +121 -0
- package/src/FloatingActionButtonNativeComponent.ts +58 -0
- package/src/FloatingToolbar.tsx +164 -0
- package/src/FloatingToolbarNativeComponent.ts +47 -0
- package/src/LiquidGlass.tsx +24 -1
- package/src/LiquidGlassContainer.tsx +42 -0
- package/src/LiquidGlassContainerNativeComponent.ts +17 -0
- package/src/LiquidGlassNativeComponent.ts +8 -0
- package/src/NavigationRail.tsx +203 -0
- package/src/NavigationRailNativeComponent.ts +107 -0
- package/src/PlatformComponentsProvider.tsx +15 -0
- package/src/SegmentedControl.tsx +57 -119
- package/src/SegmentedControlNativeComponent.ts +14 -0
- package/src/SelectionMenu.tsx +81 -6
- package/src/SelectionMenuNativeComponent.ts +26 -4
- package/src/SplitButton.tsx +198 -0
- package/src/TabBar.tsx +373 -0
- package/src/TabBarAccessoryNativeComponent.ts +19 -0
- package/src/TabBarNativeComponent.ts +145 -0
- package/src/TextField.tsx +908 -0
- package/src/TextFieldNativeComponent.ts +324 -0
- package/src/focusRegistry.ts +90 -0
- package/src/haptics.ts +31 -0
- package/src/icons.ts +143 -0
- package/src/index.tsx +13 -0
- package/src/index.web.tsx +53 -199
- package/src/jest.tsx +958 -0
- package/src/labelStyle.ts +36 -0
- package/src/menuItems.ts +152 -0
- package/src/reactNativeInternals.d.ts +22 -0
- package/src/selectionIdentifiers.ts +17 -0
- package/src/sharedTypes.ts +7 -1
- package/src/submitBehavior.ts +16 -0
- package/src/tabItems.ts +113 -0
- package/src/web/Button.tsx +201 -0
- package/src/web/ButtonGroup.tsx +154 -0
- package/src/web/DatePicker.tsx +204 -0
- package/src/web/DateRangePicker.tsx +135 -0
- package/src/web/Dialog.tsx +54 -0
- package/src/web/FloatingActionButton.tsx +76 -0
- package/src/web/Icon.tsx +33 -0
- package/src/web/NativeTheme.ts +23 -0
- package/src/web/NavigationRail.tsx +148 -0
- package/src/web/PlatformComponentsProvider.tsx +48 -0
- package/src/web/SegmentedControl.tsx +127 -0
- package/src/web/SelectionMenu.tsx +149 -0
- package/src/web/SplitButton.tsx +32 -0
- package/src/web/TabBar.tsx +150 -0
- package/src/web/TextField.tsx +361 -0
- package/src/web/components.tsx +71 -0
- package/src/web/containers.tsx +130 -0
- package/src/web/dateInput.ts +137 -0
- package/src/web/shared.ts +176 -0
- package/src/webComponents.ts +45 -0
- package/android/src/main/java/com/platformcomponents/DateConstraints.kt +0 -83
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// TextFieldNativeComponent.ts
|
|
2
|
+
import type * as React from 'react';
|
|
3
|
+
import type { ColorValue, HostComponent, ViewProps } from 'react-native';
|
|
4
|
+
import { codegenNativeCommands, codegenNativeComponent } from 'react-native';
|
|
5
|
+
import type { BubblingEventHandler, Double, Int32 } from './codegenTypes';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Icon fields, pre-resolved on the JS side (see icons.ts).
|
|
9
|
+
*/
|
|
10
|
+
export type TextFieldIconProps = Readonly<{
|
|
11
|
+
iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
|
|
12
|
+
iconName: string; // SF Symbol (iOS) or drawable resource name (Android)
|
|
13
|
+
iconRequest: string;
|
|
14
|
+
iconUri: string; // Resolved image URI when iconType === 'image'
|
|
15
|
+
iconScale: Double; // Resolved image scale when iconType === 'image'
|
|
16
|
+
iconTinted: string; // 'true' | 'false' — draw the image as a tinted template
|
|
17
|
+
}>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Text font. Empty strings / 0 mean "platform default".
|
|
21
|
+
*/
|
|
22
|
+
export type TextFieldTextStyleProps = Readonly<{
|
|
23
|
+
fontFamily?: string;
|
|
24
|
+
fontSize?: Double;
|
|
25
|
+
fontWeight?: string; // 'normal' | 'bold' | '100'..'900'
|
|
26
|
+
fontStyle?: string; // 'normal' | 'italic'
|
|
27
|
+
}>;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Fired on every edit. `eventCount` is the native edit counter that JS hands
|
|
31
|
+
* back with `setText`, so a stale controlled value can't overwrite what the
|
|
32
|
+
* user typed since.
|
|
33
|
+
*/
|
|
34
|
+
export type TextFieldChangeEvent = Readonly<{
|
|
35
|
+
text: string;
|
|
36
|
+
eventCount: Int32;
|
|
37
|
+
}>;
|
|
38
|
+
|
|
39
|
+
/** Focus, blur and submit carry the text at that moment. */
|
|
40
|
+
export type TextFieldTextEvent = Readonly<{
|
|
41
|
+
text: string;
|
|
42
|
+
}>;
|
|
43
|
+
|
|
44
|
+
/** The cursor or selection, as UTF-16 offsets into the text. */
|
|
45
|
+
export type TextFieldSelectionEvent = Readonly<{
|
|
46
|
+
start: Int32;
|
|
47
|
+
end: Int32;
|
|
48
|
+
}>;
|
|
49
|
+
|
|
50
|
+
/** A press on a keyboard toolbar button (iOS). */
|
|
51
|
+
export type TextFieldToolbarPressEvent = Readonly<{
|
|
52
|
+
itemId: string;
|
|
53
|
+
}>;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* A keyboard toolbar item (iOS). Icons are pre-resolved on the JS side (see
|
|
57
|
+
* icons.ts); empty strings mean "none".
|
|
58
|
+
*/
|
|
59
|
+
export type TextFieldToolbarItem = Readonly<{
|
|
60
|
+
kind: string; // 'button' | 'done' | 'flexibleSpace'
|
|
61
|
+
itemId: string;
|
|
62
|
+
title: string;
|
|
63
|
+
systemItem: string; // '' | UIBarButtonItem.SystemItem name
|
|
64
|
+
iconType: string; // '' | 'sfSymbol' | 'image'
|
|
65
|
+
iconName: string;
|
|
66
|
+
iconRequest: string;
|
|
67
|
+
iconUri: string;
|
|
68
|
+
iconScale: Double;
|
|
69
|
+
iconTinted: string; // 'true' | 'false'
|
|
70
|
+
prominent: string; // 'true' | 'false'
|
|
71
|
+
accessibilityLabel: string;
|
|
72
|
+
testID: string;
|
|
73
|
+
}>;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* iOS-specific configuration. Every field is '' for the platform default.
|
|
77
|
+
*/
|
|
78
|
+
export type TextFieldIOSProps = Readonly<{
|
|
79
|
+
/** 'default' | 'complete' | 'limited' | 'none' (iOS 18) */
|
|
80
|
+
writingTools?: string;
|
|
81
|
+
/** 'default' | 'yes' | 'no' (iOS 17) */
|
|
82
|
+
inlinePrediction?: string;
|
|
83
|
+
/** 'default' | 'yes' | 'no' */
|
|
84
|
+
smartQuotes?: string;
|
|
85
|
+
/** 'default' | 'yes' | 'no' */
|
|
86
|
+
smartDashes?: string;
|
|
87
|
+
/** 'default' | 'yes' | 'no' */
|
|
88
|
+
smartInsertDelete?: string;
|
|
89
|
+
/** 'default' | 'yes' | 'no' (iOS 18) */
|
|
90
|
+
mathExpressionCompletion?: string;
|
|
91
|
+
/** 'roundedRect' | 'none' | 'line' | 'bezel' */
|
|
92
|
+
borderStyle?: string;
|
|
93
|
+
/** 'above' | 'leading': where the label sits */
|
|
94
|
+
labelPlacement?: string;
|
|
95
|
+
/** Width of a leading label column in points; 0 = default */
|
|
96
|
+
labelWidth?: Double;
|
|
97
|
+
/** UITextInputPasswordRules descriptor; '' = none */
|
|
98
|
+
passwordRules?: string;
|
|
99
|
+
}>;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Android-specific configuration.
|
|
103
|
+
*/
|
|
104
|
+
export type TextFieldAndroidProps = Readonly<{
|
|
105
|
+
/** 'm3' | 'system' (AndroidMaterialMode) */
|
|
106
|
+
material?: string;
|
|
107
|
+
/** 'outlined' | 'filled' | 'plain' */
|
|
108
|
+
variant?: string;
|
|
109
|
+
/** 'standard' | 'dense' */
|
|
110
|
+
density?: string;
|
|
111
|
+
}>;
|
|
112
|
+
|
|
113
|
+
export interface TextFieldNativeProps extends ViewProps {
|
|
114
|
+
/**
|
|
115
|
+
* Text applied when the native view is created. Later updates go through
|
|
116
|
+
* the `setText` command so they can be checked against `eventCount`.
|
|
117
|
+
*/
|
|
118
|
+
initialText?: string;
|
|
119
|
+
|
|
120
|
+
/** Floating label (Android) / caption above the field (iOS). */
|
|
121
|
+
label?: string;
|
|
122
|
+
|
|
123
|
+
/** Placeholder shown while the field is empty. */
|
|
124
|
+
placeholder?: string;
|
|
125
|
+
|
|
126
|
+
/** Helper text below the field. */
|
|
127
|
+
supportingText?: string;
|
|
128
|
+
|
|
129
|
+
/** 'none' | 'error' */
|
|
130
|
+
errorState?: string;
|
|
131
|
+
|
|
132
|
+
/** Error message shown instead of the supporting text. */
|
|
133
|
+
errorText?: string;
|
|
134
|
+
|
|
135
|
+
/** Text shown before the input, inside the field. */
|
|
136
|
+
prefix?: string;
|
|
137
|
+
|
|
138
|
+
/** Text shown after the input, inside the field. */
|
|
139
|
+
suffix?: string;
|
|
140
|
+
|
|
141
|
+
/** Icon at the start of the field. */
|
|
142
|
+
leadingIcon?: TextFieldIconProps;
|
|
143
|
+
|
|
144
|
+
/** Icon at the end of the field; pressing it fires onTrailingIconPress. */
|
|
145
|
+
trailingIcon?: TextFieldIconProps;
|
|
146
|
+
|
|
147
|
+
/** 'never' | 'while-editing' | 'unless-editing' | 'always' */
|
|
148
|
+
clearButtonMode?: string;
|
|
149
|
+
|
|
150
|
+
/** 'shown' | 'hidden': a button that toggles secure text entry. */
|
|
151
|
+
passwordToggle?: string;
|
|
152
|
+
|
|
153
|
+
/** 'shown' | 'hidden': the character counter. */
|
|
154
|
+
characterCount?: string;
|
|
155
|
+
|
|
156
|
+
/** Maximum number of UTF-16 characters; 0 = unlimited. */
|
|
157
|
+
maxLength?: Int32;
|
|
158
|
+
|
|
159
|
+
/** React Native keyboardType value. */
|
|
160
|
+
keyboardType?: string;
|
|
161
|
+
|
|
162
|
+
/** React Native returnKeyType value. */
|
|
163
|
+
returnKeyType?: string;
|
|
164
|
+
|
|
165
|
+
/** 'none' | 'sentences' | 'words' | 'characters' */
|
|
166
|
+
autoCapitalize?: string;
|
|
167
|
+
|
|
168
|
+
/** 'enabled' | 'disabled' */
|
|
169
|
+
autoCorrect?: string;
|
|
170
|
+
|
|
171
|
+
/** 'secure' | 'plain' */
|
|
172
|
+
secureTextEntry?: string;
|
|
173
|
+
|
|
174
|
+
/** 'single' | 'multiline' */
|
|
175
|
+
lines?: string;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* What the return key does: 'submit' | 'blurAndSubmit' | 'newline',
|
|
179
|
+
* resolved on the JS side ('newline' only for multi-line fields).
|
|
180
|
+
*/
|
|
181
|
+
submitBehavior?: string;
|
|
182
|
+
|
|
183
|
+
/** iOS: the keyboard toolbar (inputAccessoryView); empty = none. */
|
|
184
|
+
keyboardToolbarItems?: ReadonlyArray<TextFieldToolbarItem>;
|
|
185
|
+
|
|
186
|
+
/** 'enabled' | 'disabled' */
|
|
187
|
+
interactivity?: string;
|
|
188
|
+
|
|
189
|
+
/** 'focus' | 'none': focus the field when it mounts. */
|
|
190
|
+
autoFocus?: string;
|
|
191
|
+
|
|
192
|
+
/** 'select' | 'keep': select all text on focus. */
|
|
193
|
+
selectTextOnFocus?: string;
|
|
194
|
+
|
|
195
|
+
/** React Native autoComplete value; '' = platform default. */
|
|
196
|
+
autoComplete?: string;
|
|
197
|
+
|
|
198
|
+
/** 'default' | 'light' | 'dark' (iOS keyboard appearance) */
|
|
199
|
+
keyboardAppearance?: string;
|
|
200
|
+
|
|
201
|
+
/** Font of the input text. */
|
|
202
|
+
textStyle?: TextFieldTextStyleProps;
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Screen-reader label, applied to the native field rather than the host
|
|
206
|
+
* view. Empty means "use the label".
|
|
207
|
+
*/
|
|
208
|
+
spokenLabel?: string;
|
|
209
|
+
|
|
210
|
+
/** E2E identifier of the leading icon. */
|
|
211
|
+
leadingIconTestID?: string;
|
|
212
|
+
|
|
213
|
+
/** Screen-reader label of the leading icon. */
|
|
214
|
+
leadingIconSpokenLabel?: string;
|
|
215
|
+
|
|
216
|
+
/** E2E identifier of the trailing icon. */
|
|
217
|
+
trailingIconTestID?: string;
|
|
218
|
+
|
|
219
|
+
/** Screen-reader label of the trailing icon. */
|
|
220
|
+
trailingIconSpokenLabel?: string;
|
|
221
|
+
|
|
222
|
+
/** Focused outline, focused label and cursor color. */
|
|
223
|
+
activeColor?: ColorValue;
|
|
224
|
+
|
|
225
|
+
/** Unfocused outline (underline for the filled variant) color. */
|
|
226
|
+
outlineColor?: ColorValue;
|
|
227
|
+
|
|
228
|
+
/** Error outline, label and message color. */
|
|
229
|
+
errorColor?: ColorValue;
|
|
230
|
+
|
|
231
|
+
/** Background of the field's box. */
|
|
232
|
+
containerColor?: ColorValue;
|
|
233
|
+
|
|
234
|
+
/** Input text color. */
|
|
235
|
+
textColor?: ColorValue;
|
|
236
|
+
|
|
237
|
+
/** Placeholder color. */
|
|
238
|
+
placeholderTextColor?: ColorValue;
|
|
239
|
+
|
|
240
|
+
/** Largest font scale the text may reach; 0 = no cap. */
|
|
241
|
+
maxFontSizeMultiplier?: Double;
|
|
242
|
+
|
|
243
|
+
/** '' (natural) | 'left' | 'center' | 'right' */
|
|
244
|
+
textAlign?: string;
|
|
245
|
+
|
|
246
|
+
/** Multi-line: minimum and maximum visible lines; 0 = unset. */
|
|
247
|
+
minLines?: Int32;
|
|
248
|
+
maxLines?: Int32;
|
|
249
|
+
|
|
250
|
+
/** 'none' | 'button': a non-editable field that fires onFieldPress. */
|
|
251
|
+
pressMode?: string;
|
|
252
|
+
|
|
253
|
+
ios?: TextFieldIOSProps;
|
|
254
|
+
android?: TextFieldAndroidProps;
|
|
255
|
+
|
|
256
|
+
/** Fired on every user edit. */
|
|
257
|
+
onFieldChange?: BubblingEventHandler<TextFieldChangeEvent>;
|
|
258
|
+
|
|
259
|
+
/** Fired when the field gains focus. */
|
|
260
|
+
onFieldFocus?: BubblingEventHandler<TextFieldTextEvent>;
|
|
261
|
+
|
|
262
|
+
/** Fired when the field loses focus. */
|
|
263
|
+
onFieldBlur?: BubblingEventHandler<TextFieldTextEvent>;
|
|
264
|
+
|
|
265
|
+
/** Fired when the return key submits (see submitBehavior). */
|
|
266
|
+
onFieldSubmit?: BubblingEventHandler<TextFieldTextEvent>;
|
|
267
|
+
|
|
268
|
+
/** Fired when the cursor moves or the selection changes. */
|
|
269
|
+
onFieldSelectionChange?: BubblingEventHandler<TextFieldSelectionEvent>;
|
|
270
|
+
|
|
271
|
+
/** iOS: fired when a keyboard toolbar button (other than Done) is pressed. */
|
|
272
|
+
onKeyboardToolbarPress?: BubblingEventHandler<TextFieldToolbarPressEvent>;
|
|
273
|
+
|
|
274
|
+
/** Fired when the trailing icon is pressed. */
|
|
275
|
+
onTrailingIconPress?: BubblingEventHandler<Readonly<{}>>;
|
|
276
|
+
|
|
277
|
+
/** Fired when a field with pressMode 'button' is pressed. */
|
|
278
|
+
onFieldPress?: BubblingEventHandler<Readonly<{}>>;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
type NativeTextFieldComponent = HostComponent<TextFieldNativeProps>;
|
|
282
|
+
|
|
283
|
+
// `React.ElementRef` rather than `React.ComponentRef`: the codegen shipped with
|
|
284
|
+
// React Native 0.81 (and the 0.76 Android floor) only accepts the former.
|
|
285
|
+
interface NativeCommands {
|
|
286
|
+
/** Focuses the field and shows the keyboard. */
|
|
287
|
+
focus: (viewRef: React.ElementRef<NativeTextFieldComponent>) => void;
|
|
288
|
+
|
|
289
|
+
/** Removes focus and hides the keyboard. */
|
|
290
|
+
blur: (viewRef: React.ElementRef<NativeTextFieldComponent>) => void;
|
|
291
|
+
|
|
292
|
+
/** Clears the text; fires onFieldChange like a user edit. */
|
|
293
|
+
clear: (viewRef: React.ElementRef<NativeTextFieldComponent>) => void;
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Replaces the text, unless the user has edited since `eventCount` was
|
|
297
|
+
* reported, in which case the update is dropped and the next edit event
|
|
298
|
+
* brings JS back in sync.
|
|
299
|
+
*/
|
|
300
|
+
setText: (
|
|
301
|
+
viewRef: React.ElementRef<NativeTextFieldComponent>,
|
|
302
|
+
eventCount: Int32,
|
|
303
|
+
text: string
|
|
304
|
+
) => void;
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Selects `start`..`end` (UTF-16 offsets, clamped to the text), unless the
|
|
308
|
+
* user has edited since `eventCount` was reported, as for `setText`.
|
|
309
|
+
*/
|
|
310
|
+
setSelection: (
|
|
311
|
+
viewRef: React.ElementRef<NativeTextFieldComponent>,
|
|
312
|
+
eventCount: Int32,
|
|
313
|
+
start: Int32,
|
|
314
|
+
end: Int32
|
|
315
|
+
) => void;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
319
|
+
supportedCommands: ['focus', 'blur', 'clear', 'setText', 'setSelection'],
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
export default codegenNativeComponent<TextFieldNativeProps>(
|
|
323
|
+
'PCTextField'
|
|
324
|
+
) as NativeTextFieldComponent;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/// <reference path="./reactNativeInternals.d.ts" />
|
|
2
|
+
// focusRegistry.ts
|
|
3
|
+
//
|
|
4
|
+
// TextField's link to React Native's focused-input bookkeeping. The core
|
|
5
|
+
// TextInput registers its host node with `TextInputState`, and that registry is
|
|
6
|
+
// what `Keyboard.dismiss()`, a ScrollView's `keyboardShouldPersistTaps` and
|
|
7
|
+
// `keyboardDismissMode`, and `KeyboardAvoidingView` act on. Registering the
|
|
8
|
+
// same way makes a TextField behave like a TextInput for all of them.
|
|
9
|
+
//
|
|
10
|
+
// `TextInputState` is a stable internal (it has kept this shape since 0.63),
|
|
11
|
+
// but React Native's Babel preset adds a dev-time warning to every static
|
|
12
|
+
// `import` or `require` of a deep path. A dynamic `import()` is resolved by
|
|
13
|
+
// Metro the same way and carries no warning; it settles in a microtask at
|
|
14
|
+
// startup, so a node registered before then is kept and registered once the
|
|
15
|
+
// module arrives. If a future release drops the path, the registry is simply
|
|
16
|
+
// absent and the field falls back to the public `TextInput.State` calls for
|
|
17
|
+
// focus and blur, keeping `Keyboard.dismiss()` working.
|
|
18
|
+
import { TextInput } from 'react-native';
|
|
19
|
+
|
|
20
|
+
type HostNode = object;
|
|
21
|
+
|
|
22
|
+
type Registry = {
|
|
23
|
+
currentlyFocusedInput(): HostNode | null | undefined;
|
|
24
|
+
focusInput(input: HostNode | null | undefined): void;
|
|
25
|
+
blurInput(input: HostNode | null | undefined): void;
|
|
26
|
+
registerInput(input: HostNode): void;
|
|
27
|
+
unregisterInput(input: HostNode): void;
|
|
28
|
+
isTextInput(input: HostNode): boolean;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
let registry: Registry | undefined;
|
|
32
|
+
const pendingRegistrations = new Set<HostNode>();
|
|
33
|
+
|
|
34
|
+
// A stable internal without a public counterpart; see reactNativeInternals.d.ts.
|
|
35
|
+
|
|
36
|
+
import('react-native/Libraries/Components/TextInput/TextInputState')
|
|
37
|
+
.then((module) => {
|
|
38
|
+
registry = module.default;
|
|
39
|
+
pendingRegistrations.forEach((node) => registry?.registerInput(node));
|
|
40
|
+
pendingRegistrations.clear();
|
|
41
|
+
})
|
|
42
|
+
.catch(() => {
|
|
43
|
+
// Not available: focus and blur still go through TextInput.State below.
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export const focusRegistry = {
|
|
47
|
+
/** Called when the field mounts. */
|
|
48
|
+
register(node: HostNode): void {
|
|
49
|
+
if (registry) {
|
|
50
|
+
registry.registerInput(node);
|
|
51
|
+
} else {
|
|
52
|
+
pendingRegistrations.add(node);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
/** Called when the field unmounts; drops the focus if the field held it. */
|
|
57
|
+
unregister(node: HostNode): void {
|
|
58
|
+
pendingRegistrations.delete(node);
|
|
59
|
+
if (registry) {
|
|
60
|
+
registry.unregisterInput(node);
|
|
61
|
+
if (registry.currentlyFocusedInput() === node) {
|
|
62
|
+
registry.blurInput(node);
|
|
63
|
+
}
|
|
64
|
+
} else if (TextInput.State.currentlyFocusedInput() === node) {
|
|
65
|
+
TextInput.State.blurTextInput(node as never);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
/** The field gained focus natively. */
|
|
70
|
+
focused(node: HostNode | null): void {
|
|
71
|
+
if (node == null) return;
|
|
72
|
+
if (registry) {
|
|
73
|
+
registry.focusInput(node);
|
|
74
|
+
} else {
|
|
75
|
+
// Also re-sends the focus command, which the focused field ignores
|
|
76
|
+
TextInput.State.focusTextInput(node as never);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
/** The field lost focus natively. */
|
|
81
|
+
blurred(node: HostNode | null): void {
|
|
82
|
+
if (node == null) return;
|
|
83
|
+
if (registry) {
|
|
84
|
+
registry.blurInput(node);
|
|
85
|
+
} else {
|
|
86
|
+
// Also re-sends the blur command, which the unfocused field ignores
|
|
87
|
+
TextInput.State.blurTextInput(node as never);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
};
|
package/src/haptics.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// haptics.ts
|
|
2
|
+
//
|
|
3
|
+
// The `haptics` prop shared by the interactive components.
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Haptic feedback a control plays when the user acts on it: a press, a
|
|
7
|
+
* selection change or a menu pick. Unset plays nothing beyond what the
|
|
8
|
+
* platform control does itself.
|
|
9
|
+
*
|
|
10
|
+
* | Value | iOS | Android (`HapticFeedbackConstants`) |
|
|
11
|
+
* | ----------- | ------------------------------------------ | -------------------------------------- |
|
|
12
|
+
* | `selection` | `UISelectionFeedbackGenerator` | `SEGMENT_TICK` (API 34+), else `CLOCK_TICK` |
|
|
13
|
+
* | `light` | `UIImpactFeedbackGenerator` `.light` | `CONTEXT_CLICK` |
|
|
14
|
+
* | `medium` | `UIImpactFeedbackGenerator` `.medium` | `VIRTUAL_KEY` |
|
|
15
|
+
* | `heavy` | `UIImpactFeedbackGenerator` `.heavy` | `LONG_PRESS` |
|
|
16
|
+
* | `success` | `UINotificationFeedbackGenerator` `.success` | `CONFIRM` (API 30+), else `VIRTUAL_KEY` |
|
|
17
|
+
* | `warning` | `UINotificationFeedbackGenerator` `.warning` | `REJECT` (API 30+), else `LONG_PRESS` |
|
|
18
|
+
* | `error` | `UINotificationFeedbackGenerator` `.error` | `REJECT` (API 30+), else `LONG_PRESS` |
|
|
19
|
+
* | `none` | Nothing | Nothing, and turns off the view's own haptic (`isHapticFeedbackEnabled`) |
|
|
20
|
+
*
|
|
21
|
+
* Both platforms follow the system haptics setting. Web ignores the prop.
|
|
22
|
+
*/
|
|
23
|
+
export type Haptics =
|
|
24
|
+
| 'selection'
|
|
25
|
+
| 'light'
|
|
26
|
+
| 'medium'
|
|
27
|
+
| 'heavy'
|
|
28
|
+
| 'success'
|
|
29
|
+
| 'warning'
|
|
30
|
+
| 'error'
|
|
31
|
+
| 'none';
|
package/src/icons.ts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// icons.ts
|
|
2
|
+
//
|
|
3
|
+
// Icon props shared by SegmentedControl, Button and ButtonGroup. Icons are
|
|
4
|
+
// resolved on the JS side so native only deals with flat strings.
|
|
5
|
+
import {
|
|
6
|
+
Image,
|
|
7
|
+
Platform,
|
|
8
|
+
type ImageRequireSource,
|
|
9
|
+
type ImageURISource,
|
|
10
|
+
} from 'react-native';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A single icon source.
|
|
14
|
+
*
|
|
15
|
+
* - `string`: shorthand for an SF Symbol name on iOS and a drawable resource
|
|
16
|
+
* name on Android.
|
|
17
|
+
* - `{ type: 'sfSymbol' }`: an SF Symbol. iOS only; ignored on Android.
|
|
18
|
+
* - `{ type: 'drawable' }`: a drawable from the app's `res/drawable`.
|
|
19
|
+
* Android only; ignored on iOS.
|
|
20
|
+
* - `{ type: 'image' }`: an image asset (`require('./icon.png')`) or a
|
|
21
|
+
* `{ uri }` source. Works on both platforms. Images are drawn as tinted
|
|
22
|
+
* templates unless `tinted` is `false`. Native loaders forward `headers`,
|
|
23
|
+
* `method` and `body`. `cache` controls the decoded in-memory image cache:
|
|
24
|
+
* `reload` bypasses it, `only-if-cached` never fetches, and `default` /
|
|
25
|
+
* `force-cache` reuse a matching cached request. HTTP redirects carrying
|
|
26
|
+
* custom request options are not followed.
|
|
27
|
+
*/
|
|
28
|
+
export type PlatformIconSource =
|
|
29
|
+
| string
|
|
30
|
+
| { type: 'sfSymbol'; name: string }
|
|
31
|
+
| { type: 'drawable'; name: string }
|
|
32
|
+
| {
|
|
33
|
+
type: 'image';
|
|
34
|
+
source: ImageRequireSource | ImageURISource;
|
|
35
|
+
tinted?: boolean;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* An icon: a single source used on both platforms, or a per-platform pair so
|
|
40
|
+
* callers don't need to branch on `Platform.OS`.
|
|
41
|
+
*/
|
|
42
|
+
export type PlatformIcon =
|
|
43
|
+
| PlatformIconSource
|
|
44
|
+
| {
|
|
45
|
+
ios?: PlatformIconSource;
|
|
46
|
+
android?: PlatformIconSource;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/** The flat icon fields the native specs expect. */
|
|
50
|
+
export type NativeIconFields = {
|
|
51
|
+
/** '' | 'sfSymbol' | 'drawable' | 'image' */
|
|
52
|
+
iconType: string;
|
|
53
|
+
/** SF Symbol (iOS) or drawable resource name (Android) */
|
|
54
|
+
iconName: string;
|
|
55
|
+
/** Resolved image URI when iconType === 'image' */
|
|
56
|
+
iconUri: string;
|
|
57
|
+
/** Serialized HTTP request options; empty for ordinary image assets. */
|
|
58
|
+
iconRequest: string;
|
|
59
|
+
/** Resolved image scale when iconType === 'image' */
|
|
60
|
+
iconScale: number;
|
|
61
|
+
/** 'true' | 'false': draw the image as a tinted template */
|
|
62
|
+
iconTinted: string;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export const NO_ICON: NativeIconFields = {
|
|
66
|
+
iconType: '',
|
|
67
|
+
iconName: '',
|
|
68
|
+
iconUri: '',
|
|
69
|
+
iconRequest: '',
|
|
70
|
+
iconScale: 1,
|
|
71
|
+
iconTinted: 'true',
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
function pickIconSource(
|
|
75
|
+
icon: PlatformIcon | undefined
|
|
76
|
+
): PlatformIconSource | undefined {
|
|
77
|
+
if (icon === undefined || typeof icon === 'string' || 'type' in icon) {
|
|
78
|
+
return icon;
|
|
79
|
+
}
|
|
80
|
+
return Platform.OS === 'ios' ? icon.ios : icon.android;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Flattens the public icon shape into the strings native expects, dropping
|
|
85
|
+
* sources that don't apply to the current platform.
|
|
86
|
+
*/
|
|
87
|
+
export function resolveIcon(icon: PlatformIcon | undefined): NativeIconFields {
|
|
88
|
+
const source = pickIconSource(icon);
|
|
89
|
+
if (source === undefined) return NO_ICON;
|
|
90
|
+
|
|
91
|
+
if (typeof source === 'string') {
|
|
92
|
+
if (source.length === 0) return NO_ICON;
|
|
93
|
+
return {
|
|
94
|
+
...NO_ICON,
|
|
95
|
+
iconType: Platform.OS === 'ios' ? 'sfSymbol' : 'drawable',
|
|
96
|
+
iconName: source,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
switch (source.type) {
|
|
101
|
+
case 'sfSymbol':
|
|
102
|
+
return Platform.OS === 'ios'
|
|
103
|
+
? { ...NO_ICON, iconType: 'sfSymbol', iconName: source.name }
|
|
104
|
+
: NO_ICON;
|
|
105
|
+
case 'drawable':
|
|
106
|
+
return Platform.OS === 'android'
|
|
107
|
+
? { ...NO_ICON, iconType: 'drawable', iconName: source.name }
|
|
108
|
+
: NO_ICON;
|
|
109
|
+
case 'image': {
|
|
110
|
+
const resolved = Image.resolveAssetSource(source.source);
|
|
111
|
+
if (!resolved?.uri) return NO_ICON;
|
|
112
|
+
const request =
|
|
113
|
+
typeof source.source === 'object' ? source.source : undefined;
|
|
114
|
+
const headers = request?.headers
|
|
115
|
+
? Object.fromEntries(
|
|
116
|
+
Object.entries(request.headers).sort(([a], [b]) =>
|
|
117
|
+
a.localeCompare(b)
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
: undefined;
|
|
121
|
+
const requestOptions = {
|
|
122
|
+
headers,
|
|
123
|
+
method: request?.method,
|
|
124
|
+
body: request?.body,
|
|
125
|
+
cache: request?.cache,
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
iconType: 'image',
|
|
129
|
+
iconName: '',
|
|
130
|
+
iconUri: resolved.uri,
|
|
131
|
+
iconRequest: Object.values(requestOptions).some(
|
|
132
|
+
(value) => value !== undefined
|
|
133
|
+
)
|
|
134
|
+
? JSON.stringify(requestOptions)
|
|
135
|
+
: '',
|
|
136
|
+
iconScale: resolved.scale > 0 ? resolved.scale : 1,
|
|
137
|
+
iconTinted: source.tinted === false ? 'false' : 'true',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
default:
|
|
141
|
+
return NO_ICON;
|
|
142
|
+
}
|
|
143
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -2,6 +2,19 @@ export * from './DatePicker';
|
|
|
2
2
|
export * from './SelectionMenu';
|
|
3
3
|
export * from './ContextMenu';
|
|
4
4
|
export * from './SegmentedControl';
|
|
5
|
+
export * from './TabBar';
|
|
6
|
+
export * from './FloatingActionButton';
|
|
7
|
+
export * from './NavigationRail';
|
|
8
|
+
export * from './Button';
|
|
9
|
+
export * from './ButtonGroup';
|
|
10
|
+
export * from './SplitButton';
|
|
11
|
+
export * from './FloatingToolbar';
|
|
5
12
|
export * from './LiquidGlass';
|
|
13
|
+
export * from './LiquidGlassContainer';
|
|
14
|
+
export * from './TextField';
|
|
15
|
+
export * from './icons';
|
|
16
|
+
export * from './labelStyle';
|
|
6
17
|
export * from './sharedTypes';
|
|
18
|
+
export * from './haptics';
|
|
7
19
|
export * from './NativeTheme';
|
|
20
|
+
export * from './PlatformComponentsProvider';
|