Skip to content

Commit

Permalink
fix standalone inline-gallery - expose thumbnail/pagination elements (#…
Browse files Browse the repository at this point in the history
…36670)

* fix standalone inline-gallery - expose thumbnail/pagination elements

* fix dep-check allowlist after refactor

* fix fixture and readme
  • Loading branch information
kvchari authored Nov 4, 2021
1 parent d287103 commit 48fbf3c
Show file tree
Hide file tree
Showing 11 changed files with 183 additions and 86 deletions.
7 changes: 4 additions & 3 deletions build-system/test-configs/dep-check-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,11 +191,12 @@ exports.rules = [
'extensions/amp-inline-gallery/0.1/amp-inline-gallery.js->extensions/amp-base-carousel/0.1/carousel-events.js',
'extensions/amp-inline-gallery/0.1/amp-inline-gallery-thumbnails.js->extensions/amp-base-carousel/0.1/carousel-events.js',
'extensions/amp-inline-gallery/1.0/base-element.js->extensions/amp-base-carousel/1.0/carousel-props.js',
'extensions/amp-inline-gallery/1.0/amp-inline-gallery-pagination.js->extensions/amp-base-carousel/1.0/carousel-props.js',
'extensions/amp-inline-gallery/1.0/pagination-base-element.js->extensions/amp-base-carousel/1.0/carousel-props.js',

'extensions/amp-inline-gallery/1.0/component.js->extensions/amp-base-carousel/1.0/carousel-context.js',
'extensions/amp-inline-gallery/1.0/pagination.js->extensions/amp-base-carousel/1.0/carousel-context.js',
'extensions/amp-inline-gallery/1.0/amp-inline-gallery-thumbnails.js->extensions/amp-base-carousel/1.0/component.jss.js',
'extensions/amp-inline-gallery/1.0/amp-inline-gallery-thumbnails.js->extensions/amp-base-carousel/1.0/carousel-props.js',
'extensions/amp-inline-gallery/1.0/thumbnails-base-element.js->extensions/amp-base-carousel/1.0/component.jss.js',
'extensions/amp-inline-gallery/1.0/thumbnails-base-element.js->extensions/amp-base-carousel/1.0/carousel-props.js',
'extensions/amp-inline-gallery/1.0/thumbnails.js->extensions/amp-base-carousel/1.0/component.js',
'extensions/amp-inline-gallery/1.0/thumbnails.js->extensions/amp-base-carousel/1.0/carousel-context.js',
'extensions/amp-stream-gallery/0.1/amp-stream-gallery.js->extensions/amp-base-carousel/0.1/action-source.js',
Expand Down
36 changes: 17 additions & 19 deletions extensions/amp-inline-gallery/1.0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,28 +30,26 @@ The example below contains a `bento-inline-gallery` consisting of three slides w
```html
<head>
<script src="https://cdn.ampproject.org/bento.js"></script>
<script
async
src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.js"
></script>
<link
rel="stylesheet"
type="text/css"
href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css"
/>
</head>

<script async src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.js"></script>
<link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css">

<script async src="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.js"></script>
<link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.css">
<body>
<bento-inline-gallery id="inline-gallery">
<bento-inline-gallery-thumbnails
aspect-ratio="1.5"
loop
></bento-inline-gallery-thumbnails>
<bento-base-carousel snap-align="center" visible-count="1.2" loop>
<img src="server.com/static/inline-examples/images/image1.jpg" />
<img src="server.com/static/inline-examples/images/image2.jpg" />
<img src="server.com/static/inline-examples/images/image3.jpg" />
<bento-inline-gallery-thumbnails style="height: 100px;" loop></bento-inline-gallery-thumbnails>

<bento-base-carousel style="height: 200px;" snap-align="center" visible-count="3" loop>
<img src="img1.jpeg" data-thumbnail-src="img1-thumbnail.jpeg" />
<img src="img2.jpeg" data-thumbnail-src="img2-thumbnail.jpeg" />
<img src="img3.jpeg" data-thumbnail-src="img3-thumbnail.jpeg" />
<img src="img4.jpeg" data-thumbnail-src="img4-thumbnail.jpeg" />
<img src="img5.jpeg" data-thumbnail-src="img5-thumbnail.jpeg" />
<img src="img6.jpeg" data-thumbnail-src="img6-thumbnail.jpeg" />
</bento-base-carousel>
<bento-inline-gallery-pagination inset></bento-inline-gallery-pagination>

<bento-inline-gallery-pagination style="height: 20px;"></bento-inline-gallery-pagination>
</bento-inline-gallery>
</body>
```
Expand Down
28 changes: 2 additions & 26 deletions extensions/amp-inline-gallery/1.0/amp-inline-gallery-pagination.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
import {CSS} from './pagination.jss';
import {CarouselContextProp} from '../../amp-base-carousel/1.0/carousel-props';
import {BentoInlineGalleryPagination} from './pagination';
import {PreactBaseElement} from '#preact/base-element';
import {isExperimentOn} from '#experiments';
import {userAssert} from '#utils/log';
import {PaginationBaseElement} from './pagination-base-element';

/** @const {string} */
export const TAG = 'amp-inline-gallery-pagination';

/** @extends {PreactBaseElement<BaseCarouselDef.CarouselApi>} */
export class AmpInlineGalleryPagination extends PreactBaseElement {
export class AmpInlineGalleryPagination extends PaginationBaseElement {
/** @override */
isLayoutSupported(layout) {
userAssert(
Expand All @@ -22,23 +18,3 @@ export class AmpInlineGalleryPagination extends PreactBaseElement {
return super.isLayoutSupported(layout);
}
}

/** @override */
AmpInlineGalleryPagination['Component'] = BentoInlineGalleryPagination;

/** @override */
AmpInlineGalleryPagination['props'] = {
'inset': {attr: 'inset', type: 'boolean', media: true},
};

/** @override */
AmpInlineGalleryPagination['layoutSizeDefined'] = true;

/** @override */
AmpInlineGalleryPagination['shadowCss'] = CSS;

/** @override */
AmpInlineGalleryPagination['usesShadowDom'] = true;

/** @override */
AmpInlineGalleryPagination['useContexts'] = [CarouselContextProp];
31 changes: 2 additions & 29 deletions extensions/amp-inline-gallery/1.0/amp-inline-gallery-thumbnails.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
import {CSS as CAROUSEL_CSS} from '../../amp-base-carousel/1.0/component.jss';
import {CarouselContextProp} from '../../amp-base-carousel/1.0/carousel-props';
import {PreactBaseElement} from '#preact/base-element';
import {CSS as THUMBNAIL_CSS} from './thumbnails.jss';
import {BentoInlineGalleryThumbnails} from './thumbnails';
import {isExperimentOn} from '#experiments';
import {userAssert} from '#utils/log';
import {ThumbnailsBaseElement} from './thumbnails-base-element';

/** @const {string} */
export const TAG = 'amp-inline-gallery-thumbnails';

/** @extends {PreactBaseElement<BaseCarouselDef.CarouselApi>} */
export class AmpInlineGalleryThumbnails extends PreactBaseElement {
export class AmpInlineGalleryThumbnails extends ThumbnailsBaseElement {
/** @override */
isLayoutSupported(layout) {
userAssert(
Expand All @@ -23,25 +18,3 @@ export class AmpInlineGalleryThumbnails extends PreactBaseElement {
return super.isLayoutSupported(layout);
}
}

/** @override */
AmpInlineGalleryThumbnails['Component'] = BentoInlineGalleryThumbnails;

/** @override */
AmpInlineGalleryThumbnails['props'] = {
'aspectRatio': {attr: 'aspect-ratio', type: 'number', media: true},
'children': {passthroughNonEmpty: true},
'loop': {attr: 'loop', type: 'boolean', media: true},
};

/** @override */
AmpInlineGalleryThumbnails['layoutSizeDefined'] = true;

/** @override */
AmpInlineGalleryThumbnails['usesShadowDom'] = true;

/** @override */
AmpInlineGalleryThumbnails['shadowCss'] = CAROUSEL_CSS + THUMBNAIL_CSS;

/** @override */
AmpInlineGalleryThumbnails['useContexts'] = [CarouselContextProp];
2 changes: 2 additions & 0 deletions extensions/amp-inline-gallery/1.0/base-element.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {dict} from '#core/types/object';
import {setProp} from '#core/context';
import {useContext, useLayoutEffect} from '#preact';

export const TAG = 'bento-inline-gallery';

export class BaseElement extends PreactBaseElement {
/** @override */
init() {
Expand Down
2 changes: 2 additions & 0 deletions extensions/amp-inline-gallery/1.0/bento-inline-gallery.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import {defineElement} from './web-component';
defineElement();
29 changes: 29 additions & 0 deletions extensions/amp-inline-gallery/1.0/pagination-base-element.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import {CSS} from './pagination.jss';
import {CarouselContextProp} from '../../amp-base-carousel/1.0/carousel-props';
import {BentoInlineGalleryPagination} from './pagination';
import {PreactBaseElement} from '#preact/base-element';

export const TAG = 'bento-inline-gallery-pagination';

/** @extends {PreactBaseElement<BaseCarouselDef.CarouselApi>} */
export class PaginationBaseElement extends PreactBaseElement {}

/** @override */
PaginationBaseElement['Component'] = BentoInlineGalleryPagination;

/** @override */
PaginationBaseElement['props'] = {
'inset': {attr: 'inset', type: 'boolean', media: true},
};

/** @override */
PaginationBaseElement['layoutSizeDefined'] = true;

/** @override */
PaginationBaseElement['shadowCss'] = CSS;

/** @override */
PaginationBaseElement['usesShadowDom'] = true;

/** @override */
PaginationBaseElement['useContexts'] = [CarouselContextProp];
32 changes: 32 additions & 0 deletions extensions/amp-inline-gallery/1.0/thumbnails-base-element.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import {CSS as CAROUSEL_CSS} from '../../amp-base-carousel/1.0/component.jss';
import {CarouselContextProp} from '../../amp-base-carousel/1.0/carousel-props';
import {PreactBaseElement} from '#preact/base-element';
import {CSS as THUMBNAIL_CSS} from './thumbnails.jss';
import {BentoInlineGalleryThumbnails} from './thumbnails';

export const TAG = 'bento-inline-gallery-thumbnails';

/** @extends {PreactBaseElement<BaseCarouselDef.CarouselApi>} */
export class ThumbnailsBaseElement extends PreactBaseElement {}

/** @override */
ThumbnailsBaseElement['Component'] = BentoInlineGalleryThumbnails;

/** @override */
ThumbnailsBaseElement['props'] = {
'aspectRatio': {attr: 'aspect-ratio', type: 'number', media: true},
'children': {passthroughNonEmpty: true},
'loop': {attr: 'loop', type: 'boolean', media: true},
};

/** @override */
ThumbnailsBaseElement['layoutSizeDefined'] = true;

/** @override */
ThumbnailsBaseElement['usesShadowDom'] = true;

/** @override */
ThumbnailsBaseElement['shadowCss'] = CAROUSEL_CSS + THUMBNAIL_CSS;

/** @override */
ThumbnailsBaseElement['useContexts'] = [CarouselContextProp];
38 changes: 38 additions & 0 deletions extensions/amp-inline-gallery/1.0/web-component.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import {BaseElement, TAG} from './base-element';
import {
TAG as THUMBNAIL_TAG,
ThumbnailsBaseElement,
} from './thumbnails-base-element';
import {
TAG as PAGINATION_TAG,
PaginationBaseElement,
} from './pagination-base-element';

/**
* Registers `<bento-inline-gallery> component to CustomElements registry
*/
export function defineElement() {
customElements.define(TAG, BaseElement.CustomElement(BaseElement));
defineThumbnailsElement();
definePaginationElement();
}

/**
* Registers `<bento-inline-gallery-pagination> component to CustomElements registry
*/
export function definePaginationElement() {
customElements.define(
PAGINATION_TAG,
PaginationBaseElement.CustomElement(PaginationBaseElement)
);
}

/**
* Registers `<bento-inline-gallery-thumbnails> component to CustomElements registry
*/
export function defineThumbnailsElement() {
customElements.define(
THUMBNAIL_TAG,
ThumbnailsBaseElement.CustomElement(ThumbnailsBaseElement)
);
}
19 changes: 10 additions & 9 deletions extensions/amp-selector/1.0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,16 @@ defineBentoSelector();
src="https://cdn.ampproject.org/v0/bento-selector-1.0.js"
></script>
</head>

<bento-selector class="sample-selector">
<ul>
<li option="1">Option 1</li>
<li option="2">Option 2</li>
<li option="3">Option 3</li>
<li option="4">Option 4</li>
</ul>
</bento-selector>
<body>
<bento-selector class="sample-selector">
<ul>
<li option="1">Option 1</li>
<li option="2">Option 2</li>
<li option="3">Option 3</li>
<li option="4">Option 4</li>
</ul>
</bento-selector>
</body>
```

#### Usage notes
Expand Down
45 changes: 45 additions & 0 deletions test/fixtures/e2e/bento/bento-inline-gallery.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.ampproject.org/bento.js"></script>

<script async src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.js"></script>
<link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css">

<script async src="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.js"></script>
<link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.css">
<body>
<bento-inline-gallery id="inline-gallery">
<bento-inline-gallery-thumbnails style="height: 100px;" loop></bento-inline-gallery-thumbnails>

<bento-base-carousel style="height: 200px;" snap-align="center" visible-count="3" loop>
<img
src="https://images.unsplash.com/photo-1583511655857-d19b40a7a54e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1498&q=80"
data-thumbnail-src="https://images.unsplash.com/photo-1583511655857-d19b40a7a54e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=120&q=80"
/>
<img
src="https://images.unsplash.com/photo-1583511666407-5f06533f2113?ixlib=rb-1.2.1&auto=format&fit=crop&w=1498&q=80"
data-thumbnail-src="https://images.unsplash.com/photo-1583511666407-5f06533f2113?ixlib=rb-1.2.1&auto=format&fit=crop&w=120&q=80"
/>
<img
src="https://images.unsplash.com/photo-1599839575945-a9e5af0c3fa5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjQwMzA0fQ&auto=format&fit=crop&w=1498&q=80"
data-thumbnail-src="https://images.unsplash.com/photo-1599839575945-a9e5af0c3fa5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjQwMzA0fQ&auto=format&fit=crop&w=1498&q=80"
/>
<img
src="https://images.unsplash.com/photo-1583512603806-077998240c7a?ixlib=rb-1.2.1&auto=format&fit=crop&w=1498&q=80"
data-thumbnail-src="https://images.unsplash.com/photo-1583512603806-077998240c7a?ixlib=rb-1.2.1&auto=format&fit=crop&w=120&q=80"
/>
<img
src="https://images.unsplash.com/photo-1598133893773-de3574464ef0?ixlib=rb-1.2.1&auto=format&fit=crop&w=1498&q=80"
data-thumbnail-src="https://images.unsplash.com/photo-1598133893773-de3574464ef0?ixlib=rb-1.2.1&auto=format&fit=crop&w=120&q=80"
/>
<img
src="https://images.unsplash.com/photo-1603123853880-a92fafb7809f?ixlib=rb-1.2.1&auto=format&fit=crop&w=1498&q=80"
data-thumbnail-src="https://images.unsplash.com/photo-1603123853880-a92fafb7809f?ixlib=rb-1.2.1&auto=format&fit=crop&w=120&q=80"
/>
</bento-base-carousel>

<bento-inline-gallery-pagination style="height: 20px;"></bento-inline-gallery-pagination>
</bento-inline-gallery>
</body>
</html>

0 comments on commit 48fbf3c

Please sign in to comment.