@kitconcept/volto-light-theme 1.0.0-rc.3 → 1.0.0-rc.5

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.
@@ -0,0 +1,52 @@
1
+ name: Acceptance tests
2
+ on: [push]
3
+
4
+ env:
5
+ ADDON_NAME: "@kitconcept/volto-light-theme"
6
+ ADDON_PATH: "volto-light-theme"
7
+ VOLTO_VERSION: "17.0.0-alpha.17"
8
+
9
+ jobs:
10
+
11
+ acceptance:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@v3
16
+
17
+ - name: Set up Docker Buildx
18
+ uses: docker/setup-buildx-action@v2
19
+
20
+ - name: Install Cypress
21
+ run: |
22
+ cd acceptance
23
+ yarn
24
+
25
+ - name: "Cypress: Acceptance tests"
26
+ uses: cypress-io/github-action@v5
27
+ env:
28
+ BABEL_ENV: production
29
+ CYPRESS_RETRIES: 2
30
+ with:
31
+ parallel: false
32
+ browser: chrome
33
+ working-directory: acceptance
34
+ spec: cypress/tests/*.js
35
+ install: false
36
+ start: |
37
+ docker compose -f ci.yml --profile prod up
38
+ wait-on: 'npx wait-on --httpTimeout 20000 http-get://localhost:55001/plone http://localhost:3000'
39
+
40
+ # Upload Cypress screenshots
41
+ - uses: actions/upload-artifact@v3
42
+ if: failure()
43
+ with:
44
+ name: cypress-screenshots-acceptance
45
+ path: acceptance/cypress/screenshots
46
+
47
+ # Upload Cypress videos
48
+ - uses: actions/upload-artifact@v3
49
+ if: failure()
50
+ with:
51
+ name: cypress-videos-acceptance
52
+ path: acceptance/cypress/videos
@@ -1,11 +1,17 @@
1
1
  name: Release and deploy
2
2
  on:
3
- - push
3
+ workflow_run:
4
+ workflows: [Acceptance Tests]
5
+ types:
6
+ - completed
7
+ branches:
8
+ - main
9
+ workflow_dispatch:
4
10
 
5
11
  env:
6
12
  ENVIRONMENT: "light-theme.kitconcept.io"
7
13
  IMAGE_NAME: "ghcr.io/kitconcept/voltolighttheme-frontend"
8
- VOLTO_VERSION: "17.0.0-alpha.16"
14
+ VOLTO_VERSION: "17.0.0-alpha.17"
9
15
 
10
16
  jobs:
11
17
  meta:
package/CHANGELOG.md CHANGED
@@ -8,6 +8,29 @@
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## 1.0.0-rc.5 (2023-07-11)
12
+
13
+ ### Breaking
14
+
15
+ - Move the container query polyfill to an add-on profile, disabled by default @sneridagh [#137](https://github.com/kitconcept/volto-light-theme/pull/137)
16
+
17
+ ### Feature
18
+
19
+ - Upgrade to Volto 17a17 as baseline @sneridagh [#136](https://github.com/kitconcept/volto-light-theme/pull/136)
20
+ - Add acceptance tests layer, update docker files and Makefile @sneridagh [#137](https://github.com/kitconcept/volto-light-theme/pull/137)
21
+
22
+ ### Bugfix
23
+
24
+ - Check if the separator is present before enhancing it @sneridagh [#138](https://github.com/kitconcept/volto-light-theme/pull/138)
25
+
26
+
27
+ ## 1.0.0-rc.4 (2023-07-11)
28
+
29
+ ### Bugfix
30
+
31
+ - Fix Teaser block CSS. @danalvrz [#134](https://github.com/kitconcept/volto-light-theme/pull/134)
32
+
33
+
11
34
  ## 1.0.0-rc.3 (2023-07-10)
12
35
 
13
36
  ### Breaking
package/Makefile CHANGED
@@ -22,7 +22,7 @@ RESET=`tput sgr0`
22
22
  YELLOW=`tput setaf 3`
23
23
 
24
24
  PLONE_VERSION=6
25
- VOLTO_VERSION=17.0.0-alpha.16
25
+ VOLTO_VERSION=17.0.0-alpha.17
26
26
 
27
27
  ADDON_NAME='@kitconcept/volto-light-theme'
28
28
  ADDON_PATH='volto-light-theme'
@@ -103,20 +103,20 @@ test-ci: ## Run unit tests in CI
103
103
 
104
104
  ## Acceptance
105
105
  .PHONY: install-acceptance
106
- install-acceptance: ## Install Cypress, build containers
106
+ install-acceptance: ## Install Cypress, build acceptance containers
107
107
  (cd acceptance && yarn)
108
108
  ${ACCEPTANCE} --profile dev --profile prod build
109
109
 
110
110
  .PHONY: start-test-acceptance-server
111
- start-test-acceptance-server: ## Start acceptance server
112
- ${ACCEPTANCE} --profile dev up -d
111
+ start-test-acceptance-server: ## Start acceptance server (for use it in while developing)
112
+ ${ACCEPTANCE} --profile dev up
113
113
 
114
114
  .PHONY: start-test-acceptance-server-prod
115
- start-test-acceptance-server-prod: ## Start acceptance server
115
+ start-test-acceptance-server-prod: ## Start acceptance server in prod (used by CI)
116
116
  ${ACCEPTANCE} --profile prod up -d
117
117
 
118
118
  .PHONY: test-acceptance
119
- test-acceptance: ## Start Cypress
119
+ test-acceptance: ## Start Cypress (for use it while developing)
120
120
  (cd acceptance && ./node_modules/.bin/cypress open)
121
121
 
122
122
  .PHONY: test-acceptance-headless
@@ -124,13 +124,18 @@ test-acceptance-headless: ## Run cypress tests in CI
124
124
  (cd acceptance && ./node_modules/.bin/cypress run)
125
125
 
126
126
  .PHONY: stop-test-acceptance-server
127
- stop-test-acceptance-server: ## Stop acceptance server
128
- ${ACCEPTANCE} down
127
+ stop-test-acceptance-server: ## Stop acceptance server (for use it while finished developing)
128
+ ${ACCEPTANCE} --profile dev down
129
129
 
130
130
  .PHONY: status-test-acceptance-server
131
- status-test-acceptance-server: ## Status of Acceptance Server
131
+ status-test-acceptance-server: ## Status of Acceptance Server (for use it while developing)
132
132
  ${ACCEPTANCE} ps
133
133
 
134
134
  .PHONY: debug-frontend
135
- debug-frontend: ## Run bash in the Frontend container
135
+ debug-frontend: ## Run bash in the Frontend container (for debug infrastructure purposes)
136
136
  ${DEV_COMPOSE} run --entrypoint bash addon-dev
137
+
138
+ .PHONY: install-local
139
+ install-local: ## Installs essentials for developing locally (ESlint, prettier...) (for use it while developing)
140
+ yarn remove -A @plone/volto && yarn add @plone/volto && git co -- package.json yarn.lock
141
+ mv .eslintrc.local.js .eslintrc.js
@@ -4,6 +4,10 @@ import './commands';
4
4
  import { setup, teardown } from './reset-fixture';
5
5
 
6
6
  beforeEach(function () {
7
+ cy.setCookie('confirm_cookies', '1');
8
+ cy.setCookie('confirm_tracking', '1');
9
+ cy.setCookie('confirm_facebook', '1');
10
+ cy.setCookie('confirm_youtube', '1');
7
11
  cy.log('Setting up API fixture');
8
12
  setup();
9
13
  });
@@ -6,6 +6,9 @@ import {
6
6
  context('Basic Acceptance Tests', () => {
7
7
  describe('Text Block Tests', () => {
8
8
  beforeEach(() => {
9
+ cy.intercept('GET', `/**/*?expand*`).as('content');
10
+ cy.intercept('GET', '/**/Document').as('schema');
11
+
9
12
  // given a logged in editor and a page in edit mode
10
13
  cy.autologin();
11
14
  cy.createContent({
@@ -14,6 +17,7 @@ context('Basic Acceptance Tests', () => {
14
17
  contentTitle: 'Document',
15
18
  });
16
19
  cy.visit('/');
20
+ cy.wait('@content');
17
21
  });
18
22
 
19
23
  it('As editor I can add a page with a text block', function () {
@@ -32,39 +36,35 @@ context('Basic Acceptance Tests', () => {
32
36
 
33
37
  getSelectedSlateEditor().contains('This is the text');
34
38
  cy.get('#toolbar-save').click();
39
+ cy.wait('@content');
35
40
  cy.url().should('eq', Cypress.config().baseUrl + '/my-page');
36
41
  });
37
42
 
38
43
  it('As editor I can add a link to a text block', function () {
39
- cy.intercept('GET', '/**/document').as('content');
40
- cy.visit('/document');
41
- cy.wait('@content');
42
-
43
44
  cy.navigate('/document/edit');
45
+ cy.wait('@schema');
44
46
 
45
- // when I create a link
46
- getSlateEditorAndType(
47
- '.slate-editor [contenteditable=true]',
48
- 'Colorless green ideas sleep furiously.',
49
- ).setSelection('furiously');
47
+ cy.get('.block.inner.title .documentFirstHeading');
50
48
 
51
- cy.clickSlateButton('Add link');
49
+ cy.log('when I create a link');
52
50
 
53
- cy.get('.link-form-container input').type('https://google.com{enter}');
54
- cy.get('#toolbar-save').click();
55
- cy.url().should('eq', Cypress.config().baseUrl + '/document');
56
- cy.waitForResourceToLoad('@navigation');
57
- cy.waitForResourceToLoad('@breadcrumbs');
58
- cy.waitForResourceToLoad('@actions');
59
- cy.waitForResourceToLoad('@types');
60
- cy.waitForResourceToLoad('document');
61
-
62
- // then the page view should contain a link
63
- cy.get('.ui.container p').contains(
51
+ cy.getSlateEditorAndType(
64
52
  'Colorless green ideas sleep furiously.',
53
+ ).setSlateSelection('furiously');
54
+ cy.clickSlateButton('Add link');
55
+ cy.get('.slate-toolbar .link-form-container input').type(
56
+ 'https://google.com{enter}',
65
57
  );
66
- cy.get('.ui.container p a')
67
- .should('have.attr', 'href')
58
+
59
+ cy.get('#toolbar-save', { timeout: 10000 }).click();
60
+ cy.wait('@content');
61
+
62
+ cy.log('then the page view should contain a link');
63
+
64
+ cy.get('.container p').contains('Colorless green ideas sleep furiously.');
65
+ cy.get('.container p a')
66
+ .should('have.text', 'furiously')
67
+ .and('have.attr', 'href')
68
68
  .and('include', 'https://google.com');
69
69
  });
70
70
  });
@@ -15,9 +15,11 @@ services:
15
15
  environment:
16
16
  RAZZLE_INTERNAL_API_PATH: http://backend-acceptance:55001/plone
17
17
  RAZZLE_API_PATH: http://localhost:55001/plone
18
+ HOST: 0.0.0.0
18
19
  ports:
19
20
  - 3000:3000
20
21
  - 3001:3001
22
+ tty: true
21
23
  depends_on:
22
24
  - backend-acceptance
23
25
  profiles:
@@ -34,6 +36,7 @@ services:
34
36
  environment:
35
37
  RAZZLE_INTERNAL_API_PATH: http://backend-acceptance:55001/plone
36
38
  RAZZLE_API_PATH: http://localhost:55001/plone
39
+ HOST: 0.0.0.0
37
40
  ports:
38
41
  - 3000:3000
39
42
  depends_on:
@@ -42,14 +45,7 @@ services:
42
45
  - prod
43
46
 
44
47
  backend-acceptance:
45
- image: plone/plone-backend:${PLONE_VERSION:-6}
46
- command: ./bin/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING
47
- environment:
48
- ZSERVER_HOST: 0.0.0.0
49
- ZSERVER_PORT: 55001
50
- ADDONS: 'plone.app.robotframework==2.0.0'
51
- APPLY_PROFILES: plone.app.contenttypes:plone-content,plone.restapi:default,plone.volto:default-homepage
52
- CONFIGURE_PACKAGES: plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors
48
+ image: plone/server-acceptance:${PLONE_VERSION:-6}
53
49
  ports:
54
50
  - 55001:55001
55
51
  profiles:
@@ -5,6 +5,12 @@ FROM plone/frontend-dev:${VOLTO_VERSION}
5
5
  ARG ADDON_NAME
6
6
  ARG ADDON_PATH
7
7
 
8
+ # Copy helper.py as /setupAddon
9
+ COPY dockerfiles/helper.py /setupAddon
10
+
11
+ # Copy volto.config.js
12
+ COPY --chown=node:node volto.config.js* /app/
13
+
8
14
  COPY --chown=node:node package.json /app/src/addons/${ADDON_PATH}/
9
15
 
10
16
  RUN <<EOT
@@ -9,12 +9,13 @@ services:
9
9
  args:
10
10
  ADDON_NAME: "${ADDON_NAME}"
11
11
  ADDON_PATH: "${ADDON_PATH}"
12
- VOLTO_VERSION: "${VOLTO_VERSION:-16}"
12
+ VOLTO_VERSION: "${VOLTO_VERSION:-17}"
13
13
  volumes:
14
14
  - ${CURRENT_DIR}:/app/src/addons/${ADDON_PATH}/
15
15
  environment:
16
16
  RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone
17
17
  RAZZLE_API_PATH: http://localhost:8080/Plone
18
+ HOST: 0.0.0.0
18
19
  ports:
19
20
  - 3000:3000
20
21
  - 3001:3001
@@ -29,7 +30,7 @@ services:
29
30
  args:
30
31
  ADDON_NAME: "${ADDON_NAME}"
31
32
  ADDON_PATH: "${ADDON_PATH}"
32
- VOLTO_VERSION: "${VOLTO_VERSION:-16}"
33
+ VOLTO_VERSION: "${VOLTO_VERSION:-17}"
33
34
  environment:
34
35
  RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone
35
36
  RAZZLE_API_PATH: http://localhost:8080/Plone
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitconcept/volto-light-theme",
3
- "version": "1.0.0-rc.3",
3
+ "version": "1.0.0-rc.5",
4
4
  "description": "Volto Light Theme by kitconcept",
5
5
  "main": "src/index.js",
6
6
  "repository": {
@@ -58,8 +58,8 @@
58
58
  "@kitconcept/volto-heading-block": "^2.2.0",
59
59
  "@kitconcept/volto-image-block": "^1.0.1",
60
60
  "@kitconcept/volto-introduction-block": "^1.0.0",
61
- "@kitconcept/volto-separator-block": "^3.2.0",
61
+ "@kitconcept/volto-separator-block": "^3.2.2",
62
62
  "@kitconcept/volto-slider-block": "^4.2.0",
63
- "@plone/volto": "^17.0.0-alpha.16"
63
+ "@plone/volto": "^17.0.0-alpha.17"
64
64
  }
65
65
  }
@@ -40,10 +40,10 @@ const GridTemplate = ({ items, linkTitle, linkHref, isEditMode }) => {
40
40
  componentName="PreviewImage"
41
41
  item={item}
42
42
  alt=""
43
- className="grid-item-image"
43
+ className="item-image"
44
44
  />
45
45
  )}
46
- <div className="grid-item">
46
+ <div className="item">
47
47
  <div className="content">
48
48
  {item?.head_title && (
49
49
  <div className="headline">{item.head_title}</div>
package/src/index.js CHANGED
@@ -35,6 +35,7 @@ defineMessages({
35
35
 
36
36
  const applyConfig = (config) => {
37
37
  config.settings.enableAutoBlockGroupingByBackgroundColor = true;
38
+ config.settings.navDepth = 3;
38
39
 
39
40
  // No required blocks (eg. Title)
40
41
  config.blocks.requiredBlocks = [];
@@ -49,7 +50,14 @@ const applyConfig = (config) => {
49
50
  ...config.settings.apiExpanders,
50
51
  {
51
52
  match: '',
52
- GET_CONTENT: ['breadcrumbs', 'navigation', 'actions', 'types'],
53
+ GET_CONTENT: ['breadcrumbs', 'actions', 'types'],
54
+ },
55
+ {
56
+ match: '',
57
+ GET_CONTENT: ['navigation'],
58
+ querystring: {
59
+ 'expand.navigation.depth': config.settings.navDepth,
60
+ },
53
61
  },
54
62
  ];
55
63
 
@@ -118,14 +126,6 @@ const applyConfig = (config) => {
118
126
 
119
127
  config.settings.slidingSearchAnimation = true;
120
128
 
121
- config.settings.appExtras = [
122
- ...config.settings.appExtras,
123
- {
124
- match: '',
125
- component: ContainerQueriesPolyfill,
126
- },
127
- ];
128
-
129
129
  config.blocks.blocksConfig.accordion = {
130
130
  ...config.blocks.blocksConfig.accordion,
131
131
  mostUsed: true,
@@ -225,14 +225,17 @@ const applyConfig = (config) => {
225
225
  colors: BG_COLORS,
226
226
  };
227
227
 
228
- config.blocks.blocksConfig.separator = {
229
- ...config.blocks.blocksConfig.separator,
230
- schemaEnhancer: composeSchema(
231
- config.blocks.blocksConfig.separator.schemaEnhancer,
232
- defaultStylingSchema,
233
- ),
234
- colors: BG_COLORS,
235
- };
228
+ // Check if the separator is present before enhancing it
229
+ if (config.blocks.blocksConfig.separator.id) {
230
+ config.blocks.blocksConfig.separator = {
231
+ ...config.blocks.blocksConfig.separator,
232
+ schemaEnhancer: composeSchema(
233
+ config.blocks.blocksConfig.separator.schemaEnhancer,
234
+ defaultStylingSchema,
235
+ ),
236
+ colors: BG_COLORS,
237
+ };
238
+ }
236
239
 
237
240
  config.blocks.blocksConfig.listing = {
238
241
  ...config.blocks.blocksConfig.listing,
@@ -252,4 +255,16 @@ const applyConfig = (config) => {
252
255
  return config;
253
256
  };
254
257
 
258
+ export const withContainerQueryPolyfill = (config) => {
259
+ config.settings.appExtras = [
260
+ ...config.settings.appExtras,
261
+ {
262
+ match: '',
263
+ component: ContainerQueriesPolyfill,
264
+ },
265
+ ];
266
+
267
+ return config;
268
+ };
269
+
255
270
  export default applyConfig;
@@ -30,3 +30,9 @@
30
30
  }
31
31
  }
32
32
  }
33
+
34
+ .contenttype-file {
35
+ .content-area a {
36
+ text-decoration: underline;
37
+ }
38
+ }
@@ -164,7 +164,7 @@ footer {
164
164
  & > .block.heading .heading-wrapper,
165
165
  & > .block.separator.has--align--full .line,
166
166
  & > .block.introduction .block-container,
167
- & > .block.teaser .grid-teaser-item.default,
167
+ & > .block.teaser .teaser-item.default,
168
168
  & > .table-of-contents,
169
169
  & > .slate blockquote {
170
170
  @include default-container-width();
@@ -233,7 +233,7 @@ footer {
233
233
  .block-editor-separator.has--align--full .block.separator,
234
234
  .block-editor-separator .block.separator.has--align--full,
235
235
  .block.teaser.has--align--center,
236
- .block-editor-teaser .grid-teaser-item.default,
236
+ .block-editor-teaser .teaser-item.default,
237
237
  .block-editor-toc {
238
238
  @include default-container-width();
239
239
  @include adjustMarginsToContainer($default-container-width);
@@ -301,10 +301,4 @@ body.has-toolbar.has-sidebar .block .ui.basic.button.delete-button {
301
301
  }
302
302
  }
303
303
 
304
- .contenttype-file {
305
- a {
306
- text-decoration: underline;
307
- }
308
- }
309
-
310
304
  @import 'bgcolor-blocks-layout';
@@ -16,10 +16,10 @@
16
16
  .block.teaser {
17
17
  margin-bottom: 0;
18
18
  background-color: $lightgrey;
19
- .grid-teaser-item {
19
+ .teaser-item {
20
20
  height: 100%;
21
21
 
22
- .grid-image-wrapper {
22
+ .image-wrapper {
23
23
  margin: 0 0 40px 0 !important;
24
24
 
25
25
  img {
@@ -54,7 +54,7 @@
54
54
  .block-editor-teaser {
55
55
  padding: 0;
56
56
  margin: 0.5rem !important;
57
- .grid-teaser-item {
57
+ .teaser-item {
58
58
  border: none !important;
59
59
  }
60
60
  }
@@ -128,10 +128,18 @@
128
128
  margin: 0.5rem !important;
129
129
  }
130
130
 
131
- .listing {
131
+ .block.listing {
132
132
  h2 {
133
133
  margin-bottom: 40px !important;
134
134
  }
135
+ &.previous--is--same--block-type.previous--has--same--backgroundColor:not(.has--headline) {
136
+ margin-top: unset;
137
+ }
138
+ .listing-item,
139
+ .listing-item:last-child {
140
+ padding-bottom: 40px !important;
141
+ border-bottom: 1px solid $black !important;
142
+ }
135
143
  }
136
144
 
137
145
  .block-editor-empty {
@@ -144,7 +152,7 @@
144
152
  .block.gridBlock,
145
153
  .block-editor-gridBlock {
146
154
  .one {
147
- .grid-teaser-item .content h2 {
155
+ .teaser-item .content h2 {
148
156
  margin-bottom: 40px !important;
149
157
  @include text-heading-h2();
150
158
  }
@@ -159,7 +167,7 @@
159
167
  .two,
160
168
  .three {
161
169
  .teaser {
162
- .grid-teaser-item .content {
170
+ .teaser-item .content {
163
171
  h2 {
164
172
  margin-bottom: 20px !important;
165
173
  @include text-heading-h3();
@@ -187,8 +195,8 @@
187
195
 
188
196
  .four {
189
197
  .teaser {
190
- .grid-teaser-item {
191
- .grid-image-wrapper {
198
+ .teaser-item {
199
+ .image-wrapper {
192
200
  margin-bottom: 20px !important;
193
201
  }
194
202
  .content {
@@ -239,7 +247,7 @@
239
247
  #page-add .block-editor-gridBlock.has--backgroundColor--grey,
240
248
  #page-edit .block-editor-gridBlock.has--backgroundColor--grey {
241
249
  background-color: $lightgrey;
242
- .grid-teaser-item {
250
+ .teaser-item {
243
251
  background: white;
244
252
  }
245
253
  .slate {
@@ -1,5 +1,6 @@
1
1
  // Listing Block
2
- .block.listing {
2
+ .block.listing,
3
+ .column > .block.listing {
3
4
  &.next--has--same--backgroundColor.next--is--same--block-type,
4
5
  &.next--is--__button {
5
6
  .listing-item:last-child {
@@ -13,7 +14,7 @@
13
14
  border-bottom: 1px solid $black;
14
15
  margin-bottom: 40px;
15
16
 
16
- &:last-child:not(> .column) {
17
+ &:last-child {
17
18
  padding-bottom: 0 !important;
18
19
  border-bottom: none !important;
19
20
  margin-bottom: 0;
@@ -62,7 +63,7 @@
62
63
  aspect-ratio: $aspect-ratio;
63
64
  }
64
65
  h3 {
65
- margin-bottom: 40px;
66
+ margin-bottom: 40px !important;
66
67
  color: $black;
67
68
  @include text-heading-h2();
68
69
  }
@@ -138,13 +139,13 @@
138
139
  }
139
140
  }
140
141
 
141
- img.grid-item-image {
142
+ img.item-image {
142
143
  width: 100%;
143
144
  margin: 0;
144
145
  aspect-ratio: $aspect-ratio;
145
146
  }
146
147
 
147
- .grid-item {
148
+ .item {
148
149
  margin-top: 40px;
149
150
  }
150
151
 
@@ -8,13 +8,13 @@
8
8
  // We want the image to extend in all its container width
9
9
  height: 100%;
10
10
 
11
- .grid-teaser-item.default {
11
+ .teaser-item.default {
12
12
  align-items: start;
13
13
  padding-bottom: 40px; // same as vertical spacing in margin-bottom
14
14
  border-bottom: 1px solid $black;
15
15
  }
16
16
 
17
- .grid-image-wrapper {
17
+ .image-wrapper {
18
18
  width: 100%;
19
19
  img {
20
20
  object-position: center;
@@ -23,10 +23,10 @@
23
23
 
24
24
  &.has--align--left,
25
25
  &.has--align--right {
26
- .grid-teaser-item.default {
26
+ .teaser-item.default {
27
27
  display: flex;
28
28
 
29
- .grid-image-wrapper {
29
+ .image-wrapper {
30
30
  align-self: flex-start;
31
31
  }
32
32
 
@@ -37,10 +37,10 @@
37
37
  }
38
38
 
39
39
  &.has--align--left {
40
- .grid-teaser-item.default {
40
+ .teaser-item.default {
41
41
  flex-direction: row;
42
42
 
43
- .grid-image-wrapper {
43
+ .image-wrapper {
44
44
  margin-right: 20px;
45
45
 
46
46
  @media only screen and (max-width: $largest-mobile-screen) {
@@ -52,10 +52,10 @@
52
52
  }
53
53
 
54
54
  &.has--align--right {
55
- .grid-teaser-item.default {
55
+ .teaser-item.default {
56
56
  flex-direction: row-reverse;
57
57
 
58
- .grid-image-wrapper {
58
+ .image-wrapper {
59
59
  margin-left: 20px;
60
60
 
61
61
  @media only screen and (max-width: $largest-mobile-screen) {
@@ -67,13 +67,13 @@
67
67
  }
68
68
 
69
69
  &.has--align--center {
70
- .grid-teaser-item.default {
70
+ .teaser-item.default {
71
71
  display: block;
72
72
  a {
73
73
  display: block;
74
74
  }
75
75
 
76
- .grid-image-wrapper {
76
+ .image-wrapper {
77
77
  margin-bottom: 26px;
78
78
  }
79
79
  }
@@ -102,12 +102,12 @@
102
102
 
103
103
  &.is--last--of--block-type,
104
104
  &.next--has--different--backgroundColor {
105
- .grid-teaser-item.default {
105
+ .teaser-item.default {
106
106
  padding-bottom: 0;
107
107
  border-bottom: none;
108
108
  }
109
109
  &.next--is--__button {
110
- .grid-teaser-item.default {
110
+ .teaser-item.default {
111
111
  padding-bottom: 40px;
112
112
  border-bottom: 1px solid $black;
113
113
  }