Code Monkey home page Code Monkey logo

contentful / apps Goto Github PK

View Code? Open in Web Editor NEW
129.0 129.0 142.0 647.35 MB

Apps on the Contentful Marketplace and resources to build them

Home Page: https://contentful.com/marketplace

TypeScript 84.13% JavaScript 14.74% HTML 0.57% CSS 0.18% SCSS 0.29% Shell 0.04% Dockerfile 0.02% Makefile 0.03%
ai-image-tagging app apps bynder cloudinary commercelayer commercetools dropbox frontify gatsby google-analytics image-focal-point jira marketplace monorepo netlify optimizely shopify smartling tutorial

apps's People

Contributors

andipaetzold avatar anho avatar baskiers avatar cemreyuksel avatar colomolo avatar contentful-automation[bot] avatar davidfateh avatar dependabot[bot] avatar dylanjha avatar ethan-ozelius-contentful avatar floppix avatar gavinmatt avatar ghepting avatar giotiskl avatar jsdalton avatar jwhiles avatar kdamball avatar lehnerm avatar lilbitner avatar loweisz avatar marcolink avatar martin3walker avatar matthew-gordon avatar mgoudy91 avatar pkeavenycontentful avatar rusticpenguin avatar ryunsong-contentful avatar schwindtkevin avatar shikaan avatar whitelisab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apps's Issues

Netlify App: Increased/uncapped the max num of configs site

Hello,

Thank you for this app, it is very useful.
For future development, I need to configure more than 10 sites (~15 sites).
would It be possible to change (Increased or uncapped) restriction to configure more than 10 sites?

I see this restriction is defined in variable "export const MAX_CONFIGS = 10;" in apps/apps/netlify/frontend/src/constants.js.

Best regards

page-location-example broken

Describe the bug
Using the latest package.json on the example "Page-location" App

To Reproduce

  • npm install page-location app
  • npm start

Expected behavior
App development server starts

Screenshots
image

Desktop (please complete the following information):
Mac OS - Catalina

Additional context
Add any other context about the problem here.

Request: apps/netlify - Read only view for certain roles

Feature request for the Netlify app.

It would be very useful to be able to allowed permission based access to the app in the sidebar. So that the ability to trigger any deployment is driven by role.
Case:
Anyone without permission to trigger a built could see the active deploying statuses in a Read Only form. And those with permission get the fully functional app.

Cloudinary app builds thumbnail URLs using the default 'type' (upload) and therefore thumbnails don't display for assets of type 'private'

When building the Cloudinary URL in makeThumbnail only the public_id and thumbnail transformation string are passed into the url and video_thumbnail_url functions.

In Cloudinary an asset is unique/identified by not only the public_id but only when in combination with the 'resource_type' and 'type'. Therefore the below assets with the same public_id (sample) are actually different entities:

image/upload/sample
image/private/sample
video/upload/sample

As the 'type' parameter isn't supplied Cloudinary defaults it to 'upload'. This works for most cases but when one of the selected assets is not of type 'upload' then the URL will be built incorrectly and therefore the requested thumbnail would not be returned.

We have a client who has images uploaded as private and therefore currently the thumbnails don't display.

I've made a small change to the code locally but have no permission to push it to a branch and therefore create a pull request.

What's the procedure for submitting PRs?

saved entities are lost when you select new one

Is there some possibility to append and not to rewrite previous selection of items (products for example), when you are building custom web app using @contentful/ecommerce-app-base and renderSkuPicker function ?

Shopify App instructions unclear

I don't know if this is the place to ask, but I can't seem to figure out how to query the Shopify Storefront API using the Contentful App. The instructions here: https://www.contentful.com/help/shopify-app/ seem to show an incomplete example?

Where am I supposed to use a query like this? I've tried to use it on allShopifyProduct, allShopifyProductVariant, shopifyProduct, shopifyProductVariant and it always gives me an error

"message": "Unknown type \"ids\". Did you mean \"ID\"?"
"message": "Unknown argument \"ids\" on field \"nodes\" of type \"ShopifyProductVariantConnection\".",

This is one of the queries

query MyQuery($productVariantIDs: ids) {
  allShopifyProductVariant {
    nodes (ids: $productVariantIDs) {
   	id,
   ...on ShopifyProductVariant {
      sku,
      image {
         src: originalSrc
      },
      title,
      product {
         id,
         title
      }
   }
   }
  }
}

I set the variable as

{
  "productVariantIDs": "2d874bad-d142-5285-9c7c-55d95b746625"
}

I guess I'm looking for a little more guidance than the documentation provides.

Dependabot couldn't find a Dockerfile for this project

Dependabot couldn't find a Dockerfile for this project.

Dependabot requires a Dockerfile to evaluate your project's current Docker dependencies. It had expected to find one at the path: /.circleci/Dockerfile.

If this isn't a Docker project, or if it is a library, you may wish to disable updates for it in the .dependabot/config.yml file in this repo.

View the update logs.

Configuring app logo or icon

Hi,

This is more a question/feature request than an issue, but:

I've spent some time going through the Contentful App framework documentation and the SDK reference but I can't find anything around configuring an Icon/logo for the app.

Any pointers?

Thanks in advance

Cloudinary Image Metadata Update

I'm pretty sure this is more of a limitation and not an issue, but once I've selected an image and added it in Contentful, if I go into Cloudinary and want to update Meta Data this information is not pushed back to Contentful in any way.

I'm assuming in a situation like this I have to build/setup my own hook for when Cloudinary images change if I want it to reflect in Contentful, or simply repick the "new" image in Contentful for this new info to show up.

Just looking for confirmation on if this is the intended behavior.

[commercetools] app uses unsupported api

Describe the bug
When listing categories in the contentful commercetools app it uses categorySearch. However categorySearch is not a supported api:

{{{"data":null,"errors":[{"message":"Cannot query field 'categorySearch' on type 'Query'. Did you mean 'category' or 'categories'? (line 2, column 3):\n categorySearch(fulltext:
{text: $searchTerm, locale: $locale}

) {\n ^","locations":[
{"line":2,"column":3}

]}]}}}

To Reproduce
Steps to reproduce the behavior:

  1. Setup a commercetools app
  2. Hookup categories
  3. Try and search for a category
  4. See error in console, nothing shows

Expected behavior
To use the proper apis for this.

{{{"data":null,"errors":[{"message":"Cannot query field 'categorySearch' on type 'Query'. Did you mean 'category' or 'categories'? (line 2, column 3):\n categorySearch(fulltext:
{text: $searchTerm, locale: $locale}

) {\n ^","locations":[
{"line":2,"column":3}

]}]}}}

Shopify App: Product ID not correct

I'm currently experiencing a good deal of confusion around IDs in Shopify's API.

The one that this plugin returns is a long string of around 48 characters. Example: Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzY1MzcxMjM1Mjg3NTY=.

However, the only ID I can seem to get Shopify's APIs (any of them, the storefront and the admin) to return are either short numeric (e.g. 6586511065140) or longer strings that are essentially gid versions with the same otherwise numeric (e.g. gid://shopify/Product/6586511065140).

In the past, Shopify's admin API was returning the former (the long 48 char version) but something has changed which has broken my site (incredibly frustrating!).

Is there no way for this plugin to use the shorter numeric or gid version of the ID?

Note that I was using the default product variant option for the plugin but have since switched the just the product option, though this problem existed before I made the change (and I thought that perhaps the change might solve the issue, but it did not).

Shopify App - Pulls variance but not products

Hello, for my use case we wanted to host all the extra information for the products on contentful and match them with the Shopify ids. But while working on it I noticed that the products that can be selected through contentful are the variations of the products and not the overarching product.

Any advice in how to get the overarching product of the variants through contentful?

Thank you.

[commercetools] Product preview is limited to 20 products

Issue description
Adding more than 20 products to a field leads to "Product missing" message in products preview

Steps to reproduce

  1. Create a new entry (content type must have a field with commerce tools app installed for products widget)
  2. Add more than 20 products to the field connected to commerce tools
  3. Save
  4. Only 20 products are properly shown, while exceeding products show the message mentioned before

Screenshot
image

Expected behavior
I expected all selected products to show correctly in the preview, the error message is misleading. The products do exist and should render (name & image).

Root cause
Commerce tools api response is limited to 20 entries. You have to provide the offset in order to fetch remaining results. Example of a response:
image

The logic to fetch the products preview is not considering the number of results, always returning at most 20 entries (link).

export async function fetchProductPreviews(
  skus: string[],
  config: ConfigurationParameters
): Promise<Product[]> {
  if (skus.length === 0) {
    return [];
  }

  const client = createClient(config);
  const response = await client
    .productProjections()
    .search()
    .get({
      queryArgs: {
        'filter.query': [`variants.sku:${skus.map((sku) => `"${sku}"`).join(',')}`],
      },
    })
    .execute();

  if (response.statusCode === 200) {
    const products = response.body.results.map(productTransformer(config));
    const foundSKUs = products.map((product: Product) => product.sku);
    const missingProducts = skus
      .filter((sku) => !foundSKUs.includes(sku))
      .map((sku) => ({
        sku,
        image: '',
        id: '',
        name: '',
        isMissing: true,
      }));
    return [...products, ...missingProducts];
  }
  throw new Error(`Request failed with status ${response.statusCode}`);
}

Cloudinary widget cannot insert images into Contentful

Describe the bug

The Cloudinary widget is no longer able to insert/associate files into Contentful.

To Reproduce

Steps to reproduce the behavior:

  1. Log into Contentful and navigate your Space content
  2. Create or go to an existing entry of a content type that has a field assigned to be handled by the Cloudinary app
  3. Click on "Select or upload file on Cloudinary" to open the Cloudinary widget
  4. Select a single file within the Cloudinary media library
  5. Click on "Insert"
  6. Nothing happens; an error is displayed in the developer console (please see screenshot)

Expected behavior

The widget should get dismissed and the Cloudinary image should be inserted/previewed in the corresponding Contentful entry field.

Screenshots

Screen Shot 2021-07-05 at 2 52 29 pm

Desktop (please complete the following information):

  • OS: macOS 11.4, Windows 10 Professional (Version 10.0.19043 Build 19043)
  • Browser and version: Chrome 91.0.4472.114 (macOS), Chrome 91.0.4472.124 (Windows 10 Professional)

Additional context

This appeared to have been working at least until sometime Friday 2 July and was only detected today.

Commercetools APP - Selected Product name for the locale defined in the app setup not shown

In this file is a handlebar template set which uses "name.en" to show the product name of a product. But we don't have this locale so nothing shows up. I think it is better to use the defined locale from the app setup.

'<style>#ctp-wrapper{all:unset;color:#1a1a1a;font-family:\'Open Sans\',sans-serif;font-size:13px}#ctp-wrapper dialog{padding:0;border:0;border-radius:.6rem;box-shadow:0 0 1em #000;font-family:\'Open Sans\',sans-serif}#ctp-wrapper dialog::backdrop{background-color:rgba(0,0,0,.4)}.ctp-container{width:100%}.ctp-h1{display:block;margin-block-start:.67em;margin-block-end:.67em;margin-inline-start:0;margin-inline-end:0;font-weight:700;font-size:1.8rem;font-weight:300;margin:0}.ctp-h2{display:block;margin-block-start:.67em;margin-block-end:.67em;margin-inline-start:0;margin-inline-end:0;font-weight:700;font-size:1.3rem;font-weight:300;margin:0}.ctp-row{display:grid;grid-template-rows:repeat(1,1fr);grid-template-columns:repeat(8,1fr)}.ctp-col-1{grid-column-end:span 1}.ctp-push-col-1{grid-column-start:1}.ctp-col-2{grid-column-end:span 2}.ctp-push-col-2{grid-column-start:2}.ctp-col-3{grid-column-end:span 3}.ctp-push-col-3{grid-column-start:3}.ctp-col-4{grid-column-end:span 4}.ctp-push-col-4{grid-column-start:4}.ctp-col-5{grid-column-end:span 5}.ctp-push-col-5{grid-column-start:5}.ctp-col-6{grid-column-end:span 6}.ctp-push-col-6{grid-column-start:6}.ctp-col-7{grid-column-end:span 7}.ctp-push-col-7{grid-column-start:7}.ctp-col-8{grid-column-end:span 8}.ctp-push-col-8{grid-column-start:8}.ctp-list-container{overflow-y:auto;height:500px;padding-left:10px;padding-right:25px;min-width:650px;padding-top:5px}.ctp-header-column{background:#213c45;color:#e6e6e6;height:35px;-webkit-box-align:center;align-items:center;padding-left:5px;border-bottom:1px solid #e6e6e6;padding-top:5px}.ctp-column{border-right:1px solid grey;align-items:center;border-bottom:1px solid #e6e6e6;border-right:1px solid #e6e6e6;padding-left:5px;padding-top:5px}.ctp-row[data-selected=true]{border:2px solid #00b39e;background-color:#00b39e33}.ctp-thumbnail{position:relative;max-height:70px;overflow:hidden;margin:0 auto}.ctp-button-primary{box-shadow:inset 0 1px 0 0 #497d76;background:linear-gradient(to bottom,#00b39e 5%,#0da38f 100%);background-color:#00b39e;border:1px solid #88c9c0;color:#fff;text-shadow:0 1px 0 #23756a}.ctp-button-primary:hover{background:linear-gradient(to bottom,#0da38f 5%,#00b39e 100%);background-color:#0da38f}.ctp-button-light{box-shadow:inset 0 1px 0 0 #fff;background:linear-gradient(to bottom,#fff 5%,#f6f6f6 100%);background-color:#fff;border:1px solid #dcdcdc;color:#1a1a1a;text-shadow:0 1px 0 #fff}.ctp-button-light:hover{background:linear-gradient(to bottom,#f6f6f6 5%,#fff 100%);background-color:#f6f6f6}.ctp-button{border-radius:6px;display:inline-block;cursor:pointer;padding:10px 24px;text-decoration:none;height:16px}.ctp-button:active{position:relative;top:1px}.ctp-category-product-label{font-size:smaller;color:#999}.ctp-search-input{box-sizing:border-box;display:inline-block;width:100%;background-color:#fff;border-radius:6px;border-style:solid;border-width:1px;color:#1a1a1a;font-weight:500;font-size:1rem;font-family:Open Sans,sans-serif!important;padding:7.5px 10px;outline:0;box-shadow:none;-webkit-appearance:none}.ctp-filter-box{background-color:#f2f2f2;border-radius:6px;margin:0 0 16px;padding:10px}</style> <script id=ctp-product-item type=text/x-handlebars-template> {{#each results}}\n <div class="ctp-row" data-id="{{id}}" data-role="action" {{#shouldSelect id}}{{/shouldSelect}}>\n <div class="ctp-col-1 ctp-column">\n {{masterVariant.sku}}\n </div>\n <div class="ctp-col-2 ctp-column">\n {{name.en}}\n </div>\n <div class="ctp-col-2 image ctp-column">\n <img src="{{masterVariant.images.0.url}}" class="ctp-thumbnail"/>\n </div>\n <div class="ctp-col-1 ctp-column">\n {{#formatPrice masterVariant.prices 0 "EUR"}}{{/formatPrice}}\n </div>\n <div class="ctp-col-2 ctp-column">\n <a class="ctp-button ctp-button-light" href="{{#mcLink id }}{{/mcLink}}" rel="noopener noreferrer"\n target="_blank" onclick="event.stopPropagation();">{{#getLabel "openInMc"}}{{/getLabel}}</a>\n </div>\n </div>\n {{/each}} </script> <script id=ctp-category-item type=text/x-handlebars-template> {{#each results}}\n <div class="ctp-row" data-id="{{id}}" data-role="action" {{#shouldSelect id}}{{/shouldSelect}}>\n <div class="ctp-col-1 ctp-column">\n {{key}}\n </div>\n <div class="ctp-col-2 ctp-column">\n <span>{{name}}</span><br/>\n <span class="ctp-category-product-label">{{stagedProductCount}} {{#getLabel "categoryProductCountLabel"}}{{/getLabel}}</span>\n </div>\n <div class="ctp-col-2 ctp-column">\n {{slug}}\n </div>\n <div class="ctp-col-2 ctp-column">\n {{#if ancestors}}\n {{#each ancestors}}\n | {{name}}\n {{/each}}\n {{/if}}\n </div>\n <div class="ctp-col-1 ctp-column">\n <a class="ctp-button ctp-button-light" href="{{#mcLink id }}{{/mcLink}}" rel="noopener noreferrer"\n target="_blank" onclick="event.stopPropagation();">{{#getLabel "openInMc"}}{{/getLabel}}</a>\n </div>\n </div>\n {{/each}} </script> <script id=ctp-picker-template type=text/x-handlebars-template> {{#isDialog}}\n <dialog id="ctp-popup">\n {{/isDialog}}\n <div class="ctp-container">\n <div class="ctp-row">\n <div class="ctp-col-8">\n <div class="ctp-filter-box">\n {{#if displayOptions.showHeader}}\n <div class="ctp-row">\n <div class="ctp-col-8">\n <h1 class="ctp-h1">{{#getLabel "title"}}{{/getLabel}}</h1>\n </div>\n </div>\n {{/if}}\n <div class="ctp-row">\n <div class="ctp-col-2" style="padding:10px">\n <b>{{#getLabel "searchText"}}{{/getLabel}}</b>\n </div>\n <div class="ctp-col-5">\n <input type="text" id="ctp-search-input" class="ctp-search-input"\n placeholder="{{#getLabel \'searchPlaceHolder\'}}{{/getLabel}}"/>\n </div>\n <div class="ctp-col-1" style="text-align: left;margin-left:5px">\n <a class="ctp-button ctp-button-primary" id="ctp-search-button" data-event="search"\n href="#">{{#getLabel "searchButton"}}{{/getLabel}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="ctp-row">\n <div class="ctp-col-8 ctp-list-container">\n \x3c!--Should depend on the type--\x3e\n {{#ifValue pickerMode equals="product"}}\n <div class="ctp-row">\n <div class="ctp-col-1 ctp-header-column">\n {{#getLabel \'skuHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-2 ctp-header-column">\n {{#getLabel \'productNameHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-2 ctp-header-column">\n {{#getLabel \'imageHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-1 ctp-header-column">\n {{#getLabel \'priceHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-2 ctp-header-column">\n {{#getLabel \'actionHeader\'}}{{/getLabel}}\n </div>\n </div>\n {{/ifValue}}\n\n {{#ifValue pickerMode equals="category"}}\n <div class="ctp-row">\n <div class="ctp-col-1 ctp-header-column">\n {{#getLabel \'categoryKeyHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-2 ctp-header-column">\n {{#getLabel \'categoryNameHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-2 ctp-header-column">\n {{#getLabel \'categorySlugHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-2 ctp-header-column">\n {{#getLabel \'categoryParentHeader\'}}{{/getLabel}}\n </div>\n <div class="ctp-col-1 ctp-header-column">\n {{#getLabel \'actionHeader\'}}{{/getLabel}}\n </div>\n </div>\n {{/ifValue}}\n <div class="ctp-row">\n <div class="ctp-col-8" id="ctp-list">\n </div>\n </div>\n </div>\n </div>\n <div class="ctp-row" style="margin-top:10px">\n\n <div class="ctp-filter-box ctp-col-8">\n <div class="ctp-row">\n <div class="ctp-col-5 ctp-push-col-2" style="vertical-align: middle;">\n <span id="ctp-status-text">\n </span>\n </div>\n {{#if displayOptions.showSelectButton}}\n <div class="ctp-col-1">\n <a class="ctp-button ctp-button-primary" id="ok" data-event="select" href="#">{{#getLabel\n "saveButton"}}{{/getLabel}}</a>\n </div>\n {{#if displayOptions.showCancelButton}}\n <div class="ctp-col-1">\n <a class="ctp-button ctp-button-light" id="cancel" data-event="cancel" href="#">{{#getLabel\n "cancelButton"}}{{/getLabel}}</a>\n </div>\n {{/if}}\n {{/if}}\n </div>\n </div>\n </div>\n </div>\n {{#isDialog}}\n </dialog>\n {{/isDialog}} </script> ';

Deprecate examples?

There are some app samples here: https://github.com/contentful/apps/tree/master/examples

But these seem a lot less helpful than what create-contentful-app makes (i.e. cca demonstrates all the extension points, includes test skeletons, etc). Is it potentially worth marking these examples deprecated and sending folks to create-contentful-app instead?

Unable to view Media Library with Safari

Describe the bug
I'm trying to open the Media Library widget on Safari but I can't get past the authentication step. See attached video.

To Reproduce
Steps to reproduce the behavior:

  1. Create a content model and configure the Cloudinary app
  2. Try to add new content - click on "Select or upload a file on Cloudinary"
  3. Enter endless loop

Expected behaviour
Should be able to see images from the Cloudinary Media Library

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: macOS Monterey 12.3.1
  • Browser Safari
  • Version 15.4

Cloudinary App Appearance Resets

I'm experiencing an issue where the Appearance of the Cloudinary App/Widget in Contentful will revert back to the the JSON field appearance. All settings are still correct when this happens, and I have to go into the Content Model and update the Appearance to Cloudinary again for things to show up properly and when I try to add new Cloudinary content I am asked to log into Cloudinary again.

I've reached out to Cloudinary as well to see if this is something they are aware about or if it's user/setup error. The Cloudinary widget does require cookies and I'm sure Contentful does too - I am not using any extensions that would interfere with any of that or would reset it.

MUX app adds a value when there is no video that causes problem if the field is required.

Describe the bug
there is a problem on MUX App, when the video is required and there is no video; It doesn't give an error. As it put a value inside the field.

To Reproduce
Steps to reproduce the behavior:

  1. Make any video field required.
  2. Add and remove the video
  3. you can publish the content without a video

Expected behavior
Field should give an error when there is no video and should block publishing.

Screenshots

It shows the value when we delete the video;
Screenshot 2022-06-30 at 11 13 25

Instance parameters for App (Cloudinary)?

Hello. Instance parameters are documented for UI extensions e.g. here or here
I was searching how to do same for App but didn't find any documentation about this and from the code examples and implementation it looks like it is not there (at all?). E.g. this commit takes care of migrating installation parameters from extension.json but instance parameters are not handled/migrated there. What is the status with this?

I'd like to have some settings per field. With Cloudinary integration I'd like to have per field settings of

  • initial folder
  • max count of assets or multiselect bool flag - currently it is always an array, for some fields it makes sense to link just one image and then the json don't need to be an array
  • asset type filter - e.g. image field vs video field

Request: apps/netlify - Change Language on the "Open preview" button

Please change the language on the button.
Use of the term preview is not really correct. The button goes to the site's URLs nothing more that I can tell. It doesn't use the Preview content API for example like might be set up using Contentful's built in preview features.

Which makes it very confusing to have 2 preview buttons in the sidebar. One being a real preview the other, a link to the site.

I suggest:

  • Open Site
  • View Deployed Site
  • View Site
  • Open Deployed Site

An option to hide the button altogether would also be an excellent change.

ecommerce-app-base does not work with create-contentful-app

Describe the bug
Installing the ecommerce library on top of create-contentful-app throws hooks error inside the AppConfig

To Reproduce
Steps to reproduce the behavior:

  1. A space with a content type of short text and short text list
  2. npx @contentful/create-contentful-app init my-first-app
  3. npx @contentful/create-contentful-app create-definition
  4. npm install @contentful/ecommerce-app-base --save
  5. Copy the example code provided (pasting here for reference)
import { Product, setup } from '@contentful/ecommerce-app-base';

setup({
  makeCTA: () => 'Select products',
  name: 'My SKU App',
  logo: 'https://example.com/logo.svg',
  color: '#d7f0fa',
  description: 'My example SKU App',
  parameterDefinitions: [
    {
      id: 'category',
      type: 'Symbol',
      name: 'Catehory',
      description: 'Product category of our shop',
      required: true,
    },
  ],
  validateParameters: () => null,
  fetchProductPreviews: async (skus) => {
    const responess = await Promise.all(
      skus.map((sku) => fetch(`https://example.com/products/${sku}`))
    );
    return responess.map<Product>((response) => response.json() as unknown as Product);
  },
  renderDialog: (sdk) => {
    const container = document.createElement('div');
    container.innerHTML = `<iframe src="https://example.com/products-search" />`;
    document.body.appendChild(container);
  },
  openDialog: async (sdk, currentValue, config) => {
    return await sdk.dialogs.openCurrentApp({
      parameters: { config, currentValue },
    });
  },
  isDisabled: () => false,
});
  1. Start the server npm start
  2. Go to app config screen

Expected behavior
App config should load properly

Actual behavior
There are errors in the console related to hooks and nothing loads on the screen

Screenshots
image
image
image

Desktop

  • OS: macOS Mojave
  • Browser Chrome
  • Version 88.0.4324.182
  • Node v12.19.0
  • npm 6.14.8
    Additional context

`experiment.key` is undefined error

Hello 👋

My company is exploring adding the Opimizely app to our Contentful space and while testing, I'm running into an issue where selecting an experiment does not populate the "Variations" section for the user to choose from.

Image 2020-07-30 at 4 22 41 PM

After doing a little digging, it seems like the Optimizely endpoint that is being used to get all the experiments doesn't return experiments with object key key; not sure if the REST api endpoint has been updated or not, but is it possible to fix this by not using that key value?

re:

experimentKey: experiment.key.toString()

Thank you!

Cloudinary thumbnails are broken when Strict Transformations are enabled

This is happening because the Cloudinary thumbnail URL is in wrong format
https://res.cloudinary.com/ID/image/upload/q_auto:good/w_150,h_100,c_fill/v1/path-to-asset

When strict transformations are enabled then this URL can never be exposed using named transformations due to following reasons

  1. Transformations have transformations sorted alphabetically, so while c_fill,h_100,w_150 works, w_150,h_100,c_fill won't.
  2. Transformation can't be named as q_auto:good/w_150,h_100,c_fill becuase / are not allowed.

The fix is the correct the order of transformations in thumbnail by sorting them alphabetically.

Cannot build backend app through parcel after upgrading f36 components to version 4

Describe the bug

I have created an app using default-values-backend and decided to upgrade f36 packages as it is using an older version. once I run start it ends unexpectedly with an error.

To Reproduce

  • npx create-contentful-app --example default-values-backend
  • Configure a sample app from your account and provide public key.
  • npm install @contentful/f36-components @contentful/browserslist-config
  • Replace imports in public/config.js with @contentful/f36-components and replace some elements like TextField to TextInput
  • npm run start

Expected behavior

It builds the frontend and runs the server.

Screenshots

> [email protected] buildFrontend
> parcel build public/index.html

🚨  .../backend-app/node_modules/@contentful/f36-button/dist/esm/index.js: Unexpected token: operator (?)
    at Z.get (.../backend-app/node_modules/terser/dist/bundle.min.js:1:525)
    at Object.errorToJson (.../backend-app/node_modules/@parcel/utils/src/errorUtils.js:9:20)
    at Pipeline.process (.../backend-app/node_modules/parcel-bundler/src/Pipeline.js:29:26)
    at async Object.run (.../backend-app/node_modules/parcel-bundler/src/worker.js:15:12)
    at async Bundler.loadAsset (.../backend-app/node_modules/parcel-bundler/src/Bundler.js:577:19)
    at async .../backend-app/node_modules/parcel-bundler/src/Bundler.js:610:13
    at async Promise.all (index 7)
    at async Bundler.loadAsset (.../backend-app/node_modules/parcel-bundler/src/Bundler.js:599:21)
    at async .../backend-app/node_modules/parcel-bundler/src/Bundler.js:610:13
    at async Promise.all (index 4)

Process finished with exit code 1

Desktop (please complete the following information):

  • OS: macOS @ 12.5.1
  • Browser: Chrome @ 105.0.5195.102

Additional context

Interestingly when I have added another script that runs parcel watch public/index.html and ran the server separately using ts-node with a few changes on the code, this have rendered the configuration page without any errors.

Request: Netlify branch deploys

We are using a branch deploy in Netlify to deploy our site to a preview subdomain, where the only difference from prod is that the preview subdomain uses the Contentful preview API, rather than the CDN.

Ideally, we would like to be able to use the Contentful Netlify app to point content editors to the preview subdomain rather than the production domain (where content will only exist when published).

There are a few changes that would significantly improve the usefulness of this app for us, if the app could be specific to a branch deploy on a Contentful site:

  • The "Deploy site" button would build that branch deploy and not build the production deploy
  • Clicking "Open preview" would open up that branch deploy, if a subdomain deploy exists for that branch
  • The "building status" view and the "Last built n minutes go..." text would be specific to the branch deploy

Dependabot couldn't find a Dockerfile for this project

Dependabot couldn't find a Dockerfile for this project.

Dependabot requires a Dockerfile to evaluate your project's current Docker dependencies. It had expected to find one at the path: /.circleci/Dockerfile.

If this isn't a Docker project, or if it is a library, you may wish to disable updates for it in the .dependabot/config.yml file in this repo.

View the update logs.

Image focal point app: SVGs

Describe the bug
When trying to select the focal point on SVGs, the image doesn't display and it's impossible to select a focal point.

This is what I see (click to expand) image

As you can see, the image is in the markup but has no width/height.

To Reproduce
Steps to reproduce the behaviour:

  1. Upload an SVG and try to select a focal point

Expected behavior
I'd expect the image to display/preview so I can select a focal point.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: All (Mac OSX and Ubuntu linux)
  • Browser: Chrome
  • Version: Chrome 107.0.5304.121

Additional context
Through the Inspector I did add width: 100% to the <img> and that at least let me display the image -- and whilst I could click to set a focal point, the circle cursor/indicator wasn't draggable

Adding width/height via the inspector (click to expand) image
Here's the SVG in question
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 3879.22 343">
  <polygon points="3879.22 343 1879.2 343 1879.2 213.63 1749.86 213.63 1697.21 343 0 343 0 334.78 1691.68 334.78 1744.33 205.42 1887.41 205.42 1887.41 334.78 3879.22 334.78 3879.22 343" style="fill: #ff91d7;"/>
  <path d="M1967.26,82.6l31.16,17.68,28.47-15.54s1.35,3.33,3.25,4.44c1.9,1.11,4.68,.95,4.68,.95,0,0,3.73-.47,7.22-3.09,3.49-2.62,5.55-4.84,5.55-4.84l2.22-4.05,.48-2.46,6.98,3.96-15.62,21.57s-3.42-2.34-6.3-2.76c-2.88-.42-9.44-.37-17.36,6.08-7.92,6.45-15.63,15.16-15.63,15.16l-11.38,9.18-6.92,2.78-8.65,.11-10.44-5.61-4.35-4.62-2.62-4.93-1.26-7.97,1.05-7.13,3.51-8.81,5.97-10.1Z" style="fill: #322744;"/>
  <path d="M2167.61,293.88c-.2-4.93-3.12-12.37-3.12-12.37l-8.52-16.14-30.14-55.79-13.75-25.51s-8.87-16.34-11.25-20.51c-2.37-4.16-7.77-10.99-16.04-15.28-8.28-4.29-19.44-3.69-19.44-3.69l-29.59,.26s-3.14,5.18-8.15,9.38c-5.01,4.2-14.31,7.13-18.85,7.81-4.54,.68-9.42,.34-9.42,.34l.72,4.03,.42,11.8s-4.24,4.16-7.13,6.03c-2.89,1.87-9.17,3.31-15.2,3.82-6.03,.51-11.04-1.11-15.62-2.33-4.58-1.23-9.17-5.73-9.17-5.73l.68-3.61s1.4-11.33,1.49-16.34c.08-5.01-2.63-8.96-2.63-8.96l-4.67-6.75-24.9,.19s-20.51-.1-22.83,.1c-2.32,.19-7.75,.92-12.95,3.89-5.19,2.96-9.78,8.03-11.93,11.89-2.15,3.85-4.38,8.93-5.19,14.04-.81,5.11-.53,10.79,.65,17.25,1.17,6.45,5.03,14.89,5.89,16.96,.85,2.07,9.53,17.33,9.53,17.33l14.12,23.94,16.03,27.39s3.73,5.47,5.87,7.84c2.14,2.37,4.82,3.44,8.15,5.01,3.33,1.57,13.88,1.45,19.12,1.22,5.24-.23,21.85-2.57,21.85-2.57,0,0,1.83,1.45,4.9,5.93,3.06,4.48,3.83,11.32,4.06,15.61,.23,4.28-1.38,10.14-1.84,11.9-.46,1.76-3.33,6.96-4.32,8.46-1,1.49-3.45,3.9-3.45,3.9l6.52,.08,34.06-.12,38.82-.12,30.73-.12s45.11-.04,52.03-.52c6.92-.48,15.89-4.36,21.49-8.85,5.6-4.48,8.8-10.05,10.84-14.81,2.04-4.76,2.33-11.36,2.13-16.28Zm-89.22-16.98c-2.95,.13-13.24,.5-13.24,.5l.02-47.19,28.05,46.53s-8.98-.09-14.82,.16Z" style="fill: #322744;"/>
  <path d="M1991.35,41.54c-8.24-5.2-17.86-13.24-19.35-23.5-1.6-11.06,8.41-20.54,19.26-16.55,6.09,2.24,10.35,7.85,12.99,13.77,3.68,8.23,4.85,17.33,7.53,25.94,2.68,8.61,5.03,14.98,13.99,20.24" style="fill: #322744;"/>
  <path d="M2033.46,90.9c-3.58,0-5.52-2.96-7.06-5.73-.15-.27-.05-.61,.22-.76,.27-.15,.61-.05,.76,.22,1.45,2.61,3.11,5.16,6.09,5.16h.04c5.81-.04,15.51-7.36,16.21-13.64,.28-2.52-.73-5-2.56-6.32-1.93-1.39-4.55-1.38-7.57,.02-.28,.13-.61,0-.74-.27-.13-.28,0-.61,.27-.74,4.31-2,7.1-1.06,8.69,.08,2.16,1.55,3.34,4.43,3.02,7.35-.76,6.88-10.97,14.59-17.31,14.64h-.04Z" style="fill: #322744;"/>
  <path d="M2000.49,179.45c-.3,0-.55-.24-.56-.54-.06-1.7-.14-3.16-.22-4.49-.07-1.22-.13-2.33-.16-3.39-.14-4.39-.32-6.24-.67-8.71-.04-.31,.17-.59,.47-.63,.33-.03,.59,.17,.63,.47,.36,2.52,.54,4.39,.68,8.83,.04,1.05,.09,2.15,.16,3.36,.07,1.33,.15,2.8,.22,4.51,.01,.31-.23,.57-.54,.58h-.02Z" style="fill: #322744;"/>
  <path d="M1999.44,162.81c-.28,0-.53-.22-.55-.51-.86-9.02-3.96-13.82-7.18-17.68-5.49-6.56-12.26-10.18-22.76-15.35-7.95-3.92-12.2-10.32-12.63-19.02-.45-9.05,4-17.47,8.21-24.66l25.75-43.95c.16-.27,.5-.35,.76-.2,.27,.16,.36,.5,.2,.76l-25.75,43.95c-4.13,7.04-8.5,15.29-8.06,24.04,.41,8.27,4.45,14.35,12.01,18.07,10.63,5.24,17.49,8.91,23.12,15.64,4.56,5.46,6.72,10.76,7.43,18.29,.03,.31-.19,.58-.5,.61-.02,0-.04,0-.05,0Z" style="fill: #322744;"/>
  <path d="M2035.51,145.26c-.2,0-.39-.11-.49-.29-7.01-12.94-6.27-20.4-2.44-29.63,3.26-7.86,9.57-15.98,15.13-23.14,1.13-1.46,2.24-2.88,3.28-4.26,13.94-18.37,16.62-34.6,8.19-49.64-4.28-7.62-10.78-13.57-18.3-16.76-10.39-4.4-22.88-3.7-33.44,1.87-.26,.14-.61,.04-.75-.23-.15-.27-.04-.61,.23-.75,10.85-5.73,23.7-6.45,34.39-1.91,7.75,3.28,14.44,9.41,18.84,17.24,8.55,15.25,5.77,32.36-8.27,50.86-1.04,1.37-2.15,2.8-3.29,4.26-5.53,7.11-11.79,15.17-14.98,22.89-3.7,8.92-4.41,16.12,2.39,28.67,.15,.27,.05,.61-.22,.76-.08,.05-.18,.07-.27,.07Z" style="fill: #322744;"/>
  <path d="M1998.57,100.98c-.09,0-.19-.02-.28-.07l-31.32-17.87c-.27-.15-.36-.49-.21-.76,.15-.27,.5-.36,.76-.21l31.05,17.71,28.04-15.38c.27-.14,.61-.05,.76,.22,.15,.27,.05,.61-.22,.76l-28.32,15.53c-.08,.05-.18,.07-.27,.07Z" style="fill: #322744;"/>
  <path d="M1953.43,180.55s-.06,0-.09,0c-.31-.05-.51-.34-.47-.64,1.83-11.55,2.44-15.82,1.94-21.21-.45-4.86-1.95-6.92-4.21-10.05-.4-.55-.81-1.12-1.24-1.74-.39-.55-1.33-1.85-2.58-3.57-4.18-5.74-11.95-16.43-13.47-19.45-1.89-3.76-3.81-9.41-2.23-14.96,1.8-6.3,7.32-10.45,13.31-14.48l13.18-8.88c1.13-.76,2.54-1.72,4.17-1.8,1.49-.06,2.26,.49,3.1,1.09l.32,.23c.25,.18,.32,.52,.14,.78-.18,.26-.53,.31-.78,.14l-.33-.23c-.8-.57-1.3-.94-2.4-.89-1.32,.06-2.53,.88-3.6,1.61l-13.18,8.88c-5.81,3.91-11.16,7.92-12.85,13.86-1.48,5.21,.35,10.57,2.15,14.16,1.48,2.94,9.21,13.57,13.37,19.29,1.26,1.73,2.21,3.03,2.59,3.59,.43,.62,.84,1.19,1.23,1.73,2.28,3.16,3.93,5.44,4.41,10.6,.51,5.53-.1,9.84-1.95,21.49-.04,.28-.28,.47-.55,.47Z" style="fill: #322744;"/>
  <path d="M1947.84,221.28c-.2,0-.39-.1-.49-.29-5.55-10.12-9.86-18.02-14.14-25.88-4.43-8.12-8.83-16.19-14.56-26.64-.15-.27-.05-.61,.22-.76,.27-.15,.61-.05,.76,.22,5.73,10.45,10.14,18.52,14.56,26.64,4.29,7.86,8.59,15.76,14.14,25.88,.15,.27,.05,.61-.22,.76-.08,.05-.18,.07-.27,.07Z" style="fill: #322744;"/>
  <path d="M1980.03,132.58c-5.66,0-10.62-2.63-15.23-5.82-.25-.18-.32-.52-.14-.78,.17-.25,.52-.31,.78-.14,9.16,6.33,17.58,8.72,28.91-.16,6.09-4.77,10.09-8.92,13.62-12.58,3.34-3.46,6.22-6.45,10.06-9.17,8.62-6.09,14.91-8.49,23.45-3.7,.27,.15,.37,.49,.21,.76-.15,.27-.49,.36-.76,.21-8.07-4.53-13.82-2.32-22.26,3.64-3.75,2.65-6.6,5.61-9.9,9.03-3.55,3.69-7.58,7.86-13.73,12.69-5.56,4.36-10.51,6.02-15,6.02Z" style="fill: #322744;"/>
  <path d="M2039.32,69.83c-.09,0-.19-.02-.28-.08l-48.2-28c-.27-.16-.36-.5-.2-.76,.15-.27,.49-.36,.76-.2l48.2,28c.27,.16,.36,.5,.2,.76-.1,.18-.29,.28-.48,.28Z" style="fill: #322744;"/>
  <path d="M2057.01,80.1c-.09,0-.19-.02-.28-.08l-6.68-3.88c-.27-.16-.36-.5-.2-.76,.15-.27,.49-.36,.76-.2l6.68,3.88c.27,.16,.36,.5,.2,.76-.1,.18-.29,.28-.48,.28Z" style="fill: #322744;"/>
  <path d="M2025.76,62c-.1,0-.19-.03-.28-.08-8.93-5.25-11.44-11.54-14.24-20.55-1-3.23-1.81-6.58-2.59-9.82-1.29-5.38-2.63-10.95-4.91-16.06-2.15-4.81-6.1-11.05-12.68-13.48-4.65-1.71-9.48-.94-13.24,2.1-4.02,3.26-6.04,8.56-5.27,13.84,1.17,8.08,7.59,15.85,19.09,23.11,.26,.17,.34,.51,.18,.77-.17,.26-.51,.34-.77,.17-11.79-7.44-18.38-15.48-19.6-23.89-.82-5.67,1.35-11.36,5.67-14.87,4.07-3.3,9.3-4.13,14.33-2.28,6.95,2.56,11.07,9.06,13.31,14.07,2.32,5.2,3.67,10.82,4.98,16.25,.77,3.22,1.57,6.55,2.57,9.75,2.81,9.02,5.13,14.87,13.74,19.92,.27,.16,.36,.5,.2,.76-.1,.18-.29,.28-.48,.28Z" style="fill: #322744;"/>
  <path d="M1976.1,188.63c-9.48,0-18.33-3.14-23.1-8.2-.21-.22-.2-.58,.02-.79,.22-.21,.58-.21,.79,.02,4.56,4.84,13.1,7.85,22.29,7.85,10.36,0,19.64-3.74,23.64-9.53,.18-.25,.53-.31,.78-.14,.25,.18,.32,.52,.14,.78-4.21,6.08-13.85,10-24.56,10Z" style="fill: #322744;"/>
  <path d="M2001.58,163.12c-.73,0-1.21-.02-1.92-.05-.31-.01-.58-.28-.57-.58s.24-.57,.54-.54c.76,.03,1.23,.05,1.95,.05,14.95,0,28.56-7.19,33.86-17.9,.14-.28,.47-.39,.75-.25,.28,.14,.39,.47,.25,.75-5.49,11.08-19.5,18.52-34.86,18.52Z" style="fill: #322744;"/>
  <path d="M1874.63,251.18c-.3,0-.55-.24-.56-.54-.41-12.04-3.08-16.46-8.92-21.83-5.71-5.25-14.43-7.85-22.15-9.87-2.44-.64-4.94-1.22-7.37-1.78-5.22-1.2-10.61-2.45-15.71-4.39-10.61-4.06-17.81-8.64-23.24-20.05-6.77-14.24-5.94-28.94-4.97-45.96l.16-2.81v-1.34c0-.16,.07-.32,.2-.42l31.57-26.85c.21-.18,.51-.18,.72,0l31.57,26.85c.13,.11,.2,.26,.2,.42v45.39c0,.31-.25,.56-.56,.56h-46.27c-.31,0-.56-.25-.56-.56s.25-.56,.56-.56h45.71v-44.57l-31.02-26.37-31.01,26.37v1.12l-.16,2.85c-.96,16.87-1.79,31.43,4.86,45.41,5.27,11.08,12.29,15.53,22.63,19.49,5.03,1.92,10.38,3.16,15.56,4.35,2.43,.56,4.95,1.14,7.4,1.79,7.85,2.06,16.72,4.71,22.62,10.13,5.95,5.47,8.86,10.25,9.28,22.61,.01,.31-.23,.57-.54,.58h-.02Z" style="fill: #322744;"/>
  <path d="M1928.29,335.33c-16.32,0-30.35-3.04-37.4-5.65-4.04-1.5-9.24-3.63-13.61-6.89-8-5.96-10.14-14.21-10.89-24.76-.18-2.56,.48-5.98,2.36-7.43,2.32-1.8,5.56-1.18,8.16-.7l.82,.15c4.93,.88,9.01,1.58,12.82,2.21,1.8,.29,5.92,1.07,10.29,1.89,5.1,.96,10.77,2.03,14.03,2.57-2.19-2.35-5.14-5.84-8.42-11.06-3.12-4.96-4.38-8.83-3.74-11.49,.32-1.32,1.09-2.36,2.29-3.08,5.22-3.13,10.86,4.49,13.89,8.59,.37,.5,.69,.93,.97,1.29,.19,.24,.15,.59-.1,.78-.24,.19-.59,.15-.78-.1-.28-.36-.61-.81-.98-1.31-2.82-3.81-8.08-10.9-12.42-8.29-.95,.57-1.53,1.35-1.78,2.39-.56,2.36,.65,5.93,3.6,10.63,3.84,6.11,7.22,9.82,9.42,12.08,.17,.17,.21,.43,.1,.64-.11,.21-.34,.34-.58,.3-2.65-.38-9.58-1.69-15.71-2.84-4.36-.82-8.47-1.59-10.26-1.89-3.82-.63-7.89-1.33-12.83-2.21l-.83-.15c-2.5-.47-5.34-1.01-7.27,.48-1.48,1.15-2.09,4.12-1.93,6.47,.72,10.24,2.78,18.24,10.44,23.94,4.25,3.17,9.36,5.26,13.33,6.74,6.97,2.58,20.84,5.59,37.01,5.59l197.01-.45c16.52,0,30.06-6.8,37.13-18.66,6.48-10.86,6.52-24.43,.1-36.32l-61.09-113.21c-7.62-13.83-19-20.55-34.8-20.55h-31.18c-.31,0-.56-.25-.56-.56s.25-.56,.56-.56h31.18c16.24,0,27.94,6.91,35.78,21.13l61.1,113.21c6.6,12.23,6.55,26.22-.13,37.42-7.28,12.2-21.17,19.2-38.09,19.2l-197,.45Z" style="fill: #322744;"/>
  <path d="M2065.35,277.97c-.19,0-.37-.1-.47-.25-.17-.1-.27-.28-.27-.48v-47.02c0-.25,.17-.47,.41-.54,.24-.06,.5,.04,.63,.25l28.05,46.49c.1,.17,.11,.39,0,.56-.1,.18-.29,.28-.49,.28-9.12,0-18.49,.24-27.84,.71h-.03Zm.38-45.75v44.61c8.9-.44,17.81-.67,26.5-.68l-26.5-43.93Z" style="fill: #322744;"/>
  <path d="M1943.46,292.16c-2.3,0-4.71-.08-7.27-.25-7.5-.51-13.7-4.59-18.41-12.11l-.25-.39c-5.52-9.22-10.45-17.58-15.22-25.67-4.81-8.15-9.78-16.58-15.34-25.87-5.33-8.91-10.85-18.11-14.25-28.17-3.95-11.7-4.4-22.52-1.29-31.31,7.3-22.1,25.48-24.48,32.96-24.48h43.65c.31,0,.56,.25,.56,.56s-.25,.56-.56,.56h-43.65c-7.23,0-24.82,2.31-31.9,23.73-3.02,8.56-2.57,19.14,1.3,30.6,3.36,9.94,8.84,19.1,14.15,27.95,5.56,9.28,10.53,17.72,15.34,25.87,4.77,8.09,9.7,16.45,15.21,25.65l.25,.39c4.51,7.2,10.41,11.1,17.53,11.59,10.85,.75,18.97-.31,27.57-1.43,1.94-.25,3.91-.51,5.94-.75,.6-.07,1.29-.17,2.06-.27,.31-.02,.59,.18,.63,.48s-.18,.58-.48,.63c-.77,.1-1.47,.19-2.07,.27-2.03,.24-4,.5-5.93,.75-6.63,.86-12.99,1.69-20.52,1.69Z" style="fill: #322744;"/>
  <path d="M1903.01,306.65s-.07,0-.11,0c-3.2-.62-31.42-6.25-35.8-12.37-.18-.25-.12-.6,.13-.78,.25-.18,.6-.12,.78,.13,2.93,4.1,19.74,8.95,35.1,11.93,.3,.06,.5,.35,.44,.65-.05,.27-.29,.45-.55,.45Z" style="fill: #322744;"/>
  <path d="M1900.52,315.56s-.1,0-.15-.02c-12.98-3.6-29.34-9.06-33.59-14.62-.19-.24-.14-.6,.1-.78,.24-.18,.59-.15,.78,.11,3.17,4.14,14.89,9.19,33,14.22,.3,.08,.47,.39,.39,.69-.07,.25-.29,.41-.54,.41Z" style="fill: #322744;"/>
  <path d="M1898.06,324.09c-.05,0-.11,0-.17-.02-4.81-1.49-21.09-6.81-28.87-12.96-.24-.19-.28-.54-.09-.78,.19-.24,.54-.28,.78-.09,5.15,4.07,15.8,8.84,28.51,12.77,.29,.09,.46,.4,.37,.7-.07,.24-.29,.39-.53,.39Z" style="fill: #322744;"/>
  <path d="M1875.43,335.89c-15.52,0-28.15-12.63-28.15-28.15v-45.12c0-.31,.25-.56,.56-.56h55.18c.31,0,.56,.25,.56,.56v32.08c0,.31-.25,.56-.56,.56s-.56-.25-.56-.56v-31.52h-54.06v44.57c0,14.9,12.13,27.03,27.03,27.03,5.96,0,11.62-1.9,16.36-5.51,.25-.19,.6-.14,.78,.11,.19,.25,.14,.6-.11,.78-4.94,3.75-10.83,5.73-17.03,5.73Z" style="fill: #322744;"/>
  <path d="M1833.13,303.3c-8.42,0-15.26-6.84-15.26-15.26s6.85-15.26,15.26-15.26,15.26,6.84,15.26,15.26-6.85,15.26-15.26,15.26Zm0-29.4c-7.8,0-14.14,6.35-14.14,14.14s6.34,14.14,14.14,14.14,14.14-6.35,14.14-14.14-6.34-14.14-14.14-14.14Z" style="fill: #322744;"/>
  <path d="M1970.65,335.1c-.17,0-.33-.07-.44-.21-.19-.24-.15-.59,.09-.78,6.01-4.74,9.74-13.71,9.74-23.42,0-8.63-2.92-15.95-8.44-21.18-.22-.21-.23-.57-.02-.79,.22-.22,.57-.23,.79-.02,5.75,5.45,8.79,13.06,8.79,22,0,10.04-3.89,19.35-10.16,24.3-.1,.08-.22,.12-.35,.12Z" style="fill: #322744;"/>
  <path d="M1952.87,124.98c-.17,0-.34-.08-.45-.23l-.57-.78c-2.29-3.14-4.66-6.4-5.64-10.35-.97-3.89-.49-8.34,1.35-12.52,2.03-4.62,4.17-8.4,7.18-13.38,.16-.27,.5-.35,.77-.19,.26,.16,.35,.5,.19,.77-2.99,4.94-5.11,8.69-7.12,13.25-1.74,3.96-2.2,8.15-1.29,11.8,.93,3.74,3.23,6.9,5.46,9.96l.57,.78c.18,.25,.12,.6-.12,.78-.1,.07-.21,.11-.33,.11Z" style="fill: #322744;"/>
  <path d="M1943.94,124.37c-.15,0-.31-.06-.42-.19-1.81-2.06-3.06-3.83-3.72-5.27-1.95-4.28-2.56-7.71-2.05-11.47,.52-3.85,2.36-7.76,5.78-12.29,.19-.25,.54-.3,.78-.11,.25,.19,.29,.54,.11,.78-3.3,4.37-5.07,8.11-5.57,11.77-.48,3.54,.1,6.78,1.96,10.85,.61,1.34,1.8,3.02,3.54,5,.2,.23,.18,.58-.05,.79-.11,.09-.24,.14-.37,.14Z" style="fill: #322744;"/>
  <path d="M2003.13,283.96c-.3,0-.54-.23-.56-.53-.03-.61-2.83-61.72-3.81-96.26-.09-3.21-.19-6.2-.29-8.91l-.05-1.3c-.01-.31,.23-.57,.54-.58,.3,.03,.57,.23,.58,.54l.05,1.3c.09,2.71,.2,5.71,.29,8.92,.98,34.53,3.79,95.63,3.81,96.24,.01,.31-.22,.57-.53,.58h-.02Z" style="fill: #322744;"/>
</svg>

ecommerce-app-base: Selected SKUs can't be saved if pager was used

Describe the bug
Was used ecommerce-app-base template, all needed functions were made and setup was performed using setup function from @contentful/ecommerce-app-base package. Also was used renderSkuPicker function with pagination, using this setup I'm not able to save selected products (SKUs) from any page except first. Maybe there is some issue with data related to selected products in state?

To Reproduce
Steps to reproduce the behavior:

  1. setup project using @contentful/ecommerce-app-base
  2. prepare callback functions for setup function from @contentful/ecommerce-app-base.
  3. use renderSkuPicker function from @contentful/ecommerce-app-base package and implement pagination with products result response
  4. Try to save any product from any page except first. You will not be able to see preview of saved SKU (Product)

Expected behavior
Save any Product from response from needed platform (Shopware, Magento, etc...) even using pagination inside renderSkuPicker function.

Bynder app Authentication issue

Describe the bug
There's an issue with the Contentful Bynder app. The correct Bynder environment is not persisted across Contentful environments in the same Contentful space. Looks like it’s not respecting the env configurations.

The issue occurs when logging into Bynder via the modal—by clicking on the “Select a file on Bynder” button—the user session is persisted across environments if a user changes Contentful environments. This results in the Bynder app potentially looking for assets in the Bynder production asset dam when in the Contentful development environment and vice-versa. I’ve logged a ticket with Bynder.

To Reproduce
Steps to reproduce the behavior:

  1. Contentful space A + env A: Go to the Bynder app config, add your production Bynder URL
  2. Contentful space A + env B: Go to the Bynder app config, add your development Bynder URL
  3. Contentful space A + env A: Open a content entry and scroll to the Bynder app field
  4. Contentful space A + env A: Click the "Select a file on Bynder" button
  5. Contentful space A + env A: Log into the production Bynder env
  6. Contentful space A + env A: See the assets from the production Bynder env
  7. Contentful space A + env B: Swap to Contentful env B (in the same space)
  8. Contentful space A + env B: Open a content entry and scroll to the Bynder app field
  9. Contentful space A + env B: Click the "Select a file on Bynder" button
  10. Contentful space A + env B: Notice the assets are still coming from the production Bynder app. Even though the app config should says it should come from the development Bynder env

Expected behavior
A user should be able to see the assets in the Bynder environment that corresponds to the Contentful environment.

Screenshots
Screen Shot 2022-08-23 at 11 23 27 am
Screen Shot 2022-08-23 at 11 23 09 am
Screen Shot 2022-08-23 at 10 48 45 am
Screen Shot 2022-08-23 at 10 49 47 am

Desktop (please complete the following information):

  • OS: macOS 12.15.1
  • Browser: Firefox
  • Version: 103.0.2 (64-bit)

Additional context
Add any other context about the problem here.

netlify app doesn't load

I had the app installed and it wasn't always showing up in the sidebar so I uninstalled. When trying to reinstall it, it won't load.

image

"add an image to the entry first" - windows chrome

image (3)
Currently getting the following error but only when using windows chrome

"add an image to the entry first"

checked other browsers using windows and osx and it seems fine. Seems like it's only windows chrome i am getting this.

The upload script missing from some of the example apps

Describe the bug

In custom-validation example (and possibly others) the upload script is missing.

Expected behavior

I'd expect the create-contentful-app to work as described in your documentation, regardless of the selected example.

GraphQL Playground auto-completion stopped working

Describe the bug
The auto-completion on the queries in the GraphQL Playground stopped working, I used to be able to see the possible values, now I can only see the entries __schema and __typename. Queries themselves are still working, only the auto-completion stopped working. The Schema and the Docs in the sidebar still show the valid and working query entries.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the GraphQL Playground App
  2. Click on query editor
  3. Press Shift+Space to open the auto-completion menu
  4. None of the possible queries from the schema are shown

Expected behavior
The auto-completion shows the possible values for the query

Screenshots

Desktop (please complete the following information):

  • OS: Fedora 36
  • Browser Chromium, Firefox and Edge

Screenshot from 2022-11-23 14-27-55

request : apps/shopify - add variant name in product select

Hello,

I've been testing the shopify app in contentful and I have noticed the products don't have a variant name displayed even tho' the graphQL query has it. Would be nice enough to fix this? Most shops have variants to products, and the product selector has the same product listed 2-3 times when in fact there are 2 to 3 different variants to that product. A regular user would find it difficult to select the correct product variant.

{
    nodes (ids: [${queryIds}]) {
      id,
      ...on ProductVariant {
        sku,
        image {
          src: originalSrc
        },
        title,
        product {
          id,
          title
        }
      }
    }
  }

Thank you!

Multiple fields in one app

Forgive my ignorance. We’re exploring using the app method for custom fields rather than the legacy extensions.

Using the bootstrap has been a great help to do what we need. It seems both the CRA and nextjs solutions (closest to our tech stack) both do very similar things. As CRA out of the box isn’t greqt with routes we considered nextjs but is it possible when defining an app in Contentful to use a subdirectory rather than the route?

I’m all for single purpose but think we have a use case where some logic isn’t worth duplicating. So hosting more fields in one app would be ace.

If this isn’t on the roadmap, no problem, if there’s an example, happy to poked in the right direction.

Thanks

Any possible to change the design (Add a design and functionality) ?

I'm using the package to show and publish the products.
Its working fine now.
I want a new feature like I want to add a dropdown in the dialogue box, In that dropdown I ll show some items,
When I select the item, I want to show the products based on the dropdown field, Is this possible?

Cloudinary addon is not pulling image metadata information

Describe the bug
Cloudinary image has structural, contextual and embedded metadata types and none of those aren't returned when using contentful Apis to get the entry. There is a metadata field returned which is always an empty array.
To Reproduce
Steps to reproduce the behavior:

  1. Create a content model with a Cloudinary field
  2. Create some entries and upload some Cloudinary images
  3. Add some metadata to the above Cloudinary images, eg add description field in contextual metadata
  4. Get the entries for the content model and check metadata field for the Cloudinary image field in JSON output

Expected behavior
The metadata should return contextual metadata. Ideally this field should be an object like this

{
  "structural": {
    "product_engagement": "value"
  },
  "contextual": {
    "title": "title",
    "description": "description which can be used as an alt tag"
  },
  "embedded": {
    "Colorspace": "rgb",
    "DPI": "96"
  }
}

Screenshots
image
image

Desktop (please complete the following information):

  • OS: macOS
  • Browser: MS Edge
  • Version: 86.0.622.48

Cloudinary settings

  • Strict transformations enabled
  • Usage of tags/context/metadata in transformation URLs: enabled

[SHOPIFY] This app uses the (unsupported) 2019-10 version of the graphql api

Describe the bug
The Shopify contentful app is using an unsupported api version. There is no option to select another version as it is hardcoded in the app. For now this will keep on working. But in 2023-01 the base64 hased object id's are no longer supported: https://shopify.dev/api/examples/object-ids. This Shopify app will no longer work with the latest Shopify version in 2023-01. Would it be possible to select what version of the api you want to use in the shopify app configuration?

commercetools - can't save multiple values

I'm trying to save multiple (Array fields) entries to contentful but request is failing. Seems like only Symbol field type is supported according to this code.

function isCompatibleField(field: Field): boolean {

Below is the failed response:

`{
  "sys": {
    "type": "Error",
    "id": "InvalidEntry"
  },
  "message": "Validation error",
  "details": {
    "errors": [
      {
        "name": "type",
        "value": [
          "FG018004",
          "FG035001",
          "FG005012"
        ],
        "type": "Symbol",
        "details": "The type of \"value\" is incorrect, expected type: Symbol",
        "path": [
          "fields",
          "FlBFCOln67hlX5Zk",
          "en-US",
          0
        ]
      }
    ]
  },
  "requestId": "5146b11619ecc4b2ba5fdb974b5397cc"
}

[CommerceTools] No search feature for selecting categories

As a content editor, when opening the product selector, products can be searched using a search input field within the product selector. However, for categories there is no search feature. As you can imagine, selecting the right category when there are many to choose from is not very practical (see image).

Would it be possible to also add the search feature to the category selector widget?

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.