@cooperco/cooper-component-library 0.1.64 → 0.1.65
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/0058-update-cta.js +16 -0
- package/dist/cms/0058-update-primary-navigation.cjs +21 -0
- package/dist/cms/0059-update-navigation-element.cjs +18 -0
- package/dist/cms/0059-update-navigation-element.js +23 -0
- package/dist/cms/README.md +101 -31
- package/dist/cms/contentful/migrations/drafts/0058-update-cta.js +16 -0
- package/dist/cms/contentful/migrations/drafts/0059-update-navigation-element.js +23 -0
- package/dist/cms/contentful/migrations/scripts/0058-update-primary-navigation.cjs +21 -0
- package/dist/cms/contentful/migrations/scripts/0059-update-navigation-element.cjs +18 -0
- package/dist/cms/contentful/queries/header.query.js +26 -0
- package/dist/cms/contentful/queries/header.query.ts +26 -0
- package/dist/cms/drafts/0058-update-cta.js +16 -0
- package/dist/cms/drafts/0059-update-navigation-element.js +23 -0
- package/dist/cms/header.query.ts +26 -0
- package/dist/cms/migrations/drafts/0058-update-cta.js +16 -0
- package/dist/cms/migrations/drafts/0059-update-navigation-element.js +23 -0
- package/dist/cms/migrations/scripts/0058-update-primary-navigation.cjs +21 -0
- package/dist/cms/migrations/scripts/0059-update-navigation-element.cjs +18 -0
- package/dist/cms/queries/header.query.ts +26 -0
- package/dist/cms/scripts/0058-update-primary-navigation.cjs +21 -0
- package/dist/cms/scripts/0059-update-navigation-element.cjs +18 -0
- package/dist/lib/component-lib.js +1563 -1477
- package/dist/lib/component-lib.umd.cjs +19 -19
- package/dist/lib/style.css +1 -1
- package/dist/types/src/components/CTA/CTA.d.ts +1 -0
- package/dist/types/src/components/NavigationElement/NavigationElement.d.ts +3 -0
- package/dist/types/src/components/PrimaryNavigation/PrimaryNavigation.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const cta = migration.editContentType('cta')
|
|
5
|
+
|
|
6
|
+
cta.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
},
|
|
12
|
+
down: function (migration) {
|
|
13
|
+
const cta = migration.editContentType('cta')
|
|
14
|
+
cta.deleteField('highlighted')
|
|
15
|
+
},
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
5
|
+
|
|
6
|
+
// In Banner reference
|
|
7
|
+
primaryNav.createField('inBanner', {
|
|
8
|
+
name: 'In Banner',
|
|
9
|
+
type: 'Array',
|
|
10
|
+
items: {
|
|
11
|
+
type: 'Link',
|
|
12
|
+
validations: [{ linkContentType: ['navigationElement', 'cta'] }],
|
|
13
|
+
linkType: 'Entry',
|
|
14
|
+
},
|
|
15
|
+
})
|
|
16
|
+
},
|
|
17
|
+
down: function (migration) {
|
|
18
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
19
|
+
primaryNav.deleteField('inBanner')
|
|
20
|
+
},
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('expandedMobile', {
|
|
7
|
+
name: 'Expanded Mobile',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: {
|
|
10
|
+
'en-US': false,
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
},
|
|
14
|
+
down: function (migration) {
|
|
15
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
16
|
+
navigationElement.deleteField('expandedMobile')
|
|
17
|
+
},
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
navigationElement.createField('expandedMobile', {
|
|
13
|
+
name: 'Expanded Mobile',
|
|
14
|
+
type: 'Boolean',
|
|
15
|
+
defaultValue: false,
|
|
16
|
+
})
|
|
17
|
+
},
|
|
18
|
+
down: function (migration) {
|
|
19
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
20
|
+
navigationElement.deleteField('highlighted')
|
|
21
|
+
navigationElement.deleteField('expandedMobile')
|
|
22
|
+
},
|
|
23
|
+
}
|
package/dist/cms/README.md
CHANGED
|
@@ -1,42 +1,112 @@
|
|
|
1
|
-
#
|
|
1
|
+
# GraphQL Queries
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This directory contains GraphQL queries for fetching content from Contentful CMS.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- Obtain a Contentful CMA token
|
|
7
|
-
- Confirm and double check what space and environment you should be running these in
|
|
8
|
-
- Run `pnpm exec contentful-cli-migrations --environment-id <your-env-name> --space-id <space-id> --management-token <CMA-TOKEN> --initialise` on environment if not already and update `.env`
|
|
5
|
+
## Directory Structure
|
|
9
6
|
|
|
7
|
+
```
|
|
8
|
+
cms/contentful/queries/
|
|
9
|
+
├── index.ts # Barrel export file (manual updates required)
|
|
10
|
+
├── fragments.ts # Shared GraphQL fragments
|
|
11
|
+
├── *.query.ts # Individual component queries
|
|
12
|
+
└── README.md # This file
|
|
13
|
+
```
|
|
10
14
|
|
|
11
|
-
##
|
|
15
|
+
## How Queries Are Exported
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
- [Contentful Migration Reference Docs](https://github.com/contentful/contentful-migration/blob/main/README.md#reference-documentation)
|
|
15
|
-
- [Contentful Data Model](https://www.contentful.com/developers/docs/concepts/data-model/)
|
|
17
|
+
The query export system in this project is **semi-automatic**:
|
|
16
18
|
|
|
17
|
-
###
|
|
19
|
+
### The Process
|
|
18
20
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
- This should be with an up and a down function
|
|
22
|
-
- The up function updates the model
|
|
23
|
-
- The down function reversts your changes
|
|
24
|
-
- Run your migration on a test environment with the following command: `pnpm exec contentful-cli-migrations --environment-id <your-env-name> --space-id <space-id> --management-token <CMA-TOKEN>`
|
|
25
|
-
- Optional Flags:
|
|
26
|
-
- `--rollback`: Rolls back one migration.
|
|
21
|
+
1. **Individual Query Files** - Queries are defined in individual files with the pattern `*.query.ts`
|
|
22
|
+
- Example: `accordion.query.ts`, `carousel.query.ts`
|
|
27
23
|
|
|
28
|
-
|
|
24
|
+
2. **Manual Barrel Export** - Queries are re-exported through `index.ts`
|
|
25
|
+
- Uses wildcard exports: `export * from './accordion.query.js'`
|
|
26
|
+
- **Note:** Exports use `.js` extensions even though source files are `.ts` (ESM compatibility)
|
|
29
27
|
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
3. **Package-Level Export** - The barrel export is exposed via `package.json`:
|
|
29
|
+
```json
|
|
30
|
+
"./cms/contentful/graphql": {
|
|
31
|
+
"import": "./dist/cms/contentful/queries/index.js",
|
|
32
|
+
"types": "./dist/cms/contentful/queries/index.d.ts"
|
|
33
|
+
}
|
|
34
|
+
```
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
## Creating a New Query
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
38
|
+
### Steps Required
|
|
39
|
+
|
|
40
|
+
1. **Create Query File** - Add your query file: `yourComponent.query.ts`
|
|
41
|
+
|
|
42
|
+
2. **Define Query** - Follow the established pattern:
|
|
43
|
+
```typescript
|
|
44
|
+
import { gql } from 'graphql-tag'
|
|
45
|
+
import type { DocumentNode } from 'graphql'
|
|
46
|
+
import { someFragment } from './fragments.js' // If needed
|
|
47
|
+
|
|
48
|
+
export const getYourComponent: DocumentNode = gql`
|
|
49
|
+
${someFragment} // Include fragments if needed
|
|
50
|
+
query yourComponentQuery($id: String!, $preview: Boolean = false) {
|
|
51
|
+
yourComponent(id: $id, preview: $preview) {
|
|
52
|
+
__typename
|
|
53
|
+
# Add your fields here
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
`
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. **Update Barrel Export** - **MANUALLY ADD** export to `index.ts`:
|
|
60
|
+
```typescript
|
|
61
|
+
export * from './yourComponent.query.js'
|
|
62
|
+
```
|
|
63
|
+
- Maintain alphabetical order for consistency
|
|
64
|
+
- Use `.js` extension (not `.ts`)
|
|
65
|
+
|
|
66
|
+
### Query Naming Conventions
|
|
67
|
+
|
|
68
|
+
- **File Name:** `componentName.query.ts` (camelCase)
|
|
69
|
+
- **Export Name:** `getComponentName` (camelCase with `get` prefix)
|
|
70
|
+
- **Query Name:** `componentNameQuery` (camelCase with `Query` suffix)
|
|
71
|
+
|
|
72
|
+
### Example
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// accordion.query.ts
|
|
76
|
+
import { gql } from 'graphql-tag'
|
|
77
|
+
import type { DocumentNode } from 'graphql'
|
|
78
|
+
import { accordionItemFragment } from './fragments.js'
|
|
79
|
+
|
|
80
|
+
export const getAccordion: DocumentNode = gql`
|
|
81
|
+
${accordionItemFragment}
|
|
82
|
+
query accordionQuery($id: String!, $preview: Boolean = false) {
|
|
83
|
+
accordion(id: $id, preview: $preview) {
|
|
84
|
+
__typename
|
|
85
|
+
headline
|
|
86
|
+
accordionType
|
|
87
|
+
loadMoreButtonTitle
|
|
88
|
+
startOpen
|
|
89
|
+
accordionItemCollection {
|
|
90
|
+
items {
|
|
91
|
+
...accordionItemFragment
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Using Queries in Consumer Projects
|
|
100
|
+
|
|
101
|
+
Queries are consumed via the package export:
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { getAccordion, getCarousel } from '@cooperco/cooper-component-library/cms/contentful/graphql'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Important Notes
|
|
108
|
+
|
|
109
|
+
- **Manual Export Required:** The system is NOT fully automatic - you MUST manually update `index.ts` when adding new queries
|
|
110
|
+
- **ESM Extensions:** Always use `.js` extensions in exports (even for `.ts` source files)
|
|
111
|
+
- **Preview Mode:** All queries support a `preview` parameter for Contentful preview API
|
|
112
|
+
- **Fragments:** Shared fragments are defined in `fragments.ts` and can be reused across queries
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const cta = migration.editContentType('cta')
|
|
5
|
+
|
|
6
|
+
cta.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
},
|
|
12
|
+
down: function (migration) {
|
|
13
|
+
const cta = migration.editContentType('cta')
|
|
14
|
+
cta.deleteField('highlighted')
|
|
15
|
+
},
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
navigationElement.createField('expandedMobile', {
|
|
13
|
+
name: 'Expanded Mobile',
|
|
14
|
+
type: 'Boolean',
|
|
15
|
+
defaultValue: false,
|
|
16
|
+
})
|
|
17
|
+
},
|
|
18
|
+
down: function (migration) {
|
|
19
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
20
|
+
navigationElement.deleteField('highlighted')
|
|
21
|
+
navigationElement.deleteField('expandedMobile')
|
|
22
|
+
},
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
5
|
+
|
|
6
|
+
// In Banner reference
|
|
7
|
+
primaryNav.createField('inBanner', {
|
|
8
|
+
name: 'In Banner',
|
|
9
|
+
type: 'Array',
|
|
10
|
+
items: {
|
|
11
|
+
type: 'Link',
|
|
12
|
+
validations: [{ linkContentType: ['navigationElement', 'cta'] }],
|
|
13
|
+
linkType: 'Entry',
|
|
14
|
+
},
|
|
15
|
+
})
|
|
16
|
+
},
|
|
17
|
+
down: function (migration) {
|
|
18
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
19
|
+
primaryNav.deleteField('inBanner')
|
|
20
|
+
},
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('expandedMobile', {
|
|
7
|
+
name: 'Expanded Mobile',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: {
|
|
10
|
+
'en-US': false,
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
},
|
|
14
|
+
down: function (migration) {
|
|
15
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
16
|
+
navigationElement.deleteField('expandedMobile')
|
|
17
|
+
},
|
|
18
|
+
}
|
|
@@ -34,6 +34,32 @@ export const getHeader = gql `
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
inBannerCollection {
|
|
38
|
+
items {
|
|
39
|
+
__typename
|
|
40
|
+
... on NavigationElement {
|
|
41
|
+
title
|
|
42
|
+
dividerLine
|
|
43
|
+
link {
|
|
44
|
+
...linkFragment
|
|
45
|
+
}
|
|
46
|
+
subNavigationElementsCollection(limit: 10) {
|
|
47
|
+
items {
|
|
48
|
+
title
|
|
49
|
+
link {
|
|
50
|
+
...linkFragment
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
... on Cta {
|
|
56
|
+
...ctaFragment
|
|
57
|
+
logo {
|
|
58
|
+
...imageFragment
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
37
63
|
}
|
|
38
64
|
}
|
|
39
65
|
`;
|
|
@@ -36,6 +36,32 @@ export const getHeader: DocumentNode = gql`
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
inBannerCollection {
|
|
40
|
+
items {
|
|
41
|
+
__typename
|
|
42
|
+
... on NavigationElement {
|
|
43
|
+
title
|
|
44
|
+
dividerLine
|
|
45
|
+
link {
|
|
46
|
+
...linkFragment
|
|
47
|
+
}
|
|
48
|
+
subNavigationElementsCollection(limit: 10) {
|
|
49
|
+
items {
|
|
50
|
+
title
|
|
51
|
+
link {
|
|
52
|
+
...linkFragment
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
... on Cta {
|
|
58
|
+
...ctaFragment
|
|
59
|
+
logo {
|
|
60
|
+
...imageFragment
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
39
65
|
}
|
|
40
66
|
}
|
|
41
67
|
`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const cta = migration.editContentType('cta')
|
|
5
|
+
|
|
6
|
+
cta.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
},
|
|
12
|
+
down: function (migration) {
|
|
13
|
+
const cta = migration.editContentType('cta')
|
|
14
|
+
cta.deleteField('highlighted')
|
|
15
|
+
},
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
navigationElement.createField('expandedMobile', {
|
|
13
|
+
name: 'Expanded Mobile',
|
|
14
|
+
type: 'Boolean',
|
|
15
|
+
defaultValue: false,
|
|
16
|
+
})
|
|
17
|
+
},
|
|
18
|
+
down: function (migration) {
|
|
19
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
20
|
+
navigationElement.deleteField('highlighted')
|
|
21
|
+
navigationElement.deleteField('expandedMobile')
|
|
22
|
+
},
|
|
23
|
+
}
|
package/dist/cms/header.query.ts
CHANGED
|
@@ -36,6 +36,32 @@ export const getHeader: DocumentNode = gql`
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
inBannerCollection {
|
|
40
|
+
items {
|
|
41
|
+
__typename
|
|
42
|
+
... on NavigationElement {
|
|
43
|
+
title
|
|
44
|
+
dividerLine
|
|
45
|
+
link {
|
|
46
|
+
...linkFragment
|
|
47
|
+
}
|
|
48
|
+
subNavigationElementsCollection(limit: 10) {
|
|
49
|
+
items {
|
|
50
|
+
title
|
|
51
|
+
link {
|
|
52
|
+
...linkFragment
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
... on Cta {
|
|
58
|
+
...ctaFragment
|
|
59
|
+
logo {
|
|
60
|
+
...imageFragment
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
39
65
|
}
|
|
40
66
|
}
|
|
41
67
|
`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const cta = migration.editContentType('cta')
|
|
5
|
+
|
|
6
|
+
cta.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
},
|
|
12
|
+
down: function (migration) {
|
|
13
|
+
const cta = migration.editContentType('cta')
|
|
14
|
+
cta.deleteField('highlighted')
|
|
15
|
+
},
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('highlighted', {
|
|
7
|
+
name: 'Highlighted',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: false,
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
navigationElement.createField('expandedMobile', {
|
|
13
|
+
name: 'Expanded Mobile',
|
|
14
|
+
type: 'Boolean',
|
|
15
|
+
defaultValue: false,
|
|
16
|
+
})
|
|
17
|
+
},
|
|
18
|
+
down: function (migration) {
|
|
19
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
20
|
+
navigationElement.deleteField('highlighted')
|
|
21
|
+
navigationElement.deleteField('expandedMobile')
|
|
22
|
+
},
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
5
|
+
|
|
6
|
+
// In Banner reference
|
|
7
|
+
primaryNav.createField('inBanner', {
|
|
8
|
+
name: 'In Banner',
|
|
9
|
+
type: 'Array',
|
|
10
|
+
items: {
|
|
11
|
+
type: 'Link',
|
|
12
|
+
validations: [{ linkContentType: ['navigationElement', 'cta'] }],
|
|
13
|
+
linkType: 'Entry',
|
|
14
|
+
},
|
|
15
|
+
})
|
|
16
|
+
},
|
|
17
|
+
down: function (migration) {
|
|
18
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
19
|
+
primaryNav.deleteField('inBanner')
|
|
20
|
+
},
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('expandedMobile', {
|
|
7
|
+
name: 'Expanded Mobile',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: {
|
|
10
|
+
'en-US': false,
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
},
|
|
14
|
+
down: function (migration) {
|
|
15
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
16
|
+
navigationElement.deleteField('expandedMobile')
|
|
17
|
+
},
|
|
18
|
+
}
|
|
@@ -36,6 +36,32 @@ export const getHeader: DocumentNode = gql`
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
inBannerCollection {
|
|
40
|
+
items {
|
|
41
|
+
__typename
|
|
42
|
+
... on NavigationElement {
|
|
43
|
+
title
|
|
44
|
+
dividerLine
|
|
45
|
+
link {
|
|
46
|
+
...linkFragment
|
|
47
|
+
}
|
|
48
|
+
subNavigationElementsCollection(limit: 10) {
|
|
49
|
+
items {
|
|
50
|
+
title
|
|
51
|
+
link {
|
|
52
|
+
...linkFragment
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
... on Cta {
|
|
58
|
+
...ctaFragment
|
|
59
|
+
logo {
|
|
60
|
+
...imageFragment
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
39
65
|
}
|
|
40
66
|
}
|
|
41
67
|
`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
5
|
+
|
|
6
|
+
// In Banner reference
|
|
7
|
+
primaryNav.createField('inBanner', {
|
|
8
|
+
name: 'In Banner',
|
|
9
|
+
type: 'Array',
|
|
10
|
+
items: {
|
|
11
|
+
type: 'Link',
|
|
12
|
+
validations: [{ linkContentType: ['navigationElement', 'cta'] }],
|
|
13
|
+
linkType: 'Entry',
|
|
14
|
+
},
|
|
15
|
+
})
|
|
16
|
+
},
|
|
17
|
+
down: function (migration) {
|
|
18
|
+
const primaryNav = migration.editContentType('primaryNavigation')
|
|
19
|
+
primaryNav.deleteField('inBanner')
|
|
20
|
+
},
|
|
21
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
/** @type { import('contentful-migration').MigrationFunction } */
|
|
3
|
+
up: function (migration) {
|
|
4
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
5
|
+
|
|
6
|
+
navigationElement.createField('expandedMobile', {
|
|
7
|
+
name: 'Expanded Mobile',
|
|
8
|
+
type: 'Boolean',
|
|
9
|
+
defaultValue: {
|
|
10
|
+
'en-US': false,
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
},
|
|
14
|
+
down: function (migration) {
|
|
15
|
+
const navigationElement = migration.editContentType('navigationElement')
|
|
16
|
+
navigationElement.deleteField('expandedMobile')
|
|
17
|
+
},
|
|
18
|
+
}
|