Skip to content

WIP - Initial Release #1

@dominicstop

Description

@dominicstop

A list of tasks to complete to create the initial release (WIP).

Tasks

Modal Config - Parser + TS Types

  • #ff0000 - Impl: react-native-ios-adaptive-modal - TS Types - type definitions for modal config (i.e. AdaptiveModalConfig and related types).

  • #ffa500 - Impl: react-native-ios-adaptive-modal - Swift Parser - Impl. parser for converting modal config (i.e. AdaptiveModalConfig and related types) from JS primitives to their corresponding swift types.

  • #d2691e - Impl: react-native-ios-utilities - TS Types - TS type definitions for ComputableLayout and related types.

  • #f08080 - Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting ComputableLayout (and related types) from JS primitives to their corresponding swift types.

  • #bdb76b - Impl: react-native-ios-utilities - TS Types - type definitions for UIKit types.

  • #a0522d - Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting UIKit types from their JS primitives representation, to their corresponding swift types.

  • #ffd700 - Impl: react-native-ios-adaptive-modal - Prop - Impl, modalConfig prop, and test whether or not the config is being parsed correctly.


Examples and Testing

  • #4169e1 - Impl: Example - Impl. the demo presets in examples from adaptive-modal.
  • #c71585 - Impl: Example - Recreate the examples from adaptive-modal's AdaptiveModalConfigDemoPresets + AdaptiveModalConfigDemoViewController.
  • #00008b - Impl: Docs - Create the draft version of the README containing videos/images showing the AdaptiveModalConfigDemoPresets items.

Modal Content Resizing

  • #4b0082 - Fix: Modal Content Resizing - AdaptiveModal animations will only update the size of the modal content after the animation is finished.

  • #ff00ff - Impl: react-native-ios-adaptive-modal - Add support for adding multiple views in the modal content.

  • #8b008b - Impl: react-native-ios-adaptive-modal - Add support different modes for positioning/resizing the modal content.


  • Refactor: react-native-ios-utilities - Update RNIDummyView
    • In order to support having a scroll view as the main modal content, we have to use RNIDummyView instead of RNIDetachedView.
    • RNIDetachedView wraps its children in a view; that wrapper view is then the one that’s used for layout.
    • RNIDummyView does not wrap it’s children, and exposes it directly.
    • Note: Since react scrollview’s are backed by UIScrollView under the hood (and not by YogaLayout, there won’t be any layout-resizing issues since the autolayout constraints animations will be applied directly to the scroll view.

General Tasks

  • #2f4f4f - Impl: react-native-ios-adaptive-modal - Modal Events: Expose modal presentation events to RN

  • Impl: react-native-ios-adaptive-modal - Modal Focus/Blur Events + Logic

    • Whenever a new modal is shown, other modals will be notified with a blur event.
    • Conversely, when the top modal is dismissed, the next top modal will receive a focus event.
    • Note: in order for this to work, any view controller presented must emit focus/blur events (even if it’s a modal impl. by another library, or a view controller instance presented by the user).
    • This logic has been implemented in react-native-ios-modal, however it’s in an unfinished state, and will need major refactoring to make it work.
    • A way to achieve this is to swizzle the UIViewController , and notify a singleton of modal presentation events, and then keep track of the presented view controllers.

  • Refactor: adaptive-modal - Complete the refactor for lessening the reliance on indexes for controlling the modal + keeping track of it's state.

  • #ee82ee - Refactor: adaptive-modal - Re-write AdaptiveModalSnapPointConfig

  • Refactor: adaptive-modal - Extract modal animation/interpolation logic from AdaptiveModalManager into its own type.

  • Refactor: adaptive-modal - Optimize modal interpolation logic by caching the interpolated values.

  • Impl: adaptive-modal - Add Error Handling - Functions that control the modal should throw an error.

  • #6b8e23 -  Impl: react-native-ios-adaptive-modal - Props - Expose modal manager flags as props.

  • #d2b48c -  Impl: react-native-ios-adaptive-modal - Modal Commands - Expose modal manager commands - Impl. methods to show/hide/control the modal from RN.


Task Progress and Logging


# Task: #bdb76b

  • Task: Impl: react-native-ios-utilities - TS Types - type definitions for UIKit types.
  • Status: Completed

# Task: #a0522d


# Task: #d2691e


# Task: #f08080

  • Task: Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting ComputableLayout (and related types) from JS primitives to their corresponding swift types.
  • Status: Completed
    • 2023-12-21-20:43: ComputableLayout (Commits)
      • Desc: Impl. helpers for converting raw string values to their corresponding ComputableLayout swift enum types.
      • Releases: Version0.6.0 (changes)

    • 2023-12-21-22:13: react-native-ios-utilities (Commits)
      • Desc: Update min. dependency to DGSwiftUtilities, and add dependency to ComputableLayout.

    • 2023-12-22-02:51: DGSwiftUtilities (Commits)
      • Desc: Update VerboseError - Improve error description readability, and add stack trace ti error description.
      • Releases: Version 0.10.0 (changes)

    • 2023-12-22-07:59: ComputableLayout (Commits)
      • Desc: Replace EnumCaseStringRepresentable conformance for ComputableLayoutValuePercentTarget with String, and CaseIterable.
      • Releases: Version 0.6.1 (changes)

    • 2023-12-24-22:57: Log - Ran into a blocker with mapping swift's KeyPath<Root, Value> to TS/JS.
      • Ideally, we should be able to convert a js "keypath" string literal "origin.x" to a swift key path as let keypath: KeyPath<CGRect, CGFloat> = \.origin.x.
        • In swift, we would have to create a parser that recursively "crawls" a type, and return the "path" it took as a KeyPath (e.g. tree traversal).
        • The problem is with the limitations of KeyPath (e.g. restraints due to type safety at compile-time).
      • If we cannot find a solution using swift's generic system, we can just hardcode all the the possible keypaths as stopgap temp. solution.

    • 2023-12-26-07:29: 2023-12-26-06-04-59.playground (Code Snippet)
      • Desc: Initial WIP impl. for "String to KeyPath Parser"

    • 2023-12-26-07:43: Recap/Summary - From 2023-12-24-23:24 to 2023-12-26-05:42
      • Problem-01 - Trying to find a way to map a string "key path" literal (e.g. "origin") to a swift KeyPath (e.g. \CGRect.origin).
        • Objc has a lang. feature called KVC (Key Value Coding), which essentially allows you to refer/access an object's properties via a string key path.
        • This is available in swift too for classes that inherit from NSObject.
        • The swift equivalent of this concept is: KeyPath.
        • The main difference between KVC and KeyPath is that KVC is evaluated at runtime, and KeyPath is "constructed" at compile-time (e.g. because it heavily relies on swift's generic system).
        • A side-effect of this is that KeyPath is not codable.
        • Because of this, we have to provide the mapping manually between the name of the property, and it's corresponding KeyPath, e.g.:
          • Dictionary<String, PartialKeyPath<CGRect>>
          • ["origin": \.origin].

      • Problem-02 - Parsing a "deep" key path string (e.g. "foo.bar.baz"), and converting it to \.foo.bar.baz
        • This can be impl. via a "crawler"; i.e. we check if the next type contains a "string to key path" map (e.g. via protocol conformance checking).
        • Then for each key in the key path string literal, we produce partial key paths and then add them together to produce a key path.

      • Failed Attempts: Failed Attempts - Screenshot 2023-12-26 at 10 38 23 PM
    • 2023-12-26-08:47: 2023-12-26-08-30-37.playground (Code Snippet)
      • Desc: This playground demonstrates that it's possible to get the metatype/type of Value from KeyPath<Root, Value> using type(of:) at runtime.

    • 2023-12-26-19:20: 2023-12-26-06-04-59.playground (Code Snippet)
      • Desc: WIP impl. for "String to KeyPath Parser" - static var b: [B.Type] can now be automatically impl. in a default extension using type(of:).

    • 2023-12-26-20:01: 2023-12-26-06-04-59.playground (Code Snippet)
      • Desc: WIP impl. for "String to KeyPath Parser" - Working demo for that shows key path string literal "origin.x" being converted to \CGRect.origin.x.

    • 2023-12-26-22:26: 2023-12-26-06-04-59.playground (Code Snippet)
      • Desc: WIP impl. for "String to KeyPath Parser" - Impl. optimization - cache B.b, and B.allB values.

    • 2023-12-26-23:26: 2023-12-26-06-04-59.playground (Code Snippet)
      • Desc: WIP impl. for "String to KeyPath Parser" - Impl. B.getPartialKeyPath.

    • 2023-12-26-23:42: 2023-12-26-06-04-59.playground (Code Snippet)
      • Desc: WIP impl. for "String to KeyPath Parser" - Impl. B.getKeyPath.

    • 2023-12-27-05:30: DGSwiftUtilities (Commits)
      • Desc: Impl. StringKeyPathMapping (based on 2023-12-26-06-04-59.playground) + impl. conformance to StringKeyPathMapping for types: CGPoint, CGRect, CGSize.

    • 2023-12-27-07:02: DGSwiftUtilities (Commits)
      • Desc: Impl. conformance StringKeyPathMapping for types: UIEdgeInsets, UIDevice.
      • Releases: Version 0.11.0 (changes)

    • 2023-12-28-08:32: ComputableLayout (Commits)
      • Desc: Updated min. dep. of DGSwiftUtilities to >= 0.11.0, and impl. conformance StringKeyPathMapping for types: EvaluableConditionContext, ComputableLayoutValueContext.
      • Releases: Version0.7.0 (changes)

    • 2023-12-31-12:06: react-native-ios-utilities (Commits)
      • Desc: Impl. InitializableFromDictionary, and InitialzableFromString + added protocol conformance for various UIKit/DGSwiftUtilties/ComputableLayout types.

    • 2023-12-27-07:02: DGSwiftUtilities (Commits)
      • Desc: Imported InitializableFromDictionary, and InitialzableFromString from react-native-ios-utilities.
      • Releases: Version 0.12.0 (changes), Version 0.12.1 (changes)

    • 2024-01-01-00:15: react-native-ios-utilities (Commits)
      • Desc: Preminor release for testing for react-native-ios-adaptive-modal.
      • Releases: Version v4.3.0-0 (changes).

# Task: #ff0000


# Task: #ffa500

  • Task - Impl: react-native-ios-adaptive-modal - Swift Parser - Impl. parser for converting modal config (i.e. AdaptiveModalConfig and related types) from JS primitives to their corresponding swift types.
  • Status: Completed
    • 2023-12-28-08:32: adaptive-modal (Commits)
      • Desc: Updated min. dep. of DGSwiftUtilities to >= 0.11.0, and impl. conformance StringKeyPathMapping for types: AdaptiveModalInterpolationPoint, AdaptiveModalKeyframeConfig.
      • Releases: Version1.3.0 (changes), Version1.3.1 (changes)

    • 2024-01-02-10:39: react-native-ios-adaptive-modal (Commits)
      • Desc: Impl. conformance to InitializableFromDictionary for types: AdaptiveModalSnapPointConfig, AdaptiveModalConfig, AdaptiveModalKeyframeConfig, AdaptiveModalClampingConfig, AdaptiveModalSnapPointPreset, AdaptiveModalLayoutValueEdgeInsets, and impl. conformance to InitializableFromDictionary for types: CACornerMask.

    • 2024-01-02-14:27: DGSwiftUtilities (Commits)
      • Desc: Imported Dictionary+Hepers, and CACornerMask+InitializableFromString from react-native-ios-adaptive-modal.
      • Releases: Version 0.12.2 (changes).

    • 2024-01-02-14:34: react-native-ios-utilities (Commits)
      • Desc: Imported ComputableLayoutPreset+InitializableFromDictionary from react-native-ios-adaptive-modal.
      • Releases: Version v4.3.0-1 (changes), Version v4.3.0-2 (changes)

    • 2024-01-02-23:21: react-native-ios-adaptive-modal (Commits)
      • Desc: Update dependencies to DGSwiftUtilities, and react-native-ios-utilities.

# Task: #ffd700

  • Task - Impl: react-native-ios-adaptive-modal - Prop - Impl, modalConfig prop, and test whether or not the config is being parsed correctly.
  • Status: WIP
    • 2024-01-03-02:24: react-native-ios-adaptive-modal (Commits)
      • Desc: Impl. AdaptiveModalView.modalConfig prop, and update example to test the modalConfig prop.

    • 2024-01-03-02:27 - Log: Encountered bug with parsing of modalConfig.
      • 2024-01-03-02:30: AdaptiveModalConfig.snapPoints -> AdaptiveModalSnapPointConfig.layoutConfig -> ComputableLayout
        • OK: horizontalAlignment, verticalAlignment
        • Error: width
      • 2024-01-03-02:34: Check: ComputableLayoutValue(fromDict:)
        • Error: mode
      • 2024-01-03-02:41: Check: ComputableLayoutValueMode(fromDict:)
        • OK: dict["mode"], modeString (value: "percent"),
        • Error: Parsing of enum case: "percent"

    • 2024-01-03-02:52: react-native-ios-utilities (Commits)
      • Desc: Fix ComputableLayoutValueMode+InitializableFromDictionary - Parsing of ComputableLayoutValueMode.percent.
      • Releases: Version v4.3.0-3 (changes)

    • 2024-01-03-03:06: react-native-ios-adaptive-modal (Commits) (Gif)
      • Desc: Updated dep. to react-native-ios-utilities, and updated example.

    • 2024-01-03-03:14: react-native-ios-adaptive-modal (Commit) (Gif)
      • Desc: Updated example's modalConfig, and encountered bug with snap points.

    • 2024-01-03-04:57: react-native-ios-adaptive-modal (Commit) (Gif)
      • Desc: Updated example's modalConfig.
      • Notes: Proceed with recreating the examples from adaptive-modal in RN.

# Task: #4169e1


# Task: #c71585

  • Task - Impl: Example - Recreate the examples from adaptive-modal's AdaptiveModalConfigDemoPresets + AdaptiveModalConfigDemoViewController.
  • Status: WIP
    • 2024-01-21-14:42 - Log: react-native-ios-adaptive-modal
      • The first to recreate is showing the current snap point index in the modal.
      • This relies on the modal events (task: #2f4f4f) being impl.
      • However, before exposing the adaptive modal events to RN, the refactor for adaptive-modal's interpolation point logic should be completed first.

    • 2024-01-30-22:03 - react-native-ios-adaptive-modal (Commit) - Desc: Ex - Updated AdaptiveModalViewTest01 to show the current snap point index.

    • 2024-02-03-17:04 - react-native-ios-adaptive-modal (Commit) - Desc: Ex - Updated AdaptiveModalViewTest01
      • Make "modal config index" pressable so that it changes the current modal config when pressed.
      • Make "snap point index index" pressable so that it changes the current snap point index when pressed.

    • 2024-02-03-17:10 - Log: react-native-ios-adaptive-modal
      • Desc: Encountered bug w/ AdaptiveModalViewTest01 — Changing the modal config while the modal is visible does not update the position of the drag handle.

    • 2024-02-03-20:45 - adaptive-modal (Release: 2.1.1 | Changes)
      • Desc: Fix bug where the modal drag handle does not update correctly when the current modal config is changed while the modal is visible.

    • 2024-02-03-21:03 - react-native-ios-adaptive-modal (Commit) - Desc: Ex - Update example pod dependencies (i.e. AdaptiveModal).

    • 2024-02-04-02:00 - Log: react-native-ios-adaptive-modal
      • Desc: Found bug w/ AdaptiveModalViewTest01 - AdaptiveModalKeyframeConfig.modalShadowOffset not working.
      • Cause: Missing parser for CGSize.

    • 2024-02-04-02:05 - react-native-ios-utilities (Release: v4.3.0-9 | changes) - Desc: Add parser for CGSize, i.e. CGSize+InitializableFromDictionary.

    • 2024-02-05-19:44 - adaptive-modal (Release: 2.1.2 | Changes)
      • Desc: Bug fix - Drag handle offset not being updated during modal config change, i.e. fix diffing - modal drag handle offset.

    • 2024-02-06-05:30 - react-native-ios-adaptive-modal (Commits) - Desc: Ex - Impl. AdaptiveModalViewTest04 for testing presentModal + RNIAdaptiveModalCommandConfigPresent.

    • 2024-02-06-14:38 - react-native-ios-utilities (Release: v4.3.0-10 | changes) - Desc: Fix parsing for AnimationConfig, i.e. AnimationConfig.

# Task: #00008b

  • Task - Impl: Docs - Create the draft version of the README containing videos/images showing the AdaptiveModalConfigDemoPresets items.
  • Status: On Hold
    • 2024-01-18-14:47 - Log: Before recording the videos, wait for the completion of the example/test presets + missing modal features.
      • Modal Manager Properties: shouldEnableOverShooting, overrideShouldSnapToUnderShootSnapPoint, overrideShouldSnapToOvershootSnapPoint, shouldDismissModalOnSnapToUnderShootSnapPoint, shouldDismissModalOnSnapToOverShootSnapPoint, shouldDismissKeyboardOnGestureSwipe.

      • Modal Manager Commands: dismiss, snapTo(snapPointIndex:), snapTo(snapPointKey:), snapToPrevSnapPointIndex, snapToCurrentSnapPointIndex, snapToNextSnapPointIndex, snapTo(overrideSnapPointConfig:), clearSnapPointOverride.

      • AdaptiveModalViewTest01 and AdaptiveModalViewTest02 should support diff. modal content "modes" + flags.
        • Button Config: showDismissButton, showCustomSnapPointButton, showTextInputField
        • Content Mode: buttons, scrollview
        • shouldIncreaseModalIndexOnTap
        • Diff. overShootSnapPoint for snapTo(overrideSnapPointConfig:) per demo preset.

    • 2024-01-19-08:44 - Log: Task on hold, waiting for the ff:
      • #4169e1 - Completion of modal presets.
      • #2f4f4f - Completion of modal events (i.e. willSnap, and didSnap).
      • #6b8e23 - Completion of modal manager flag props.
      • #ee82ee - Rewrite of adaptive-modal's AdaptiveModalSnapPointConfig type.
      • #d2b48c - Completion of modal manager commands.

# Task: #4b0082

  • Task - Fix: Modal Content Resizing - AdaptiveModal animations will only update the size of the modal content after the animation is finished.

    • This is because the layout animations for the modal content is applied via animating its auto layout constraints, and RN/YGLayout is not informed of the size changes during the duration of the animation.
    • We need to implement a bunch of workarounds/features to get around this.
  • Issue: UIViewPropertyAnimator not animating RCTView #2

  • Status: WIP

    • 2024-01-06-04:37: adaptive-modal (Commits)
      • Desc: Impl. AdaptiveModalDisplayLinkEventsNotifiable for listening to display link events from AdaptiveModalManager.
      • Releases: Version1.4.0 (changes), Version1.4.1 (changes), Version1.4.2 (changes)

    • 2024-01-11-09-06: adaptive-modal (Commits)
      • Desc: Impl. AdaptiveModalAnimationMode (experimental), and fixed runtime error due to constraints being set to nan values .
      • Releases: Version1.5.0 (changes), Version1.5.1 (changes).
      • 📼 Attachment: 2024-01-11-09-23-44.mp4, 2024-01-11-09-29-52.mp4
        • The attached video shows adaptive-modal running w/ AdaptiveModalManager.animationMode set to .viewPropertyAnimatorDiscrete.
        • However, the current impl. for animationMode is still very buggy.
        • Bug: Secondary axis animation does not work, e.g. when you drag a top to bottom modal to the left or right, it stays in place and does not snap tot the correct position.
        • Bug: When invoking the dismiss modal command, the exit snapping animation is laggy.
        • Bug: Only vertical + top to bottom modal works — modal's with snap direction that are left to right, right to left, and top to bottom are broken.

    • 2024-01-11-13:11: Log - react-native-ios-adaptive-modal
      • 📼 Attachment: 2024-01-11-13-14-55.mp4, 2024-01-11-13-18-02.mp4
        • Shows AdaptiveModalViewTest01 with AdaptiveModalManager.animationMode set to .viewPropertyAnimatorDiscrete, with modalContentAnchorMode set to stretch.
        • There are less stutters compared to before AdaptiveModalManager.animationMode + AdaptiveModalAnimationMode was impl.

      • 📼 Attachment: 2024-01-11-13-32-36.mp4, 2024-01-11-13-40-37.mp4
        • Shows AdaptiveModalViewTest01 with AdaptiveModalManager.animationMode set to .viewPropertyAnimatorDiscrete, with modalContentAnchorMode set to center.

      • 2024-01-11-21:18:19: adaptive-modal (Commits)
        • Desc: Fix AdaptiveModalAnimationMode.viewPropertyAnimatorDiscrete-related bugs
        • Releases: Version1.5.2 (changes), Version1.5.3 (changes), Version1.5.4 (changes).
        • 📼 Attachment: 2024-01-11-21-39-20.mp4
          • The bugs from the initial impl. of AdaptiveModalManager.animationMode + AdaptiveModalAnimationMode.viewPropertyAnimatorDiscrete has been fixed, however it's still a bit janky.
          • Bug: Custom snap point bug - Sometimes, when snapping to a custom snap point override, there is no animation; instead it snaps to the new snap point immediately.

      • 2024-01-12-08:06: react-native-ios-adaptive-modal (Commits)
        • Impl. prop modalAnimationMode.
        • Impl. prop shouldEnableContinuousLayoutResizingDuringAnimation.
        • Refactored RNIAdaptiveModalView.modalManager AdaptiveModalManager instancing + cleanup.
        • Updated examples - Added more toggles to AdaptiveModalViewTest01 for configuring the props for AdaptiveModalView.

        • Releases: Version v0.2.0 (changes)
        • 📼 Attachment: 01-render-2024-01-12-08-32-05.mp4

# Task: #8b008b

  • Task - Impl: react-native-ios-adaptive-modal - Add support different modes for positioning/resizing the modal content.
    • Related to "Modal Content Resizing".
    • Anchor: left, right, top, bottom, center.
    • Sizing: stretch, none.
    • Each modal content view can be anchored individually.
    • For example: this will allow you to anchor a button at the bottom of the modal content, and a close button in the top right, etc.
    • This way, when the modal content resizes, these UI elements will be at the correct place.

  • Status: WIP

# Task: #ee82ee

  • Task - Refactor: adaptive-modal - Re-write AdaptiveModalSnapPointConfig
    • Extract to two separate types, e.g. AdaptiveModalSnapPointConfig, and AdaptiveModalSnapPoint,
      • Relationship: Such that AdaptiveModalSnapPointConfig produces a AdaptiveModalSnapPoint, and AdaptiveModalSnapPoint is derived from a AdaptiveModalSnapPointConfig.

      • Refactor AdaptiveModalSnapPointConfig from an enum w/ associated value to a standard struct.
        • AdaptiveModalSnapPointConfig - a property for the current snapping mode, e.g. inBetween, and standard.
        • AdaptiveModalSnapPointConfig - Can optionally have a "snap point key" property.

    • AdaptiveModalSnapPoint - Should have a type that tells what kind of snap point it is, e.g. undershootPoint, overshootPoint, standardSnapPoint, inBetweenSnapPoint.

  • Status: Completed
    • 2024-01-21-22:13 - Log: adaptive-modal - Created new branch wip-3.
    • 2024-01-21-22:16 - adaptive-modal (Commits)
      • Desc: Refactored AdaptiveModalSnapPointConfig and created AdaptiveModalSnapPoint.

    • 2024-01-24-00:07 - adaptive-modal (Commit)
      • Desc: WIP - Replace AdaptiveModalSnapPointConfig Usage
      • Ran into some type problems - inBetween vs. standard snap points.
      • layoutConfig is optional in inBetween snap points, but required in standard snap points.

    • 2024-01-24-00:09 - Log: adaptive-modal - Abandoning changes in branch wip-3.
    • 2024-01-24-00:13 - Log: Created new branch wip-4.
    • 2024-01-25-15:55 - adaptive-modal (Commits)
      • Desc: Completed refactor.

    • 2024-01-25-15:59 - Log: adaptive-modal - Begin testing to check and fix any regressions/bugs caused by the refactor.

    • 2024-01-25-16:02 - Log: adaptive-modal - Found bug in example - snap point presets
      • Repro: Bug w/ index: 3 + .demo04.
      • Desc: Modal no longer dismisses when snapping the overshoot snap point.

    • 2024-01-25-17:37 - Log: adaptive-modal (Continued)
      • Might be related to _getClosestSnapPoint?

    • 2024-01-25-17:52 - Log: adaptive-modal (Continued)
    • 2024-01-25-17:58 - adaptive-modal (Commits)
      • Desc: Fix overshoot snap point has wrong index.

    • 2024-01-25-18:11 - Log: adaptive-modal - Found bug in example - snap point presets
      • Repro: Bug w/ index: 6 + .demo07
      • Desc: Custom snap point + overshoot not working.
      • Bug w/ AdaptiveModalManager command snapTo(overrideSnapPointConfig:).

    • 2024-01-25-18:22 - adaptive-modal (Commit)
      • Desc: Fix AdaptiveModalManager.snapTo(overrideSnapPointConfig:) overshoot snap point has wrong index.

    • 2024-01-25-18:24 - Log: adaptive-modal
      • False alarm for: index: 6 + .demo07.
      • The behavior pre-refactor and post-refactor for the custom snap point + overshoot are identical, oops.

    • 2024-01-25-18:33 - Log: adaptive-modal - Found bug in example - snap point presets
    • 2024-01-25-20:50 - adaptive-modal (Commits)
    • 2024-01-25-22:37 - Log: adaptive-modal
      • Desc: Finished testing AdaptiveModalConfigDemoViewController + AdaptiveModalConfigDemoPresets
      • Proceed to testing paginated modal.

    • 2024-01-25-22:40 - Log: adaptive-modal - Desc: Finished testing AdaptiveModalPageTestViewController + AdaptiveModalConfigDemoPresets.

    • 2024-01-25-22:41 - Log: adaptive-modal - Desc: Merge changes from branch wip-4 to main.

    • 2024-01-25-22:49 - adaptive-modal (Commits)
    • 2024-01-25-22:52 - Log: Begin refactoring react-native-ios-adaptive-modal to use adaptive-modal version 2.0.0.

    • 2024-01-25-23:36 - react-native-ios-adaptive-modal (Commits)
      • Desc: Update dep. to use adaptive-modal version 2.0.0, and refactor + fix build errors.

    • 2024-01-26-14:51 - react-native-ios-adaptive-modal (Commits)

# Task: #2f4f4f

  • Task - Impl: react-native-ios-adaptive-modal - Modal Events: Expose modal presentation events to RN.
  • Status: Completed
    • 2024-01-27-22:43 - react-native-ios-adaptive-modal (Commit)
      • Desc: Expose events from AdaptiveModalPresentationEventsNotifiable to RN.

    • 2024-01-29-01:37 - react-native-ios-adaptive-modal (Commit)
      • Desc: Examples - Added AdaptiveModalViewTest03 to test the modal events.

    • 2024-01-29-01:41 - Log: react-native-ios-adaptive-modal
      • While testing AdaptiveModalViewTest03 found some layout performance issues when the modal's width is being resized.
      • It looks like react-native can't keep up with the layout updates whenever the modal's width is being resized.
      • One way to potentially reduce the appearance of lag would be to debounce the layout updates.

    • 2024-01-30-15:56 - react-native-ios-adaptive-modal (Commits)
      • Desc: Exposed AdaptiveModalBackgroundTapDelegate events to RN, and updated example AdaptiveModalViewTest03 to test onBackgroundTapGesture event.

    • 2024-01-30-20:57 - react-native-ios-adaptive-modal (Commits)
      • Desc: Exposed AdaptiveModalStateEventsNotifiable events to RN, and updated example AdaptiveModalViewTest03 to test onModalStateWillChange event.
      • Releases: Version v0.4.0 (changes).

# Task: #6b8e23

  • Task - Impl: react-native-ios-adaptive-modal - Props - Expose modal manager flags as props.
    • E.g. shouldEnableSnapping, shouldEnableOverShooting, shouldDismissKeyboardOnGestureSwipe, shouldLockAxisToModalDirection, overrideShouldSnapToUnderShootSnapPoint, overrideShouldSnapToOvershootSnapPoint, shouldDismissModalOnSnapToUnderShootSnapPoint, shouldDismissModalOnSnapToOverShootSnapPoint, isSwipeGestureEnabled, isModalContentSwipeGestureEnabled, allowModalToDragWhenAtMinScrollViewOffset, allowModalToDragWhenAtMaxScrollViewOffset, isModalDragHandleGestureEnabled.

  • Status: Completed
    • 2024-01-31-02:44 - react-native-ios-adaptive-modal (Commits)
      • Desc: Exposed AdaptiveModalManager flags as props to RN, and updated the example's AdaptiveModalConfigPresets + test items to set/test the ff. props:
        • shouldEnableOverShooting, overrideShouldSnapToUnderShootSnapPoint, overrideShouldSnapToOvershootSnapPoint shouldDismissModalOnSnapToUnderShootSnapPoint shouldDismissModalOnSnapToOverShootSnapPoint, shouldDismissKeyboardOnGestureSwipe.
      • Releases: Version v0.5.0 (changes).

# Task: #d2b48c

  • Task - Impl: react-native-ios-adaptive-modal - Modal Commands - Expose modal manager commands - Impl. methods to show/hide/control the modal from RN.

    • E.g. notifyDidLayoutSubviews, clearSnapPointOverride, presentModal + extra args. (e.g. snapPointIndex/snapPointKey, animated, animationConfig), dismissModal + extra args. (e.g. useInBetweenSnapPoints, animated, animationConfig, snapPointPreset/keyframe/snapPointIndex), snapTo + args. (e.g. snapPointInde, isAnimated, animationConfig), snapToClosestSnapPoint, snapToPrevSnapPointIndex, snapToCurrentSnapPointIndex, snapToNextSnapPointIndex, snapTo(overrideSnapPointConfig:), snapTo(key:).

  • Status: WIP

    • 2024-01-31-22:15 - react-native-ios-adaptive-modal (Commits)
      • Desc: Impl. modal module commands - notifyDidLayoutSubviews, clearSnapPointOverride.

    • 2024-01-31-22:40 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - presentModal.

    • 2024-01-31-22:50 - react-native-ios-adaptive-modal (Commits)
      • Desc: Update AdaptiveModalView.presentModal + example test items.

    • 2024-02-01-03:21:08 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - dismissModal.

    • 2024-02-01-03:47 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - snapTo.

    • 2024-02-01-03:47 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - snapToOverride.

    • 2024-02-01-22:29 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - snapToClosestSnapPoint.

    • 2024-02-01-22:30 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - snapToPrevSnapPointIndex.

    • 2024-02-01-22:31 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - snapToCurrentSnapPointIndex.

    • 2024-02-01-22:31 - react-native-ios-adaptive-modal (Commit)
      • Desc: Impl. modal module commands - snapToNextSnapPointIndex.

    • 2024-02-02-22:44 - react-native-ios-adaptive-modal (Commits)
      • Desc: Impl. AdaptiveModalView commands - notifyDidLayoutSubviews, clearSnapPointOverride, dismissModal, snapTo, snapToOverride, snapToClosestSnapPoint, snapToPrevSnapPointIndex, snapToCurrentSnapPointIndex, snapToNextSnapPointIndex.

    • 2024-02-03-15:03 - Log: Make test components to test the modal commands.

    • 2024-02-03-16:06 - adaptive-modal (Release: 2.1.0 | Changes)
      • Desc: Updated AdaptiveModalManager.snapToClosestSnapPoint + AdaptiveModalManager.snapTo.

    • 2024-02-03-16:36 - react-native-ios-adaptive-modal (Commits)
      • Desc: Update dependencies, update RNIAdaptiveModalView modal command function param types, and update RNIAdaptiveModalView.modalConfigProp so that it triggers snapToClosestSnapPoint.

Misc/General Tasks

N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions