mirror of
https://github.com/bitwarden/android.git
synced 2025-12-12 00:08:00 -06:00
PM-25028: Migrate coachmarks and tooltips to UI module (#5757)
This commit is contained in:
parent
d8e319948c
commit
e5a1546291
@ -50,6 +50,11 @@ import com.bitwarden.ui.platform.components.button.BitwardenStandardIconButton
|
|||||||
import com.bitwarden.ui.platform.components.button.BitwardenTextButton
|
import com.bitwarden.ui.platform.components.button.BitwardenTextButton
|
||||||
import com.bitwarden.ui.platform.components.card.BitwardenActionCard
|
import com.bitwarden.ui.platform.components.card.BitwardenActionCard
|
||||||
import com.bitwarden.ui.platform.components.card.BitwardenInfoCalloutCard
|
import com.bitwarden.ui.platform.components.card.BitwardenInfoCalloutCard
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.CoachMarkActionText
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.CoachMarkContainer
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.rememberLazyListCoachMarkState
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.scope.CoachMarkScope
|
||||||
import com.bitwarden.ui.platform.components.dropdown.BitwardenMultiSelectButton
|
import com.bitwarden.ui.platform.components.dropdown.BitwardenMultiSelectButton
|
||||||
import com.bitwarden.ui.platform.components.field.BitwardenPasswordField
|
import com.bitwarden.ui.platform.components.field.BitwardenPasswordField
|
||||||
import com.bitwarden.ui.platform.components.field.BitwardenTextField
|
import com.bitwarden.ui.platform.components.field.BitwardenTextField
|
||||||
@ -78,11 +83,6 @@ import com.bitwarden.ui.util.asText
|
|||||||
import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData
|
import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData
|
||||||
import com.x8bit.bitwarden.data.platform.manager.util.AppResumeStateManager
|
import com.x8bit.bitwarden.data.platform.manager.util.AppResumeStateManager
|
||||||
import com.x8bit.bitwarden.data.platform.manager.util.RegisterScreenDataOnLifecycleEffect
|
import com.x8bit.bitwarden.data.platform.manager.util.RegisterScreenDataOnLifecycleEffect
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkActionText
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkContainer
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkScope
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.rememberLazyListCoachMarkState
|
|
||||||
import com.x8bit.bitwarden.ui.platform.composition.LocalAppResumeStateManager
|
import com.x8bit.bitwarden.ui.platform.composition.LocalAppResumeStateManager
|
||||||
import com.x8bit.bitwarden.ui.tools.feature.generator.GeneratorState.MainType.Passphrase.Companion.PASSPHRASE_MAX_NUMBER_OF_WORDS
|
import com.x8bit.bitwarden.ui.tools.feature.generator.GeneratorState.MainType.Passphrase.Companion.PASSPHRASE_MAX_NUMBER_OF_WORDS
|
||||||
import com.x8bit.bitwarden.ui.tools.feature.generator.GeneratorState.MainType.Passphrase.Companion.PASSPHRASE_MIN_NUMBER_OF_WORDS
|
import com.x8bit.bitwarden.ui.tools.feature.generator.GeneratorState.MainType.Passphrase.Companion.PASSPHRASE_MIN_NUMBER_OF_WORDS
|
||||||
|
|||||||
@ -21,13 +21,13 @@ import com.bitwarden.ui.platform.components.button.BitwardenStandardIconButton
|
|||||||
import com.bitwarden.ui.platform.components.button.BitwardenTextSelectionButton
|
import com.bitwarden.ui.platform.components.button.BitwardenTextSelectionButton
|
||||||
import com.bitwarden.ui.platform.components.card.BitwardenActionCard
|
import com.bitwarden.ui.platform.components.card.BitwardenActionCard
|
||||||
import com.bitwarden.ui.platform.components.card.BitwardenInfoCalloutCard
|
import com.bitwarden.ui.platform.components.card.BitwardenInfoCalloutCard
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.scope.CoachMarkScope
|
||||||
import com.bitwarden.ui.platform.components.field.BitwardenTextField
|
import com.bitwarden.ui.platform.components.field.BitwardenTextField
|
||||||
import com.bitwarden.ui.platform.components.header.BitwardenListHeaderText
|
import com.bitwarden.ui.platform.components.header.BitwardenListHeaderText
|
||||||
import com.bitwarden.ui.platform.components.model.CardStyle
|
import com.bitwarden.ui.platform.components.model.CardStyle
|
||||||
import com.bitwarden.ui.platform.resource.BitwardenDrawable
|
import com.bitwarden.ui.platform.resource.BitwardenDrawable
|
||||||
import com.bitwarden.ui.platform.resource.BitwardenString
|
import com.bitwarden.ui.platform.resource.BitwardenString
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType
|
import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkScope
|
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
|
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
|
||||||
import com.x8bit.bitwarden.ui.vault.components.collectionItemsSelector
|
import com.x8bit.bitwarden.ui.vault.components.collectionItemsSelector
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCardTypeHandlers
|
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCardTypeHandlers
|
||||||
|
|||||||
@ -22,6 +22,9 @@ import androidx.compose.ui.unit.dp
|
|||||||
import com.bitwarden.ui.platform.base.util.cardStyle
|
import com.bitwarden.ui.platform.base.util.cardStyle
|
||||||
import com.bitwarden.ui.platform.base.util.standardHorizontalMargin
|
import com.bitwarden.ui.platform.base.util.standardHorizontalMargin
|
||||||
import com.bitwarden.ui.platform.components.button.BitwardenStandardIconButton
|
import com.bitwarden.ui.platform.components.button.BitwardenStandardIconButton
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.CoachMarkActionText
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.scope.CoachMarkScope
|
||||||
import com.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
|
import com.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
|
||||||
import com.bitwarden.ui.platform.components.field.BitwardenHiddenPasswordField
|
import com.bitwarden.ui.platform.components.field.BitwardenHiddenPasswordField
|
||||||
import com.bitwarden.ui.platform.components.field.BitwardenPasswordField
|
import com.bitwarden.ui.platform.components.field.BitwardenPasswordField
|
||||||
@ -36,9 +39,6 @@ import com.bitwarden.ui.platform.theme.BitwardenTheme
|
|||||||
import com.bitwarden.ui.util.Text
|
import com.bitwarden.ui.util.Text
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType
|
import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkActionText
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkScope
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditLoginTypeHandlers
|
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditLoginTypeHandlers
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -48,6 +48,8 @@ import com.bitwarden.ui.platform.components.appbar.action.BitwardenOverflowActio
|
|||||||
import com.bitwarden.ui.platform.components.appbar.model.OverflowMenuItemData
|
import com.bitwarden.ui.platform.components.appbar.model.OverflowMenuItemData
|
||||||
import com.bitwarden.ui.platform.components.bottomsheet.BitwardenModalBottomSheet
|
import com.bitwarden.ui.platform.components.bottomsheet.BitwardenModalBottomSheet
|
||||||
import com.bitwarden.ui.platform.components.button.BitwardenTextButton
|
import com.bitwarden.ui.platform.components.button.BitwardenTextButton
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.CoachMarkContainer
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.rememberLazyListCoachMarkState
|
||||||
import com.bitwarden.ui.platform.components.content.BitwardenErrorContent
|
import com.bitwarden.ui.platform.components.content.BitwardenErrorContent
|
||||||
import com.bitwarden.ui.platform.components.content.BitwardenLoadingContent
|
import com.bitwarden.ui.platform.components.content.BitwardenLoadingContent
|
||||||
import com.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
|
import com.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
|
||||||
@ -68,8 +70,6 @@ import com.bitwarden.ui.platform.resource.BitwardenString
|
|||||||
import com.bitwarden.ui.platform.theme.BitwardenTheme
|
import com.bitwarden.ui.platform.theme.BitwardenTheme
|
||||||
import com.bitwarden.ui.util.Text
|
import com.bitwarden.ui.util.Text
|
||||||
import com.x8bit.bitwarden.ui.credentials.manager.CredentialProviderCompletionManager
|
import com.x8bit.bitwarden.ui.credentials.manager.CredentialProviderCompletionManager
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.CoachMarkContainer
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.rememberLazyListCoachMarkState
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenMasterPasswordDialog
|
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenMasterPasswordDialog
|
||||||
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenOverwritePasskeyConfirmationDialog
|
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenOverwritePasskeyConfirmationDialog
|
||||||
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenPinDialog
|
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenPinDialog
|
||||||
|
|||||||
@ -32,10 +32,10 @@ import androidx.core.net.toUri
|
|||||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||||
import com.bitwarden.ui.platform.manager.IntentManager
|
import com.bitwarden.ui.platform.manager.IntentManager
|
||||||
import com.bitwarden.ui.util.asText
|
import com.bitwarden.ui.util.asText
|
||||||
|
import com.bitwarden.ui.util.isCoachMarkToolTip
|
||||||
import com.x8bit.bitwarden.data.platform.manager.util.AppResumeStateManager
|
import com.x8bit.bitwarden.data.platform.manager.util.AppResumeStateManager
|
||||||
import com.x8bit.bitwarden.ui.platform.base.BitwardenComposeTest
|
import com.x8bit.bitwarden.ui.platform.base.BitwardenComposeTest
|
||||||
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
|
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
|
||||||
import com.x8bit.bitwarden.ui.util.isCoachMarkToolTip
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
|
|||||||
@ -1,13 +0,0 @@
|
|||||||
package com.x8bit.bitwarden.ui.util
|
|
||||||
|
|
||||||
import androidx.compose.ui.semantics.getOrNull
|
|
||||||
import androidx.compose.ui.test.SemanticsMatcher
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.IsCoachMarkToolTipKey
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A [SemanticsMatcher] user to find Popup nodes used specifically for CoachMarkToolTips
|
|
||||||
*/
|
|
||||||
val isCoachMarkToolTip: SemanticsMatcher
|
|
||||||
get() = SemanticsMatcher("Node is used to show tool tip for active coach mark.") {
|
|
||||||
it.config.getOrNull(IsCoachMarkToolTipKey) == true
|
|
||||||
}
|
|
||||||
@ -46,6 +46,7 @@ import com.bitwarden.ui.util.asText
|
|||||||
import com.bitwarden.ui.util.assertNoDialogExists
|
import com.bitwarden.ui.util.assertNoDialogExists
|
||||||
import com.bitwarden.ui.util.assertScrollableNodeDoesNotExist
|
import com.bitwarden.ui.util.assertScrollableNodeDoesNotExist
|
||||||
import com.bitwarden.ui.util.isBottomSheet
|
import com.bitwarden.ui.util.isBottomSheet
|
||||||
|
import com.bitwarden.ui.util.isCoachMarkToolTip
|
||||||
import com.bitwarden.ui.util.isProgressBar
|
import com.bitwarden.ui.util.isProgressBar
|
||||||
import com.bitwarden.ui.util.onAllNodesWithContentDescriptionAfterScroll
|
import com.bitwarden.ui.util.onAllNodesWithContentDescriptionAfterScroll
|
||||||
import com.bitwarden.ui.util.onAllNodesWithTextAfterScroll
|
import com.bitwarden.ui.util.onAllNodesWithTextAfterScroll
|
||||||
@ -61,7 +62,6 @@ import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
|||||||
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
|
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
|
||||||
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
|
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
|
||||||
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
|
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
|
||||||
import com.x8bit.bitwarden.ui.util.isCoachMarkToolTip
|
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldAction
|
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldAction
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldType
|
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldType
|
||||||
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.UriItem
|
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.UriItem
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark
|
package com.bitwarden.ui.platform.components.coachmark
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark
|
package com.bitwarden.ui.platform.components.coachmark
|
||||||
|
|
||||||
import androidx.activity.compose.BackHandler
|
import androidx.activity.compose.BackHandler
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
@ -32,12 +32,16 @@ import androidx.compose.ui.res.stringResource
|
|||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.bitwarden.ui.platform.components.button.BitwardenStandardIconButton
|
import com.bitwarden.ui.platform.components.button.BitwardenStandardIconButton
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkState
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.rememberCoachMarkState
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.scope.CoachMarkScope
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.scope.CoachMarkScopeInstance
|
||||||
import com.bitwarden.ui.platform.components.text.BitwardenClickableText
|
import com.bitwarden.ui.platform.components.text.BitwardenClickableText
|
||||||
import com.bitwarden.ui.platform.components.util.rememberVectorPainter
|
import com.bitwarden.ui.platform.components.util.rememberVectorPainter
|
||||||
import com.bitwarden.ui.platform.resource.BitwardenDrawable
|
import com.bitwarden.ui.platform.resource.BitwardenDrawable
|
||||||
import com.bitwarden.ui.platform.resource.BitwardenString
|
import com.bitwarden.ui.platform.resource.BitwardenString
|
||||||
import com.bitwarden.ui.platform.theme.BitwardenTheme
|
import com.bitwarden.ui.platform.theme.BitwardenTheme
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark.model
|
package com.bitwarden.ui.platform.components.coachmark.model
|
||||||
|
|
||||||
private const val ROUNDED_RECT_DEFAULT_RADIUS = 8f
|
private const val ROUNDED_RECT_DEFAULT_RADIUS = 8f
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark.model
|
package com.bitwarden.ui.platform.components.coachmark.model
|
||||||
|
|
||||||
import androidx.compose.ui.geometry.Rect
|
import androidx.compose.ui.geometry.Rect
|
||||||
import com.x8bit.bitwarden.ui.platform.components.tooltip.BitwardenToolTipState
|
import com.bitwarden.ui.platform.components.tooltip.model.BitwardenToolTipState
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a highlight within a coach mark sequence.
|
* Represents a highlight within a coach mark sequence.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark
|
package com.bitwarden.ui.platform.components.coachmark.model
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
@ -9,9 +9,7 @@ import androidx.compose.runtime.saveable.listSaver
|
|||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.ui.geometry.Rect
|
import androidx.compose.ui.geometry.Rect
|
||||||
import com.bitwarden.core.data.util.concurrentMapOf
|
import com.bitwarden.core.data.util.concurrentMapOf
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
import com.bitwarden.ui.platform.components.tooltip.model.BitwardenToolTipState
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightState
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.tooltip.BitwardenToolTipState
|
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark
|
package com.bitwarden.ui.platform.components.coachmark.model
|
||||||
|
|
||||||
import androidx.compose.foundation.gestures.Orientation
|
import androidx.compose.foundation.gestures.Orientation
|
||||||
import androidx.compose.foundation.gestures.scrollBy
|
import androidx.compose.foundation.gestures.scrollBy
|
||||||
@ -1,13 +1,13 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark
|
package com.bitwarden.ui.platform.components.coachmark.scope
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.BoxScope
|
import androidx.compose.foundation.layout.BoxScope
|
||||||
import androidx.compose.foundation.layout.RowScope
|
import androidx.compose.foundation.layout.RowScope
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
||||||
import com.bitwarden.ui.platform.components.model.CardStyle
|
import com.bitwarden.ui.platform.components.model.CardStyle
|
||||||
import com.bitwarden.ui.util.Text
|
import com.bitwarden.ui.util.Text
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the scope for creating coach mark highlights within a user interface.
|
* Defines the scope for creating coach mark highlights within a user interface.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.coachmark
|
package com.bitwarden.ui.platform.components.coachmark.scope
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.BoxScope
|
import androidx.compose.foundation.layout.BoxScope
|
||||||
@ -25,12 +25,13 @@ import androidx.compose.ui.semantics.semantics
|
|||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.bitwarden.ui.platform.base.util.toListItemCardStyle
|
import com.bitwarden.ui.platform.base.util.toListItemCardStyle
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.model.CoachMarkState
|
||||||
import com.bitwarden.ui.platform.components.model.CardStyle
|
import com.bitwarden.ui.platform.components.model.CardStyle
|
||||||
|
import com.bitwarden.ui.platform.components.tooltip.BitwardenToolTip
|
||||||
|
import com.bitwarden.ui.platform.components.tooltip.model.BitwardenToolTipState
|
||||||
|
import com.bitwarden.ui.platform.components.tooltip.model.rememberBitwardenToolTipState
|
||||||
import com.bitwarden.ui.util.Text
|
import com.bitwarden.ui.util.Text
|
||||||
import com.x8bit.bitwarden.ui.platform.components.coachmark.model.CoachMarkHighlightShape
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.tooltip.BitwardenToolTip
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.tooltip.BitwardenToolTipState
|
|
||||||
import com.x8bit.bitwarden.ui.platform.components.tooltip.rememberBitwardenToolTipState
|
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import org.jetbrains.annotations.VisibleForTesting
|
import org.jetbrains.annotations.VisibleForTesting
|
||||||
|
|
||||||
@ -38,7 +39,7 @@ import org.jetbrains.annotations.VisibleForTesting
|
|||||||
* Creates an instance of [CoachMarkScope] for a given [CoachMarkState].
|
* Creates an instance of [CoachMarkScope] for a given [CoachMarkState].
|
||||||
*/
|
*/
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
class CoachMarkScopeInstance<T : Enum<T>>(
|
internal class CoachMarkScopeInstance<T : Enum<T>>(
|
||||||
private val coachMarkState: CoachMarkState<T>,
|
private val coachMarkState: CoachMarkState<T>,
|
||||||
) : CoachMarkScope<T> {
|
) : CoachMarkScope<T> {
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.tooltip
|
package com.bitwarden.ui.platform.components.tooltip
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.tooltip
|
package com.bitwarden.ui.platform.components.tooltip.model
|
||||||
|
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.TooltipState
|
import androidx.compose.material3.TooltipState
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.x8bit.bitwarden.ui.platform.components.tooltip
|
package com.bitwarden.ui.platform.components.tooltip.model
|
||||||
|
|
||||||
import androidx.compose.animation.core.MutableTransitionState
|
import androidx.compose.animation.core.MutableTransitionState
|
||||||
import androidx.compose.foundation.MutatePriority
|
import androidx.compose.foundation.MutatePriority
|
||||||
@ -15,10 +15,9 @@ import kotlinx.coroutines.withTimeout
|
|||||||
* Default implementation of [BitwardenToolTipState]
|
* Default implementation of [BitwardenToolTipState]
|
||||||
*
|
*
|
||||||
* This is making use of the implementation of [TooltipState] provided via
|
* This is making use of the implementation of [TooltipState] provided via
|
||||||
* [androidx.compose.material3.rememberTooltipState] but overriding [dismiss] to be
|
* [androidx.compose.material3.rememberTooltipState] but overriding [dismiss] to be no-op.
|
||||||
* no-op.
|
|
||||||
*/
|
*/
|
||||||
class BitwardenToolTipStateImpl(
|
internal class BitwardenToolTipStateImpl(
|
||||||
initialIsVisible: Boolean,
|
initialIsVisible: Boolean,
|
||||||
override val isPersistent: Boolean,
|
override val isPersistent: Boolean,
|
||||||
private val mutatorMutex: MutatorMutex,
|
private val mutatorMutex: MutatorMutex,
|
||||||
@ -25,6 +25,7 @@ import androidx.compose.ui.test.performScrollToNode
|
|||||||
import androidx.compose.ui.test.printToString
|
import androidx.compose.ui.test.printToString
|
||||||
import androidx.compose.ui.text.LinkAnnotation
|
import androidx.compose.ui.text.LinkAnnotation
|
||||||
import com.bitwarden.ui.platform.components.bottomsheet.IsBottomSheetKey
|
import com.bitwarden.ui.platform.components.bottomsheet.IsBottomSheetKey
|
||||||
|
import com.bitwarden.ui.platform.components.coachmark.scope.IsCoachMarkToolTipKey
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertNotNull
|
import org.junit.Assert.assertNotNull
|
||||||
import org.junit.jupiter.api.assertThrows
|
import org.junit.jupiter.api.assertThrows
|
||||||
@ -37,6 +38,14 @@ val isBottomSheet: SemanticsMatcher
|
|||||||
it.config.getOrNull(IsBottomSheetKey) == true
|
it.config.getOrNull(IsBottomSheetKey) == true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A [SemanticsMatcher] user to find Popup nodes used specifically for CoachMarkToolTips
|
||||||
|
*/
|
||||||
|
val isCoachMarkToolTip: SemanticsMatcher
|
||||||
|
get() = SemanticsMatcher("Node is used to show tool tip for active coach mark.") {
|
||||||
|
it.config.getOrNull(IsCoachMarkToolTipKey) == true
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A [SemanticsMatcher] used to find editable text nodes.
|
* A [SemanticsMatcher] used to find editable text nodes.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user