@cooperco/cooper-component-library 0.1.79 → 0.1.80
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/dist/cms/0065-create-hello-banner.cjs +62 -0
- package/dist/cms/0066-add-tile-collection-to-container-module.cjs +86 -0
- package/dist/cms/0067-add-cta-to-tile-collection-module.cjs +37 -0
- package/dist/cms/0068-add-body-copy-alignment-to-tile-content.cjs +35 -0
- package/dist/cms/0069-add-footer-to-tile-content.cjs +25 -0
- package/dist/cms/containerModule.query.ts +19 -0
- package/dist/cms/contentful/migrations/drafts/create-hello-banner.cjs +62 -0
- package/dist/cms/contentful/migrations/scripts/0065-create-hello-banner.cjs +62 -0
- package/dist/cms/contentful/migrations/scripts/0066-add-tile-collection-to-container-module.cjs +86 -0
- package/dist/cms/contentful/migrations/scripts/0067-add-cta-to-tile-collection-module.cjs +37 -0
- package/dist/cms/contentful/migrations/scripts/0068-add-body-copy-alignment-to-tile-content.cjs +35 -0
- package/dist/cms/contentful/migrations/scripts/0069-add-footer-to-tile-content.cjs +25 -0
- package/dist/cms/contentful/queries/containerModule.query.js +19 -0
- package/dist/cms/contentful/queries/containerModule.query.ts +19 -0
- package/dist/cms/contentful/queries/fragments.js +2 -0
- package/dist/cms/contentful/queries/fragments.ts +2 -0
- package/dist/cms/contentful/queries/tileCollection.query.js +7 -1
- package/dist/cms/contentful/queries/tileCollection.query.ts +11 -1
- package/dist/cms/create-hello-banner.cjs +62 -0
- package/dist/cms/drafts/create-hello-banner.cjs +62 -0
- package/dist/cms/fragments.ts +2 -0
- package/dist/cms/migrations/drafts/create-hello-banner.cjs +62 -0
- package/dist/cms/migrations/scripts/0065-create-hello-banner.cjs +62 -0
- package/dist/cms/migrations/scripts/0066-add-tile-collection-to-container-module.cjs +86 -0
- package/dist/cms/migrations/scripts/0067-add-cta-to-tile-collection-module.cjs +37 -0
- package/dist/cms/migrations/scripts/0068-add-body-copy-alignment-to-tile-content.cjs +35 -0
- package/dist/cms/migrations/scripts/0069-add-footer-to-tile-content.cjs +25 -0
- package/dist/cms/queries/containerModule.query.ts +19 -0
- package/dist/cms/queries/fragments.ts +2 -0
- package/dist/cms/queries/tileCollection.query.ts +11 -1
- package/dist/cms/scripts/0065-create-hello-banner.cjs +62 -0
- package/dist/cms/scripts/0066-add-tile-collection-to-container-module.cjs +86 -0
- package/dist/cms/scripts/0067-add-cta-to-tile-collection-module.cjs +37 -0
- package/dist/cms/scripts/0068-add-body-copy-alignment-to-tile-content.cjs +35 -0
- package/dist/cms/scripts/0069-add-footer-to-tile-content.cjs +25 -0
- package/dist/cms/tileCollection.query.ts +11 -1
- package/dist/lib/component-lib.js +1693 -1687
- package/dist/lib/component-lib.umd.cjs +19 -19
- package/dist/lib/style.css +1 -1
- package/dist/types/src/components/HelloBanner/HelloBanner.d.ts +23 -0
- package/dist/types/src/components/HelloBanner/HelloBanner.vue.d.ts +3 -0
- package/dist/types/src/components/TileContent/TileContent.d.ts +1 -0
- package/dist/types/src/components/components.d.ts +1 -1
- package/dist/types/src/components/types.d.ts +1 -1
- package/dist/types/src/config/defaultPassthrough/index.d.ts +2 -2
- package/dist/types/src/config/defaultPassthrough/types.d.ts +3 -3
- package/package.json +116 -112
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { gql } from 'graphql-tag';
|
|
2
|
-
import { tileContentFragment, tileLabelFragment } from './fragments.js';
|
|
2
|
+
import { tileContentFragment, tileLabelFragment, ctaFragment, } from './fragments.js';
|
|
3
3
|
export const getTileContent = gql `
|
|
4
4
|
${tileContentFragment}
|
|
5
5
|
query tileContentQuery($id: String!, $preview: Boolean = false) {
|
|
@@ -18,6 +18,7 @@ export const getTileLabel = gql `
|
|
|
18
18
|
`;
|
|
19
19
|
export const getTileCollection = gql `
|
|
20
20
|
${tileContentFragment}
|
|
21
|
+
${ctaFragment}
|
|
21
22
|
query tileCollectionQuery($id: String!, $preview: Boolean = false) {
|
|
22
23
|
tileCollectionModule(id: $id, preview: $preview) {
|
|
23
24
|
headline
|
|
@@ -26,6 +27,11 @@ export const getTileCollection = gql `
|
|
|
26
27
|
...tileContentFragment
|
|
27
28
|
}
|
|
28
29
|
}
|
|
30
|
+
ctasCollection(limit: 4) {
|
|
31
|
+
items {
|
|
32
|
+
...ctaFragment
|
|
33
|
+
}
|
|
34
|
+
}
|
|
29
35
|
backgroundColor
|
|
30
36
|
variant
|
|
31
37
|
tileLabelType
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { gql } from 'graphql-tag'
|
|
2
2
|
import type { DocumentNode } from 'graphql'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
tileContentFragment,
|
|
5
|
+
tileLabelFragment,
|
|
6
|
+
ctaFragment,
|
|
7
|
+
} from './fragments.js'
|
|
4
8
|
|
|
5
9
|
export const getTileContent: DocumentNode = gql`
|
|
6
10
|
${tileContentFragment}
|
|
@@ -22,6 +26,7 @@ export const getTileLabel: DocumentNode = gql`
|
|
|
22
26
|
|
|
23
27
|
export const getTileCollection: DocumentNode = gql`
|
|
24
28
|
${tileContentFragment}
|
|
29
|
+
${ctaFragment}
|
|
25
30
|
query tileCollectionQuery($id: String!, $preview: Boolean = false) {
|
|
26
31
|
tileCollectionModule(id: $id, preview: $preview) {
|
|
27
32
|
headline
|
|
@@ -30,6 +35,11 @@ export const getTileCollection: DocumentNode = gql`
|
|
|
30
35
|
...tileContentFragment
|
|
31
36
|
}
|
|
32
37
|
}
|
|
38
|
+
ctasCollection(limit: 4) {
|
|
39
|
+
items {
|
|
40
|
+
...ctaFragment
|
|
41
|
+
}
|
|
42
|
+
}
|
|
33
43
|
backgroundColor
|
|
34
44
|
variant
|
|
35
45
|
tileLabelType
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const addEntryNameField = require('../helpers/addEntryNameField.cjs')
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// @ts-check
|
|
5
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
6
|
+
up: async function (migration) {
|
|
7
|
+
const helloBanner = migration.createContentType('helloBanner', {
|
|
8
|
+
name: 'Hello Banner',
|
|
9
|
+
displayField: 'entryName',
|
|
10
|
+
description: 'Manage the hello banner component',
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// Add required entryName field
|
|
14
|
+
addEntryNameField(helloBanner)
|
|
15
|
+
|
|
16
|
+
// Active field
|
|
17
|
+
helloBanner
|
|
18
|
+
.createField('active')
|
|
19
|
+
.name('Active')
|
|
20
|
+
.type('Boolean')
|
|
21
|
+
.required(true)
|
|
22
|
+
.defaultValue({ 'en-US': false })
|
|
23
|
+
helloBanner.changeFieldControl('active', 'builtin', 'boolean', {
|
|
24
|
+
helpText: 'Toggle to show/hide the hello banner',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Full Copy field
|
|
28
|
+
helloBanner
|
|
29
|
+
.createField('fullCopy')
|
|
30
|
+
.name('Full Copy')
|
|
31
|
+
.type('Text')
|
|
32
|
+
.required(true)
|
|
33
|
+
helloBanner.changeFieldControl('fullCopy', 'builtin', 'multipleLine', {
|
|
34
|
+
helpText: 'Main promotional text displayed on desktop and mobile expanded',
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Mobile Collapsed field
|
|
38
|
+
helloBanner
|
|
39
|
+
.createField('mobileCollapsed')
|
|
40
|
+
.name('Mobile Collapsed')
|
|
41
|
+
.type('Symbol')
|
|
42
|
+
.required(true)
|
|
43
|
+
helloBanner.changeFieldControl('mobileCollapsed', 'builtin', 'singleLine', {
|
|
44
|
+
helpText: 'Text displayed when the hello banner is collapsed on mobile devices',
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// CTA reference
|
|
48
|
+
helloBanner.createField('cta', {
|
|
49
|
+
name: 'CTA',
|
|
50
|
+
type: 'Link',
|
|
51
|
+
linkType: 'Entry',
|
|
52
|
+
required: false,
|
|
53
|
+
validations: [{ linkContentType: ['cta'] }],
|
|
54
|
+
})
|
|
55
|
+
helloBanner.changeFieldControl('cta', 'builtin', 'entryLinkEditor', {
|
|
56
|
+
helpText: 'Call-to-action button or link',
|
|
57
|
+
})
|
|
58
|
+
},
|
|
59
|
+
down: async function (migration) {
|
|
60
|
+
await migration.deleteContentType('helloBanner')
|
|
61
|
+
},
|
|
62
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const addEntryNameField = require('../helpers/addEntryNameField.cjs')
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// @ts-check
|
|
5
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
6
|
+
up: async function (migration) {
|
|
7
|
+
const helloBanner = migration.createContentType('helloBanner', {
|
|
8
|
+
name: 'Hello Banner',
|
|
9
|
+
displayField: 'entryName',
|
|
10
|
+
description: 'Manage the hello banner component',
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// Add required entryName field
|
|
14
|
+
addEntryNameField(helloBanner)
|
|
15
|
+
|
|
16
|
+
// Active field
|
|
17
|
+
helloBanner
|
|
18
|
+
.createField('active')
|
|
19
|
+
.name('Active')
|
|
20
|
+
.type('Boolean')
|
|
21
|
+
.required(true)
|
|
22
|
+
.defaultValue({ 'en-US': false })
|
|
23
|
+
helloBanner.changeFieldControl('active', 'builtin', 'boolean', {
|
|
24
|
+
helpText: 'Toggle to show/hide the hello banner',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Full Copy field
|
|
28
|
+
helloBanner
|
|
29
|
+
.createField('fullCopy')
|
|
30
|
+
.name('Full Copy')
|
|
31
|
+
.type('Text')
|
|
32
|
+
.required(true)
|
|
33
|
+
helloBanner.changeFieldControl('fullCopy', 'builtin', 'multipleLine', {
|
|
34
|
+
helpText: 'Main promotional text displayed on desktop and mobile expanded',
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Mobile Collapsed field
|
|
38
|
+
helloBanner
|
|
39
|
+
.createField('mobileCollapsed')
|
|
40
|
+
.name('Mobile Collapsed')
|
|
41
|
+
.type('Symbol')
|
|
42
|
+
.required(true)
|
|
43
|
+
helloBanner.changeFieldControl('mobileCollapsed', 'builtin', 'singleLine', {
|
|
44
|
+
helpText: 'Text displayed when the hello banner is collapsed on mobile devices',
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// CTA reference
|
|
48
|
+
helloBanner.createField('cta', {
|
|
49
|
+
name: 'CTA',
|
|
50
|
+
type: 'Link',
|
|
51
|
+
linkType: 'Entry',
|
|
52
|
+
required: false,
|
|
53
|
+
validations: [{ linkContentType: ['cta'] }],
|
|
54
|
+
})
|
|
55
|
+
helloBanner.changeFieldControl('cta', 'builtin', 'entryLinkEditor', {
|
|
56
|
+
helpText: 'Call-to-action button or link',
|
|
57
|
+
})
|
|
58
|
+
},
|
|
59
|
+
down: async function (migration) {
|
|
60
|
+
await migration.deleteContentType('helloBanner')
|
|
61
|
+
},
|
|
62
|
+
}
|
package/dist/cms/fragments.ts
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const addEntryNameField = require('../helpers/addEntryNameField.cjs')
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// @ts-check
|
|
5
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
6
|
+
up: async function (migration) {
|
|
7
|
+
const helloBanner = migration.createContentType('helloBanner', {
|
|
8
|
+
name: 'Hello Banner',
|
|
9
|
+
displayField: 'entryName',
|
|
10
|
+
description: 'Manage the hello banner component',
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// Add required entryName field
|
|
14
|
+
addEntryNameField(helloBanner)
|
|
15
|
+
|
|
16
|
+
// Active field
|
|
17
|
+
helloBanner
|
|
18
|
+
.createField('active')
|
|
19
|
+
.name('Active')
|
|
20
|
+
.type('Boolean')
|
|
21
|
+
.required(true)
|
|
22
|
+
.defaultValue({ 'en-US': false })
|
|
23
|
+
helloBanner.changeFieldControl('active', 'builtin', 'boolean', {
|
|
24
|
+
helpText: 'Toggle to show/hide the hello banner',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Full Copy field
|
|
28
|
+
helloBanner
|
|
29
|
+
.createField('fullCopy')
|
|
30
|
+
.name('Full Copy')
|
|
31
|
+
.type('Text')
|
|
32
|
+
.required(true)
|
|
33
|
+
helloBanner.changeFieldControl('fullCopy', 'builtin', 'multipleLine', {
|
|
34
|
+
helpText: 'Main promotional text displayed on desktop and mobile expanded',
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Mobile Collapsed field
|
|
38
|
+
helloBanner
|
|
39
|
+
.createField('mobileCollapsed')
|
|
40
|
+
.name('Mobile Collapsed')
|
|
41
|
+
.type('Symbol')
|
|
42
|
+
.required(true)
|
|
43
|
+
helloBanner.changeFieldControl('mobileCollapsed', 'builtin', 'singleLine', {
|
|
44
|
+
helpText: 'Text displayed when the hello banner is collapsed on mobile devices',
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// CTA reference
|
|
48
|
+
helloBanner.createField('cta', {
|
|
49
|
+
name: 'CTA',
|
|
50
|
+
type: 'Link',
|
|
51
|
+
linkType: 'Entry',
|
|
52
|
+
required: false,
|
|
53
|
+
validations: [{ linkContentType: ['cta'] }],
|
|
54
|
+
})
|
|
55
|
+
helloBanner.changeFieldControl('cta', 'builtin', 'entryLinkEditor', {
|
|
56
|
+
helpText: 'Call-to-action button or link',
|
|
57
|
+
})
|
|
58
|
+
},
|
|
59
|
+
down: async function (migration) {
|
|
60
|
+
await migration.deleteContentType('helloBanner')
|
|
61
|
+
},
|
|
62
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const addEntryNameField = require('../helpers/addEntryNameField.cjs')
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// @ts-check
|
|
5
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
6
|
+
up: async function (migration) {
|
|
7
|
+
const helloBanner = migration.createContentType('helloBanner', {
|
|
8
|
+
name: 'Hello Banner',
|
|
9
|
+
displayField: 'entryName',
|
|
10
|
+
description: 'Manage the hello banner component',
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// Add required entryName field
|
|
14
|
+
addEntryNameField(helloBanner)
|
|
15
|
+
|
|
16
|
+
// Active field
|
|
17
|
+
helloBanner
|
|
18
|
+
.createField('active')
|
|
19
|
+
.name('Active')
|
|
20
|
+
.type('Boolean')
|
|
21
|
+
.required(true)
|
|
22
|
+
.defaultValue({ 'en-US': false })
|
|
23
|
+
helloBanner.changeFieldControl('active', 'builtin', 'boolean', {
|
|
24
|
+
helpText: 'Toggle to show/hide the hello banner',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Full Copy field
|
|
28
|
+
helloBanner
|
|
29
|
+
.createField('fullCopy')
|
|
30
|
+
.name('Full Copy')
|
|
31
|
+
.type('Text')
|
|
32
|
+
.required(true)
|
|
33
|
+
helloBanner.changeFieldControl('fullCopy', 'builtin', 'multipleLine', {
|
|
34
|
+
helpText: 'Main promotional text displayed on desktop and mobile expanded',
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Mobile Collapsed field
|
|
38
|
+
helloBanner
|
|
39
|
+
.createField('mobileCollapsed')
|
|
40
|
+
.name('Mobile Collapsed')
|
|
41
|
+
.type('Symbol')
|
|
42
|
+
.required(true)
|
|
43
|
+
helloBanner.changeFieldControl('mobileCollapsed', 'builtin', 'singleLine', {
|
|
44
|
+
helpText: 'Text displayed when the hello banner is collapsed on mobile devices',
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// CTA reference
|
|
48
|
+
helloBanner.createField('cta', {
|
|
49
|
+
name: 'CTA',
|
|
50
|
+
type: 'Link',
|
|
51
|
+
linkType: 'Entry',
|
|
52
|
+
required: false,
|
|
53
|
+
validations: [{ linkContentType: ['cta'] }],
|
|
54
|
+
})
|
|
55
|
+
helloBanner.changeFieldControl('cta', 'builtin', 'entryLinkEditor', {
|
|
56
|
+
helpText: 'Call-to-action button or link',
|
|
57
|
+
})
|
|
58
|
+
},
|
|
59
|
+
down: async function (migration) {
|
|
60
|
+
await migration.deleteContentType('helloBanner')
|
|
61
|
+
},
|
|
62
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// @ts-check
|
|
3
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
4
|
+
up: function (migration) {
|
|
5
|
+
const containerModule = migration.editContentType('containerModule')
|
|
6
|
+
|
|
7
|
+
// Add tileCollectionModule to fullWidthContent validations
|
|
8
|
+
containerModule.editField('fullWidthContent').validations([
|
|
9
|
+
{
|
|
10
|
+
linkContentType: [
|
|
11
|
+
'contentModule',
|
|
12
|
+
'tileContent',
|
|
13
|
+
'accordion',
|
|
14
|
+
'tileCollectionModule',
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
])
|
|
18
|
+
|
|
19
|
+
// Add tileCollectionModule to leftContent validations
|
|
20
|
+
containerModule.editField('leftContent').validations([
|
|
21
|
+
{
|
|
22
|
+
linkContentType: [
|
|
23
|
+
'contentModule',
|
|
24
|
+
'tileContent',
|
|
25
|
+
'accordion',
|
|
26
|
+
'image',
|
|
27
|
+
'video',
|
|
28
|
+
'tileCollectionModule',
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
])
|
|
32
|
+
|
|
33
|
+
// Add tileCollectionModule to rightContent validations
|
|
34
|
+
containerModule.editField('rightContent').validations([
|
|
35
|
+
{
|
|
36
|
+
linkContentType: [
|
|
37
|
+
'contentModule',
|
|
38
|
+
'tileContent',
|
|
39
|
+
'accordion',
|
|
40
|
+
'image',
|
|
41
|
+
'video',
|
|
42
|
+
'tileCollectionModule',
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
])
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
// @ts-check
|
|
49
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
50
|
+
down: function (migration) {
|
|
51
|
+
const containerModule = migration.editContentType('containerModule')
|
|
52
|
+
|
|
53
|
+
// Revert fullWidthContent to original validations
|
|
54
|
+
containerModule.editField('fullWidthContent').validations([
|
|
55
|
+
{
|
|
56
|
+
linkContentType: ['contentModule', 'tileContent', 'accordion'],
|
|
57
|
+
},
|
|
58
|
+
])
|
|
59
|
+
|
|
60
|
+
// Revert leftContent to original validations
|
|
61
|
+
containerModule.editField('leftContent').validations([
|
|
62
|
+
{
|
|
63
|
+
linkContentType: [
|
|
64
|
+
'contentModule',
|
|
65
|
+
'tileContent',
|
|
66
|
+
'accordion',
|
|
67
|
+
'image',
|
|
68
|
+
'video',
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
])
|
|
72
|
+
|
|
73
|
+
// Revert rightContent to original validations
|
|
74
|
+
containerModule.editField('rightContent').validations([
|
|
75
|
+
{
|
|
76
|
+
linkContentType: [
|
|
77
|
+
'contentModule',
|
|
78
|
+
'tileContent',
|
|
79
|
+
'accordion',
|
|
80
|
+
'image',
|
|
81
|
+
'video',
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
])
|
|
85
|
+
},
|
|
86
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// @ts-check
|
|
3
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
4
|
+
up: function (migration) {
|
|
5
|
+
const tileCollectionModule =
|
|
6
|
+
migration.editContentType('tileCollectionModule')
|
|
7
|
+
|
|
8
|
+
tileCollectionModule
|
|
9
|
+
.createField('ctas')
|
|
10
|
+
.name('CTAs')
|
|
11
|
+
.type('Array')
|
|
12
|
+
.items({
|
|
13
|
+
type: 'Link',
|
|
14
|
+
linkType: 'Entry',
|
|
15
|
+
validations: [{ linkContentType: ['cta'] }],
|
|
16
|
+
})
|
|
17
|
+
.validations([{ size: { max: 4 } }])
|
|
18
|
+
tileCollectionModule.changeFieldControl(
|
|
19
|
+
'ctas',
|
|
20
|
+
'builtin',
|
|
21
|
+
'entryLinksEditor',
|
|
22
|
+
{
|
|
23
|
+
helpText: 'Call-to-action buttons displayed below the tile collection',
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
tileCollectionModule.moveField('ctas').afterField('tiles')
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
// @ts-check
|
|
31
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
32
|
+
down: function (migration) {
|
|
33
|
+
const tileCollectionModule =
|
|
34
|
+
migration.editContentType('tileCollectionModule')
|
|
35
|
+
tileCollectionModule.deleteField('ctas')
|
|
36
|
+
},
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// @ts-check
|
|
3
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
4
|
+
up: function (migration) {
|
|
5
|
+
const tileContent = migration.editContentType('tileContent')
|
|
6
|
+
|
|
7
|
+
tileContent.createField('bodyCopyAlignment', {
|
|
8
|
+
name: 'Body Copy Alignment',
|
|
9
|
+
type: 'Symbol',
|
|
10
|
+
validations: [
|
|
11
|
+
{
|
|
12
|
+
in: ['Left', 'Center', 'Right'],
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
})
|
|
16
|
+
tileContent.changeFieldControl(
|
|
17
|
+
'bodyCopyAlignment',
|
|
18
|
+
'builtin',
|
|
19
|
+
'dropdown',
|
|
20
|
+
{
|
|
21
|
+
helpText:
|
|
22
|
+
'Override the body copy text alignment independently from the general alignment. If not set, body copy will follow the general alignment.',
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
tileContent.moveField('bodyCopyAlignment').afterField('bodyCopy')
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
// @ts-check
|
|
30
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
31
|
+
down: function (migration) {
|
|
32
|
+
const tileContent = migration.editContentType('tileContent')
|
|
33
|
+
tileContent.deleteField('bodyCopyAlignment')
|
|
34
|
+
},
|
|
35
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
// @ts-check
|
|
3
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
4
|
+
up: function (migration) {
|
|
5
|
+
const tileContent = migration.editContentType('tileContent')
|
|
6
|
+
|
|
7
|
+
tileContent.createField('footer', {
|
|
8
|
+
name: 'Footer',
|
|
9
|
+
type: 'Symbol',
|
|
10
|
+
})
|
|
11
|
+
tileContent.changeFieldControl('footer', 'builtin', 'singleLine', {
|
|
12
|
+
helpText: 'Optional footer text displayed below the body copy and CTAs.',
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
tileContent.moveField('footer').afterField('bodyCopyAlignment')
|
|
16
|
+
tileContent.moveField('backgroundColor').afterField('tileLabel')
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
// @ts-check
|
|
20
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
21
|
+
down: function (migration) {
|
|
22
|
+
const tileContent = migration.editContentType('tileContent')
|
|
23
|
+
tileContent.deleteField('footer')
|
|
24
|
+
},
|
|
25
|
+
}
|
|
@@ -7,6 +7,7 @@ export const getContainerModule: DocumentNode = gql`
|
|
|
7
7
|
${videoFragment}
|
|
8
8
|
query containerModuleQuery($id: String!, $preview: Boolean = false) {
|
|
9
9
|
containerModule(id: $id, preview: $preview) {
|
|
10
|
+
__typename
|
|
10
11
|
headline {
|
|
11
12
|
json
|
|
12
13
|
links {
|
|
@@ -41,6 +42,12 @@ export const getContainerModule: DocumentNode = gql`
|
|
|
41
42
|
}
|
|
42
43
|
__typename
|
|
43
44
|
}
|
|
45
|
+
... on TileCollectionModule {
|
|
46
|
+
sys {
|
|
47
|
+
id
|
|
48
|
+
}
|
|
49
|
+
__typename
|
|
50
|
+
}
|
|
44
51
|
}
|
|
45
52
|
leftContent {
|
|
46
53
|
... on Accordion {
|
|
@@ -86,6 +93,12 @@ export const getContainerModule: DocumentNode = gql`
|
|
|
86
93
|
}
|
|
87
94
|
__typename
|
|
88
95
|
}
|
|
96
|
+
... on TileCollectionModule {
|
|
97
|
+
sys {
|
|
98
|
+
id
|
|
99
|
+
}
|
|
100
|
+
__typename
|
|
101
|
+
}
|
|
89
102
|
}
|
|
90
103
|
rightContent {
|
|
91
104
|
... on Accordion {
|
|
@@ -118,6 +131,12 @@ export const getContainerModule: DocumentNode = gql`
|
|
|
118
131
|
}
|
|
119
132
|
__typename
|
|
120
133
|
}
|
|
134
|
+
... on TileCollectionModule {
|
|
135
|
+
sys {
|
|
136
|
+
id
|
|
137
|
+
}
|
|
138
|
+
__typename
|
|
139
|
+
}
|
|
121
140
|
}
|
|
122
141
|
backgroundImage {
|
|
123
142
|
...imageFragment
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { gql } from 'graphql-tag'
|
|
2
2
|
import type { DocumentNode } from 'graphql'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
tileContentFragment,
|
|
5
|
+
tileLabelFragment,
|
|
6
|
+
ctaFragment,
|
|
7
|
+
} from './fragments.js'
|
|
4
8
|
|
|
5
9
|
export const getTileContent: DocumentNode = gql`
|
|
6
10
|
${tileContentFragment}
|
|
@@ -22,6 +26,7 @@ export const getTileLabel: DocumentNode = gql`
|
|
|
22
26
|
|
|
23
27
|
export const getTileCollection: DocumentNode = gql`
|
|
24
28
|
${tileContentFragment}
|
|
29
|
+
${ctaFragment}
|
|
25
30
|
query tileCollectionQuery($id: String!, $preview: Boolean = false) {
|
|
26
31
|
tileCollectionModule(id: $id, preview: $preview) {
|
|
27
32
|
headline
|
|
@@ -30,6 +35,11 @@ export const getTileCollection: DocumentNode = gql`
|
|
|
30
35
|
...tileContentFragment
|
|
31
36
|
}
|
|
32
37
|
}
|
|
38
|
+
ctasCollection(limit: 4) {
|
|
39
|
+
items {
|
|
40
|
+
...ctaFragment
|
|
41
|
+
}
|
|
42
|
+
}
|
|
33
43
|
backgroundColor
|
|
34
44
|
variant
|
|
35
45
|
tileLabelType
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const addEntryNameField = require('../helpers/addEntryNameField.cjs')
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
// @ts-check
|
|
5
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
6
|
+
up: async function (migration) {
|
|
7
|
+
const helloBanner = migration.createContentType('helloBanner', {
|
|
8
|
+
name: 'Hello Banner',
|
|
9
|
+
displayField: 'entryName',
|
|
10
|
+
description: 'Manage the hello banner component',
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
// Add required entryName field
|
|
14
|
+
addEntryNameField(helloBanner)
|
|
15
|
+
|
|
16
|
+
// Active field
|
|
17
|
+
helloBanner
|
|
18
|
+
.createField('active')
|
|
19
|
+
.name('Active')
|
|
20
|
+
.type('Boolean')
|
|
21
|
+
.required(true)
|
|
22
|
+
.defaultValue({ 'en-US': false })
|
|
23
|
+
helloBanner.changeFieldControl('active', 'builtin', 'boolean', {
|
|
24
|
+
helpText: 'Toggle to show/hide the hello banner',
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Full Copy field
|
|
28
|
+
helloBanner
|
|
29
|
+
.createField('fullCopy')
|
|
30
|
+
.name('Full Copy')
|
|
31
|
+
.type('Text')
|
|
32
|
+
.required(true)
|
|
33
|
+
helloBanner.changeFieldControl('fullCopy', 'builtin', 'multipleLine', {
|
|
34
|
+
helpText: 'Main promotional text displayed on desktop and mobile expanded',
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Mobile Collapsed field
|
|
38
|
+
helloBanner
|
|
39
|
+
.createField('mobileCollapsed')
|
|
40
|
+
.name('Mobile Collapsed')
|
|
41
|
+
.type('Symbol')
|
|
42
|
+
.required(true)
|
|
43
|
+
helloBanner.changeFieldControl('mobileCollapsed', 'builtin', 'singleLine', {
|
|
44
|
+
helpText: 'Text displayed when the hello banner is collapsed on mobile devices',
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// CTA reference
|
|
48
|
+
helloBanner.createField('cta', {
|
|
49
|
+
name: 'CTA',
|
|
50
|
+
type: 'Link',
|
|
51
|
+
linkType: 'Entry',
|
|
52
|
+
required: false,
|
|
53
|
+
validations: [{ linkContentType: ['cta'] }],
|
|
54
|
+
})
|
|
55
|
+
helloBanner.changeFieldControl('cta', 'builtin', 'entryLinkEditor', {
|
|
56
|
+
helpText: 'Call-to-action button or link',
|
|
57
|
+
})
|
|
58
|
+
},
|
|
59
|
+
down: async function (migration) {
|
|
60
|
+
await migration.deleteContentType('helloBanner')
|
|
61
|
+
},
|
|
62
|
+
}
|