@if (connectionContext) { @if (selectedDefinition()) { } @else {

{{ 'XP.Xpert.Connectors' | translate: { Default: 'Connectors' } }}

@if (errorMessage(); as error) { } @else { }
@if (errorMessage()) { }
} } @else {
@if (errorMessage(); as error) {
{{ error }}
}
@if (loading() && definitions().length === 0) {
@for (card of skeletonCards; track card) {
}
} @else if (definitions().length === 0) {

{{ 'XP.Xpert.NoConnectorsAvailable' | translate: { Default: 'No connectors are currently available.' } }}

} @else if (filteredDefinitions().length === 0) {

{{ 'XP.Xpert.NoMatchingConnectors' | translate: { Default: 'No matching connectors found.' } }}

} @else {
@for (definition of filteredDefinitions(); track definition.provider) { @let binding = bindingFor(definition); @let status = statusLabelFor(binding);
@if (!binding) { @if (canManageWorkspace()) { } } @else if (binding.status === 'pending' && pendingAuthorizationUrl(binding)) { } @else if (binding.status === 'active' && canManageWorkspace()) { } @else if (canManageWorkspace() && binding.status !== 'active') { }
}
}
} @if (selectedDefinition(); as definition) { @let binding = bindingFor(definition); @let status = statusLabelFor(binding); @let authMethods = authMethodsFor(definition); @let authMethod = selectedAuthMethod(binding, definition); @let bindingAuthMethod = binding ? authMethodForBinding(definition, binding) : null; @let credentialForm = credentialFormFor(authMethod); @let authorizationPresentation = authorizationPresentationFor(bindingAuthMethod); @let authorizationLink = pendingAuthorizationUrl(binding);
@if (definition.icon; as icon) { } @else { }

{{ definition.label | i18n }}

{{ status.key | translate: { Default: status.defaultLabel } }}
@if (authorizationPresentation && binding?.status === 'pending' && authorizationLink) {

{{ authorizationPresentation.title | i18n }}

{{ authorizationPresentation.description | i18n }}

@if (isPolling(binding)) { {{ 'XP.Xpert.ConnectorAuthorizationPending' | translate: { Default: 'Waiting for authorization to complete.' } }} }
@if (binding.lastError) {
{{ binding.lastError }}
} } @else {

{{ descriptionFor(definition) | i18n }}

@if (definition.unavailable) { } @if (credentialForm?.integration; as integration) { } @if (binding?.authorizationMode === 'personal') {

{{ 'XP.Xpert.ConnectorWorkspaceMigration' | translate }}

} @if (binding) {
{{ 'XP.KEY_WORDS.Status' | translate: { Default: 'Status' } }} {{ status.key | translate: { Default: status.defaultLabel } }}
@if (binding.profile) {
{{ 'XP.Xpert.ConnectorConnectedAccount' | translate: { Default: 'Connected account' } }} {{ profileLabel(binding) }}
} @if (binding.authMethodId) {
{{ 'XP.Xpert.ConnectorAuthenticationMethod' | translate: { Default: 'Authentication method' } }} {{ binding.authMethodId }}
}
@if (binding.lastError) {
{{ binding.lastError }}
} } @if (binding?.status === 'pending') {
@if (authorizationLink) { } @if (isPolling(binding)) { {{ 'XP.Xpert.ConnectorAuthorizationPending' | translate: { Default: 'Waiting for authorization to complete.' } }} }
} @else if (canManageWorkspace() && binding?.status !== 'active') {
@if (authMethods.length > 1) { {{ 'XP.Xpert.ConnectorAuthenticationMethod' | translate: { Default: 'Authentication method' } }} @for (method of authMethods; track method.id) { {{ method.label | i18n }} } } @for (field of credentialFieldsFor(authMethod); track field.name) { {{ field.label | i18n }} @if (field.required) { } @if (field.description) { {{ field.description | i18n }} } @if ( fieldControl(binding, definition, field)?.touched && fieldControl(binding, definition, field)?.hasError('required') ) { {{ 'XP.Xpert.ConnectorCredentialRequired' | translate: { Default: 'This field is required.' } }} } } @if (credentialForm?.help; as help) { {{ help.label | i18n }} }
} @else if (!canManageWorkspace()) {
{{ 'XP.Xpert.ConnectorsReadonly' | translate }}
} }
}