Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP - Initial Release #1

Open
11 of 23 tasks
dominicstop opened this issue Dec 20, 2023 · 1 comment
Open
11 of 23 tasks

WIP - Initial Release #1

dominicstop opened this issue Dec 20, 2023 · 1 comment

Comments

@dominicstop
Copy link
Owner

dominicstop commented Dec 20, 2023

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

@dominicstop
Copy link
Owner Author

dominicstop commented Dec 20, 2023

(removed)

dominicstop added a commit that referenced this issue Jan 13, 2024
Summary:
* Update`AdaptiveModalConfigPresetDemo02`

Related:
* Impl: react-native-ios-adaptive-modal - Example - Recreate the example/test from adaptive-modal's AdaptiveModalConfigDemoPresets + AdaptiveModalConfigDemoViewController.
* URL: #1 (comment)
dominicstop added a commit that referenced this issue Jan 13, 2024
Related:
* Impl: react-native-ios-adaptive-modal - Example - Recreate the example/test from adaptive-modal's AdaptiveModalConfigDemoPresets + AdaptiveModalConfigDemoViewController.
* Tag: react-native-ios-adaptive-modal - Issue-#1 - task-4169e1
* Link:  #1 (comment)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant