-
-
Notifications
You must be signed in to change notification settings - Fork 87
Added documentation for Child Items #880
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
Conversation
WalkthroughThree new documentation files were added to describe the experimental "Child Items" navigation model, its lifecycle management, and navigation API. The Compose extension documentation was updated with a new section on integrating Child Items navigation. The mkdocs configuration was updated to include the new documentation sections. Minor import path updates for Changes
Poem
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (3)
docs/navigation/items/navigation.md (2)
24-24
: Fix missing article in sentence.Add the missing article "the" before "lifecycles" for proper grammar.
-ensures that all deactivated or removed components are de 8000 stroyed, and updates lifecycles of the active components to +ensures that all deactivated or removed components are destroyed, and updates the lifecycles of the active components to🧰 Tools
🪛 LanguageTool
[uncategorized] ~24-~24: Possible missing article found.
Context: ...d components are destroyed, and updates lifecycles of the active components to match the n...(AI_HYDRA_LEO_MISSING_THE)
28-28
: Add comma before "and" in compound sentence.Add a comma before "and" to properly separate the two independent clauses.
-`navigate` method returns, the navigation is finished and all component lifecycles are moved into required states. +`navigate` method returns, the navigation is finished, and all component lifecycles are moved into required states.🧰 Tools
🪛 LanguageTool
[uncategorized] ~28-~28: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...thod returns, the navigation is finished and all component lifecycles are moved into...(COMMA_COMPOUND_SENTENCE_2)
docs/navigation/items/overview.md (1)
1-116
: LGTM! Comprehensive and well-structured documentation.This new documentation file provides excellent coverage of the Child Items navigation model, including:
- Clear experimental status warning
- Detailed explanation of the three main entities (Items, ChildItems, ItemsNavigation)
- Proper initialization steps and requirements
- Comprehensive code examples that align with the sample implementations
- Important notes about state preservation and multiple instances
The documentation will be very valuable for developers adopting this new navigation model. The code examples match the sample implementations perfectly, ensuring consistency between docs and code.
Note: There's a minor formatting issue flagged by static analysis tools regarding list indentation, but this doesn't affect the content quality.
🧰 Tools
🪛 LanguageTool
[typographical] ~18-~18: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...p should also be present in theitems
list, otherwise the behavior is undefined. - [ChildItem...(THUS_SENTENCE)
🪛 markdownlint-cli2 (0.17.2)
17-17: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
18-18: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
20-20: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
21-21: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
docs/extensions/compose.md
(44 hunks)docs/navigation/items/navigation.md
(1 hunks)docs/navigation/items/overview.md
(1 hunks)extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/lazyitems/ChildItemsLifecycleController.kt
(2 hunks)mkdocs.yml
(1 hunks)sample/shared/compose/src/commonMain/kotlin/com/arkivanov/sample/shared/Foo.kt
(1 hunks)sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemComponent.kt
(1 hunks)sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemsComponent.kt
(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/lazyitems/ChildItemsLifecycleController.kt (1)
decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/items/ItemsNavigation.kt (1)
ItemsNavigation
(23-25)
sample/shared/compose/src/commonMain/kotlin/com/arkivanov/sample/shared/Foo.kt (2)
sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemsComponent.kt (1)
items
(10-12)extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/lazyitems/ChildItemsLifecycleController.kt (3)
ChildItemsLifecycleController
(34-63)ChildItemsLifecycleController
(80-109)ChildItemsLifecycleController
(111-140)
sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemsComponent.kt (2)
sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemComponent.kt (1)
componentContext
(13-16)decompose/src/commonMain/kotlin/com/arkivanov/decompose/router/items/ItemsNavigation.kt (1)
ItemsNavigation
(23-25)
🪛 LanguageTool
docs/navigation/items/navigation.md
[uncategorized] ~24-~24: Possible missing article found.
Context: ...d components are destroyed, and updates lifecycles of the active components to match the n...
(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~28-~28: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...thod returns, the navigation is finished and all component lifecycles are moved into...
(COMMA_COMPOUND_SENTENCE_2)
[style] ~60-~60: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2047 characters long)
Context: ...e states using a transformer function. !!! note "Illustration" ```title="Befo...
(EN_EXCESSIVE_EXCLAMATION)
docs/navigation/items/overview.md
[typographical] ~18-~18: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...p should also be present in the items
list, otherwise the behavior is undefined. - [ChildItem...
(THUS_SENTENCE)
🪛 markdownlint-cli2 (0.17.2)
docs/navigation/items/overview.md
17-17: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
18-18: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
20-20: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
21-21: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
docs/extensions/compose.md
1271-1271: Code block style
Expected: fenced; Actual: indented
(MD046, code-block-style)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Build on Linux
- GitHub Check: Build on macOS
🔇 Additional comments (12)
mkdocs.yml (1)
50-52
: LGTM! Navigation structure follows established patterns.The new Child Items navigation section is properly integrated following the same structure as other navigation sections (Child Stack, Child Slot, etc.).
extensions-compose/src/commonMain/kotlin/com/arkivanov/decompose/extensions/compose/lazyitems/ChildItemsLifecycleController.kt (1)
14-14
: Import is correctly added.The import for
ItemsNavigation
is needed for the demonstration function below.sample/shared/compose/src/commonMain/kotlin/com/arkivanov/sample/shared/Foo.kt (1)
1-37
: Excellent sample implementation of Child Items navigation model.This sample code correctly demonstrates:
- Proper state subscription with
subscribeAsState()
- Integration of
ChildItemsLifecycleController
for lifecycle management- Appropriate preload counts and index converter usage
- Clean separation between list rendering and lifecycle control
The implementation aligns well with the newly documented Child Items navigation model.
docs/navigation/items/navigation.md (1)
1-75
: Excellent documentation structure and content.The documentation provides comprehensive coverage of the ItemsNavigator interface, navigation patterns, and helpful illustrations. The content is well-organized and clearly explains the synchronous/asynchronous navigation behavior and extension functions.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~24-~24: Possible missing article found.
Context: ...d components are destroyed, and updates lifecycles of the active components to match the n...(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~28-~28: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...thod returns, the navigation is finished and all component lifecycles are moved into...(COMMA_COMPOUND_SENTENCE_2)
[style] ~60-~60: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2047 characters long)
Context: ...e states using a transformer function. !!! note "Illustration" ```title="Befo...(EN_EXCESSIVE_EXCLAMATION)
sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemComponent.kt (3)
1-8
: LGTM! Clean interface design.The
ItemComponent
interface is well-designed with a clear, focused responsibility. The package structure and imports are appropriate for the sample code.
10-11
: LGTM! Proper serialization setup.The
Item
data class is correctly annotated with@Serializable
and includes a helpful comment about the kotlinx-serialization plugin requirement. The class structure withid
anddata
properties is appropriate for the sample.
13-16
: LGTM! Correct implementation pattern.The
DefaultItemComponent
implementation follows the proper Decompose pattern by delegatingComponentContext
and cleanly implementing theItemComponent
interface. The constructor parameter structure aligns well with the factory usage inItemsComponent
.docs/extensions/compose.md (1)
377-458
: LGTM! Comprehensive documentation for Child Items navigation.This new section provides excellent documentation for the experimental Child Items navigation model with Compose. The content includes:
- Clear warning about experimental status
- Detailed explanation of
ChildItemsLifecycleController
functionality- Practical code examples showing both lazy list and grid usage
- Good alignment with the sample implementations
The documentation will be very helpful for users adopting this new navigation model.
sample/shared/shared/src/commonMain/kotlin/com/arkivanov/sample/shared/foo/ItemsComponent.kt (4)
10-12
: LGTM! Clean interface design.The
ItemsComponent
interface is well-designed with a single, focused responsibility exposing the lazy child items.
14-18
: LGTM! Proper setup and initialization.The
DefaultItemsComponent
correctly implements the interface and delegatesComponentContext
. TheItemsNavigation
initialization follows the documented pattern for the Child Items navigation model.
20-36
: LGTM! Comprehensive childItems configuration.The
childItems
function call is properly configured with:
- Correct navigation source
- Appropriate serializer with helpful comment about disabling state saving
- Reasonable initial data (100 items for demonstration)
- Proper factory function creating
DefaultItemComponent
instancesThis demonstrates the Child Items navigation model effectively.
38-40
: LGTM! Demonstrates navigation manipulation.The
addMoreItems
method shows how to properly update the navigation state using thesetItems
function. This is a good example of dynamic item management in the Child Items model.
...kotlin/com/arkivanov/decompose/extensions/compose/lazyitems/ChildItemsLifecycleController.kt
Outdated
Show resolved
Hide resolved
741b000
to
1dd6c51
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (15)
docs/navigation/items/overview.md (8)
3-3
: Suggest removing the article "The" in the subheading for consistency.The section title reads
## The Child Items
. To match other headings and improve readability, consider changing it to## Child Items
.
12-12
: Fix comma splice in sentence.The sentence
It is possible to have more than one `Child Items` navigation model in a component, nested navigation is also supported.
is a run-on. Consider splitting into two sentences or using a semicolon:
It is possible to have more than one `Child Items` navigation model in a component; nested navigation is also supported.
18-18
: Clarify use of "otherwise" for better flow.Rather than
Configurations in the map should also be present in the `items` list, otherwise the behavior is undefined.
you could write:
If a configuration in the map is not present in the `items` list, the behavior is undefined.
🧰 Tools
🪛 LanguageTool
[typographical] ~18-~18: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...p should also be present in theitems
list, otherwise the behavior is undefined. - [ChildItem...(THUS_SENTENCE)
19-19
: Insert missing preposition.The phrase
stores a list component configurations
should read:
stores a list of component configurations
to include the missing "of".
🧰 Tools
🪛 LanguageTool
[uncategorized] ~19-~19: Possible missing preposition found.
Context: ... a simple data class that stores a list component configurations, as well as a map of act...(AI_EN_LECTOR_MISSING_PREPOSITION)
107-107
: Reword awkward heading.The heading
## Screen recreation and process death on (not only) Android
is hard to parse. Consider:
## Screen recreation and process death
and mention cross-platform support in the paragraph below.
109-109
: Add missing article before argument.Change
pass `serializer = null` argument
to
pass the `serializer = null` argument
for grammatical correctness.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~109-~109: You might be missing the article “the” here.
Context: ...ble state preservation completely, passserializer = null
argument. When naviga...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
111-111
: Add missing article before argument.Similarly, change
pass `stateSaver = transientNavStateSaver()` argument
to
pass the `stateSaver = transientNavStateSaver()` argument ```. <details> <summary>🧰 Tools</summary> <details> <summary>🪛 LanguageTool</summary> [uncategorized] ~111-~111: You might be missing the article “the” here. Context: ... changes on Android. In this case, pass `stateSaver = transientNavStateSaver()` a... (AI_EN_LECTOR_MISSING_DETERMINER_THE) </details> </details> --- `115-115`: **Clarify wording around multiple instances.** The sentence
each such
Child Items
must have a uniquekey
argument associated.could be clearer as:
each
Child Items
instance must have a uniquekey
argument.</blockquote></details> <details> <summary>docs/navigation/items/navigation.md (4)</summary><blockquote> `1-1`: **Align page title with other docs.** The main header reads:
Navigation with Child Items
For consistency with other pages (e.g. "# Child Stack overview"), consider:
Child Items Navigation
--- `33-38`: **Rephrase for clarity.** The sentence
There are
ItemsNavigator
extension functions to simplify the navigation. Some of which were already used in the Child Items Overview example.can be smoothed out:
There are extension functions for
ItemsNavigator
that simplify navigation; some of these were already used in the Child Items Overview example.--- `43-47`: **Specify a language for the illustration block.** The code fence is written as
[Item1:DESTROYED, Item2:STARTED, Item3:RESUMED]
to improve syntax highlighting, prepend a language (e.g., `text`):
[Item1:DESTROYED, Item2:STARTED, Item3:RESUMED]
53-56
: Specify a language for the second illustration block.Similarly, change
```title="After" [Item2:STARTED, Item3:RESUMED, Item4:DESTROYED]
to
[Item2:STARTED, Item3:RESUMED, Item4:DESTROYED]
docs/extensions/compose.md (3)
377-377
: Capitalize "Navigation" in the heading.The section heading reads:
## Child Items navigation with Compose
For consistency and title-case style, consider:
## Child Items Navigation with Compose
379-381
: Add space after admonition marker.In mkdocs, admonitions should have a space after the exclamations. Change:
!!!warning
to
!!! warning
382-383
: Improve sentence flow with a comma.Rather than
provides [ChildItems] as `LazyChildItems` that extends both `Value<ChildItems>` and `ItemsNavigator`
consider
provides [ChildItems] as `LazyChildItems`, which extends both `Value<ChildItems>` and `ItemsNavigator`
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
docs/extensions/compose.md
(44 hunks)docs/navigation/items/navigation.md
(1 hunks)docs/navigation/items/overview.md
(1 hunks)mkdocs.yml
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- mkdocs.yml
🧰 Additional context used
🪛 LanguageTool
docs/navigation/items/overview.md
[typographical] ~18-~18: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...p should also be present in the items
list, otherwise the behavior is undefined. - [ChildItem...
(THUS_SENTENCE)
[uncategorized] ~19-~19: Possible missing preposition found.
Context: ... a simple data class that stores a list component configurations, as well as a map of act...
(AI_EN_LECTOR_MISSING_PREPOSITION)
[uncategorized] ~109-~109: You might be missing the article “the” here.
Context: ...ble state preservation completely, pass serializer = null
argument. When naviga...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~111-~111: You might be missing the article “the” here.
Context: ... changes on Android. In this case, pass stateSaver = transientNavStateSaver()
a...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
docs/extensions/compose.md
[style] ~389-~389: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...g delta are moved to CREATED
state. - Items outside the viewport and outside the pr...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
docs/navigation/items/navigation.md
[uncategorized] ~28-~28: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...thod returns, the navigation is finished and all component lifecycles are moved into...
(COMMA_COMPOUND_SENTENCE_2)
[style] ~60-~60: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2047 characters long)
Context: ...e states using a transformer function. !!! note "Illustration" ```title="Befo...
(EN_EXCESSIVE_EXCLAMATION)
🪛 markdownlint-cli2 (0.17.2)
docs/extensions/compose.md
1271-1271: Code block style
Expected: fenced; Actual: indented
(MD046, code-block-style)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Build on Linux
- GitHub Check: Build on macOS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
docs/samples.md (1)
8-8
: Updated list of navigation models
The sample now correctly includes “Child Items” in the navigation models list. Consider adding an Oxford comma before “and Generic Navigation” for consistency in list formatting.docs/navigation/items/navigation.md (1)
21-31
: Synchronous vs. asynchronous navigation explanation
The description of how recursivenavigate
calls are queued during active navigation is clear.Consider adding a comma before “and all component lifecycles” in line 28 to improve readability of the compound sentence.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~24-~24: Possible missing article found.
Context: ...d components are destroyed, and updates lifecycles of the active components to match the n...(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~28-~28: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...thod returns, the navigation is finished and all component lifecycles are moved into...(COMMA_COMPOUND_SENTENCE_2)
docs/navigation/items/overview.md (1)
14-23
: Entities list and sub-descriptions
DefiningItems
,ChildItems
, andItemsNavigation
with sub-points is comprehensive; however, the indentation of sub-bullets is deeper than the surrounding docs standard. Consider adjusting to two-space indentation for nested list items to satisfy markdownlint.🧰 Tools
🪛 LanguageTool
[typographical] ~18-~18: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...p should also be present in theitems
list, otherwise the behavior is undefined. - [ChildItem...(THUS_SENTENCE)
[uncategorized] ~19-~19: Possible missing preposition found.
Context: ... a simple data class that stores a list component configurations, as well as a map of act...(AI_EN_LECTOR_MISSING_PREPOSITION)
🪛 markdownlint-cli2 (0.17.2)
17-17: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
18-18: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
20-20: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
21-21: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
docs/component/overview.md
(1 hunks)docs/extensions/compose.md
(47 hunks)docs/getting-started/quick-start.md
(1 hunks)docs/navigation/items/navigation.md
(1 hunks)docs/navigation/items/overview.md
(1 hunks)docs/navigation/overview.md
(1 hunks)docs/samples.md
(2 hunks)mkdocs.yml
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- docs/component/overview.md
- docs/getting-started/quick-start.md
🚧 Files skipped from review as they are similar to previous changes (1)
- mkdocs.yml
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: arkivanov
PR: arkivanov/Decompose#880
File: docs/extensions/compose.md:429-431
Timestamp: 2025-05-28T22:32:21.601Z
Learning: In Decompose documentation, the correct import path for `subscribeAsState` in the Child Items navigation example is `com.arkivanov.decompose.extensions.compose.subscribeAsState`, not the jetbrains-specific variant. The import paths vary depending on the specific compose variant being used (general compose vs jetbrains/multiplatform compose).
Learnt from: arkivanov
PR: arkivanov/Decompose#880
File: docs/extensions/compose.md:429-431
Timestamp: 2025-05-28T22:32:21.601Z
Learning: In Decompose documentation, the correct import path for `subscribeAsState` in the Child Items navigation example is `com.arkivanov.decompose.extensions.compose.subscribeAsState`, not the jetbrains-specific variant. The import paths vary depending on the specific compose variant being used (general compose vs jetbrains/multiplatform compose).
docs/extensions/compose.md (1)
Learnt from: arkivanov
PR: arkivanov/Decompose#880
File: docs/extensions/compose.md:429-431
Timestamp: 2025-05-28T22:32:21.601Z
Learning: In Decompose documentation, the correct import path for `subscribeAsState` in the Child Items navigation example is `com.arkivanov.decompose.extensions.compose.subscribeAsState`, not the jetbrains-specific variant. The import paths vary depending on the specific compose variant being used (general compose vs jetbrains/multiplatform compose).
🪛 LanguageTool
docs/navigation/items/overview.md
[typographical] ~18-~18: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence.
Context: ...p should also be present in the items
list, otherwise the behavior is undefined. - [ChildItem...
(THUS_SENTENCE)
[uncategorized] ~19-~19: Possible missing preposition found.
Context: ... a simple data class that stores a list component configurations, as well as a map of act...
(AI_EN_LECTOR_MISSING_PREPOSITION)
[uncategorized] ~109-~109: You might be missing the article “the” here.
Context: ...ble state preservation completely, pass serializer = null
argument. When naviga...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~111-~111: You might be missing the article “the” here.
Context: ... changes on Android. In this case, pass stateSaver = transientNavStateSaver()
a...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
docs/extensions/compose.md
[style] ~389-~389: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...g delta are moved to CREATED
state. - Items outside the viewport and outside the pr...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
docs/navigation/items/navigation.md
[uncategorized] ~24-~24: Possible missing article found.
Context: ...d components are destroyed, and updates lifecycles of the active components to match the n...
(AI_HYDRA_LEO_MISSING_THE)
[uncategorized] ~28-~28: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...thod returns, the navigation is finished and all component lifecycles are moved into...
(COMMA_COMPOUND_SENTENCE_2)
[style] ~60-~60: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2047 characters long)
Context: ...e states using a transformer function. !!! note "Illustration" ```title="Befo...
(EN_EXCESSIVE_EXCLAMATION)
docs/navigation/overview.md
[style] ~11-~11: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ti-pane mode with dynamic switching. - Child Items...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
docs/samples.md
[typographical] ~26-~26: Consider adding a comma here.
Context: ...ut, for generic master-detail navigation please refer to the Sample Todo List App descr...
(PLEASE_COMMA)
[grammar] ~26-~26: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...l navigation please refer to the Sample Todo List App described below.** ...
(TO_DO_HYPHEN)
🪛 markdownlint-cli2 (0.17.2)
docs/navigation/items/overview.md
17-17: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
18-18: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
20-20: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
21-21: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
docs/extensions/compose.md
1271-1271: Code block style
Expected: fenced; Actual: indented
(MD046, code-block-style)
docs/samples.md
26-26: Unordered list indentation
Expected: 4; Actual: 8
(MD007, ul-indent)
27-27: Unordered list indentation
Expected: 6; Actual: 12
(MD007, ul-indent)
28-28: Unordered list indentation
Expected: 6; Actual: 12
(MD007, ul-indent)
29-29: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
30-30: Unordered list indentation
Expected: 4; Actual: 8
(MD007, ul-indent)
31-31: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
32-32: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
33-33: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
34-34: Unordered list indentation
Expected: 4; Actual: 8
(MD007, ul-indent)
35-35: Unordered list indentation
Expected: 4; Actual: 8
(MD007, ul-indent)
36-36: Unordered list indentation
Expected: 4; Actual: 8
(MD007, ul-indent)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Build on macOS
- GitHub Check: Build on Linux
🔇 Additional comments (25)
docs/navigation/overview.md (1)
11-11
: New navigation model added: Child Items
Good addition of the “Child Items” bullet to the list of predefined navigation models. This clearly highlights the new experimental model in the overview.🧰 Tools
🪛 LanguageTool
[style] ~11-~11: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ti-pane mode with dynamic switching. - Child Items...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
docs/samples.md (3)
26-26
: Sample renamed: Multi Pane
Renaming “Multi-Pane” to “Multi Pane” matches the naming in other documentation sections. Looks good.🧰 Tools
🪛 LanguageTool
[typographical] ~26-~26: Consider adding a comma here.
Context: ...ut, for generic master-detail navigation please refer to the Sample Todo List App descr...(PLEASE_COMMA)
[grammar] ~26-~26: It appears that a hyphen is missing in the noun “To-do” (= task) or did you mean the verb “to do”?
Context: ...l navigation please refer to the Sample Todo List App described below.** ...(TO_DO_HYPHEN)
🪛 markdownlint-cli2 (0.17.2)
26-26: Unordered list indentation
Expected: 4; Actual: 8(MD007, ul-indent)
29-30
: Renamed Dynamic Features sample headings
Updating “Dynamic Features” and its child “Dynamic Feature” for consistent pluralization is clear and correct.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
29-29: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
30-30: Unordered list indentation
Expected: 4; Actual: 8(MD007, ul-indent)
33-36
: New Shared Transitions sample added
The “Shared Transitions” fullscreen component and its child entries (Gallery, Thumbnail, Photo) are well-introduced. This enhances the sample catalog.🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
33-33: Unordered list indentation
Expected: 2; Actual: 4(MD007, ul-indent)
34-34: Unordered list indentation
Expected: 4; Actual: 8(MD007, ul-indent)
35-35: Unordered list indentation
Expected: 4; Actual: 8(MD007, ul-indent)
36-36: Unordered list indentation
Expected: 4; Actual: 8(MD007, ul-indent)
docs/navigation/items/navigation.md (6)
1-8
: Clear introduction and header
The “Navigation with Child Items” header and high-level description ofItemsNavigator
andItemsNavigation
are concise and informative.
9-14
:navigate
API arguments well documented
Thetransformer
and optionalonComplete
parameters fornavigate
are clearly explained, and the convenience overload is noted.
16-19
: Creating the navigation snippet
The code example for instantiatingItemsNavigation
is straightforward and correct.
33-38
: Extension functions introduction
Good overview of theItemsNavigator
extension helpers and linking to the extension source.
39-55
:setItems
transformer usage
ThesetItems
example and before/after illustration effectively demonstrate how to replace the list of items.
57-75
:setActiveItems
transformer usage
The example showing lifecycle state manipulation throughsetActiveItems
is well-presented and easy to follow.🧰 Tools
🪛 LanguageTool
[style] ~60-~60: Using many exclamation marks might seem excessive (in this case: 6 exclamation marks for a text that’s 2047 characters long)
Context: ...e states using a transformer function. !!! note "Illustration" ```title="Befo...(EN_EXCESSIVE_EXCLAMATION)
docs/extensions/compose.md (7)
22-26
: Corrected import path forsubscribeAsState
The import has been updated tocom.arkivanov.decompose.extensions.compose.subscribeAsState
, matching the general Compose variant.
88-91
: Consistent import in navigation observation example
ThesubscribeAsState
import in the manual observation snippet now matches the documented path.
377-383
: New section: Child Items navigation with Compose
Introducing “Child Items navigation with Compose” underlines the experimental API availability since3.4.0-alpha01
. Well-placed warning and context.
384-392
: Lifecycle controller feature list
The bullet points succinctly cover howChildItemsLifecycleController
manages item lifecycles in lazy layouts.🧰 Tools
🪛 LanguageTool
[style] ~389-~389: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...g delta are moved toCREATED
state. - Items outside the viewport and outside the pr...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
395-405
: List variant signature forChildItemsLifecycleController
The function signature for lazy lists is properly documented with parameters and defaults.
411-419
: Grid variant signature forChildItemsLifecycleController
The analogous grid API variant is also accurately specified.
423-459
: Complete Compose usage example
TheItemsContent
Composable demonstrates state subscription, item rendering, and lifecycle controller usage in a cohesive example.docs/navigation/items/overview.md (8)
1-9
: Introduction and experimental warning
The “Child Items overview” header, high-level description, and warning about experimental status are clear and aligned with other docs.
10-13
: Multiple active components highlighted
Emphasis on the ability to maintain different lifecycle states is well stated.
32-35
: Duplicate configurations mode
Correctly clarifies that duplicates always throwIllegalStateException
, irrespective of flags.
36-43
: Initialization steps
The three-step process for wiring upChild Items
viachildItems
is clear and actionable.
46-63
:ItemComponent
example
The basicItemComponent
and default implementation snippet are well structured and demonstrate usage of@Serializable
.
65-104
:ItemsComponent
example
The comprehensive example showcasing initialization, initial state, and dynamic updates effectively illustrates how to useItemsNavigation
andchildItems
.
107-112
: State preservation behavior
Details on disabling state saving and transient savers are clearly explained.🧰 Tools
🪛 LanguageTool
[uncategorized] ~109-~109: You might be missing the article “the” here.
Context: ...ble state preservation completely, passserializer = null
argument. When naviga...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~111-~111: You might be missing the article “the” here.
Context: ... changes on Android. In this case, passstateSaver = transientNavStateSaver()
a...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
113-116
: Multiple instances requirement
Reiterating the need for unique keys in multipleChild Items
instances completes the overview.
Summary by CodeRabbit