A list of tasks to complete to create the initial release (WIP).
Tasks
Modal Config - Parser + TS Types
[x] #ff0000 - Impl: react-native-ios-adaptive-modal - TS Types - type definitions for modal config (i.e. AdaptiveModalConfig and related types).
[x] #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.
[x] #d2691e - Impl: react-native-ios-utilities - TS Types - TS type definitions for ComputableLayout and related types.
[x] #f08080 - Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting ComputableLayout (and related types) from JS primitives to their corresponding swift types.
[x] #bdb76b - Impl: react-native-ios-utilities - TS Types - type definitions for UIKit types.
[x] #a0522d - Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting UIKit types from their JS primitives representation, to their corresponding swift types.
[x] #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
[x] #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.
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.
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.
Task: Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting UIKit types from their JS primitives representation, to their corresponding swift types.
Task: Impl: react-native-ios-utilities - Swift Parser - Impl. parser for converting ComputableLayout (and related types) from JS primitives to their corresponding swift types.
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.
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).
Desc: Updated min. dep. of DGSwiftUtilities to >= 0.11.0, and impl. conformance StringKeyPathMapping for types: EvaluableConditionContext, ComputableLayoutValueContext.
Desc: Impl. InitializableFromDictionary, and InitialzableFromString + added protocol conformance for various UIKit/DGSwiftUtilties/ComputableLayout types.
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.
Desc: Updated min. dep. of DGSwiftUtilities to >= 0.11.0, and impl. conformance StringKeyPathMapping for types: AdaptiveModalInterpolationPoint, AdaptiveModalKeyframeConfig.
Desc: Impl. conformance to InitializableFromDictionary for types: AdaptiveModalSnapPointConfig, AdaptiveModalConfig, AdaptiveModalKeyframeConfig, AdaptiveModalClampingConfig, AdaptiveModalSnapPointPreset, AdaptiveModalLayoutValueEdgeInsets, and impl. conformance to InitializableFromDictionary for types: CACornerMask.
Desc: Added initial impl. for AdaptiveModalViewTest01.
2024-01-03-22:00: Log
🖼️ Example Gif — Encountered hangups of example when changing the current modal config due to parsing of the modal config in native using init(usingDict:).
🖼️ Profiler Screenshot — The profiler shows 100% CPU usage and hang when the modal config is parsed, then goes back to normal usage after a few seconds.
📄 Xcode Logs - 2024-01-03-22-21-35 — Added temp. logging to Dictionary+Hepers - Log to console for every invocation of getValueFromDictionary (or related functions).
Log shows 343 invocations to parse "demo02" from AdaptiveModalConfigPresets.
Going through the logs, there doesn't seem to be any duplicate/unnecessary calls for getValueFromDictionary.
The performance slowdown might be caused by error handling, i.e. each failure of getValueFromDictionary is creating an error instance (i.e. VerboseError), and verbose error automatically captures the current stack trace.
As such, multiple successive invocations of getValueFromDictionary + init(fromDict:) (both of which throws VerboseError instances), might be causing the slow down.
2024-01-14-08:28 - Log: react-native-ios-adaptive-modal - Found bug w/ AdaptiveModalConfigPresetDemo05.
Desc: The overshoot/last snap point is causing the modal content + drag handle to disappear/flicker whenever the modal is dragged too far out to the right.
2024-01-18-17-21 - Log: In order to test out AdaptiveModalConfigPresetDemo09 + keyboardRelativeSize layout values, there has to be a text box inside the modal content.
Impl. diff. modal content similar to the example in adaptive-modal.
2024-01-18-22:17 - react-native-ios-adaptive-modal (Commits) - Desc: Ex - Impl. AdaptiveModalConfigPresetsWithMetadata, and update AdaptiveModalViewTest01 to show diff. modal content based on the current preset item.
2024-01-20-15:14 - Log: react-native-ios-adaptive-modal - Found bug w/ AdaptiveModalConfigPresetDemo11
Observation: The padding values are not being applied correctly to the RN modal content view.
The possible cause could be that the wrong modal size or height/width value is being used for the modal content.
Observation: The padding is applied to the modal content correctly when it is being dragged, but is incorrect during the duration of the snap animation.
As such the possible culprit for the bug might be related to AdaptiveModalDisplayLinkEventsNotifiable.
2024-01-20-17:32 - react-native-ios-adaptive-modal (Commit) - Desc: Fix padding for modal content not being applied during modal snapping animation.
Desc: Encountered bug w/ AdaptiveModalViewTest01 — Changing the modal config while the modal is visible does not update the position of the drag handle.
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.
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.
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.
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.
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.
Desc: Bug w/ override snap points + overshoot snap point - When overshooting while "override snap points" is active, the modal will snap back to the "regular" snap point.
Desc: Update dependencies, update RNIAdaptiveModalView modal command function param types, and update RNIAdaptiveModalView.modalConfigProp so that it triggers snapToClosestSnapPoint.
A list of tasks to complete to create the initial release (WIP).
Tasks
Modal Config - Parser + TS Types
[x]
#ff0000
- Impl:react-native-ios-adaptive-modal
- TS Types - type definitions for modal config (i.e.AdaptiveModalConfig
and related types).[x]
#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.[x]
#d2691e
- Impl:react-native-ios-utilities
- TS Types - TS type definitions forComputableLayout
and related types.[x]
#f08080
- Impl:react-native-ios-utilities
- Swift Parser - Impl. parser for convertingComputableLayout
(and related types) from JS primitives to their corresponding swift types.[x]
#bdb76b
- Impl:react-native-ios-utilities
- TS Types - type definitions forUIKit
types.[x]
#a0522d
- Impl:react-native-ios-utilities
- Swift Parser - Impl. parser for convertingUIKit
types from their JS primitives representation, to their corresponding swift types.[x]
#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 fromadaptive-modal
.#c71585
- Impl: Example - Recreate the examples fromadaptive-modal
'sAdaptiveModalConfigDemoPresets
+AdaptiveModalConfigDemoViewController
.#00008b
- Impl: Docs - Create the draft version of theREADME
containing videos/images showing theAdaptiveModalConfigDemoPresets
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.react-native-ios-utilities
- UpdateRNIDummyView
RNIDummyView
instead ofRNIDetachedView
.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.UIScrollView
under the hood (and not byYogaLayout
, there won’t be any layout-resizing issues since the autolayout constraints animations will be applied directly to the scroll view.General Tasks
[x]
#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 + Logicreact-native-ios-modal
, however it’s in an unfinished state, and will need major refactoring to make it work.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.[x]
#ee82ee
- Refactor:adaptive-modal
- Re-writeAdaptiveModalSnapPointConfig
[ ] Refactor:
adaptive-modal
- Extract modal animation/interpolation logic fromAdaptiveModalManager
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.[x]
#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
DGSwiftUtilities
(Commits - All Changes)ComputableLayout
(Commits - All Changes)react-native-ios-utilities
(Commits - All Changes)react-native-ios-adaptive-modal
(Commits - All Changes)# Task:
#bdb76b
react-native-ios-utilities
- TS Types - type definitions forUIKit
types.2023-12-21-06:58
:react-native-ios-utilities
(Commits)UIKit
TS types fromreact-native-ios-adaptive-modal
.# Task:
#a0522d
react-native-ios-utilities
- Swift Parser - Impl. parser for converting UIKit types from their JS primitives representation, to their corresponding swift types.2023-12-18-06:49
:DGSwiftUtilities
(Commits)UIKit
swift enum value.# Task:
#d2691e
react-native-ios-utilities
- TS Types - TS type definitions forComputableLayout
and related types.2023-12-21-20:28
:react-native-ios-utilities
(Commits)ComputableLayout
, and update library exports.# Task:
#f08080
react-native-ios-utilities
- Swift Parser - Impl. parser for convertingComputableLayout
(and related types) from JS primitives to their corresponding swift types.2023-12-21-20:43
:ComputableLayout
(Commits)ComputableLayout
swift enum types.0.6.0
(changes)2023-12-21-22:13
:react-native-ios-utilities
(Commits)DGSwiftUtilities
, and add dependency toComputableLayout
.2023-12-22-02:51
:DGSwiftUtilities
(Commits)VerboseError
- Improve error description readability, and add stack trace ti error description.2023-12-22-07:59
:ComputableLayout
(Commits)EnumCaseStringRepresentable
conformance forComputableLayoutValuePercentTarget
withString
, andCaseIterable
.2023-12-24-22:57
: Log - Ran into a blocker with mapping swift'sKeyPath<Root, Value>
to TS/JS.let keypath: KeyPath<CGRect, CGFloat> = \.origin.x
.KeyPath
(e.g. tree traversal).KeyPath
(e.g. restraints due to type safety at compile-time).2023-12-26-07:29
:2023-12-26-06-04-59.playground
(Code Snippet)KeyPath
Parser"2023-12-26-07:43
: Recap/Summary - From2023-12-24-23:24
to2023-12-26-05:42
"origin"
) to a swiftKeyPath
(e.g.\CGRect.origin
).NSObject
.KeyPath
.KeyPath
is that KVC is evaluated at runtime, andKeyPath
is "constructed" at compile-time (e.g. because it heavily relies on swift's generic system).KeyPath
is not codable.KeyPath
(not even through reflection).KeyPath
, e.g.:Dictionary<String, PartialKeyPath<CGRect>>
["origin": \.origin]
."foo.bar.baz"
), and converting it to\.foo.bar.baz
2023-12-24-23-24-07
(Code Snippet)2023-12-25-06-03-13.playground
(Code Snippet)2023-12-25-06-55-41.playground
(Code Snippet)2023-12-25-07-57-20.playground
(Code Snippet)2023-12-25-08-11-12.playground
(Code Snippet)2023-12-25-17-51-25.playground
(Code Snippet)AnyKeyPath
together.2023-12-25-17-54-35.playground
(Code Snippet)2023-12-25-21-56-31.playground
(Code Snippet)2023-12-25-22-14-52.playground
(Code Snippet)2023-12-26-05-42-02.playground
(Code Snippet)2023-12-26-08:47
:2023-12-26-08-30-37.playground
(Code Snippet)Value
fromKeyPath<Root, Value>
usingtype(of:)
at runtime.2023-12-26-19:20
:2023-12-26-06-04-59.playground
(Code Snippet)KeyPath
Parser" -static var b: [B.Type]
can now be automatically impl. in a default extension usingtype(of:)
.2023-12-26-20:01
:2023-12-26-06-04-59.playground
(Code Snippet)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)KeyPath
Parser" - Impl. optimization - cacheB.b
, andB.allB
values.2023-12-26-23:26
:2023-12-26-06-04-59.playground
(Code Snippet)KeyPath
Parser" - Impl.B.getPartialKeyPath
.2023-12-26-23:42
:2023-12-26-06-04-59.playground
(Code Snippet)KeyPath
Parser" - Impl.B.getKeyPath
.2023-12-27-05:30
:DGSwiftUtilities
(Commits)StringKeyPathMapping
(based on2023-12-26-06-04-59.playground
) + impl. conformance toStringKeyPathMapping
for types:CGPoint
,CGRect
,CGSize
.2023-12-27-07:02
:DGSwiftUtilities
(Commits)StringKeyPathMapping
for types:UIEdgeInsets
,UIDevice
.2023-12-28-08:32
:ComputableLayout
(Commits)DGSwiftUtilities
to >=0.11.0
, and impl. conformanceStringKeyPathMapping
for types:EvaluableConditionContext
,ComputableLayoutValueContext
.0.7.0
(changes)2023-12-31-12:06
:react-native-ios-utilities
(Commits)InitializableFromDictionary
, andInitialzableFromString
+ added protocol conformance for variousUIKit
/DGSwiftUtilties
/ComputableLayout
types.2023-12-27-07:02
:DGSwiftUtilities
(Commits)InitializableFromDictionary
, andInitialzableFromString
fromreact-native-ios-utilities
.2024-01-01-00:15
:react-native-ios-utilities
(Commits)react-native-ios-adaptive-modal
.# Task:
#ff0000
react-native-ios-adaptive-modal
- TS Types - type definitions for modal config (i.e.AdaptiveModalConfig
and related types).2024-01-01-06:00
:react-native-ios-adaptive-modal
(Commits)AdaptiveModalConfig
+ related types.2024-01-02-10:45
:react-native-ios-adaptive-modal
(Commits)AdaptiveModalSnapPointPreset
,ComputableLayoutPreset
, and updatedAdaptiveModalConfig
.2024-01-02-10:39
:react-native-ios-adaptive-modal
(Commits)DragHandlePosition
.# Task:
#ffa500
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.2023-12-28-08:32
:adaptive-modal
(Commits)DGSwiftUtilities
to >=0.11.0
, and impl. conformanceStringKeyPathMapping
for types:AdaptiveModalInterpolationPoint
,AdaptiveModalKeyframeConfig
.1.3.0
(changes), Version1.3.1
(changes)2024-01-02-10:39
:react-native-ios-adaptive-modal
(Commits)InitializableFromDictionary
for types:AdaptiveModalSnapPointConfig
,AdaptiveModalConfig
,AdaptiveModalKeyframeConfig
,AdaptiveModalClampingConfig
,AdaptiveModalSnapPointPreset
,AdaptiveModalLayoutValueEdgeInsets
, and impl. conformance toInitializableFromDictionary
for types:CACornerMask
.2024-01-02-14:27
:DGSwiftUtilities
(Commits)Dictionary+Hepers
, andCACornerMask+InitializableFromString
fromreact-native-ios-adaptive-modal
.2024-01-02-14:34
:react-native-ios-utilities
(Commits)ComputableLayoutPreset+InitializableFromDictionary
fromreact-native-ios-adaptive-modal
.2024-01-02-23:21
:react-native-ios-adaptive-modal
(Commits)DGSwiftUtilities
, andreact-native-ios-utilities
.# Task:
#ffd700
react-native-ios-adaptive-modal
- Prop - Impl,modalConfig
prop, and test whether or not the config is being parsed correctly.2024-01-03-02:24
:react-native-ios-adaptive-modal
(Commits)AdaptiveModalView.modalConfig
prop, and update example to test themodalConfig
prop.2024-01-03-02:27
- Log: Encountered bug with parsing ofmodalConfig
.2024-01-03-02:30
:AdaptiveModalConfig.snapPoints
->AdaptiveModalSnapPointConfig.layoutConfig
->ComputableLayout
horizontalAlignment
,verticalAlignment
width
2024-01-03-02:34
: Check:ComputableLayoutValue(fromDict:)
mode
2024-01-03-02:41
: Check:ComputableLayoutValueMode(fromDict:)
dict["mode"]
,modeString
(value: "percent"),2024-01-03-02:52
:react-native-ios-utilities
(Commits)ComputableLayoutValueMode+InitializableFromDictionary
- Parsing ofComputableLayoutValueMode.percent
.2024-01-03-03:06
:react-native-ios-adaptive-modal
(Commits) (Gif)react-native-ios-utilities
, and updated example.2024-01-03-03:14
:react-native-ios-adaptive-modal
(Commit) (Gif)modalConfig
, and encountered bug with snap points.2024-01-03-04:57
:react-native-ios-adaptive-modal
(Commit) (Gif)modalConfig
.adaptive-modal
in RN.# Task:
#4169e1
adaptive-modal
.2024-01-03-09:37
:react-native-ios-adaptive-modal
(Commits) (Gif)AdaptiveModalViewTest01
.2024-01-03-22:00
: Loginit(usingDict:)
.Dictionary+Hepers
- Log to console for every invocation ofgetValueFromDictionary
(or related functions).AdaptiveModalConfigPresets
.2024-01-04-00:01
: Log (continued)getValueFromDictionary
.getValueFromDictionary
is creating an error instance (i.e.VerboseError
), and verbose error automatically captures the current stack trace.getValueFromDictionary
+init(fromDict:)
(both of which throwsVerboseError
instances), might be causing the slow down.2024-01-05-02:16
:DGSwiftUtilities
(Commits)VerboseError
to not automatically capture the stack trace.2024-01-05-05:41
:react-native-ios-adaptive-modal
(Commits)2024-01-11-18:37
: Log -react-native-ios-adaptive-modal
secondaryGestureAxisDampingPercent
is not being applied.2024-01-13-14:11
: Log (Continued) -react-native-ios-adaptive-modal
AdaptiveModalConfigPresetDemo01
-> snap point (index 2) ->secondaryGestureAxisDampingPercent
(value:1
).po dict["secondaryGestureAxisDampingPercent"]
->some : 1
2024-01-13-15:55
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo03
.2024-01-13-18:09
-react-native-ios-utilities
(Release: v4.3.0-6 | changes) - Desc: Fix typeComputableLayoutValueMode
.2024-01-13-18:56
-react-native-ios-adaptive-modal
(Commits) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo04
, and update dependencies.2024-01-13-19:10
- Log: Bug -react-native-ios-adaptive-modal
-modalDragHandleColor
not working.2024-01-13-19:43
-DGSwiftUtilities
(Release: 0.12.6 | changes) - Desc: FixgetColorFromDictionary
not working.2024-01-14-07:33
-react-native-ios-adaptive-modal
(Commits) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo05
, fixedAdaptiveModalConfigPresetDemo04
, and reorderedRNIModalContentAnchorModes
.2024-01-14-07:49
- Log -react-native-ios-adaptive-modal
#AdaptiveModalViewTest01
- Index: 2 - Preset:AdaptiveModalConfigPresetDemo03
AdaptiveModalViewTest01
- Index: 3 - Preset:AdaptiveModalConfigPresetDemo04
AdaptiveModalViewTest02
- Index: 1 - Preset:AdaptiveModalConfigPresetDemo01
AdaptiveModalViewTest02
- Index: 2 - Preset:AdaptiveModalConfigPresetDemo03
AdaptiveModalViewTest02
- Index: 3 - Preset:AdaptiveModalConfigPresetDemo04
AdaptiveModalViewTest02
- Index: 4 - Preset:AdaptiveModalConfigPresetDemo05
2024-01-14-08:28
- Log:react-native-ios-adaptive-modal
- Found bug w/AdaptiveModalConfigPresetDemo05
.2024-01-14-10:53
- Log (Continued):react-native-ios-adaptive-modal
adaptive-modal
.offsetValue
oroffsetOperation
for height might not be parsed correctly, if at all.2024-01-16-10:43
-react-native-ios-utilities
(Release: v4.3.0-7 | changes) - Desc: FixComputableLayoutValue.offsetOperation
not being parsed correctly.2024-01-16-20:27
-react-native-ios-adaptive-modal
(Commits) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo06
, and update dependencies.2024-01-16-20:52
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo07
2024-01-16-20:53
- Log:react-native-ios-adaptive-modal
- Found bug w/AdaptiveModalConfigPresetDemo07
2024-01-18-12:58
- Log:react-native-ios-adaptive-modal
- Found bug w/Transform3D
parsing inTransform3D+InitializableFromDictionary
.2024-01-18-13:04
-react-native-ios-utilities
(Release: v4.3.0-8 | changes) - Desc: Fix parsing forTransform3D
.2024-01-18-13:43
-react-native-ios-adaptive-modal
(Commits) - Desc: Ex - Update dependencies, and added logo to example homescreen header.2024-01-18-14:29
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo08
2024-01-18-17:18
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo09
2024-01-18-17-21
- Log: In order to test outAdaptiveModalConfigPresetDemo09
+keyboardRelativeSize
layout values, there has to be a text box inside the modal content.adaptive-modal
.2024-01-18-22:17
-react-native-ios-adaptive-modal
(Commits) - Desc: Ex - Impl.AdaptiveModalConfigPresetsWithMetadata
, and updateAdaptiveModalViewTest01
to show diff. modal content based on the current preset item.2024-01-20-13:40
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo10
2024-01-20-15:13
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo11
2024-01-20-15:14
- Log:react-native-ios-adaptive-modal
- Found bug w/AdaptiveModalConfigPresetDemo11
AdaptiveModalDisplayLinkEventsNotifiable
.2024-01-20-17:32
-react-native-ios-adaptive-modal
(Commit) - Desc: Fix padding for modal content not being applied during modal snapping animation.2024-01-20-17:54
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo12
2024-01-20-20:07
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo13
2024-01-20-20:18
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo14
2024-01-20-20:34
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - Impl.AdaptiveModalConfigPresetDemo15
2024-01-21-21:14
-react-native-ios-adaptive-modal
(Release: v0.2.1 | changes)# Task:
#c71585
adaptive-modal
'sAdaptiveModalConfigDemoPresets
+AdaptiveModalConfigDemoViewController
.2024-01-21-14:42
- Log:react-native-ios-adaptive-modal
#2f4f4f
) being impl.adaptive-modal
's interpolation point logic should be completed first.2024-01-30-22:03
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - UpdatedAdaptiveModalViewTest01
to show the current snap point index.2024-02-03-17:04
-react-native-ios-adaptive-modal
(Commit) - Desc: Ex - UpdatedAdaptiveModalViewTest01
2024-02-03-17:10
- Log:react-native-ios-adaptive-modal
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)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
AdaptiveModalViewTest01
-AdaptiveModalKeyframeConfig.modalShadowOffset
not working.CGSize
.2024-02-04-02:05
-react-native-ios-utilities
(Release: v4.3.0-9 | changes) - Desc: Add parser forCGSize
, i.e.CGSize+InitializableFromDictionary
.2024-02-05-19:44
-adaptive-modal
(Release:2.1.2
| Changes)2024-02-06-05:30
-react-native-ios-adaptive-modal
(Commits) - Desc: Ex - Impl.AdaptiveModalViewTest04
for testingpresentModal
+RNIAdaptiveModalCommandConfigPresent
.2024-02-06-14:38
-react-native-ios-utilities
(Release: v4.3.0-10 | changes) - Desc: Fix parsing forAnimationConfig
, i.e.AnimationConfig
.# Task:
#00008b
README
containing videos/images showing theAdaptiveModalConfigDemoPresets
items.2024-01-18-14:47
- Log: Before recording the videos, wait for the completion of the example/test presets + missing modal features.shouldEnableOverShooting
,overrideShouldSnapToUnderShootSnapPoint
,overrideShouldSnapToOvershootSnapPoint
,shouldDismissModalOnSnapToUnderShootSnapPoint
,shouldDismissModalOnSnapToOverShootSnapPoint
,shouldDismissKeyboardOnGestureSwipe
.dismiss
,snapTo(snapPointIndex:)
,snapTo(snapPointKey:)
,snapToPrevSnapPointIndex
,snapToCurrentSnapPointIndex
,snapToNextSnapPointIndex
,snapTo(overrideSnapPointConfig:)
,clearSnapPointOverride
.AdaptiveModalViewTest01
andAdaptiveModalViewTest02
should support diff. modal content "modes" + flags.showDismissButton
,showCustomSnapPointButton
,showTextInputField
buttons
,scrollview
shouldIncreaseModalIndexOnTap
overShootSnapPoint
forsnapTo(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
, anddidSnap
).#6b8e23
- Completion of modal manager flag props.#ee82ee
- Rewrite ofadaptive-modal
'sAdaptiveModalSnapPointConfig
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.RN
/YGLayout
is not informed of the size changes during the duration of the animation.Issue:
UIViewPropertyAnimator
not animatingRCTView
#2Status: WIP
2024-01-06-04:37
:adaptive-modal
(Commits)AdaptiveModalDisplayLinkEventsNotifiable
for listening to display link events fromAdaptiveModalManager
.1.4.0
(changes), Version1.4.1
(changes), Version1.4.2
(changes)2024-01-11-09-06
:adaptive-modal
(Commits)AdaptiveModalAnimationMode
(experimental), and fixed runtime error due to constraints being set tonan
values .1.5.0
(changes), Version1.5.1
(changes).adaptive-modal
running w/AdaptiveModalManager.animationMode
set to.viewPropertyAnimatorDiscrete
.animationMode
is still very buggy.dismiss
modal command, the exit snapping animation is laggy.2024-01-11-13:11
: Log -react-native-ios-adaptive-modal
AdaptiveModalViewTest01
withAdaptiveModalManager.animationMode
set to.viewPropertyAnimatorDiscrete
, withmodalContentAnchorMode
set tostretch
.AdaptiveModalManager.animationMode
+AdaptiveModalAnimationMode
was impl.AdaptiveModalViewTest01
withAdaptiveModalManager.animationMode
set to.viewPropertyAnimatorDiscrete
, withmodalContentAnchorMode
set tocenter
.2024-01-11-21:18:19
:adaptive-modal
(Commits)AdaptiveModalAnimationMode.viewPropertyAnimatorDiscrete
-related bugs1.5.2
(changes), Version1.5.3
(changes), Version1.5.4
(changes).AdaptiveModalManager.animationMode
+AdaptiveModalAnimationMode.viewPropertyAnimatorDiscrete
has been fixed, however it's still a bit janky.2024-01-12-08:06
:react-native-ios-adaptive-modal
(Commits)modalAnimationMode
.shouldEnableContinuousLayoutResizingDuringAnimation
.RNIAdaptiveModalView.modalManager
AdaptiveModalManager
instancing + cleanup.AdaptiveModalViewTest01
for configuring the props forAdaptiveModalView
.01-render-2024-01-12-08-32-05.mp4
# Task:
#8b008b
react-native-ios-adaptive-modal
- Add support different modes for positioning/resizing the modal content.left
,right
,top
,bottom
,center
.stretch
,none
.2024-01-08-07:26
:react-native-ios-utilities
(Commits)RNIDetachedView.contentTargetMode
.2024-01-08-07:31
:react-native-ios-utilities
(Commits)RNIDetachedView.contentView
, and impl.RNIDetachedView.debugAttachToWindow
+RNIDetachedViewTest01
for testingRNIDetachedView
.2024-01-08-10:19
:react-native-ios-adaptive-modal
(Commits)AdaptiveModalView.modalContentAnchorMode
prop.2024-01-08-11:17
:react-native-ios-adaptive-modal
(Commits)AdaptiveModalViewTest02
for testing scrollview.# Task:
#ee82ee
adaptive-modal
- Re-writeAdaptiveModalSnapPointConfig
AdaptiveModalSnapPointConfig
, andAdaptiveModalSnapPoint
,AdaptiveModalSnapPointConfig
produces aAdaptiveModalSnapPoint
, andAdaptiveModalSnapPoint
is derived from aAdaptiveModalSnapPointConfig
.AdaptiveModalSnapPointConfig
from an enum w/ associated value to a standard struct.AdaptiveModalSnapPointConfig
- a property for the current snapping mode, e.g.inBetween
, andstandard
.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
.2024-01-21-22:13
- Log:adaptive-modal
- Created new branchwip-3
.2024-01-21-22:16
-adaptive-modal
(Commits)AdaptiveModalSnapPointConfig
and createdAdaptiveModalSnapPoint
.2024-01-24-00:07
-adaptive-modal
(Commit)AdaptiveModalSnapPointConfig
UsageinBetween
vs.standard
snap points.layoutConfig
is optional ininBetween
snap points, but required instandard
snap points.2024-01-24-00:09
- Log:adaptive-modal
- Abandoning changes in branchwip-3
.2024-01-24-00:13
- Log: Created new branchwip-4
.2024-01-25-15:55
-adaptive-modal
(Commits)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 presetsindex: 3
+.demo04
.2024-01-25-17:37
- Log:adaptive-modal
(Continued)_getClosestSnapPoint
?2024-01-25-17:52
- Log:adaptive-modal
(Continued)2024-01-25-17:58
-adaptive-modal
(Commits)2024-01-25-18:11
- Log:adaptive-modal
- Found bug in example - snap point presetsindex: 6
+.demo07
AdaptiveModalManager
commandsnapTo(overrideSnapPointConfig:)
.2024-01-25-18:22
-adaptive-modal
(Commit)AdaptiveModalManager.snapTo(overrideSnapPointConfig:)
overshoot snap point has wrong index.2024-01-25-18:24
- Log:adaptive-modal
index: 6
+.demo07
.2024-01-25-18:33
- Log:adaptive-modal
- Found bug in example - snap point presetsindex: 7
+.demo08
2024-01-25-20:50
-adaptive-modal
(Commits)AdaptiveModalManager.snapTo(overrideSnapPointConfig:)
.AdaptiveModalManager._adjustInterpolationIndex
not using override snap points when adjusting snap point index.2024-01-25-22:37
- Log:adaptive-modal
AdaptiveModalConfigDemoViewController
+AdaptiveModalConfigDemoPresets
2024-01-25-22:40
- Log:adaptive-modal
- Desc: Finished testingAdaptiveModalPageTestViewController
+AdaptiveModalConfigDemoPresets
.2024-01-25-22:41
- Log:adaptive-modal
- Desc: Merge changes from branchwip-4
tomain
.2024-01-25-22:49
-adaptive-modal
(Commits)2.0.0
(changes).2024-01-25-22:52
- Log: Begin refactoringreact-native-ios-adaptive-modal
to useadaptive-modal
version2.0.0
.2024-01-25-23:36
-react-native-ios-adaptive-modal
(Commits)adaptive-modal
version2.0.0
, and refactor + fix build errors.2024-01-26-14:51
-react-native-ios-adaptive-modal
(Commits)v0.3.0
(changes).# Task:
#2f4f4f
react-native-ios-adaptive-modal
- Modal Events: Expose modal presentation events to RN.2024-01-27-22:43
-react-native-ios-adaptive-modal
(Commit)AdaptiveModalPresentationEventsNotifiable
to RN.2024-01-29-01:37
-react-native-ios-adaptive-modal
(Commit)AdaptiveModalViewTest03
to test the modal events.2024-01-29-01:41
- Log:react-native-ios-adaptive-modal
AdaptiveModalViewTest03
found some layout performance issues when the modal's width is being resized.2024-01-30-15:56
-react-native-ios-adaptive-modal
(Commits)AdaptiveModalBackgroundTapDelegate
events to RN, and updated exampleAdaptiveModalViewTest03
to testonBackgroundTapGesture
event.2024-01-30-20:57
-react-native-ios-adaptive-modal
(Commits)AdaptiveModalStateEventsNotifiable
events to RN, and updated exampleAdaptiveModalViewTest03
to testonModalStateWillChange
event.v0.4.0
(changes).# Task:
#6b8e23
react-native-ios-adaptive-modal
- Props - Expose modal manager flags as props.shouldEnableSnapping
,shouldEnableOverShooting
,shouldDismissKeyboardOnGestureSwipe
,shouldLockAxisToModalDirection
,overrideShouldSnapToUnderShootSnapPoint
,overrideShouldSnapToOvershootSnapPoint
,shouldDismissModalOnSnapToUnderShootSnapPoint
,shouldDismissModalOnSnapToOverShootSnapPoint
,isSwipeGestureEnabled
,isModalContentSwipeGestureEnabled
,allowModalToDragWhenAtMinScrollViewOffset
,allowModalToDragWhenAtMaxScrollViewOffset
,isModalDragHandleGestureEnabled
.2024-01-31-02:44
-react-native-ios-adaptive-modal
(Commits)AdaptiveModalManager
flags as props to RN, and updated the example'sAdaptiveModalConfigPresets
+ test items to set/test the ff. props:shouldEnableOverShooting
,overrideShouldSnapToUnderShootSnapPoint
,overrideShouldSnapToOvershootSnapPoint
shouldDismissModalOnSnapToUnderShootSnapPoint
shouldDismissModalOnSnapToOverShootSnapPoint
,shouldDismissKeyboardOnGestureSwipe
.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.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)notifyDidLayoutSubviews
,clearSnapPointOverride
.2024-01-31-22:40
-react-native-ios-adaptive-modal
(Commit)presentModal
.2024-01-31-22:50
-react-native-ios-adaptive-modal
(Commits)AdaptiveModalView.presentModal
+ example test items.2024-02-01-03:21:08
-react-native-ios-adaptive-modal
(Commit)dismissModal
.2024-02-01-03:47
-react-native-ios-adaptive-modal
(Commit)snapTo
.2024-02-01-03:47
-react-native-ios-adaptive-modal
(Commit)snapToOverride
.2024-02-01-22:29
-react-native-ios-adaptive-modal
(Commit)snapToClosestSnapPoint
.2024-02-01-22:30
-react-native-ios-adaptive-modal
(Commit)snapToPrevSnapPointIndex
.2024-02-01-22:31
-react-native-ios-adaptive-modal
(Commit)snapToCurrentSnapPointIndex
.2024-02-01-22:31
-react-native-ios-adaptive-modal
(Commit)snapToNextSnapPointIndex
.2024-02-02-22:44
-react-native-ios-adaptive-modal
(Commits)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)AdaptiveModalManager.snapToClosestSnapPoint
+AdaptiveModalManager.snapTo
.2024-02-03-16:36
-react-native-ios-adaptive-modal
(Commits)RNIAdaptiveModalView
modal command function param types, and updateRNIAdaptiveModalView.modalConfigProp
so that it triggerssnapToClosestSnapPoint
.Misc/General Tasks
N/A