@ndla/ui 50.9.5 → 50.9.7

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 (126) hide show
  1. package/es/Article/ArticleNotions.js +6 -6
  2. package/es/AudioPlayer/Controls.js +22 -22
  3. package/es/ContentPlaceholder/ContentPlaceholder.js +4 -12
  4. package/es/CopyParagraphButton/CopyParagraphButton.js +3 -3
  5. package/es/Embed/ConceptEmbed.js +14 -11
  6. package/es/Embed/conceptComponents.js +11 -11
  7. package/es/FactBox/FactBox.js +8 -24
  8. package/es/Filter/FilterCarousel.js +6 -5
  9. package/es/Footer/Footer.js +9 -17
  10. package/es/Grid/Grid.js +3 -3
  11. package/es/Hero/Hero.js +1 -1
  12. package/es/Hero/HeroContent.js +3 -3
  13. package/es/KeyFigure/KeyFigure.js +4 -4
  14. package/es/LearningPaths/LearningPathMenuContent.js +6 -6
  15. package/es/LearningPaths/LearningPathMenuModalWrapper.js +3 -3
  16. package/es/LearningPaths/LearningPathSticky.js +4 -4
  17. package/es/Masthead/Masthead.js +4 -4
  18. package/es/Masthead/SkipToMainContent.js +2 -2
  19. package/es/MediaList/MediaList.js +10 -10
  20. package/es/MyNdla/Resource/Folder.js +8 -17
  21. package/es/NDLAFilm/FilmContentCardTags.js +3 -3
  22. package/es/Resource/BlockResource.js +7 -15
  23. package/es/Resource/ListResource.js +8 -8
  24. package/es/Resource/resourceComponents.js +12 -12
  25. package/es/ResourceGroup/ResourceItem.js +34 -37
  26. package/es/Search/SearchField.js +34 -13
  27. package/es/Search/SearchFieldForm.js +4 -4
  28. package/es/SearchTypeResult/SearchItem.js +7 -16
  29. package/es/SearchTypeResult/SearchTypeResult.js +3 -3
  30. package/es/SearchTypeResult/components/ItemContexts.js +6 -6
  31. package/es/SearchTypeResult/components/ItemResourceHeader.js +7 -7
  32. package/es/SnackBar/SnackbarProvider.js +3 -12
  33. package/es/all.css +1 -1
  34. package/es/locale/messages-en.js +34 -2
  35. package/es/locale/messages-nb.js +34 -2
  36. package/es/locale/messages-nn.js +34 -2
  37. package/es/locale/messages-se.js +34 -2
  38. package/es/locale/messages-sma.js +34 -2
  39. package/lib/Article/ArticleNotions.js +5 -5
  40. package/lib/AudioPlayer/Controls.js +21 -21
  41. package/lib/ContentPlaceholder/ContentPlaceholder.js +3 -11
  42. package/lib/CopyParagraphButton/CopyParagraphButton.js +2 -2
  43. package/lib/Embed/ConceptEmbed.js +13 -10
  44. package/lib/Embed/conceptComponents.js +10 -10
  45. package/lib/FactBox/FactBox.js +7 -23
  46. package/lib/Filter/FilterCarousel.js +6 -5
  47. package/lib/Footer/Footer.js +8 -16
  48. package/lib/Grid/Grid.js +3 -3
  49. package/lib/Hero/Hero.js +1 -1
  50. package/lib/Hero/HeroContent.js +2 -2
  51. package/lib/KeyFigure/KeyFigure.js +4 -4
  52. package/lib/LearningPaths/LearningPathMenuContent.js +5 -5
  53. package/lib/LearningPaths/LearningPathMenuModalWrapper.js +2 -2
  54. package/lib/LearningPaths/LearningPathSticky.js +3 -3
  55. package/lib/Masthead/Masthead.js +3 -3
  56. package/lib/Masthead/SkipToMainContent.js +1 -1
  57. package/lib/MediaList/MediaList.js +9 -9
  58. package/lib/MyNdla/Resource/Folder.js +9 -16
  59. package/lib/NDLAFilm/FilmContentCardTags.js +2 -2
  60. package/lib/Resource/BlockResource.js +6 -14
  61. package/lib/Resource/ListResource.js +7 -7
  62. package/lib/Resource/resourceComponents.js +11 -11
  63. package/lib/ResourceGroup/ResourceItem.js +34 -37
  64. package/lib/Search/SearchField.js +34 -13
  65. package/lib/Search/SearchFieldForm.js +3 -3
  66. package/lib/SearchTypeResult/SearchItem.js +8 -15
  67. package/lib/SearchTypeResult/SearchTypeResult.js +2 -2
  68. package/lib/SearchTypeResult/components/ItemContexts.js +5 -5
  69. package/lib/SearchTypeResult/components/ItemResourceHeader.js +6 -6
  70. package/lib/SnackBar/SnackbarProvider.js +4 -11
  71. package/lib/all.css +1 -1
  72. package/lib/locale/messages-en.d.ts +32 -0
  73. package/lib/locale/messages-en.js +34 -2
  74. package/lib/locale/messages-nb.d.ts +32 -0
  75. package/lib/locale/messages-nb.js +34 -2
  76. package/lib/locale/messages-nn.d.ts +32 -0
  77. package/lib/locale/messages-nn.js +34 -2
  78. package/lib/locale/messages-se.d.ts +32 -0
  79. package/lib/locale/messages-se.js +34 -2
  80. package/lib/locale/messages-sma.d.ts +32 -0
  81. package/lib/locale/messages-sma.js +34 -2
  82. package/package.json +17 -17
  83. package/src/Article/ArticleNotions.tsx +2 -2
  84. package/src/Article/component.article.scss +2 -2
  85. package/src/AudioPlayer/Controls.tsx +2 -2
  86. package/src/ContentPlaceholder/ContentPlaceholder.tsx +2 -2
  87. package/src/CopyParagraphButton/CopyParagraphButton.tsx +2 -2
  88. package/src/Embed/ConceptEmbed.tsx +10 -16
  89. package/src/Embed/conceptComponents.tsx +3 -3
  90. package/src/FactBox/FactBox.tsx +5 -5
  91. package/src/Figure/component.figure.scss +2 -2
  92. package/src/Filter/FilterCarousel.tsx +2 -1
  93. package/src/Filter/component.filter.scss +5 -5
  94. package/src/Footer/Footer.tsx +4 -4
  95. package/src/Grid/Grid.tsx +2 -0
  96. package/src/Hero/Hero.tsx +1 -1
  97. package/src/Hero/HeroContent.tsx +2 -2
  98. package/src/KeyFigure/KeyFigure.tsx +1 -1
  99. package/src/LearningPaths/LearningPathMenuContent.tsx +3 -3
  100. package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +2 -2
  101. package/src/LearningPaths/LearningPathSticky.tsx +2 -2
  102. package/src/Masthead/Masthead.tsx +2 -2
  103. package/src/Masthead/SkipToMainContent.tsx +2 -2
  104. package/src/MediaList/MediaList.tsx +3 -3
  105. package/src/MyNdla/Resource/Folder.tsx +2 -2
  106. package/src/NDLAFilm/FilmContentCardTags.tsx +3 -3
  107. package/src/Resource/BlockResource.tsx +2 -2
  108. package/src/Resource/ListResource.tsx +2 -2
  109. package/src/Resource/resourceComponents.tsx +2 -2
  110. package/src/ResourceGroup/ResourceItem.tsx +46 -43
  111. package/src/Search/SearchField.tsx +63 -15
  112. package/src/Search/SearchFieldForm.tsx +3 -12
  113. package/src/SearchTypeResult/SearchItem.tsx +3 -3
  114. package/src/SearchTypeResult/SearchTypeResult.tsx +2 -2
  115. package/src/SearchTypeResult/components/ItemContexts.tsx +2 -2
  116. package/src/SearchTypeResult/components/ItemResourceHeader.tsx +3 -5
  117. package/src/SnackBar/SnackbarProvider.tsx +2 -2
  118. package/src/locale/messages-en.ts +33 -0
  119. package/src/locale/messages-nb.ts +33 -0
  120. package/src/locale/messages-nn.ts +33 -0
  121. package/src/locale/messages-se.ts +33 -0
  122. package/src/locale/messages-sma.ts +33 -0
  123. package/src/main.scss +4 -5
  124. package/src/Search/component.search-field.scss +0 -122
  125. package/src/Search/component.search-result.scss +0 -355
  126. package/src/Search/component.search.scss +0 -2
@@ -11,7 +11,7 @@ import { useTranslation } from "react-i18next";
11
11
  import { css } from "@emotion/react";
12
12
  import styled from "@emotion/styled";
13
13
  import { IconButtonV2 } from "@ndla/button";
14
- import { colors, fonts, spacing } from "@ndla/core";
14
+ import { colors, fonts, spacing, stackOrder } from "@ndla/core";
15
15
  import { DropdownMenu, DropdownContent, DropdownTrigger, DropdownItem } from "@ndla/dropdown-menu";
16
16
  import { HashTag } from "@ndla/icons/common";
17
17
  import SafeLink, { SafeLinkButton } from "@ndla/safelink";
@@ -30,7 +30,7 @@ export const ResourceTitleLink = styled(SafeLink)`
30
30
  :after {
31
31
  content: "";
32
32
  position: absolute;
33
- z-index: 1;
33
+ z-index: ${stackOrder.offsetSingle};
34
34
  top: 0;
35
35
  right: 0;
36
36
  bottom: 0;
@@ -99,10 +99,15 @@ const ListElement = styled.li`
99
99
  `;
100
100
 
101
101
  const ResourceLink = styled(SafeLink)`
102
+ display: flex;
103
+ width: 100%;
104
+ align-items: center;
102
105
  font-weight: ${fonts.weight.semibold};
103
106
  box-shadow: none;
104
- text-decoration: underline;
105
- text-underline-offset: 5px;
107
+ &[data-active="false"] {
108
+ text-decoration: underline;
109
+ text-underline-offset: 5px;
110
+ }
106
111
  color: ${colors.brand.dark};
107
112
  ${fonts.sizes("16px", "26px")};
108
113
  ${mq.range({ from: breakpoints.tablet })} {
@@ -113,9 +118,34 @@ const ResourceLink = styled(SafeLink)`
113
118
  }
114
119
  &:hover {
115
120
  text-decoration: none;
121
+ [data-badge-wrapper="true"] {
122
+ [data-badge] {
123
+ width: ${spacing.mediumlarge};
124
+ height: ${spacing.mediumlarge};
125
+
126
+ svg {
127
+ width: 20px;
128
+ height: 20px;
129
+ }
130
+ [data-type="subject-material"],
131
+ [data-type="learning-path"],
132
+ [data-type="source-material"],
133
+ [data-type="external-learning-resources"] {
134
+ svg {
135
+ width: ${spacing.medium};
136
+ height: ${spacing.medium};
137
+ }
138
+ }
139
+ }
140
+ }
116
141
  }
117
142
  `;
118
143
 
144
+ const InlineContainer = styled.div`
145
+ display: inline;
146
+ width: 100%;
147
+ `;
148
+
119
149
  const ContentBadgeWrapper = styled.div`
120
150
  display: flex;
121
151
  flex: 0 0 auto;
@@ -149,38 +179,11 @@ const ContentTypeName = styled.span`
149
179
  text-align: right;
150
180
  `;
151
181
 
152
- const InlineContainer = styled.div`
153
- display: inline;
154
- `;
155
-
156
- const ResourceWrapper = styled.div`
157
- display: flex;
158
- gap: ${spacing.xsmall};
159
- align-items: center;
160
- :hover {
161
- [data-badge] {
162
- width: 38px;
163
- height: 38px;
164
-
165
- svg {
166
- width: 20px;
167
- height: 20px;
168
- }
169
- [data-type="subject-material"],
170
- [data-type="learning-path"],
171
- [data-type="source-material"],
172
- [data-type="external-learning-resources"] {
173
- svg {
174
- width: 26px;
175
- height: 26px;
176
- }
177
- }
178
- }
179
- }
180
- `;
181
-
182
182
  const CurrentSmall = styled.small`
183
183
  margin-left: ${spacing.xsmall};
184
+ text-decoration: none;
185
+ color: ${colors.text.primary};
186
+ font-weight: ${fonts.weight.normal};
184
187
  `;
185
188
 
186
189
  interface Props {
@@ -235,22 +238,22 @@ const ResourceItem = ({
235
238
  data-additional={additional}
236
239
  style={listElementVars}
237
240
  >
238
- <ResourceWrapper>
239
- <ContentBadgeWrapper>
241
+ <ResourceLink
242
+ to={path}
243
+ lang={language === "nb" ? "no" : language}
244
+ aria-current={active ? "page" : undefined}
245
+ aria-describedby={describedBy}
246
+ disabled={active}
247
+ data-active={active}
248
+ >
249
+ <ContentBadgeWrapper data-badge-wrapper={!active}>
240
250
  <ContentTypeBadge type={contentType ?? ""} background border={false} />
241
251
  </ContentBadgeWrapper>
242
252
  <InlineContainer>
243
- <ResourceLink
244
- to={path}
245
- lang={language === "nb" ? "no" : language}
246
- aria-current={active ? "page" : undefined}
247
- aria-describedby={describedBy}
248
- >
249
- {name}
250
- </ResourceLink>
253
+ {name}
251
254
  {active ? <CurrentSmall>{t("resource.youAreHere")}</CurrentSmall> : undefined}
252
255
  </InlineContainer>
253
- </ResourceWrapper>
256
+ </ResourceLink>
254
257
  <TypeWrapper>
255
258
  {contentTypeName && <ContentTypeName>{contentTypeName}</ContentTypeName>}
256
259
  {access && access === "teacher" && (
@@ -7,22 +7,71 @@
7
7
  */
8
8
 
9
9
  import { FocusEvent, MouseEvent, RefObject } from "react";
10
- import BEMHelper from "react-bem-helper";
11
10
  import { useTranslation } from "react-i18next";
12
11
  import { css } from "@emotion/react";
13
12
  import styled from "@emotion/styled";
13
+ import { ButtonV2, IconButtonV2 } from "@ndla/button";
14
14
  import { colors, spacing, mq, breakpoints, misc, fonts } from "@ndla/core";
15
15
  import { Search as SearchIcon } from "@ndla/icons/common";
16
16
 
17
17
  import ActiveFilters from "./ActiveFilters";
18
18
  import LoadingWrapper from "./LoadingWrapper";
19
19
 
20
- const classes = new BEMHelper("c-search-field");
21
-
22
20
  interface StyledInputProps {
23
21
  hasFilters?: boolean;
24
22
  }
25
23
 
24
+ const SearchButton = styled(IconButtonV2)`
25
+ position: absolute;
26
+ padding: ${spacing.small};
27
+ ${mq.range({ from: breakpoints.tablet })} {
28
+ top: 5px;
29
+ right: 10px;
30
+ }
31
+ `;
32
+
33
+ const CloseButton = styled(ButtonV2)`
34
+ position: absolute;
35
+ padding: ${spacing.small};
36
+ right: ${spacing.large};
37
+ color: ${colors.text.light};
38
+ text-transform: uppercase;
39
+ ${fonts.sizes("14px", "16px")};
40
+ `;
41
+
42
+ const InputWrapper = styled.div`
43
+ width: 100%;
44
+ padding: 0 ${spacing.large} 0 ${spacing.normal};
45
+ display: flex;
46
+ align-items: center;
47
+ flex-flow: row-reverse;
48
+ ${mq.range({ from: breakpoints.tablet })} {
49
+ position: relative;
50
+ padding: 0;
51
+ }
52
+ `;
53
+
54
+ const FiltersWrapper = styled.div`
55
+ display: flex;
56
+ height: ${spacing.large};
57
+ background: ${colors.white};
58
+ border-top-left-radius: ${misc.borderRadius};
59
+ border-bottom-left-radius: ${misc.borderRadius};
60
+ border: 1px solid ${colors.brand.greyLight};
61
+ padding-left: ${spacing.small};
62
+ padding-right: 0;
63
+ border-right: 0;
64
+ flex-shrink: 0;
65
+ align-items: center;
66
+ ${mq.range({ from: breakpoints.mobileWide, until: breakpoints.desktop })} {
67
+ padding-right: ${spacing.xsmall};
68
+ }
69
+ ${mq.range({ from: breakpoints.tablet })} {
70
+ height: 58px;
71
+ padding-right: ${spacing.small};
72
+ }
73
+ `;
74
+
26
75
  const StyledInput = styled.input<StyledInputProps>`
27
76
  width: 100%;
28
77
  height: 48px;
@@ -99,7 +148,7 @@ const SearchField = ({
99
148
  onFocus?.();
100
149
  };
101
150
  return (
102
- <div {...classes("input-wrapper")}>
151
+ <InputWrapper>
103
152
  {loading && <LoadingWrapper value={value} />}
104
153
  <StyledInput
105
154
  hasFilters={!!filters?.length}
@@ -118,14 +167,13 @@ const SearchField = ({
118
167
  onClick={onClick}
119
168
  />
120
169
  {filters && filters.length > 0 && (
121
- <div {...classes("filters")}>
170
+ <FiltersWrapper>
122
171
  <ActiveFilters filters={filters} onFilterRemove={handleOnFilterRemove} />
123
- </div>
172
+ </FiltersWrapper>
124
173
  )}
125
174
  {value !== "" && (
126
- <button
127
- {...classes("button", "close")}
128
- type="button"
175
+ <CloseButton
176
+ variant="stripped"
129
177
  onClick={() => {
130
178
  onChange("");
131
179
  onFocus?.();
@@ -133,18 +181,18 @@ const SearchField = ({
133
181
  }}
134
182
  >
135
183
  {t("welcomePage.resetSearch")}
136
- </button>
184
+ </CloseButton>
137
185
  )}
138
- <button
139
- tabIndex={-1}
140
- {...classes("button", "searchIcon")}
186
+ <SearchButton
187
+ variant="stripped"
141
188
  type="submit"
142
189
  value="Search"
143
190
  aria-label={t("siteNav.search")}
191
+ title={t("siteNav.search")}
144
192
  >
145
193
  <SearchIcon />
146
- </button>
147
- </div>
194
+ </SearchButton>
195
+ </InputWrapper>
148
196
  );
149
197
  };
150
198
 
@@ -9,7 +9,7 @@
9
9
  import { FormEvent, ReactNode } from "react";
10
10
  import { css } from "@emotion/react";
11
11
  import styled from "@emotion/styled";
12
- import { spacing, mq, breakpoints } from "@ndla/core";
12
+ import { breakpoints, mq, spacing, stackOrder } from "@ndla/core";
13
13
 
14
14
  interface Props {
15
15
  children: ReactNode;
@@ -22,16 +22,10 @@ type StyledProps = {
22
22
  };
23
23
 
24
24
  const hasFocusStyles = css`
25
- .c-search-field__search-result {
26
- left: 0px;
27
- @supports (-webkit-overflow-scrolling: touch) {
28
- padding-bottom: 300px;
29
- }
30
- }
31
25
  display: flex;
32
26
  align-self: flex-start;
33
27
  align-items: center;
34
- z-index: 9001;
28
+ z-index: ${stackOrder.modal};
35
29
  ${mq.range({ until: breakpoints.tablet })} {
36
30
  position: fixed;
37
31
  display: block;
@@ -39,10 +33,7 @@ const hasFocusStyles = css`
39
33
  left: 0;
40
34
  right: 0;
41
35
  padding: ${spacing.small};
42
- z-index: 9001;
43
- .c-search-field__search-result {
44
- width: 100vw;
45
- }
36
+ z-index: ${stackOrder.modal};
46
37
  }
47
38
  `;
48
39
 
@@ -10,7 +10,7 @@ import parse from "html-react-parser";
10
10
  import { ReactNode, useRef } from "react";
11
11
  import styled from "@emotion/styled";
12
12
 
13
- import { animations, colors, fonts, spacing } from "@ndla/core";
13
+ import { animations, colors, fonts, spacing, stackOrder } from "@ndla/core";
14
14
  import SafeLink from "@ndla/safelink";
15
15
 
16
16
  import ItemContexts, { ItemContextsType } from "./components/ItemContexts";
@@ -44,7 +44,7 @@ const Container = styled.article`
44
44
  `;
45
45
 
46
46
  const ButtonWrapper = styled.div`
47
- z-index: 1;
47
+ z-index: ${stackOrder.offsetSingle};
48
48
  display: flex;
49
49
  flex-direction: column;
50
50
  `;
@@ -69,7 +69,7 @@ const StyledLink = styled(SafeLink)`
69
69
  :after {
70
70
  content: "";
71
71
  position: absolute;
72
- z-index: 1;
72
+ z-index: ${stackOrder.offsetSingle};
73
73
  top: 0;
74
74
  right: 0;
75
75
  bottom: 0;
@@ -8,7 +8,7 @@
8
8
 
9
9
  import { memo, ReactNode } from "react";
10
10
  import styled from "@emotion/styled";
11
- import { spacing } from "@ndla/core";
11
+ import { spacing, stackOrder } from "@ndla/core";
12
12
  import { Spinner } from "@ndla/icons";
13
13
  import ResultNavigation, { PaginationType } from "./ResultNavigation";
14
14
  import { SearchItemProps } from "./SearchItem";
@@ -32,7 +32,7 @@ const Overlay = styled.div`
32
32
  bottom: 0;
33
33
  width: 102%;
34
34
  background-color: rgb(204, 204, 204, 0.1);
35
- z-index: 2;
35
+ z-index: ${stackOrder.offsetDouble};
36
36
  display: flex;
37
37
  flex-direction: column;
38
38
  justify-content: center;
@@ -10,7 +10,7 @@ import { ReactNode, Fragment } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
11
  import styled from "@emotion/styled";
12
12
  import { ButtonV2 } from "@ndla/button";
13
- import { breakpoints, colors, fonts, mq, spacing } from "@ndla/core";
13
+ import { breakpoints, colors, fonts, mq, spacing, stackOrder } from "@ndla/core";
14
14
  import { Additional, Core } from "@ndla/icons/common";
15
15
  import { Modal, ModalCloseButton, ModalContent, ModalHeader, ModalTitle, ModalTrigger } from "@ndla/modal";
16
16
  import SafeLink from "@ndla/safelink";
@@ -25,7 +25,7 @@ const BreadcrumbPath = styled.div`
25
25
  `;
26
26
 
27
27
  const ModalButton = styled(ButtonV2)`
28
- z-index: 1;
28
+ z-index: ${stackOrder.offsetSingle};
29
29
  position: relative;
30
30
  ${fonts.sizes("14px", "20px")};
31
31
  box-shadow: none;
@@ -9,9 +9,7 @@
9
9
  import { Fragment } from "react";
10
10
  import { useTranslation } from "react-i18next";
11
11
  import styled from "@emotion/styled";
12
-
13
- import { fonts, spacing } from "@ndla/core";
14
-
12
+ import { fonts, spacing, stackOrder } from "@ndla/core";
15
13
  import ContentTypeBadge from "../../ContentTypeBadge";
16
14
  import resourceTypeColor from "../../utils/resourceTypeColor";
17
15
  import { SearchItemType } from "../SearchItem";
@@ -38,7 +36,7 @@ const NoImageElement = styled.div<ItemTypeProps>`
38
36
  width: 58px;
39
37
  height: 58px;
40
38
  opacity: 0.2;
41
- z-index: 3;
39
+ z-index: ${stackOrder.offsetDouble};
42
40
  svg {
43
41
  width: 58px;
44
42
  height: 58px;
@@ -75,7 +73,7 @@ const ContentTypeIcon = styled.span<ItemTypeProps>`
75
73
  `;
76
74
 
77
75
  const StyledContentTypeBadge = styled(ContentTypeBadge)`
78
- z-index: 1;
76
+ z-index: ${stackOrder.offsetSingle};
79
77
  margin-top: ${spacing.xxsmall};
80
78
 
81
79
  svg {
@@ -9,7 +9,7 @@
9
9
  import { useCallback, useMemo, createContext, ReactNode, useState, useContext, useEffect } from "react";
10
10
  import { keyframes } from "@emotion/react";
11
11
  import styled from "@emotion/styled";
12
- import { spacing } from "@ndla/core";
12
+ import { spacing, stackOrder } from "@ndla/core";
13
13
  import DefaultSnack from "./DefaultSnackbar";
14
14
 
15
15
  export interface Snack {
@@ -121,7 +121,7 @@ interface SnackbarContainerProps {
121
121
 
122
122
  const StyledSnackList = styled.ul`
123
123
  position: fixed;
124
- z-index: 99999;
124
+ z-index: ${stackOrder.toast};
125
125
  display: flex;
126
126
  flex-direction: column;
127
127
  pointer-events: none;
@@ -890,6 +890,7 @@ const messages = {
890
890
  wrongUserInfoDisclaimer:
891
891
  "If any information is wrong, it must be updated by the host organization/school owner the user belongs to. An overview of available user support can be found here: ",
892
892
  moderator: "Moderator",
893
+ deletedUser: "Deleted user",
893
894
  },
894
895
  factbox: {
895
896
  open: "Open fact box",
@@ -1073,6 +1074,25 @@ const messages = {
1073
1074
  title: "Arena administrator",
1074
1075
  description: "Tools to moderate and administer the arena.",
1075
1076
  administrate: "Administrate",
1077
+ category: {
1078
+ deleteSnack: "The category has been deleted.",
1079
+ notVisible: "The category is not visible",
1080
+ edit: "Edit category",
1081
+ startEditing: "Edit categories",
1082
+ stopEditing: "Stop editing",
1083
+ form: {
1084
+ formTitle: "Category",
1085
+ newCategory: "New category",
1086
+ editCategory: "Edit category",
1087
+ title: "Title",
1088
+ description: "Description",
1089
+ visible: "Visibility",
1090
+ deleteText: "Delete category",
1091
+ modalTitle: "Delete category",
1092
+ modalDescription:
1093
+ "Are you sure you would like to delete the category, including all content? This is irreversible and cannot be undone.",
1094
+ },
1095
+ },
1076
1096
  users: {
1077
1097
  title: "Users",
1078
1098
  description: "List of all users of the arena. Select a user to moderate them.",
@@ -1084,6 +1104,8 @@ const messages = {
1084
1104
  isAdmin: "Administrator",
1085
1105
  selectAdministrator: "Make {{user}} a administrator.",
1086
1106
  enableArena: "Give {{user}} access to the arena.",
1107
+ noUsers: "No users found.",
1108
+ search: "Search for users",
1087
1109
  },
1088
1110
  flags: {
1089
1111
  title: "Flag",
@@ -1100,6 +1122,8 @@ const messages = {
1100
1122
  numFlags: "Number of flags",
1101
1123
  latestFlag: "Last flag",
1102
1124
  noflags: "No flagged posts found",
1125
+ solvedFor: "Solved",
1126
+ goToTopic: "Go to topic",
1103
1127
  status: {
1104
1128
  title: "Status",
1105
1129
  resolved: "Resolved",
@@ -1263,6 +1287,15 @@ const messages = {
1263
1287
  onDragCancel: "Dragging was cancelled. The resource {{name}} was dropped",
1264
1288
  dragHandle: "Drag the resource {{name}}",
1265
1289
  },
1290
+ category: {
1291
+ onDragStart: "Picked up the category {{name}}. The category is in position {{index}} of {{length}}",
1292
+ onDragOver: "The category {{name}} was moved into position {{index}} of {{length}}",
1293
+ onDragOverMissingOver: "The category {{name}} is no longer over a droppable area",
1294
+ onDragEnd: "The category {{name}} was dropped at position {{index}} og {{length}}",
1295
+ onDragEndMissingOver: "The category {{name}} was dropped",
1296
+ onDragCancel: "Dragging was cancelled. The category {{name}} was dropped",
1297
+ dragHandle: "Drag the category {{name}}",
1298
+ },
1266
1299
  favoriteSubjects: {
1267
1300
  title: "My favorite subjects",
1268
1301
  subjects: "{{count}} subject",
@@ -890,6 +890,7 @@ const messages = {
890
890
  wrongUserInfoDisclaimer:
891
891
  "Dersom informasjonen er feil, må den oppdateres av vertsorganisasjon/skoleeier som brukeren tilhører. Oversikt over brukerstøtte finnes her: ",
892
892
  moderator: "Moderator",
893
+ deletedUser: "Slettet bruker",
893
894
  },
894
895
  factbox: {
895
896
  open: "Åpne faktaboks",
@@ -1072,6 +1073,25 @@ const messages = {
1072
1073
  title: "Arena administrator",
1073
1074
  description: "Verktøy for å moderere og administrere arenaen.",
1074
1075
  administrate: "Administrer",
1076
+ category: {
1077
+ deleteSnack: "Kategorien har blitt slettet.",
1078
+ notVisible: "Kategorien er ikke synlig",
1079
+ edit: "Rediger kategori",
1080
+ startEditing: "Rediger kategorier",
1081
+ stopEditing: "Avslutt redigering",
1082
+ form: {
1083
+ formTitle: "Kategori",
1084
+ newCategory: "Ny kategori",
1085
+ editCategory: "Rediger kategori",
1086
+ title: "Tittel",
1087
+ description: "Beskrivelse",
1088
+ visible: "Synlighet",
1089
+ deleteText: "Slett kategori",
1090
+ modalTitle: "Slett kategori",
1091
+ modalDescription:
1092
+ "Er du sikker på at du vil slette kategorien, med alt innhold? Dette er irreversibelt og kan ikke angres.",
1093
+ },
1094
+ },
1075
1095
  users: {
1076
1096
  title: "Brukere",
1077
1097
  description: "Liste over alle brukere av arena. Trykk på brukere for å moderere de.",
@@ -1083,6 +1103,8 @@ const messages = {
1083
1103
  isAdmin: "Administrator",
1084
1104
  selectAdministrator: 'Gjør "{{user}}" til administrator.',
1085
1105
  enableArena: 'Gi "{{user}}" tilgang til arena.',
1106
+ noUsers: "Ingen brukere funnet.",
1107
+ search: "Søk etter brukere",
1086
1108
  },
1087
1109
  flags: {
1088
1110
  title: "Flagg",
@@ -1099,6 +1121,8 @@ const messages = {
1099
1121
  numFlags: "Antall flagg",
1100
1122
  latestFlag: "Siste flagging",
1101
1123
  noflags: "Ingen flaggede poster funnet",
1124
+ solvedFor: "Løst for",
1125
+ goToTopic: "Gå til tråd",
1102
1126
  status: {
1103
1127
  title: "Status",
1104
1128
  resolved: "Løst",
@@ -1261,6 +1285,15 @@ const messages = {
1261
1285
  onDragCancel: "Flytting avbrutt. Ressursen {{name}} ble sluppet",
1262
1286
  dragHandle: "Sorter ressursen {{name}}",
1263
1287
  },
1288
+ category: {
1289
+ onDragStart: "Plukket opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
1290
+ onDragOver: "Kategorien {{name}} ble flyttet til posisjon {{index}} av {{length}}",
1291
+ onDragOverMissingOver: "Kategorien {{name}} er ikke lenger over et slippbart område",
1292
+ onDragEnd: "Kategorien {{name}} ble sluppet på posisjon {{index}} av {{length}}",
1293
+ onDragEndMissingOver: "Kategorien {{name}} ble sluppet",
1294
+ onDragCancel: "Flytting avbrutt. Kategorien {{name}} ble sluppet",
1295
+ dragHandle: "Sorter kategorien {{name}}",
1296
+ },
1264
1297
  favoriteSubjects: {
1265
1298
  title: "Mine favorittfag",
1266
1299
  subjects: "{{count}} fag",
@@ -890,6 +890,7 @@ const messages = {
890
890
  wrongUserInfoDisclaimer:
891
891
  "Dersom informasjonen er feil, må han oppdaterast av vertsorganisasjon/skuleeigar som brukaren tilhøyrer. Oversikt over brukarstøtte finst her: ",
892
892
  moderator: "Moderator",
893
+ deletedUser: "Sletta brukar",
893
894
  },
894
895
  factbox: {
895
896
  open: "Åpne faktaboks",
@@ -1072,6 +1073,25 @@ const messages = {
1072
1073
  title: "Arena administrator",
1073
1074
  description: "Verktøy for å moderere og administrere arenaen.",
1074
1075
  administrate: "Administrer",
1076
+ category: {
1077
+ deleteSnack: "Kategorien har vorte sletta.",
1078
+ notVisible: "Kategorien er ikkje synleg",
1079
+ edit: "Rediger kategori",
1080
+ startEditing: "Rediger kategoriar",
1081
+ stopEditing: "Avslutt redigering",
1082
+ form: {
1083
+ formTitle: "Kategori",
1084
+ newCategory: "Ny kategori",
1085
+ editCategory: "Rediger kategori",
1086
+ title: "Tittel",
1087
+ description: "Beskriving",
1088
+ visible: "Synlighet",
1089
+ deleteText: "Slett kategori",
1090
+ modalTitle: "Slett kategori",
1091
+ modalDescription:
1092
+ "Er du sikker på at du vil sletta kategorien, med alt innhald? Dette er irreversibelt og kan ikkje angrast.",
1093
+ },
1094
+ },
1075
1095
  users: {
1076
1096
  title: "Brukarar",
1077
1097
  description: "Liste over alle brukarar av arena. Trykk på brukarar for å moderere dei.",
@@ -1083,6 +1103,8 @@ const messages = {
1083
1103
  isAdmin: "Administrator",
1084
1104
  selectAdministrator: 'Gjør "{{user}}" til administrator.',
1085
1105
  enableArena: 'Gi "{{user}}" tilgang til arena.',
1106
+ noUsers: "Ingen brukarar funne.",
1107
+ search: "Søk etter brukarar",
1086
1108
  },
1087
1109
  flags: {
1088
1110
  title: "Flagg",
@@ -1099,6 +1121,8 @@ const messages = {
1099
1121
  numFlags: "Antal flagg",
1100
1122
  latestFlag: "Siste flagging",
1101
1123
  noflags: "Ingen flagga postar funne",
1124
+ solvedFor: "Løyst for",
1125
+ goToTopic: "Gå til tråd",
1102
1126
  status: {
1103
1127
  title: "Status",
1104
1128
  resolved: "Løyst",
@@ -1261,6 +1285,15 @@ const messages = {
1261
1285
  onDragCancel: "Flytting avbrutt. Ressursen {{name}} blei sleppt",
1262
1286
  dragHandle: "Sorter ressursen {{name}}",
1263
1287
  },
1288
+ category: {
1289
+ onDragStart: "Plukka opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
1290
+ onDragOver: "Kategorien {{name}} vart flytta til posisjon {{index}} av {{length}}",
1291
+ onDragOverMissingOver: "Kategorien {{name}} er ikkje lenger over eit slippbart område",
1292
+ onDragEnd: "Kategorien {{name}} vart sleppt på posisjon {{index}} av {{length}}",
1293
+ onDragEndMissingOver: "Kategorien {{name}} vart sleppt",
1294
+ onDragCancel: "Flytting avbrote. Kategorien {{name}} vart sleppt",
1295
+ dragHandle: "Sorter kategorien {{name}}",
1296
+ },
1264
1297
  favoriteSubjects: {
1265
1298
  title: "Mine favorittfag",
1266
1299
  subjects: "{{count}} fag",