@daffodil/design 0.81.0 → 0.82.0
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/accordion/README.md +44 -29
- package/accordion/accordion/accordion/accordion.component.d.ts +3 -0
- package/accordion/accordion/accordion-item/accordion-item.component.d.ts +23 -12
- package/accordion/accordion/accordion-item-title/accordion-item-title.directive.d.ts +3 -0
- package/accordion/accordion.d.ts +5 -0
- package/accordion/examples/disabled-accordion/disabled-accordion.component.d.ts +5 -0
- package/accordion/examples/initially-expanded-accordion/initially-expanded-accordion.component.d.ts +5 -0
- package/accordion/examples/public_api.d.ts +2 -0
- package/article/README.md +4 -3
- package/article/article.d.ts +3 -0
- package/article/src/article-theme.scss +25 -2
- package/breadcrumb/README.md +38 -28
- package/breadcrumb/breadcrumb/breadcrumb.component.d.ts +15 -2
- package/breadcrumb/breadcrumb-item/breadcrumb-item.directive.d.ts +18 -4
- package/breadcrumb/breadcrumb.d.ts +3 -0
- package/breadcrumb/examples/iterated-breadcrumb/iterated-breadcrumb.component.d.ts +6 -0
- package/breadcrumb/public_api.d.ts +2 -2
- package/button/README.md +43 -23
- package/button/button/basic/button.component.d.ts +5 -1
- package/button/button/button-base.directive.d.ts +11 -3
- package/button/button/button-sizable.directive.d.ts +1 -1
- package/button/button/raised/raised.component.d.ts +2 -0
- package/button/button/stroked/stroked.component.d.ts +5 -1
- package/button/button.d.ts +4 -2
- package/button/button.module.d.ts +1 -2
- package/button/examples/elevated-button/elevated-button.component.d.ts +6 -0
- package/button/examples/examples.d.ts +2 -1
- package/button/examples/public_api.d.ts +1 -0
- package/button/public_api.d.ts +0 -1
- package/button/src/button/basic/button-theme.scss +180 -80
- package/button/src/button/button-base.scss +26 -15
- package/button/src/button/flat/flat-theme.scss +144 -85
- package/button/src/button/raised/raised-theme.scss +2 -7
- package/button/src/button/stroked/stroked-theme.scss +126 -92
- package/button/src/button/underline/underline-theme.scss +112 -44
- package/callout/README.md +4 -3
- package/callout/callout.d.ts +3 -0
- package/card/README.md +6 -3
- package/card/card/basic/basic.component.d.ts +7 -0
- package/card/card/raised/raised.component.d.ts +7 -0
- package/card/card/stroked/stroked.component.d.ts +7 -0
- package/card/card-base.directive.d.ts +25 -0
- package/card/card.d.ts +18 -1
- package/card/card.module.d.ts +10 -8
- package/card/public_api.d.ts +6 -1
- package/card/src/card/raised/raised-theme.scss +30 -0
- package/card/src/card/stroked/stroked-theme.scss +46 -0
- package/card/src/card-base-theme.scss +126 -0
- package/card/src/card-base.scss +134 -0
- package/container/README.md +5 -3
- package/container/container.d.ts +3 -0
- package/core/colorable/colorable.d.ts +20 -14
- package/core/colorable/colorable.directive.d.ts +9 -6
- package/fesm2022/daffodil-design-accordion-examples.mjs +28 -4
- package/fesm2022/daffodil-design-accordion-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-accordion.mjs +56 -29
- package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
- package/fesm2022/daffodil-design-article-examples.mjs +30 -30
- package/fesm2022/daffodil-design-article.mjs +14 -11
- package/fesm2022/daffodil-design-article.mjs.map +1 -1
- package/fesm2022/daffodil-design-breadcrumb-examples.mjs +24 -4
- package/fesm2022/daffodil-design-breadcrumb-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-breadcrumb.mjs +78 -40
- package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
- package/fesm2022/daffodil-design-button-examples.mjs +55 -33
- package/fesm2022/daffodil-design-button-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-button.mjs +79 -69
- package/fesm2022/daffodil-design-button.mjs.map +1 -1
- package/fesm2022/daffodil-design-callout-examples.mjs +12 -12
- package/fesm2022/daffodil-design-callout-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-callout.mjs +25 -22
- package/fesm2022/daffodil-design-callout.mjs.map +1 -1
- package/fesm2022/daffodil-design-card-examples.mjs +23 -21
- package/fesm2022/daffodil-design-card-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-card.mjs +140 -86
- package/fesm2022/daffodil-design-card.mjs.map +1 -1
- package/fesm2022/daffodil-design-checkbox-examples.mjs +6 -6
- package/fesm2022/daffodil-design-checkbox-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-container-examples.mjs +3 -3
- package/fesm2022/daffodil-design-container.mjs +10 -7
- package/fesm2022/daffodil-design-container.mjs.map +1 -1
- package/fesm2022/daffodil-design-hero-examples.mjs +12 -12
- package/fesm2022/daffodil-design-hero-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-hero.mjs +25 -22
- package/fesm2022/daffodil-design-hero.mjs.map +1 -1
- package/fesm2022/daffodil-design-image-examples.mjs +9 -9
- package/fesm2022/daffodil-design-image.mjs +36 -19
- package/fesm2022/daffodil-design-image.mjs.map +1 -1
- package/fesm2022/daffodil-design-input-examples.mjs +12 -12
- package/fesm2022/daffodil-design-link-set.mjs +19 -16
- package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
- package/fesm2022/daffodil-design-list-examples.mjs +12 -12
- package/fesm2022/daffodil-design-list.mjs +13 -10
- package/fesm2022/daffodil-design-list.mjs.map +1 -1
- package/fesm2022/daffodil-design-loading-icon-examples.mjs +4 -4
- package/fesm2022/daffodil-design-loading-icon-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-loading-icon.mjs +11 -8
- package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery-examples.mjs +62 -13
- package/fesm2022/daffodil-design-media-gallery-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery.mjs +165 -250
- package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
- package/fesm2022/daffodil-design-menu-examples.mjs +6 -6
- package/fesm2022/daffodil-design-menu-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-menu.mjs +16 -16
- package/fesm2022/daffodil-design-modal-examples.mjs +7 -7
- package/fesm2022/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal.mjs +28 -25
- package/fesm2022/daffodil-design-modal.mjs.map +1 -1
- package/fesm2022/daffodil-design-navbar-examples.mjs +12 -12
- package/fesm2022/daffodil-design-navbar-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-navbar.mjs +10 -7
- package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
- package/fesm2022/daffodil-design-notification-examples.mjs +15 -15
- package/fesm2022/daffodil-design-notification.mjs +22 -19
- package/fesm2022/daffodil-design-notification.mjs.map +1 -1
- package/fesm2022/daffodil-design-paginator-examples.mjs +6 -6
- package/fesm2022/daffodil-design-paginator.mjs +13 -7
- package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
- package/fesm2022/daffodil-design-progress-bar-examples.mjs +9 -9
- package/fesm2022/daffodil-design-progress-bar.mjs +13 -10
- package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
- package/fesm2022/daffodil-design-quantity-field-examples.mjs +12 -12
- package/fesm2022/daffodil-design-radio-examples.mjs +3 -3
- package/fesm2022/daffodil-design-sidebar-examples.mjs +14 -14
- package/fesm2022/daffodil-design-sidebar-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-sidebar.mjs +147 -53
- package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
- package/fesm2022/daffodil-design-switch-examples.mjs +15 -15
- package/fesm2022/daffodil-design-switch-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-switch.mjs +6 -3
- package/fesm2022/daffodil-design-switch.mjs.map +1 -1
- package/fesm2022/daffodil-design-tabs-examples.mjs +23 -17
- package/fesm2022/daffodil-design-tabs-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-tabs.mjs +66 -34
- package/fesm2022/daffodil-design-tabs.mjs.map +1 -1
- package/fesm2022/daffodil-design-text-snippet-examples.mjs +3 -3
- package/fesm2022/daffodil-design-text-snippet.mjs +4 -5
- package/fesm2022/daffodil-design-text-snippet.mjs.map +1 -1
- package/fesm2022/daffodil-design-toast-examples.mjs +40 -15
- package/fesm2022/daffodil-design-toast-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-toast.mjs +301 -245
- package/fesm2022/daffodil-design-toast.mjs.map +1 -1
- package/fesm2022/daffodil-design-tree-examples.mjs +6 -6
- package/fesm2022/daffodil-design-tree.mjs +13 -10
- package/fesm2022/daffodil-design-tree.mjs.map +1 -1
- package/fesm2022/daffodil-design-youtube-player.mjs +104 -0
- package/fesm2022/daffodil-design-youtube-player.mjs.map +1 -0
- package/fesm2022/daffodil-design.mjs +167 -155
- package/fesm2022/daffodil-design.mjs.map +1 -1
- package/hero/README.md +4 -3
- package/hero/hero.d.ts +3 -0
- package/image/README.md +4 -3
- package/image/image/image.component.d.ts +22 -1
- package/image/image.d.ts +3 -0
- package/link-set/README.md +4 -3
- package/link-set/link-set.d.ts +3 -0
- package/list/README.md +4 -3
- package/list/list.d.ts +3 -0
- package/loading-icon/README.md +10 -7
- package/loading-icon/loading-icon.d.ts +3 -0
- package/loading-icon/src/loading-icon-theme.scss +66 -38
- package/media-gallery/README.md +17 -8
- package/media-gallery/examples/iterated-media-gallery/iterated-media-gallery.component.d.ts +13 -0
- package/media-gallery/examples/media-gallery-with-video/media-gallery-with-video.component.d.ts +5 -0
- package/media-gallery/examples/public_api.d.ts +2 -0
- package/media-gallery/helpers/media-gallery-registration.interface.d.ts +1 -1
- package/media-gallery/media-gallery/media-gallery.component.d.ts +73 -11
- package/media-gallery/media-gallery.d.ts +4 -2
- package/media-gallery/media-gallery.module.d.ts +1 -2
- package/media-gallery/public_api.d.ts +0 -1
- package/media-gallery/src/media-gallery-theme.scss +30 -4
- package/media-gallery/thumbnail/thumbnail.directive.d.ts +29 -23
- package/menu/README.md +1 -2
- package/modal/README.md +3 -2
- package/modal/modal.d.ts +3 -0
- package/navbar/README.md +3 -2
- package/navbar/navbar.d.ts +3 -0
- package/notification/README.md +5 -4
- package/notification/notification.d.ts +3 -0
- package/package.json +1 -1
- package/paginator/README.md +3 -2
- package/paginator/paginator/paginator.component.d.ts +3 -0
- package/paginator/paginator.d.ts +3 -0
- package/progress-bar/README.md +3 -2
- package/progress-bar/progress-bar.d.ts +3 -0
- package/scss/theme.scss +36 -17
- package/scss/theming/_configure-theme.scss +2 -0
- package/scss/theming/_index.scss +1 -0
- package/scss/theming/_light-dark.scss +45 -0
- package/sidebar/README.md +20 -21
- package/sidebar/helper/sidebar-mode.d.ts +9 -15
- package/sidebar/sidebar/sidebar.component.d.ts +22 -7
- package/sidebar/sidebar-footer/sidebar-footer.component.d.ts +11 -0
- package/sidebar/sidebar-header/sidebar-header-title/sidebar-header-title.directive.d.ts +8 -0
- package/sidebar/sidebar-header/sidebar-header.component.d.ts +19 -1
- package/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +36 -15
- package/sidebar/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.d.ts +17 -0
- package/sidebar/sidebar.d.ts +3 -0
- package/switch/README.md +3 -2
- package/switch/switch.d.ts +3 -0
- package/tabs/README.md +33 -3
- package/tabs/tabs/tab/tab.component.d.ts +1 -1
- package/tabs/tabs/tab-label/tab-label.component.d.ts +6 -0
- package/tabs/tabs/tab-panel/tab-panel.component.d.ts +8 -0
- package/tabs/tabs/tabs.component.d.ts +21 -4
- package/tabs/tabs.d.ts +8 -2
- package/text-snippet/README.md +19 -1
- package/toast/README.md +21 -151
- package/toast/examples/dismissible-toast/dismissible-toast.component.d.ts +11 -0
- package/toast/examples/public_api.d.ts +2 -1
- package/toast/interfaces/toast-action.d.ts +22 -11
- package/toast/interfaces/toast-action.type.d.ts +10 -0
- package/toast/interfaces/toast.d.ts +11 -5
- package/toast/options/daff-toast-options.d.ts +2 -1
- package/toast/public_api.d.ts +2 -6
- package/toast/service/position.service.d.ts +9 -1
- package/toast/service/toast.service.d.ts +63 -0
- package/toast/toast/toast-config.d.ts +24 -1
- package/toast/toast/toast-provider.d.ts +16 -0
- package/toast/toast/toast-template.component.d.ts +1 -3
- package/toast/toast/toast.component.d.ts +20 -1
- package/toast/toast-actions/toast-actions.directive.d.ts +3 -0
- package/toast/toast-message/toast-message.directive.d.ts +3 -0
- package/toast/toast-title/toast-title.directive.d.ts +3 -0
- package/tree/README.md +6 -10
- package/tree/tree.d.ts +3 -0
- package/youtube-player/index.d.ts +1 -0
- package/youtube-player/public_api.d.ts +3 -0
- package/youtube-player/safe-url.pipe.d.ts +10 -0
- package/youtube-player/youtube-player.component.d.ts +23 -0
- package/youtube-player/youtube-player.d.ts +6 -0
- package/card/card/card.component.d.ts +0 -48
- package/card/src/card-theme-variants/basic-card.scss +0 -6
- package/card/src/card-theme-variants/linkable-card.scss +0 -16
- package/card/src/card-theme-variants/stroked-card.scss +0 -3
- package/card/src/card-theme.scss +0 -170
- package/media-gallery/media-renderer/media-renderer.component.d.ts +0 -29
- package/media-gallery/registry/media-gallery.registry.d.ts +0 -34
- package/media-gallery/thumbnail/thumbnail-compat.token.d.ts +0 -1
- package/media-gallery/thumbnail/thumbnail-registration.interface.d.ts +0 -9
- package/scss/theming/prebuilt/internal-theme.scss +0 -13
- package/toast/toast.module.d.ts +0 -19
@@ -1,11 +1,9 @@
|
|
1
|
+
import { NgTemplateOutlet, CommonModule } from '@angular/common';
|
1
2
|
import * as i0 from '@angular/core';
|
2
|
-
import {
|
3
|
-
import * as
|
3
|
+
import { isDevMode, Directive, Inject, Input, EventEmitter, contentChildren, computed, signal, ElementRef, Component, ChangeDetectionStrategy, HostBinding, Output, ViewChildren, NgModule } from '@angular/core';
|
4
|
+
import * as i1 from '@daffodil/design';
|
4
5
|
import { DaffSelectableDirective, DaffArticleEncapsulatedDirective, DaffSkeletonableDirective } from '@daffodil/design';
|
5
6
|
import { createSingleInjectionToken } from '@daffodil/core';
|
6
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
7
|
-
import { takeUntil } from 'rxjs/operators';
|
8
|
-
import { CommonModule } from '@angular/common';
|
9
7
|
|
10
8
|
const { token: DAFF_MEDIA_GALLERY_TOKEN,
|
11
9
|
/**
|
@@ -13,279 +11,184 @@ const { token: DAFF_MEDIA_GALLERY_TOKEN,
|
|
13
11
|
*/
|
14
12
|
provider: provideDaffMediaGalleryToken, } = createSingleInjectionToken('DAFF_MEDIA_GALLERY_TOKEN');
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
let uniqueThumbnailId = 0;
|
15
|
+
/**
|
16
|
+
* A structural directive marking thumbnails for the `DaffMediaGalleryComponent`.
|
17
|
+
*
|
18
|
+
* ```html
|
19
|
+
* <ng-template daffThumbnail></ng-template>
|
20
|
+
* ```
|
21
|
+
*/
|
22
|
+
class DaffThumbnailDirective {
|
21
23
|
/**
|
22
|
-
*
|
23
|
-
* Adds a media element to the internal registry.
|
24
|
+
* The id of the thumbnail.
|
24
25
|
*/
|
25
|
-
|
26
|
-
|
27
|
-
let newGallery = this.galleries[gallery.name].getValue();
|
28
|
-
if (thumbnail) {
|
29
|
-
newGallery = {
|
30
|
-
...newGallery,
|
31
|
-
thumbnails: [
|
32
|
-
...newGallery.thumbnails.filter(t => t !== thumbnail),
|
33
|
-
thumbnail,
|
34
|
-
],
|
35
|
-
};
|
36
|
-
}
|
37
|
-
this.galleries[gallery.name].next(newGallery);
|
38
|
-
}
|
39
|
-
else {
|
40
|
-
this.galleries[gallery.name] = new BehaviorSubject({
|
41
|
-
gallery,
|
42
|
-
thumbnails: thumbnail ? [thumbnail] : [],
|
43
|
-
});
|
44
|
-
}
|
45
|
-
if (this.galleries[gallery.name].getValue().thumbnails.length === 1) {
|
46
|
-
thumbnail.select();
|
47
|
-
}
|
26
|
+
get id() {
|
27
|
+
return this.gallery.id + '-thumbnail-' + uniqueThumbnailId;
|
48
28
|
}
|
49
29
|
/**
|
50
|
-
*
|
51
|
-
* Removes a thumbnail or gallery from the internal registry.
|
30
|
+
* The id of the thumbnail panel.
|
52
31
|
*/
|
53
|
-
|
54
|
-
|
55
|
-
this.removeGallery(element);
|
56
|
-
}
|
57
|
-
else {
|
58
|
-
this.removeThumbnail(element);
|
59
|
-
}
|
60
|
-
}
|
61
|
-
removeThumbnail(thumbnail) {
|
62
|
-
if (!this.galleries[thumbnail.gallery.name]) {
|
63
|
-
return;
|
64
|
-
}
|
65
|
-
const gallery = this.galleries[thumbnail.gallery.name].getValue();
|
66
|
-
const index = gallery.thumbnails.indexOf(thumbnail);
|
67
|
-
if (index === -1) {
|
68
|
-
return;
|
69
|
-
}
|
70
|
-
this.galleries[thumbnail.gallery.name].next({
|
71
|
-
...gallery,
|
72
|
-
thumbnails: [
|
73
|
-
...gallery.thumbnails.slice(0, index),
|
74
|
-
...gallery.thumbnails.slice(index + 1),
|
75
|
-
],
|
76
|
-
});
|
77
|
-
}
|
78
|
-
removeGallery(gallery) {
|
79
|
-
delete this.galleries[gallery.name];
|
32
|
+
get panelId() {
|
33
|
+
return this.id + '-el';
|
80
34
|
}
|
81
35
|
/**
|
82
|
-
* @
|
83
|
-
* Selects a media element for a given gallery.
|
36
|
+
* @docs-private
|
84
37
|
*/
|
85
|
-
|
86
|
-
if (!this.galleries[thumbnail.gallery.name]) {
|
87
|
-
return;
|
88
|
-
}
|
89
|
-
const gallery = this.galleries[thumbnail.gallery.name].getValue();
|
90
|
-
const index = gallery.thumbnails.indexOf(thumbnail);
|
91
|
-
if (thumbnail.selected || index === -1) {
|
92
|
-
return;
|
93
|
-
}
|
94
|
-
this.galleries[thumbnail.gallery.name].next({
|
95
|
-
...gallery,
|
96
|
-
thumbnails: [
|
97
|
-
...gallery.thumbnails.filter(m => m !== thumbnail).map(m => m.deselect()),
|
98
|
-
thumbnail.select(),
|
99
|
-
],
|
100
|
-
});
|
101
|
-
}
|
102
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: DaffMediaGalleryRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
103
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: DaffMediaGalleryRegistry, providedIn: 'root' }); }
|
104
|
-
}
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: DaffMediaGalleryRegistry, decorators: [{
|
106
|
-
type: Injectable,
|
107
|
-
args: [{ providedIn: 'root' }]
|
108
|
-
}] });
|
109
|
-
|
110
|
-
/**
|
111
|
-
* Dynamically renders the selected `DaffThumbnailDirective` in a `daff-media-gallery` any time the selected thumbnail
|
112
|
-
* changes.
|
113
|
-
*/
|
114
|
-
class DaffMediaRendererComponent {
|
115
|
-
constructor(componentFactoryResolver, registry, gallery) {
|
116
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
117
|
-
this.registry = registry;
|
38
|
+
constructor(gallery, templateRef) {
|
118
39
|
this.gallery = gallery;
|
40
|
+
this.templateRef = templateRef;
|
119
41
|
/**
|
120
|
-
*
|
42
|
+
* The file path to a thumbnail, presumably an image.
|
121
43
|
*/
|
122
|
-
this.
|
123
|
-
}
|
124
|
-
ngOnInit() {
|
125
|
-
this.registry.galleries[this.gallery.name]
|
126
|
-
.pipe(takeUntil(this._destroy$))
|
127
|
-
.subscribe((gallery) => {
|
128
|
-
/**
|
129
|
-
* Clear out the slot for the dynamically rendered thumbnail
|
130
|
-
*/
|
131
|
-
this.slot.clear();
|
132
|
-
const _selectedThumbnail = gallery.thumbnails.filter(media => media.selected).shift();
|
133
|
-
/**
|
134
|
-
* If there's no selected media, render nothing.
|
135
|
-
*/
|
136
|
-
if (!_selectedThumbnail) {
|
137
|
-
return;
|
138
|
-
}
|
139
|
-
const _selectedThumbnailComponent = _selectedThumbnail.component;
|
140
|
-
/**
|
141
|
-
* Create the component to insert.
|
142
|
-
*/
|
143
|
-
const component = this.componentFactoryResolver.resolveComponentFactory(_selectedThumbnailComponent.constructor);
|
144
|
-
const componentRef = this.slot.createComponent(component);
|
145
|
-
/**
|
146
|
-
* Fill the component with it's values from the original component
|
147
|
-
*/
|
148
|
-
component.inputs.forEach(input => {
|
149
|
-
componentRef.instance[input.propName] = _selectedThumbnailComponent[input.propName];
|
150
|
-
});
|
151
|
-
/**
|
152
|
-
* Trigger a change detection on the component tree, outside the cycle to address
|
153
|
-
* the fact that the component was created outside a typical CD loop.
|
154
|
-
*/
|
155
|
-
componentRef.changeDetectorRef.detectChanges();
|
156
|
-
});
|
157
|
-
}
|
158
|
-
/**
|
159
|
-
* Used to unsubscribe from the dynamic component.
|
160
|
-
*/
|
161
|
-
ngOnDestroy() {
|
162
|
-
this._destroy$.next(true);
|
163
|
-
this._destroy$.unsubscribe();
|
164
|
-
}
|
165
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: DaffMediaRendererComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: DaffMediaGalleryRegistry }, { token: DAFF_MEDIA_GALLERY_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
166
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.7", type: DaffMediaRendererComponent, isStandalone: true, selector: "daff-media-renderer", viewQueries: [{ propertyName: "slot", first: true, predicate: TemplateRef, descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<ng-template></ng-template>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
167
|
-
}
|
168
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: DaffMediaRendererComponent, decorators: [{
|
169
|
-
type: Component,
|
170
|
-
args: [{
|
171
|
-
selector: 'daff-media-renderer',
|
172
|
-
template: '<ng-template></ng-template>',
|
173
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
174
|
-
standalone: true,
|
175
|
-
}]
|
176
|
-
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: DaffMediaGalleryRegistry }, { type: undefined, decorators: [{
|
177
|
-
type: Inject,
|
178
|
-
args: [DAFF_MEDIA_GALLERY_TOKEN]
|
179
|
-
}] }], propDecorators: { slot: [{
|
180
|
-
type: ViewChild,
|
181
|
-
args: [TemplateRef, { static: true, read: ViewContainerRef }]
|
182
|
-
}] } });
|
183
|
-
|
184
|
-
const {
|
185
|
-
/**
|
186
|
-
* A multi provider injection token that marks a component as renderable for the `DaffMediaRendererComponent`.
|
187
|
-
*/
|
188
|
-
token: daffThumbnailCompatToken,
|
189
|
-
/**
|
190
|
-
* Provider function for {@link daffThumbnailCompatToken}.
|
191
|
-
*/
|
192
|
-
provider: provideDaffThumbnailCompatToken, } = createSingleInjectionToken('thumbnailCompatToken');
|
193
|
-
|
194
|
-
/**
|
195
|
-
* A directive marking thumbnails for the `DaffMediaRendererComponent`. Needs to be wrapped in a `daff-media-gallery` component
|
196
|
-
* and needs to be placed on a component that is provided as a `daffThumbnailCompatToken`.
|
197
|
-
*/
|
198
|
-
class DaffThumbnailDirective {
|
199
|
-
constructor(component, registry, gallery, selectedDirective) {
|
200
|
-
this.component = component;
|
201
|
-
this.registry = registry;
|
202
|
-
this.gallery = gallery;
|
203
|
-
this.selectedDirective = selectedDirective;
|
44
|
+
this.thumbnailSrc = undefined;
|
204
45
|
/**
|
205
|
-
*
|
46
|
+
* The button label for the thumbnail.
|
206
47
|
*/
|
207
|
-
this.
|
208
|
-
|
209
|
-
|
210
|
-
return this.selectedDirective.selected;
|
211
|
-
}
|
212
|
-
select() {
|
213
|
-
this.selectedDirective.select();
|
214
|
-
return this;
|
215
|
-
}
|
216
|
-
deselect() {
|
217
|
-
this.selectedDirective.deselect();
|
218
|
-
return this;
|
48
|
+
this.label = undefined;
|
49
|
+
this.isVideo = false;
|
50
|
+
uniqueThumbnailId++;
|
219
51
|
}
|
220
52
|
/**
|
221
|
-
*
|
222
|
-
*
|
223
|
-
* @param event: MouseEvent
|
53
|
+
* @docs-private
|
224
54
|
*/
|
225
|
-
onClick($event) {
|
226
|
-
this.registry.select(this);
|
227
|
-
}
|
228
55
|
ngOnInit() {
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
this.registry.remove(this);
|
56
|
+
if (!this.label && isDevMode()) {
|
57
|
+
console.warn('The thumbnail ' + this.id + ' is missing a label.');
|
58
|
+
}
|
233
59
|
}
|
234
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
235
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.
|
60
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffThumbnailDirective, deps: [{ token: DAFF_MEDIA_GALLERY_TOKEN }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
61
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: DaffThumbnailDirective, isStandalone: true, selector: "[daffThumbnail]", inputs: { thumbnailSrc: "thumbnailSrc", label: "label", isVideo: "isVideo" }, ngImport: i0 }); }
|
236
62
|
}
|
237
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffThumbnailDirective, decorators: [{
|
238
64
|
type: Directive,
|
239
65
|
args: [{
|
240
66
|
selector: '[daffThumbnail]',
|
241
|
-
standalone: true,
|
242
|
-
hostDirectives: [{
|
243
|
-
directive: DaffSelectableDirective,
|
244
|
-
inputs: ['selected'],
|
245
|
-
outputs: ['becameSelected'],
|
246
|
-
}],
|
247
67
|
}]
|
248
|
-
}], ctorParameters: () => [{ type:
|
249
|
-
type: Inject,
|
250
|
-
args: [daffThumbnailCompatToken]
|
251
|
-
}] }, { type: DaffMediaGalleryRegistry }, { type: undefined, decorators: [{
|
68
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
252
69
|
type: Inject,
|
253
70
|
args: [DAFF_MEDIA_GALLERY_TOKEN]
|
254
|
-
}] }, { type:
|
255
|
-
type:
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
71
|
+
}] }, { type: i0.TemplateRef }], propDecorators: { thumbnailSrc: [{
|
72
|
+
type: Input
|
73
|
+
}], label: [{
|
74
|
+
type: Input
|
75
|
+
}], isVideo: [{
|
76
|
+
type: Input
|
260
77
|
}] } });
|
261
78
|
|
262
79
|
let uniqueGalleryId = 0;
|
80
|
+
/**
|
81
|
+
* ```html
|
82
|
+
* <daff-media-gallery></daff-media-gallery>
|
83
|
+
* ```
|
84
|
+
*/
|
263
85
|
class DaffMediaGalleryComponent {
|
264
|
-
|
265
|
-
|
86
|
+
/**
|
87
|
+
* The id of the gallery.
|
88
|
+
*/
|
89
|
+
get id() {
|
90
|
+
return this._id;
|
91
|
+
}
|
92
|
+
set id(val) {
|
93
|
+
if (!val) {
|
94
|
+
return;
|
95
|
+
}
|
96
|
+
this._id = val;
|
97
|
+
}
|
98
|
+
;
|
99
|
+
/**
|
100
|
+
* @docs-private
|
101
|
+
*/
|
102
|
+
constructor(skeletonDirective) {
|
103
|
+
this.skeletonDirective = skeletonDirective;
|
104
|
+
/**
|
105
|
+
* @docs-private
|
106
|
+
*/
|
107
|
+
this.role = 'tablist';
|
266
108
|
/**
|
109
|
+
* @docs-private
|
110
|
+
*
|
267
111
|
* Adds a class for styling the media gallery
|
268
112
|
*/
|
269
113
|
this.class = true;
|
270
114
|
/**
|
271
|
-
*
|
115
|
+
* An event indicating that the selected media gallery element has changed.
|
116
|
+
*/
|
117
|
+
this.elementChange = new EventEmitter();
|
118
|
+
/**
|
119
|
+
* @docs-private
|
120
|
+
*/
|
121
|
+
this._thumbnails = contentChildren(DaffThumbnailDirective);
|
122
|
+
/**
|
123
|
+
* @docs-private
|
272
124
|
*/
|
273
|
-
this.
|
125
|
+
this._selectedThumbnail = computed(() => {
|
126
|
+
const idx = this._selectedIndex();
|
127
|
+
if (!idx) {
|
128
|
+
return this._thumbnails().at(0);
|
129
|
+
}
|
130
|
+
return this._thumbnails().at(idx);
|
131
|
+
});
|
132
|
+
this._selectedIndex = signal(null);
|
274
133
|
uniqueGalleryId++;
|
275
134
|
}
|
276
|
-
|
277
|
-
|
135
|
+
/**
|
136
|
+
* @docs-private
|
137
|
+
*
|
138
|
+
* Whether or not the component its currently displaying its skeleton state.
|
139
|
+
*/
|
140
|
+
get skeleton() {
|
141
|
+
return this.skeletonDirective.skeleton;
|
142
|
+
}
|
143
|
+
focusSelected() {
|
144
|
+
this._thumbnailButtons.get(this._selectedIndex())?.nativeElement.focus();
|
278
145
|
}
|
279
|
-
|
280
|
-
|
146
|
+
/**
|
147
|
+
* Select a specific entry in the media gallery by its index (starting at 0).
|
148
|
+
*/
|
149
|
+
selectIndex(index) {
|
150
|
+
this._selectedIndex.set(index);
|
151
|
+
this.elementChange.emit(index);
|
281
152
|
}
|
282
|
-
/**
|
283
|
-
|
153
|
+
/**
|
154
|
+
* Navigate to the next element in the list of thumbnails.
|
155
|
+
*/
|
156
|
+
next(focus = true) {
|
157
|
+
this._selectedIndex.update((curr) => ((curr ?? 0) + 1 + this._thumbnails().length) % this._thumbnails().length);
|
158
|
+
this.elementChange.emit(this._selectedIndex());
|
159
|
+
this.focusSelected();
|
160
|
+
}
|
161
|
+
/**
|
162
|
+
* Navigate to the previous element in the list of thumbnails.
|
163
|
+
*/
|
164
|
+
previous(focus = true) {
|
165
|
+
this._selectedIndex.update((curr) => ((curr ?? 0) - 1 + this._thumbnails().length) % this._thumbnails().length);
|
166
|
+
this.elementChange.emit(this._selectedIndex());
|
167
|
+
this.focusSelected();
|
168
|
+
}
|
169
|
+
/**
|
170
|
+
* Select the first element
|
171
|
+
*/
|
172
|
+
selectFirst(focus = true) {
|
173
|
+
this._selectedIndex.set(0);
|
174
|
+
this.elementChange.emit(this._selectedIndex());
|
175
|
+
this.focusSelected();
|
176
|
+
}
|
177
|
+
/**
|
178
|
+
* Select the last element of the gallery.
|
179
|
+
*/
|
180
|
+
selectLast(focus = true) {
|
181
|
+
this._selectedIndex.set(this._thumbnails().length - 1);
|
182
|
+
this.elementChange.emit(this._selectedIndex());
|
183
|
+
this.focusSelected();
|
184
|
+
}
|
185
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffMediaGalleryComponent, deps: [{ token: i1.DaffSkeletonableDirective }], target: i0.ɵɵFactoryTarget.Component }); }
|
186
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: DaffMediaGalleryComponent, isStandalone: true, selector: "daff-media-gallery", inputs: { id: "id" }, outputs: { elementChange: "elementChange" }, host: { properties: { "attr.role": "this.role", "attr.id": "this.id", "class.daff-media-gallery": "this.class" } }, providers: [
|
284
187
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
285
188
|
{ provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },
|
286
|
-
], hostDirectives: [{ directive:
|
189
|
+
], queries: [{ propertyName: "_thumbnails", predicate: DaffThumbnailDirective, isSignal: true }], viewQueries: [{ propertyName: "_thumbnailButtons", predicate: ["thumbnailButtons"], descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.DaffArticleEncapsulatedDirective }, { directive: i1.DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl>\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.panelId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let el = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"el?.panelId\">\n\t\t@if(el) {\n\t\t\t<ng-container *ngTemplateOutlet=\"el.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>", styles: [":host(.daff-media-gallery){display:flex;flex-direction:column;gap:.5rem}@media (min-width: 1024px){:host(.daff-media-gallery){flex-direction:row}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;flex-direction:row;justify-content:center;align-items:center;height:4rem;width:4rem;max-width:100%;overflow:hidden;user-select:none;padding:0;position:relative;flex-shrink:0}@media (min-width: 480px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{height:4.5rem;width:4.5rem}}@media (min-width: 1024px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{flex-direction:column;height:5rem;width:5rem}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail img{display:block;width:100%}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4rem;width:4rem;position:absolute;top:0;left:0}@media (min-width: 480px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4.5rem;width:4.5rem;position:absolute;top:0;left:0}}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:5rem;width:5rem;position:absolute;top:0;left:0}}:host(.daff-media-gallery).daff-skeleton ::ng-deep img{opacity:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail{display:flex;position:relative;flex-grow:1}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:100%;width:100%;position:absolute;top:0;left:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:16rem}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:30rem}}.daff-media-gallery__thumbnails{display:flex;flex-direction:row;flex-shrink:0;gap:.25rem;order:2;max-width:100%;overflow-x:auto}@media (min-width: 1024px){.daff-media-gallery__thumbnails{max-height:29.5rem;flex-direction:column;overflow-y:auto;order:1}}.daff-media-gallery__selected-thumbnail{display:flex;align-items:center;justify-content:center;flex-grow:1;width:100%;order:1}@media (min-width: 1024px){.daff-media-gallery__selected-thumbnail{order:2;margin:0}}.daff-media-gallery__video-button{width:2rem;height:2rem;border-radius:100%;position:absolute}.daff-media-gallery__video-button:after{content:\"\";position:absolute;width:.75rem;height:.75rem;left:60%;top:50%;transform:translate(-60%,-50%) rotate(90deg);clip-path:polygon(50% 15%,0% 100%,100% 100%);transition:all .4s ease-in-out}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: DaffSelectableDirective, selector: "[daffSelected]", inputs: ["selected"], outputs: ["becameSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
287
190
|
}
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffMediaGalleryComponent, decorators: [{
|
289
192
|
type: Component,
|
290
193
|
args: [{ selector: 'daff-media-gallery', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
291
194
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
@@ -297,36 +200,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
|
|
297
200
|
inputs: ['skeleton'],
|
298
201
|
},
|
299
202
|
], imports: [
|
300
|
-
DaffMediaRendererComponent,
|
301
203
|
DaffThumbnailDirective,
|
302
|
-
|
303
|
-
|
204
|
+
NgTemplateOutlet,
|
205
|
+
DaffSelectableDirective,
|
206
|
+
], template: "<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl>\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.panelId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let el = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"el?.panelId\">\n\t\t@if(el) {\n\t\t\t<ng-container *ngTemplateOutlet=\"el.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>", styles: [":host(.daff-media-gallery){display:flex;flex-direction:column;gap:.5rem}@media (min-width: 1024px){:host(.daff-media-gallery){flex-direction:row}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;flex-direction:row;justify-content:center;align-items:center;height:4rem;width:4rem;max-width:100%;overflow:hidden;user-select:none;padding:0;position:relative;flex-shrink:0}@media (min-width: 480px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{height:4.5rem;width:4.5rem}}@media (min-width: 1024px){:host(.daff-media-gallery) ::ng-deep .daff-thumbnail{flex-direction:column;height:5rem;width:5rem}}:host(.daff-media-gallery) ::ng-deep .daff-thumbnail img{display:block;width:100%}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4rem;width:4rem;position:absolute;top:0;left:0}@media (min-width: 480px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:4.5rem;width:4.5rem;position:absolute;top:0;left:0}}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail{display:flex;position:relative}:host(.daff-media-gallery).daff-skeleton ::ng-deep .daff-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:5rem;width:5rem;position:absolute;top:0;left:0}}:host(.daff-media-gallery).daff-skeleton ::ng-deep img{opacity:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail{display:flex;position:relative;flex-grow:1}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__selected-thumbnail:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:100%;width:100%;position:absolute;top:0;left:0}:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:16rem}@media (min-width: 1024px){:host(.daff-media-gallery).daff-skeleton .daff-media-gallery__skeleton-placeholder{height:30rem}}.daff-media-gallery__thumbnails{display:flex;flex-direction:row;flex-shrink:0;gap:.25rem;order:2;max-width:100%;overflow-x:auto}@media (min-width: 1024px){.daff-media-gallery__thumbnails{max-height:29.5rem;flex-direction:column;overflow-y:auto;order:1}}.daff-media-gallery__selected-thumbnail{display:flex;align-items:center;justify-content:center;flex-grow:1;width:100%;order:1}@media (min-width: 1024px){.daff-media-gallery__selected-thumbnail{order:2;margin:0}}.daff-media-gallery__video-button{width:2rem;height:2rem;border-radius:100%;position:absolute}.daff-media-gallery__video-button:after{content:\"\";position:absolute;width:.75rem;height:.75rem;left:60%;top:50%;transform:translate(-60%,-50%) rotate(90deg);clip-path:polygon(50% 15%,0% 100%,100% 100%);transition:all .4s ease-in-out}\n"] }]
|
207
|
+
}], ctorParameters: () => [{ type: i1.DaffSkeletonableDirective }], propDecorators: { role: [{
|
304
208
|
type: HostBinding,
|
305
|
-
args: ['
|
306
|
-
}],
|
209
|
+
args: ['attr.role']
|
210
|
+
}], id: [{
|
211
|
+
type: HostBinding,
|
212
|
+
args: ['attr.id']
|
213
|
+
}, {
|
307
214
|
type: Input
|
215
|
+
}], class: [{
|
216
|
+
type: HostBinding,
|
217
|
+
args: ['class.daff-media-gallery']
|
218
|
+
}], elementChange: [{
|
219
|
+
type: Output
|
220
|
+
}], _thumbnailButtons: [{
|
221
|
+
type: ViewChildren,
|
222
|
+
args: ['thumbnailButtons', { read: ElementRef }]
|
308
223
|
}] } });
|
309
224
|
|
310
225
|
/**
|
311
226
|
* @deprecated in favor of {@link DAFF_MEDIA_GALLERY_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.
|
312
227
|
*/
|
313
228
|
class DaffMediaGalleryModule {
|
314
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
315
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.
|
229
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffMediaGalleryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
230
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: DaffMediaGalleryModule, imports: [CommonModule,
|
316
231
|
DaffMediaGalleryComponent,
|
317
|
-
DaffThumbnailDirective,
|
318
|
-
DaffMediaRendererComponent], exports: [DaffMediaGalleryComponent,
|
232
|
+
DaffThumbnailDirective], exports: [DaffMediaGalleryComponent,
|
319
233
|
DaffThumbnailDirective] }); }
|
320
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.
|
234
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffMediaGalleryModule, imports: [CommonModule] }); }
|
321
235
|
}
|
322
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: DaffMediaGalleryModule, decorators: [{
|
323
237
|
type: NgModule,
|
324
238
|
args: [{
|
325
239
|
imports: [
|
326
240
|
CommonModule,
|
327
241
|
DaffMediaGalleryComponent,
|
328
242
|
DaffThumbnailDirective,
|
329
|
-
DaffMediaRendererComponent,
|
330
243
|
],
|
331
244
|
exports: [
|
332
245
|
DaffMediaGalleryComponent,
|
@@ -335,15 +248,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
|
|
335
248
|
}]
|
336
249
|
}] });
|
337
250
|
|
251
|
+
/**
|
252
|
+
* @docs-private
|
253
|
+
*/
|
338
254
|
const DAFF_MEDIA_GALLERY_COMPONENTS = [
|
339
255
|
DaffMediaGalleryComponent,
|
340
256
|
DaffThumbnailDirective,
|
341
|
-
DaffMediaRendererComponent,
|
342
257
|
];
|
343
258
|
|
344
259
|
/**
|
345
260
|
* Generated bundle index. Do not edit.
|
346
261
|
*/
|
347
262
|
|
348
|
-
export { DAFF_MEDIA_GALLERY_COMPONENTS, DaffMediaGalleryComponent, DaffMediaGalleryModule, DaffThumbnailDirective
|
263
|
+
export { DAFF_MEDIA_GALLERY_COMPONENTS, DaffMediaGalleryComponent, DaffMediaGalleryModule, DaffThumbnailDirective };
|
349
264
|
//# sourceMappingURL=daffodil-design-media-gallery.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-design-media-gallery.mjs","sources":["../../../libs/design/media-gallery/src/helpers/media-gallery-token.ts","../../../libs/design/media-gallery/src/registry/media-gallery.registry.ts","../../../libs/design/media-gallery/src/media-renderer/media-renderer.component.ts","../../../libs/design/media-gallery/src/thumbnail/thumbnail-compat.token.ts","../../../libs/design/media-gallery/src/thumbnail/thumbnail.directive.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.html","../../../libs/design/media-gallery/src/media-gallery.module.ts","../../../libs/design/media-gallery/src/media-gallery.ts","../../../libs/design/media-gallery/src/daffodil-design-media-gallery.ts"],"sourcesContent":["import { createSingleInjectionToken } from '@daffodil/core';\n\nimport { DaffMediaGalleryRegistration } from './media-gallery-registration.interface';\n\nexport const {\n token: DAFF_MEDIA_GALLERY_TOKEN,\n /**\n * Provider function for {@link DAFF_MEDIA_GALLERY_TOKEN}.\n */\n provider: provideDaffMediaGalleryToken,\n} = createSingleInjectionToken<DaffMediaGalleryRegistration>('DAFF_MEDIA_GALLERY_TOKEN');\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DaffThumbnailRegistration } from '../thumbnail/thumbnail-registration.interface';\n\nexport interface DaffMediaGalleryDict {\n [galleryName: string]: BehaviorSubject<DaffMediaGallery>;\n}\n\nexport interface DaffMediaGallery {\n gallery: DaffMediaGalleryRegistration;\n thumbnails: DaffThumbnailRegistration[];\n}\n\nexport const isGallery = (element: DaffThumbnailRegistration | DaffMediaGalleryRegistration): element is DaffMediaGalleryRegistration => !('gallery' in element);\n\n@Injectable({ providedIn: 'root' })\nexport class DaffMediaGalleryRegistry {\n galleries: DaffMediaGalleryDict = {};\n\n /**\n * @description\n * Adds a media element to the internal registry.\n */\n add(gallery: DaffMediaGalleryRegistration, thumbnail?: DaffThumbnailRegistration) {\n if(this.galleries[gallery.name]) {\n let newGallery = this.galleries[gallery.name].getValue();\n\n if(thumbnail) {\n newGallery = {\n ...newGallery,\n thumbnails: [\n ...newGallery.thumbnails.filter(t => t !== thumbnail),\n thumbnail,\n ],\n };\n }\n\n this.galleries[gallery.name].next(newGallery);\n } else {\n this.galleries[gallery.name] = new BehaviorSubject({\n gallery,\n thumbnails: thumbnail ? [thumbnail] : [],\n });\n }\n\n if(this.galleries[gallery.name].getValue().thumbnails.length === 1) {\n thumbnail.select();\n }\n }\n\n /**\n * @description\n * Removes a thumbnail or gallery from the internal registry.\n */\n remove(element: DaffThumbnailRegistration | DaffMediaGalleryRegistration) {\n if(isGallery(element)) {\n this.removeGallery(element);\n } else {\n this.removeThumbnail(element);\n }\n }\n\n private removeThumbnail(thumbnail: DaffThumbnailRegistration) {\n if(!this.galleries[thumbnail.gallery.name]) {\n return;\n }\n const gallery = this.galleries[thumbnail.gallery.name].getValue();\n const index = gallery.thumbnails.indexOf(thumbnail);\n\n if(index === -1) {\n return;\n }\n\n this.galleries[thumbnail.gallery.name].next({\n ...gallery,\n thumbnails: [\n ...gallery.thumbnails.slice(0, index),\n ...gallery.thumbnails.slice(index + 1),\n ],\n });\n }\n\n private removeGallery(gallery: DaffMediaGalleryRegistration) {\n delete this.galleries[gallery.name];\n }\n\n /**\n * @description\n * Selects a media element for a given gallery.\n */\n select(thumbnail: DaffThumbnailRegistration) {\n if(!this.galleries[thumbnail.gallery.name]) {\n return;\n }\n\n const gallery = this.galleries[thumbnail.gallery.name].getValue();\n const index = gallery.thumbnails.indexOf(thumbnail);\n\n if(thumbnail.selected || index === -1){\n return;\n }\n\n this.galleries[thumbnail.gallery.name].next({\n ...gallery,\n thumbnails: [\n ...gallery.thumbnails.filter(m => m !== thumbnail).map(m => m.deselect()),\n thumbnail.select(),\n ],\n });\n }\n}\n","import {\n Component,\n OnInit,\n ComponentFactoryResolver,\n Type,\n ViewChild,\n ViewContainerRef,\n TemplateRef,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\nimport { DaffMediaGalleryRegistry } from '../registry/media-gallery.registry';\n\n/**\n * Dynamically renders the selected `DaffThumbnailDirective` in a `daff-media-gallery` any time the selected thumbnail\n * changes.\n */\n@Component({\n selector: 'daff-media-renderer',\n template: '<ng-template></ng-template>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class DaffMediaRendererComponent implements OnInit, OnDestroy {\n\n /**\n * Private tracker for indicating when the component is destroyed.\n */\n private _destroy$ = new Subject();\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private registry: DaffMediaGalleryRegistry,\n @Inject(DAFF_MEDIA_GALLERY_TOKEN) private gallery: DaffMediaGalleryRegistration,\n ) {}\n\n /**\n * The slot that the \"component\" is rendered into.\n */\n @ViewChild(TemplateRef, { static: true, read: ViewContainerRef })\n slot: ViewContainerRef;\n\n ngOnInit() {\n this.registry.galleries[this.gallery.name]\n .pipe(takeUntil(this._destroy$))\n .subscribe((gallery) => {\n\n /**\n * Clear out the slot for the dynamically rendered thumbnail\n */\n this.slot.clear();\n\n const _selectedThumbnail = gallery.thumbnails.filter(media => media.selected).shift();\n\n /**\n * If there's no selected media, render nothing.\n */\n if(!_selectedThumbnail) {\n return;\n }\n\n const _selectedThumbnailComponent = _selectedThumbnail.component;\n\n /**\n * Create the component to insert.\n */\n const component = this.componentFactoryResolver.resolveComponentFactory(\n <Type<unknown>>_selectedThumbnailComponent.constructor,\n );\n const componentRef = this.slot.createComponent(component);\n\n /**\n * Fill the component with it's values from the original component\n */\n component.inputs.forEach(input => {\n componentRef.instance[input.propName] = _selectedThumbnailComponent[input.propName];\n });\n\n /**\n * Trigger a change detection on the component tree, outside the cycle to address\n * the fact that the component was created outside a typical CD loop.\n */\n componentRef.changeDetectorRef.detectChanges();\n });\n }\n\n /**\n * Used to unsubscribe from the dynamic component.\n */\n ngOnDestroy() {\n this._destroy$.next(true);\n this._destroy$.unsubscribe();\n }\n}\n\n","import { createSingleInjectionToken } from '@daffodil/core';\n\nexport const {\n /**\n * A multi provider injection token that marks a component as renderable for the `DaffMediaRendererComponent`.\n */\n token: daffThumbnailCompatToken,\n /**\n * Provider function for {@link daffThumbnailCompatToken}.\n */\n provider: provideDaffThumbnailCompatToken,\n} = createSingleInjectionToken<unknown>('thumbnailCompatToken');\n","import {\n Directive,\n Inject,\n Type,\n HostBinding,\n HostListener,\n OnInit,\n OnDestroy,\n} from '@angular/core';\n\nimport { DaffSelectableDirective } from '@daffodil/design';\n\nimport { daffThumbnailCompatToken } from './thumbnail-compat.token';\nimport { DaffThumbnailRegistration } from './thumbnail-registration.interface';\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\nimport { DaffMediaGalleryRegistry } from '../registry/media-gallery.registry';\n\n/**\n * A directive marking thumbnails for the `DaffMediaRendererComponent`. Needs to be wrapped in a `daff-media-gallery` component\n * and needs to be placed on a component that is provided as a `daffThumbnailCompatToken`.\n */\n@Directive({\n selector: '[daffThumbnail]',\n standalone: true,\n hostDirectives: [{\n directive: DaffSelectableDirective,\n inputs: ['selected'],\n outputs: ['becameSelected'],\n }],\n})\nexport class DaffThumbnailDirective implements OnInit, OnDestroy, DaffThumbnailRegistration {\n constructor(\n @Inject(daffThumbnailCompatToken) public component: Type<unknown>,\n private registry: DaffMediaGalleryRegistry,\n @Inject(DAFF_MEDIA_GALLERY_TOKEN) public gallery: DaffMediaGalleryRegistration,\n private selectedDirective: DaffSelectableDirective,\n ) {}\n\n public get selected() {\n return this.selectedDirective.selected;\n }\n\n public select() {\n this.selectedDirective.select();\n return this;\n }\n\n public deselect() {\n this.selectedDirective.deselect();\n return this;\n }\n\n /**\n * Adds a class for styling a thumbnail\n */\n @HostBinding('class.daff-thumbnail') class = true;\n\n /**\n * Adds a click event to trigger selection of the media element.\n *\n * @param event: MouseEvent\n */\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n this.registry.select(this);\n }\n\n ngOnInit(): void {\n this.registry.add(this.gallery, this);\n }\n\n ngOnDestroy(): void {\n this.registry.remove(this);\n }\n}\n","import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n Input,\n OnInit,\n OnDestroy,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffSkeletonableDirective,\n} from '@daffodil/design';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\nimport { DaffMediaRendererComponent } from '../media-renderer/media-renderer.component';\nimport { DaffMediaGalleryRegistry } from '../registry/media-gallery.registry';\nimport { DaffThumbnailDirective } from '../thumbnail/thumbnail.directive';\n\nlet uniqueGalleryId = 0;\n\n@Component({\n selector: 'daff-media-gallery',\n templateUrl: './media-gallery.component.html',\n styleUrls: ['./media-gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n { provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },\n ],\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n imports: [\n DaffMediaRendererComponent,\n DaffThumbnailDirective,\n ],\n})\nexport class DaffMediaGalleryComponent implements DaffMediaGalleryRegistration, OnInit, OnDestroy {\n /**\n * Adds a class for styling the media gallery\n */\n @HostBinding('class.daff-media-gallery') class = true;\n\n /**\n * The name of the gallery\n */\n @Input() name = `${uniqueGalleryId}`;\n\n constructor(private registry: DaffMediaGalleryRegistry) {\n uniqueGalleryId++;\n }\n\n ngOnInit() {\n this.registry.add(this);\n }\n\n ngOnDestroy() {\n this.registry.remove(this);\n }\n}\n","<div class=\"daff-media-gallery__thumbnails\">\n\t<ng-content select=\"[daffThumbnail]\"></ng-content>\n</div>\n<div class=\"daff-media-gallery__selected-thumbnail\">\n\t<daff-media-renderer></daff-media-renderer>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffMediaRendererComponent } from './media-renderer/media-renderer.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_MEDIA_GALLERY_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n DaffMediaRendererComponent,\n ],\n exports: [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n})\nexport class DaffMediaGalleryModule {}\n","import { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffMediaRendererComponent } from './media-renderer/media-renderer.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\nexport const DAFF_MEDIA_GALLERY_COMPONENTS = <const> [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n DaffMediaRendererComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffMediaGalleryRegistry"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-design-media-gallery.mjs","sources":["../../../libs/design/media-gallery/src/helpers/media-gallery-token.ts","../../../libs/design/media-gallery/src/thumbnail/thumbnail.directive.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.ts","../../../libs/design/media-gallery/src/media-gallery/media-gallery.component.html","../../../libs/design/media-gallery/src/media-gallery.module.ts","../../../libs/design/media-gallery/src/media-gallery.ts","../../../libs/design/media-gallery/src/daffodil-design-media-gallery.ts"],"sourcesContent":["import { createSingleInjectionToken } from '@daffodil/core';\n\nimport { DaffMediaGalleryRegistration } from './media-gallery-registration.interface';\n\nexport const {\n token: DAFF_MEDIA_GALLERY_TOKEN,\n /**\n * Provider function for {@link DAFF_MEDIA_GALLERY_TOKEN}.\n */\n provider: provideDaffMediaGalleryToken,\n} = createSingleInjectionToken<DaffMediaGalleryRegistration>('DAFF_MEDIA_GALLERY_TOKEN');\n","import {\n Directive,\n Inject,\n Input,\n TemplateRef,\n OnInit,\n isDevMode,\n} from '@angular/core';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\n\nlet uniqueThumbnailId = 0;\n\n/**\n * A structural directive marking thumbnails for the `DaffMediaGalleryComponent`.\n *\n * ```html\n * <ng-template daffThumbnail></ng-template>\n * ```\n */\n@Directive({\n selector: '[daffThumbnail]',\n})\nexport class DaffThumbnailDirective implements OnInit {\n\n /**\n * The id of the thumbnail.\n */\n get id(): string {\n return this.gallery.id + '-thumbnail-' + uniqueThumbnailId;\n }\n\n /**\n * The id of the thumbnail panel.\n */\n get panelId(): string {\n return this.id + '-el';\n }\n\n /**\n * The file path to a thumbnail, presumably an image.\n */\n @Input() thumbnailSrc = undefined;\n\n\n /**\n * The button label for the thumbnail.\n */\n @Input() label: string = undefined;\n\n @Input() isVideo = false;\n\n /**\n * @docs-private\n */\n constructor(\n @Inject(DAFF_MEDIA_GALLERY_TOKEN) public gallery: DaffMediaGalleryRegistration,\n public templateRef: TemplateRef<unknown>,\n ) {\n uniqueThumbnailId++;\n }\n\n /**\n * @docs-private\n */\n ngOnInit() {\n if(!this.label && isDevMode()) {\n console.warn('The thumbnail ' + this.id + ' is missing a label.');\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n Input,\n QueryList,\n ViewChildren,\n ElementRef,\n Output,\n EventEmitter,\n contentChildren,\n signal,\n computed,\n Signal,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffSelectableDirective,\n DaffSkeletonableDirective,\n} from '@daffodil/design';\n\nimport { DaffMediaGalleryRegistration } from '../helpers/media-gallery-registration.interface';\nimport { DAFF_MEDIA_GALLERY_TOKEN } from '../helpers/media-gallery-token';\nimport { DaffThumbnailDirective } from '../thumbnail/thumbnail.directive';\n\nlet uniqueGalleryId = 0;\n\n/**\n * ```html\n * <daff-media-gallery></daff-media-gallery>\n * ```\n */\n@Component({\n selector: 'daff-media-gallery',\n templateUrl: './media-gallery.component.html',\n styleUrls: ['./media-gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n { provide: DAFF_MEDIA_GALLERY_TOKEN, useExisting: DaffMediaGalleryComponent },\n ],\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffSkeletonableDirective,\n inputs: ['skeleton'],\n },\n ],\n imports: [\n DaffThumbnailDirective,\n NgTemplateOutlet,\n DaffSelectableDirective,\n ],\n})\nexport class DaffMediaGalleryComponent implements DaffMediaGalleryRegistration {\n\n /**\n * @docs-private\n */\n @HostBinding('attr.role') role = 'tablist';\n\n /**\n * The internal id of the gallery.\n */\n private _id: string;\n\n /**\n * The id of the gallery.\n */\n @HostBinding('attr.id')\n @Input()\n get id() {\n return this._id;\n }\n set id(val: string | undefined | null) {\n if(!val){\n return;\n }\n this._id = val;\n };\n\n /**\n * @docs-private\n *\n * Adds a class for styling the media gallery\n */\n @HostBinding('class.daff-media-gallery') private class = true;\n\n /**\n * An event indicating that the selected media gallery element has changed.\n */\n @Output() elementChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @docs-private\n */\n _thumbnails = contentChildren(DaffThumbnailDirective);\n\n /**\n * @docs-private\n */\n @ViewChildren('thumbnailButtons', { read: ElementRef }) private _thumbnailButtons: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @docs-private\n */\n constructor(private skeletonDirective: DaffSkeletonableDirective) {\n uniqueGalleryId++;\n }\n\n /**\n * @docs-private\n *\n * Whether or not the component its currently displaying its skeleton state.\n */\n get skeleton() {\n return this.skeletonDirective.skeleton;\n }\n\n /**\n * @docs-private\n */\n _selectedThumbnail: Signal<DaffThumbnailDirective> = computed(() => {\n const idx = this._selectedIndex();\n if(!idx) {\n return this._thumbnails().at(0);\n }\n return this._thumbnails().at(idx);\n });\n\n private _selectedIndex = signal<number | null>(null);\n\n\n private focusSelected() {\n this._thumbnailButtons.get(this._selectedIndex())?.nativeElement.focus();\n }\n\n /**\n * Select a specific entry in the media gallery by its index (starting at 0).\n */\n selectIndex(index: number) {\n this._selectedIndex.set(index);\n this.elementChange.emit(index);\n }\n\n /**\n * Navigate to the next element in the list of thumbnails.\n */\n next(focus: boolean = true) {\n this._selectedIndex.update((curr) => ((curr ?? 0) + 1 + this._thumbnails().length) % this._thumbnails().length);\n this.elementChange.emit(this._selectedIndex());\n this.focusSelected();\n }\n\n /**\n * Navigate to the previous element in the list of thumbnails.\n */\n previous(focus: boolean = true) {\n this._selectedIndex.update((curr) => ((curr ?? 0) - 1 + this._thumbnails().length) % this._thumbnails().length);\n this.elementChange.emit(this._selectedIndex());\n this.focusSelected();\n }\n\n /**\n * Select the first element\n */\n selectFirst(focus: boolean = true) {\n this._selectedIndex.set(0);\n this.elementChange.emit(this._selectedIndex());\n this.focusSelected();\n }\n\n /**\n * Select the last element of the gallery.\n */\n selectLast(focus: boolean = true) {\n this._selectedIndex.set(this._thumbnails().length - 1);\n this.elementChange.emit(this._selectedIndex());\n this.focusSelected();\n }\n}\n","<ng-content></ng-content>\n\n<div class=\"daff-media-gallery__thumbnails\" #thumbnailsEl>\n\t@if(skeleton) {\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t\t<div class=\"daff-thumbnail\"></div>\n\t}\n\t@else {\n\t\t@for (thumbnail of _thumbnails(); track thumbnail; let index = $index) {\n\t\t\t<button \n\t\t\t\t#thumbnailButtons\n\t\t\t\tclass=\"daff-thumbnail\" \n\t\t\t\trole=\"tab\"\n\t\t\t\tdaffSelected\n\t\t\t\t[selected]=\"thumbnail === _selectedThumbnail()\"\n\t\t\t\tattr.aria-label=\"{{ thumbnail.label ?? 'Gallery Element ' + (index + 1) }}\"\n\t\t\t\t[attr.aria-selected]=\"thumbnail === _selectedThumbnail() ? 'true' : 'false'\"\n\t\t\t\t[attr.aria-controls]=\"thumbnail.panelId\"\n\t\t\t\t[attr.tabindex]=\"thumbnail === _selectedThumbnail() ? 0 : -1\"\n\t\t\t\t(click)=\"selectIndex(index)\"\n\t\t\t\t[attr.id]=\"thumbnail.id\" \n\t\t\t\t(keydown.arrowright)=\"next()\"\n\t\t\t\t(keydown.arrowleft)=\"previous()\">\n\t\t\t\t@if (thumbnail.thumbnailSrc) {\n\t\t\t\t\t<img [src]=\"thumbnail.thumbnailSrc\" aria-hidden=\"true\"/>\n\t\t\t\t}\n\t\t\t\t@if (thumbnail.isVideo) {\n\t\t\t\t\t<div class=\"daff-media-gallery__video-button\">\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</button>\n\t\t}\n\t}\n</div>\n@let el = this._selectedThumbnail();\n<div \n\tclass=\"daff-media-gallery__selected-thumbnail\"\n\ttabindex=\"0\"\n\t#selectedThumbnail\n\trole=\"tabpanel\"\n\t[attr.id]=\"el?.panelId\">\n\t\t@if(el) {\n\t\t\t<ng-container *ngTemplateOutlet=\"el.templateRef\"></ng-container>\n\t\t}\n\t\t@else {\n\t\t\t<div class=\"daff-media-gallery__skeleton-placeholder\"></div>\n\t\t}\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_MEDIA_GALLERY_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n exports: [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n ],\n})\nexport class DaffMediaGalleryModule {}\n","import { DaffMediaGalleryComponent } from './media-gallery/media-gallery.component';\nimport { DaffThumbnailDirective } from './thumbnail/thumbnail.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_MEDIA_GALLERY_COMPONENTS = <const> [\n DaffMediaGalleryComponent,\n DaffThumbnailDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|