@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.
- 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 +14 -11
- 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 +9 -17
- package/es/Grid/Grid.js +3 -3
- package/es/Hero/Hero.js +1 -1
- package/es/Hero/HeroContent.js +3 -3
- package/es/KeyFigure/KeyFigure.js +4 -4
- 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/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 +34 -2
- package/es/locale/messages-nb.js +34 -2
- package/es/locale/messages-nn.js +34 -2
- package/es/locale/messages-se.js +34 -2
- package/es/locale/messages-sma.js +34 -2
- 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 +13 -10
- 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 +8 -16
- package/lib/Grid/Grid.js +3 -3
- package/lib/Hero/Hero.js +1 -1
- package/lib/Hero/HeroContent.js +2 -2
- package/lib/KeyFigure/KeyFigure.js +4 -4
- 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/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 +32 -0
- package/lib/locale/messages-en.js +34 -2
- package/lib/locale/messages-nb.d.ts +32 -0
- package/lib/locale/messages-nb.js +34 -2
- package/lib/locale/messages-nn.d.ts +32 -0
- package/lib/locale/messages-nn.js +34 -2
- package/lib/locale/messages-se.d.ts +32 -0
- package/lib/locale/messages-se.js +34 -2
- package/lib/locale/messages-sma.d.ts +32 -0
- package/lib/locale/messages-sma.js +34 -2
- 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 +10 -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 +4 -4
- package/src/Grid/Grid.tsx +2 -0
- package/src/Hero/Hero.tsx +1 -1
- package/src/Hero/HeroContent.tsx +2 -2
- package/src/KeyFigure/KeyFigure.tsx +1 -1
- 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/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 +33 -0
- package/src/locale/messages-nb.ts +33 -0
- package/src/locale/messages-nn.ts +33 -0
- package/src/locale/messages-se.ts +33 -0
- package/src/locale/messages-sma.ts +33 -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
|
@@ -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:
|
|
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
|
-
|
|
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;
|
|
@@ -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",
|