@ndla/ui 16.0.0 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/NDLAFilm/CategorySelect.js +51 -25
- package/es/NDLAFilm/FilmMovieList.js +14 -10
- package/es/NDLAFilm/FilmMovieSearch.js +23 -10
- package/es/NDLAFilm/FilmSlideshow.js +117 -19
- package/es/NDLAFilm/MovieGrid.js +23 -14
- package/es/NDLAFilm/NavigationArrow.js +33 -7
- package/es/NDLAFilm/SlideshowIndicator.js +27 -11
- package/es/NDLAFilm/filmStyles.js +23 -0
- package/es/Notion/ConceptNotion.js +1 -1
- package/es/Notion/index.js +2 -1
- package/es/RadioButtonGroup/RadioButtonGroup.js +28 -9
- package/es/Resource/resourceComponents.js +17 -9
- package/es/TreeStructure/FolderItem.js +39 -28
- package/es/TreeStructure/FolderItems.js +8 -5
- package/es/TreeStructure/TreeStructure.js +10 -11
- package/es/TreeStructure/TreeStructureWrapper.js +2 -2
- package/es/all.css +1 -1
- package/es/index.js +1 -1
- package/es/locale/messages-en.js +1 -1
- package/es/locale/messages-nb.js +1 -1
- package/es/locale/messages-nn.js +1 -1
- package/es/locale/messages-se.js +1 -1
- package/es/locale/messages-sma.js +1 -1
- package/lib/Breadcrumblist/index.d.ts +1 -0
- package/lib/NDLAFilm/CategorySelect.js +52 -30
- package/lib/NDLAFilm/FilmMovieList.js +17 -13
- package/lib/NDLAFilm/FilmMovieSearch.js +29 -17
- package/lib/NDLAFilm/FilmSlideshow.js +113 -24
- package/lib/NDLAFilm/MovieGrid.js +26 -16
- package/lib/NDLAFilm/NavigationArrow.d.ts +5 -1
- package/lib/NDLAFilm/NavigationArrow.js +34 -10
- package/lib/NDLAFilm/SlideshowIndicator.js +34 -13
- package/lib/NDLAFilm/filmStyles.d.ts +8 -0
- package/lib/NDLAFilm/filmStyles.js +38 -0
- package/lib/Notion/ConceptNotion.d.ts +1 -1
- package/lib/Notion/ConceptNotion.js +1 -1
- package/lib/Notion/index.d.ts +4 -1
- package/lib/Notion/index.js +11 -3
- package/lib/RadioButtonGroup/RadioButtonGroup.js +28 -13
- package/lib/Resource/resourceComponents.js +17 -9
- package/lib/TreeStructure/FolderItem.d.ts +3 -2
- package/lib/TreeStructure/FolderItem.js +38 -28
- package/lib/TreeStructure/FolderItems.d.ts +1 -1
- package/lib/TreeStructure/FolderItems.js +8 -5
- package/lib/TreeStructure/TreeStructure.d.ts +1 -1
- package/lib/TreeStructure/TreeStructure.js +10 -11
- package/lib/TreeStructure/TreeStructure.types.d.ts +6 -3
- package/lib/TreeStructure/TreeStructureWrapper.js +2 -2
- package/lib/all.css +1 -1
- package/lib/index.d.ts +6 -2
- package/lib/index.js +7 -0
- package/lib/locale/messages-en.js +1 -1
- package/lib/locale/messages-nb.js +1 -1
- package/lib/locale/messages-nn.js +1 -1
- package/lib/locale/messages-se.js +1 -1
- package/lib/locale/messages-sma.js +1 -1
- package/package.json +13 -13
- package/src/Breadcrumblist/{index.tsx → index.ts} +1 -0
- package/src/NDLAFilm/CategorySelect.tsx +110 -23
- package/src/NDLAFilm/FilmMovieList.tsx +13 -11
- package/src/NDLAFilm/FilmMovieSearch.tsx +45 -14
- package/src/NDLAFilm/FilmSlideshow.tsx +186 -25
- package/src/NDLAFilm/MovieGrid.tsx +33 -25
- package/src/NDLAFilm/NavigationArrow.tsx +76 -10
- package/src/NDLAFilm/SlideshowIndicator.tsx +53 -11
- package/src/NDLAFilm/component.film-movielist.scss +0 -46
- package/src/NDLAFilm/filmStyles.ts +33 -0
- package/src/Notion/ConceptNotion.tsx +2 -1
- package/src/Notion/index.ts +4 -1
- package/src/RadioButtonGroup/RadioButtonGroup.tsx +82 -11
- package/src/Resource/resourceComponents.tsx +1 -3
- package/src/TreeStructure/FolderItem.tsx +40 -19
- package/src/TreeStructure/FolderItems.tsx +3 -0
- package/src/TreeStructure/TreeStructure.tsx +7 -11
- package/src/TreeStructure/TreeStructure.types.ts +7 -3
- package/src/TreeStructure/TreeStructureWrapper.tsx +1 -1
- package/src/index.ts +15 -2
- package/src/locale/messages-en.ts +1 -1
- package/src/locale/messages-nb.ts +1 -1
- package/src/locale/messages-nn.ts +1 -1
- package/src/locale/messages-se.ts +1 -1
- package/src/locale/messages-sma.ts +1 -1
- package/src/main.scss +0 -3
- package/src/NDLAFilm/component.film-moviesearch.scss +0 -127
- package/src/NDLAFilm/component.film-slideshow.scss +0 -258
- package/src/RadioButtonGroup/component.radio-button-group.scss +0 -67
package/lib/index.d.ts
CHANGED
|
@@ -25,9 +25,12 @@ export { default as InfoWidget } from './InfoWidget';
|
|
|
25
25
|
export { FrontpageInfo, FrontpageFilm, FrontpageToolbox, FrontpageMultidisciplinarySubject, FrontpageHeader, FrontpageSubjectIllustration, FrontpageSearch, FrontpageProgramMenu, } from './Frontpage';
|
|
26
26
|
export { default as FactBox } from './FactBox';
|
|
27
27
|
export { default as Image, ImageLink, makeSrcQueryString } from './Image';
|
|
28
|
+
export type { ImageCrop, ImageFocalPoint } from './Image';
|
|
29
|
+
export type { HeroContentType } from './Hero';
|
|
28
30
|
export { SubjectMaterialHero, TasksAndActivitiesHero, AssessmentResourcesHero, SubjectHero, ExternalLearningResourcesHero, SourceMaterialHero, Hero, NdlaFilmHero, } from './Hero';
|
|
29
31
|
export { Footer, EditorName, FooterText, FooterAuth } from './Footer';
|
|
30
|
-
export { Figure, FigureCaption, FigureLicenseDialog, FigureExpandButton, FigureOpenDialogButton } from './Figure';
|
|
32
|
+
export { Figure, FigureCaption, FigureLicenseDialog, FigureExpandButton, FigureOpenDialogButton, FigureBylineExpandButton, } from './Figure';
|
|
33
|
+
export type { FigureType } from './Figure';
|
|
31
34
|
export { LanguageSelector } from './LanguageSelector';
|
|
32
35
|
export { LearningPathWrapper, LearningPathContent, LearningPathMenu, LearningPathSticky, LearningPathInformation, LearningPathStickySibling, LearningPathStickyPlaceholder, LearningPathLastStepNavigation, LearningPathMobileStepInfo, LearningPathMobileHeader, } from './LearningPaths';
|
|
33
36
|
export { Translation, TranslationLine, TranslationBox } from './Translation';
|
|
@@ -62,7 +65,7 @@ export { default as Aside } from './Aside';
|
|
|
62
65
|
export { default as AuthorInfo } from './AuthorInfo';
|
|
63
66
|
export { default as Breadcrumb, HeaderBreadcrumb, HomeBreadcrumb, ActionBreadcrumb } from './Breadcrumb';
|
|
64
67
|
export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from './Breadcrumb';
|
|
65
|
-
export type { BreadcrumbItemProps } from './Breadcrumblist
|
|
68
|
+
export type { BreadcrumbItemProps } from './Breadcrumblist';
|
|
66
69
|
export { i18nInstance, formatNestedMessages, formatMessage } from './i18n';
|
|
67
70
|
export { default as ResourceGroup } from './ResourceGroup';
|
|
68
71
|
export { default as LayoutItem, OneColumn, PageContainer, Content } from './Layout';
|
|
@@ -75,6 +78,7 @@ export { default as ContentCard } from './ContentCard';
|
|
|
75
78
|
export { default as CopyParagraphButton } from './CopyParagraphButton';
|
|
76
79
|
export { default as ContentPlaceholder } from './ContentPlaceholder';
|
|
77
80
|
export { Notion, ConceptNotion } from './Notion';
|
|
81
|
+
export type { NotionVisualElementType, ConceptNotionType } from './Notion';
|
|
78
82
|
export { BannerCard } from './BannerCard';
|
|
79
83
|
export { VerticalNavigation, Folder, FolderInput } from './MyNdla';
|
|
80
84
|
export { ListResource, BlockResource } from './Resource';
|
package/lib/index.js
CHANGED
|
@@ -68,6 +68,7 @@ var _exportNames = {
|
|
|
68
68
|
FigureLicenseDialog: true,
|
|
69
69
|
FigureExpandButton: true,
|
|
70
70
|
FigureOpenDialogButton: true,
|
|
71
|
+
FigureBylineExpandButton: true,
|
|
71
72
|
LanguageSelector: true,
|
|
72
73
|
LearningPathWrapper: true,
|
|
73
74
|
LearningPathContent: true,
|
|
@@ -560,6 +561,12 @@ Object.defineProperty(exports, "FigureOpenDialogButton", {
|
|
|
560
561
|
return _Figure.FigureOpenDialogButton;
|
|
561
562
|
}
|
|
562
563
|
});
|
|
564
|
+
Object.defineProperty(exports, "FigureBylineExpandButton", {
|
|
565
|
+
enumerable: true,
|
|
566
|
+
get: function get() {
|
|
567
|
+
return _Figure.FigureBylineExpandButton;
|
|
568
|
+
}
|
|
569
|
+
});
|
|
563
570
|
Object.defineProperty(exports, "LanguageSelector", {
|
|
564
571
|
enumerable: true,
|
|
565
572
|
get: function get() {
|
|
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
318
318
|
feide: 'This resource is accessible only to teachers who are logged in with Feide.',
|
|
319
319
|
resources: 'This is not a complete course produced by NDLA, but a collection of resources we hope you will find useful.',
|
|
320
320
|
subjectOutdated: 'This course is not updated to the current curriculum.',
|
|
321
|
-
subjectBeta: 'This course is in beta.',
|
|
321
|
+
subjectBeta: 'This course is in beta. New resources are being added continously.',
|
|
322
322
|
newVersion: 'This learning resource is not updated to the current curriculum. You can find an updated version here: ',
|
|
323
323
|
frontPageBeta: 'Revised subjects have been revised in accordance with the new curriculum that will be put into effect from August 2022. Beta versions of subjects are subjects we are still working on. We hope, however, that the learning resources available by now may come in useful already.',
|
|
324
324
|
frontPageExpired: 'Expired subjects are not being taught any longer, but it may still be possible to take exams in these subjects.',
|
|
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
318
318
|
feide: 'Denne ressursen er bare tilgjengelig for lærere som er pålogget med Feide.',
|
|
319
319
|
resources: 'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
|
|
320
320
|
subjectOutdated: 'Dette faget følger en utgått læreplan.',
|
|
321
|
-
subjectBeta: 'Dette faget er i betaversjon.',
|
|
321
|
+
subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
|
|
322
322
|
newVersion: 'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
|
|
323
323
|
frontPageBeta: 'Kommende fag er tilpassa ny læreplan som gjelder fra høsten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursene i betafaga kan være nyttige allerede nå.',
|
|
324
324
|
frontPageExpired: 'Utgåtte fag undervises det ikke i lenger, men det kan fortsatt være mulig å ta eksamen i faga som privatist.',
|
|
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
318
318
|
feide: 'Denne ressursen er berre tilgjengeleg for lærarar som er pålogga med Feide.',
|
|
319
319
|
resources: 'Dette er ikkje eit komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan vere nyttig for deg.',
|
|
320
320
|
subjectOutdated: 'Dette faget følgjer ein utgått læreplan.',
|
|
321
|
-
subjectBeta: 'Dette faget er i betaversjon.',
|
|
321
|
+
subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpande.',
|
|
322
322
|
newVersion: 'Denne læringsressursen er ikkje oppdatert etter gjeldande læreplan. Du finn ein oppdatert versjon her: ',
|
|
323
323
|
frontPageBeta: 'Kommande fag er tilpassa ny læreplan som gjeld fra hausten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursane i betafaga kan vere nyttige allereie no.',
|
|
324
324
|
frontPageExpired: 'Utgåtte fag blir det ikkje undervist i lenger, men det kan framleis vere mogleg å ta eksamen i faget som privatist.',
|
|
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
318
318
|
feide: 'Denne ressursen er bare tilgjengelig for lærere som er pålogget med Feide.',
|
|
319
319
|
resources: 'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
|
|
320
320
|
subjectOutdated: 'Dette faget følger en utgått læreplan.',
|
|
321
|
-
subjectBeta: 'Dette faget er i betaversjon.',
|
|
321
|
+
subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
|
|
322
322
|
newVersion: 'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
|
|
323
323
|
frontPageBeta: 'Kommende fag er tilpassa ny læreplan som gjelder fra høsten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursene i betafaga kan være nyttige allerede nå.',
|
|
324
324
|
frontPageExpired: 'Utgåtte fag undervises det ikke i lenger, men det kan fortsatt være mulig å ta eksamen i faga som privatist.',
|
|
@@ -318,7 +318,7 @@ var messages = _objectSpread(_objectSpread({
|
|
|
318
318
|
feide: 'Denne ressursen er bare tilgjengelig for lærere som er pålogget med Feide.',
|
|
319
319
|
resources: 'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
|
|
320
320
|
subjectOutdated: 'Dette faget følger en utgått læreplan.',
|
|
321
|
-
subjectBeta: 'Dette faget er i betaversjon.',
|
|
321
|
+
subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
|
|
322
322
|
newVersion: 'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
|
|
323
323
|
frontPageBeta: 'Kommende fag er tilpassa ny læreplan som gjelder fra høsten 2022. Betafag er fag under arbeid. Vi håper likevel at læringsressursene i betafaga kan være nyttige allerede nå.',
|
|
324
324
|
frontPageExpired: 'Utgåtte fag undervises det ikke i lenger, men det kan fortsatt være mulig å ta eksamen i faga som privatist.',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ndla/ui",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.2.0",
|
|
4
4
|
"description": "UI component library for NDLA.",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"types"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@ndla/button": "^2.
|
|
35
|
-
"@ndla/carousel": "^1.2.
|
|
36
|
-
"@ndla/core": "^2.
|
|
34
|
+
"@ndla/button": "^2.5.0",
|
|
35
|
+
"@ndla/carousel": "^1.2.10",
|
|
36
|
+
"@ndla/core": "^2.2.0",
|
|
37
37
|
"@ndla/hooks": "^1.1.4",
|
|
38
|
-
"@ndla/icons": "^1.
|
|
39
|
-
"@ndla/licenses": "^5.0.
|
|
40
|
-
"@ndla/modal": "^1.2.
|
|
41
|
-
"@ndla/notion": "^3.1.
|
|
42
|
-
"@ndla/safelink": "^2.0.
|
|
43
|
-
"@ndla/switch": "^0.1.
|
|
44
|
-
"@ndla/tabs": "^1.1.
|
|
45
|
-
"@ndla/tooltip": "^2.1.
|
|
38
|
+
"@ndla/icons": "^1.9.0",
|
|
39
|
+
"@ndla/licenses": "^5.0.1",
|
|
40
|
+
"@ndla/modal": "^1.2.11",
|
|
41
|
+
"@ndla/notion": "^3.1.15",
|
|
42
|
+
"@ndla/safelink": "^2.0.6",
|
|
43
|
+
"@ndla/switch": "^0.1.6",
|
|
44
|
+
"@ndla/tabs": "^1.1.9",
|
|
45
|
+
"@ndla/tooltip": "^2.1.1",
|
|
46
46
|
"@ndla/util": "^3.0.0",
|
|
47
47
|
"@reach/menu-button": "^0.16.2",
|
|
48
48
|
"@reach/slider": "^0.16.0",
|
|
@@ -81,5 +81,5 @@
|
|
|
81
81
|
"publishConfig": {
|
|
82
82
|
"access": "public"
|
|
83
83
|
},
|
|
84
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "97d16d07a6f4d4fc04c5114f01aac6c9480b0341"
|
|
85
85
|
}
|
|
@@ -1,14 +1,109 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
|
-
import BEMHelper from 'react-bem-helper';
|
|
3
2
|
import FocusTrapReact from 'focus-trap-react';
|
|
3
|
+
import styled from '@emotion/styled';
|
|
4
|
+
import { keyframes } from '@emotion/core';
|
|
5
|
+
import { breakpoints, colors, fonts, mq, spacing } from '@ndla/core';
|
|
4
6
|
import { ChevronDown } from '@ndla/icons/common';
|
|
5
7
|
import { WithTranslation, withTranslation } from 'react-i18next';
|
|
6
8
|
import { MovieResourceType } from './types';
|
|
7
9
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const zoomInSelect = keyframes`
|
|
11
|
+
0% {
|
|
12
|
+
display: none;
|
|
13
|
+
opacity: 0;
|
|
14
|
+
}
|
|
15
|
+
1% {
|
|
16
|
+
display: flex;
|
|
17
|
+
transform: scale3d(0.95, 0.95, 0.95);
|
|
18
|
+
opacity: 0;
|
|
19
|
+
}
|
|
20
|
+
100% {
|
|
21
|
+
opacity: 1;
|
|
22
|
+
transform: scale3d(1, 1, 1);
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
const DropdownContainer = styled.div`
|
|
27
|
+
position: relative;
|
|
28
|
+
margin: 0 0 ${spacing.normal};
|
|
29
|
+
`;
|
|
30
|
+
|
|
31
|
+
const DropdownButton = styled.button`
|
|
32
|
+
border-radius: 4px;
|
|
33
|
+
${fonts.sizes('22px', '26px')};
|
|
34
|
+
border: 0;
|
|
35
|
+
text-transform: uppercase;
|
|
36
|
+
background: ${colors.ndlaFilm.filmColorBright};
|
|
37
|
+
color: ${colors.white};
|
|
38
|
+
padding: ${spacing.small} ${spacing.nsmall};
|
|
39
|
+
font-weight: ${fonts.weight.semibold};
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
text-align: left;
|
|
43
|
+
justify-content: space-between;
|
|
44
|
+
width: 100%;
|
|
45
|
+
letter-spacing: 0.05em;
|
|
46
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
47
|
+
padding: ${spacing.small} ${spacing.normal};
|
|
48
|
+
}
|
|
49
|
+
div:first-child {
|
|
50
|
+
${mq.range({ until: breakpoints.tablet })} {
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
small {
|
|
54
|
+
padding: 0;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
small {
|
|
59
|
+
text-transform: none;
|
|
60
|
+
padding-left: ${spacing.small};
|
|
61
|
+
font-weight: normal;
|
|
62
|
+
}
|
|
63
|
+
`;
|
|
64
|
+
|
|
65
|
+
interface DropdownWrapperProps {
|
|
66
|
+
offsetDropdown: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const DropdownWrapper = styled.div<DropdownWrapperProps>`
|
|
70
|
+
top: -${(props) => props.offsetDropdown * 52 + 13}px;
|
|
71
|
+
${DropdownButton} {
|
|
72
|
+
border-radius: 0;
|
|
73
|
+
text-transform: 0;
|
|
74
|
+
letter-spacing: 0;
|
|
75
|
+
}
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-direction: column;
|
|
78
|
+
padding: $spacing--small 0;
|
|
79
|
+
background: ${colors.brand.lighter};
|
|
80
|
+
border-radius: 4px;
|
|
81
|
+
left: 0;
|
|
82
|
+
right: 0;
|
|
83
|
+
animation: ${zoomInSelect} 200ms ease;
|
|
84
|
+
box-shadow: 0 0 30px rgba(${colors.black}, 0.6);
|
|
85
|
+
position: absolute;
|
|
86
|
+
z-index: 9999;
|
|
87
|
+
button,
|
|
88
|
+
a {
|
|
89
|
+
color: ${colors.text.primary};
|
|
90
|
+
border: 0;
|
|
91
|
+
outline: 0;
|
|
92
|
+
text-align: left;
|
|
93
|
+
background: transparent;
|
|
94
|
+
padding: ${spacing.small};
|
|
95
|
+
padding-left: ${spacing.normal};
|
|
96
|
+
font-weight: ${fonts.weight.semibold};
|
|
97
|
+
text-decoration: none;
|
|
98
|
+
box-shadow: none;
|
|
99
|
+
transition: background 200ms ease;
|
|
100
|
+
&:hover,
|
|
101
|
+
&:focus {
|
|
102
|
+
color: ${colors.brand.primary};
|
|
103
|
+
background: rgba(0, 0, 0, 0.2);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
12
107
|
|
|
13
108
|
interface Props extends WithTranslation {
|
|
14
109
|
resourceTypes: MovieResourceType[];
|
|
@@ -66,12 +161,11 @@ class CategorySelect extends Component<Props, State> {
|
|
|
66
161
|
: 0;
|
|
67
162
|
|
|
68
163
|
return (
|
|
69
|
-
<
|
|
70
|
-
<
|
|
164
|
+
<DropdownContainer className="u-12/12">
|
|
165
|
+
<DropdownButton
|
|
71
166
|
aria-expanded={!resourceTypesIsOpen}
|
|
72
167
|
aria-controls="selectCategory"
|
|
73
168
|
type="button"
|
|
74
|
-
{...classes('dropdown-button', 'toggleButton')}
|
|
75
169
|
tabIndex={resourceTypesIsOpen ? -1 : 0}
|
|
76
170
|
onClick={this.openSelect}>
|
|
77
171
|
<div>
|
|
@@ -83,7 +177,7 @@ class CategorySelect extends Component<Props, State> {
|
|
|
83
177
|
<div>
|
|
84
178
|
<ChevronDown className="c-icon--22" />
|
|
85
179
|
</div>
|
|
86
|
-
</
|
|
180
|
+
</DropdownButton>
|
|
87
181
|
{resourceTypesIsOpen && (
|
|
88
182
|
<FocusTrapReact
|
|
89
183
|
active={resourceTypesIsOpen}
|
|
@@ -94,32 +188,25 @@ class CategorySelect extends Component<Props, State> {
|
|
|
94
188
|
clickOutsideDeactivates: true,
|
|
95
189
|
escapeDeactivates: true,
|
|
96
190
|
}}>
|
|
97
|
-
<
|
|
98
|
-
<button
|
|
99
|
-
aria-controls={ariaControlId}
|
|
100
|
-
type="button"
|
|
101
|
-
onClick={() => this.onSelect()}
|
|
102
|
-
{...classes('dropdown-button')}>
|
|
191
|
+
<DropdownWrapper id="selectCategory" offsetDropdown={offsetDropDown}>
|
|
192
|
+
<DropdownButton aria-controls={ariaControlId} type="button" onClick={() => this.onSelect()}>
|
|
103
193
|
<span>{t('ndlaFilm.search.categoryFromNdla')}</span>
|
|
104
|
-
</
|
|
194
|
+
</DropdownButton>
|
|
105
195
|
{resourceTypes.map((resourceType) => (
|
|
106
|
-
<
|
|
196
|
+
<DropdownButton
|
|
107
197
|
aria-controls={ariaControlId}
|
|
108
198
|
type="button"
|
|
109
199
|
ref={(el) => this.createRef(el, resourceType.id)}
|
|
110
200
|
onClick={() => this.onSelect(resourceType.id)}
|
|
111
|
-
{...classes('dropdown-button', {
|
|
112
|
-
selected: !!resourceTypeSelected && resourceTypeSelected.id === resourceType.id,
|
|
113
|
-
})}
|
|
114
201
|
data-id={resourceType.id}
|
|
115
202
|
key={resourceType.id}>
|
|
116
203
|
<span>{resourceType.name}</span>
|
|
117
|
-
</
|
|
204
|
+
</DropdownButton>
|
|
118
205
|
))}
|
|
119
|
-
</
|
|
206
|
+
</DropdownWrapper>
|
|
120
207
|
</FocusTrapReact>
|
|
121
208
|
)}
|
|
122
|
-
</
|
|
209
|
+
</DropdownContainer>
|
|
123
210
|
);
|
|
124
211
|
}
|
|
125
212
|
}
|
|
@@ -6,15 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import React from 'react';
|
|
9
|
-
import BEMHelper from 'react-bem-helper';
|
|
10
9
|
import { Carousel, CalculatedCarouselProps } from '@ndla/carousel';
|
|
10
|
+
import styled from '@emotion/styled';
|
|
11
|
+
import { breakpoints, mq, spacing } from '@ndla/core';
|
|
11
12
|
import FilmContentCard from './FilmContentCard';
|
|
12
13
|
import { MovieResourceType, MovieType } from './types';
|
|
13
|
-
|
|
14
|
-
const classes = new BEMHelper({
|
|
15
|
-
name: 'film-movielist',
|
|
16
|
-
prefix: 'c-',
|
|
17
|
-
});
|
|
14
|
+
import { StyledHeadingH1 } from './filmStyles';
|
|
18
15
|
|
|
19
16
|
interface Props {
|
|
20
17
|
movies: MovieType[];
|
|
@@ -26,6 +23,13 @@ interface Props {
|
|
|
26
23
|
resizeThumbnailImages?: boolean;
|
|
27
24
|
}
|
|
28
25
|
|
|
26
|
+
const StyledSection = styled.section`
|
|
27
|
+
margin-bottom: ${spacing.normal};
|
|
28
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
29
|
+
margin-bottom: ${spacing.large};
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
|
|
29
33
|
const FilmMovieList = ({
|
|
30
34
|
name,
|
|
31
35
|
movies = [],
|
|
@@ -35,10 +39,8 @@ const FilmMovieList = ({
|
|
|
35
39
|
autoSizedProps,
|
|
36
40
|
resizeThumbnailImages,
|
|
37
41
|
}: Props) => (
|
|
38
|
-
<
|
|
39
|
-
<
|
|
40
|
-
{name}
|
|
41
|
-
</h1>
|
|
42
|
+
<StyledSection>
|
|
43
|
+
<StyledHeadingH1 marginLeft={autoSizedProps.margin}>{name}</StyledHeadingH1>
|
|
42
44
|
<Carousel
|
|
43
45
|
disableScroll={false}
|
|
44
46
|
slideBackwardsLabel={slideBackwardsLabel}
|
|
@@ -56,7 +58,7 @@ const FilmMovieList = ({
|
|
|
56
58
|
))}
|
|
57
59
|
{...autoSizedProps}
|
|
58
60
|
/>
|
|
59
|
-
</
|
|
61
|
+
</StyledSection>
|
|
60
62
|
);
|
|
61
63
|
|
|
62
64
|
export default FilmMovieList;
|
|
@@ -7,22 +7,53 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
|
-
import BEMHelper from 'react-bem-helper';
|
|
11
10
|
import SafeLink from '@ndla/safelink';
|
|
12
11
|
import { useTranslation } from 'react-i18next';
|
|
12
|
+
import styled from '@emotion/styled';
|
|
13
|
+
import { spacing, mq, breakpoints, colors } from '@ndla/core';
|
|
13
14
|
import CategorySelect from './CategorySelect';
|
|
14
15
|
import { MovieResourceType } from './types';
|
|
15
16
|
import { OneColumn } from '..';
|
|
17
|
+
import { StyledHeadingH2 } from './filmStyles';
|
|
16
18
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
19
|
+
const FilmMovieSearchContainer = styled.div`
|
|
20
|
+
margin: ${spacing.normal} 0 ${spacing.large};
|
|
21
|
+
`;
|
|
21
22
|
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const TopicNavigation = styled.div`
|
|
24
|
+
margin: ${spacing.normal} 0;
|
|
25
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: flex-start;
|
|
28
|
+
padding: 0 ${spacing.normal};
|
|
29
|
+
}
|
|
30
|
+
ul {
|
|
31
|
+
list-style-type: none;
|
|
32
|
+
list-style-image: none;
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: flex-start;
|
|
35
|
+
flex-wrap: wrap;
|
|
36
|
+
padding: 0;
|
|
37
|
+
margin: ${spacing.small} 0;
|
|
38
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
39
|
+
padding-left: ${spacing.normal};
|
|
40
|
+
}
|
|
41
|
+
li {
|
|
42
|
+
padding: 0;
|
|
43
|
+
width: 100%;
|
|
44
|
+
${mq.range({ from: breakpoints.tablet })} {
|
|
45
|
+
width: 50%;
|
|
46
|
+
}
|
|
47
|
+
a {
|
|
48
|
+
color: #fff;
|
|
49
|
+
&:hover,
|
|
50
|
+
&:focus {
|
|
51
|
+
color: ${colors.brand.light};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
`;
|
|
26
57
|
|
|
27
58
|
interface Props {
|
|
28
59
|
topics?: { id: string; path: string; name: string }[];
|
|
@@ -41,10 +72,10 @@ const FilmMovieSearch = ({
|
|
|
41
72
|
}: Props) => {
|
|
42
73
|
const { t } = useTranslation();
|
|
43
74
|
return (
|
|
44
|
-
<
|
|
75
|
+
<FilmMovieSearchContainer>
|
|
45
76
|
<OneColumn>
|
|
46
|
-
<
|
|
47
|
-
<
|
|
77
|
+
<TopicNavigation>
|
|
78
|
+
<StyledHeadingH2 className="u-12/12 u-4/12@tablet">{t('ndlaFilm.subjectsInMovies')}:</StyledHeadingH2>
|
|
48
79
|
<nav className="u-12/12 u-8/12@tablet">
|
|
49
80
|
<ul>
|
|
50
81
|
{topics.map((topic) => (
|
|
@@ -56,7 +87,7 @@ const FilmMovieSearch = ({
|
|
|
56
87
|
))}
|
|
57
88
|
</ul>
|
|
58
89
|
</nav>
|
|
59
|
-
</
|
|
90
|
+
</TopicNavigation>
|
|
60
91
|
<CategorySelect
|
|
61
92
|
onChangeResourceType={onChangeResourceType}
|
|
62
93
|
resourceTypes={resourceTypes}
|
|
@@ -64,7 +95,7 @@ const FilmMovieSearch = ({
|
|
|
64
95
|
ariaControlId={ariaControlId}
|
|
65
96
|
/>
|
|
66
97
|
</OneColumn>
|
|
67
|
-
</
|
|
98
|
+
</FilmMovieSearchContainer>
|
|
68
99
|
);
|
|
69
100
|
};
|
|
70
101
|
|