@procivis/one-react-native-components 0.3.121 → 0.3.132
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/credential/credential.js +2 -1
- package/lib/commonjs/components/credential/credential.js.map +1 -1
- package/lib/commonjs/components/history/history-list-item-icon.js +3 -3
- package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
- package/lib/commonjs/components/history/history-list-item.js +5 -12
- package/lib/commonjs/components/history/history-list-item.js.map +1 -1
- package/lib/commonjs/components/history/history-list-screen.js +1 -1
- package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
- package/lib/commonjs/components/index.js +0 -11
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/components/proof-request/v1/select-credential.js +2 -1
- package/lib/commonjs/components/proof-request/v1/select-credential.js.map +1 -1
- package/lib/commonjs/components/proof-request/v1/share-credential.js +2 -1
- package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/select-credential-v2.js +2 -1
- package/lib/commonjs/components/proof-request/v2/select-credential-v2.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +3 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +7 -3
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js +3 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
- package/lib/commonjs/ui-components/header/header.js.map +1 -1
- package/lib/commonjs/ui-components/history/history-details.js +2 -2
- package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
- package/lib/commonjs/ui-components/history/history-section-list-item.js +2 -2
- package/lib/commonjs/ui-components/history/history-section-list-item.js.map +1 -1
- package/lib/commonjs/ui-components/history/index.js +0 -8
- package/lib/commonjs/ui-components/history/index.js.map +1 -1
- package/lib/commonjs/ui-components/icons/contact.js.map +1 -1
- package/lib/commonjs/ui-components/icons/credential.js +3 -3
- package/lib/commonjs/ui-components/icons/credential.js.map +1 -1
- package/lib/commonjs/ui-components/icons/icons.js +20 -1
- package/lib/commonjs/ui-components/icons/icons.js.map +1 -1
- package/lib/commonjs/ui-components/list/index.js +8 -0
- package/lib/commonjs/ui-components/list/index.js.map +1 -1
- package/lib/commonjs/ui-components/{history/history-item.js → list/list-item.js} +32 -22
- package/lib/commonjs/ui-components/list/list-item.js.map +1 -0
- package/lib/commonjs/ui-components/loader/loading-result.js +2 -0
- package/lib/commonjs/ui-components/loader/loading-result.js.map +1 -1
- package/lib/commonjs/ui-components/screens/nerd-mode-screen.js +7 -33
- package/lib/commonjs/ui-components/screens/nerd-mode-screen.js.map +1 -1
- package/lib/commonjs/utils/date.js +4 -5
- package/lib/commonjs/utils/date.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/cache.js +7 -4
- package/lib/commonjs/utils/hooks/core/cache.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/core-config.js +1 -6
- package/lib/commonjs/utils/hooks/core/core-config.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/core-context.js +0 -15
- package/lib/commonjs/utils/hooks/core/core-context.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/credentials.js +15 -1
- package/lib/commonjs/utils/hooks/core/credentials.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/index.js +0 -11
- package/lib/commonjs/utils/hooks/core/index.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/trust-list.js +19 -3
- package/lib/commonjs/utils/hooks/core/trust-list.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/verifier-instance.js +22 -3
- package/lib/commonjs/utils/hooks/core/verifier-instance.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/wallet-unit.js +2 -2
- package/lib/commonjs/utils/hooks/core/wallet-unit.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js +23 -18
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing.js +20 -18
- package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential.js +36 -22
- package/lib/commonjs/utils/parsers/credential.js.map +1 -1
- package/lib/commonjs/utils/parsers/query.js +2 -2
- package/lib/commonjs/utils/parsers/query.js.map +1 -1
- package/lib/commonjs/utils/translations.js +15 -0
- package/lib/commonjs/utils/translations.js.map +1 -0
- package/lib/module/components/credential/credential.js +2 -1
- package/lib/module/components/credential/credential.js.map +1 -1
- package/lib/module/components/history/history-list-item-icon.js +3 -3
- package/lib/module/components/history/history-list-item-icon.js.map +1 -1
- package/lib/module/components/history/history-list-item.js +7 -14
- package/lib/module/components/history/history-list-item.js.map +1 -1
- package/lib/module/components/history/history-list-screen.js +1 -1
- package/lib/module/components/history/history-list-screen.js.map +1 -1
- package/lib/module/components/index.js +0 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/proof-request/v1/select-credential.js +2 -1
- package/lib/module/components/proof-request/v1/select-credential.js.map +1 -1
- package/lib/module/components/proof-request/v1/share-credential.js +2 -1
- package/lib/module/components/proof-request/v1/share-credential.js.map +1 -1
- package/lib/module/components/proof-request/v2/select-credential-v2.js +2 -1
- package/lib/module/components/proof-request/v2/select-credential-v2.js.map +1 -1
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js +3 -1
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
- package/lib/module/components/proof-request/v2/share-credential-v2.js +7 -3
- package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js +3 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/module/ui-components/header/foldable-header.js.map +1 -1
- package/lib/module/ui-components/header/header.js.map +1 -1
- package/lib/module/ui-components/history/history-details.js +3 -3
- package/lib/module/ui-components/history/history-details.js.map +1 -1
- package/lib/module/ui-components/history/history-section-list-item.js +2 -2
- package/lib/module/ui-components/history/history-section-list-item.js.map +1 -1
- package/lib/module/ui-components/history/index.js +0 -2
- package/lib/module/ui-components/history/index.js.map +1 -1
- package/lib/module/ui-components/icons/contact.js.map +1 -1
- package/lib/module/ui-components/icons/credential.js +1 -1
- package/lib/module/ui-components/icons/credential.js.map +1 -1
- package/lib/module/ui-components/icons/icons.js +18 -0
- package/lib/module/ui-components/icons/icons.js.map +1 -1
- package/lib/module/ui-components/list/index.js +2 -0
- package/lib/module/ui-components/list/index.js.map +1 -1
- package/lib/module/ui-components/{history/history-item.js → list/list-item.js} +32 -22
- package/lib/module/ui-components/list/list-item.js.map +1 -0
- package/lib/module/ui-components/loader/loading-result.js +2 -0
- package/lib/module/ui-components/loader/loading-result.js.map +1 -1
- package/lib/module/ui-components/screens/nerd-mode-screen.js +7 -33
- package/lib/module/ui-components/screens/nerd-mode-screen.js.map +1 -1
- package/lib/module/utils/date.js +4 -5
- package/lib/module/utils/date.js.map +1 -1
- package/lib/module/utils/hooks/core/cache.js +7 -4
- package/lib/module/utils/hooks/core/cache.js.map +1 -1
- package/lib/module/utils/hooks/core/core-config.js +0 -4
- package/lib/module/utils/hooks/core/core-config.js.map +1 -1
- package/lib/module/utils/hooks/core/core-context.js +0 -15
- package/lib/module/utils/hooks/core/core-context.js.map +1 -1
- package/lib/module/utils/hooks/core/credentials.js +13 -0
- package/lib/module/utils/hooks/core/credentials.js.map +1 -1
- package/lib/module/utils/hooks/core/index.js +0 -1
- package/lib/module/utils/hooks/core/index.js.map +1 -1
- package/lib/module/utils/hooks/core/trust-list.js +20 -4
- package/lib/module/utils/hooks/core/trust-list.js.map +1 -1
- package/lib/module/utils/hooks/core/verifier-instance.js +20 -2
- package/lib/module/utils/hooks/core/verifier-instance.js.map +1 -1
- package/lib/module/utils/hooks/core/wallet-unit.js +2 -2
- package/lib/module/utils/hooks/core/wallet-unit.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js +24 -19
- package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing.js +20 -18
- package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/module/utils/parsers/credential.js +37 -23
- package/lib/module/utils/parsers/credential.js.map +1 -1
- package/lib/module/utils/parsers/query.js +2 -2
- package/lib/module/utils/parsers/query.js.map +1 -1
- package/lib/module/utils/translations.js +8 -0
- package/lib/module/utils/translations.js.map +1 -0
- package/lib/typescript/components/credential/credential.d.ts +1 -0
- package/lib/typescript/components/history/history-list-item.d.ts +1 -1
- package/lib/typescript/components/index.d.ts +0 -1
- package/lib/typescript/components/proof-request/v1/select-credential.d.ts +1 -0
- package/lib/typescript/components/proof-request/v1/share-credential.d.ts +1 -0
- package/lib/typescript/components/proof-request/v2/select-credential-v2.d.ts +1 -0
- package/lib/typescript/components/proof-request/v2/share-credential-v2-group.d.ts +1 -0
- package/lib/typescript/components/proof-request/v2/share-credential-v2.d.ts +1 -0
- package/lib/typescript/ui-components/history/history-details.d.ts +2 -2
- package/lib/typescript/ui-components/history/history-section-list-item.d.ts +2 -2
- package/lib/typescript/ui-components/history/index.d.ts +0 -3
- package/lib/typescript/ui-components/icons/credential.d.ts +1 -1
- package/lib/typescript/ui-components/icons/icons.d.ts +1 -0
- package/lib/typescript/ui-components/list/index.d.ts +3 -0
- package/lib/typescript/ui-components/{history/history-item.d.ts → list/list-item.d.ts} +4 -4
- package/lib/typescript/ui-components/screens/nerd-mode-screen.d.ts +0 -12
- package/lib/typescript/utils/hooks/core/core-config.d.ts +0 -1
- package/lib/typescript/utils/hooks/core/core-context.d.ts +0 -1
- package/lib/typescript/utils/hooks/core/credentials.d.ts +1 -0
- package/lib/typescript/utils/hooks/core/index.d.ts +0 -1
- package/lib/typescript/utils/hooks/core/trust-list.d.ts +1 -4
- package/lib/typescript/utils/hooks/core/verifier-instance.d.ts +2 -0
- package/lib/typescript/utils/hooks/core/wallet-unit.d.ts +2 -2
- package/lib/typescript/utils/parsers/credential-sharing-v2.d.ts +3 -3
- package/lib/typescript/utils/parsers/credential-sharing.d.ts +6 -6
- package/lib/typescript/utils/parsers/credential.d.ts +5 -5
- package/lib/typescript/utils/parsers/query.d.ts +2 -2
- package/lib/typescript/utils/translations.d.ts +1 -0
- package/package.json +3 -3
- package/src/components/credential/credential.tsx +3 -0
- package/src/components/history/history-list-item-icon.tsx +2 -2
- package/src/components/history/history-list-item.tsx +7 -12
- package/src/components/history/history-list-screen.tsx +1 -1
- package/src/components/index.ts +0 -1
- package/src/components/proof-request/v1/select-credential.tsx +3 -1
- package/src/components/proof-request/v1/share-credential.tsx +3 -0
- package/src/components/proof-request/v2/select-credential-v2.tsx +3 -1
- package/src/components/proof-request/v2/share-credential-v2-group.tsx +4 -0
- package/src/components/proof-request/v2/share-credential-v2.tsx +7 -0
- package/src/ui-components/credential/card/credential-details-card.tsx +3 -2
- package/src/ui-components/header/foldable-header.tsx +10 -9
- package/src/ui-components/header/header.tsx +10 -1
- package/src/ui-components/history/history-details.tsx +4 -4
- package/src/ui-components/history/history-section-list-item.tsx +3 -3
- package/src/ui-components/history/index.ts +0 -3
- package/src/ui-components/icons/contact.tsx +1 -1
- package/src/ui-components/icons/credential.tsx +1 -1
- package/src/ui-components/icons/icons.tsx +18 -0
- package/src/ui-components/list/index.ts +3 -0
- package/src/ui-components/{history/history-item.tsx → list/list-item.tsx} +36 -33
- package/src/ui-components/loader/loading-result.tsx +7 -1
- package/src/ui-components/screens/nerd-mode-screen.tsx +2 -52
- package/src/utils/date.ts +7 -14
- package/src/utils/hooks/core/cache.ts +10 -3
- package/src/utils/hooks/core/core-config.ts +1 -6
- package/src/utils/hooks/core/core-context.tsx +0 -24
- package/src/utils/hooks/core/credentials.ts +13 -0
- package/src/utils/hooks/core/index.ts +0 -1
- package/src/utils/hooks/core/trust-list.ts +22 -11
- package/src/utils/hooks/core/verifier-instance.ts +23 -2
- package/src/utils/hooks/core/wallet-unit.ts +3 -3
- package/src/utils/parsers/credential-sharing-v2.tsx +34 -14
- package/src/utils/parsers/credential-sharing.tsx +33 -16
- package/src/utils/parsers/credential.ts +45 -14
- package/src/utils/parsers/query.ts +5 -0
- package/src/utils/translations.ts +10 -0
- package/lib/commonjs/components/entity/EntityButtons.js +0 -64
- package/lib/commonjs/components/entity/EntityButtons.js.map +0 -1
- package/lib/commonjs/components/entity/entity-attributes.js +0 -65
- package/lib/commonjs/components/entity/entity-attributes.js.map +0 -1
- package/lib/commonjs/components/entity/entity-details-with-buttons.js +0 -67
- package/lib/commonjs/components/entity/entity-details-with-buttons.js.map +0 -1
- package/lib/commonjs/components/entity/entity-details.js +0 -101
- package/lib/commonjs/components/entity/entity-details.js.map +0 -1
- package/lib/commonjs/components/entity/index.js +0 -14
- package/lib/commonjs/components/entity/index.js.map +0 -1
- package/lib/commonjs/ui-components/history/history-item.js.map +0 -1
- package/lib/commonjs/utils/hooks/core/trust-entity.js +0 -147
- package/lib/commonjs/utils/hooks/core/trust-entity.js.map +0 -1
- package/lib/module/components/entity/EntityButtons.js +0 -56
- package/lib/module/components/entity/EntityButtons.js.map +0 -1
- package/lib/module/components/entity/entity-attributes.js +0 -57
- package/lib/module/components/entity/entity-attributes.js.map +0 -1
- package/lib/module/components/entity/entity-details-with-buttons.js +0 -58
- package/lib/module/components/entity/entity-details-with-buttons.js.map +0 -1
- package/lib/module/components/entity/entity-details.js +0 -92
- package/lib/module/components/entity/entity-details.js.map +0 -1
- package/lib/module/components/entity/index.js +0 -3
- package/lib/module/components/entity/index.js.map +0 -1
- package/lib/module/ui-components/history/history-item.js.map +0 -1
- package/lib/module/utils/hooks/core/trust-entity.js +0 -136
- package/lib/module/utils/hooks/core/trust-entity.js.map +0 -1
- package/lib/typescript/components/entity/EntityButtons.d.ts +0 -14
- package/lib/typescript/components/entity/entity-attributes.d.ts +0 -15
- package/lib/typescript/components/entity/entity-details-with-buttons.d.ts +0 -18
- package/lib/typescript/components/entity/entity-details.d.ts +0 -21
- package/lib/typescript/components/entity/index.d.ts +0 -3
- package/lib/typescript/utils/hooks/core/trust-entity.d.ts +0 -17
- package/src/components/entity/EntityButtons.tsx +0 -79
- package/src/components/entity/entity-attributes.tsx +0 -80
- package/src/components/entity/entity-details-with-buttons.tsx +0 -75
- package/src/components/entity/entity-details.tsx +0 -145
- package/src/components/entity/index.ts +0 -4
- package/src/utils/hooks/core/trust-entity.ts +0 -172
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","StyleSheet","Animated","LinearTransition","BlurView","CredentialCardShadow","DownIcon","Selector","SelectorStatus","TouchableOpacity","UpIcon","CredentialGroupHeader","concatTestID","useCredentialListExpandedCard","GroupedShareCredentialV2Padding","ShareCredentialV2","multipleCredentialsSelected","selectedCredentials","credentialRequestId","Array","isArray","length","numberOfCardsForRequest","selection","heightForNumberOfCards","numberOfCards","ShareCredentialV2Group","labels","lastGroup","onGroupSelect","onImagePreview","onSelectCredential","onSelectField","presentationDefinition","requestGroup","selected","style","testID","valid","expandedCredential","onHeaderPress","reduce","acc","groupId","singleCredentialGroup","headerPressHandler","onNestedCardHeaderPress","credentialId","credentialCards","flatMap","credentialRequestIndex","credentialRequestsLength","lastQuery","credentialQuery","credentialQueries","credentialOrFailureHint","defaultSelection","type_","_credentialQuery$appl","applicableCredentials","id","userSelections","request","credentialSelections","credentialRequest","credentialIndex","credentialsLength","selectedFields","cardId","lastItem","cardExpanded","headerAccessory","createElement","status","SelectedRadio","Empty","expanded","grouped","key","selectedCredentialId","styles","requestedCredential","requestedCredentialLast","groupHeaderAccessory","View","layout","animatedWrapper","height","undefined","groupedCredentialsWrapper","blurStyle","darkMode","absoluteFill","onPress","accessory","name","groupHeader","header","create","borderRadius","borderWidth","overflow","paddingBottom","marginBottom"],"sources":["share-credential-v2-group.tsx"],"sourcesContent":["import {\n CredentialListItem,\n PresentationDefinitionV2,\n PresentationDefinitionV2Claim,\n PresentationSubmitV2CredentialRequest,\n} from '@procivis/react-native-one-core';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport {\n BlurView,\n CredentialCardShadow,\n DownIcon,\n Selector,\n SelectorStatus,\n TouchableOpacity,\n UpIcon,\n} from '../../../ui-components';\nimport CredentialGroupHeader from '../../../ui-components/credential/group/credential-group-header';\nimport { concatTestID, useCredentialListExpandedCard } from '../../../utils';\nimport { ShareCredentialLabels } from '../v1/share-credential';\nimport { GroupedShareCredentialV2Padding, ShareCredentialV2 } from './share-credential-v2';\n\nexport type CredentialQuerySelection = Record<\n string,\n PresentationSubmitV2CredentialRequest | PresentationSubmitV2CredentialRequest[]\n>;\n\nexport type ShareCredentialGroupLabels = ShareCredentialLabels & {\n groupHeader: string;\n};\n\nexport type ShareCredentialV2GroupProps = {\n labels: ShareCredentialGroupLabels;\n lastGroup: boolean;\n onGroupSelect?: (selected: boolean) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential: (requestCredentialId: string) => () => void;\n onSelectField: (\n requestCredentialId: string,\n ) => (\n credentialId: CredentialListItem['id'],\n fieldPath: PresentationDefinitionV2Claim['path'],\n selected: boolean,\n ) => void;\n presentationDefinition: PresentationDefinitionV2;\n requestGroup: string[];\n selected?: boolean;\n selectedCredentials?: CredentialQuerySelection;\n style?: StyleProp<ViewStyle>;\n testID: string;\n valid: boolean;\n};\n\nconst multipleCredentialsSelected = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n return (\n selectedCredentials &&\n selectedCredentials[credentialRequestId] &&\n Array.isArray(selectedCredentials[credentialRequestId]) &&\n (selectedCredentials[credentialRequestId] as PresentationSubmitV2CredentialRequest[]).length > 1\n );\n};\n\nconst numberOfCardsForRequest = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n if (!selectedCredentials || !selectedCredentials[credentialRequestId]) {\n return 1;\n }\n const selection = selectedCredentials[credentialRequestId];\n if (Array.isArray(selection)) {\n return selection.length;\n }\n return 1;\n};\n\nconst heightForNumberOfCards = (numberOfCards: number) => 60 * (numberOfCards + 1) + 12 * numberOfCards;\n\nexport const ShareCredentialV2Group: FC<ShareCredentialV2GroupProps> = ({\n labels,\n lastGroup,\n onGroupSelect,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n presentationDefinition,\n requestGroup,\n selected,\n selectedCredentials = {},\n style,\n testID,\n valid,\n}) => {\n const { expandedCredential, onHeaderPress } = useCredentialListExpandedCard();\n const numberOfCards = requestGroup.reduce(\n (acc, groupId) => acc + numberOfCardsForRequest(selectedCredentials, groupId),\n 0,\n );\n const singleCredentialGroup =\n requestGroup.length === 1 && !multipleCredentialsSelected(selectedCredentials, requestGroup[0]);\n\n const headerPressHandler = useCallback(() => {\n onGroupSelect?.(!selected);\n }, [selected, onGroupSelect]);\n\n const onNestedCardHeaderPress = useCallback(\n (credentialId: string) => () => {\n if (!selected) {\n onGroupSelect?.(true);\n }\n onHeaderPress(credentialId);\n },\n [selected, onGroupSelect, onHeaderPress],\n );\n\n const credentialCards = useMemo(() => {\n return requestGroup.flatMap((credentialRequestId, credentialRequestIndex, { length: credentialRequestsLength }) => {\n const lastQuery = credentialRequestIndex === credentialRequestsLength - 1;\n\n const credentialQuery = presentationDefinition.credentialQueries[credentialRequestId].credentialOrFailureHint;\n let defaultSelection: PresentationSubmitV2CredentialRequest;\n if (credentialQuery.type_ === 'APPLICABLE_CREDENTIALS') {\n defaultSelection = credentialQuery.applicableCredentials?.[0]\n ? {\n credentialId: credentialQuery.applicableCredentials[0].id,\n userSelections: [],\n }\n : {\n credentialId: '',\n userSelections: [],\n };\n } else {\n defaultSelection = {\n credentialId: '',\n userSelections: [],\n };\n }\n const request = selectedCredentials[credentialRequestId];\n const credentialSelections = request ? (Array.isArray(request) ? request : [request]) : [defaultSelection];\n\n return credentialSelections?.flatMap((credentialRequest, credentialIndex, { length: credentialsLength }) => {\n const selectedFields = credentialRequest.userSelections;\n const cardId = `${credentialRequestId}-${credentialRequest.credentialId}`;\n const lastItem = singleCredentialGroup ? lastGroup : lastQuery && credentialIndex === credentialsLength - 1;\n const cardExpanded = selected && (singleCredentialGroup || expandedCredential === cardId);\n const headerAccessory =\n singleCredentialGroup && valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : cardExpanded ? (\n UpIcon\n ) : (\n DownIcon\n );\n return (\n <ShareCredentialV2\n credentialQuery={credentialQuery}\n credentialRequestId={credentialRequestId}\n expanded={cardExpanded}\n grouped={!singleCredentialGroup}\n headerAccessory={headerAccessory}\n key={credentialRequestId}\n labels={labels}\n lastItem={lastItem}\n onHeaderPress={singleCredentialGroup ? headerPressHandler : onNestedCardHeaderPress(cardId)}\n onImagePreview={onImagePreview}\n onSelectCredential={onSelectCredential?.(credentialRequestId)}\n onSelectField={onSelectField(credentialRequestId)}\n selectedCredentialId={credentialRequest.credentialId}\n selectedFields={selectedFields}\n style={[!singleCredentialGroup && styles.requestedCredential, lastItem && styles.requestedCredentialLast]}\n testID={concatTestID(testID, credentialRequestId)}\n />\n );\n });\n });\n }, [\n expandedCredential,\n labels,\n lastGroup,\n headerPressHandler,\n onImagePreview,\n onNestedCardHeaderPress,\n onSelectCredential,\n onSelectField,\n presentationDefinition.credentialQueries,\n requestGroup,\n selected,\n selectedCredentials,\n singleCredentialGroup,\n testID,\n valid,\n ]);\n\n if (singleCredentialGroup) {\n return credentialCards[0];\n }\n\n const groupHeaderAccessory = valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : selected ? (\n UpIcon\n ) : (\n DownIcon\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: selected || lastGroup ? 'auto' : heightForNumberOfCards(numberOfCards),\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n singleCredentialGroup ? undefined : styles.groupedCredentialsWrapper,\n !singleCredentialGroup && styles.requestedCredential,\n lastGroup && styles.requestedCredentialLast,\n style,\n ]}>\n <BlurView blurStyle=\"strong\" darkMode={true} style={StyleSheet.absoluteFill} />\n <TouchableOpacity onPress={headerPressHandler}>\n <CredentialGroupHeader accessory={groupHeaderAccessory} name={labels.groupHeader} style={styles.header} />\n </TouchableOpacity>\n {credentialCards}\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n groupedCredentialsWrapper: {\n borderRadius: 10 + GroupedShareCredentialV2Padding,\n borderWidth: 0,\n overflow: 'hidden',\n paddingBottom: GroupedShareCredentialV2Padding,\n },\n header: {\n marginBottom: GroupedShareCredentialV2Padding,\n },\n requestedCredential: {\n marginBottom: 12,\n },\n requestedCredentialLast: {\n marginBottom: 0,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","StyleSheet","Animated","LinearTransition","BlurView","CredentialCardShadow","DownIcon","Selector","SelectorStatus","TouchableOpacity","UpIcon","CredentialGroupHeader","concatTestID","useCredentialListExpandedCard","GroupedShareCredentialV2Padding","ShareCredentialV2","multipleCredentialsSelected","selectedCredentials","credentialRequestId","Array","isArray","length","numberOfCardsForRequest","selection","heightForNumberOfCards","numberOfCards","ShareCredentialV2Group","labels","language","lastGroup","onGroupSelect","onImagePreview","onSelectCredential","onSelectField","presentationDefinition","requestGroup","selected","style","testID","valid","expandedCredential","onHeaderPress","reduce","acc","groupId","singleCredentialGroup","headerPressHandler","onNestedCardHeaderPress","credentialId","credentialCards","flatMap","credentialRequestIndex","credentialRequestsLength","lastQuery","credentialQuery","credentialQueries","credentialOrFailureHint","defaultSelection","type_","_credentialQuery$appl","applicableCredentials","id","userSelections","request","credentialSelections","credentialRequest","credentialIndex","credentialsLength","selectedFields","cardId","lastItem","cardExpanded","headerAccessory","createElement","status","SelectedRadio","Empty","expanded","grouped","key","selectedCredentialId","styles","requestedCredential","requestedCredentialLast","groupHeaderAccessory","View","layout","animatedWrapper","height","undefined","groupedCredentialsWrapper","blurStyle","darkMode","absoluteFill","onPress","accessory","name","groupHeader","header","create","borderRadius","borderWidth","overflow","paddingBottom","marginBottom"],"sources":["share-credential-v2-group.tsx"],"sourcesContent":["import {\n CredentialListItem,\n PresentationDefinitionV2,\n PresentationDefinitionV2Claim,\n PresentationSubmitV2CredentialRequest,\n} from '@procivis/react-native-one-core';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport Animated, { LinearTransition } from 'react-native-reanimated';\n\nimport {\n BlurView,\n CredentialCardShadow,\n DownIcon,\n Selector,\n SelectorStatus,\n TouchableOpacity,\n UpIcon,\n} from '../../../ui-components';\nimport CredentialGroupHeader from '../../../ui-components/credential/group/credential-group-header';\nimport { concatTestID, useCredentialListExpandedCard } from '../../../utils';\nimport { ShareCredentialLabels } from '../v1/share-credential';\nimport { GroupedShareCredentialV2Padding, ShareCredentialV2 } from './share-credential-v2';\n\nexport type CredentialQuerySelection = Record<\n string,\n PresentationSubmitV2CredentialRequest | PresentationSubmitV2CredentialRequest[]\n>;\n\nexport type ShareCredentialGroupLabels = ShareCredentialLabels & {\n groupHeader: string;\n};\n\nexport type ShareCredentialV2GroupProps = {\n labels: ShareCredentialGroupLabels;\n language: string;\n lastGroup: boolean;\n onGroupSelect?: (selected: boolean) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential: (requestCredentialId: string) => () => void;\n onSelectField: (\n requestCredentialId: string,\n ) => (\n credentialId: CredentialListItem['id'],\n fieldPath: PresentationDefinitionV2Claim['path'],\n selected: boolean,\n ) => void;\n presentationDefinition: PresentationDefinitionV2;\n requestGroup: string[];\n selected?: boolean;\n selectedCredentials?: CredentialQuerySelection;\n style?: StyleProp<ViewStyle>;\n testID: string;\n valid: boolean;\n};\n\nconst multipleCredentialsSelected = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n return (\n selectedCredentials &&\n selectedCredentials[credentialRequestId] &&\n Array.isArray(selectedCredentials[credentialRequestId]) &&\n (selectedCredentials[credentialRequestId] as PresentationSubmitV2CredentialRequest[]).length > 1\n );\n};\n\nconst numberOfCardsForRequest = (\n selectedCredentials: CredentialQuerySelection | undefined,\n credentialRequestId: string,\n) => {\n if (!selectedCredentials || !selectedCredentials[credentialRequestId]) {\n return 1;\n }\n const selection = selectedCredentials[credentialRequestId];\n if (Array.isArray(selection)) {\n return selection.length;\n }\n return 1;\n};\n\nconst heightForNumberOfCards = (numberOfCards: number) => 60 * (numberOfCards + 1) + 12 * numberOfCards;\n\nexport const ShareCredentialV2Group: FC<ShareCredentialV2GroupProps> = ({\n labels,\n language,\n lastGroup,\n onGroupSelect,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n presentationDefinition,\n requestGroup,\n selected,\n selectedCredentials = {},\n style,\n testID,\n valid,\n}) => {\n const { expandedCredential, onHeaderPress } = useCredentialListExpandedCard();\n const numberOfCards = requestGroup.reduce(\n (acc, groupId) => acc + numberOfCardsForRequest(selectedCredentials, groupId),\n 0,\n );\n const singleCredentialGroup =\n requestGroup.length === 1 && !multipleCredentialsSelected(selectedCredentials, requestGroup[0]);\n\n const headerPressHandler = useCallback(() => {\n onGroupSelect?.(!selected);\n }, [selected, onGroupSelect]);\n\n const onNestedCardHeaderPress = useCallback(\n (credentialId: string) => () => {\n if (!selected) {\n onGroupSelect?.(true);\n }\n onHeaderPress(credentialId);\n },\n [selected, onGroupSelect, onHeaderPress],\n );\n\n const credentialCards = useMemo(() => {\n return requestGroup.flatMap((credentialRequestId, credentialRequestIndex, { length: credentialRequestsLength }) => {\n const lastQuery = credentialRequestIndex === credentialRequestsLength - 1;\n\n const credentialQuery = presentationDefinition.credentialQueries[credentialRequestId].credentialOrFailureHint;\n let defaultSelection: PresentationSubmitV2CredentialRequest;\n if (credentialQuery.type_ === 'APPLICABLE_CREDENTIALS') {\n defaultSelection = credentialQuery.applicableCredentials?.[0]\n ? {\n credentialId: credentialQuery.applicableCredentials[0].id,\n userSelections: [],\n }\n : {\n credentialId: '',\n userSelections: [],\n };\n } else {\n defaultSelection = {\n credentialId: '',\n userSelections: [],\n };\n }\n const request = selectedCredentials[credentialRequestId];\n const credentialSelections = request ? (Array.isArray(request) ? request : [request]) : [defaultSelection];\n\n return credentialSelections?.flatMap((credentialRequest, credentialIndex, { length: credentialsLength }) => {\n const selectedFields = credentialRequest.userSelections;\n const cardId = `${credentialRequestId}-${credentialRequest.credentialId}`;\n const lastItem = singleCredentialGroup ? lastGroup : lastQuery && credentialIndex === credentialsLength - 1;\n const cardExpanded = selected && (singleCredentialGroup || expandedCredential === cardId);\n const headerAccessory =\n singleCredentialGroup && valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : cardExpanded ? (\n UpIcon\n ) : (\n DownIcon\n );\n return (\n <ShareCredentialV2\n credentialQuery={credentialQuery}\n credentialRequestId={credentialRequestId}\n expanded={cardExpanded}\n grouped={!singleCredentialGroup}\n headerAccessory={headerAccessory}\n key={credentialRequestId}\n labels={labels}\n language={language}\n lastItem={lastItem}\n onHeaderPress={singleCredentialGroup ? headerPressHandler : onNestedCardHeaderPress(cardId)}\n onImagePreview={onImagePreview}\n onSelectCredential={onSelectCredential?.(credentialRequestId)}\n onSelectField={onSelectField(credentialRequestId)}\n selectedCredentialId={credentialRequest.credentialId}\n selectedFields={selectedFields}\n style={[!singleCredentialGroup && styles.requestedCredential, lastItem && styles.requestedCredentialLast]}\n testID={concatTestID(testID, credentialRequestId)}\n />\n );\n });\n });\n }, [\n expandedCredential,\n labels,\n language,\n lastGroup,\n headerPressHandler,\n onImagePreview,\n onNestedCardHeaderPress,\n onSelectCredential,\n onSelectField,\n presentationDefinition.credentialQueries,\n requestGroup,\n selected,\n selectedCredentials,\n singleCredentialGroup,\n testID,\n valid,\n ]);\n\n if (singleCredentialGroup) {\n return credentialCards[0];\n }\n\n const groupHeaderAccessory = valid ? (\n <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />\n ) : selected ? (\n UpIcon\n ) : (\n DownIcon\n );\n\n return (\n <Animated.View\n layout={LinearTransition}\n style={[\n styles.animatedWrapper,\n // eslint-disable-next-line react-native/no-inline-styles\n {\n height: selected || lastGroup ? 'auto' : heightForNumberOfCards(numberOfCards),\n },\n style,\n ]}>\n <Animated.View\n layout={LinearTransition}\n style={[\n singleCredentialGroup ? undefined : styles.groupedCredentialsWrapper,\n !singleCredentialGroup && styles.requestedCredential,\n lastGroup && styles.requestedCredentialLast,\n style,\n ]}>\n <BlurView blurStyle=\"strong\" darkMode={true} style={StyleSheet.absoluteFill} />\n <TouchableOpacity onPress={headerPressHandler}>\n <CredentialGroupHeader accessory={groupHeaderAccessory} name={labels.groupHeader} style={styles.header} />\n </TouchableOpacity>\n {credentialCards}\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n animatedWrapper: {\n ...CredentialCardShadow,\n },\n groupedCredentialsWrapper: {\n borderRadius: 10 + GroupedShareCredentialV2Padding,\n borderWidth: 0,\n overflow: 'hidden',\n paddingBottom: GroupedShareCredentialV2Padding,\n },\n header: {\n marginBottom: GroupedShareCredentialV2Padding,\n },\n requestedCredential: {\n marginBottom: 12,\n },\n requestedCredentialLast: {\n marginBottom: 0,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CredentialType } from '@procivis/react-native-one-core';
|
|
1
2
|
import React, { useCallback, useMemo } from 'react';
|
|
2
3
|
import { Dimensions, StyleSheet } from 'react-native';
|
|
3
4
|
import { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';
|
|
@@ -13,6 +14,7 @@ export const ShareCredentialV2 = ({
|
|
|
13
14
|
grouped,
|
|
14
15
|
headerAccessory,
|
|
15
16
|
labels,
|
|
17
|
+
language,
|
|
16
18
|
lastItem,
|
|
17
19
|
onHeaderPress,
|
|
18
20
|
onImagePreview,
|
|
@@ -23,7 +25,7 @@ export const ShareCredentialV2 = ({
|
|
|
23
25
|
style,
|
|
24
26
|
testID
|
|
25
27
|
}) => {
|
|
26
|
-
var _applicableCredential, _credential$issuer;
|
|
28
|
+
var _applicableCredential, _credentialQuery$purp, _credential$issuer;
|
|
27
29
|
const colorScheme = useAppColorScheme();
|
|
28
30
|
const applicableCredentials = credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? credentialQuery.applicableCredentials : undefined;
|
|
29
31
|
const failureHint = credentialQuery.type_ === 'FAILURE_HINT' ? credentialQuery.failureHint : undefined;
|
|
@@ -32,10 +34,12 @@ export const ShareCredentialV2 = ({
|
|
|
32
34
|
data: config
|
|
33
35
|
} = useCoreConfig();
|
|
34
36
|
const cardWidth = useMemo(() => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0), [grouped]);
|
|
37
|
+
const purpose = credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? (_credentialQuery$purp = credentialQuery.purpose) === null || _credentialQuery$purp === void 0 ? void 0 : _credentialQuery$purp[language] : undefined;
|
|
35
38
|
const multipleCredentialsAvailable = Boolean((applicableCredentials === null || applicableCredentials === void 0 ? void 0 : applicableCredentials.length) && applicableCredentials.length > 1);
|
|
36
39
|
const validityState = getValidityState(credential ? {
|
|
37
40
|
...credential,
|
|
38
|
-
issuer: credential === null || credential === void 0 || (_credential$issuer = credential.issuer) === null || _credential$issuer === void 0 ? void 0 : _credential$issuer.id
|
|
41
|
+
issuer: credential === null || credential === void 0 || (_credential$issuer = credential.issuer) === null || _credential$issuer === void 0 ? void 0 : _credential$issuer.id,
|
|
42
|
+
type: CredentialType.SINGLE
|
|
39
43
|
} : undefined);
|
|
40
44
|
const footer = useMemo(() => {
|
|
41
45
|
if (!expanded) {
|
|
@@ -83,7 +87,7 @@ export const ShareCredentialV2 = ({
|
|
|
83
87
|
...card
|
|
84
88
|
},
|
|
85
89
|
attributes
|
|
86
|
-
} = shareCredentialCardFromV2PresentationCredential(credential, failureHint, Boolean(expanded), multipleCredentialsAvailable, selectedFields, config, testID, labels);
|
|
90
|
+
} = shareCredentialCardFromV2PresentationCredential(credential, failureHint, Boolean(expanded), multipleCredentialsAvailable, purpose, selectedFields, config, testID, labels, language);
|
|
87
91
|
if (headerAccessory) {
|
|
88
92
|
header.accessory = headerAccessory;
|
|
89
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","useAppColorScheme","concatTestID","getValidityState","useCoreConfig","ValidityState","shareCredentialCardFromV2PresentationCredential","SelectShareCredentialCardNotice","ShareCredentialCardNotice","GroupedShareCredentialV2Padding","ShareCredentialV2","credentialQuery","credentialRequestId","expanded","grouped","headerAccessory","labels","lastItem","onHeaderPress","onImagePreview","onSelectCredential","onSelectField","selectedCredentialId","selectedFields","style","testID","_applicableCredential","_credential$issuer","colorScheme","applicableCredentials","type_","undefined","failureHint","credential","find","c","id","data","config","cardWidth","get","width","multipleCredentialsAvailable","Boolean","length","validityState","issuer","footer","Revoked","createElement","text","revokedCredentialNotice","Suspended","suspendedCredentialNotice","reason","invalidCredentialNotice","buttonTitle","multipleCredentialsSelect","onPress","multipleCredentialsNotice","onAttributeSelected","fieldPath","selected","card","header","attributes","accessory","credentialId","styles","groupedCredential","bordered","borderColor","background","create","borderWidth","borderRadius","marginBottom","marginHorizontal"],"sources":["share-credential-v2.tsx"],"sourcesContent":["import {\n ApplicableCredentialOrFailureHint,\n CredentialListItem,\n PresentationDefinitionV2Claim,\n} from '@procivis/react-native-one-core';\nimport React, { FunctionComponent, useCallback, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';\nimport { concatTestID, getValidityState, useCoreConfig, ValidityState } from '../../../utils';\nimport { shareCredentialCardFromV2PresentationCredential } from '../../../utils/parsers/credential-sharing-v2';\nimport { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';\nimport { ShareCredentialCardNotice } from '../share-credential-card-notice';\nimport { ShareCredentialLabels } from '../v1';\n\nexport type ShareCredentialV2Props = {\n credentialQuery: ApplicableCredentialOrFailureHint;\n credentialRequestId: string;\n expanded?: boolean;\n grouped?: boolean;\n headerAccessory?: React.ComponentType<any> | React.ReactElement;\n labels: ShareCredentialLabels;\n lastItem?: boolean;\n onHeaderPress?: (_credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential?: () => void;\n onSelectField: (\n credentialId: CredentialListItem['id'],\n fieldPath: PresentationDefinitionV2Claim['path'],\n selected: boolean,\n ) => void;\n selectedCredentialId?: CredentialListItem['id'];\n selectedFields?: Array<PresentationDefinitionV2Claim['path']>;\n style?: StyleProp<ViewStyle>;\n testID: string;\n};\n\nexport const GroupedShareCredentialV2Padding = 4;\n\nexport const ShareCredentialV2: FunctionComponent<ShareCredentialV2Props> = ({\n credentialQuery,\n credentialRequestId,\n expanded,\n grouped,\n headerAccessory,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n selectedCredentialId,\n selectedFields,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const applicableCredentials =\n credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? credentialQuery.applicableCredentials : undefined;\n const failureHint = credentialQuery.type_ === 'FAILURE_HINT' ? credentialQuery.failureHint : undefined;\n const credential = applicableCredentials?.find((c) => c.id === selectedCredentialId) ?? applicableCredentials?.[0];\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(\n () => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0),\n [grouped],\n );\n\n const multipleCredentialsAvailable = Boolean(applicableCredentials?.length && applicableCredentials.length > 1);\n\n const validityState = getValidityState(\n credential\n ? {\n ...credential,\n issuer: credential?.issuer?.id,\n }\n : undefined,\n );\n\n const footer = useMemo(() => {\n if (!expanded) {\n return;\n }\n if (validityState === ValidityState.Revoked) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.revoked')}\n text={labels.revokedCredentialNotice}\n />\n );\n }\n if (validityState === ValidityState.Suspended) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.suspended')}\n text={labels.suspendedCredentialNotice}\n />\n );\n }\n\n if (failureHint?.reason === 'VALIDITY') {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.invalid')}\n text={labels.invalidCredentialNotice}\n />\n );\n }\n\n if (multipleCredentialsAvailable) {\n return (\n <SelectShareCredentialCardNotice\n buttonTitle={labels.multipleCredentialsSelect}\n onPress={onSelectCredential}\n testID={concatTestID(testID, 'notice.multiple')}\n text={labels.multipleCredentialsNotice}\n />\n );\n }\n }, [\n expanded,\n failureHint?.reason,\n labels.invalidCredentialNotice,\n labels.multipleCredentialsNotice,\n labels.multipleCredentialsSelect,\n labels.revokedCredentialNotice,\n labels.suspendedCredentialNotice,\n multipleCredentialsAvailable,\n onSelectCredential,\n testID,\n validityState,\n ]);\n\n const onAttributeSelected = useCallback(\n (fieldPath: PresentationDefinitionV2Claim['path'], selected: boolean) => {\n if (!selectedCredentialId) {\n return;\n }\n onSelectField(selectedCredentialId, fieldPath, selected);\n },\n [onSelectField, selectedCredentialId],\n );\n\n if (!config) {\n return null;\n }\n\n const {\n card: { header, ...card },\n attributes,\n } = shareCredentialCardFromV2PresentationCredential(\n credential,\n failureHint,\n Boolean(expanded),\n multipleCredentialsAvailable,\n selectedFields,\n config,\n testID,\n labels,\n );\n\n if (headerAccessory) {\n header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId: credentialRequestId,\n header,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n footer={footer}\n lastItem={lastItem}\n onAttributeSelected={onAttributeSelected}\n onImagePreview={onImagePreview}\n style={[\n styles.credential,\n grouped ? styles.groupedCredential : styles.bordered,\n { borderColor: colorScheme.background },\n style,\n ]}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n bordered: {\n borderWidth: 1,\n },\n credential: {\n borderRadius: 10,\n borderWidth: 0,\n marginBottom: 8,\n },\n groupedCredential: {\n marginHorizontal: GroupedShareCredentialV2Padding,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CredentialType","React","useCallback","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","useAppColorScheme","concatTestID","getValidityState","useCoreConfig","ValidityState","shareCredentialCardFromV2PresentationCredential","SelectShareCredentialCardNotice","ShareCredentialCardNotice","GroupedShareCredentialV2Padding","ShareCredentialV2","credentialQuery","credentialRequestId","expanded","grouped","headerAccessory","labels","language","lastItem","onHeaderPress","onImagePreview","onSelectCredential","onSelectField","selectedCredentialId","selectedFields","style","testID","_applicableCredential","_credentialQuery$purp","_credential$issuer","colorScheme","applicableCredentials","type_","undefined","failureHint","credential","find","c","id","data","config","cardWidth","get","width","purpose","multipleCredentialsAvailable","Boolean","length","validityState","issuer","type","SINGLE","footer","Revoked","createElement","text","revokedCredentialNotice","Suspended","suspendedCredentialNotice","reason","invalidCredentialNotice","buttonTitle","multipleCredentialsSelect","onPress","multipleCredentialsNotice","onAttributeSelected","fieldPath","selected","card","header","attributes","accessory","credentialId","styles","groupedCredential","bordered","borderColor","background","create","borderWidth","borderRadius","marginBottom","marginHorizontal"],"sources":["share-credential-v2.tsx"],"sourcesContent":["import {\n ApplicableCredentialOrFailureHint,\n CredentialListItem,\n CredentialType,\n PresentationDefinitionV2Claim,\n} from '@procivis/react-native-one-core';\nimport React, { FunctionComponent, useCallback, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { CredentialDetailsCardListItem, useAppColorScheme } from '../../../ui-components';\nimport { concatTestID, getValidityState, useCoreConfig, ValidityState } from '../../../utils';\nimport { shareCredentialCardFromV2PresentationCredential } from '../../../utils/parsers/credential-sharing-v2';\nimport { SelectShareCredentialCardNotice } from '../select-share-credential-card-notice';\nimport { ShareCredentialCardNotice } from '../share-credential-card-notice';\nimport { ShareCredentialLabels } from '../v1';\n\nexport type ShareCredentialV2Props = {\n credentialQuery: ApplicableCredentialOrFailureHint;\n credentialRequestId: string;\n expanded?: boolean;\n grouped?: boolean;\n headerAccessory?: React.ComponentType<any> | React.ReactElement;\n labels: ShareCredentialLabels;\n language: string;\n lastItem?: boolean;\n onHeaderPress?: (_credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n onSelectCredential?: () => void;\n onSelectField: (\n credentialId: CredentialListItem['id'],\n fieldPath: PresentationDefinitionV2Claim['path'],\n selected: boolean,\n ) => void;\n selectedCredentialId?: CredentialListItem['id'];\n selectedFields?: Array<PresentationDefinitionV2Claim['path']>;\n style?: StyleProp<ViewStyle>;\n testID: string;\n};\n\nexport const GroupedShareCredentialV2Padding = 4;\n\nexport const ShareCredentialV2: FunctionComponent<ShareCredentialV2Props> = ({\n credentialQuery,\n credentialRequestId,\n expanded,\n grouped,\n headerAccessory,\n labels,\n language,\n lastItem,\n onHeaderPress,\n onImagePreview,\n onSelectCredential,\n onSelectField,\n selectedCredentialId,\n selectedFields,\n style,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const applicableCredentials =\n credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? credentialQuery.applicableCredentials : undefined;\n const failureHint = credentialQuery.type_ === 'FAILURE_HINT' ? credentialQuery.failureHint : undefined;\n const credential = applicableCredentials?.find((c) => c.id === selectedCredentialId) ?? applicableCredentials?.[0];\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(\n () => Dimensions.get('window').width - 32 - (grouped ? GroupedShareCredentialV2Padding * 2 : 0),\n [grouped],\n );\n const purpose = credentialQuery.type_ === 'APPLICABLE_CREDENTIALS' ? credentialQuery.purpose?.[language] : undefined;\n\n const multipleCredentialsAvailable = Boolean(applicableCredentials?.length && applicableCredentials.length > 1);\n\n const validityState = getValidityState(\n credential\n ? {\n ...credential,\n issuer: credential?.issuer?.id,\n type: CredentialType.SINGLE,\n }\n : undefined,\n );\n\n const footer = useMemo(() => {\n if (!expanded) {\n return;\n }\n if (validityState === ValidityState.Revoked) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.revoked')}\n text={labels.revokedCredentialNotice}\n />\n );\n }\n if (validityState === ValidityState.Suspended) {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.suspended')}\n text={labels.suspendedCredentialNotice}\n />\n );\n }\n\n if (failureHint?.reason === 'VALIDITY') {\n return (\n <ShareCredentialCardNotice\n testID={concatTestID(testID, 'notice.invalid')}\n text={labels.invalidCredentialNotice}\n />\n );\n }\n\n if (multipleCredentialsAvailable) {\n return (\n <SelectShareCredentialCardNotice\n buttonTitle={labels.multipleCredentialsSelect}\n onPress={onSelectCredential}\n testID={concatTestID(testID, 'notice.multiple')}\n text={labels.multipleCredentialsNotice}\n />\n );\n }\n }, [\n expanded,\n failureHint?.reason,\n labels.invalidCredentialNotice,\n labels.multipleCredentialsNotice,\n labels.multipleCredentialsSelect,\n labels.revokedCredentialNotice,\n labels.suspendedCredentialNotice,\n multipleCredentialsAvailable,\n onSelectCredential,\n testID,\n validityState,\n ]);\n\n const onAttributeSelected = useCallback(\n (fieldPath: PresentationDefinitionV2Claim['path'], selected: boolean) => {\n if (!selectedCredentialId) {\n return;\n }\n onSelectField(selectedCredentialId, fieldPath, selected);\n },\n [onSelectField, selectedCredentialId],\n );\n\n if (!config) {\n return null;\n }\n\n const {\n card: { header, ...card },\n attributes,\n } = shareCredentialCardFromV2PresentationCredential(\n credential,\n failureHint,\n Boolean(expanded),\n multipleCredentialsAvailable,\n purpose,\n selectedFields,\n config,\n testID,\n labels,\n language,\n );\n\n if (headerAccessory) {\n header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId: credentialRequestId,\n header,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n footer={footer}\n lastItem={lastItem}\n onAttributeSelected={onAttributeSelected}\n onImagePreview={onImagePreview}\n style={[\n styles.credential,\n grouped ? styles.groupedCredential : styles.bordered,\n { borderColor: colorScheme.background },\n style,\n ]}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n bordered: {\n borderWidth: 1,\n },\n credential: {\n borderRadius: 10,\n borderWidth: 0,\n marginBottom: 8,\n },\n groupedCredential: {\n marginHorizontal: GroupedShareCredentialV2Padding,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,6 +31,7 @@ const CredentialDetailsCard = ({
|
|
|
31
31
|
const CaretIcon = expanded ? UpIcon : DownIcon;
|
|
32
32
|
const cardHeight = Math.ceil(card.width / CredentialCardRatio);
|
|
33
33
|
const currentHeight = useSharedValue(undefined);
|
|
34
|
+
const [animatedHeightSet, setAnimatedHeightSet] = useState(false);
|
|
34
35
|
const previewAttributes = attributes ? attributes.slice(0, PREVIEW_ATTRIBUTES_COUNT) : [];
|
|
35
36
|
const extraAttributes = useMemo(() => attributes ? attributes.slice(PREVIEW_ATTRIBUTES_COUNT) : [], [attributes]);
|
|
36
37
|
useEffect(() => {
|
|
@@ -51,6 +52,7 @@ const CredentialDetailsCard = ({
|
|
|
51
52
|
const additionalAttributesHeight = fullAttributesHeight !== null && fullAttributesHeight !== void 0 ? fullAttributesHeight : 0;
|
|
52
53
|
const additionalHeight = allAttributesRendered ? additionalAttributesHeight : buttonViewHeight;
|
|
53
54
|
const fullHeight = previewAttributesHeight + additionalHeight;
|
|
55
|
+
setAnimatedHeightSet(true);
|
|
54
56
|
if (!animate) {
|
|
55
57
|
currentHeight.value = fullHeight;
|
|
56
58
|
return;
|
|
@@ -99,7 +101,7 @@ const CredentialDetailsCard = ({
|
|
|
99
101
|
header,
|
|
100
102
|
...cardProps
|
|
101
103
|
} = card;
|
|
102
|
-
const renderExtraAttributes = allAttributesRendered || previewAttributesHeight !== undefined &&
|
|
104
|
+
const renderExtraAttributes = allAttributesRendered || previewAttributesHeight !== undefined && animatedHeightSet;
|
|
103
105
|
const ContainerComponent = animate ? Animated.View : View;
|
|
104
106
|
return /*#__PURE__*/React.createElement(ContainerComponent, _extends({
|
|
105
107
|
style: [styles.detailsCard, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","useAnimatedStyle","useSharedValue","withTiming","concatTestID","Button","ButtonType","DownIcon","UpIcon","useAppColorScheme","CredentialAttributeItem","CredentialCard","CredentialCardRatio","PREVIEW_ATTRIBUTES_COUNT","SEE_ALL_BUTTON_HEIGHT","CredentialDetailsCard","animate","attributes","card","expanded","footer","onImagePreview","onAttributeSelected","style","showAllButtonLabel","testID","viewProps","_header$accessory","colorScheme","previewAttributesHeight","setPreviewAttributesHeight","fullAttributesHeight","setFullAttributesHeight","allAttributesRendered","setAllAttributesRendered","length","CaretIcon","cardHeight","Math","ceil","width","currentHeight","undefined","previewAttributes","slice","extraAttributes","viewStyle","flatten","styles","allAttributesWrapper","allAttributesWrapperWithFooter","padding","paddingBottom","buttonViewHeight","additionalAttributesHeight","additionalHeight","fullHeight","value","newHeight","duration","animatedStyle","height","onPreviewAttrContentLayout","event","nativeEvent","layout","onFullAttrContentLayout","footerView","isValidElement","FooterComponent","createElement","header","cardProps","renderExtraAttributes","ContainerComponent","_extends","detailsCard","backgroundColor","white","accessory","onHeaderPress","attributesWrapper","onLayout","previewAttributesWrapper","map","attribute","idx","key","id","last","toString","onPress","buttonWrapper","type","Secondary","title","index","create","paddingHorizontal","paddingTop","borderRadius","borderWidth","overflow","marginTop"],"sources":["credential-details-card.tsx"],"sourcesContent":["import React, { ComponentType, FC, ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ImageSourcePropType, LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\nimport Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { Button, ButtonType } from '../../buttons';\nimport { DownIcon, UpIcon } from '../../icons/credential';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialAttributeItem, { CredentialAttribute } from '../credential-attribute-item';\nimport CredentialCard, { CredentialCardProps, CredentialCardRatio } from './credential-card';\n\nexport type CredentialDetailsCardProps = ViewProps & {\n animate?: boolean;\n attributes: CredentialAttribute[] | false;\n card: CredentialCardProps;\n expanded?: boolean;\n footer?: ComponentType<any> | ReactElement;\n onImagePreview?: (name: string, image: ImageSourcePropType) => void;\n onAttributeSelected?: (id: string, selected: boolean) => void;\n showAllButtonLabel?: string;\n};\n\nconst PREVIEW_ATTRIBUTES_COUNT = 3;\nconst SEE_ALL_BUTTON_HEIGHT = 78;\n\nconst CredentialDetailsCard: FC<CredentialDetailsCardProps> = ({\n animate = true,\n attributes,\n card,\n expanded,\n footer,\n onImagePreview,\n onAttributeSelected,\n style,\n showAllButtonLabel,\n testID,\n ...viewProps\n}) => {\n const colorScheme = useAppColorScheme();\n const [previewAttributesHeight, setPreviewAttributesHeight] = useState<number>();\n const [fullAttributesHeight, setFullAttributesHeight] = useState<number>();\n\n const [allAttributesRendered, setAllAttributesRendered] = useState<boolean>(\n (attributes && attributes.length <= PREVIEW_ATTRIBUTES_COUNT) || !showAllButtonLabel,\n );\n\n const CaretIcon = expanded ? UpIcon : DownIcon;\n\n const cardHeight = Math.ceil(card.width / CredentialCardRatio);\n const currentHeight = useSharedValue<number | undefined>(undefined);\n\n const previewAttributes = attributes ? attributes.slice(0, PREVIEW_ATTRIBUTES_COUNT) : [];\n const extraAttributes = useMemo(() => (attributes ? attributes.slice(PREVIEW_ATTRIBUTES_COUNT) : []), [attributes]);\n\n useEffect(() => {\n if (extraAttributes.length === 0) {\n const viewStyle = StyleSheet.flatten([\n styles.allAttributesWrapper,\n footer && styles.allAttributesWrapperWithFooter,\n ]);\n const padding = viewStyle.paddingBottom;\n setFullAttributesHeight(padding);\n }\n }, [extraAttributes, footer]);\n\n useEffect(() => {\n if (previewAttributesHeight === undefined) {\n return;\n }\n if (allAttributesRendered && fullAttributesHeight === undefined) {\n return;\n }\n\n const buttonViewHeight = !extraAttributes || allAttributesRendered ? 0 : SEE_ALL_BUTTON_HEIGHT;\n const additionalAttributesHeight = fullAttributesHeight ?? 0;\n const additionalHeight = allAttributesRendered ? additionalAttributesHeight : buttonViewHeight;\n const fullHeight = previewAttributesHeight + additionalHeight;\n\n if (!animate) {\n currentHeight.value = fullHeight;\n return;\n }\n\n const newHeight = expanded ? fullHeight : 0;\n\n if (currentHeight.value === undefined || !animate) {\n currentHeight.value = newHeight;\n return;\n }\n\n const duration = fullHeight / 5;\n currentHeight.value = withTiming(newHeight, {\n duration,\n });\n }, [\n allAttributesRendered,\n currentHeight,\n animate,\n expanded,\n extraAttributes,\n fullAttributesHeight,\n previewAttributes.length,\n previewAttributesHeight,\n ]);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (currentHeight.value === undefined) {\n if (expanded) {\n return {};\n }\n return {\n height: cardHeight,\n };\n }\n return {\n height: cardHeight + currentHeight.value,\n };\n }, [expanded, currentHeight]);\n\n const onPreviewAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setPreviewAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const onFullAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setFullAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const footerView: ReactElement | undefined = useMemo(() => {\n if (!footer) {\n return undefined;\n }\n if (React.isValidElement(footer)) {\n return footer;\n } else {\n const FooterComponent = footer as React.ComponentType<any>;\n return <FooterComponent />;\n }\n }, [footer]);\n\n const { header, ...cardProps } = card;\n\n const renderExtraAttributes =\n allAttributesRendered || (previewAttributesHeight !== undefined && currentHeight.value !== undefined);\n\n const ContainerComponent = animate ? Animated.View : View;\n return (\n <ContainerComponent\n style={[styles.detailsCard, { backgroundColor: colorScheme.white }, animate ? animatedStyle : undefined, style]}\n {...viewProps}\n testID={concatTestID(card.testID, expanded ? 'expanded' : 'collapsed')}>\n <CredentialCard\n {...cardProps}\n header={{ ...header, accessory: header.accessory ?? (cardProps.onHeaderPress ? CaretIcon : undefined) }}\n style={[styles.card, cardProps.style]}\n />\n {previewAttributes.length > 0 && (\n <View>\n <View style={styles.attributesWrapper}>\n <View onLayout={onPreviewAttrContentLayout} style={styles.previewAttributesWrapper}>\n {previewAttributes.map((attribute, idx) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && !extraAttributes.length && idx === previewAttributes.length - 1}\n testID={concatTestID(testID, 'attribute', idx.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n {!allAttributesRendered && extraAttributes.length > 0 && (\n <View style={styles.buttonWrapper}>\n <Button\n onPress={() => setAllAttributesRendered(true)}\n type={ButtonType.Secondary}\n testID={concatTestID(testID, 'showAllAttributesButton')}\n title={showAllButtonLabel!}\n />\n </View>\n )}\n {renderExtraAttributes && (\n <View\n style={[styles.allAttributesWrapper, footerView && styles.allAttributesWrapperWithFooter]}\n onLayout={onFullAttrContentLayout}>\n {extraAttributes.map((attribute, index, { length }) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && index === length - 1}\n testID={concatTestID(testID, 'attribute', index.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n )}\n </View>\n </View>\n )}\n {footerView ? <View style={styles.footer}>{footerView}</View> : null}\n </ContainerComponent>\n );\n};\n\nconst styles = StyleSheet.create({\n allAttributesWrapper: {\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n allAttributesWrapperWithFooter: {\n paddingBottom: 0,\n },\n attributesWrapper: {\n paddingTop: 7,\n width: '100%',\n },\n buttonWrapper: {\n height: SEE_ALL_BUTTON_HEIGHT,\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n card: {\n borderRadius: 0,\n borderWidth: 0,\n },\n detailsCard: {\n borderRadius: 10,\n borderWidth: 0,\n overflow: 'hidden',\n },\n footer: {\n marginTop: 12,\n },\n previewAttributesWrapper: {\n paddingHorizontal: 4,\n width: '100%',\n },\n});\n\nexport default CredentialDetailsCard;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","StyleSheet","View","Animated","useAnimatedStyle","useSharedValue","withTiming","concatTestID","Button","ButtonType","DownIcon","UpIcon","useAppColorScheme","CredentialAttributeItem","CredentialCard","CredentialCardRatio","PREVIEW_ATTRIBUTES_COUNT","SEE_ALL_BUTTON_HEIGHT","CredentialDetailsCard","animate","attributes","card","expanded","footer","onImagePreview","onAttributeSelected","style","showAllButtonLabel","testID","viewProps","_header$accessory","colorScheme","previewAttributesHeight","setPreviewAttributesHeight","fullAttributesHeight","setFullAttributesHeight","allAttributesRendered","setAllAttributesRendered","length","CaretIcon","cardHeight","Math","ceil","width","currentHeight","undefined","animatedHeightSet","setAnimatedHeightSet","previewAttributes","slice","extraAttributes","viewStyle","flatten","styles","allAttributesWrapper","allAttributesWrapperWithFooter","padding","paddingBottom","buttonViewHeight","additionalAttributesHeight","additionalHeight","fullHeight","value","newHeight","duration","animatedStyle","height","onPreviewAttrContentLayout","event","nativeEvent","layout","onFullAttrContentLayout","footerView","isValidElement","FooterComponent","createElement","header","cardProps","renderExtraAttributes","ContainerComponent","_extends","detailsCard","backgroundColor","white","accessory","onHeaderPress","attributesWrapper","onLayout","previewAttributesWrapper","map","attribute","idx","key","id","last","toString","onPress","buttonWrapper","type","Secondary","title","index","create","paddingHorizontal","paddingTop","borderRadius","borderWidth","overflow","marginTop"],"sources":["credential-details-card.tsx"],"sourcesContent":["import React, { ComponentType, FC, ReactElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ImageSourcePropType, LayoutChangeEvent, StyleSheet, View, ViewProps } from 'react-native';\nimport Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\n\nimport { concatTestID } from '../../../utils/testID';\nimport { Button, ButtonType } from '../../buttons';\nimport { DownIcon, UpIcon } from '../../icons/credential';\nimport { useAppColorScheme } from '../../theme/color-scheme-context';\nimport CredentialAttributeItem, { CredentialAttribute } from '../credential-attribute-item';\nimport CredentialCard, { CredentialCardProps, CredentialCardRatio } from './credential-card';\n\nexport type CredentialDetailsCardProps = ViewProps & {\n animate?: boolean;\n attributes: CredentialAttribute[] | false;\n card: CredentialCardProps;\n expanded?: boolean;\n footer?: ComponentType<any> | ReactElement;\n onImagePreview?: (name: string, image: ImageSourcePropType) => void;\n onAttributeSelected?: (id: string, selected: boolean) => void;\n showAllButtonLabel?: string;\n};\n\nconst PREVIEW_ATTRIBUTES_COUNT = 3;\nconst SEE_ALL_BUTTON_HEIGHT = 78;\n\nconst CredentialDetailsCard: FC<CredentialDetailsCardProps> = ({\n animate = true,\n attributes,\n card,\n expanded,\n footer,\n onImagePreview,\n onAttributeSelected,\n style,\n showAllButtonLabel,\n testID,\n ...viewProps\n}) => {\n const colorScheme = useAppColorScheme();\n const [previewAttributesHeight, setPreviewAttributesHeight] = useState<number>();\n const [fullAttributesHeight, setFullAttributesHeight] = useState<number>();\n\n const [allAttributesRendered, setAllAttributesRendered] = useState<boolean>(\n (attributes && attributes.length <= PREVIEW_ATTRIBUTES_COUNT) || !showAllButtonLabel,\n );\n\n const CaretIcon = expanded ? UpIcon : DownIcon;\n\n const cardHeight = Math.ceil(card.width / CredentialCardRatio);\n const currentHeight = useSharedValue<number | undefined>(undefined);\n const [animatedHeightSet, setAnimatedHeightSet] = useState(false);\n\n const previewAttributes = attributes ? attributes.slice(0, PREVIEW_ATTRIBUTES_COUNT) : [];\n const extraAttributes = useMemo(() => (attributes ? attributes.slice(PREVIEW_ATTRIBUTES_COUNT) : []), [attributes]);\n\n useEffect(() => {\n if (extraAttributes.length === 0) {\n const viewStyle = StyleSheet.flatten([\n styles.allAttributesWrapper,\n footer && styles.allAttributesWrapperWithFooter,\n ]);\n const padding = viewStyle.paddingBottom;\n setFullAttributesHeight(padding);\n }\n }, [extraAttributes, footer]);\n\n useEffect(() => {\n if (previewAttributesHeight === undefined) {\n return;\n }\n if (allAttributesRendered && fullAttributesHeight === undefined) {\n return;\n }\n\n const buttonViewHeight = !extraAttributes || allAttributesRendered ? 0 : SEE_ALL_BUTTON_HEIGHT;\n const additionalAttributesHeight = fullAttributesHeight ?? 0;\n const additionalHeight = allAttributesRendered ? additionalAttributesHeight : buttonViewHeight;\n const fullHeight = previewAttributesHeight + additionalHeight;\n\n setAnimatedHeightSet(true);\n if (!animate) {\n currentHeight.value = fullHeight;\n return;\n }\n\n const newHeight = expanded ? fullHeight : 0;\n\n if (currentHeight.value === undefined || !animate) {\n currentHeight.value = newHeight;\n return;\n }\n\n const duration = fullHeight / 5;\n currentHeight.value = withTiming(newHeight, {\n duration,\n });\n }, [\n allAttributesRendered,\n currentHeight,\n animate,\n expanded,\n extraAttributes,\n fullAttributesHeight,\n previewAttributes.length,\n previewAttributesHeight,\n ]);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (currentHeight.value === undefined) {\n if (expanded) {\n return {};\n }\n return {\n height: cardHeight,\n };\n }\n return {\n height: cardHeight + currentHeight.value,\n };\n }, [expanded, currentHeight]);\n\n const onPreviewAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setPreviewAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const onFullAttrContentLayout = useCallback((event: LayoutChangeEvent) => {\n setFullAttributesHeight(event.nativeEvent.layout.height);\n }, []);\n\n const footerView: ReactElement | undefined = useMemo(() => {\n if (!footer) {\n return undefined;\n }\n if (React.isValidElement(footer)) {\n return footer;\n } else {\n const FooterComponent = footer as React.ComponentType<any>;\n return <FooterComponent />;\n }\n }, [footer]);\n\n const { header, ...cardProps } = card;\n\n const renderExtraAttributes = allAttributesRendered || (previewAttributesHeight !== undefined && animatedHeightSet);\n\n const ContainerComponent = animate ? Animated.View : View;\n return (\n <ContainerComponent\n style={[styles.detailsCard, { backgroundColor: colorScheme.white }, animate ? animatedStyle : undefined, style]}\n {...viewProps}\n testID={concatTestID(card.testID, expanded ? 'expanded' : 'collapsed')}>\n <CredentialCard\n {...cardProps}\n header={{ ...header, accessory: header.accessory ?? (cardProps.onHeaderPress ? CaretIcon : undefined) }}\n style={[styles.card, cardProps.style]}\n />\n {previewAttributes.length > 0 && (\n <View>\n <View style={styles.attributesWrapper}>\n <View onLayout={onPreviewAttrContentLayout} style={styles.previewAttributesWrapper}>\n {previewAttributes.map((attribute, idx) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && !extraAttributes.length && idx === previewAttributes.length - 1}\n testID={concatTestID(testID, 'attribute', idx.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n {!allAttributesRendered && extraAttributes.length > 0 && (\n <View style={styles.buttonWrapper}>\n <Button\n onPress={() => setAllAttributesRendered(true)}\n type={ButtonType.Secondary}\n testID={concatTestID(testID, 'showAllAttributesButton')}\n title={showAllButtonLabel!}\n />\n </View>\n )}\n {renderExtraAttributes && (\n <View\n style={[styles.allAttributesWrapper, footerView && styles.allAttributesWrapperWithFooter]}\n onLayout={onFullAttrContentLayout}>\n {extraAttributes.map((attribute, index, { length }) => (\n <CredentialAttributeItem\n key={attribute.id}\n last={!footerView && index === length - 1}\n testID={concatTestID(testID, 'attribute', index.toString())}\n onImagePreview={onImagePreview}\n onPress={onAttributeSelected}\n {...attribute}\n />\n ))}\n </View>\n )}\n </View>\n </View>\n )}\n {footerView ? <View style={styles.footer}>{footerView}</View> : null}\n </ContainerComponent>\n );\n};\n\nconst styles = StyleSheet.create({\n allAttributesWrapper: {\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n allAttributesWrapperWithFooter: {\n paddingBottom: 0,\n },\n attributesWrapper: {\n paddingTop: 7,\n width: '100%',\n },\n buttonWrapper: {\n height: SEE_ALL_BUTTON_HEIGHT,\n paddingBottom: 12,\n paddingHorizontal: 4,\n width: '100%',\n },\n card: {\n borderRadius: 0,\n borderWidth: 0,\n },\n detailsCard: {\n borderRadius: 10,\n borderWidth: 0,\n overflow: 'hidden',\n },\n footer: {\n marginTop: 12,\n },\n previewAttributesWrapper: {\n paddingHorizontal: 4,\n width: '100%',\n },\n});\n\nexport default CredentialDetailsCard;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useState","Animated","StyleSheet","View","useSafeAreaInsets","BlurView","AnimatedSearchBar","useAppColorScheme","FoldableSearchHeader","staticHeader","scrollOffset","searchBar","header","withNotice","safeAreaInsets","colorScheme","collapsed","setCollapsed","headerHeight","setHeaderHeight","containerPaddingTop","top","containerPaddingStyle","paddingTop","id","addListener","value","removeListener","playHeaderFoldAnimation","scrollHeaderAnimatedStyle","transform","translateY","interpolate","extrapolate","inputRange","outputRange","undefined","fadeHeaderOutAnimatedStyle","opacity","onHeaderLayout","event","nativeEvent","layout","height","createElement","style","styles","headerContainer","noticeBorderRadius","blurFill","blurStyle","color","background","absoluteFill","onLayout","_extends","create","bottom","left","overflow","position","right","width","borderTopLeftRadius","borderTopRightRadius"],"sources":["foldable-header.tsx"],"sourcesContent":["import React, { FunctionComponent, ReactElement, useCallback, useEffect, useState } from 'react';\nimport { Animated, LayoutChangeEvent, StyleSheet, View, ViewStyle } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport BlurView from '../blur/blur-view';\nimport AnimatedSearchBar, { AnimatedSearchBarProps } from '../searchbar/animated-search-bar';\nimport { useAppColorScheme } from '../theme/color-scheme-context';\n\nexport type FoldableHeaderProps = {\n header: ReactElement;\n scrollOffset: Animated.Value;\n searchBar?: Omit<AnimatedSearchBarProps, 'collapsed'>;\n // if true, the header won't fold / fade out on scroll\n staticHeader?: boolean;\n withNotice?: boolean;\n};\n\nconst FoldableSearchHeader: FunctionComponent<FoldableHeaderProps> = ({\n staticHeader = false,\n scrollOffset,\n searchBar,\n header,\n withNotice,\n}) => {\n const safeAreaInsets = useSafeAreaInsets();\n const colorScheme = useAppColorScheme();\n const [collapsed, setCollapsed] = useState(header ? false : true);\n const [headerHeight, setHeaderHeight] = useState<number>();\n\n const containerPaddingTop = withNotice ? 15 : safeAreaInsets.top;\n const containerPaddingStyle = {\n paddingTop: containerPaddingTop,\n };\n\n useEffect(() => {\n const id = scrollOffset.addListener(({ value }) => {\n if (!headerHeight) {\n return;\n }\n\n if (value > headerHeight) {\n setCollapsed(true);\n } else {\n setCollapsed(false);\n }\n });\n return () => {\n scrollOffset.removeListener(id);\n };\n }, [scrollOffset, searchBar, headerHeight]);\n\n const playHeaderFoldAnimation = !staticHeader && headerHeight;\n\n const scrollHeaderAnimatedStyle: Animated.WithAnimatedObject<ViewStyle> | undefined = playHeaderFoldAnimation\n ? {\n transform: [{\n
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useState","Animated","StyleSheet","View","useSafeAreaInsets","BlurView","AnimatedSearchBar","useAppColorScheme","FoldableSearchHeader","staticHeader","scrollOffset","searchBar","header","withNotice","safeAreaInsets","colorScheme","collapsed","setCollapsed","headerHeight","setHeaderHeight","containerPaddingTop","top","containerPaddingStyle","paddingTop","id","addListener","value","removeListener","playHeaderFoldAnimation","scrollHeaderAnimatedStyle","transform","translateY","interpolate","extrapolate","inputRange","outputRange","undefined","fadeHeaderOutAnimatedStyle","opacity","onHeaderLayout","event","nativeEvent","layout","height","createElement","style","styles","headerContainer","noticeBorderRadius","blurFill","blurStyle","color","background","absoluteFill","onLayout","_extends","create","bottom","left","overflow","position","right","width","borderTopLeftRadius","borderTopRightRadius"],"sources":["foldable-header.tsx"],"sourcesContent":["import React, { FunctionComponent, ReactElement, useCallback, useEffect, useState } from 'react';\nimport { Animated, LayoutChangeEvent, StyleSheet, View, ViewStyle } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport BlurView from '../blur/blur-view';\nimport AnimatedSearchBar, { AnimatedSearchBarProps } from '../searchbar/animated-search-bar';\nimport { useAppColorScheme } from '../theme/color-scheme-context';\n\nexport type FoldableHeaderProps = {\n header: ReactElement;\n scrollOffset: Animated.Value;\n searchBar?: Omit<AnimatedSearchBarProps, 'collapsed'>;\n // if true, the header won't fold / fade out on scroll\n staticHeader?: boolean;\n withNotice?: boolean;\n};\n\nconst FoldableSearchHeader: FunctionComponent<FoldableHeaderProps> = ({\n staticHeader = false,\n scrollOffset,\n searchBar,\n header,\n withNotice,\n}) => {\n const safeAreaInsets = useSafeAreaInsets();\n const colorScheme = useAppColorScheme();\n const [collapsed, setCollapsed] = useState(header ? false : true);\n const [headerHeight, setHeaderHeight] = useState<number>();\n\n const containerPaddingTop = withNotice ? 15 : safeAreaInsets.top;\n const containerPaddingStyle = {\n paddingTop: containerPaddingTop,\n };\n\n useEffect(() => {\n const id = scrollOffset.addListener(({ value }) => {\n if (!headerHeight) {\n return;\n }\n\n if (value > headerHeight) {\n setCollapsed(true);\n } else {\n setCollapsed(false);\n }\n });\n return () => {\n scrollOffset.removeListener(id);\n };\n }, [scrollOffset, searchBar, headerHeight]);\n\n const playHeaderFoldAnimation = !staticHeader && headerHeight;\n\n const scrollHeaderAnimatedStyle: Animated.WithAnimatedObject<ViewStyle> | undefined = playHeaderFoldAnimation\n ? {\n transform: [\n {\n translateY: scrollOffset.interpolate({\n extrapolate: 'clamp',\n inputRange: [0, headerHeight],\n outputRange: [0, -headerHeight],\n }),\n },\n ],\n }\n : undefined;\n\n const fadeHeaderOutAnimatedStyle: Animated.WithAnimatedObject<ViewStyle> | undefined = playHeaderFoldAnimation\n ? {\n opacity: scrollOffset.interpolate({\n extrapolate: 'clamp',\n inputRange: [0, headerHeight / 2],\n outputRange: [1, 0],\n }),\n }\n : undefined;\n\n const onHeaderLayout = useCallback(\n (event: LayoutChangeEvent) => {\n setHeaderHeight(event.nativeEvent.layout.height);\n },\n [setHeaderHeight],\n );\n\n return (\n <Animated.View\n style={[styles.headerContainer, containerPaddingStyle, withNotice ? styles.noticeBorderRadius : undefined]}>\n <Animated.View style={scrollHeaderAnimatedStyle}>\n <View style={[styles.blurFill, { top: -containerPaddingTop }]}>\n <BlurView\n blurStyle={'header'}\n color={colorScheme.background}\n style={[StyleSheet.absoluteFill, withNotice ? styles.noticeBorderRadius : undefined]}\n />\n </View>\n {header && (\n <Animated.View onLayout={onHeaderLayout} style={fadeHeaderOutAnimatedStyle}>\n {header}\n </Animated.View>\n )}\n {searchBar && <AnimatedSearchBar {...searchBar} collapsed={collapsed} />}\n </Animated.View>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n blurFill: {\n bottom: 0,\n left: 0,\n overflow: 'hidden',\n position: 'absolute',\n right: 0,\n },\n headerContainer: {\n overflow: 'hidden',\n position: 'absolute',\n width: '100%',\n },\n noticeBorderRadius: {\n borderTopLeftRadius: 30,\n borderTopRightRadius: 30,\n overflow: 'hidden',\n },\n});\n\nexport default FoldableSearchHeader;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","concatTestID","BackButton","Typography","useAppColorScheme","backButtonHitSlop","top","bottom","left","right","Header","backIcon","onBack","rightButtons","style","titleRowStyle","testID","title","viewProps","colorScheme","createElement","_extends","styles","container","backButtonRow","hitSlop","icon","onPress","titleRow","titleRow2nd","titleRowNoBackButton","titleRowNoRightButton","accessibilityRole","color","text","preset","rightButtonWrapper","create","alignItems","flexDirection","justifyContent","minHeight","paddingHorizontal","width","gap","height","paddingTop","flex","paddingBottom","paddingLeft","paddingRight","marginBottom","marginTop"],"sources":["header.tsx"],"sourcesContent":["import React, { FC, ReactNode } from 'react';\nimport { Insets, StyleProp, StyleSheet, View, ViewProps, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { BackButton, BackButtonIcon } from '../buttons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface HeaderProps extends ViewProps {\n backIcon?: BackButtonIcon;\n onBack?: () => void;\n rightButtons?: ReactNode[];\n style?: StyleProp<ViewStyle>;\n titleRowStyle?: StyleProp<ViewStyle>;\n title: ReactNode;\n}\n\nconst backButtonHitSlop: Insets = { top: 12, bottom: 12, left: 20, right: 20 };\n\n/**\n * Unified screen header\n *\n * Following the design: https://www.figma.com/file/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?node-id=425-18624\n * states (Default + Dashboard)\n */\nconst Header: FC<HeaderProps> = ({
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","concatTestID","BackButton","Typography","useAppColorScheme","backButtonHitSlop","top","bottom","left","right","Header","backIcon","onBack","rightButtons","style","titleRowStyle","testID","title","viewProps","colorScheme","createElement","_extends","styles","container","backButtonRow","hitSlop","icon","onPress","titleRow","titleRow2nd","titleRowNoBackButton","titleRowNoRightButton","accessibilityRole","color","text","preset","rightButtonWrapper","create","alignItems","flexDirection","justifyContent","minHeight","paddingHorizontal","width","gap","height","paddingTop","flex","paddingBottom","paddingLeft","paddingRight","marginBottom","marginTop"],"sources":["header.tsx"],"sourcesContent":["import React, { FC, ReactNode } from 'react';\nimport { Insets, StyleProp, StyleSheet, View, ViewProps, ViewStyle } from 'react-native';\n\nimport { concatTestID } from '../../utils';\nimport { BackButton, BackButtonIcon } from '../buttons';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\n\nexport interface HeaderProps extends ViewProps {\n backIcon?: BackButtonIcon;\n onBack?: () => void;\n rightButtons?: ReactNode[];\n style?: StyleProp<ViewStyle>;\n titleRowStyle?: StyleProp<ViewStyle>;\n title: ReactNode;\n}\n\nconst backButtonHitSlop: Insets = { top: 12, bottom: 12, left: 20, right: 20 };\n\n/**\n * Unified screen header\n *\n * Following the design: https://www.figma.com/file/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?node-id=425-18624\n * states (Default + Dashboard)\n */\nconst Header: FC<HeaderProps> = ({\n backIcon,\n onBack,\n rightButtons,\n style,\n titleRowStyle,\n testID,\n title,\n ...viewProps\n}) => {\n const colorScheme = useAppColorScheme();\n\n return (\n <View style={[styles.container, style]} testID={testID} {...viewProps}>\n {onBack && (\n <View style={styles.backButtonRow}>\n <BackButton\n hitSlop={backButtonHitSlop}\n icon={backIcon}\n onPress={onBack}\n testID={concatTestID(testID, 'back')}\n />\n <View />\n {rightButtons}\n </View>\n )}\n\n <View\n style={[\n styles.titleRow,\n onBack ? styles.titleRow2nd : styles.titleRowNoBackButton,\n (onBack || !rightButtons) && styles.titleRowNoRightButton,\n titleRowStyle,\n ]}>\n {typeof title === 'string' ? (\n <Typography\n accessibilityRole=\"header\"\n color={colorScheme.text}\n preset=\"l\"\n style={styles.title}\n testID={concatTestID(testID, 'title')}>\n {title}\n </Typography>\n ) : (\n <View style={styles.title}>{title}</View>\n )}\n\n {!onBack && rightButtons && <View style={styles.rightButtonWrapper}>{rightButtons}</View>}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n backButtonRow: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n minHeight: 48,\n paddingHorizontal: 20,\n width: '100%',\n },\n container: {\n width: '100%',\n },\n rightButtonWrapper: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: '16',\n height: 48,\n justifyContent: 'center',\n paddingHorizontal: 12,\n paddingTop: 2,\n },\n title: {\n flex: 1,\n paddingBottom: 8, // to compensate \"l\" font line-height difference\n paddingTop: 9,\n },\n titleRow: {\n flexDirection: 'row',\n paddingLeft: 20,\n paddingRight: 8,\n width: '100%',\n },\n titleRow2nd: {\n marginBottom: 12,\n },\n titleRowNoBackButton: {\n marginTop: 12,\n },\n titleRowNoRightButton: {\n paddingRight: 20,\n },\n});\n\nexport default Header;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import React, { useEffect, useMemo } from 'react';
|
|
3
3
|
import { Dimensions, StyleSheet, View } from 'react-native';
|
|
4
|
-
import { CredentialDetails,
|
|
4
|
+
import { CredentialDetails, TrustInfo } from '../../components';
|
|
5
5
|
import { HeaderInfoButton } from '../../components/navigation/header-buttons';
|
|
6
6
|
import { concatTestID, useCredentialListExpandedCard } from '../../utils';
|
|
7
7
|
import { TouchableOpacity } from '../accessibility';
|
|
@@ -73,9 +73,9 @@ export const HistoryDetailsView = ({
|
|
|
73
73
|
style: [styles.section, {
|
|
74
74
|
backgroundColor: colorScheme.white
|
|
75
75
|
}]
|
|
76
|
-
}, data.header && 'entity' in data.header && /*#__PURE__*/React.createElement(
|
|
76
|
+
}, data.header && 'entity' in data.header && /*#__PURE__*/React.createElement(TrustInfo, _extends({}, data.header.entity, {
|
|
77
77
|
style: [styles.entity, {
|
|
78
|
-
|
|
78
|
+
borderBottomColor: colorScheme.background
|
|
79
79
|
}, data.header.entity.style]
|
|
80
80
|
})), data.header && 'credentialHeader' in data.header && /*#__PURE__*/React.createElement(CredentialHeader, _extends({}, data.header.credentialHeader, {
|
|
81
81
|
blur: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","Dimensions","StyleSheet","View","CredentialDetails","EntityDetails","HeaderInfoButton","concatTestID","useCredentialListExpandedCard","TouchableOpacity","BackButton","CredentialDetailsCardListItem","CredentialHeader","NextIcon","ScrollViewScreen","Typography","useAppColorScheme","DataItem","HistoryDetailsView","assets","data","headerButton","labels","onBackPressed","onInfoPressed","onImagePreview","testID","_assets$cards","_assets$cards2","colorScheme","expandedCredential","onHeaderPress","setInitialCredential","cardWidth","get","width","cards","length","id","credentialDetails","credentialId","credentialCard","card","moreInfoHeaderButton","_labels$infoButtonAcc","undefined","createElement","onPress","accessibilityLabel","infoButtonAccessibility","hasAssets","header","leftItem","rightItem","static","title","scrollView","style","styles","content","section","backgroundColor","white","_extends","entity","borderColor","background","credentialHeader","blur","attribute","date","value","action","last","label","valueColor","color","valueIcon","icon","text","preset","sectionHeader","relatedAssets","disabled","onPressed","accessory","assetsHeader","map","props","index","key","credential","expanded","lastItem","itemProps","headerPressable","toString","create","borderRadius","borderWidth","paddingHorizontal","paddingTop","marginBottom","borderBottomWidth","paddingBottom","marginTop","padding","marginHorizontal","marginVertical"],"sources":["history-details.tsx"],"sourcesContent":["import React, { ComponentType, FC, ReactElement, useEffect, useMemo } from 'react';\nimport { ColorValue, Dimensions, ImageSourcePropType, StyleSheet, View } from 'react-native';\n\nimport { CredentialDetails, CredentialDetailsProps, EntityDetails, EntityDetailsProps } from '../../components';\nimport { HeaderInfoButton } from '../../components/navigation/header-buttons';\nimport { CardLabels, concatTestID, useCredentialListExpandedCard } from '../../utils';\nimport { TouchableOpacity } from '../accessibility';\nimport { BackButton } from '../buttons';\nimport {\n CredentialDetailsCardListItem,\n CredentialDetailsCardListItemProps,\n CredentialHeader,\n CredentialHeaderProps,\n} from '../credential';\nimport { NextIcon } from '../icons';\nimport { ScrollViewScreen } from '../screens';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\nimport DataItem from './data-item';\n\nexport type HistoryDetailsLabels = {\n credentialCard: CardLabels;\n data: {\n date: string;\n action: string;\n };\n infoButtonAccessibility?: string;\n relatedAssets: string;\n title: string;\n};\n\ntype CredentialDetails = Omit<\n CredentialDetailsProps,\n 'expanded' | 'labels' | 'lastItem' | 'onHeaderPress' | 'onImagePreview'\n>;\n\ntype CredentialCard = Omit<\n CredentialDetailsCardListItemProps,\n 'expanded' | 'labels' | 'lastItem' | 'onHeaderPress' | 'onImagePreview'\n> & {\n /** default: true */\n headerPressable?: boolean;\n};\n\nexport type HistoryDetailsViewProps = {\n assets?: {\n header?: CredentialHeaderProps & {\n onPressed?: () => void;\n };\n cards?: (\n | {\n credentialDetails: CredentialDetails;\n }\n | {\n credentialCard: CredentialCard;\n }\n )[];\n };\n data: {\n header?:\n | {\n entity: EntityDetailsProps;\n }\n | {\n credentialHeader: CredentialHeaderProps;\n };\n date: string;\n action: {\n icon: ComponentType<any> | ReactElement;\n label: string;\n color: ColorValue;\n testID?: string;\n };\n };\n headerButton?: ReactElement;\n labels: HistoryDetailsLabels;\n onBackPressed: () => void;\n onInfoPressed?: () => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n testID: string;\n};\n\nexport const HistoryDetailsView: FC<HistoryDetailsViewProps> = ({\n assets,\n data,\n headerButton,\n labels,\n onBackPressed,\n onInfoPressed,\n onImagePreview,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const { expandedCredential, onHeaderPress, setInitialCredential } = useCredentialListExpandedCard();\n const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);\n\n // Expand the first credential\n useEffect(() => {\n if (assets?.cards && assets.cards.length > 0) {\n let id =\n 'credentialDetails' in assets.cards[0]\n ? assets.cards[0].credentialDetails.credentialId\n : assets.cards[0].credentialCard.card.credentialId;\n if (id) {\n setInitialCredential(id);\n }\n }\n }, [assets?.cards, setInitialCredential]);\n\n const moreInfoHeaderButton = useMemo(() => {\n if (headerButton) {\n return headerButton;\n }\n\n if (!onInfoPressed) {\n return undefined;\n }\n\n return (\n <HeaderInfoButton\n onPress={onInfoPressed}\n testID={concatTestID(testID, 'header', 'info')}\n accessibilityLabel={labels.infoButtonAccessibility ?? ''}\n />\n );\n }, [headerButton, labels.infoButtonAccessibility, onInfoPressed, testID]);\n\n const hasAssets = assets && (assets.header || assets.cards?.length);\n\n return (\n <ScrollViewScreen\n header={{\n leftItem: <BackButton onPress={onBackPressed} testID={concatTestID(testID, 'header', 'back')} />,\n rightItem: moreInfoHeaderButton,\n static: true,\n title: labels.title,\n }}\n scrollView={{\n style: styles.content,\n }}\n testID={testID}>\n <View style={[styles.section, { backgroundColor: colorScheme.white }]}>\n {data.header && 'entity' in data.header && (\n <EntityDetails\n {...data.header.entity}\n style={[styles.entity, { borderColor: colorScheme.background }, data.header.entity.style]}\n />\n )}\n {data.header && 'credentialHeader' in data.header && (\n <CredentialHeader\n {...data.header.credentialHeader}\n blur={false}\n style={[styles.header, { borderColor: colorScheme.background }, data.header.credentialHeader.style]}\n />\n )}\n <DataItem attribute={labels.data.date} value={data.date} />\n <DataItem\n attribute={labels.data.action}\n last\n testID={data.action.testID}\n value={data.action.label}\n valueColor={data.action.color}\n valueIcon={data.action.icon}\n />\n </View>\n\n {hasAssets && (\n <Typography color={colorScheme.text} preset=\"m\" style={styles.sectionHeader}>\n {labels.relatedAssets}\n </Typography>\n )}\n\n {assets?.header && (\n <TouchableOpacity disabled={!assets.header.onPressed} onPress={assets.header.onPressed}>\n <CredentialHeader\n {...assets.header}\n accessory={assets.header.onPressed ? <NextIcon color={colorScheme.text} /> : undefined}\n blur={false}\n style={[styles.assetsHeader, assets.header.style]}\n />\n </TouchableOpacity>\n )}\n {assets?.cards?.map((props, index, { length }) => {\n if ('credentialDetails' in props) {\n return (\n <View key={props.credentialDetails.credentialId} style={styles.credential}>\n <CredentialDetails\n {...props.credentialDetails}\n expanded={expandedCredential === props.credentialDetails.credentialId}\n labels={labels.credentialCard}\n lastItem={index === length - 1}\n onHeaderPress={onHeaderPress}\n onImagePreview={onImagePreview}\n />\n </View>\n );\n } else {\n const itemProps = {\n ...props.credentialCard,\n card: {\n ...props.credentialCard.card,\n onHeaderPress: props.credentialCard.headerPressable === false ? undefined : onHeaderPress,\n width: cardWidth,\n },\n };\n return (\n <View key={index.toString()} style={styles.credential}>\n <CredentialDetailsCardListItem\n {...itemProps}\n expanded={expandedCredential === props.credentialCard.card.credentialId}\n lastItem={index === length - 1}\n onImagePreview={onImagePreview}\n />\n </View>\n );\n }\n })}\n </ScrollViewScreen>\n );\n};\n\nconst styles = StyleSheet.create({\n assetsHeader: {\n borderRadius: 8,\n borderWidth: 0,\n },\n content: {\n paddingHorizontal: 16,\n paddingTop: 12,\n },\n credential: {\n marginBottom: 4,\n },\n entity: {\n borderBottomWidth: 1,\n paddingBottom: 8,\n },\n header: {\n borderBottomWidth: 1,\n marginTop: -8,\n paddingBottom: 12,\n paddingHorizontal: 0,\n },\n section: {\n borderRadius: 8,\n borderWidth: 0,\n marginBottom: 12,\n padding: 12,\n },\n sectionHeader: {\n marginHorizontal: 4,\n marginVertical: 16,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","Dimensions","StyleSheet","View","CredentialDetails","TrustInfo","HeaderInfoButton","concatTestID","useCredentialListExpandedCard","TouchableOpacity","BackButton","CredentialDetailsCardListItem","CredentialHeader","NextIcon","ScrollViewScreen","Typography","useAppColorScheme","DataItem","HistoryDetailsView","assets","data","headerButton","labels","onBackPressed","onInfoPressed","onImagePreview","testID","_assets$cards","_assets$cards2","colorScheme","expandedCredential","onHeaderPress","setInitialCredential","cardWidth","get","width","cards","length","id","credentialDetails","credentialId","credentialCard","card","moreInfoHeaderButton","_labels$infoButtonAcc","undefined","createElement","onPress","accessibilityLabel","infoButtonAccessibility","hasAssets","header","leftItem","rightItem","static","title","scrollView","style","styles","content","section","backgroundColor","white","_extends","entity","borderBottomColor","background","credentialHeader","blur","borderColor","attribute","date","value","action","last","label","valueColor","color","valueIcon","icon","text","preset","sectionHeader","relatedAssets","disabled","onPressed","accessory","assetsHeader","map","props","index","key","credential","expanded","lastItem","itemProps","headerPressable","toString","create","borderRadius","borderWidth","paddingHorizontal","paddingTop","marginBottom","borderBottomWidth","paddingBottom","marginTop","padding","marginHorizontal","marginVertical"],"sources":["history-details.tsx"],"sourcesContent":["import React, { ComponentType, FC, ReactElement, useEffect, useMemo } from 'react';\nimport { ColorValue, Dimensions, ImageSourcePropType, StyleSheet, View } from 'react-native';\n\nimport { CredentialDetails, CredentialDetailsProps, TrustInfo, TrustInfoProps } from '../../components';\nimport { HeaderInfoButton } from '../../components/navigation/header-buttons';\nimport { CardLabels, concatTestID, useCredentialListExpandedCard } from '../../utils';\nimport { TouchableOpacity } from '../accessibility';\nimport { BackButton } from '../buttons';\nimport {\n CredentialDetailsCardListItem,\n CredentialDetailsCardListItemProps,\n CredentialHeader,\n CredentialHeaderProps,\n} from '../credential';\nimport { NextIcon } from '../icons';\nimport { ScrollViewScreen } from '../screens';\nimport { Typography } from '../text';\nimport { useAppColorScheme } from '../theme';\nimport DataItem from './data-item';\n\nexport type HistoryDetailsLabels = {\n credentialCard: CardLabels;\n data: {\n date: string;\n action: string;\n };\n infoButtonAccessibility?: string;\n relatedAssets: string;\n title: string;\n};\n\ntype CredentialDetails = Omit<\n CredentialDetailsProps,\n 'expanded' | 'labels' | 'lastItem' | 'onHeaderPress' | 'onImagePreview'\n>;\n\ntype CredentialCard = Omit<\n CredentialDetailsCardListItemProps,\n 'expanded' | 'labels' | 'lastItem' | 'onHeaderPress' | 'onImagePreview'\n> & {\n /** default: true */\n headerPressable?: boolean;\n};\n\nexport type HistoryDetailsViewProps = {\n assets?: {\n header?: CredentialHeaderProps & {\n onPressed?: () => void;\n };\n cards?: (\n | {\n credentialDetails: CredentialDetails;\n }\n | {\n credentialCard: CredentialCard;\n }\n )[];\n };\n data: {\n header?:\n | {\n entity: TrustInfoProps;\n }\n | {\n credentialHeader: CredentialHeaderProps;\n };\n date: string;\n action: {\n icon: ComponentType<any> | ReactElement;\n label: string;\n color: ColorValue;\n testID?: string;\n };\n };\n headerButton?: ReactElement;\n labels: HistoryDetailsLabels;\n onBackPressed: () => void;\n onInfoPressed?: () => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n testID: string;\n};\n\nexport const HistoryDetailsView: FC<HistoryDetailsViewProps> = ({\n assets,\n data,\n headerButton,\n labels,\n onBackPressed,\n onInfoPressed,\n onImagePreview,\n testID,\n}) => {\n const colorScheme = useAppColorScheme();\n const { expandedCredential, onHeaderPress, setInitialCredential } = useCredentialListExpandedCard();\n const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);\n\n // Expand the first credential\n useEffect(() => {\n if (assets?.cards && assets.cards.length > 0) {\n let id =\n 'credentialDetails' in assets.cards[0]\n ? assets.cards[0].credentialDetails.credentialId\n : assets.cards[0].credentialCard.card.credentialId;\n if (id) {\n setInitialCredential(id);\n }\n }\n }, [assets?.cards, setInitialCredential]);\n\n const moreInfoHeaderButton = useMemo(() => {\n if (headerButton) {\n return headerButton;\n }\n\n if (!onInfoPressed) {\n return undefined;\n }\n\n return (\n <HeaderInfoButton\n onPress={onInfoPressed}\n testID={concatTestID(testID, 'header', 'info')}\n accessibilityLabel={labels.infoButtonAccessibility ?? ''}\n />\n );\n }, [headerButton, labels.infoButtonAccessibility, onInfoPressed, testID]);\n\n const hasAssets = assets && (assets.header || assets.cards?.length);\n\n return (\n <ScrollViewScreen\n header={{\n leftItem: <BackButton onPress={onBackPressed} testID={concatTestID(testID, 'header', 'back')} />,\n rightItem: moreInfoHeaderButton,\n static: true,\n title: labels.title,\n }}\n scrollView={{\n style: styles.content,\n }}\n testID={testID}>\n <View style={[styles.section, { backgroundColor: colorScheme.white }]}>\n {data.header && 'entity' in data.header && (\n <TrustInfo\n {...data.header.entity}\n style={[styles.entity, { borderBottomColor: colorScheme.background }, data.header.entity.style]}\n />\n )}\n {data.header && 'credentialHeader' in data.header && (\n <CredentialHeader\n {...data.header.credentialHeader}\n blur={false}\n style={[styles.header, { borderColor: colorScheme.background }, data.header.credentialHeader.style]}\n />\n )}\n <DataItem attribute={labels.data.date} value={data.date} />\n <DataItem\n attribute={labels.data.action}\n last\n testID={data.action.testID}\n value={data.action.label}\n valueColor={data.action.color}\n valueIcon={data.action.icon}\n />\n </View>\n\n {hasAssets && (\n <Typography color={colorScheme.text} preset=\"m\" style={styles.sectionHeader}>\n {labels.relatedAssets}\n </Typography>\n )}\n\n {assets?.header && (\n <TouchableOpacity disabled={!assets.header.onPressed} onPress={assets.header.onPressed}>\n <CredentialHeader\n {...assets.header}\n accessory={assets.header.onPressed ? <NextIcon color={colorScheme.text} /> : undefined}\n blur={false}\n style={[styles.assetsHeader, assets.header.style]}\n />\n </TouchableOpacity>\n )}\n {assets?.cards?.map((props, index, { length }) => {\n if ('credentialDetails' in props) {\n return (\n <View key={props.credentialDetails.credentialId} style={styles.credential}>\n <CredentialDetails\n {...props.credentialDetails}\n expanded={expandedCredential === props.credentialDetails.credentialId}\n labels={labels.credentialCard}\n lastItem={index === length - 1}\n onHeaderPress={onHeaderPress}\n onImagePreview={onImagePreview}\n />\n </View>\n );\n } else {\n const itemProps = {\n ...props.credentialCard,\n card: {\n ...props.credentialCard.card,\n onHeaderPress: props.credentialCard.headerPressable === false ? undefined : onHeaderPress,\n width: cardWidth,\n },\n };\n return (\n <View key={index.toString()} style={styles.credential}>\n <CredentialDetailsCardListItem\n {...itemProps}\n expanded={expandedCredential === props.credentialCard.card.credentialId}\n lastItem={index === length - 1}\n onImagePreview={onImagePreview}\n />\n </View>\n );\n }\n })}\n </ScrollViewScreen>\n );\n};\n\nconst styles = StyleSheet.create({\n assetsHeader: {\n borderRadius: 8,\n borderWidth: 0,\n },\n content: {\n paddingHorizontal: 16,\n paddingTop: 12,\n },\n credential: {\n marginBottom: 4,\n },\n entity: {\n borderBottomWidth: 1,\n paddingBottom: 8,\n },\n header: {\n borderBottomWidth: 1,\n marginTop: -8,\n paddingBottom: 12,\n paddingHorizontal: 0,\n },\n section: {\n borderRadius: 8,\n borderWidth: 0,\n marginBottom: 12,\n padding: 12,\n },\n sectionHeader: {\n marginHorizontal: 4,\n marginVertical: 16,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { StyleSheet, View } from 'react-native';
|
|
4
|
+
import ListItemView from '../list/list-item';
|
|
4
5
|
import { useAppColorScheme } from '../theme/color-scheme-context';
|
|
5
|
-
import HistoryItemView from './history-item';
|
|
6
6
|
|
|
7
7
|
// component used on the history section lists (Settings->History, CredentialDetail->History)
|
|
8
8
|
// https://www.figma.com/file/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?type=design&node-id=1246-51813&mode=dev
|
|
@@ -17,7 +17,7 @@ const HistorySectionListItem = ({
|
|
|
17
17
|
style: [styles.item, first && styles.first, last && styles.last, {
|
|
18
18
|
backgroundColor: colorScheme.white
|
|
19
19
|
}]
|
|
20
|
-
}, /*#__PURE__*/React.createElement(
|
|
20
|
+
}, /*#__PURE__*/React.createElement(ListItemView, _extends({
|
|
21
21
|
last: last
|
|
22
22
|
}, props)));
|
|
23
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","ListItemView","useAppColorScheme","HistorySectionListItem","first","last","props","colorScheme","createElement","style","styles","item","backgroundColor","white","_extends","create","borderTopLeftRadius","borderTopRightRadius","marginTop","paddingTop","paddingHorizontal","borderBottomLeftRadius","borderBottomRightRadius","marginBottom","paddingBottom"],"sources":["history-section-list-item.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport ListItemView, { ListItemViewProps } from '../list/list-item';\nimport { useAppColorScheme } from '../theme/color-scheme-context';\n\n// component used on the history section lists (Settings->History, CredentialDetail->History)\n// https://www.figma.com/file/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?type=design&node-id=1246-51813&mode=dev\n\nexport interface HistorySectionListItemProps extends ListItemViewProps {\n first?: boolean;\n}\n\nconst HistorySectionListItem: FC<HistorySectionListItemProps> = ({ first, last, ...props }) => {\n const colorScheme = useAppColorScheme();\n return (\n <View style={[styles.item, first && styles.first, last && styles.last, { backgroundColor: colorScheme.white }]}>\n <ListItemView last={last} {...props} />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n first: {\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n marginTop: 8,\n paddingTop: 12,\n },\n item: {\n paddingHorizontal: 12,\n },\n last: {\n borderBottomLeftRadius: 20,\n borderBottomRightRadius: 20,\n marginBottom: 12,\n paddingBottom: 12,\n },\n});\n\nexport default HistorySectionListItem;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,OAAOC,YAAY,MAA6B,mBAAmB;AACnE,SAASC,iBAAiB,QAAQ,+BAA+B;;AAEjE;AACA;;AAMA,MAAMC,sBAAuD,GAAGA,CAAC;EAAEC,KAAK;EAAEC,IAAI;EAAE,GAAGC;AAAM,CAAC,KAAK;EAC7F,MAAMC,WAAW,GAAGL,iBAAiB,CAAC,CAAC;EACvC,oBACEJ,KAAA,CAAAU,aAAA,CAACR,IAAI;IAACS,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAEP,KAAK,IAAIM,MAAM,CAACN,KAAK,EAAEC,IAAI,IAAIK,MAAM,CAACL,IAAI,EAAE;MAAEO,eAAe,EAAEL,WAAW,CAACM;IAAM,CAAC;EAAE,gBAC7Gf,KAAA,CAAAU,aAAA,CAACP,YAAY,EAAAa,QAAA;IAACT,IAAI,EAAEA;EAAK,GAAKC,KAAK,CAAG,CAClC,CAAC;AAEX,CAAC;AAED,MAAMI,MAAM,GAAGX,UAAU,CAACgB,MAAM,CAAC;EAC/BX,KAAK,EAAE;IACLY,mBAAmB,EAAE,EAAE;IACvBC,oBAAoB,EAAE,EAAE;IACxBC,SAAS,EAAE,CAAC;IACZC,UAAU,EAAE;EACd,CAAC;EACDR,IAAI,EAAE;IACJS,iBAAiB,EAAE;EACrB,CAAC;EACDf,IAAI,EAAE;IACJgB,sBAAsB,EAAE,EAAE;IAC1BC,uBAAuB,EAAE,EAAE;IAC3BC,YAAY,EAAE,EAAE;IAChBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC;AAEF,eAAerB,sBAAsB","ignoreList":[]}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import DataItem from './data-item';
|
|
2
|
-
import HistoryItemView from './history-item';
|
|
3
2
|
import HistorySectionHeaderView from './history-section-header';
|
|
4
3
|
import HistorySectionListItem from './history-section-list-item';
|
|
5
4
|
export * from './history-details';
|
|
6
5
|
export { DataItem };
|
|
7
|
-
export { HistoryItemView };
|
|
8
6
|
export { HistorySectionHeaderView };
|
|
9
7
|
export { HistorySectionListItem };
|
|
10
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DataItem","
|
|
1
|
+
{"version":3,"names":["DataItem","HistorySectionHeaderView","HistorySectionListItem"],"sources":["index.ts"],"sourcesContent":["import type { DataItemProps } from './data-item';\nimport DataItem from './data-item';\nimport HistorySectionHeaderView from './history-section-header';\nimport type { HistorySectionListItemProps } from './history-section-list-item';\nimport HistorySectionListItem from './history-section-list-item';\n\nexport * from './history-details';\nexport { DataItem, DataItemProps };\nexport { HistorySectionHeaderView };\nexport { HistorySectionListItem, HistorySectionListItemProps };\n"],"mappings":"AACA,OAAOA,QAAQ,MAAM,aAAa;AAClC,OAAOC,wBAAwB,MAAM,0BAA0B;AAE/D,OAAOC,sBAAsB,MAAM,6BAA6B;AAEhE,cAAc,mBAAmB;AACjC,SAASF,QAAQ;AACjB,SAASC,wBAAwB;AACjC,SAASC,sBAAsB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Svg","Path","MailIcon","color","props","createElement","_extends","fill","height","viewBox","width","d","opacity","PhoneIcon"],"sources":["contact.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport Svg, { Path,SvgProps } from 'react-native-svg';\n\nexport const MailIcon: FC<SvgProps> = ({ color, ...props }) => {\n return (\n <Svg fill=\"none\" height={12} viewBox=\"0 0 17 12\" width={17} {...props}>\n <Path\n d=\"M8.244 6.651c-.223 0-.442-.093-.656-.28L.758.355C1.124.118 1.587 0 2.147 0H14.35c.56 0 1.02.118 1.38.355L8.9 6.371c-.21.187-.428.28-.656.28zM.178 10.678a2.155 2.155 0 01-.13-.438A3.038 3.038 0 010 9.666V2.119c0-.237.016-.44.048-.608.036-.169.075-.287.116-.356l5.072 4.471-5.058 5.052zm1.763 1.107c-.25 0-.474-.027-.67-.082a1.553 1.553 0 01-.478-.219l5.202-5.202.998.889c.2.173.406.305.615.396.21.087.422.13.636.13.214 0 .426-.043.636-.13.214-.09.421-.223.622-.396l.998-.889 5.202 5.202c-.127.091-.29.164-.485.22a2.42 2.42 0 01-.663.081H1.94zm14.376-1.107L11.26 5.626l5.072-4.47c.037.068.073.186.11.355.036.168.054.371.054.608v7.547c0 .219-.018.41-.055.574-.032.164-.073.31-.123.438z\"\n fill={color}\n opacity={0.9}\n />\n </Svg>\n );\n};\n\nexport const PhoneIcon: FC<SvgProps> = ({ color, ...props }) => {\n return (\n <Svg fill=\"none\" height={13} viewBox=\"0 0 13 13\" width={13} {...props}>\n <Path\n d=\"M3.5 9.208c-.67-.665-1.27-1.36-1.798-2.085A11.126 11.126 0 01.458 4.956C.153 4.236 0 3.552 0 2.906c0-.43.073-.83.219-1.204.15-.374.367-.697.65-.97.2-.192.425-.36.676-.506C1.8.076 2.044 0 2.276 0a.69.69 0 01.486.198c.141.132.294.312.458.54l1.148 1.6c.128.182.217.346.267.492a1.3 1.3 0 01.075.424c0 .114-.016.22-.048.321-.032.1-.091.226-.178.376l-.642 1.1a20.5 20.5 0 01-.075.137.3.3 0 00-.028.124c0 .054.007.107.02.157.019.05.037.093.055.13.274.547.746 1.155 1.415 1.825.324.323.657.62.999.888.341.265.642.456.902.575.064.027.12.05.17.068a.732.732 0 00.302.007.93.93 0 00.157-.075l1.094-.602c.177-.096.319-.157.423-.184.11-.032.217-.048.322-.048.123 0 .241.023.355.068.119.041.283.135.492.28l1.668 1.197c.224.16.383.307.479.444.1.137.15.278.15.424 0 .187-.05.387-.15.601-.096.215-.27.463-.52.745a2.76 2.76 0 01-.964.69 3.086 3.086 0 01-1.257.254c-.648 0-1.333-.155-2.058-.465a11.295 11.295 0 01-2.188-1.265A17.799 17.799 0 013.5 9.208z\"\n fill={color}\n opacity={0.9}\n />\n </Svg>\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,OAAOC,GAAG,IAAIC,IAAI,
|
|
1
|
+
{"version":3,"names":["React","Svg","Path","MailIcon","color","props","createElement","_extends","fill","height","viewBox","width","d","opacity","PhoneIcon"],"sources":["contact.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport Svg, { Path, SvgProps } from 'react-native-svg';\n\nexport const MailIcon: FC<SvgProps> = ({ color, ...props }) => {\n return (\n <Svg fill=\"none\" height={12} viewBox=\"0 0 17 12\" width={17} {...props}>\n <Path\n d=\"M8.244 6.651c-.223 0-.442-.093-.656-.28L.758.355C1.124.118 1.587 0 2.147 0H14.35c.56 0 1.02.118 1.38.355L8.9 6.371c-.21.187-.428.28-.656.28zM.178 10.678a2.155 2.155 0 01-.13-.438A3.038 3.038 0 010 9.666V2.119c0-.237.016-.44.048-.608.036-.169.075-.287.116-.356l5.072 4.471-5.058 5.052zm1.763 1.107c-.25 0-.474-.027-.67-.082a1.553 1.553 0 01-.478-.219l5.202-5.202.998.889c.2.173.406.305.615.396.21.087.422.13.636.13.214 0 .426-.043.636-.13.214-.09.421-.223.622-.396l.998-.889 5.202 5.202c-.127.091-.29.164-.485.22a2.42 2.42 0 01-.663.081H1.94zm14.376-1.107L11.26 5.626l5.072-4.47c.037.068.073.186.11.355.036.168.054.371.054.608v7.547c0 .219-.018.41-.055.574-.032.164-.073.31-.123.438z\"\n fill={color}\n opacity={0.9}\n />\n </Svg>\n );\n};\n\nexport const PhoneIcon: FC<SvgProps> = ({ color, ...props }) => {\n return (\n <Svg fill=\"none\" height={13} viewBox=\"0 0 13 13\" width={13} {...props}>\n <Path\n d=\"M3.5 9.208c-.67-.665-1.27-1.36-1.798-2.085A11.126 11.126 0 01.458 4.956C.153 4.236 0 3.552 0 2.906c0-.43.073-.83.219-1.204.15-.374.367-.697.65-.97.2-.192.425-.36.676-.506C1.8.076 2.044 0 2.276 0a.69.69 0 01.486.198c.141.132.294.312.458.54l1.148 1.6c.128.182.217.346.267.492a1.3 1.3 0 01.075.424c0 .114-.016.22-.048.321-.032.1-.091.226-.178.376l-.642 1.1a20.5 20.5 0 01-.075.137.3.3 0 00-.028.124c0 .054.007.107.02.157.019.05.037.093.055.13.274.547.746 1.155 1.415 1.825.324.323.657.62.999.888.341.265.642.456.902.575.064.027.12.05.17.068a.732.732 0 00.302.007.93.93 0 00.157-.075l1.094-.602c.177-.096.319-.157.423-.184.11-.032.217-.048.322-.048.123 0 .241.023.355.068.119.041.283.135.492.28l1.668 1.197c.224.16.383.307.479.444.1.137.15.278.15.424 0 .187-.05.387-.15.601-.096.215-.27.463-.52.745a2.76 2.76 0 01-.964.69 3.086 3.086 0 01-1.257.254c-.648 0-1.333-.155-2.058-.465a11.295 11.295 0 01-2.188-1.265A17.799 17.799 0 013.5 9.208z\"\n fill={color}\n opacity={0.9}\n />\n </Svg>\n );\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAc,OAAO;AACjC,OAAOC,GAAG,IAAIC,IAAI,QAAkB,kBAAkB;AAEtD,OAAO,MAAMC,QAAsB,GAAGA,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,KAAK;EAC7D,oBACEL,KAAA,CAAAM,aAAA,CAACL,GAAG,EAAAM,QAAA;IAACC,IAAI,EAAC,MAAM;IAACC,MAAM,EAAE,EAAG;IAACC,OAAO,EAAC,WAAW;IAACC,KAAK,EAAE;EAAG,GAAKN,KAAK,gBACnEL,KAAA,CAAAM,aAAA,CAACJ,IAAI;IACHU,CAAC,EAAC,4qBAA4qB;IAC9qBJ,IAAI,EAAEJ,KAAM;IACZS,OAAO,EAAE;EAAI,CACd,CACE,CAAC;AAEV,CAAC;AAED,OAAO,MAAMC,SAAuB,GAAGA,CAAC;EAAEV,KAAK;EAAE,GAAGC;AAAM,CAAC,KAAK;EAC9D,oBACEL,KAAA,CAAAM,aAAA,CAACL,GAAG,EAAAM,QAAA;IAACC,IAAI,EAAC,MAAM;IAACC,MAAM,EAAE,EAAG;IAACC,OAAO,EAAC,WAAW;IAACC,KAAK,EAAE;EAAG,GAAKN,KAAK,gBACnEL,KAAA,CAAAM,aAAA,CAACJ,IAAI;IACHU,CAAC,EAAC,w6BAAw6B;IAC16BJ,IAAI,EAAEJ,KAAM;IACZS,OAAO,EAAE;EAAI,CACd,CACE,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -46,7 +46,7 @@ export const CredentialWarningIcon = ({
|
|
|
46
46
|
}));
|
|
47
47
|
|
|
48
48
|
// https://www.figma.com/design/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?node-id=542-90920&m=dev
|
|
49
|
-
export const
|
|
49
|
+
export const CredentialNoticeInfoIcon = ({
|
|
50
50
|
...props
|
|
51
51
|
}) => {
|
|
52
52
|
const colorScheme = useAppColorScheme();
|