@atlaskit/smart-card 26.29.0 → 26.31.0

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.
Files changed (220) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/extractors/common/context/extractAccessContext.js +11 -7
  3. package/dist/cjs/extractors/common/hostname/extractHostname.js +15 -0
  4. package/dist/cjs/i18n/cs.js +5 -0
  5. package/dist/cjs/i18n/da.js +3 -0
  6. package/dist/cjs/i18n/de.js +5 -0
  7. package/dist/cjs/i18n/en.js +16 -0
  8. package/dist/cjs/i18n/en_GB.js +16 -0
  9. package/dist/cjs/i18n/en_ZZ.js +16 -0
  10. package/dist/cjs/i18n/es.js +3 -0
  11. package/dist/cjs/i18n/fi.js +5 -0
  12. package/dist/cjs/i18n/fr.js +5 -0
  13. package/dist/cjs/i18n/hu.js +5 -0
  14. package/dist/cjs/i18n/it.js +5 -0
  15. package/dist/cjs/i18n/ja.js +5 -0
  16. package/dist/cjs/i18n/ko.js +5 -2
  17. package/dist/cjs/i18n/nb.js +5 -0
  18. package/dist/cjs/i18n/nl.js +5 -0
  19. package/dist/cjs/i18n/pl.js +5 -0
  20. package/dist/cjs/i18n/pt_BR.js +5 -0
  21. package/dist/cjs/i18n/ru.js +3 -0
  22. package/dist/cjs/i18n/sv.js +5 -0
  23. package/dist/cjs/i18n/th.js +5 -0
  24. package/dist/cjs/i18n/tr.js +5 -0
  25. package/dist/cjs/i18n/uk.js +5 -0
  26. package/dist/cjs/i18n/vi.js +5 -0
  27. package/dist/cjs/i18n/zh.js +5 -0
  28. package/dist/cjs/i18n/zh_TW.js +5 -0
  29. package/dist/cjs/messages.js +1 -1
  30. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +4 -5
  31. package/dist/cjs/utils/analytics/LinkAnalyticsContext.js +1 -3
  32. package/dist/cjs/utils/analytics/analytics.js +1 -1
  33. package/dist/cjs/utils/intl-utils/index.js +18 -0
  34. package/dist/cjs/utils/mocks.js +4 -3
  35. package/dist/cjs/view/BlockCard/views/ResolvedView.js +1 -2
  36. package/dist/cjs/view/BlockCard/views/flexible/FlexibleResolvedView.js +1 -2
  37. package/dist/cjs/view/EmbedCard/index.js +26 -6
  38. package/dist/cjs/view/EmbedCard/views/UnresolvedView.js +4 -0
  39. package/dist/cjs/view/EmbedCard/views/forbidden-view/index.js +89 -0
  40. package/dist/cjs/view/EmbedCard/views/forbidden-view/types.js +5 -0
  41. package/dist/cjs/view/EmbedCard/views/unresolved-view/index.js +70 -0
  42. package/dist/cjs/view/EmbedCard/views/unresolved-view/styled.js +20 -0
  43. package/dist/cjs/view/EmbedCard/views/unresolved-view/types.js +5 -0
  44. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +1 -2
  45. package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +6 -6
  46. package/dist/cjs/view/HoverCard/components/views/resolved/index.js +0 -3
  47. package/dist/cjs/view/LinkUrl/index.js +1 -1
  48. package/dist/es2019/extractors/common/context/extractAccessContext.js +12 -7
  49. package/dist/es2019/extractors/common/hostname/extractHostname.js +8 -0
  50. package/dist/es2019/i18n/cs.js +5 -0
  51. package/dist/es2019/i18n/da.js +3 -0
  52. package/dist/es2019/i18n/de.js +5 -0
  53. package/dist/es2019/i18n/en.js +16 -0
  54. package/dist/es2019/i18n/en_GB.js +16 -0
  55. package/dist/es2019/i18n/en_ZZ.js +16 -0
  56. package/dist/es2019/i18n/es.js +3 -0
  57. package/dist/es2019/i18n/fi.js +5 -0
  58. package/dist/es2019/i18n/fr.js +5 -0
  59. package/dist/es2019/i18n/hu.js +5 -0
  60. package/dist/es2019/i18n/it.js +5 -0
  61. package/dist/es2019/i18n/ja.js +5 -0
  62. package/dist/es2019/i18n/ko.js +5 -2
  63. package/dist/es2019/i18n/nb.js +5 -0
  64. package/dist/es2019/i18n/nl.js +5 -0
  65. package/dist/es2019/i18n/pl.js +5 -0
  66. package/dist/es2019/i18n/pt_BR.js +5 -0
  67. package/dist/es2019/i18n/ru.js +3 -0
  68. package/dist/es2019/i18n/sv.js +5 -0
  69. package/dist/es2019/i18n/th.js +5 -0
  70. package/dist/es2019/i18n/tr.js +5 -0
  71. package/dist/es2019/i18n/uk.js +5 -0
  72. package/dist/es2019/i18n/vi.js +5 -0
  73. package/dist/es2019/i18n/zh.js +5 -0
  74. package/dist/es2019/i18n/zh_TW.js +5 -0
  75. package/dist/es2019/messages.js +1 -1
  76. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +1 -2
  77. package/dist/es2019/utils/analytics/LinkAnalyticsContext.js +0 -1
  78. package/dist/es2019/utils/analytics/analytics.js +1 -1
  79. package/dist/es2019/utils/intl-utils/index.js +11 -0
  80. package/dist/es2019/utils/mocks.js +3 -0
  81. package/dist/es2019/view/BlockCard/views/ResolvedView.js +1 -2
  82. package/dist/es2019/view/BlockCard/views/flexible/FlexibleResolvedView.js +0 -1
  83. package/dist/es2019/view/EmbedCard/index.js +26 -6
  84. package/dist/es2019/view/EmbedCard/views/UnresolvedView.js +4 -0
  85. package/dist/es2019/view/EmbedCard/views/forbidden-view/index.js +79 -0
  86. package/dist/es2019/view/EmbedCard/views/forbidden-view/types.js +1 -0
  87. package/dist/es2019/view/EmbedCard/views/unresolved-view/index.js +59 -0
  88. package/dist/es2019/view/EmbedCard/views/unresolved-view/styled.js +28 -0
  89. package/dist/es2019/view/EmbedCard/views/unresolved-view/types.js +1 -0
  90. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +1 -2
  91. package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +6 -6
  92. package/dist/es2019/view/HoverCard/components/views/resolved/index.js +0 -2
  93. package/dist/es2019/view/LinkUrl/index.js +1 -1
  94. package/dist/esm/extractors/common/context/extractAccessContext.js +11 -7
  95. package/dist/esm/extractors/common/hostname/extractHostname.js +8 -0
  96. package/dist/esm/i18n/cs.js +5 -0
  97. package/dist/esm/i18n/da.js +3 -0
  98. package/dist/esm/i18n/de.js +5 -0
  99. package/dist/esm/i18n/en.js +16 -0
  100. package/dist/esm/i18n/en_GB.js +16 -0
  101. package/dist/esm/i18n/en_ZZ.js +16 -0
  102. package/dist/esm/i18n/es.js +3 -0
  103. package/dist/esm/i18n/fi.js +5 -0
  104. package/dist/esm/i18n/fr.js +5 -0
  105. package/dist/esm/i18n/hu.js +5 -0
  106. package/dist/esm/i18n/it.js +5 -0
  107. package/dist/esm/i18n/ja.js +5 -0
  108. package/dist/esm/i18n/ko.js +5 -2
  109. package/dist/esm/i18n/nb.js +5 -0
  110. package/dist/esm/i18n/nl.js +5 -0
  111. package/dist/esm/i18n/pl.js +5 -0
  112. package/dist/esm/i18n/pt_BR.js +5 -0
  113. package/dist/esm/i18n/ru.js +3 -0
  114. package/dist/esm/i18n/sv.js +5 -0
  115. package/dist/esm/i18n/th.js +5 -0
  116. package/dist/esm/i18n/tr.js +5 -0
  117. package/dist/esm/i18n/uk.js +5 -0
  118. package/dist/esm/i18n/vi.js +5 -0
  119. package/dist/esm/i18n/zh.js +5 -0
  120. package/dist/esm/i18n/zh_TW.js +5 -0
  121. package/dist/esm/messages.js +1 -1
  122. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +4 -5
  123. package/dist/esm/utils/analytics/LinkAnalyticsContext.js +1 -3
  124. package/dist/esm/utils/analytics/analytics.js +1 -1
  125. package/dist/esm/utils/intl-utils/index.js +11 -0
  126. package/dist/esm/utils/mocks.js +4 -3
  127. package/dist/esm/view/BlockCard/views/ResolvedView.js +1 -2
  128. package/dist/esm/view/BlockCard/views/flexible/FlexibleResolvedView.js +1 -2
  129. package/dist/esm/view/EmbedCard/index.js +26 -6
  130. package/dist/esm/view/EmbedCard/views/UnresolvedView.js +4 -0
  131. package/dist/esm/view/EmbedCard/views/forbidden-view/index.js +78 -0
  132. package/dist/esm/view/EmbedCard/views/forbidden-view/types.js +1 -0
  133. package/dist/esm/view/EmbedCard/views/unresolved-view/index.js +58 -0
  134. package/dist/esm/view/EmbedCard/views/unresolved-view/styled.js +9 -0
  135. package/dist/esm/view/EmbedCard/views/unresolved-view/types.js +1 -0
  136. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +1 -2
  137. package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +6 -6
  138. package/dist/esm/view/HoverCard/components/views/resolved/index.js +0 -3
  139. package/dist/esm/view/LinkUrl/index.js +1 -1
  140. package/dist/types/extractors/common/hostname/extractHostname.d.ts +2 -0
  141. package/dist/types/i18n/cs.d.ts +5 -0
  142. package/dist/types/i18n/da.d.ts +3 -0
  143. package/dist/types/i18n/de.d.ts +5 -0
  144. package/dist/types/i18n/en.d.ts +16 -0
  145. package/dist/types/i18n/en_GB.d.ts +16 -0
  146. package/dist/types/i18n/en_ZZ.d.ts +16 -0
  147. package/dist/types/i18n/es.d.ts +3 -0
  148. package/dist/types/i18n/fi.d.ts +5 -0
  149. package/dist/types/i18n/fr.d.ts +5 -0
  150. package/dist/types/i18n/hu.d.ts +5 -0
  151. package/dist/types/i18n/it.d.ts +5 -0
  152. package/dist/types/i18n/ja.d.ts +5 -0
  153. package/dist/types/i18n/ko.d.ts +3 -0
  154. package/dist/types/i18n/nb.d.ts +5 -0
  155. package/dist/types/i18n/nl.d.ts +5 -0
  156. package/dist/types/i18n/pl.d.ts +5 -0
  157. package/dist/types/i18n/pt_BR.d.ts +5 -0
  158. package/dist/types/i18n/ru.d.ts +3 -0
  159. package/dist/types/i18n/sv.d.ts +5 -0
  160. package/dist/types/i18n/th.d.ts +5 -0
  161. package/dist/types/i18n/tr.d.ts +5 -0
  162. package/dist/types/i18n/uk.d.ts +5 -0
  163. package/dist/types/i18n/vi.d.ts +5 -0
  164. package/dist/types/i18n/zh.d.ts +5 -0
  165. package/dist/types/i18n/zh_TW.d.ts +5 -0
  166. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +3 -5
  167. package/dist/types/state/hooks/useSmartLink.d.ts +2 -4
  168. package/dist/types/utils/analytics/LinkAnalyticsContext.d.ts +1 -1
  169. package/dist/types/utils/intl-utils/index.d.ts +3 -0
  170. package/dist/types/utils/mocks.d.ts +2 -4
  171. package/dist/types/view/BlockCard/views/ResolvedView.d.ts +1 -1
  172. package/dist/types/view/EmbedCard/views/UnresolvedView.d.ts +4 -0
  173. package/dist/types/view/EmbedCard/views/forbidden-view/index.d.ts +4 -0
  174. package/dist/types/view/EmbedCard/views/forbidden-view/types.d.ts +13 -0
  175. package/dist/types/view/EmbedCard/views/unresolved-view/index.d.ts +4 -0
  176. package/dist/types/view/EmbedCard/views/unresolved-view/styled.d.ts +4 -0
  177. package/dist/types/view/EmbedCard/views/unresolved-view/types.d.ts +25 -0
  178. package/dist/types/view/types.d.ts +1 -0
  179. package/dist/types-ts4.5/extractors/common/hostname/extractHostname.d.ts +2 -0
  180. package/dist/types-ts4.5/i18n/cs.d.ts +5 -0
  181. package/dist/types-ts4.5/i18n/da.d.ts +3 -0
  182. package/dist/types-ts4.5/i18n/de.d.ts +5 -0
  183. package/dist/types-ts4.5/i18n/en.d.ts +16 -0
  184. package/dist/types-ts4.5/i18n/en_GB.d.ts +16 -0
  185. package/dist/types-ts4.5/i18n/en_ZZ.d.ts +16 -0
  186. package/dist/types-ts4.5/i18n/es.d.ts +3 -0
  187. package/dist/types-ts4.5/i18n/fi.d.ts +5 -0
  188. package/dist/types-ts4.5/i18n/fr.d.ts +5 -0
  189. package/dist/types-ts4.5/i18n/hu.d.ts +5 -0
  190. package/dist/types-ts4.5/i18n/it.d.ts +5 -0
  191. package/dist/types-ts4.5/i18n/ja.d.ts +5 -0
  192. package/dist/types-ts4.5/i18n/ko.d.ts +3 -0
  193. package/dist/types-ts4.5/i18n/nb.d.ts +5 -0
  194. package/dist/types-ts4.5/i18n/nl.d.ts +5 -0
  195. package/dist/types-ts4.5/i18n/pl.d.ts +5 -0
  196. package/dist/types-ts4.5/i18n/pt_BR.d.ts +5 -0
  197. package/dist/types-ts4.5/i18n/ru.d.ts +3 -0
  198. package/dist/types-ts4.5/i18n/sv.d.ts +5 -0
  199. package/dist/types-ts4.5/i18n/th.d.ts +5 -0
  200. package/dist/types-ts4.5/i18n/tr.d.ts +5 -0
  201. package/dist/types-ts4.5/i18n/uk.d.ts +5 -0
  202. package/dist/types-ts4.5/i18n/vi.d.ts +5 -0
  203. package/dist/types-ts4.5/i18n/zh.d.ts +5 -0
  204. package/dist/types-ts4.5/i18n/zh_TW.d.ts +5 -0
  205. package/dist/types-ts4.5/state/analytics/useSmartLinkAnalytics.d.ts +3 -5
  206. package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +2 -4
  207. package/dist/types-ts4.5/utils/analytics/LinkAnalyticsContext.d.ts +1 -1
  208. package/dist/types-ts4.5/utils/intl-utils/index.d.ts +3 -0
  209. package/dist/types-ts4.5/utils/mocks.d.ts +2 -4
  210. package/dist/types-ts4.5/view/BlockCard/views/ResolvedView.d.ts +1 -1
  211. package/dist/types-ts4.5/view/EmbedCard/views/UnresolvedView.d.ts +4 -0
  212. package/dist/types-ts4.5/view/EmbedCard/views/forbidden-view/index.d.ts +4 -0
  213. package/dist/types-ts4.5/view/EmbedCard/views/forbidden-view/types.d.ts +13 -0
  214. package/dist/types-ts4.5/view/EmbedCard/views/unresolved-view/index.d.ts +4 -0
  215. package/dist/types-ts4.5/view/EmbedCard/views/unresolved-view/styled.d.ts +4 -0
  216. package/dist/types-ts4.5/view/EmbedCard/views/unresolved-view/types.d.ts +25 -0
  217. package/dist/types-ts4.5/view/types.d.ts +1 -0
  218. package/package.json +2 -1
  219. package/report.api.md +1 -6
  220. package/tmp/api-report-tmp.d.ts +2 -4
@@ -35,6 +35,7 @@ export default {
35
35
  'fabric.linking.delete': '删除',
36
36
  'fabric.linking.download': '下载',
37
37
  'fabric.linking.edit': '编辑',
38
+ 'fabric.linking.follow': '关注',
38
39
  'fabric.linking.forbidden_access': '您的访问已被禁止',
39
40
  'fabric.linking.forbidden_description': '您无权访问此预览。如果需要访问,请联系站点管理员。',
40
41
  'fabric.linking.go_back': '返回',
@@ -79,6 +80,8 @@ export default {
79
80
  'fabric.linking.restricted_link': '受限链接,请尝试其他帐户',
80
81
  'fabric.linking.retry': '重试',
81
82
  'fabric.linking.save': '保存',
83
+ 'fabric.linking.sent_on_absolute': '发送于 {context}',
84
+ 'fabric.linking.sent_on_relative': '{context}发送',
82
85
  'fabric.linking.srclink': '查看',
83
86
  'fabric.linking.srclinkunknown': '查看原件',
84
87
  'fabric.linking.status_change_load_error': '无法加载状态和转换',
@@ -86,10 +89,12 @@ export default {
86
89
  'fabric.linking.status_change_update_error': '无法更新状态',
87
90
  'fabric.linking.try_again': '请重试',
88
91
  'fabric.linking.try_another_account': '请尝试其他帐户',
92
+ 'fabric.linking.unassigned': '未分配',
89
93
  'fabric.linking.unauthorised_account_description': '您正在尝试通过链接预览私有 {context} 页面。我们建议您检查此 URL 或联系页面负责人。',
90
94
  'fabric.linking.unauthorised_account_description_no_provider': '您正在尝试通过链接预览私有页面。我们建议您检查此 URL 或联系页面负责人。',
91
95
  'fabric.linking.unauthorised_account_name': '无法显示私有 {context} 页面',
92
96
  'fabric.linking.unauthorised_account_name_no_provider': '无法显示私有页面',
97
+ 'fabric.linking.unfollow': '取消关注',
93
98
  'fabric.linking.unlink_account': '取消帐户链接',
94
99
  'fabric.linking.updated_by': '修改者:{context}',
95
100
  'fabric.linking.view': '查看'
@@ -35,6 +35,7 @@ export default {
35
35
  'fabric.linking.delete': '刪除',
36
36
  'fabric.linking.download': '下載',
37
37
  'fabric.linking.edit': '編輯',
38
+ 'fabric.linking.follow': '追蹤',
38
39
  'fabric.linking.forbidden_access': '您的存取遭拒',
39
40
  'fabric.linking.forbidden_description': '您沒有此預覽的存取權。如果您需要存取權,請連絡網站管理員。',
40
41
  'fabric.linking.go_back': '返回',
@@ -79,6 +80,8 @@ export default {
79
80
  'fabric.linking.restricted_link': '連結受到限制,請嘗試其他帳戶',
80
81
  'fabric.linking.retry': '重試',
81
82
  'fabric.linking.save': '儲存',
83
+ 'fabric.linking.sent_on_absolute': '傳送日期:{context}',
84
+ 'fabric.linking.sent_on_relative': '傳送時間:{context}',
82
85
  'fabric.linking.srclink': '使用以下檢視:',
83
86
  'fabric.linking.srclinkunknown': '檢視原始狀態',
84
87
  'fabric.linking.status_change_load_error': '我們無法載入狀態和轉換',
@@ -86,10 +89,12 @@ export default {
86
89
  'fabric.linking.status_change_update_error': '我們無法更新狀態',
87
90
  'fabric.linking.try_again': '再試一次',
88
91
  'fabric.linking.try_another_account': '使用其他帳戶嘗試',
92
+ 'fabric.linking.unassigned': '未指派',
89
93
  'fabric.linking.unauthorised_account_description': '您正在嘗試預覽私人 {context} 頁面的連結。建議您檢閱 URL 或連絡頁面擁有者。',
90
94
  'fabric.linking.unauthorised_account_description_no_provider': '您正在嘗試預覽私人頁面的連結。建議您檢閱 URL 或連絡頁面擁有者。',
91
95
  'fabric.linking.unauthorised_account_name': '無法顯示 {context} 的私人頁面',
92
96
  'fabric.linking.unauthorised_account_name_no_provider': '無法顯示私人頁面',
97
+ 'fabric.linking.unfollow': '取消追蹤',
93
98
  'fabric.linking.unlink_account': '取消帳戶的連結',
94
99
  'fabric.linking.updated_by': '修改者:{context}',
95
100
  'fabric.linking.view': '檢視'
@@ -494,7 +494,7 @@ export const messages = defineMessages({
494
494
  },
495
495
  request_access_pending_title_crossjoin: {
496
496
  id: 'fabric.linking.request_access_pending_title_crossjoin',
497
- defaultMessage: 'Access to {product} pending',
497
+ defaultMessage: 'Access to {product} is pending',
498
498
  description: 'Informs the user that their request to view this content is pending'
499
499
  },
500
500
  request_access_pending_description_crossjoin: {
@@ -242,7 +242,6 @@ export const useSmartLinkAnalytics = (url, _dispatchAnalytics, id, defaultLocati
242
242
  id,
243
243
  actionType,
244
244
  display,
245
- invokeType,
246
245
  extensionKey: overrideExtensionKey,
247
246
  definitionId,
248
247
  resourceType,
@@ -735,7 +734,7 @@ export const useSmartLinkAnalytics = (url, _dispatchAnalytics, id, defaultLocati
735
734
  * Removed in EDM-5153: This is an even from an experiment.
736
735
  * @deprecated
737
736
  */
738
- linkUpdated: props => {},
737
+ linkUpdated: () => {},
739
738
  /**
740
739
  * This fires a tracking event before an action invoke api call is made
741
740
  */
@@ -4,7 +4,6 @@ import { AnalyticsContext } from '@atlaskit/analytics-next';
4
4
  * Provides an analytics context to supply attributes to events based on a URL
5
5
  */
6
6
  export const LinkAnalyticsContext = ({
7
- url = '',
8
7
  display,
9
8
  id,
10
9
  children,
@@ -4,7 +4,7 @@ export const ANALYTICS_CHANNEL = 'media';
4
4
  export const context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card",
7
- packageVersion: "26.29.0"
7
+ packageVersion: "26.31.0"
8
8
  };
9
9
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -0,0 +1,11 @@
1
+ import { messages } from '../../messages';
2
+ export const toMessage = (defaultMessage, key) => {
3
+ try {
4
+ if (key !== undefined && key in messages) {
5
+ return messages[key];
6
+ }
7
+ return defaultMessage;
8
+ } catch {
9
+ return defaultMessage;
10
+ }
11
+ };
@@ -175,12 +175,15 @@ export const mocks = {
175
175
  };
176
176
  export const fakeResponse = () => Promise.resolve(mocks.success);
177
177
  export const fakeFactory = (implementation, implementationPost, implementationPrefetch) => class CustomClient extends CardClient {
178
+ // @ts-ignore
178
179
  async fetchData(url) {
179
180
  return await implementation(url);
180
181
  }
182
+ // @ts-ignore
181
183
  async postData() {
182
184
  return await implementationPost();
183
185
  }
186
+ // @ts-ignore
184
187
  async prefetchData() {
185
188
  return await implementationPrefetch();
186
189
  }
@@ -39,8 +39,7 @@ export const ResolvedView = ({
39
39
  lozenge,
40
40
  details = [],
41
41
  testId = 'block-card-resolved-view',
42
- showActions = true,
43
- isSupportTheming
42
+ showActions = true
44
43
  }) => {
45
44
  const resolvedMetadata = details.length > 0 ? jsx(MetadataList, {
46
45
  testId: testId ? `${testId}-meta` : undefined,
@@ -13,7 +13,6 @@ import { withFlexibleUIBlockCardStyle } from './utils/withFlexibleUIBlockCardSty
13
13
  * @see FlexibleCardProps
14
14
  */
15
15
  const FlexibleResolvedView = ({
16
- id,
17
16
  cardState,
18
17
  onClick,
19
18
  onError,
@@ -1,5 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
4
+ import { extractRequestAccessContextImproved } from '../../extractors/common/context/extractAccessContext';
3
5
  import { extractEmbedProps } from '../../extractors/embed';
4
6
  import { getEmptyJsonLd, getForbiddenJsonLd } from '../../utils/jsonld';
5
7
  import { extractInlineProps } from '../../extractors/inline';
@@ -13,6 +15,7 @@ import { EmbedCardNotFoundView } from './views/NotFoundView';
13
15
  import { EmbedCardResolvedView } from './views/ResolvedView';
14
16
  import { EmbedCardUnauthorisedView } from './views/UnauthorisedView';
15
17
  import { EmbedCardErroredView } from './views/ErroredView';
18
+ import ForbiddenView from './views/forbidden-view';
16
19
  export const EmbedCard = /*#__PURE__*/React.forwardRef(({
17
20
  url,
18
21
  cardState: {
@@ -37,7 +40,7 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
37
40
  onIframeFocus,
38
41
  iframeUrlType
39
42
  }, iframeRef) => {
40
- var _details$meta, _forbiddenViewProps$c;
43
+ var _details$meta, _forbiddenViewProps$c3;
41
44
  const data = details && details.data || getEmptyJsonLd();
42
45
  const meta = details && details.meta;
43
46
  const extensionKey = getExtensionKey(details);
@@ -119,11 +122,6 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
119
122
  }
120
123
  const forbiddenViewProps = extractEmbedProps(data, meta, platform);
121
124
  const cardMetadata = (_details$meta = details === null || details === void 0 ? void 0 : details.meta) !== null && _details$meta !== void 0 ? _details$meta : getForbiddenJsonLd().meta;
122
- const requestAccessContext = extractRequestAccessContext({
123
- jsonLd: cardMetadata,
124
- url,
125
- context: (_forbiddenViewProps$c = forbiddenViewProps.context) === null || _forbiddenViewProps$c === void 0 ? void 0 : _forbiddenViewProps$c.text
126
- });
127
125
  if (forbiddenViewProps.preview) {
128
126
  return /*#__PURE__*/React.createElement(EmbedCardResolvedView, _extends({}, forbiddenViewProps, {
129
127
  title: forbiddenViewProps.link,
@@ -134,6 +132,28 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
134
132
  ref: iframeRef
135
133
  }));
136
134
  }
135
+ if (getBooleanFF('platform.linking-platform.smart-card.cross-join')) {
136
+ var _forbiddenViewProps$c, _forbiddenViewProps$c2;
137
+ const requestAccessContext = extractRequestAccessContextImproved({
138
+ jsonLd: cardMetadata,
139
+ url,
140
+ product: (_forbiddenViewProps$c = (_forbiddenViewProps$c2 = forbiddenViewProps.context) === null || _forbiddenViewProps$c2 === void 0 ? void 0 : _forbiddenViewProps$c2.text) !== null && _forbiddenViewProps$c !== void 0 ? _forbiddenViewProps$c : ''
141
+ });
142
+ return /*#__PURE__*/React.createElement(ForbiddenView, {
143
+ context: forbiddenViewProps.context,
144
+ inheritDimensions: inheritDimensions,
145
+ isSelected: isSelected,
146
+ onAuthorise: handleAuthorize,
147
+ onClick: handleFrameClick,
148
+ requestAccessContext: requestAccessContext,
149
+ url: forbiddenViewProps.link
150
+ });
151
+ }
152
+ const requestAccessContext = extractRequestAccessContext({
153
+ jsonLd: cardMetadata,
154
+ url,
155
+ context: (_forbiddenViewProps$c3 = forbiddenViewProps.context) === null || _forbiddenViewProps$c3 === void 0 ? void 0 : _forbiddenViewProps$c3.text
156
+ });
137
157
  return /*#__PURE__*/React.createElement(EmbedCardForbiddenView, _extends({}, forbiddenViewProps, {
138
158
  isSelected: isSelected,
139
159
  onAuthorise: handleAuthorize,
@@ -7,6 +7,10 @@ import { fontSize } from '@atlaskit/theme/constants';
7
7
  import { FormattedMessage } from 'react-intl-next';
8
8
  import { messages } from '../../../messages';
9
9
  import { gs as gridSize } from '../../common/utils';
10
+ /**
11
+ * @deprecated {@link https://product-fabric.atlassian.net/browse/EDM-7977 Internal documentation for deprecation (no external access)}\
12
+ * @deprecated Replaced by unresolved-view
13
+ */
10
14
  export const EmbedCardUnresolvedView = ({
11
15
  image,
12
16
  title,
@@ -0,0 +1,79 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import Button from '@atlaskit/button';
3
+ import React, { useMemo } from 'react';
4
+ import { FormattedMessage } from 'react-intl-next';
5
+ import { messages } from '../../../../messages';
6
+ import { toMessage } from '../../../../utils/intl-utils';
7
+ import { LockImage } from '../../constants';
8
+ import UnresolvedView from '../unresolved-view';
9
+ const ForbiddenView = ({
10
+ context,
11
+ inheritDimensions,
12
+ isSelected,
13
+ onAuthorise,
14
+ onClick,
15
+ requestAccessContext,
16
+ testId = 'embed-card-forbidden-view',
17
+ url
18
+ }) => {
19
+ const {
20
+ accessType,
21
+ hostname,
22
+ titleMessageKey,
23
+ descriptiveMessageKey,
24
+ callToActionMessageKey,
25
+ action
26
+ } = requestAccessContext !== null && requestAccessContext !== void 0 ? requestAccessContext : {};
27
+ const values = useMemo(() => {
28
+ var _context$text;
29
+ const product = (_context$text = context === null || context === void 0 ? void 0 : context.text) !== null && _context$text !== void 0 ? _context$text : '';
30
+ return {
31
+ context: product,
32
+ product,
33
+ hostname: /*#__PURE__*/React.createElement("b", null, hostname)
34
+ };
35
+ }, [hostname, context === null || context === void 0 ? void 0 : context.text]);
36
+ const image = useMemo(() => {
37
+ var _context$image;
38
+ return (_context$image = context === null || context === void 0 ? void 0 : context.image) !== null && _context$image !== void 0 ? _context$image : LockImage;
39
+ }, [context === null || context === void 0 ? void 0 : context.image]);
40
+
41
+ /**
42
+ * if there is a request access context, but no action to perform, do not show any button.
43
+ * By default, a "Try another account" button shows, but with request access context, we don't
44
+ * want to encourage users to try another account, if their request is already pending, etc.
45
+ */
46
+ const button = useMemo(() => {
47
+ var _action$promise;
48
+ const onEmbedCardClick = (_action$promise = action === null || action === void 0 ? void 0 : action.promise) !== null && _action$promise !== void 0 ? _action$promise : onAuthorise;
49
+ if (!onEmbedCardClick) {
50
+ return null;
51
+ }
52
+ return /*#__PURE__*/React.createElement(Button, {
53
+ testId: `button-${(action === null || action === void 0 ? void 0 : action.id) || 'connect-other-account'}`,
54
+ appearance: "primary",
55
+ onClick: onEmbedCardClick,
56
+ isDisabled: accessType === 'PENDING_REQUEST_EXISTS'
57
+ }, /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, toMessage(messages.try_another_account, callToActionMessageKey), {
58
+ values: values
59
+ })));
60
+ }, [accessType, action === null || action === void 0 ? void 0 : action.id, action === null || action === void 0 ? void 0 : action.promise, callToActionMessageKey, onAuthorise, values]);
61
+ return /*#__PURE__*/React.createElement(UnresolvedView, {
62
+ icon: context === null || context === void 0 ? void 0 : context.icon,
63
+ image: image,
64
+ inheritDimensions: inheritDimensions,
65
+ isSelected: isSelected,
66
+ onClick: onClick,
67
+ testId: testId,
68
+ text: context === null || context === void 0 ? void 0 : context.text,
69
+ title: /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, toMessage(messages.invalid_permissions, titleMessageKey), {
70
+ values: values
71
+ })),
72
+ description: /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, toMessage(messages.invalid_permissions_description, descriptiveMessageKey), {
73
+ values: values
74
+ })),
75
+ button: button,
76
+ url: url
77
+ });
78
+ };
79
+ export default ForbiddenView;
@@ -0,0 +1,59 @@
1
+ /** @jsx jsx */
2
+ import LinkGlyph from '@atlaskit/icon/glyph/link';
3
+ import { jsx } from '@emotion/react';
4
+ import React, { useMemo } from 'react';
5
+ import { ExpandedFrame } from '../../components/ExpandedFrame';
6
+ import { ImageIcon } from '../../components/ImageIcon';
7
+ import { containerStyles, descriptionStyles, imageStyles, titleStyles } from './styled';
8
+ const UnresolvedView = ({
9
+ button,
10
+ description,
11
+ icon: iconUrlOrElement,
12
+ image,
13
+ inheritDimensions,
14
+ isSelected,
15
+ onClick,
16
+ testId,
17
+ text,
18
+ title,
19
+ url
20
+ }) => {
21
+ const icon = useMemo(() => {
22
+ if ( /*#__PURE__*/React.isValidElement(iconUrlOrElement)) {
23
+ return iconUrlOrElement;
24
+ }
25
+ return jsx(ImageIcon, {
26
+ src: typeof iconUrlOrElement === 'string' ? iconUrlOrElement : undefined,
27
+ default: jsx(LinkGlyph, {
28
+ label: "icon",
29
+ size: "small",
30
+ testId: "embed-card-fallback-icon"
31
+ })
32
+ });
33
+ }, [iconUrlOrElement]);
34
+ return jsx(ExpandedFrame, {
35
+ allowScrollBar: true,
36
+ frameStyle: "show",
37
+ href: url,
38
+ icon: icon,
39
+ inheritDimensions: inheritDimensions,
40
+ isSelected: isSelected,
41
+ onClick: onClick,
42
+ testId: testId,
43
+ text: text
44
+ }, jsx("div", {
45
+ css: containerStyles,
46
+ "data-testid": `${testId}-unresolved-container`
47
+ }, jsx("img", {
48
+ css: imageStyles,
49
+ "data-testid": `${testId}-unresolved-image`,
50
+ src: image
51
+ }), jsx("span", {
52
+ css: titleStyles,
53
+ "data-testid": `${testId}-unresolved-title`
54
+ }, title), jsx("span", {
55
+ css: descriptionStyles,
56
+ "data-testid": `${testId}-unresolved-description`
57
+ }, description), button));
58
+ };
59
+ export default UnresolvedView;
@@ -0,0 +1,28 @@
1
+ import { fontSize } from '@atlaskit/theme/constants';
2
+ import { css } from '@emotion/react';
3
+ import { gs } from '../../../common/utils';
4
+ export const containerStyles = css`
5
+ display: flex;
6
+ flex-direction: column;
7
+ align-items: center;
8
+ justify-content: center;
9
+ height: 100%;
10
+ `;
11
+ export const imageStyles = css`
12
+ max-height: ${gs(14)};
13
+ margin-bottom: ${gs(4)};
14
+ overflow: hidden;
15
+ `;
16
+ export const titleStyles = css`
17
+ font-size: ${gs(2.5)};
18
+ margin-bottom: ${gs(1.5)};
19
+ max-width: ${gs(50)};
20
+ text-align: center;
21
+ `;
22
+ export const descriptionStyles = css`
23
+ font-size: ${fontSize()};
24
+ margin-bottom: ${gs(2.5)};
25
+ text-align: center;
26
+ max-width: ${gs(50)};
27
+ line-height: ${gs(3)};
28
+ `;
@@ -51,8 +51,7 @@ const ActionGroup = ({
51
51
  size = SmartLinkSize.Medium,
52
52
  appearance,
53
53
  visibleButtonsNum = 2,
54
- onDropdownOpenChange,
55
- testId
54
+ onDropdownOpenChange
56
55
  }) => {
57
56
  const context = useFlexibleUiContext();
58
57
  const ui = useFlexibleUiOptionContext();
@@ -6,7 +6,7 @@ import { SmartLinkPosition, SmartLinkSize } from '../../../../../constants';
6
6
  import AtlaskitIcon from '../../common/atlaskit-icon';
7
7
  import ImageIcon from '../../common/image-icon';
8
8
  import { getIconSizeStyles, getIconWidth, getTruncateStyles } from '../../utils';
9
- const getPositionStyles = (size, position) => {
9
+ const getPositionStyles = position => {
10
10
  switch (position) {
11
11
  case SmartLinkPosition.Center:
12
12
  return css`
@@ -20,8 +20,8 @@ const getPositionStyles = (size, position) => {
20
20
  `;
21
21
  }
22
22
  };
23
- const getIconStyles = (size, position, width) => css`
24
- ${getPositionStyles(size, position)}
23
+ const getIconStyles = (position, width) => css`
24
+ ${getPositionStyles(position)}
25
25
  ${getIconSizeStyles(width)}
26
26
  `;
27
27
  const getCustomRenderStyles = value => css`
@@ -50,7 +50,7 @@ const renderDefaultIcon = (label, testId) => jsx(LinkIcon, {
50
50
  label: label,
51
51
  testId: `${testId}-default`
52
52
  });
53
- const renderImageIcon = (defaultIcon, icon, url, testId) => {
53
+ const renderImageIcon = (defaultIcon, url, testId) => {
54
54
  if (url) {
55
55
  return jsx(ImageIcon, {
56
56
  defaultIcon: defaultIcon,
@@ -79,10 +79,10 @@ const Icon = ({
79
79
  }) => {
80
80
  const element = useMemo(() => {
81
81
  const defaultIcon = renderDefaultIcon(label, testId);
82
- return (render === null || render === void 0 ? void 0 : render()) || renderImageIcon(defaultIcon, icon, url, testId) || renderAtlaskitIcon(icon, label, testId) || defaultIcon;
82
+ return (render === null || render === void 0 ? void 0 : render()) || renderImageIcon(defaultIcon, url, testId) || renderAtlaskitIcon(icon, label, testId) || defaultIcon;
83
83
  }, [icon, label, render, testId, url]);
84
84
  const width = getIconWidth(size);
85
- const styles = getIconStyles(size, position, width);
85
+ const styles = getIconStyles(position, width);
86
86
  const renderStyles = render ? getCustomRenderStyles(width) : undefined;
87
87
  return jsx("div", {
88
88
  css: [styles, renderStyles, overrideCss],
@@ -49,8 +49,6 @@ const HoverCardResolvedView = ({
49
49
  flexibleCardProps,
50
50
  titleBlockProps,
51
51
  analytics,
52
- id = '',
53
- url,
54
52
  cardState,
55
53
  cardActions = [],
56
54
  onActionClick,
@@ -8,7 +8,7 @@ import LinkWarningModal from './LinkWarningModal';
8
8
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
9
9
  const PACKAGE_DATA = {
10
10
  packageName: "@atlaskit/smart-card",
11
- packageVersion: "26.29.0",
11
+ packageVersion: "26.31.0",
12
12
  componentName: 'linkUrl'
13
13
  };
14
14
  const Link = withLinkClickedEvent('a');
@@ -3,6 +3,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  import { messages } from '../../../messages';
5
5
  import { ForbiddenAction } from '../../../view/BlockCard/actions/ForbiddenAction';
6
+ import extractHostname from '../hostname/extractHostname';
6
7
  export var extractRequestAccessContext = function extractRequestAccessContext(_ref) {
7
8
  var _jsonLd$requestAccess;
8
9
  var jsonLd = _ref.jsonLd,
@@ -50,9 +51,12 @@ export var extractRequestAccessContextImproved = function extractRequestAccessCo
50
51
  var jsonLd = _ref2.jsonLd,
51
52
  url = _ref2.url,
52
53
  product = _ref2.product;
54
+ var requestAccess = jsonLd !== null && jsonLd !== void 0 && jsonLd.requestAccess ? _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
55
+ hostname: extractHostname(url)
56
+ }) : undefined;
53
57
  switch (jsonLd === null || jsonLd === void 0 ? void 0 : (_jsonLd$requestAccess2 = jsonLd.requestAccess) === null || _jsonLd$requestAccess2 === void 0 ? void 0 : _jsonLd$requestAccess2.accessType) {
54
58
  case 'DIRECT_ACCESS':
55
- return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
59
+ return _objectSpread(_objectSpread({}, requestAccess), {}, {
56
60
  titleMessageKey: 'direct_access_title_crossjoin',
57
61
  descriptiveMessageKey: 'direct_access_description_crossjoin',
58
62
  callToActionMessageKey: 'direct_access_crossjoin',
@@ -63,7 +67,7 @@ export var extractRequestAccessContextImproved = function extractRequestAccessCo
63
67
  })
64
68
  });
65
69
  case 'REQUEST_ACCESS':
66
- return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
70
+ return _objectSpread(_objectSpread({}, requestAccess), {}, {
67
71
  titleMessageKey: 'default_no_access_title_crossjoin',
68
72
  descriptiveMessageKey: 'request_access_description_crossjoin',
69
73
  callToActionMessageKey: 'request_access_crossjoin',
@@ -72,7 +76,7 @@ export var extractRequestAccessContextImproved = function extractRequestAccessCo
72
76
  }, 'request_access', messages.request_access_crossjoin)
73
77
  });
74
78
  case 'PENDING_REQUEST_EXISTS':
75
- return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
79
+ return _objectSpread(_objectSpread({}, requestAccess), {}, {
76
80
  titleMessageKey: 'request_access_pending_title_crossjoin',
77
81
  descriptiveMessageKey: 'request_access_pending_description_crossjoin',
78
82
  callToActionMessageKey: 'request_access_pending_crossjoin',
@@ -81,12 +85,12 @@ export var extractRequestAccessContextImproved = function extractRequestAccessCo
81
85
  }, 'request_access_pending', messages.request_access_pending_crossjoin)
82
86
  });
83
87
  case 'DENIED_REQUEST_EXISTS':
84
- return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
88
+ return _objectSpread(_objectSpread({}, requestAccess), {}, {
85
89
  titleMessageKey: 'default_no_access_title_crossjoin',
86
90
  descriptiveMessageKey: 'request_denied_description_crossjoin'
87
91
  });
88
92
  case 'ACCESS_EXISTS':
89
- return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
93
+ return _objectSpread(_objectSpread({}, requestAccess), {}, {
90
94
  titleMessageKey: 'default_no_access_title_crossjoin',
91
95
  descriptiveMessageKey: 'access_exists_description_crossjoin',
92
96
  callToActionMessageKey: 'request_access_crossjoin',
@@ -95,11 +99,11 @@ export var extractRequestAccessContextImproved = function extractRequestAccessCo
95
99
  }, 'access_exists', messages.request_access_crossjoin)
96
100
  });
97
101
  case 'FORBIDDEN':
98
- return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
102
+ return _objectSpread(_objectSpread({}, requestAccess), {}, {
99
103
  titleMessageKey: 'forbidden_title_crossjoin',
100
104
  descriptiveMessageKey: 'forbidden_description_crossjoin'
101
105
  });
102
106
  default:
103
- return jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess;
107
+ return requestAccess;
104
108
  }
105
109
  };
@@ -0,0 +1,8 @@
1
+ var extractHostname = function extractHostname(url) {
2
+ try {
3
+ return new URL(url).hostname;
4
+ } catch (_unused) {
5
+ return url;
6
+ }
7
+ };
8
+ export default extractHostname;
@@ -35,6 +35,7 @@ export default {
35
35
  'fabric.linking.delete': 'Odstranit',
36
36
  'fabric.linking.download': 'Stáhnout',
37
37
  'fabric.linking.edit': 'Upravit',
38
+ 'fabric.linking.follow': 'Sledovat',
38
39
  'fabric.linking.forbidden_access': 'Přístup byl odepřen',
39
40
  'fabric.linking.forbidden_description': 'K tomuto náhledu nemáte přístup. Pokud potřebujete přístup, obraťte se na správce webu.',
40
41
  'fabric.linking.go_back': 'Přejít zpět',
@@ -79,6 +80,8 @@ export default {
79
80
  'fabric.linking.restricted_link': 'Omezený odkaz, zkuste jiný účet.',
80
81
  'fabric.linking.retry': 'Zkusit znovu',
81
82
  'fabric.linking.save': 'Uložit',
83
+ 'fabric.linking.sent_on_absolute': 'Odesláno {context}',
84
+ 'fabric.linking.sent_on_relative': 'Odesláno {context}',
82
85
  'fabric.linking.srclink': 'Zobrazit v',
83
86
  'fabric.linking.srclinkunknown': 'Zobrazit originál',
84
87
  'fabric.linking.status_change_load_error': 'Načtení stavů a přechodů se nezdařilo',
@@ -86,10 +89,12 @@ export default {
86
89
  'fabric.linking.status_change_update_error': 'Aktualizace stavu se nezdařila',
87
90
  'fabric.linking.try_again': 'Zkusit znovu',
88
91
  'fabric.linking.try_another_account': 'Zkuste jiný účet',
92
+ 'fabric.linking.unassigned': 'Nepřiřazeno',
89
93
  'fabric.linking.unauthorised_account_description': 'Pokoušíte se zobrazit náhled odkazu na soukromou stránku ze zdroje {context}. Doporučujeme zkontrolovat adresu URL nebo kontaktovat vlastníka stránky.',
90
94
  'fabric.linking.unauthorised_account_description_no_provider': 'Pokoušíte se zobrazit náhled odkazu na soukromou stránku. Doporučujeme zkontrolovat adresu URL nebo kontaktovat vlastníka stránky.',
91
95
  'fabric.linking.unauthorised_account_name': 'Soukromé stránky ze zdroje {context} nejde zobrazit.',
92
96
  'fabric.linking.unauthorised_account_name_no_provider': 'Soukromé stránky nejde zobrazit.',
97
+ 'fabric.linking.unfollow': 'Přestat sledovat',
93
98
  'fabric.linking.unlink_account': 'Odpojit účet',
94
99
  'fabric.linking.updated_by': 'Upravil(a) {context}',
95
100
  'fabric.linking.view': 'Zobrazit'
@@ -35,6 +35,7 @@ export default {
35
35
  'fabric.linking.delete': 'Slet',
36
36
  'fabric.linking.download': 'Hent',
37
37
  'fabric.linking.edit': 'Rediger',
38
+ 'fabric.linking.follow': 'Følg',
38
39
  'fabric.linking.forbidden_access': 'Du har ikke adgang',
39
40
  'fabric.linking.forbidden_description': 'Du har ikke adgang til denne forhåndsvisning. Kontakt webstedets administrator, hvis du har brug for adgang.',
40
41
  'fabric.linking.go_back': 'Gå tilbage',
@@ -88,10 +89,12 @@ export default {
88
89
  'fabric.linking.status_change_update_error': 'Vi kunne ikke opdatere statussen',
89
90
  'fabric.linking.try_again': 'Prøv igen',
90
91
  'fabric.linking.try_another_account': 'Prøv en anden konto',
92
+ 'fabric.linking.unassigned': 'Ikke tildelt',
91
93
  'fabric.linking.unauthorised_account_description': "Du forsøger at få vist et link til en privat {context}-side. Vi anbefaler, at du gennemgår URL'en eller kontakter sideejeren.",
92
94
  'fabric.linking.unauthorised_account_description_no_provider': "Du forsøger at få vist et link til en privat side. Vi anbefaler, at du gennemgår URL'en eller kontakter sideejeren.",
93
95
  'fabric.linking.unauthorised_account_name': 'Vi kan ikke vise private sider fra {context}',
94
96
  'fabric.linking.unauthorised_account_name_no_provider': 'Vi kan ikke vise private sider',
97
+ 'fabric.linking.unfollow': 'Ophør med at følge',
95
98
  'fabric.linking.unlink_account': 'Fjern link til konto',
96
99
  'fabric.linking.updated_by': 'Ændret af {context}',
97
100
  'fabric.linking.view': 'Vis'
@@ -35,6 +35,7 @@ export default {
35
35
  'fabric.linking.delete': 'Löschen',
36
36
  'fabric.linking.download': 'Herunterladen',
37
37
  'fabric.linking.edit': 'Bearbeiten',
38
+ 'fabric.linking.follow': 'Folgen',
38
39
  'fabric.linking.forbidden_access': 'Sie sind nicht zugriffsberechtigt',
39
40
  'fabric.linking.forbidden_description': 'Sie haben keinen Zugriff auf diese Vorschau. Wenden Sie sich an Ihren Administrator, falls Sie noch Zugriff benötigen.',
40
41
  'fabric.linking.go_back': 'Zurück',
@@ -79,6 +80,8 @@ export default {
79
80
  'fabric.linking.restricted_link': 'Eingeschränkter Link, bitte versuchen Sie es mit einem anderen Konto.',
80
81
  'fabric.linking.retry': 'Erneut versuchen',
81
82
  'fabric.linking.save': 'Speichern',
83
+ 'fabric.linking.sent_on_absolute': 'Gesendet am {context}',
84
+ 'fabric.linking.sent_on_relative': 'Gesendet: {context}',
82
85
  'fabric.linking.srclink': 'Anzeigen in',
83
86
  'fabric.linking.srclinkunknown': 'Original anzeigen',
84
87
  'fabric.linking.status_change_load_error': 'Status und Übergänge konnten nicht geladen werden',
@@ -86,10 +89,12 @@ export default {
86
89
  'fabric.linking.status_change_update_error': 'Der Status konnte nicht aktualisiert werden',
87
90
  'fabric.linking.try_again': 'Versuchen Sie es erneut.',
88
91
  'fabric.linking.try_another_account': 'Versuchen Sie es mit einem anderen Konto erneut.',
92
+ 'fabric.linking.unassigned': 'Nicht zugewiesen',
89
93
  'fabric.linking.unauthorised_account_description': 'Sie versuchen, die Vorschau eines Links zu einer privaten {context}-Seite anzuzeigen. Überprüfen Sie die URL oder wenden Sie sich an den Seitenbesitzer.',
90
94
  'fabric.linking.unauthorised_account_description_no_provider': 'Sie versuchen, die Vorschau eines Links zu einer privaten Seite anzuzeigen. Überprüfen Sie die URL oder wenden Sie sich an den Seitenbesitzer.',
91
95
  'fabric.linking.unauthorised_account_name': 'Private Seiten von {context} können nicht angezeigt werden',
92
96
  'fabric.linking.unauthorised_account_name_no_provider': 'Private Seiten können nicht angezeigt werden',
97
+ 'fabric.linking.unfollow': 'Nicht mehr folgen',
93
98
  'fabric.linking.unlink_account': 'Kontoverknüpfung löschen',
94
99
  'fabric.linking.updated_by': 'Geändert von {context}',
95
100
  'fabric.linking.view': 'Anzeigen'