@ndla/ui 22.0.1 → 22.1.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 (109) hide show
  1. package/es/Article/ArticleByline.js +7 -4
  2. package/es/Article/ArticleNotions.js +10 -6
  3. package/es/CompetenceGoalTab/CompetenceGoalItem.js +12 -10
  4. package/es/CompetenceGoalTab/CompetenceGoalTab.js +11 -9
  5. package/es/CompetenceGoalTab/CompetenceItem.js +14 -12
  6. package/es/CompetenceGoalTab/SearchButton.js +7 -4
  7. package/es/CompetenceGoals/CompetenceGoalsDialog.js +8 -4
  8. package/es/ContentLoader/index.js +8 -3
  9. package/es/Filter/FilterButtons.js +10 -9
  10. package/es/Footer/FooterPrivacy.js +3 -2
  11. package/es/Masthead/MastheadSearchModal.js +4 -3
  12. package/es/Resource/BlockResource.js +109 -18
  13. package/es/Resource/ListResource.js +126 -26
  14. package/es/Resource/resourceComponents.js +36 -25
  15. package/es/ResourcesWrapper/ResourcesTopicTitle.js +7 -4
  16. package/es/SearchTypeResult/PopupFilter.js +12 -8
  17. package/es/SearchTypeResult/components/ItemContexts.js +8 -7
  18. package/es/SnackBar/DefaultSnackbar.js +56 -0
  19. package/es/SnackBar/SnackbarProvider.js +179 -0
  20. package/es/SnackBar/index.js +2 -2
  21. package/es/Topic/Topic.js +21 -20
  22. package/es/User/AuthModal.js +9 -8
  23. package/es/index.js +1 -1
  24. package/es/locale/messages-en.js +21 -6
  25. package/es/locale/messages-nb.js +21 -6
  26. package/es/locale/messages-nn.js +21 -6
  27. package/es/locale/messages-se.js +21 -6
  28. package/es/locale/messages-sma.js +21 -6
  29. package/lib/Article/ArticleByline.js +7 -4
  30. package/lib/Article/ArticleNotions.js +10 -6
  31. package/lib/CompetenceGoalTab/CompetenceGoalItem.d.ts +1 -1
  32. package/lib/CompetenceGoalTab/CompetenceGoalItem.js +12 -10
  33. package/lib/CompetenceGoalTab/CompetenceGoalTab.d.ts +2 -1
  34. package/lib/CompetenceGoalTab/CompetenceGoalTab.js +11 -9
  35. package/lib/CompetenceGoalTab/CompetenceItem.d.ts +2 -1
  36. package/lib/CompetenceGoalTab/CompetenceItem.js +14 -12
  37. package/lib/CompetenceGoalTab/SearchButton.d.ts +2 -1
  38. package/lib/CompetenceGoalTab/SearchButton.js +7 -4
  39. package/lib/CompetenceGoals/CompetenceGoalsDialog.js +8 -4
  40. package/lib/ContentLoader/index.d.ts +4 -8
  41. package/lib/ContentLoader/index.js +8 -3
  42. package/lib/Filter/FilterButtons.js +10 -9
  43. package/lib/Footer/FooterPrivacy.js +3 -2
  44. package/lib/Masthead/MastheadSearchModal.js +4 -3
  45. package/lib/Resource/BlockResource.d.ts +3 -1
  46. package/lib/Resource/BlockResource.js +110 -18
  47. package/lib/Resource/ListResource.d.ts +3 -1
  48. package/lib/Resource/ListResource.js +127 -26
  49. package/lib/Resource/resourceComponents.d.ts +4 -2
  50. package/lib/Resource/resourceComponents.js +38 -19
  51. package/lib/ResourcesWrapper/ResourcesTopicTitle.js +7 -4
  52. package/lib/SearchTypeResult/PopupFilter.js +12 -8
  53. package/lib/SearchTypeResult/components/ItemContexts.js +8 -7
  54. package/lib/SnackBar/DefaultSnackbar.d.ts +11 -0
  55. package/lib/SnackBar/DefaultSnackbar.js +70 -0
  56. package/lib/SnackBar/SnackbarProvider.d.ts +32 -0
  57. package/lib/SnackBar/SnackbarProvider.js +197 -0
  58. package/lib/SnackBar/index.d.ts +3 -3
  59. package/lib/SnackBar/index.js +23 -3
  60. package/lib/Topic/Topic.js +21 -20
  61. package/lib/User/AuthModal.js +9 -8
  62. package/lib/index.d.ts +2 -2
  63. package/lib/index.js +24 -3
  64. package/lib/locale/messages-en.d.ts +15 -0
  65. package/lib/locale/messages-en.js +21 -6
  66. package/lib/locale/messages-nb.d.ts +15 -0
  67. package/lib/locale/messages-nb.js +21 -6
  68. package/lib/locale/messages-nn.d.ts +15 -0
  69. package/lib/locale/messages-nn.js +21 -6
  70. package/lib/locale/messages-se.d.ts +15 -0
  71. package/lib/locale/messages-se.js +21 -6
  72. package/lib/locale/messages-sma.d.ts +15 -0
  73. package/lib/locale/messages-sma.js +21 -6
  74. package/lib/types.d.ts +1 -0
  75. package/package.json +8 -7
  76. package/src/Article/ArticleByline.tsx +4 -1
  77. package/src/Article/ArticleNotions.tsx +4 -1
  78. package/src/CompetenceGoalTab/CompetenceGoalItem.tsx +6 -2
  79. package/src/CompetenceGoalTab/CompetenceGoalTab.tsx +5 -4
  80. package/src/CompetenceGoalTab/CompetenceItem.tsx +9 -2
  81. package/src/CompetenceGoalTab/SearchButton.tsx +3 -2
  82. package/src/CompetenceGoals/CompetenceGoalsDialog.jsx +5 -2
  83. package/src/ContentLoader/index.tsx +9 -9
  84. package/src/Filter/FilterButtons.tsx +1 -0
  85. package/src/Footer/FooterPrivacy.tsx +4 -1
  86. package/src/Masthead/MastheadSearchModal.tsx +1 -0
  87. package/src/Resource/BlockResource.tsx +69 -6
  88. package/src/Resource/ListResource.tsx +88 -11
  89. package/src/Resource/resourceComponents.tsx +25 -9
  90. package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +5 -1
  91. package/src/SearchTypeResult/PopupFilter.tsx +3 -1
  92. package/src/SearchTypeResult/components/ItemContexts.tsx +1 -0
  93. package/src/SnackBar/DefaultSnackbar.tsx +70 -0
  94. package/src/SnackBar/SnackbarProvider.tsx +147 -0
  95. package/src/SnackBar/index.ts +3 -5
  96. package/src/Topic/Topic.tsx +1 -0
  97. package/src/User/AuthModal.tsx +2 -1
  98. package/src/index.ts +2 -2
  99. package/src/locale/messages-en.ts +15 -0
  100. package/src/locale/messages-nb.ts +15 -0
  101. package/src/locale/messages-nn.ts +15 -0
  102. package/src/locale/messages-se.ts +15 -0
  103. package/src/locale/messages-sma.ts +15 -0
  104. package/src/types.ts +1 -0
  105. package/es/SnackBar/SnackBar.js +0 -117
  106. package/lib/SnackBar/SnackBar.d.ts +0 -23
  107. package/lib/SnackBar/SnackBar.js +0 -127
  108. package/src/.DS_Store +0 -0
  109. package/src/SnackBar/SnackBar.tsx +0 -183
@@ -172,7 +172,8 @@ var messages = _objectSpread(_objectSpread({
172
172
  },
173
173
  contextModal: {
174
174
  button: '+ {{count}} fleire stader',
175
- heading: 'Ressursen er brukt fleire stader'
175
+ heading: 'Ressursen er brukt fleire stader',
176
+ ariaLabel: 'Sjå fleire kontekstar'
176
177
  }
177
178
  },
178
179
  subjectPage: {
@@ -217,7 +218,8 @@ var messages = _objectSpread(_objectSpread({
217
218
  topicPage: {
218
219
  articleErrorDescription: 'Orsak, ein feil oppstod under lasting av emneskildringa.',
219
220
  topic: 'EMNE',
220
- topics: 'Emne'
221
+ topics: 'Emne',
222
+ imageModal: 'Sjå biletet i full storleik'
221
223
  },
222
224
  welcomePage: {
223
225
  search: 'Søk',
@@ -275,6 +277,7 @@ var messages = _objectSpread(_objectSpread({
275
277
  toFrontpage: 'Til framsida',
276
278
  subjectOverview: 'Alle fag',
277
279
  title: 'Innhald',
280
+ modalLabel: 'Vel innhald',
278
281
  subjectPage: 'Fagframside',
279
282
  backToSubjectFrontpage: 'Tilbake til fagframsida',
280
283
  openFilter: 'Filter',
@@ -361,6 +364,7 @@ var messages = _objectSpread(_objectSpread({
361
364
  competenceGoals: {
362
365
  competenceGoal: 'kompetansemål',
363
366
  title: 'Kompetansemål og læreplan',
367
+ modalText: 'Utforsk læreplankoplingar',
364
368
  closeCompetenceGoals: 'Lukk kompetansemål',
365
369
  showCompetenceGoals: 'Vis kompetansemål',
366
370
  openCompentenceGoalsFilter: 'Filtrer kompetansemål',
@@ -383,7 +387,9 @@ var messages = _objectSpread(_objectSpread({
383
387
  competenceTabCorelabel: 'Kjerneelement',
384
388
  competenceGoalItem: {
385
389
  title: 'Kompetansemål og vurdering'
386
- }
390
+ },
391
+ licenseData: 'Inneheld data under',
392
+ licenseFrom: 'tilgjengeleggjort på'
387
393
  },
388
394
  subject: {
389
395
  associatedTopics: 'Tilhøyrande emne'
@@ -923,7 +929,9 @@ var messages = _objectSpread(_objectSpread({
923
929
  modal: {
924
930
  collectedInfo: 'Vi har henta denne informasjonen om deg frå Feide:',
925
931
  general: 'Ressursane som krev pålogging med Feide, vises med ikonet',
926
- topic: ' Logg inn med Feide for å få tilgang til dette emnet.'
932
+ topic: ' Logg inn med Feide for å få tilgang til dette emnet.',
933
+ isAuth: 'Brukarinfo',
934
+ isNotAuth: 'Logg inn med Feide'
927
935
  },
928
936
  resource: {
929
937
  accessDenied: 'Vi beklagar, men denne ressursen er berre for lærarar innlogga med Feide.'
@@ -957,7 +965,8 @@ var messages = _objectSpread(_objectSpread({
957
965
  folder: 'Mappe',
958
966
  "delete": 'Slett',
959
967
  edit: 'Rediger',
960
- missingName: 'Mappenavn er påkrevd'
968
+ missingName: 'Mappenavn er påkrevd',
969
+ folderDeleted: '"{{folderName}}" er sletta'
961
970
  },
962
971
  tags: '{{count}} tag',
963
972
  tags_plural: '{{count}} tags',
@@ -1022,8 +1031,14 @@ var messages = _objectSpread(_objectSpread({
1022
1031
  removeTitle: 'Fjern ressurs',
1023
1032
  confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
1024
1033
  copyLink: 'Kopier lenke til sida',
1034
+ linkCopied: 'Kopiert til utklippstavla',
1025
1035
  addToMyNdla: 'Legg i Min NDLA',
1026
- addedToMyNdla: 'Lagt i Min NDLA'
1036
+ addedToMyNdla: 'Lagt i Min NDLA',
1037
+ addedToFolder: 'Ressurs er lagt i "{{folderName}}"',
1038
+ removedFromFolder: 'Fjernet fra "{{folderName}}"',
1039
+ titleUpdated: 'Tittel oppdatert',
1040
+ tagsUpdated: 'Tags oppdatert',
1041
+ show: 'Vis'
1027
1042
  }
1028
1043
  },
1029
1044
  snackbar: {
@@ -29,6 +29,8 @@ declare const messages: {
29
29
  collectedInfo: string;
30
30
  general: string;
31
31
  topic: string;
32
+ isAuth: string;
33
+ isNotAuth: string;
32
34
  };
33
35
  resource: {
34
36
  accessDenied: string;
@@ -63,6 +65,7 @@ declare const messages: {
63
65
  delete: string;
64
66
  edit: string;
65
67
  missingName: string;
68
+ folderDeleted: string;
66
69
  };
67
70
  tags: string;
68
71
  tags_plural: string;
@@ -127,8 +130,14 @@ declare const messages: {
127
130
  removeTitle: string;
128
131
  confirmRemove: string;
129
132
  copyLink: string;
133
+ linkCopied: string;
130
134
  addToMyNdla: string;
131
135
  addedToMyNdla: string;
136
+ addedToFolder: string;
137
+ removedFromFolder: string;
138
+ titleUpdated: string;
139
+ tagsUpdated: string;
140
+ show: string;
132
141
  };
133
142
  };
134
143
  snackbar: {
@@ -304,6 +313,7 @@ declare const messages: {
304
313
  contextModal: {
305
314
  button: string;
306
315
  heading: string;
316
+ ariaLabel: string;
307
317
  };
308
318
  };
309
319
  subjectPage: {
@@ -349,6 +359,7 @@ declare const messages: {
349
359
  articleErrorDescription: string;
350
360
  topic: string;
351
361
  topics: string;
362
+ imageModal: string;
352
363
  };
353
364
  welcomePage: {
354
365
  search: string;
@@ -406,6 +417,7 @@ declare const messages: {
406
417
  toFrontpage: string;
407
418
  subjectOverview: string;
408
419
  title: string;
420
+ modalLabel: string;
409
421
  subjectPage: string;
410
422
  backToSubjectFrontpage: string;
411
423
  openFilter: string;
@@ -516,6 +528,7 @@ declare const messages: {
516
528
  competenceGoals: {
517
529
  competenceGoal: string;
518
530
  title: string;
531
+ modalText: string;
519
532
  closeCompetenceGoals: string;
520
533
  showCompetenceGoals: string;
521
534
  openCompentenceGoalsFilter: string;
@@ -539,6 +552,8 @@ declare const messages: {
539
552
  competenceGoalItem: {
540
553
  title: string;
541
554
  };
555
+ licenseData: string;
556
+ licenseFrom: string;
542
557
  };
543
558
  subject: {
544
559
  associatedTopics: string;
@@ -172,7 +172,8 @@ var messages = _objectSpread(_objectSpread({
172
172
  },
173
173
  contextModal: {
174
174
  button: '+ {{count}} flere steder',
175
- heading: 'Ressursen er brukt flere steder'
175
+ heading: 'Ressursen er brukt flere steder',
176
+ ariaLabel: 'Se flere kontekster'
176
177
  }
177
178
  },
178
179
  subjectPage: {
@@ -217,7 +218,8 @@ var messages = _objectSpread(_objectSpread({
217
218
  topicPage: {
218
219
  articleErrorDescription: 'Beklager, en feil oppstod under lasting av emnebeskrivelsen.',
219
220
  topic: 'EMNE',
220
- topics: 'Emner'
221
+ topics: 'Emner',
222
+ imageModal: 'Se bildet i full størrelse'
221
223
  },
222
224
  welcomePage: {
223
225
  search: 'Søk',
@@ -275,6 +277,7 @@ var messages = _objectSpread(_objectSpread({
275
277
  toFrontpage: 'Til forsiden',
276
278
  subjectOverview: 'Alle fag',
277
279
  title: 'Innhold',
280
+ modalLabel: 'Velg innhold',
278
281
  subjectPage: 'Fagforside',
279
282
  backToSubjectFrontpage: 'Tilbake til fagforsiden',
280
283
  openFilter: 'Filter',
@@ -361,6 +364,7 @@ var messages = _objectSpread(_objectSpread({
361
364
  competenceGoals: {
362
365
  competenceGoal: 'kompetansemål',
363
366
  title: 'Kompetansemål og læreplan',
367
+ modalText: 'Utforsk læreplankoblinger',
364
368
  closeCompetenceGoals: 'Lukk kompetansemål',
365
369
  showCompetenceGoals: 'Vis kompetansemål',
366
370
  openCompentenceGoalsFilter: 'Filtrer kompetansemål',
@@ -383,7 +387,9 @@ var messages = _objectSpread(_objectSpread({
383
387
  competenceTabCorelabel: 'Kjerneelement',
384
388
  competenceGoalItem: {
385
389
  title: 'Kompetansemål og vurdering'
386
- }
390
+ },
391
+ licenseData: 'Inneholder data under',
392
+ licenseFrom: 'tilgjengeliggjort på'
387
393
  },
388
394
  subject: {
389
395
  associatedTopics: 'Tilhørende emner'
@@ -923,7 +929,9 @@ var messages = _objectSpread(_objectSpread({
923
929
  modal: {
924
930
  collectedInfo: 'Vi har hentet følgende informasjon om deg fra Feide:',
925
931
  general: 'Ressursene som krever pålogging med Feide, vises med ikonet',
926
- topic: 'Logg inn med Feide for å få tilgang til dette emnet.'
932
+ topic: 'Logg inn med Feide for å få tilgang til dette emnet.',
933
+ isAuth: 'Brukerinfo',
934
+ isNotAuth: 'Logg inn med Feide'
927
935
  },
928
936
  resource: {
929
937
  accessDenied: 'Vi beklager, men denne ressursen er bare for lærere innlogget med Feide.'
@@ -957,7 +965,8 @@ var messages = _objectSpread(_objectSpread({
957
965
  folder: 'Mappe',
958
966
  "delete": 'Slett',
959
967
  edit: 'Rediger',
960
- missingName: 'Mappenavn er påkrevd'
968
+ missingName: 'Mappenavn er påkrevd',
969
+ folderDeleted: '"{{folderName}}" er sletta'
961
970
  },
962
971
  tags: '{{count}} tag',
963
972
  tags_plural: '{{count}} tags',
@@ -1022,8 +1031,14 @@ var messages = _objectSpread(_objectSpread({
1022
1031
  removeTitle: 'Fjern ressurs',
1023
1032
  confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
1024
1033
  copyLink: 'Kopier lenke til siden',
1034
+ linkCopied: 'Kopiert til utklippstavla',
1025
1035
  addToMyNdla: 'Legg i Min NDLA',
1026
- addedToMyNdla: 'Lagt i Min NDLA'
1036
+ addedToMyNdla: 'Lagt i Min NDLA',
1037
+ addedToFolder: 'Ressurs er lagt i "{{folderName}}"',
1038
+ removedFromFolder: 'Fjernet fra "{{folderName}}"',
1039
+ titleUpdated: 'Tittel oppdatert',
1040
+ tagsUpdated: 'Tags oppdatert',
1041
+ show: 'Vis'
1027
1042
  }
1028
1043
  },
1029
1044
  snackbar: {
@@ -29,6 +29,8 @@ declare const messages: {
29
29
  collectedInfo: string;
30
30
  general: string;
31
31
  topic: string;
32
+ isAuth: string;
33
+ isNotAuth: string;
32
34
  };
33
35
  resource: {
34
36
  accessDenied: string;
@@ -63,6 +65,7 @@ declare const messages: {
63
65
  delete: string;
64
66
  edit: string;
65
67
  missingName: string;
68
+ folderDeleted: string;
66
69
  };
67
70
  tags: string;
68
71
  tags_plural: string;
@@ -127,8 +130,14 @@ declare const messages: {
127
130
  removeTitle: string;
128
131
  confirmRemove: string;
129
132
  copyLink: string;
133
+ linkCopied: string;
130
134
  addToMyNdla: string;
131
135
  addedToMyNdla: string;
136
+ addedToFolder: string;
137
+ removedFromFolder: string;
138
+ titleUpdated: string;
139
+ tagsUpdated: string;
140
+ show: string;
132
141
  };
133
142
  };
134
143
  snackbar: {
@@ -304,6 +313,7 @@ declare const messages: {
304
313
  contextModal: {
305
314
  button: string;
306
315
  heading: string;
316
+ ariaLabel: string;
307
317
  };
308
318
  };
309
319
  subjectPage: {
@@ -349,6 +359,7 @@ declare const messages: {
349
359
  articleErrorDescription: string;
350
360
  topic: string;
351
361
  topics: string;
362
+ imageModal: string;
352
363
  };
353
364
  welcomePage: {
354
365
  search: string;
@@ -406,6 +417,7 @@ declare const messages: {
406
417
  toFrontpage: string;
407
418
  subjectOverview: string;
408
419
  title: string;
420
+ modalLabel: string;
409
421
  subjectPage: string;
410
422
  backToSubjectFrontpage: string;
411
423
  openFilter: string;
@@ -516,6 +528,7 @@ declare const messages: {
516
528
  competenceGoals: {
517
529
  competenceGoal: string;
518
530
  title: string;
531
+ modalText: string;
519
532
  closeCompetenceGoals: string;
520
533
  showCompetenceGoals: string;
521
534
  openCompentenceGoalsFilter: string;
@@ -539,6 +552,8 @@ declare const messages: {
539
552
  competenceGoalItem: {
540
553
  title: string;
541
554
  };
555
+ licenseData: string;
556
+ licenseFrom: string;
542
557
  };
543
558
  subject: {
544
559
  associatedTopics: string;
@@ -172,7 +172,8 @@ var messages = _objectSpread(_objectSpread({
172
172
  },
173
173
  contextModal: {
174
174
  button: '+ {{count}} flere steder',
175
- heading: 'Ressursen er brukt flere steder'
175
+ heading: 'Ressursen er brukt flere steder',
176
+ ariaLabel: 'Se flere kontekster'
176
177
  }
177
178
  },
178
179
  subjectPage: {
@@ -217,7 +218,8 @@ var messages = _objectSpread(_objectSpread({
217
218
  topicPage: {
218
219
  articleErrorDescription: 'Beklager, en feil oppstod under lasting av emnebeskrivelsen.',
219
220
  topic: 'EMNE',
220
- topics: 'Emner'
221
+ topics: 'Emner',
222
+ imageModal: 'Se bildet i full størrelse'
221
223
  },
222
224
  welcomePage: {
223
225
  search: 'Søk',
@@ -275,6 +277,7 @@ var messages = _objectSpread(_objectSpread({
275
277
  toFrontpage: 'Til forsiden',
276
278
  subjectOverview: 'Alle fag',
277
279
  title: 'Innhold',
280
+ modalLabel: 'Velg innhold',
278
281
  subjectPage: 'Fagforside',
279
282
  backToSubjectFrontpage: 'Tilbake til fagforsiden',
280
283
  openFilter: 'Filter',
@@ -361,6 +364,7 @@ var messages = _objectSpread(_objectSpread({
361
364
  competenceGoals: {
362
365
  competenceGoal: 'kompetansemål',
363
366
  title: 'Kompetansemål og læreplan',
367
+ modalText: 'Utforsk læreplankoblinger',
364
368
  closeCompetenceGoals: 'Lukk kompetansemål',
365
369
  showCompetenceGoals: 'Vis kompetansemål',
366
370
  openCompentenceGoalsFilter: 'Filtrer kompetansemål',
@@ -383,7 +387,9 @@ var messages = _objectSpread(_objectSpread({
383
387
  competenceTabCorelabel: 'Kjerneelement',
384
388
  competenceGoalItem: {
385
389
  title: 'Kompetansemål og vurdering'
386
- }
390
+ },
391
+ licenseData: 'Inneholder data under',
392
+ licenseFrom: 'tilgjengeliggjort på'
387
393
  },
388
394
  subject: {
389
395
  associatedTopics: 'Tilhørende emner'
@@ -923,7 +929,9 @@ var messages = _objectSpread(_objectSpread({
923
929
  modal: {
924
930
  collectedInfo: 'Vi har hentet følgende informasjon om deg fra Feide:',
925
931
  general: 'Ressursene som krever pålogging med Feide, vises med ikonet',
926
- topic: 'Logg inn med Feide for å få tilgang til dette emnet.'
932
+ topic: 'Logg inn med Feide for å få tilgang til dette emnet.',
933
+ isAuth: 'Brukerinfo',
934
+ isNotAuth: 'Logg inn med Feide'
927
935
  },
928
936
  resource: {
929
937
  accessDenied: 'Vi beklager, men denne ressursen er bare for lærere innlogget med Feide.'
@@ -957,7 +965,8 @@ var messages = _objectSpread(_objectSpread({
957
965
  folder: 'Mappe',
958
966
  "delete": 'Slett',
959
967
  edit: 'Rediger',
960
- missingName: 'Mappenavn er påkrevd'
968
+ missingName: 'Mappenavn er påkrevd',
969
+ folderDeleted: '"{{folderName}}" er sletta'
961
970
  },
962
971
  tags: '{{count}} tag',
963
972
  tags_plural: '{{count}} tags',
@@ -1022,8 +1031,14 @@ var messages = _objectSpread(_objectSpread({
1022
1031
  removeTitle: 'Fjern ressurs',
1023
1032
  confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
1024
1033
  copyLink: 'Kopier lenke til siden',
1034
+ linkCopied: 'Kopiert til utklippstavla',
1025
1035
  addToMyNdla: 'Legg i Min NDLA',
1026
- addedToMyNdla: 'Lagt i Min NDLA'
1036
+ addedToMyNdla: 'Lagt i Min NDLA',
1037
+ addedToFolder: 'Ressurs er lagt i "{{folderName}}"',
1038
+ removedFromFolder: 'Fjernet fra "{{folderName}}"',
1039
+ titleUpdated: 'Tittel oppdatert',
1040
+ tagsUpdated: 'Tags oppdatert',
1041
+ show: 'Vis'
1027
1042
  }
1028
1043
  },
1029
1044
  snackbar: {
package/lib/types.d.ts CHANGED
@@ -96,6 +96,7 @@ export declare type CompetenceGoalsItemType = {
96
96
  type: 'LK06' | 'LK20';
97
97
  }[];
98
98
  selected?: boolean;
99
+ isOembed?: boolean;
99
100
  };
100
101
  export declare type NotionMedia = {
101
102
  type: 'video' | 'other';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/ui",
3
- "version": "22.0.1",
3
+ "version": "22.1.0",
4
4
  "description": "UI component library for NDLA.",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -31,16 +31,16 @@
31
31
  "types"
32
32
  ],
33
33
  "dependencies": {
34
- "@ndla/button": "^3.2.0",
34
+ "@ndla/button": "^3.2.1",
35
35
  "@ndla/carousel": "^1.2.15",
36
36
  "@ndla/core": "^2.3.3",
37
37
  "@ndla/forms": "^3.1.3",
38
38
  "@ndla/hooks": "^1.1.4",
39
39
  "@ndla/icons": "^1.11.3",
40
40
  "@ndla/licenses": "^5.0.6",
41
- "@ndla/modal": "^1.2.16",
42
- "@ndla/notion": "^3.1.26",
43
- "@ndla/safelink": "^2.2.4",
41
+ "@ndla/modal": "^1.2.17",
42
+ "@ndla/notion": "^3.1.28",
43
+ "@ndla/safelink": "^2.2.5",
44
44
  "@ndla/switch": "^0.1.10",
45
45
  "@ndla/tabs": "^1.1.14",
46
46
  "@ndla/tooltip": "^2.1.5",
@@ -68,7 +68,8 @@
68
68
  "i18next": "^20.3.1",
69
69
  "prop-types": "^15.8.1",
70
70
  "react": "^16.8.4 || ^17.0.0",
71
- "react-i18next": "^11.11.0"
71
+ "react-i18next": "^11.11.0",
72
+ "react-router-dom": "^6.3.0"
72
73
  },
73
74
  "devDependencies": {
74
75
  "@babel/plugin-proposal-optional-chaining": "^7.11.0",
@@ -83,5 +84,5 @@
83
84
  "publishConfig": {
84
85
  "access": "public"
85
86
  },
86
- "gitHead": "b4b0a48ca5d00d92fadafa85326a8ee86b91f152"
87
+ "gitHead": "f4d197d1841b544f533371350b6c23ebce94012f"
87
88
  }
@@ -102,6 +102,8 @@ const ArticleByline = ({
102
102
  const showPrimaryContributors = suppliers.length > 0 || authors.length > 0;
103
103
  const showSecondaryContributors = suppliers.length > 0 && authors.length > 0;
104
104
 
105
+ const buttonId = 'popupUseContent';
106
+
105
107
  return (
106
108
  <Wrapper>
107
109
  <div>
@@ -124,8 +126,9 @@ const ArticleByline = ({
124
126
  <ButtonWrapper>
125
127
  {licenseBox && (
126
128
  <Modal
129
+ labelledBy={buttonId}
127
130
  activateButton={
128
- <Button size="small" borderShape="rounded" outline>
131
+ <Button id={buttonId} size="small" borderShape="rounded" outline>
129
132
  {t('article.useContent')}
130
133
  </Button>
131
134
  }
@@ -165,14 +165,17 @@ type ArticleNotionsProps = {
165
165
  export const ArticleNotions = ({ notions, relatedContent = [], buttonOffsetRight, type }: ArticleNotionsProps) => {
166
166
  const { t } = useTranslation();
167
167
  const leftOffset = `${buttonOffsetRight - 32}px`;
168
+ const headingId = 'popupNotionHeading';
169
+
168
170
  return (
169
171
  <ArticleNotionsContainer>
170
172
  <Modal
173
+ labelledBy={headingId}
171
174
  activateButton={
172
175
  <NotionsTrigger role="button" aria-label={t('article.notionsPrompt')} style={{ left: leftOffset }}>
173
176
  <NotionFlip />
174
177
  <Explanation />
175
- <span>{t('article.notionsPrompt')}</span>
178
+ <span id={headingId}>{t('article.notionsPrompt')}</span>
176
179
  </NotionsTrigger>
177
180
  }
178
181
  size="large"
@@ -60,7 +60,7 @@ const GoalSearchWrapper = styled.div`
60
60
  }
61
61
  `;
62
62
 
63
- const CompetenceGoalItem = ({ title, goals }: CompetenceGoalsItemType) => {
63
+ const CompetenceGoalItem = ({ title, goals, isOembed }: CompetenceGoalsItemType) => {
64
64
  const { t } = useTranslation();
65
65
  return (
66
66
  <GoalItem>
@@ -73,7 +73,11 @@ const CompetenceGoalItem = ({ title, goals }: CompetenceGoalsItemType) => {
73
73
  <GoalListInnerTextWrapper>{goal.text}</GoalListInnerTextWrapper>
74
74
  {goal.url && goal.type !== 'LK06' && (
75
75
  <GoalSearchWrapper>
76
- <SearchButton to={goal.url} text={t('competenceGoals.competenceGoalResourceSearchText')} />
76
+ <SearchButton
77
+ to={goal.url}
78
+ text={t('competenceGoals.competenceGoalResourceSearchText')}
79
+ target={isOembed ? '_blank' : '_self'}
80
+ />
77
81
  </GoalSearchWrapper>
78
82
  )}
79
83
  </GoalListElementInnerWrapper>
@@ -19,6 +19,7 @@ import CompetenceItem, { ListItemProp } from './CompetenceItem';
19
19
  type CompetenceProps = {
20
20
  list: ListItemProp[];
21
21
  highlightSearchBox?: boolean;
22
+ isOembed?: boolean;
22
23
  };
23
24
 
24
25
  const Wrapper = styled.div`
@@ -79,7 +80,7 @@ const HighlightText = styled.span`
79
80
  font-family: 'Shadows Into Light Two', cursive;
80
81
  `;
81
82
 
82
- const CompetenceGoalTab = ({ list, highlightSearchBox }: CompetenceProps) => {
83
+ const CompetenceGoalTab = ({ list, highlightSearchBox, isOembed }: CompetenceProps) => {
83
84
  const [currentTabItem, setCurrentTab] = useState(list[0]);
84
85
  const { t } = useTranslation();
85
86
 
@@ -106,15 +107,15 @@ const CompetenceGoalTab = ({ list, highlightSearchBox }: CompetenceProps) => {
106
107
  <ArrowFeatureTips />
107
108
  </HighlightWrapper>
108
109
  )}
109
- <CompetenceItem item={currentTabItem} />
110
+ <CompetenceItem item={currentTabItem} isOembed={isOembed} />
110
111
  <LicenseByline licenseRights={[CC, BY]}>
111
112
  <LicenseIconsTextWrapper>UDIR</LicenseIconsTextWrapper>
112
113
  </LicenseByline>
113
- Inneholder data under{' '}
114
+ {`${t('competenceGoals.licenseData')} `}
114
115
  <SafeLink to="https://data.norge.no/nlod/no" target="_blank">
115
116
  NLOD
116
117
  </SafeLink>
117
- , tilgjengeliggjort på{' '}
118
+ {`, ${t('competenceGoals.licenseFrom')} `}
118
119
  <SafeLink to="https://data.udir.no/" target="_blank">
119
120
  data.udir.no
120
121
  </SafeLink>
@@ -79,9 +79,10 @@ export type ListItemProp = {
79
79
  };
80
80
  export type ListItemProps = {
81
81
  item: ListItemProp;
82
+ isOembed?: boolean;
82
83
  };
83
84
 
84
- const CompetenceItem = ({ item }: ListItemProps) => {
85
+ const CompetenceItem = ({ item, isOembed }: ListItemProps) => {
85
86
  const { t } = useTranslation();
86
87
  const { type, groupedCompetenceGoals, groupedCoreElementItems } = item;
87
88
  switch (type) {
@@ -105,7 +106,13 @@ const CompetenceItem = ({ item }: ListItemProps) => {
105
106
  {group.elements.length > 0 && (
106
107
  <Goals>
107
108
  {group.elements.map((goal) => (
108
- <CompetenceGoalItem key={goal.id} id={goal.id} title={goal.title} goals={goal.goals} />
109
+ <CompetenceGoalItem
110
+ key={goal.id}
111
+ id={goal.id}
112
+ title={goal.title}
113
+ goals={goal.goals}
114
+ isOembed={isOembed}
115
+ />
109
116
  ))}
110
117
  </Goals>
111
118
  )}
@@ -37,11 +37,12 @@ const IconWrapper = styled.span`
37
37
  type Props = {
38
38
  to: string;
39
39
  text: string;
40
+ target?: string;
40
41
  };
41
42
 
42
- const SearchButton = ({ to, text }: Props) => (
43
+ const SearchButton = ({ to, text, target = '_self' }: Props) => (
43
44
  <Wrapper>
44
- <SafeLink to={to}>
45
+ <SafeLink to={to} target={target}>
45
46
  <IconWrapper>
46
47
  <Search style={{ width: '24px', height: '24px' }} />
47
48
  </IconWrapper>
@@ -33,8 +33,11 @@ const HeadingWrapper = styled.h2`
33
33
 
34
34
  export const CompetenceGoalsDialog = ({ children, isOpen, onClose, subjectName, modalProps }) => {
35
35
  const { t } = useTranslation();
36
+ const iconId = 'popupCompetenceGoals';
37
+
36
38
  return (
37
39
  <Modal
40
+ labelledBy={iconId}
38
41
  {...modalProps}
39
42
  controllable
40
43
  isOpen={isOpen}
@@ -48,8 +51,8 @@ export const CompetenceGoalsDialog = ({ children, isOpen, onClose, subjectName,
48
51
  <ModalHeader modifier="menu">
49
52
  <HeaderWrapper>
50
53
  <HeadingWrapper>
51
- <FooterHeaderIcon size="24px" style={{ marginRight: '20px' }} />
52
- {'Utforsk læreplankoblinger'} {subjectName && ` \u2022 ${subjectName}`}
54
+ <FooterHeaderIcon id={iconId} size="24px" style={{ marginRight: '20px' }} />
55
+ {t('competenceGoals.modalText')} {subjectName && ` \u2022 ${subjectName}`}
53
56
  </HeadingWrapper>
54
57
  <ModalCloseButton onClick={close} title={t('competenceGoals.competenceGoalClose')} />
55
58
  </HeaderWrapper>
@@ -6,18 +6,14 @@
6
6
  *
7
7
  */
8
8
 
9
- import React, { ReactNode } from 'react';
9
+ import React, { ReactNode, SVGProps } from 'react';
10
10
  import { uuid } from '@ndla/util';
11
11
 
12
- interface Props {
12
+ interface Props extends Omit<SVGProps<SVGSVGElement>, 'viewBox'> {
13
13
  children?: ReactNode;
14
- speed?: number;
15
- width?: number;
16
- height?: number;
17
14
  primaryColor?: string;
18
15
  secondaryColor?: string;
19
- preserveAspectRatio?: string;
20
- className?: string;
16
+ viewBox?: string | null;
21
17
  }
22
18
 
23
19
  const ContentLoader = ({
@@ -29,18 +25,22 @@ const ContentLoader = ({
29
25
  primaryColor = '#f0f0f0',
30
26
  secondaryColor = '#e0e0e0',
31
27
  speed = 2,
28
+ viewBox: viewBoxProp,
32
29
  ...rest
33
30
  }: Props) => {
34
31
  const idClip = uuid();
35
32
  const idGradient = uuid();
33
+ const viewBox = viewBoxProp === undefined ? `0 0 ${width} ${height}` : viewBoxProp;
36
34
 
37
35
  return (
38
36
  <svg
39
- viewBox={`0 0 ${width} ${height}`}
37
+ viewBox={viewBox ?? undefined}
40
38
  version="1.1"
41
39
  preserveAspectRatio={preserveAspectRatio}
42
40
  className={className}
43
- {...rest}>
41
+ {...rest}
42
+ height={typeof height === 'string' ? height : undefined}
43
+ width={typeof width === 'string' ? width : undefined}>
44
44
  <rect
45
45
  style={{ fill: `url(#${idGradient})` }}
46
46
  clipPath={`url(#${idClip})`}
@@ -128,6 +128,7 @@ export const FilterButtons = ({ heading, items, onFilterToggle, onRemoveAllFilte
128
128
  </StyledButtonElementWrapper>
129
129
  ))}
130
130
  <Modal
131
+ label={t('searchPage.searchFilterMessages.resourceTypeFilter.button')}
131
132
  size="fullscreen"
132
133
  animation="subtle"
133
134
  backgroundColor="white"