@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.
Files changed (86) hide show
  1. package/es/NDLAFilm/CategorySelect.js +51 -25
  2. package/es/NDLAFilm/FilmMovieList.js +14 -10
  3. package/es/NDLAFilm/FilmMovieSearch.js +23 -10
  4. package/es/NDLAFilm/FilmSlideshow.js +117 -19
  5. package/es/NDLAFilm/MovieGrid.js +23 -14
  6. package/es/NDLAFilm/NavigationArrow.js +33 -7
  7. package/es/NDLAFilm/SlideshowIndicator.js +27 -11
  8. package/es/NDLAFilm/filmStyles.js +23 -0
  9. package/es/Notion/ConceptNotion.js +1 -1
  10. package/es/Notion/index.js +2 -1
  11. package/es/RadioButtonGroup/RadioButtonGroup.js +28 -9
  12. package/es/Resource/resourceComponents.js +17 -9
  13. package/es/TreeStructure/FolderItem.js +39 -28
  14. package/es/TreeStructure/FolderItems.js +8 -5
  15. package/es/TreeStructure/TreeStructure.js +10 -11
  16. package/es/TreeStructure/TreeStructureWrapper.js +2 -2
  17. package/es/all.css +1 -1
  18. package/es/index.js +1 -1
  19. package/es/locale/messages-en.js +1 -1
  20. package/es/locale/messages-nb.js +1 -1
  21. package/es/locale/messages-nn.js +1 -1
  22. package/es/locale/messages-se.js +1 -1
  23. package/es/locale/messages-sma.js +1 -1
  24. package/lib/Breadcrumblist/index.d.ts +1 -0
  25. package/lib/NDLAFilm/CategorySelect.js +52 -30
  26. package/lib/NDLAFilm/FilmMovieList.js +17 -13
  27. package/lib/NDLAFilm/FilmMovieSearch.js +29 -17
  28. package/lib/NDLAFilm/FilmSlideshow.js +113 -24
  29. package/lib/NDLAFilm/MovieGrid.js +26 -16
  30. package/lib/NDLAFilm/NavigationArrow.d.ts +5 -1
  31. package/lib/NDLAFilm/NavigationArrow.js +34 -10
  32. package/lib/NDLAFilm/SlideshowIndicator.js +34 -13
  33. package/lib/NDLAFilm/filmStyles.d.ts +8 -0
  34. package/lib/NDLAFilm/filmStyles.js +38 -0
  35. package/lib/Notion/ConceptNotion.d.ts +1 -1
  36. package/lib/Notion/ConceptNotion.js +1 -1
  37. package/lib/Notion/index.d.ts +4 -1
  38. package/lib/Notion/index.js +11 -3
  39. package/lib/RadioButtonGroup/RadioButtonGroup.js +28 -13
  40. package/lib/Resource/resourceComponents.js +17 -9
  41. package/lib/TreeStructure/FolderItem.d.ts +3 -2
  42. package/lib/TreeStructure/FolderItem.js +38 -28
  43. package/lib/TreeStructure/FolderItems.d.ts +1 -1
  44. package/lib/TreeStructure/FolderItems.js +8 -5
  45. package/lib/TreeStructure/TreeStructure.d.ts +1 -1
  46. package/lib/TreeStructure/TreeStructure.js +10 -11
  47. package/lib/TreeStructure/TreeStructure.types.d.ts +6 -3
  48. package/lib/TreeStructure/TreeStructureWrapper.js +2 -2
  49. package/lib/all.css +1 -1
  50. package/lib/index.d.ts +6 -2
  51. package/lib/index.js +7 -0
  52. package/lib/locale/messages-en.js +1 -1
  53. package/lib/locale/messages-nb.js +1 -1
  54. package/lib/locale/messages-nn.js +1 -1
  55. package/lib/locale/messages-se.js +1 -1
  56. package/lib/locale/messages-sma.js +1 -1
  57. package/package.json +13 -13
  58. package/src/Breadcrumblist/{index.tsx → index.ts} +1 -0
  59. package/src/NDLAFilm/CategorySelect.tsx +110 -23
  60. package/src/NDLAFilm/FilmMovieList.tsx +13 -11
  61. package/src/NDLAFilm/FilmMovieSearch.tsx +45 -14
  62. package/src/NDLAFilm/FilmSlideshow.tsx +186 -25
  63. package/src/NDLAFilm/MovieGrid.tsx +33 -25
  64. package/src/NDLAFilm/NavigationArrow.tsx +76 -10
  65. package/src/NDLAFilm/SlideshowIndicator.tsx +53 -11
  66. package/src/NDLAFilm/component.film-movielist.scss +0 -46
  67. package/src/NDLAFilm/filmStyles.ts +33 -0
  68. package/src/Notion/ConceptNotion.tsx +2 -1
  69. package/src/Notion/index.ts +4 -1
  70. package/src/RadioButtonGroup/RadioButtonGroup.tsx +82 -11
  71. package/src/Resource/resourceComponents.tsx +1 -3
  72. package/src/TreeStructure/FolderItem.tsx +40 -19
  73. package/src/TreeStructure/FolderItems.tsx +3 -0
  74. package/src/TreeStructure/TreeStructure.tsx +7 -11
  75. package/src/TreeStructure/TreeStructure.types.ts +7 -3
  76. package/src/TreeStructure/TreeStructureWrapper.tsx +1 -1
  77. package/src/index.ts +15 -2
  78. package/src/locale/messages-en.ts +1 -1
  79. package/src/locale/messages-nb.ts +1 -1
  80. package/src/locale/messages-nn.ts +1 -1
  81. package/src/locale/messages-se.ts +1 -1
  82. package/src/locale/messages-sma.ts +1 -1
  83. package/src/main.scss +0 -3
  84. package/src/NDLAFilm/component.film-moviesearch.scss +0 -127
  85. package/src/NDLAFilm/component.film-slideshow.scss +0 -258
  86. package/src/RadioButtonGroup/component.radio-button-group.scss +0 -67
@@ -7,10 +7,9 @@
7
7
  */
8
8
 
9
9
  import React, { Fragment, Component, ChangeEvent } from 'react';
10
- import BEMHelper from 'react-bem-helper';
10
+ import styled from '@emotion/styled';
11
11
  import { uuid } from '@ndla/util';
12
-
13
- const classes = BEMHelper('c-radio-button-group');
12
+ import { spacing, fonts, colors } from '@ndla/core';
14
13
 
15
14
  interface Props {
16
15
  selected?: string;
@@ -28,6 +27,81 @@ interface State {
28
27
  selected: string;
29
28
  }
30
29
 
30
+ const RadioButtonGroupWrapper = styled.div`
31
+ padding: ${spacing.small} 0;
32
+ font-family: ${fonts.sans};
33
+ display: flex;
34
+ align-items: center;
35
+ `;
36
+
37
+ const RadioButtonGroupLabelHeading = styled.h1`
38
+ ${fonts.sizes('16px', '20px')};
39
+ margin: 0 ${spacing.normal} 0 0;
40
+ font-weight: 600;
41
+ `;
42
+
43
+ const RadioButtonGroupLabel = styled.label`
44
+ ${fonts.sizes('16px', '28px')};
45
+ color: ${colors.brand.primary};
46
+ align-items: center;
47
+ display: inline-flex;
48
+ &:before {
49
+ content: '';
50
+ margin-right: ${spacing.small};
51
+ width: 20px;
52
+ height: 20px;
53
+ border-radius: 100%;
54
+ border: 2px solid ${colors.brand.tertiary};
55
+ transition: 200ms border-color ease;
56
+ }
57
+ &:after {
58
+ content: '';
59
+ background: transparent;
60
+ width: 10px;
61
+ height: 10px;
62
+ border-radius: 100%;
63
+ position: absolute;
64
+ transform: translateX(5px) scale(0, 0);
65
+ transition: 200ms all ease;
66
+ }
67
+ &:not(:last-child) {
68
+ margin-right: ${spacing.medium};
69
+ }
70
+ `;
71
+
72
+ const RadioButtonGroupInput = styled.input`
73
+ opacity: 0;
74
+ position: absolute;
75
+ width: auto;
76
+ &:hover + ${RadioButtonGroupLabel} {
77
+ outline: 1px dotted #212121;
78
+ outline: -webkit-focus-ring-color auto 5px;
79
+ &:after {
80
+ transform: translateX(5px) scale(1, 1);
81
+ background: ${colors.brand.tertiary};
82
+ }
83
+ }
84
+ // emotion does not seem to support several selectors combined with targeting another emotion component
85
+ // so we duplicate the css for :hover and :focus.
86
+ &:focus + ${RadioButtonGroupLabel} {
87
+ outline: 1px dotted #212121;
88
+ outline: -webkit-focus-ring-color auto 5px;
89
+ &:after {
90
+ transform: translateX(5px) scale(1, 1);
91
+ background: ${colors.brand.tertiary};
92
+ }
93
+ }
94
+ &:checked + ${RadioButtonGroupLabel} {
95
+ &:before {
96
+ border-color: ${colors.brand.primary};
97
+ }
98
+ &:after {
99
+ transform: translateX(5px) scale(1, 1);
100
+ background: ${colors.brand.primary};
101
+ }
102
+ }
103
+ `;
104
+
31
105
  class RadioButtonGroup extends Component<Props, State> {
32
106
  private readonly uuid?: string;
33
107
  constructor(props: Props) {
@@ -49,14 +123,13 @@ class RadioButtonGroup extends Component<Props, State> {
49
123
  render() {
50
124
  return (
51
125
  <section>
52
- <div role="radiogroup" {...classes('wrapper')}>
53
- {this.props.label && <h1 {...classes('label-heading')}>{this.props.label}</h1>}
126
+ <RadioButtonGroupWrapper role="radiogroup">
127
+ {this.props.label && <RadioButtonGroupLabelHeading>{this.props.label}</RadioButtonGroupLabelHeading>}
54
128
  {this.props.options.map((option) => {
55
129
  const id = this.uuid ? `${this.uuid}_${option.value}` : option.value;
56
130
  return (
57
131
  <Fragment key={option.value}>
58
- <input
59
- {...classes('input')}
132
+ <RadioButtonGroupInput
60
133
  disabled={option.disabled}
61
134
  aria-checked={this.state.selected === option.value}
62
135
  checked={this.state.selected === option.value}
@@ -66,13 +139,11 @@ class RadioButtonGroup extends Component<Props, State> {
66
139
  name={id}
67
140
  onChange={this.handleOnChange}
68
141
  />
69
- <label htmlFor={id} {...classes('label')}>
70
- {option.title}
71
- </label>
142
+ <RadioButtonGroupLabel htmlFor={id}>{option.title}</RadioButtonGroupLabel>
72
143
  </Fragment>
73
144
  );
74
145
  })}
75
- </div>
146
+ </RadioButtonGroupWrapper>
76
147
  </section>
77
148
  );
78
149
  }
@@ -17,10 +17,8 @@ export interface ResourceImageProps {
17
17
  src: string;
18
18
  }
19
19
 
20
- export const ResourceTitle = styled.h2`
21
- ${fonts.sizes(18)};
20
+ export const ResourceTitle = styled.h3`
22
21
  min-width: 50px;
23
- font-weight: ${fonts.weight.bold};
24
22
  margin: 0;
25
23
  flex: 1;
26
24
  overflow: hidden;
@@ -11,7 +11,7 @@ import styled from '@emotion/styled';
11
11
  import { ArrowDropDown } from '@ndla/icons/common';
12
12
  import { FolderOutlined } from '@ndla/icons/contentType';
13
13
  import { colors, spacing, misc, animations } from '@ndla/core';
14
- import { SetFocusedFolderId } from './TreeStructure.types';
14
+ import { SetFocusedFolderId, FolderChildFuncType } from './TreeStructure.types';
15
15
 
16
16
  const OpenButton = styled.button<{ isOpen: boolean }>`
17
17
  background: transparent;
@@ -37,6 +37,16 @@ const FolderItemWrapper = styled.div`
37
37
  align-items: center;
38
38
  `;
39
39
 
40
+ const WrapperForFolderChild = styled.div<{ marked: boolean }>`
41
+ position: absolute;
42
+ right: ${spacing.xsmall};
43
+ opacity: ${({ marked }) => (marked ? 1 : 0.25)};
44
+ &:hover,
45
+ &:focus {
46
+ opacity: 1;
47
+ }
48
+ `;
49
+
40
50
  const FolderName = styled.button<{ marked: boolean; noArrow?: boolean }>`
41
51
  line-height: 1;
42
52
  background: ${({ marked }) => (marked ? colors.brand.lighter : 'transparent')};
@@ -45,6 +55,9 @@ const FolderName = styled.button<{ marked: boolean; noArrow?: boolean }>`
45
55
  &:focus {
46
56
  background: ${({ marked }) => (marked ? colors.brand.light : colors.brand.lightest)};
47
57
  color: ${colors.brand.primary};
58
+ + ${WrapperForFolderChild} {
59
+ opacity: 1;
60
+ }
48
61
  }
49
62
  transition: ${animations.durations.superFast};
50
63
  border: 0;
@@ -58,6 +71,7 @@ const FolderName = styled.button<{ marked: boolean; noArrow?: boolean }>`
58
71
  margin-left: ${({ noArrow }) => (noArrow ? `29px` : `0px`)};
59
72
  flex-grow: 1;
60
73
  box-shadow: none;
74
+ text-align: left;
61
75
  `;
62
76
 
63
77
  const FolderNameLink = FolderName.withComponent('a');
@@ -77,6 +91,7 @@ interface Props {
77
91
  url?: string;
78
92
  icon?: React.ReactNode;
79
93
  noPaddingWhenArrowIsHidden?: boolean;
94
+ folderChild?: FolderChildFuncType;
80
95
  }
81
96
 
82
97
  const FolderItem = ({
@@ -94,6 +109,7 @@ const FolderItem = ({
94
109
  icon,
95
110
  url,
96
111
  noPaddingWhenArrowIsHidden,
112
+ folderChild,
97
113
  }: Props) => {
98
114
  const folderNameLinkRef = useRef<HTMLAnchorElement | null>(null);
99
115
  const folderNameButtonRef = useRef<HTMLButtonElement | null>(null);
@@ -134,24 +150,29 @@ const FolderItem = ({
134
150
  {name}
135
151
  </FolderNameLink>
136
152
  ) : (
137
- <FolderName
138
- ref={folderNameButtonRef}
139
- noArrow={hideArrow && !noPaddingWhenArrowIsHidden}
140
- tabIndex={marked ? 0 : -1}
141
- marked={marked}
142
- disabled={loading}
143
- onFocus={() => {
144
- setFocusedFolderId(id);
145
- }}
146
- onClick={() => {
147
- onMarkFolder(id);
148
- if (openOnFolderClick) {
149
- onToggleOpen(id);
150
- }
151
- }}>
152
- {icon || <FolderOutlined />}
153
- {name}
154
- </FolderName>
153
+ <>
154
+ <FolderName
155
+ ref={folderNameButtonRef}
156
+ noArrow={hideArrow && !noPaddingWhenArrowIsHidden}
157
+ tabIndex={marked ? 0 : -1}
158
+ marked={marked}
159
+ disabled={loading}
160
+ onFocus={() => {
161
+ setFocusedFolderId(id);
162
+ }}
163
+ onClick={() => {
164
+ onMarkFolder(id);
165
+ if (openOnFolderClick) {
166
+ onToggleOpen(id);
167
+ }
168
+ }}>
169
+ {icon || <FolderOutlined />}
170
+ {name}
171
+ </FolderName>
172
+ {folderChild && (
173
+ <WrapperForFolderChild marked={marked}>{folderChild(id, marked ? 0 : -1)}</WrapperForFolderChild>
174
+ )}
175
+ </>
155
176
  )}
156
177
  </FolderItemWrapper>
157
178
  );
@@ -48,6 +48,7 @@ const FolderItems = ({
48
48
  focusedFolderId,
49
49
  setFocusedFolderId,
50
50
  firstLevel,
51
+ folderChild,
51
52
  }: FolderItemsProps) => (
52
53
  <StyledUL role="group" firstLevel={firstLevel}>
53
54
  {data.map(({ name, data: dataChildren, id, url, icon }, _index) => {
@@ -71,6 +72,7 @@ const FolderItems = ({
71
72
  hideArrow={dataChildren?.length === 0 || newIdPaths.length >= MAX_LEVEL_FOR_FOLDERS}
72
73
  noPaddingWhenArrowIsHidden={editable && firstLevel && dataChildren?.length === 0}
73
74
  setFocusedFolderId={setFocusedFolderId}
75
+ folderChild={folderChild}
74
76
  />
75
77
  </div>
76
78
  {newFolder?.parentId === id && (
@@ -98,6 +100,7 @@ const FolderItems = ({
98
100
  focusedFolderId={focusedFolderId}
99
101
  setFocusedFolderId={setFocusedFolderId}
100
102
  firstLevel={false}
103
+ folderChild={folderChild}
101
104
  />
102
105
  )}
103
106
  </StyledLI>
@@ -8,7 +8,7 @@
8
8
 
9
9
  import React, { useEffect, useState, useRef, useMemo } from 'react';
10
10
  import { uuid } from '@ndla/util';
11
- import Button from '@ndla/button';
11
+ import { AddButton } from '@ndla/button';
12
12
  import Tooltip from '@ndla/tooltip';
13
13
  import { useTranslation } from 'react-i18next';
14
14
  import styled from '@emotion/styled';
@@ -40,6 +40,7 @@ const TreeStructure = ({
40
40
  framed,
41
41
  folderIdMarkedByDefault,
42
42
  defaultOpenFolders,
43
+ folderChild,
43
44
  }: TreeStructureProps) => {
44
45
  const { t } = useTranslation();
45
46
  const [newFolder, setNewFolder] = useState<NewFolderProps | undefined>();
@@ -118,9 +119,6 @@ const TreeStructure = ({
118
119
  setFocusedFolderId(id);
119
120
  };
120
121
 
121
- const disableAddFolderButton =
122
- markedFolderId === undefined || getPathOfFolder(data, markedFolderId).length >= MAX_LEVEL_FOR_FOLDERS;
123
-
124
122
  return (
125
123
  <div
126
124
  ref={treestructureRef}
@@ -155,6 +153,7 @@ const TreeStructure = ({
155
153
  focusedFolderId={focusedFolderId}
156
154
  setFocusedFolderId={setFocusedFolderId}
157
155
  firstLevel
156
+ folderChild={folderChild}
158
157
  />
159
158
  </TreeStructureStyledWrapper>
160
159
  {editable && (
@@ -163,17 +162,14 @@ const TreeStructure = ({
163
162
  tooltip={t('myNdla.newFolderUnder', {
164
163
  folderName: getFolderName(data, markedFolderId),
165
164
  })}>
166
- <Button
167
- size="small"
168
- light
169
- disabled={disableAddFolderButton}
165
+ <AddButton
166
+ aria-label={t('myNdla.newFolder')}
170
167
  onClick={() => {
171
168
  const paths = getPathOfFolder(data, markedFolderId || '');
172
169
  const idPaths = getIdPathsOfFolder(data, markedFolderId || '');
173
170
  setNewFolder({ idPaths, parentId: paths[paths.length - 1] });
174
- }}>
175
- {t('myNdla.newFolder')}
176
- </Button>
171
+ }}
172
+ />
177
173
  </Tooltip>
178
174
  </AddFolderWrapper>
179
175
  )}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  */
8
8
 
9
- import React from 'react';
9
+ import React, { ReactNode } from 'react';
10
10
 
11
11
  export interface FolderStructureProps {
12
12
  id: string;
@@ -17,7 +17,7 @@ export interface FolderStructureProps {
17
17
  status?: string;
18
18
  openAsDefault?: boolean;
19
19
  url?: string;
20
- icon?: React.ReactNode;
20
+ icon?: ReactNode;
21
21
  }
22
22
 
23
23
  export interface NewFolderProps {
@@ -38,6 +38,7 @@ export interface TreeStructureProps extends CommonFolderProps {
38
38
  folderIdMarkedByDefault?: string;
39
39
  onNewFolder: (props: { value: string; parentId?: string; idPaths: number[] }) => Promise<string>;
40
40
  defaultOpenFolders?: string[];
41
+ folderChild?: FolderChildFuncType;
41
42
  }
42
43
 
43
44
  export type onCreateNewFolderProp = ({
@@ -51,6 +52,8 @@ export type onCreateNewFolderProp = ({
51
52
  export type SetOpenFolderProp = React.Dispatch<React.SetStateAction<Set<string>>>;
52
53
  export type SetFocusedFolderId = React.Dispatch<React.SetStateAction<string | undefined>>;
53
54
 
55
+ export type FolderChildFuncType = (id: string, tabIndex: number) => ReactNode;
56
+
54
57
  export interface FolderItemsProps extends CommonFolderProps {
55
58
  onToggleOpen: (id: string) => void;
56
59
  onSaveNewFolder: (value: string) => void;
@@ -65,5 +68,6 @@ export interface FolderItemsProps extends CommonFolderProps {
65
68
  setFocusedFolderId: SetFocusedFolderId;
66
69
  firstLevel: boolean;
67
70
  keyNavigationFocusIsCreateFolderButton?: boolean;
68
- icon?: React.ReactElement;
71
+ icon?: ReactNode;
72
+ folderChild?: FolderChildFuncType;
69
73
  }
@@ -15,7 +15,7 @@ const TreeStructureWrapper = styled.div<{ framed?: boolean }>`
15
15
  ${({ framed }) =>
16
16
  framed
17
17
  ? css`
18
- border: 1px solid ${colors.brand.greyLighter};
18
+ border: 1px solid ${colors.brand.neutral7};
19
19
  border-radius: ${misc.borderRadius};
20
20
  max-height: 400px;
21
21
  overflow-y: scroll;
package/src/index.ts CHANGED
@@ -67,7 +67,9 @@ export {
67
67
  export { default as FactBox } from './FactBox';
68
68
 
69
69
  export { default as Image, ImageLink, makeSrcQueryString } from './Image';
70
+ export type { ImageCrop, ImageFocalPoint } from './Image';
70
71
 
72
+ export type { HeroContentType } from './Hero';
71
73
  export {
72
74
  SubjectMaterialHero,
73
75
  TasksAndActivitiesHero,
@@ -81,7 +83,15 @@ export {
81
83
 
82
84
  export { Footer, EditorName, FooterText, FooterAuth } from './Footer';
83
85
 
84
- export { Figure, FigureCaption, FigureLicenseDialog, FigureExpandButton, FigureOpenDialogButton } from './Figure';
86
+ export {
87
+ Figure,
88
+ FigureCaption,
89
+ FigureLicenseDialog,
90
+ FigureExpandButton,
91
+ FigureOpenDialogButton,
92
+ FigureBylineExpandButton,
93
+ } from './Figure';
94
+ export type { FigureType } from './Figure';
85
95
 
86
96
  export { LanguageSelector } from './LanguageSelector';
87
97
 
@@ -157,7 +167,7 @@ export { default as AuthorInfo } from './AuthorInfo';
157
167
  export { default as Breadcrumb, HeaderBreadcrumb, HomeBreadcrumb, ActionBreadcrumb } from './Breadcrumb';
158
168
  export type { SimpleBreadcrumbItem, IndexedBreadcrumbItem } from './Breadcrumb';
159
169
 
160
- export type { BreadcrumbItemProps } from './Breadcrumblist/Breadcrumblist';
170
+ export type { BreadcrumbItemProps } from './Breadcrumblist';
161
171
  export { i18nInstance, formatNestedMessages, formatMessage } from './i18n';
162
172
  export { default as ResourceGroup } from './ResourceGroup';
163
173
 
@@ -221,7 +231,10 @@ export { default as ContentCard } from './ContentCard';
221
231
  export { default as CopyParagraphButton } from './CopyParagraphButton';
222
232
 
223
233
  export { default as ContentPlaceholder } from './ContentPlaceholder';
234
+
224
235
  export { Notion, ConceptNotion } from './Notion';
236
+ export type { NotionVisualElementType, ConceptNotionType } from './Notion';
237
+
225
238
  export { BannerCard } from './BannerCard';
226
239
  export { VerticalNavigation, Folder, FolderInput } from './MyNdla';
227
240
  export { ListResource, BlockResource } from './Resource';
@@ -347,7 +347,7 @@ const messages = {
347
347
  resources:
348
348
  'This is not a complete course produced by NDLA, but a collection of resources we hope you will find useful.',
349
349
  subjectOutdated: 'This course is not updated to the current curriculum.',
350
- subjectBeta: 'This course is in beta.',
350
+ subjectBeta: 'This course is in beta. New resources are being added continously.',
351
351
  newVersion:
352
352
  'This learning resource is not updated to the current curriculum. You can find an updated version here: ',
353
353
  frontPageBeta:
@@ -346,7 +346,7 @@ const messages = {
346
346
  resources:
347
347
  'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
348
348
  subjectOutdated: 'Dette faget følger en utgått læreplan.',
349
- subjectBeta: 'Dette faget er i betaversjon.',
349
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
350
350
  newVersion:
351
351
  'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
352
352
  frontPageBeta:
@@ -347,7 +347,7 @@ const messages = {
347
347
  resources:
348
348
  'Dette er ikkje eit komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan vere nyttig for deg.',
349
349
  subjectOutdated: 'Dette faget følgjer ein utgått læreplan.',
350
- subjectBeta: 'Dette faget er i betaversjon.',
350
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpande.',
351
351
  newVersion:
352
352
  'Denne læringsressursen er ikkje oppdatert etter gjeldande læreplan. Du finn ein oppdatert versjon her: ',
353
353
  frontPageBeta:
@@ -346,7 +346,7 @@ const messages = {
346
346
  resources:
347
347
  'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
348
348
  subjectOutdated: 'Dette faget følger en utgått læreplan.',
349
- subjectBeta: 'Dette faget er i betaversjon.',
349
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
350
350
  newVersion:
351
351
  'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
352
352
  frontPageBeta:
@@ -346,7 +346,7 @@ const messages = {
346
346
  resources:
347
347
  'Dette er ikke et komplett læremiddel produsert av NDLA, men ei ressurssamling som vi håper kan være nyttig for deg.',
348
348
  subjectOutdated: 'Dette faget følger en utgått læreplan.',
349
- subjectBeta: 'Dette faget er i betaversjon.',
349
+ subjectBeta: 'Dette faget er i betaversjon. Vi fyller på med ressurser fortløpende.',
350
350
  newVersion:
351
351
  'Denne læringsressursen er ikke oppdatert etter gjeldende læreplan. Du finner en oppdatert versjon her: ',
352
352
  frontPageBeta:
package/src/main.scss CHANGED
@@ -40,7 +40,4 @@
40
40
  @import 'FileList/component.file-list';
41
41
  @import 'SectionHeading/component.section-heading';
42
42
  @import 'AuthorInfo/component.author-info';
43
- @import 'RadioButtonGroup/component.radio-button-group';
44
- @import 'NDLAFilm/component.film-slideshow';
45
43
  @import 'NDLAFilm/component.film-movielist';
46
- @import 'NDLAFilm/component.film-moviesearch';
@@ -1,127 +0,0 @@
1
- .c-film-moviesearch {
2
- margin: $spacing 0 $spacing--large;
3
- &__topic-navigation {
4
- margin: $spacing 0;
5
- @include mq(tablet) {
6
- display: flex;
7
- align-items: flex-start;
8
- padding: 0 $spacing;
9
- }
10
- ul {
11
- list-style-type: none;
12
- list-style-image: none;
13
- display: flex;
14
- align-items: flex-start;
15
- flex-wrap: wrap;
16
- padding: 0;
17
- margin: $spacing--small 0;
18
- @include mq(tablet) {
19
- padding-left: $spacing;
20
- }
21
- li {
22
- padding: 0;
23
- width: 100%;
24
- @include mq(tablet) {
25
- width: 50%;
26
- }
27
- a {
28
- color: #fff;
29
- &:hover,
30
- &:focus {
31
- color: $brand-color--light;
32
- }
33
- }
34
- }
35
- }
36
- }
37
- &__dropdown-button {
38
- border-radius: $border-radius;
39
- @include font-size(22px, 26px);
40
- border: 0;
41
- text-transform: uppercase;
42
- background: $film-color-bright;
43
- color: #fff;
44
- padding: $spacing--small $spacing--small * 1.5;
45
- font-weight: $font-weight-semibold;
46
- display: flex;
47
- align-items: center;
48
- text-align: left;
49
- justify-content: space-between;
50
- width: 100%;
51
- letter-spacing: 0.05em;
52
- @include mq(tablet) {
53
- padding: $spacing--small $spacing;
54
- }
55
- div:first-child {
56
- @include mq($until: tablet) {
57
- display: flex;
58
- flex-direction: column;
59
- small {
60
- padding: 0;
61
- }
62
- }
63
- }
64
- small {
65
- text-transform: none;
66
- padding-left: $spacing--small;
67
- font-weight: normal;
68
- }
69
- }
70
- &__dropdown-container {
71
- position: relative;
72
- margin: 0 0 $spacing;
73
- }
74
- &__dropdown-wrapper {
75
- .c-film-moviesearch__dropdown-button {
76
- border-radius: 0;
77
- text-transform: none;
78
- letter-spacing: 0;
79
- }
80
- display: flex;
81
- flex-direction: column;
82
- padding: $spacing--small 0;
83
- background: #deebf6;
84
- border-radius: $border-radius;
85
- left: 0;
86
- right: 0;
87
- animation: zoomInSelect 200ms ease;
88
- box-shadow: 0 0 30px rgba($black, 0.6);
89
- position: absolute;
90
- z-index: 9999;
91
- button,
92
- a {
93
- color: $primary-color;
94
- border: 0;
95
- outline: 0;
96
- text-align: left;
97
- background: transparent;
98
- padding: $spacing--small;
99
- padding-left: $spacing;
100
- font-weight: $font-weight-semibold;
101
- text-decoration: none;
102
- box-shadow: none;
103
- transition: background 200ms ease;
104
- &:hover,
105
- &:focus {
106
- color: $brand-color;
107
- background: rgba(0, 0, 0, 0.2);
108
- }
109
- }
110
- }
111
- }
112
-
113
- @keyframes zoomInSelect {
114
- 0% {
115
- display: none;
116
- opacity: 0;
117
- }
118
- 1% {
119
- display: flex;
120
- transform: scale3d(0.95, 0.95, 0.95);
121
- opacity: 0;
122
- }
123
- 100% {
124
- opacity: 1;
125
- transform: scale3d(1, 1, 1);
126
- }
127
- }