@ndla/ui 25.3.0 → 26.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 (63) hide show
  1. package/es/LanguageSelector/LanguageSelector.js +12 -7
  2. package/es/MyNdla/Resource/Folder.js +10 -8
  3. package/es/Resource/BlockResource.js +9 -7
  4. package/es/Resource/ListResource.js +10 -8
  5. package/es/TreeStructure/FolderItem.js +110 -94
  6. package/es/TreeStructure/FolderItems.js +26 -30
  7. package/es/TreeStructure/FolderNameInput.js +35 -27
  8. package/es/TreeStructure/NavigationLink.js +81 -0
  9. package/es/TreeStructure/TreeStructure.js +169 -45
  10. package/es/locale/messages-en.js +4 -1
  11. package/es/locale/messages-nb.js +4 -1
  12. package/es/locale/messages-nn.js +4 -1
  13. package/es/locale/messages-se.js +4 -1
  14. package/es/locale/messages-sma.js +4 -1
  15. package/lib/LanguageSelector/LanguageSelector.js +13 -7
  16. package/lib/MyNdla/Resource/Folder.d.ts +2 -1
  17. package/lib/MyNdla/Resource/Folder.js +10 -8
  18. package/lib/Resource/BlockResource.d.ts +2 -1
  19. package/lib/Resource/BlockResource.js +9 -7
  20. package/lib/Resource/ListResource.d.ts +2 -1
  21. package/lib/Resource/ListResource.js +10 -8
  22. package/lib/TreeStructure/FolderItem.d.ts +2 -3
  23. package/lib/TreeStructure/FolderItem.js +107 -92
  24. package/lib/TreeStructure/FolderItems.d.ts +1 -3
  25. package/lib/TreeStructure/FolderItems.js +26 -29
  26. package/lib/TreeStructure/FolderNameInput.d.ts +2 -1
  27. package/lib/TreeStructure/FolderNameInput.js +33 -26
  28. package/lib/TreeStructure/NavigationLink.d.ts +15 -0
  29. package/lib/TreeStructure/NavigationLink.js +100 -0
  30. package/lib/TreeStructure/TreeStructure.d.ts +1 -2
  31. package/lib/TreeStructure/TreeStructure.js +163 -45
  32. package/lib/TreeStructure/types.d.ts +4 -1
  33. package/lib/locale/messages-en.d.ts +3 -0
  34. package/lib/locale/messages-en.js +4 -1
  35. package/lib/locale/messages-nb.d.ts +3 -0
  36. package/lib/locale/messages-nb.js +4 -1
  37. package/lib/locale/messages-nn.d.ts +3 -0
  38. package/lib/locale/messages-nn.js +4 -1
  39. package/lib/locale/messages-se.d.ts +3 -0
  40. package/lib/locale/messages-se.js +4 -1
  41. package/lib/locale/messages-sma.d.ts +3 -0
  42. package/lib/locale/messages-sma.js +4 -1
  43. package/package.json +11 -11
  44. package/src/.DS_Store +0 -0
  45. package/src/LanguageSelector/LanguageSelector.tsx +4 -1
  46. package/src/MyNdla/Resource/Folder.tsx +3 -2
  47. package/src/Resource/BlockResource.tsx +3 -1
  48. package/src/Resource/ListResource.tsx +3 -1
  49. package/src/TreeStructure/FolderItem.tsx +126 -104
  50. package/src/TreeStructure/FolderItems.tsx +51 -43
  51. package/src/TreeStructure/FolderNameInput.tsx +43 -28
  52. package/src/TreeStructure/NavigationLink.tsx +100 -0
  53. package/src/TreeStructure/TreeStructure.tsx +187 -61
  54. package/src/TreeStructure/types.ts +5 -1
  55. package/src/locale/messages-en.ts +3 -0
  56. package/src/locale/messages-nb.ts +3 -0
  57. package/src/locale/messages-nn.ts +3 -0
  58. package/src/locale/messages-se.ts +3 -0
  59. package/src/locale/messages-sma.ts +3 -0
  60. package/es/TreeStructure/TreeStructureWrapper.js +0 -13
  61. package/lib/TreeStructure/TreeStructureWrapper.d.ts +0 -12
  62. package/lib/TreeStructure/TreeStructureWrapper.js +0 -24
  63. package/src/TreeStructure/TreeStructureWrapper.tsx +0 -31
@@ -10,7 +10,9 @@ import { IFolder, IResource } from '@ndla/types-learningpath-api';
10
10
  import { MenuItemProps } from '@ndla/button';
11
11
  export interface FolderType extends IFolder {
12
12
  icon?: ReactNode;
13
+ isNavigation?: boolean;
13
14
  }
15
+ export declare type TreeStructureType = 'normal' | 'navigation' | 'picker';
14
16
  export interface TreeStructureMenuProps extends Omit<MenuItemProps, 'onClick'> {
15
17
  onClick: (e: MouseEvent<HTMLDivElement> | undefined, folder: FolderType) => void;
16
18
  }
@@ -18,13 +20,14 @@ export interface CommonTreeStructureProps {
18
20
  loading?: boolean;
19
21
  onSelectFolder?: (id: string) => void;
20
22
  openOnFolderClick?: boolean;
21
- menuItems?: TreeStructureMenuProps[];
22
23
  targetResource?: IResource;
23
24
  framed?: boolean;
25
+ type: TreeStructureType;
24
26
  }
25
27
  export interface CommonFolderItemsProps extends CommonTreeStructureProps {
26
28
  focusedFolderId?: string;
27
29
  level: number;
30
+ maxLevel: number;
28
31
  selectedFolder?: FolderType;
29
32
  onCloseFolder: (id: string) => void;
30
33
  onOpenFolder: (id: string) => void;
@@ -67,6 +67,7 @@ declare const messages: {
67
67
  edit: string;
68
68
  missingName: string;
69
69
  folderDeleted: string;
70
+ folderCreated: string;
70
71
  };
71
72
  tags: string;
72
73
  tags_plural: string;
@@ -169,6 +170,8 @@ declare const messages: {
169
170
  edit: string;
170
171
  delete: string;
171
172
  };
173
+ hideFolders: string;
174
+ showFolders: string;
172
175
  createFolder: string;
173
176
  maxFoldersAlreadyAdded: string;
174
177
  newFolder: {
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
33
33
  edit: 'Edit foldername',
34
34
  "delete": 'Delete'
35
35
  },
36
+ hideFolders: 'Hide all folders',
37
+ showFolders: 'Show all folders',
36
38
  createFolder: 'Create folder',
37
39
  maxFoldersAlreadyAdded: 'Maximum subfolders reached',
38
40
  newFolder: {
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
954
956
  "delete": 'Delete folder',
955
957
  edit: 'Edit folder',
956
958
  missingName: 'Folder name required',
957
- folderDeleted: '"{{folderName}}" deleted'
959
+ folderDeleted: '"{{folderName}}" deleted',
960
+ folderCreated: '"{{folderName}} created'
958
961
  },
959
962
  tags: '{{count}} tag',
960
963
  tags_plural: '{{count}} tags',
@@ -67,6 +67,7 @@ declare const messages: {
67
67
  edit: string;
68
68
  missingName: string;
69
69
  folderDeleted: string;
70
+ folderCreated: string;
70
71
  };
71
72
  tags: string;
72
73
  tags_plural: string;
@@ -169,6 +170,8 @@ declare const messages: {
169
170
  edit: string;
170
171
  delete: string;
171
172
  };
173
+ hideFolders: string;
174
+ showFolders: string;
172
175
  createFolder: string;
173
176
  maxFoldersAlreadyAdded: string;
174
177
  newFolder: {
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
33
33
  edit: 'Endre mappenavn',
34
34
  "delete": 'Slett'
35
35
  },
36
+ hideFolders: 'Skjul alle mapper',
37
+ showFolders: 'Vis alle mapper',
36
38
  createFolder: 'Lag mappe',
37
39
  maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
38
40
  newFolder: {
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
954
956
  "delete": 'Slett mappe',
955
957
  edit: 'Rediger mappe',
956
958
  missingName: 'Skriv navn på mappe',
957
- folderDeleted: '"{{folderName}}" er slettet'
959
+ folderDeleted: '"{{folderName}}" er slettet',
960
+ folderCreated: '"{{folderName}}" er opprettet'
958
961
  },
959
962
  tags: '{{count}} emneknagg',
960
963
  tags_plural: '{{count}} emneknagger',
@@ -67,6 +67,7 @@ declare const messages: {
67
67
  edit: string;
68
68
  missingName: string;
69
69
  folderDeleted: string;
70
+ folderCreated: string;
70
71
  };
71
72
  tags: string;
72
73
  tags_plural: string;
@@ -169,6 +170,8 @@ declare const messages: {
169
170
  edit: string;
170
171
  delete: string;
171
172
  };
173
+ hideFolders: string;
174
+ showFolders: string;
172
175
  createFolder: string;
173
176
  maxFoldersAlreadyAdded: string;
174
177
  newFolder: {
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
33
33
  edit: 'Endre mappenamn',
34
34
  "delete": 'Slett'
35
35
  },
36
+ hideFolders: 'Skjul alle mapper',
37
+ showFolders: 'Vis alle mapper',
36
38
  createFolder: 'Lag mappe',
37
39
  maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
38
40
  newFolder: {
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
954
956
  "delete": 'Slett mappe',
955
957
  edit: 'Rediger mappe',
956
958
  missingName: 'Skriv namn på mappe',
957
- folderDeleted: '"{{folderName}}" er sletta'
959
+ folderDeleted: '"{{folderName}}" er sletta',
960
+ folderCreated: '"{{folderName}}" er oppretta'
958
961
  },
959
962
  tags: '{{count}} emneknagg',
960
963
  tags_plural: '{{count}} emneknaggar',
@@ -67,6 +67,7 @@ declare const messages: {
67
67
  edit: string;
68
68
  missingName: string;
69
69
  folderDeleted: string;
70
+ folderCreated: string;
70
71
  };
71
72
  tags: string;
72
73
  tags_plural: string;
@@ -169,6 +170,8 @@ declare const messages: {
169
170
  edit: string;
170
171
  delete: string;
171
172
  };
173
+ hideFolders: string;
174
+ showFolders: string;
172
175
  createFolder: string;
173
176
  maxFoldersAlreadyAdded: string;
174
177
  newFolder: {
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
33
33
  edit: 'Rievdat máhpa nama',
34
34
  "delete": 'Sihko'
35
35
  },
36
+ hideFolders: 'Skjul alle mapper',
37
+ showFolders: 'Vis alle mapper',
36
38
  createFolder: 'Ráhkat máhpa',
37
39
  maxFoldersAlreadyAdded: 'Vuollemáhpaid badjerádji lea olahuvvon',
38
40
  newFolder: {
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
954
956
  "delete": 'Sihko',
955
957
  edit: 'Redigere',
956
958
  missingName: 'Čále nama máhppii',
957
- folderDeleted: '"{{folderName}}" lea sihkkojuvvon'
959
+ folderDeleted: '"{{folderName}}" lea sihkkojuvvon',
960
+ folderCreated: '"{{folderName}}" er oppretta'
958
961
  },
959
962
  tags: '{{count}} fáddágilkor',
960
963
  tags_plural: '{{count}} fáddágilkorat',
@@ -67,6 +67,7 @@ declare const messages: {
67
67
  edit: string;
68
68
  missingName: string;
69
69
  folderDeleted: string;
70
+ folderCreated: string;
70
71
  };
71
72
  tags: string;
72
73
  tags_plural: string;
@@ -169,6 +170,8 @@ declare const messages: {
169
170
  edit: string;
170
171
  delete: string;
171
172
  };
173
+ hideFolders: string;
174
+ showFolders: string;
172
175
  createFolder: string;
173
176
  maxFoldersAlreadyAdded: string;
174
177
  newFolder: {
@@ -33,6 +33,8 @@ var messages = _objectSpread(_objectSpread({
33
33
  edit: 'Endre mappenavn',
34
34
  "delete": 'Slett'
35
35
  },
36
+ hideFolders: 'Skjul alle mapper',
37
+ showFolders: 'Vis alle mapper',
36
38
  createFolder: 'Lag mappe',
37
39
  maxFoldersAlreadyAdded: 'Maks nivå av undermapper nådd',
38
40
  newFolder: {
@@ -954,7 +956,8 @@ var messages = _objectSpread(_objectSpread({
954
956
  "delete": 'Slett mappe',
955
957
  edit: 'Rediger mappe',
956
958
  missingName: 'Skriv navn på mappe',
957
- folderDeleted: '"{{folderName}}" er slettet'
959
+ folderDeleted: '"{{folderName}}" er slettet',
960
+ folderCreated: '"{{folderName}}" er oppretta'
958
961
  },
959
962
  tags: '{{count}} emneknagg',
960
963
  tags_plural: '{{count}} emneknagger',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/ui",
3
- "version": "25.3.0",
3
+ "version": "26.1.0",
4
4
  "description": "UI component library for NDLA.",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -32,18 +32,18 @@
32
32
  ],
33
33
  "dependencies": {
34
34
  "@ndla/article-scripts": "^3.0.2",
35
- "@ndla/button": "^3.4.1",
36
- "@ndla/carousel": "^1.2.21",
35
+ "@ndla/button": "^3.5.0",
36
+ "@ndla/carousel": "^1.2.22",
37
37
  "@ndla/core": "^2.3.5",
38
- "@ndla/forms": "^3.2.0",
38
+ "@ndla/forms": "^3.3.0",
39
39
  "@ndla/hooks": "^1.1.6",
40
- "@ndla/icons": "^1.12.0",
41
- "@ndla/licenses": "^5.0.15",
42
- "@ndla/modal": "^1.3.5",
43
- "@ndla/notion": "^3.1.39",
44
- "@ndla/safelink": "^2.2.13",
40
+ "@ndla/icons": "^1.12.1",
41
+ "@ndla/licenses": "^5.0.16",
42
+ "@ndla/modal": "^1.3.6",
43
+ "@ndla/notion": "^3.1.40",
44
+ "@ndla/safelink": "^2.2.14",
45
45
  "@ndla/switch": "^0.1.13",
46
- "@ndla/tabs": "^1.1.20",
46
+ "@ndla/tabs": "^1.1.21",
47
47
  "@ndla/tooltip": "^2.2.1",
48
48
  "@ndla/types-learningpath-api": "^0.0.13",
49
49
  "@ndla/util": "^3.1.0",
@@ -85,5 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "gitHead": "b00cf1eb600a2fa9b3113b51abd0c7b2f02d0860"
88
+ "gitHead": "578a4353f768a0eb2b3e2334272c10d920de9632"
89
89
  }
package/src/.DS_Store ADDED
Binary file
@@ -115,7 +115,9 @@ interface StyledButtonProps {
115
115
  inverted?: boolean;
116
116
  }
117
117
 
118
- const StyledButton = styled(Button)<StyledButtonProps>`
118
+ const shouldForwardProp = (name: string) => name !== 'outline';
119
+
120
+ const StyledButton = styled(Button, { shouldForwardProp })<StyledButtonProps>`
119
121
  border-color: ${({ inverted, outline }) =>
120
122
  outline ? (inverted ? colors.white : colors.brand.primary) : 'transparent'};
121
123
  `;
@@ -139,6 +141,7 @@ const LanguageSelector = ({ currentLanguage, outline, center, inverted, alwaysVi
139
141
  </StyledSpan>
140
142
  <ChevronDown />
141
143
  </StyledButton>
144
+
142
145
  {isOpen && (
143
146
  <FocusTrapReact
144
147
  active
@@ -78,6 +78,7 @@ const FolderWrapper = styled(SafeLink)`
78
78
  `;
79
79
 
80
80
  interface Props {
81
+ id: string;
81
82
  title: string;
82
83
  subFolders?: number;
83
84
  subResources?: number;
@@ -131,10 +132,10 @@ const IconCount = ({ type, count, layoutType }: IconCountProps) => {
131
132
 
132
133
  type LayoutType = 'list' | 'block';
133
134
 
134
- const Folder = ({ link, title, subFolders, subResources, type = 'list', menuItems }: Props) => {
135
+ const Folder = ({ id, link, title, subFolders, subResources, type = 'list', menuItems }: Props) => {
135
136
  const { t } = useTranslation();
136
137
  return (
137
- <FolderWrapper to={link}>
138
+ <FolderWrapper to={link} id={id}>
138
139
  <FolderIconWrapper type={type}>
139
140
  <FolderOutlined aria-label={t('myNdla.folder.folder')} />
140
141
  </FolderIconWrapper>
@@ -16,6 +16,7 @@ import { CompressedTagList, ResourceImageProps, ResourceTitle, Row, TopicList }
16
16
  import ContentLoader from '../ContentLoader';
17
17
 
18
18
  interface BlockResourceProps {
19
+ id: string;
19
20
  link: string;
20
21
  tagLinkPrefix?: string;
21
22
  title: string;
@@ -132,6 +133,7 @@ const BlockTopicList = ({ topics, loading }: BlockTopicListProps) => {
132
133
  };
133
134
 
134
135
  const BlockResource = ({
136
+ id,
135
137
  link,
136
138
  tagLinkPrefix,
137
139
  title,
@@ -143,7 +145,7 @@ const BlockResource = ({
143
145
  isLoading,
144
146
  }: BlockResourceProps) => {
145
147
  return (
146
- <BlockElementWrapper to={link}>
148
+ <BlockElementWrapper to={link} id={id}>
147
149
  <ImageWrapper>
148
150
  <BlockImage image={resourceImage} loading={isLoading} />
149
151
  </ImageWrapper>
@@ -108,6 +108,7 @@ interface StyledImageProps {
108
108
  }
109
109
 
110
110
  export interface ListResourceProps {
111
+ id: string;
111
112
  link: string;
112
113
  tagLinkPrefix?: string;
113
114
  title: string;
@@ -186,6 +187,7 @@ const ResourceDescription = ({ description, loading }: ResourceDescriptionProps)
186
187
  };
187
188
 
188
189
  const ListResource = ({
190
+ id,
189
191
  link,
190
192
  tagLinkPrefix,
191
193
  title,
@@ -200,7 +202,7 @@ const ListResource = ({
200
202
  const imageType = showDescription ? 'normal' : 'compact';
201
203
 
202
204
  return (
203
- <ResourceWrapper to={link}>
205
+ <ResourceWrapper to={link} id={id}>
204
206
  <StyledImageWrapper imageSize={imageType}>
205
207
  <ListResourceImage resourceImage={resourceImage} loading={isLoading} type={imageType} />
206
208
  </StyledImageWrapper>