@ndla/ui 50.9.4 → 50.9.6
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.
- package/es/Article/ArticleNotions.js +6 -6
- package/es/AudioPlayer/Controls.js +22 -22
- package/es/ContentPlaceholder/ContentPlaceholder.js +4 -12
- package/es/CopyParagraphButton/CopyParagraphButton.js +3 -3
- package/es/Embed/ConceptEmbed.js +13 -10
- package/es/Embed/conceptComponents.js +11 -11
- package/es/FactBox/FactBox.js +8 -24
- package/es/Filter/FilterCarousel.js +6 -5
- package/es/Footer/Footer.js +16 -20
- package/es/Footer/FooterLinks.js +12 -9
- package/es/Hero/HeroContent.js +3 -3
- package/es/LearningPaths/LearningPathMenuContent.js +6 -6
- package/es/LearningPaths/LearningPathMenuModalWrapper.js +3 -3
- package/es/LearningPaths/LearningPathSticky.js +4 -4
- package/es/Masthead/Masthead.js +4 -4
- package/es/Masthead/SkipToMainContent.js +2 -2
- package/es/MediaList/MediaList.js +10 -10
- package/es/MyNdla/Resource/Folder.js +8 -17
- package/es/NDLAFilm/FilmContentCardTags.js +3 -3
- package/es/Navigation/NavigationBox.js +14 -14
- package/es/Resource/BlockResource.js +7 -15
- package/es/Resource/ListResource.js +8 -8
- package/es/Resource/resourceComponents.js +12 -12
- package/es/ResourceGroup/ResourceItem.js +34 -37
- package/es/Search/SearchField.js +34 -13
- package/es/Search/SearchFieldForm.js +4 -4
- package/es/SearchTypeResult/SearchItem.js +7 -16
- package/es/SearchTypeResult/SearchTypeResult.js +3 -3
- package/es/SearchTypeResult/components/ItemContexts.js +6 -6
- package/es/SearchTypeResult/components/ItemResourceHeader.js +7 -7
- package/es/SnackBar/SnackbarProvider.js +3 -12
- package/es/all.css +1 -1
- package/es/locale/messages-en.js +31 -1
- package/es/locale/messages-nb.js +31 -1
- package/es/locale/messages-nn.js +31 -1
- package/es/locale/messages-se.js +31 -1
- package/es/locale/messages-sma.js +31 -1
- package/lib/Article/ArticleNotions.js +5 -5
- package/lib/AudioPlayer/Controls.js +21 -21
- package/lib/ContentPlaceholder/ContentPlaceholder.js +3 -11
- package/lib/CopyParagraphButton/CopyParagraphButton.js +2 -2
- package/lib/Embed/ConceptEmbed.js +12 -9
- package/lib/Embed/conceptComponents.js +10 -10
- package/lib/FactBox/FactBox.js +7 -23
- package/lib/Filter/FilterCarousel.js +6 -5
- package/lib/Footer/Footer.js +15 -19
- package/lib/Footer/FooterLinks.js +12 -9
- package/lib/Hero/HeroContent.js +2 -2
- package/lib/LearningPaths/LearningPathMenuContent.js +5 -5
- package/lib/LearningPaths/LearningPathMenuModalWrapper.js +2 -2
- package/lib/LearningPaths/LearningPathSticky.js +3 -3
- package/lib/Masthead/Masthead.js +3 -3
- package/lib/Masthead/SkipToMainContent.js +1 -1
- package/lib/MediaList/MediaList.js +9 -9
- package/lib/MyNdla/Resource/Folder.js +9 -16
- package/lib/NDLAFilm/FilmContentCardTags.js +2 -2
- package/lib/Navigation/NavigationBox.js +14 -14
- package/lib/Resource/BlockResource.js +6 -14
- package/lib/Resource/ListResource.js +7 -7
- package/lib/Resource/resourceComponents.js +11 -11
- package/lib/ResourceGroup/ResourceItem.js +34 -37
- package/lib/Search/SearchField.js +34 -13
- package/lib/Search/SearchFieldForm.js +3 -3
- package/lib/SearchTypeResult/SearchItem.js +8 -15
- package/lib/SearchTypeResult/SearchTypeResult.js +2 -2
- package/lib/SearchTypeResult/components/ItemContexts.js +5 -5
- package/lib/SearchTypeResult/components/ItemResourceHeader.js +6 -6
- package/lib/SnackBar/SnackbarProvider.js +4 -11
- package/lib/all.css +1 -1
- package/lib/locale/messages-en.d.ts +30 -0
- package/lib/locale/messages-en.js +31 -1
- package/lib/locale/messages-nb.d.ts +30 -0
- package/lib/locale/messages-nb.js +31 -1
- package/lib/locale/messages-nn.d.ts +30 -0
- package/lib/locale/messages-nn.js +31 -1
- package/lib/locale/messages-se.d.ts +30 -0
- package/lib/locale/messages-se.js +31 -1
- package/lib/locale/messages-sma.d.ts +30 -0
- package/lib/locale/messages-sma.js +31 -1
- package/package.json +17 -17
- package/src/Article/ArticleNotions.tsx +2 -2
- package/src/Article/component.article.scss +2 -2
- package/src/AudioPlayer/Controls.tsx +2 -2
- package/src/ContentPlaceholder/ContentPlaceholder.tsx +2 -2
- package/src/CopyParagraphButton/CopyParagraphButton.tsx +2 -2
- package/src/Embed/ConceptEmbed.tsx +9 -16
- package/src/Embed/conceptComponents.tsx +3 -3
- package/src/FactBox/FactBox.tsx +5 -5
- package/src/Figure/component.figure.scss +2 -2
- package/src/Filter/FilterCarousel.tsx +2 -1
- package/src/Filter/component.filter.scss +5 -5
- package/src/Footer/Footer.tsx +9 -6
- package/src/Footer/FooterLinks.tsx +6 -4
- package/src/Hero/HeroContent.tsx +2 -2
- package/src/LearningPaths/LearningPathMenuContent.tsx +3 -3
- package/src/LearningPaths/LearningPathMenuModalWrapper.tsx +2 -2
- package/src/LearningPaths/LearningPathSticky.tsx +2 -2
- package/src/Masthead/Masthead.tsx +2 -2
- package/src/Masthead/SkipToMainContent.tsx +2 -2
- package/src/MediaList/MediaList.tsx +3 -3
- package/src/MyNdla/Resource/Folder.tsx +2 -2
- package/src/NDLAFilm/FilmContentCardTags.tsx +3 -3
- package/src/Navigation/NavigationBox.tsx +2 -2
- package/src/Resource/BlockResource.tsx +2 -2
- package/src/Resource/ListResource.tsx +2 -2
- package/src/Resource/resourceComponents.tsx +2 -2
- package/src/ResourceGroup/ResourceItem.tsx +46 -43
- package/src/Search/SearchField.tsx +63 -15
- package/src/Search/SearchFieldForm.tsx +3 -12
- package/src/SearchTypeResult/SearchItem.tsx +3 -3
- package/src/SearchTypeResult/SearchTypeResult.tsx +2 -2
- package/src/SearchTypeResult/components/ItemContexts.tsx +2 -2
- package/src/SearchTypeResult/components/ItemResourceHeader.tsx +3 -5
- package/src/SnackBar/SnackbarProvider.tsx +2 -2
- package/src/locale/messages-en.ts +31 -0
- package/src/locale/messages-nb.ts +31 -0
- package/src/locale/messages-nn.ts +31 -0
- package/src/locale/messages-se.ts +31 -0
- package/src/locale/messages-sma.ts +31 -0
- package/src/main.scss +4 -5
- package/src/Search/component.search-field.scss +0 -122
- package/src/Search/component.search-result.scss +0 -355
- package/src/Search/component.search.scss +0 -2
|
@@ -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
|
-
|
|
105
|
-
|
|
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
|
-
<
|
|
239
|
-
|
|
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
|
-
|
|
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
|
-
</
|
|
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
|
-
<
|
|
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
|
-
<
|
|
170
|
+
<FiltersWrapper>
|
|
122
171
|
<ActiveFilters filters={filters} onFilterRemove={handleOnFilterRemove} />
|
|
123
|
-
</
|
|
172
|
+
</FiltersWrapper>
|
|
124
173
|
)}
|
|
125
174
|
{value !== "" && (
|
|
126
|
-
<
|
|
127
|
-
|
|
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
|
-
</
|
|
184
|
+
</CloseButton>
|
|
137
185
|
)}
|
|
138
|
-
<
|
|
139
|
-
|
|
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
|
-
</
|
|
147
|
-
</
|
|
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 {
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
124
|
+
z-index: ${stackOrder.toast};
|
|
125
125
|
display: flex;
|
|
126
126
|
flex-direction: column;
|
|
127
127
|
pointer-events: none;
|
|
@@ -1073,6 +1073,25 @@ const messages = {
|
|
|
1073
1073
|
title: "Arena administrator",
|
|
1074
1074
|
description: "Tools to moderate and administer the arena.",
|
|
1075
1075
|
administrate: "Administrate",
|
|
1076
|
+
category: {
|
|
1077
|
+
deleteSnack: "The category has been deleted.",
|
|
1078
|
+
notVisible: "The category is not visible",
|
|
1079
|
+
edit: "Edit category",
|
|
1080
|
+
startEditing: "Edit categories",
|
|
1081
|
+
stopEditing: "Stop editing",
|
|
1082
|
+
form: {
|
|
1083
|
+
formTitle: "Category",
|
|
1084
|
+
newCategory: "New category",
|
|
1085
|
+
editCategory: "Edit category",
|
|
1086
|
+
title: "Title",
|
|
1087
|
+
description: "Description",
|
|
1088
|
+
visible: "Visibility",
|
|
1089
|
+
deleteText: "Delete category",
|
|
1090
|
+
modalTitle: "Delete category",
|
|
1091
|
+
modalDescription:
|
|
1092
|
+
"Are you sure you would like to delete the category, including all content? This is irreversible and cannot be undone.",
|
|
1093
|
+
},
|
|
1094
|
+
},
|
|
1076
1095
|
users: {
|
|
1077
1096
|
title: "Users",
|
|
1078
1097
|
description: "List of all users of the arena. Select a user to moderate them.",
|
|
@@ -1084,6 +1103,7 @@ const messages = {
|
|
|
1084
1103
|
isAdmin: "Administrator",
|
|
1085
1104
|
selectAdministrator: "Make {{user}} a administrator.",
|
|
1086
1105
|
enableArena: "Give {{user}} access to the arena.",
|
|
1106
|
+
noUsers: "No users found.",
|
|
1087
1107
|
},
|
|
1088
1108
|
flags: {
|
|
1089
1109
|
title: "Flag",
|
|
@@ -1100,6 +1120,8 @@ const messages = {
|
|
|
1100
1120
|
numFlags: "Number of flags",
|
|
1101
1121
|
latestFlag: "Last flag",
|
|
1102
1122
|
noflags: "No flagged posts found",
|
|
1123
|
+
solvedFor: "Solved",
|
|
1124
|
+
goToTopic: "Go to topic",
|
|
1103
1125
|
status: {
|
|
1104
1126
|
title: "Status",
|
|
1105
1127
|
resolved: "Resolved",
|
|
@@ -1263,6 +1285,15 @@ const messages = {
|
|
|
1263
1285
|
onDragCancel: "Dragging was cancelled. The resource {{name}} was dropped",
|
|
1264
1286
|
dragHandle: "Drag the resource {{name}}",
|
|
1265
1287
|
},
|
|
1288
|
+
category: {
|
|
1289
|
+
onDragStart: "Picked up the category {{name}}. The category is in position {{index}} of {{length}}",
|
|
1290
|
+
onDragOver: "The category {{name}} was moved into position {{index}} of {{length}}",
|
|
1291
|
+
onDragOverMissingOver: "The category {{name}} is no longer over a droppable area",
|
|
1292
|
+
onDragEnd: "The category {{name}} was dropped at position {{index}} og {{length}}",
|
|
1293
|
+
onDragEndMissingOver: "The category {{name}} was dropped",
|
|
1294
|
+
onDragCancel: "Dragging was cancelled. The category {{name}} was dropped",
|
|
1295
|
+
dragHandle: "Drag the category {{name}}",
|
|
1296
|
+
},
|
|
1266
1297
|
favoriteSubjects: {
|
|
1267
1298
|
title: "My favorite subjects",
|
|
1268
1299
|
subjects: "{{count}} subject",
|
|
@@ -1072,6 +1072,25 @@ const messages = {
|
|
|
1072
1072
|
title: "Arena administrator",
|
|
1073
1073
|
description: "Verktøy for å moderere og administrere arenaen.",
|
|
1074
1074
|
administrate: "Administrer",
|
|
1075
|
+
category: {
|
|
1076
|
+
deleteSnack: "Kategorien har blitt slettet.",
|
|
1077
|
+
notVisible: "Kategorien er ikke synlig",
|
|
1078
|
+
edit: "Rediger kategori",
|
|
1079
|
+
startEditing: "Rediger kategorier",
|
|
1080
|
+
stopEditing: "Avslutt redigering",
|
|
1081
|
+
form: {
|
|
1082
|
+
formTitle: "Kategori",
|
|
1083
|
+
newCategory: "Ny kategori",
|
|
1084
|
+
editCategory: "Rediger kategori",
|
|
1085
|
+
title: "Tittel",
|
|
1086
|
+
description: "Beskrivelse",
|
|
1087
|
+
visible: "Synlighet",
|
|
1088
|
+
deleteText: "Slett kategori",
|
|
1089
|
+
modalTitle: "Slett kategori",
|
|
1090
|
+
modalDescription:
|
|
1091
|
+
"Er du sikker på at du vil slette kategorien, med alt innhold? Dette er irreversibelt og kan ikke angres.",
|
|
1092
|
+
},
|
|
1093
|
+
},
|
|
1075
1094
|
users: {
|
|
1076
1095
|
title: "Brukere",
|
|
1077
1096
|
description: "Liste over alle brukere av arena. Trykk på brukere for å moderere de.",
|
|
@@ -1083,6 +1102,7 @@ const messages = {
|
|
|
1083
1102
|
isAdmin: "Administrator",
|
|
1084
1103
|
selectAdministrator: 'Gjør "{{user}}" til administrator.',
|
|
1085
1104
|
enableArena: 'Gi "{{user}}" tilgang til arena.',
|
|
1105
|
+
noUsers: "Ingen brukere funnet.",
|
|
1086
1106
|
},
|
|
1087
1107
|
flags: {
|
|
1088
1108
|
title: "Flagg",
|
|
@@ -1099,6 +1119,8 @@ const messages = {
|
|
|
1099
1119
|
numFlags: "Antall flagg",
|
|
1100
1120
|
latestFlag: "Siste flagging",
|
|
1101
1121
|
noflags: "Ingen flaggede poster funnet",
|
|
1122
|
+
solvedFor: "Løst for",
|
|
1123
|
+
goToTopic: "Gå til tråd",
|
|
1102
1124
|
status: {
|
|
1103
1125
|
title: "Status",
|
|
1104
1126
|
resolved: "Løst",
|
|
@@ -1261,6 +1283,15 @@ const messages = {
|
|
|
1261
1283
|
onDragCancel: "Flytting avbrutt. Ressursen {{name}} ble sluppet",
|
|
1262
1284
|
dragHandle: "Sorter ressursen {{name}}",
|
|
1263
1285
|
},
|
|
1286
|
+
category: {
|
|
1287
|
+
onDragStart: "Plukket opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
|
|
1288
|
+
onDragOver: "Kategorien {{name}} ble flyttet til posisjon {{index}} av {{length}}",
|
|
1289
|
+
onDragOverMissingOver: "Kategorien {{name}} er ikke lenger over et slippbart område",
|
|
1290
|
+
onDragEnd: "Kategorien {{name}} ble sluppet på posisjon {{index}} av {{length}}",
|
|
1291
|
+
onDragEndMissingOver: "Kategorien {{name}} ble sluppet",
|
|
1292
|
+
onDragCancel: "Flytting avbrutt. Kategorien {{name}} ble sluppet",
|
|
1293
|
+
dragHandle: "Sorter kategorien {{name}}",
|
|
1294
|
+
},
|
|
1264
1295
|
favoriteSubjects: {
|
|
1265
1296
|
title: "Mine favorittfag",
|
|
1266
1297
|
subjects: "{{count}} fag",
|
|
@@ -1072,6 +1072,25 @@ const messages = {
|
|
|
1072
1072
|
title: "Arena administrator",
|
|
1073
1073
|
description: "Verktøy for å moderere og administrere arenaen.",
|
|
1074
1074
|
administrate: "Administrer",
|
|
1075
|
+
category: {
|
|
1076
|
+
deleteSnack: "Kategorien har vorte sletta.",
|
|
1077
|
+
notVisible: "Kategorien er ikkje synleg",
|
|
1078
|
+
edit: "Rediger kategori",
|
|
1079
|
+
startEditing: "Rediger kategoriar",
|
|
1080
|
+
stopEditing: "Avslutt redigering",
|
|
1081
|
+
form: {
|
|
1082
|
+
formTitle: "Kategori",
|
|
1083
|
+
newCategory: "Ny kategori",
|
|
1084
|
+
editCategory: "Rediger kategori",
|
|
1085
|
+
title: "Tittel",
|
|
1086
|
+
description: "Beskriving",
|
|
1087
|
+
visible: "Synlighet",
|
|
1088
|
+
deleteText: "Slett kategori",
|
|
1089
|
+
modalTitle: "Slett kategori",
|
|
1090
|
+
modalDescription:
|
|
1091
|
+
"Er du sikker på at du vil sletta kategorien, med alt innhald? Dette er irreversibelt og kan ikkje angrast.",
|
|
1092
|
+
},
|
|
1093
|
+
},
|
|
1075
1094
|
users: {
|
|
1076
1095
|
title: "Brukarar",
|
|
1077
1096
|
description: "Liste over alle brukarar av arena. Trykk på brukarar for å moderere dei.",
|
|
@@ -1083,6 +1102,7 @@ const messages = {
|
|
|
1083
1102
|
isAdmin: "Administrator",
|
|
1084
1103
|
selectAdministrator: 'Gjør "{{user}}" til administrator.',
|
|
1085
1104
|
enableArena: 'Gi "{{user}}" tilgang til arena.',
|
|
1105
|
+
noUsers: "Ingen brukarar funne.",
|
|
1086
1106
|
},
|
|
1087
1107
|
flags: {
|
|
1088
1108
|
title: "Flagg",
|
|
@@ -1099,6 +1119,8 @@ const messages = {
|
|
|
1099
1119
|
numFlags: "Antal flagg",
|
|
1100
1120
|
latestFlag: "Siste flagging",
|
|
1101
1121
|
noflags: "Ingen flagga postar funne",
|
|
1122
|
+
solvedFor: "Løyst for",
|
|
1123
|
+
goToTopic: "Gå til tråd",
|
|
1102
1124
|
status: {
|
|
1103
1125
|
title: "Status",
|
|
1104
1126
|
resolved: "Løyst",
|
|
@@ -1261,6 +1283,15 @@ const messages = {
|
|
|
1261
1283
|
onDragCancel: "Flytting avbrutt. Ressursen {{name}} blei sleppt",
|
|
1262
1284
|
dragHandle: "Sorter ressursen {{name}}",
|
|
1263
1285
|
},
|
|
1286
|
+
category: {
|
|
1287
|
+
onDragStart: "Plukka opp kategorien {{name}}. Kategorien er på posisjon {{index}} av {{length}}",
|
|
1288
|
+
onDragOver: "Kategorien {{name}} vart flytta til posisjon {{index}} av {{length}}",
|
|
1289
|
+
onDragOverMissingOver: "Kategorien {{name}} er ikkje lenger over eit slippbart område",
|
|
1290
|
+
onDragEnd: "Kategorien {{name}} vart sleppt på posisjon {{index}} av {{length}}",
|
|
1291
|
+
onDragEndMissingOver: "Kategorien {{name}} vart sleppt",
|
|
1292
|
+
onDragCancel: "Flytting avbrote. Kategorien {{name}} vart sleppt",
|
|
1293
|
+
dragHandle: "Sorter kategorien {{name}}",
|
|
1294
|
+
},
|
|
1264
1295
|
favoriteSubjects: {
|
|
1265
1296
|
title: "Mine favorittfag",
|
|
1266
1297
|
subjects: "{{count}} fag",
|
|
@@ -1074,6 +1074,25 @@ const messages = {
|
|
|
1074
1074
|
title: "Arena administrator",
|
|
1075
1075
|
description: "Verktøy for å moderere og administrere arenaen.",
|
|
1076
1076
|
administrate: "Administrer",
|
|
1077
|
+
category: {
|
|
1078
|
+
deleteSnack: "Kategorien har blitt slettet.",
|
|
1079
|
+
notVisible: "Kategorien er ikke synlig",
|
|
1080
|
+
edit: "Rediger kategori",
|
|
1081
|
+
startEditing: "Rediger kategorier",
|
|
1082
|
+
stopEditing: "Avslutt redigering",
|
|
1083
|
+
form: {
|
|
1084
|
+
formTitle: "Kategori",
|
|
1085
|
+
newCategory: "Ny kategori",
|
|
1086
|
+
editCategory: "Rediger kategori",
|
|
1087
|
+
title: "Tittel",
|
|
1088
|
+
description: "Beskrivelse",
|
|
1089
|
+
visible: "Synlighet",
|
|
1090
|
+
deleteText: "Slett kategori",
|
|
1091
|
+
modalTitle: "Slett kategori",
|
|
1092
|
+
modalDescription:
|
|
1093
|
+
"Er du sikker på at du vil slette kategorien, med alt innhold? Dette er irreversibelt og kan ikke angres.",
|
|
1094
|
+
},
|
|
1095
|
+
},
|
|
1077
1096
|
users: {
|
|
1078
1097
|
title: "Brukere",
|
|
1079
1098
|
description: "Liste over alle brukere av arena. Trykk på brukere for å moderere de.",
|
|
@@ -1085,6 +1104,7 @@ const messages = {
|
|
|
1085
1104
|
isAdmin: "Administrator",
|
|
1086
1105
|
selectAdministrator: 'Gjør "{{user}}" til administrator.',
|
|
1087
1106
|
enableArena: 'Gi "{{user}}" tilgang til arena.',
|
|
1107
|
+
noUsers: "Ingen brukere funnet.",
|
|
1088
1108
|
},
|
|
1089
1109
|
flags: {
|
|
1090
1110
|
title: "Flagg",
|
|
@@ -1101,6 +1121,8 @@ const messages = {
|
|
|
1101
1121
|
numFlags: "Antall flagg",
|
|
1102
1122
|
latestFlag: "Siste flagging",
|
|
1103
1123
|
noflags: "Ingen flaggede poster funnet",
|
|
1124
|
+
solvedFor: "Løst for",
|
|
1125
|
+
goToTopic: "Gå til tråd",
|
|
1104
1126
|
status: {
|
|
1105
1127
|
title: "Status",
|
|
1106
1128
|
resolved: "Løst",
|
|
@@ -1263,6 +1285,15 @@ const messages = {
|
|
|
1263
1285
|
onDragCancel: "Flytting avbrutt. Ressursen {{name}} ble sluppet",
|
|
1264
1286
|
dragHandle: "Sorter ressursen {{name}}",
|
|
1265
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
|
+
},
|
|
1266
1297
|
favoriteSubjects: {
|
|
1267
1298
|
title: "Mine favorittfag",
|
|
1268
1299
|
subjects: "{{count}} fag",
|