@ndla/ui 22.0.0 → 22.0.3

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 (108) hide show
  1. package/es/Article/ArticleByline.js +7 -4
  2. package/es/Article/ArticleNotions.js +10 -6
  3. package/es/Breadcrumb/ActionBreadcrumb.js +4 -4
  4. package/es/CompetenceGoals/CompetenceGoalsDialog.js +8 -4
  5. package/es/ContentLoader/index.js +8 -3
  6. package/es/Filter/FilterButtons.js +10 -9
  7. package/es/Footer/FooterPrivacy.js +3 -2
  8. package/es/Masthead/MastheadSearchModal.js +4 -3
  9. package/es/Resource/BlockResource.js +105 -18
  10. package/es/Resource/ListResource.js +124 -26
  11. package/es/ResourcesWrapper/ResourcesTopicTitle.js +7 -4
  12. package/es/Search/ContentTypeResult.js +1 -2
  13. package/es/SearchTypeResult/PopupFilter.js +12 -8
  14. package/es/SearchTypeResult/SearchItem.js +8 -8
  15. package/es/SearchTypeResult/components/ItemContexts.js +8 -7
  16. package/es/SnackBar/DefaultSnackbar.js +56 -0
  17. package/es/SnackBar/SnackbarProvider.js +179 -0
  18. package/es/SnackBar/index.js +2 -2
  19. package/es/Topic/Topic.js +21 -20
  20. package/es/TreeStructure/FolderItem.js +64 -44
  21. package/es/TreeStructure/FolderItems.js +4 -4
  22. package/es/TreeStructure/TreeStructure.js +15 -8
  23. package/es/User/AuthModal.js +9 -8
  24. package/es/index.js +1 -1
  25. package/es/locale/messages-en.js +26 -5
  26. package/es/locale/messages-nb.js +26 -5
  27. package/es/locale/messages-nn.js +26 -5
  28. package/es/locale/messages-se.js +26 -5
  29. package/es/locale/messages-sma.js +26 -5
  30. package/lib/Article/ArticleByline.js +7 -4
  31. package/lib/Article/ArticleNotions.js +10 -6
  32. package/lib/Breadcrumb/ActionBreadcrumb.js +4 -4
  33. package/lib/CompetenceGoals/CompetenceGoalsDialog.js +8 -4
  34. package/lib/ContentLoader/index.d.ts +4 -8
  35. package/lib/ContentLoader/index.js +8 -3
  36. package/lib/Filter/FilterButtons.js +10 -9
  37. package/lib/Footer/FooterPrivacy.js +3 -2
  38. package/lib/Masthead/MastheadSearchModal.js +4 -3
  39. package/lib/Resource/BlockResource.d.ts +2 -1
  40. package/lib/Resource/BlockResource.js +106 -18
  41. package/lib/Resource/ListResource.d.ts +2 -1
  42. package/lib/Resource/ListResource.js +125 -26
  43. package/lib/ResourcesWrapper/ResourcesTopicTitle.js +7 -4
  44. package/lib/Search/ContentTypeResult.js +1 -2
  45. package/lib/SearchTypeResult/PopupFilter.js +12 -8
  46. package/lib/SearchTypeResult/SearchItem.js +8 -8
  47. package/lib/SearchTypeResult/components/ItemContexts.js +8 -7
  48. package/lib/SnackBar/DefaultSnackbar.d.ts +11 -0
  49. package/lib/SnackBar/DefaultSnackbar.js +70 -0
  50. package/lib/SnackBar/SnackbarProvider.d.ts +32 -0
  51. package/lib/SnackBar/SnackbarProvider.js +197 -0
  52. package/lib/SnackBar/index.d.ts +3 -3
  53. package/lib/SnackBar/index.js +23 -3
  54. package/lib/Topic/Topic.js +21 -20
  55. package/lib/TreeStructure/FolderItem.d.ts +1 -1
  56. package/lib/TreeStructure/FolderItem.js +65 -44
  57. package/lib/TreeStructure/FolderItems.js +4 -4
  58. package/lib/TreeStructure/TreeStructure.d.ts +1 -1
  59. package/lib/TreeStructure/TreeStructure.js +15 -8
  60. package/lib/TreeStructure/types.d.ts +2 -1
  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 +21 -0
  65. package/lib/locale/messages-en.js +26 -5
  66. package/lib/locale/messages-nb.d.ts +21 -0
  67. package/lib/locale/messages-nb.js +26 -5
  68. package/lib/locale/messages-nn.d.ts +21 -0
  69. package/lib/locale/messages-nn.js +26 -5
  70. package/lib/locale/messages-se.d.ts +21 -0
  71. package/lib/locale/messages-se.js +26 -5
  72. package/lib/locale/messages-sma.d.ts +21 -0
  73. package/lib/locale/messages-sma.js +26 -5
  74. package/package.json +6 -6
  75. package/src/Article/ArticleByline.tsx +4 -1
  76. package/src/Article/ArticleNotions.tsx +4 -1
  77. package/src/Breadcrumb/ActionBreadcrumb.tsx +1 -1
  78. package/src/CompetenceGoals/CompetenceGoalsDialog.jsx +5 -2
  79. package/src/ContentLoader/index.tsx +9 -9
  80. package/src/Filter/FilterButtons.tsx +1 -0
  81. package/src/Footer/FooterPrivacy.tsx +4 -1
  82. package/src/Masthead/MastheadSearchModal.tsx +1 -0
  83. package/src/Resource/BlockResource.tsx +65 -4
  84. package/src/Resource/ListResource.tsx +85 -10
  85. package/src/ResourcesWrapper/ResourcesTopicTitle.tsx +5 -1
  86. package/src/Search/ContentTypeResult.tsx +0 -1
  87. package/src/SearchTypeResult/PopupFilter.tsx +3 -1
  88. package/src/SearchTypeResult/SearchItem.tsx +0 -1
  89. package/src/SearchTypeResult/components/ItemContexts.tsx +1 -0
  90. package/src/SnackBar/DefaultSnackbar.tsx +70 -0
  91. package/src/SnackBar/SnackbarProvider.tsx +147 -0
  92. package/src/SnackBar/index.ts +3 -5
  93. package/src/Topic/Topic.tsx +1 -0
  94. package/src/TreeStructure/FolderItem.tsx +56 -37
  95. package/src/TreeStructure/FolderItems.tsx +3 -2
  96. package/src/TreeStructure/TreeStructure.tsx +9 -4
  97. package/src/TreeStructure/types.ts +2 -1
  98. package/src/User/AuthModal.tsx +2 -1
  99. package/src/index.ts +2 -2
  100. package/src/locale/messages-en.ts +21 -0
  101. package/src/locale/messages-nb.ts +21 -0
  102. package/src/locale/messages-nn.ts +21 -0
  103. package/src/locale/messages-se.ts +21 -0
  104. package/src/locale/messages-sma.ts +21 -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/SnackBar/SnackBar.tsx +0 -183
@@ -7,8 +7,10 @@
7
7
  */
8
8
 
9
9
  import React, { KeyboardEvent, MouseEvent, useEffect, useRef } from 'react';
10
+ import { useTranslation } from 'react-i18next';
10
11
  import styled from '@emotion/styled';
11
12
  import { ArrowDropDown } from '@ndla/icons/common';
13
+ import { Done } from '@ndla/icons/editor';
12
14
  import { MenuButton } from '@ndla/button';
13
15
  import { FolderOutlined } from '@ndla/icons/contentType';
14
16
  import { colors, spacing, misc, animations } from '@ndla/core';
@@ -40,15 +42,11 @@ const FolderItemWrapper = styled.div`
40
42
  align-items: center;
41
43
  `;
42
44
 
43
- const WrapperForFolderChild = styled.div<{ selected?: boolean }>`
44
- position: absolute;
45
- right: ${spacing.xsmall};
46
- opacity: ${({ selected }) => (selected ? 1 : 0.25)};
47
- &:hover,
48
- &:focus,
49
- &:focus-within {
50
- opacity: 1;
51
- }
45
+ const WrapperForFolderChild = styled.div`
46
+ display: flex;
47
+ flex-direction: row;
48
+ align-items: center;
49
+ gap: ${spacing.xsmall};
52
50
  `;
53
51
 
54
52
  const shouldForwardProp = (name: string) => !['selected', 'noArrow'].includes(name);
@@ -59,9 +57,24 @@ interface FolderNameProps {
59
57
  }
60
58
 
61
59
  const FolderName = styled('button', { shouldForwardProp })<FolderNameProps>`
62
- line-height: 1;
60
+ cursor: pointer;
61
+ padding: ${spacing.xsmall};
62
+ margin: 0;
63
+ margin-left: ${({ noArrow }) => (noArrow ? `29px` : `0px`)};
64
+ flex-grow: 1;
65
+ display: grid;
66
+ grid-template-columns: auto 1fr auto;
67
+ align-items: center;
68
+ gap: ${spacing.xxsmall};
69
+ border: 0;
70
+ border-radius: ${misc.borderRadius};
71
+ box-shadow: none;
63
72
  background: ${({ selected }) => (selected ? colors.brand.lighter : 'transparent')};
64
73
  color: ${colors.text.primary};
74
+ transition: ${animations.durations.superFast};
75
+ text-align: left;
76
+ line-height: 1;
77
+ word-break: break-word;
65
78
  &:hover,
66
79
  &:focus {
67
80
  background: ${({ selected }) => (selected ? colors.brand.light : colors.brand.lightest)};
@@ -70,19 +83,10 @@ const FolderName = styled('button', { shouldForwardProp })<FolderNameProps>`
70
83
  opacity: 1;
71
84
  }
72
85
  }
73
- transition: ${animations.durations.superFast};
74
- border: 0;
75
- border-radius: ${misc.borderRadius};
76
- display: flex;
77
- gap: ${spacing.xxsmall};
78
- align-items: center;
79
- cursor: pointer;
80
- padding: ${spacing.xsmall};
81
- margin: 0;
82
- margin-left: ${({ noArrow }) => (noArrow ? `29px` : `0px`)};
83
- flex-grow: 1;
84
- box-shadow: none;
85
- text-align: left;
86
+ `;
87
+
88
+ const StyledDone = styled(Done)`
89
+ color: ${colors.support.green};
86
90
  `;
87
91
 
88
92
  const FolderNameLink = FolderName.withComponent(SafeLink);
@@ -110,24 +114,30 @@ const FolderItem = ({
110
114
  openOnFolderClick,
111
115
  setFocusedId,
112
116
  setSelectedFolder,
117
+ targetResource,
113
118
  visibleFolders,
114
119
  }: Props) => {
120
+ const { t } = useTranslation();
115
121
  const { id, icon, name } = folder;
116
122
  const ref = useRef<HTMLButtonElement & HTMLAnchorElement>(null);
117
123
  const selected = selectedFolder && selectedFolder.id === id;
118
124
  const focused = focusedFolderId === id;
119
125
 
120
126
  const handleClickFolder = () => {
121
- setSelectedFolder(folder);
122
- setFocusedId(id);
123
- onSelectFolder?.(id);
124
127
  if (openOnFolderClick) {
125
- if (isOpen) {
126
- onCloseFolder(id);
127
- } else {
128
- onOpenFolder(id);
128
+ if (selected) {
129
+ if (isOpen) {
130
+ onCloseFolder(id);
131
+ } else {
132
+ onOpenFolder(id);
133
+ }
129
134
  }
130
135
  }
136
+ if (!selected) {
137
+ setSelectedFolder(folder);
138
+ setFocusedId(id);
139
+ }
140
+ onSelectFolder?.(id);
131
141
  };
132
142
 
133
143
  useEffect(() => {
@@ -144,7 +154,10 @@ const FolderItem = ({
144
154
  };
145
155
  });
146
156
 
147
- const linkPath = `/minndla${level > 1 ? '/folders' : ''}/${id}`;
157
+ const linkPath = `/minndla${level > 0 ? '/folders' : ''}/${id}`;
158
+
159
+ const containsResource =
160
+ targetResource && folder.resources.some((resource) => resource.resourceId === targetResource.resourceId);
148
161
 
149
162
  return (
150
163
  <FolderItemWrapper>
@@ -170,12 +183,18 @@ const FolderItem = ({
170
183
  onClick={handleClickFolder}>
171
184
  {icon || <FolderOutlined />}
172
185
  {name}
173
- </FolderName>
174
- {actions && (
175
- <WrapperForFolderChild selected={selected}>
176
- <MenuButton size="xsmall" menuItems={actions} tabIndex={selected || id === focusedFolderId ? 0 : -1} />
186
+ <WrapperForFolderChild>
187
+ {containsResource && <StyledDone title={t('myNdla.alreadyInFolder')} />}
188
+ {actions && (
189
+ <MenuButton
190
+ onClick={(e) => e.stopPropagation()}
191
+ size="xsmall"
192
+ menuItems={actions}
193
+ tabIndex={selected || id === focusedFolderId ? 0 : -1}
194
+ />
195
+ )}
177
196
  </WrapperForFolderChild>
178
- )}
197
+ </FolderName>
179
198
  </>
180
199
  ) : (
181
200
  <FolderNameLink
@@ -185,7 +204,7 @@ const FolderItem = ({
185
204
  }
186
205
  noArrow={hideArrow}
187
206
  to={loading ? '' : linkPath}
188
- tabIndex={selected || focused || level === 1 ? 0 : -1}
207
+ tabIndex={selected || focused || level === 0 ? 0 : -1}
189
208
  selected={selected}
190
209
  onFocus={() => setFocusedId(id)}
191
210
  onClick={handleClickFolder}>
@@ -52,10 +52,11 @@ const FolderItems = ({
52
52
  openFolders,
53
53
  ...rest
54
54
  }: FolderItemsProps) => (
55
- <StyledUL role="group" firstLevel={level === 1}>
55
+ <StyledUL role="group" firstLevel={level === 0}>
56
56
  {folders.map((folder) => {
57
57
  const { subfolders, id } = folder;
58
58
  const isOpen = openFolders?.includes(id);
59
+
59
60
  return (
60
61
  <StyledLI key={id} role="treeitem">
61
62
  <div>
@@ -65,7 +66,7 @@ const FolderItems = ({
65
66
  isOpen={isOpen}
66
67
  level={level}
67
68
  loading={loading}
68
- noPaddingWhenArrowIsHidden={editable && level === 1 && subfolders?.length === 0}
69
+ noPaddingWhenArrowIsHidden={editable && level === 0 && subfolders?.length === 0}
69
70
  {...rest}
70
71
  />
71
72
  </div>
@@ -52,6 +52,7 @@ const TreeStructure = ({
52
52
  onNewFolder,
53
53
  onSelectFolder,
54
54
  openOnFolderClick,
55
+ targetResource,
55
56
  }: TreeStructureProps) => {
56
57
  const { t } = useTranslation();
57
58
 
@@ -68,10 +69,13 @@ const TreeStructure = ({
68
69
 
69
70
  useEffect(() => {
70
71
  if (defaultOpenFolders) {
71
- setOpenFolders((prev) => {
72
- return uniq(defaultOpenFolders.concat(prev));
73
- });
72
+ if (!defaultOpenFolders.every((element) => openFolders.includes(element))) {
73
+ setOpenFolders((prev) => {
74
+ return uniq(defaultOpenFolders.concat(prev));
75
+ });
76
+ }
74
77
  }
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
79
  }, [defaultOpenFolders]);
76
80
 
77
81
  useEffect(() => {
@@ -136,7 +140,7 @@ const TreeStructure = ({
136
140
  focusedFolderId={focusedId}
137
141
  menuItems={menuItems}
138
142
  folders={folders}
139
- level={1}
143
+ level={0}
140
144
  loading={loading}
141
145
  selectedFolder={selectedFolder}
142
146
  maximumLevelsOfFoldersAllowed={maximumLevelsOfFoldersAllowed}
@@ -150,6 +154,7 @@ const TreeStructure = ({
150
154
  openOnFolderClick={openOnFolderClick}
151
155
  setFocusedId={setFocusedId}
152
156
  setSelectedFolder={setSelectedFolder}
157
+ targetResource={targetResource}
153
158
  visibleFolders={visibleFolderIds}
154
159
  />
155
160
  </TreeStructureStyledWrapper>
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { MouseEvent, ReactNode } from 'react';
10
- import { IFolder } from '@ndla/types-learningpath-api';
10
+ import { IFolder, IResource } from '@ndla/types-learningpath-api';
11
11
  import { MenuItemProps } from '@ndla/button/src';
12
12
 
13
13
  export interface FolderType extends IFolder {
@@ -23,6 +23,7 @@ export interface CommonTreeStructureProps {
23
23
  onSelectFolder?: (id: string) => void;
24
24
  openOnFolderClick?: boolean;
25
25
  menuItems?: TreeStructureMenuProps[];
26
+ targetResource?: IResource;
26
27
  }
27
28
 
28
29
  export interface CommonFolderItemsProps extends CommonTreeStructureProps {
@@ -83,7 +83,8 @@ const AuthModal = ({
83
83
  position={position}
84
84
  isOpen={isOpen}
85
85
  onClose={onClose}
86
- controllable={!activateButton}>
86
+ controllable={!activateButton}
87
+ label={isAuthenticated ? t('user.modal.isAuth') : t('user.modal.isNotAuth')}>
87
88
  {(onClose: () => void) => (
88
89
  <StyledModalBody>
89
90
  <StyledModalHeader>
package/src/index.ts CHANGED
@@ -240,8 +240,8 @@ export type { ListResourceProps } from './Resource';
240
240
  export type { TagType } from './TagSelector';
241
241
  export { TagSelector } from './TagSelector';
242
242
 
243
- export type { SnackBarItem } from './SnackBar';
244
- export { SnackBar } from './SnackBar';
243
+ export { SnackbarProvider, useSnack, BaseSnack, DefaultSnackbar } from './SnackBar';
244
+ export type { Snack, SnackContext } from './SnackBar';
245
245
  export { InfoBlock } from './InfoBlock';
246
246
  export { TreeStructure } from './TreeStructure';
247
247
  export type { FolderType, TreeStructureProps, TreeStructureMenuProps } from './TreeStructure';
@@ -171,6 +171,7 @@ const messages = {
171
171
  contextModal: {
172
172
  button: '+ {{count}} more contexts',
173
173
  heading: 'The resource is used in several contexts',
174
+ ariaLabel: 'View more contexts',
174
175
  },
175
176
  },
176
177
 
@@ -217,6 +218,7 @@ const messages = {
217
218
  articleErrorDescription: 'Sorry, an error occurred while loading the topic description.',
218
219
  topic: 'TOPIC',
219
220
  topics: 'Topics',
221
+ imageModal: 'View full size image',
220
222
  },
221
223
  welcomePage: {
222
224
  search: 'Search',
@@ -274,6 +276,7 @@ const messages = {
274
276
  search: 'Search',
275
277
  toFrontpage: 'To frontpage',
276
278
  subjectOverview: 'All subjects',
279
+ modalLabel: 'Choose content',
277
280
  backToSubjectFrontpage: 'Back to subject frontpage',
278
281
  title: 'Content',
279
282
  subjectPage: 'Subject front page',
@@ -394,6 +397,7 @@ const messages = {
394
397
  competenceGoals: {
395
398
  competenceGoal: 'competence-goal',
396
399
  title: 'Competence goals and curriculum ',
400
+ modalText: 'Explore curriculum links',
397
401
  closeCompetenceGoals: 'Close competence goals',
398
402
  showCompetenceGoals: 'Show competence goals',
399
403
  openCompentenceGoalsFilter: 'Filter competence goals',
@@ -962,6 +966,8 @@ const messages = {
962
966
  collectedInfo: 'We have collected the following information about you from Feide:',
963
967
  general: 'Resources that require logging in with Feide, are tagged with the icon',
964
968
  topic: 'Log in with Feide to access this topic.',
969
+ isAuth: 'User info',
970
+ isNotAuth: 'Log in with Feide',
965
971
  },
966
972
  resource: {
967
973
  accessDenied: 'We are sorry, but this resource is only available to teachers who are logged in with Feide.',
@@ -996,7 +1002,10 @@ const messages = {
996
1002
  delete: 'Delete',
997
1003
  edit: 'Edit',
998
1004
  missingName: 'Folder name required',
1005
+ folderDeleted: '"{{folderName}}" deleted',
999
1006
  },
1007
+ tags: '{{count}} tag',
1008
+ tags_plural: '{{count}} tags',
1000
1009
  confirmDeleteFolder: 'Are you sure you want to delete this folder? This process cannot be undone.',
1001
1010
  confirmDeleteTag: 'Are you sure you want to delete this tag? This process cannot be undone.',
1002
1011
  myFolders: 'My folders',
@@ -1007,6 +1016,7 @@ const messages = {
1007
1016
  favourites: 'Favourites',
1008
1017
  addToFavourites: 'Add to my favourites',
1009
1018
  alreadyFavourited: 'Already in my favourites',
1019
+ alreadyInFolder: 'Already in folder',
1010
1020
  help: 'Help',
1011
1021
  more: 'More options',
1012
1022
  listView: 'List view',
@@ -1015,6 +1025,9 @@ const messages = {
1015
1025
  myPage: {
1016
1026
  myPage: 'My page',
1017
1027
  logout: 'Log out of My NDLA',
1028
+ loginTerms: 'Log in with Feide to receive access. By logging on your accept your terms of service',
1029
+ loginResourcePitch: 'Do you want to favorite this page?',
1030
+ loginWelcome: 'Welcome to My NDLA! This page allows you to organize your articles in your <i>own</i> way!',
1018
1031
  deleteAccount: 'Delete My NDLA',
1019
1032
  welcome:
1020
1033
  'Welcome to my NDLA! You can now save your favourite resources from NDLA and organise them in folders with tags',
@@ -1047,9 +1060,17 @@ const messages = {
1047
1060
  resource: {
1048
1061
  add: 'Add folder/tag',
1049
1062
  remove: 'Remove',
1063
+ removeTitle: 'Remove resource',
1064
+ confirmRemove: 'Are you sure you want to remove the resource from this folder?',
1050
1065
  copyLink: 'Copy link to this page',
1066
+ linkCopied: 'Copied to clipboard',
1051
1067
  addToMyNdla: 'Add to My NDLA',
1052
1068
  addedToMyNdla: 'Added to My NDLA',
1069
+ addedToFolder: 'Resource added to "{{folderName}}"',
1070
+ removedFromFolder: 'Removed from "{{folderName}}"',
1071
+ titleUpdated: 'Title updated',
1072
+ tagsUpdated: 'Tags updated',
1073
+ show: 'Show',
1053
1074
  },
1054
1075
  },
1055
1076
  snackbar: {
@@ -171,6 +171,7 @@ const messages = {
171
171
  contextModal: {
172
172
  button: '+ {{count}} flere steder',
173
173
  heading: 'Ressursen er brukt flere steder',
174
+ ariaLabel: 'Se flere kontekster',
174
175
  },
175
176
  },
176
177
  subjectPage: {
@@ -216,6 +217,7 @@ const messages = {
216
217
  articleErrorDescription: 'Beklager, en feil oppstod under lasting av emnebeskrivelsen.',
217
218
  topic: 'EMNE',
218
219
  topics: 'Emner',
220
+ imageModal: 'Se bildet i full størrelse',
219
221
  },
220
222
  welcomePage: {
221
223
  search: 'Søk',
@@ -274,6 +276,7 @@ const messages = {
274
276
  toFrontpage: 'Til forsiden',
275
277
  subjectOverview: 'Alle fag',
276
278
  title: 'Innhold',
279
+ modalLabel: 'Velg innhold',
277
280
  subjectPage: 'Fagforside',
278
281
  backToSubjectFrontpage: 'Tilbake til fagforsiden',
279
282
  openFilter: 'Filter',
@@ -392,6 +395,7 @@ const messages = {
392
395
  competenceGoals: {
393
396
  competenceGoal: 'kompetansemål',
394
397
  title: 'Kompetansemål og læreplan',
398
+ modalText: 'Utforsk læreplankoblinger',
395
399
  closeCompetenceGoals: 'Lukk kompetansemål',
396
400
  showCompetenceGoals: 'Vis kompetansemål',
397
401
  openCompentenceGoalsFilter: 'Filtrer kompetansemål',
@@ -960,6 +964,8 @@ const messages = {
960
964
  collectedInfo: 'Vi har hentet følgende informasjon om deg fra Feide:',
961
965
  general: 'Ressursene som krever pålogging med Feide, vises med ikonet',
962
966
  topic: 'Logg inn med Feide for å få tilgang til dette emnet.',
967
+ isAuth: 'Brukerinfo',
968
+ isNotAuth: 'Logg inn med Feide',
963
969
  },
964
970
  resource: {
965
971
  accessDenied: 'Vi beklager, men denne ressursen er bare for lærere innlogget med Feide.',
@@ -994,7 +1000,10 @@ const messages = {
994
1000
  delete: 'Slett',
995
1001
  edit: 'Rediger',
996
1002
  missingName: 'Mappenavn er påkrevd',
1003
+ folderDeleted: '"{{folderName}}" er slettet',
997
1004
  },
1005
+ tags: '{{count}} tag',
1006
+ tags_plural: '{{count}} tags',
998
1007
  confirmDeleteFolder: 'Er du sikker på at du vil slette mappen? Denne handlingen kan ikke angres.',
999
1008
  confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlingen kan ikke angres.',
1000
1009
  myFolders: 'Mine mapper',
@@ -1005,6 +1014,7 @@ const messages = {
1005
1014
  favourites: 'Favoritter',
1006
1015
  addToFavourites: 'Legg til i mine favoritter',
1007
1016
  alreadyFavourited: 'Allerede lagt til i mine favoritter',
1017
+ alreadyInFolder: 'Finnes allerede i mappen',
1008
1018
  help: 'Hjelp',
1009
1019
  more: 'Flere valg',
1010
1020
  listView: 'Listevisning',
@@ -1014,6 +1024,9 @@ const messages = {
1014
1024
  myPage: 'Min side',
1015
1025
  deleteAccount: 'Slett Min NDLA',
1016
1026
  logout: 'Logg ut av Min NDLA',
1027
+ loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjenner du våre vilkår for bruk',
1028
+ loginResourcePitch: 'Ønsker du å favorittmerke denne siden?',
1029
+ loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
1017
1030
  welcome:
1018
1031
  'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
1019
1032
  read: { our: 'Les våre', ours: 'Les vår' },
@@ -1045,9 +1058,17 @@ const messages = {
1045
1058
  resource: {
1046
1059
  add: 'Legg til mappe/tag',
1047
1060
  remove: 'Fjern',
1061
+ removeTitle: 'Fjern ressurs',
1062
+ confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen fra denne mappen?',
1048
1063
  copyLink: 'Kopier lenke til siden',
1064
+ linkCopied: 'Kopiert til utklippstavle',
1049
1065
  addToMyNdla: 'Legg i Min NDLA',
1050
1066
  addedToMyNdla: 'Lagt i Min NDLA',
1067
+ addedToFolder: 'Ressurs er lagt i "{{folderName}}"',
1068
+ removedFromFolder: 'Fjernet fra "{{folderName}}"',
1069
+ titleUpdated: 'Tittel oppdatert',
1070
+ tagsUpdated: 'Tags oppdatert',
1071
+ show: 'Vis',
1051
1072
  },
1052
1073
  },
1053
1074
  snackbar: {
@@ -171,6 +171,7 @@ const messages = {
171
171
  contextModal: {
172
172
  button: '+ {{count}} fleire stader',
173
173
  heading: 'Ressursen er brukt fleire stader',
174
+ ariaLabel: 'Sjå fleire kontekstar',
174
175
  },
175
176
  },
176
177
  subjectPage: {
@@ -216,6 +217,7 @@ const messages = {
216
217
  articleErrorDescription: 'Orsak, ein feil oppstod under lasting av emneskildringa.',
217
218
  topic: 'EMNE',
218
219
  topics: 'Emne',
220
+ imageModal: 'Sjå biletet i full storleik',
219
221
  },
220
222
  welcomePage: {
221
223
  search: 'Søk',
@@ -274,6 +276,7 @@ const messages = {
274
276
  toFrontpage: 'Til framsida',
275
277
  subjectOverview: 'Alle fag',
276
278
  title: 'Innhald',
279
+ modalLabel: 'Vel innhald',
277
280
  subjectPage: 'Fagframside',
278
281
  backToSubjectFrontpage: 'Tilbake til fagframsida',
279
282
  openFilter: 'Filter',
@@ -393,6 +396,7 @@ const messages = {
393
396
  competenceGoals: {
394
397
  competenceGoal: 'kompetansemål',
395
398
  title: 'Kompetansemål og læreplan',
399
+ modalText: 'Utforsk læreplankoplingar',
396
400
  closeCompetenceGoals: 'Lukk kompetansemål',
397
401
  showCompetenceGoals: 'Vis kompetansemål',
398
402
  openCompentenceGoalsFilter: 'Filtrer kompetansemål',
@@ -961,6 +965,8 @@ const messages = {
961
965
  collectedInfo: 'Vi har henta denne informasjonen om deg frå Feide:',
962
966
  general: 'Ressursane som krev pålogging med Feide, vises med ikonet',
963
967
  topic: ' Logg inn med Feide for å få tilgang til dette emnet.',
968
+ isAuth: 'Brukarinfo',
969
+ isNotAuth: 'Logg inn med Feide',
964
970
  },
965
971
  resource: {
966
972
  accessDenied: 'Vi beklagar, men denne ressursen er berre for lærarar innlogga med Feide.',
@@ -995,7 +1001,10 @@ const messages = {
995
1001
  delete: 'Slett',
996
1002
  edit: 'Rediger',
997
1003
  missingName: 'Mappenavn er påkrevd',
1004
+ folderDeleted: '"{{folderName}}" er sletta',
998
1005
  },
1006
+ tags: '{{count}} tag',
1007
+ tags_plural: '{{count}} tags',
999
1008
  confirmDeleteFolder: 'Er du sikker på at du vil slette mappa? Denne handlinga kan ikkje angres.',
1000
1009
  confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlinga kan ikkje angres.',
1001
1010
  myFolders: 'Mine mapper',
@@ -1006,6 +1015,7 @@ const messages = {
1006
1015
  favourites: 'Favorittar',
1007
1016
  addToFavourites: 'Legg til i mine favorittar',
1008
1017
  alreadyFavourited: 'Allereie lagt til i mine favorittar',
1018
+ alreadyInFolder: 'Finnes allereie i mappa',
1009
1019
  help: 'Hjelp',
1010
1020
  more: 'Fleire val',
1011
1021
  listView: 'Listevisning',
@@ -1015,6 +1025,9 @@ const messages = {
1015
1025
  myPage: 'Min side',
1016
1026
  deleteAccount: 'Slett Min NDLA',
1017
1027
  logout: 'Logg ut av Min NDLA',
1028
+ loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjennar du våre vilkår for bruk',
1029
+ loginResourcePitch: 'Ønsker du å favorittmerke denne sida?',
1030
+ loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
1018
1031
  welcome:
1019
1032
  'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
1020
1033
  read: { our: 'Les våre', ours: 'Les vår' },
@@ -1045,9 +1058,17 @@ const messages = {
1045
1058
  resource: {
1046
1059
  add: 'Legg til mappe/tag',
1047
1060
  remove: 'Fjern',
1061
+ removeTitle: 'Fjern ressurs',
1062
+ confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
1048
1063
  copyLink: 'Kopier lenke til sida',
1064
+ linkCopied: 'Kopiert til utklippstavla',
1049
1065
  addToMyNdla: 'Legg i Min NDLA',
1050
1066
  addedToMyNdla: 'Lagt i Min NDLA',
1067
+ addedToFolder: 'Ressurs er lagt i "{{folderName}}"',
1068
+ removedFromFolder: 'Fjernet fra "{{folderName}}"',
1069
+ titleUpdated: 'Tittel oppdatert',
1070
+ tagsUpdated: 'Tags oppdatert',
1071
+ show: 'Vis',
1051
1072
  },
1052
1073
  },
1053
1074
  snackbar: {
@@ -171,6 +171,7 @@ const messages = {
171
171
  contextModal: {
172
172
  button: '+ {{count}} flere steder',
173
173
  heading: 'Ressursen er brukt flere steder',
174
+ ariaLabel: 'Se flere kontekster',
174
175
  },
175
176
  },
176
177
  subjectPage: {
@@ -216,6 +217,7 @@ const messages = {
216
217
  articleErrorDescription: 'Beklager, en feil oppstod under lasting av emnebeskrivelsen.',
217
218
  topic: 'EMNE',
218
219
  topics: 'Emner',
220
+ imageModal: 'Se bildet i full størrelse',
219
221
  },
220
222
  welcomePage: {
221
223
  search: 'Søk',
@@ -274,6 +276,7 @@ const messages = {
274
276
  toFrontpage: 'Til forsiden',
275
277
  subjectOverview: 'Alle fag',
276
278
  title: 'Innhold',
279
+ modalLabel: 'Velg innhold',
277
280
  subjectPage: 'Fagforside',
278
281
  backToSubjectFrontpage: 'Tilbake til fagforsiden',
279
282
  openFilter: 'Filter',
@@ -392,6 +395,7 @@ const messages = {
392
395
  competenceGoals: {
393
396
  competenceGoal: 'kompetansemål',
394
397
  title: 'Kompetansemål og læreplan',
398
+ modalText: 'Utforsk læreplankoblinger',
395
399
  closeCompetenceGoals: 'Lukk kompetansemål',
396
400
  showCompetenceGoals: 'Vis kompetansemål',
397
401
  openCompentenceGoalsFilter: 'Filtrer kompetansemål',
@@ -960,6 +964,8 @@ const messages = {
960
964
  collectedInfo: 'Vi har hentet følgende informasjon om deg fra Feide:',
961
965
  general: 'Ressursene som krever pålogging med Feide, vises med ikonet',
962
966
  topic: 'Logg inn med Feide for å få tilgang til dette emnet.',
967
+ isAuth: 'Brukerinfo',
968
+ isNotAuth: 'Logg inn med Feide',
963
969
  },
964
970
  resource: {
965
971
  accessDenied: 'Vi beklager, men denne ressursen er bare for lærere innlogget med Feide.',
@@ -994,7 +1000,10 @@ const messages = {
994
1000
  delete: 'Slett',
995
1001
  edit: 'Rediger',
996
1002
  missingName: 'Mappenavn er påkrevd',
1003
+ folderDeleted: '"{{folderName}}" er sletta',
997
1004
  },
1005
+ tags: '{{count}} tag',
1006
+ tags_plural: '{{count}} tags',
998
1007
  confirmDeleteFolder: 'Er du sikker på at du vil slette mappen? Denne handlingen kan ikke angres.',
999
1008
  confirmDeleteTag: 'Er du sikker på at du vil slette tag? Denne handlingen kan ikke angres.',
1000
1009
  myFolders: 'Mine mapper',
@@ -1005,6 +1014,7 @@ const messages = {
1005
1014
  favourites: 'Favoritter',
1006
1015
  addToFavourites: 'Legg til i mine favoritter',
1007
1016
  alreadyFavourited: 'Allerede lagt til i mine favoritter',
1017
+ alreadyInFolder: 'Finnes allerede i mappen',
1008
1018
  help: 'Hjelp',
1009
1019
  more: 'Flere valg',
1010
1020
  listView: 'Listevisning',
@@ -1014,6 +1024,9 @@ const messages = {
1014
1024
  myPage: 'Min side',
1015
1025
  deleteAccount: 'Slett Min NDLA',
1016
1026
  logout: 'Logg ut av Min NDLA',
1027
+ loginTerms: 'Logg på med Feide for å få tilgang. Ved å logge på godkjennar du våre vilkår for bruk',
1028
+ loginResourcePitch: 'Ønsker du å favorittmerke denne sida?',
1029
+ loginWelcome: 'Velkommen til NDLA! Her kan du organisere fagstoffet på <i>din</i> måte!',
1017
1030
  welcome:
1018
1031
  'Velkommen til Min NDLA! Nå kan du lagre dine favorittressurser fra NDLA og organisere dem slik du ønsker i mapper og med tags.',
1019
1032
  read: { our: 'Les våre', ours: 'Les vår' },
@@ -1045,9 +1058,17 @@ const messages = {
1045
1058
  resource: {
1046
1059
  add: 'Legg til mappe/tag',
1047
1060
  remove: 'Fjern',
1061
+ removeTitle: 'Fjern ressurs',
1062
+ confirmRemove: 'Er du sikker på at du ønsker å fjerne ressursen frå denne mappen?',
1048
1063
  copyLink: 'Kopier lenke til siden',
1064
+ linkCopied: 'Kopiert til utklippstavla',
1049
1065
  addToMyNdla: 'Legg i Min NDLA',
1050
1066
  addedToMyNdla: 'Lagt i Min NDLA',
1067
+ addedToFolder: 'Ressurs er lagt i "{{folderName}}"',
1068
+ removedFromFolder: 'Fjernet fra "{{folderName}}"',
1069
+ titleUpdated: 'Tittel oppdatert',
1070
+ tagsUpdated: 'Tags oppdatert',
1071
+ show: 'Vis',
1051
1072
  },
1052
1073
  },
1053
1074
  snackbar: {