@dereekb/dbx-firebase 12.6.15 → 12.6.17

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.
Files changed (22) hide show
  1. package/esm2022/lib/model/modules/model/entities/model.entities.component.mjs +67 -15
  2. package/esm2022/lib/model/modules/model/entities/model.entities.entity.component.mjs +5 -3
  3. package/esm2022/lib/model/modules/model/entities/model.entities.popover.button.component.mjs +12 -7
  4. package/esm2022/lib/model/modules/model/entities/model.entities.popover.component.mjs +11 -7
  5. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.mjs +19 -5
  6. package/esm2022/lib/model/modules/model/entities/model.entities.widget.service.mjs +10 -2
  7. package/esm2022/lib/model/modules/model/model.key.component.mjs +3 -3
  8. package/fesm2022/dereekb-dbx-firebase.mjs +111 -29
  9. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  10. package/lib/model/_model.scss +15 -0
  11. package/lib/model/modules/model/_model.scss +33 -0
  12. package/lib/model/modules/model/entities/model.entities.component.d.ts +30 -5
  13. package/lib/model/modules/model/entities/model.entities.entity.component.d.ts +4 -0
  14. package/lib/model/modules/model/entities/model.entities.popover.button.component.d.ts +15 -3
  15. package/lib/model/modules/model/entities/model.entities.popover.component.d.ts +12 -2
  16. package/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.d.ts +6 -3
  17. package/lib/model/modules/model/entities/model.entities.widget.service.d.ts +8 -0
  18. package/lib/style/_all-core.scss +3 -1
  19. package/lib/style/_all-theme.scss +2 -0
  20. package/lib/style/_all-typography.scss +2 -0
  21. package/lib/style/_core.scss +1 -1
  22. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ @use '../style/config';
2
+ @use '../style/theming';
3
+ @use './modules/model/model';
4
+
5
+ @mixin all-model-core($theme-config) {
6
+ @include model.core();
7
+ }
8
+
9
+ @mixin all-model-typography($theme-config-or-typography-config) {
10
+ @include model.typography($theme-config-or-typography-config);
11
+ }
12
+
13
+ @mixin all-model-theme($theme-config) {
14
+ @include model.theme($theme-config);
15
+ }
@@ -0,0 +1,33 @@
1
+ @use '../../../style/theming';
2
+
3
+ $dbx-firebase-model-entities-expansion-panel-height: 64px;
4
+
5
+ // MARK: Mixin
6
+ @mixin core() {
7
+ .dbx-firebase-model-entities-accordion {
8
+ --mat-expansion-header-collapsed-state-height: #{$dbx-firebase-model-entities-expansion-panel-height};
9
+ --mat-expansion-header-expanded-state-height: #{$dbx-firebase-model-entities-expansion-panel-height};
10
+ }
11
+ }
12
+
13
+ @mixin color($theme-config) {
14
+ }
15
+
16
+ @mixin typography($theme-config-or-typography-config) {
17
+ }
18
+
19
+ @mixin theme($theme-config) {
20
+ @include theming.private-check-duplicate-theme-styles($theme-config, 'dbx-firebase-model-model') {
21
+ $color: theming.m2-get-color-config($theme-config);
22
+ $density: theming.m2-get-density-config($theme-config);
23
+ $typography: theming.m2-get-typography-config($theme-config);
24
+
25
+ @if $color !=null {
26
+ @include color($theme-config);
27
+ }
28
+
29
+ @if $typography !=null {
30
+ @include typography($theme-config);
31
+ }
32
+ }
33
+ }
@@ -3,20 +3,45 @@ import { DbxFirebaseModelEntity, DbxFirebaseModelEntityWithKeyAndStore } from '.
3
3
  import { Observable } from 'rxjs';
4
4
  import { Maybe } from '@dereekb/util';
5
5
  import { LoadingState } from '@dereekb/rxjs';
6
+ import { DbxFirebaseModelEntitiesWidgetService } from './model.entities.widget.service';
6
7
  import * as i0 from "@angular/core";
8
+ interface DbxFirebaseModelEntitiesComponentAllEntities {
9
+ readonly entities: DbxFirebaseModelEntityWithKeyAndStore[];
10
+ readonly registeredEntities: DbxFirebaseModelEntityWithKeyAndStore[];
11
+ readonly unregisteredEntities: DbxFirebaseModelEntityWithKeyAndStore[];
12
+ readonly onlyShowRegisteredTypes?: Maybe<boolean>;
13
+ }
7
14
  export declare class DbxFirebaseModelEntitiesComponent implements OnDestroy {
15
+ readonly entitiesWidgetService: DbxFirebaseModelEntitiesWidgetService;
8
16
  /**
9
17
  * Whether the accordion should allow multiple expanded panels.
10
18
  */
11
19
  readonly multi: import("@angular/core").InputSignal<boolean>;
20
+ /**
21
+ * If true, will only show entities that have a registered widget entry.
22
+ *
23
+ * Defaults to true.
24
+ */
25
+ readonly onlyShowRegisteredTypes: import("@angular/core").InputSignal<Maybe<boolean>>;
26
+ /**
27
+ * If true, will show unregistered entities, even if onlyShowRegisteredTypes is true.
28
+ */
29
+ readonly showUnregisteredTypesSignal: import("@angular/core").WritableSignal<Maybe<boolean>>;
30
+ readonly onlyShowRegisteredTypesSignal: import("@angular/core").Signal<Maybe<boolean>>;
31
+ readonly onlyShowRegisteredTypes$: Observable<Maybe<boolean>>;
12
32
  readonly entities: import("@angular/core").InputSignal<Observable<LoadingState<DbxFirebaseModelEntity[]>> | undefined>;
13
33
  readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>>;
14
- readonly entitiesWithKeysState$: Observable<LoadingState<DbxFirebaseModelEntityWithKeyAndStore[]>>;
15
- readonly entitiesWithKeys$: Observable<Maybe<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>>;
16
- readonly entitiesWithKeysSignal: import("@angular/core").Signal<Maybe<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>>;
34
+ readonly allEntitiesState$: Observable<LoadingState<DbxFirebaseModelEntitiesComponentAllEntities>>;
35
+ readonly allEntities$: Observable<Maybe<DbxFirebaseModelEntitiesComponentAllEntities>>;
36
+ readonly allEntitiesSignal: import("@angular/core").Signal<Maybe<DbxFirebaseModelEntitiesComponentAllEntities>>;
37
+ readonly entitiesWithKeysSignal: import("@angular/core").Signal<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[] | undefined>;
38
+ readonly unregisteredEntitiesCountSignal: import("@angular/core").Signal<number>;
39
+ readonly showViewUnregisteredEntitiesButtonSignal: import("@angular/core").Signal<boolean | import("@dereekb/util").MaybeNot>;
17
40
  readonly hasNoEntitiesSignal: import("@angular/core").Signal<boolean>;
18
- readonly context: import("@dereekb/rxjs").MutableLoadingStateContext<unknown, LoadingState<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>, import("@dereekb/rxjs").LoadingContextEvent & LoadingState<DbxFirebaseModelEntityWithKeyAndStore<any, import("dist/packages/firebase/src").FirestoreDocument<any, import("dist/packages/firebase/src").FirestoreModelIdentity>>[]>>;
41
+ readonly context: import("@dereekb/rxjs").MutableLoadingStateContext<unknown, LoadingState<DbxFirebaseModelEntitiesComponentAllEntities>, import("@dereekb/rxjs").LoadingContextEvent & LoadingState<DbxFirebaseModelEntitiesComponentAllEntities>>;
19
42
  ngOnDestroy(): void;
43
+ clickShowUnregisteredEntities(): void;
20
44
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesComponent, "dbx-firebase-model-entities", never, { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": false; "isSignal": true; }; }, {}, never, ["[empty]"], true, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesComponent, "dbx-firebase-model-entities", never, { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "onlyShowRegisteredTypes": { "alias": "onlyShowRegisteredTypes"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": false; "isSignal": true; }; }, {}, never, ["[empty]"], true, never>;
22
46
  }
47
+ export {};
@@ -25,6 +25,10 @@ export declare class DbxFirebaseModelEntitiesEntityComponent implements OnDestro
25
25
  readonly widgetInjectionConfig$: Observable<import("./model.entities.widget").DbxFirebaseModelEntitiesWidgetInjectionConfig | null>;
26
26
  readonly hasTypeInfoSignal: import("@angular/core").Signal<boolean | undefined>;
27
27
  readonly displayInfoSignal: import("@angular/core").Signal<import("@dereekb/dbx-core").IconAndTitle | undefined>;
28
+ readonly modelIdentitySignal: import("@angular/core").Signal<(import("dist/packages/firebase/src").FirestoreModelTypeRef<string> & import("dist/packages/firebase/src").FirestoreCollectionNameRef<string> & import("dist/packages/firebase/src").FirestoreCollectionTypeRef & {
29
+ readonly type: import("dist/packages/firebase/src").FirestoreModelIdentityType;
30
+ }) | undefined>;
31
+ readonly modelTypeSignal: import("@angular/core").Signal<string | undefined>;
28
32
  readonly widgetInjectionConfigSignal: import("@angular/core").Signal<import("./model.entities.widget").DbxFirebaseModelEntitiesWidgetInjectionConfig | null | undefined>;
29
33
  readonly entityWidgetConfigSignal: import("@angular/core").Signal<Maybe<import("@dereekb/dbx-core").DbxInjectionComponentConfig<unknown>>>;
30
34
  readonly commonWidgetConfigSignal: import("@angular/core").Signal<Maybe<import("@dereekb/dbx-core").DbxInjectionComponentConfig<unknown>>>;
@@ -1,16 +1,28 @@
1
1
  import { ElementRef } from '@angular/core';
2
- import { AbstractPopoverRefDirective } from '@dereekb/dbx-web';
2
+ import { AbstractPopoverRefDirective, DbxButtonStyle } from '@dereekb/dbx-web';
3
3
  import { NgPopoverRef } from 'ng-overlay-container';
4
4
  import { DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin } from './model.entities.popover.component';
5
5
  import { Maybe } from '@dereekb/util';
6
6
  import { DbxFirebaseModelEntitiesSource } from './model.entities';
7
+ import { DbxButtonDisplay } from '@dereekb/dbx-core';
7
8
  import * as i0 from "@angular/core";
8
- export type DbxFirebaseModelEntitiesPopoverButtonConfig = DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin;
9
+ export interface DbxFirebaseModelEntitiesPopoverButtonConfig extends DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin {
10
+ /**
11
+ * The display configuration for the button.
12
+ */
13
+ readonly buttonDisplay?: Maybe<DbxButtonDisplay>;
14
+ /**
15
+ * The style configuration for the button.
16
+ */
17
+ readonly buttonStyle?: Maybe<DbxButtonStyle>;
18
+ }
9
19
  export declare class DbxFirebaseModelEntitiesPopoverButtonComponent extends AbstractPopoverRefDirective<unknown, unknown> {
10
20
  private readonly _dbxPopoverService;
11
21
  readonly entitiesSource: DbxFirebaseModelEntitiesSource;
12
22
  readonly buttonElement: import("@angular/core").Signal<ElementRef<any>>;
13
- readonly config: import("@angular/core").InputSignal<DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin | undefined>;
23
+ readonly config: import("@angular/core").InputSignal<DbxFirebaseModelEntitiesPopoverButtonConfig | undefined>;
24
+ readonly buttonDisplaySignal: import("@angular/core").Signal<DbxButtonDisplay>;
25
+ readonly buttonStyleSignal: import("@angular/core").Signal<Maybe<DbxButtonStyle>>;
14
26
  protected _makePopoverRef(origin?: Maybe<ElementRef>): NgPopoverRef<unknown, unknown>;
15
27
  showEntitiesPopover(): void;
16
28
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesPopoverButtonComponent, never>;
@@ -1,9 +1,10 @@
1
1
  import { ElementRef } from '@angular/core';
2
2
  import { NgPopoverRef } from 'ng-overlay-container';
3
- import { AbstractPopoverDirective, DbxPopoverKey, DbxPopoverService } from '@dereekb/dbx-web';
3
+ import { AbstractPopoverDirective, DbxPopoverConfigSizing, DbxPopoverKey, DbxPopoverService } from '@dereekb/dbx-web';
4
4
  import { Observable } from 'rxjs';
5
5
  import { LoadingState } from '@dereekb/rxjs';
6
6
  import { DbxFirebaseModelEntity } from './model.entities';
7
+ import { Maybe } from '@dereekb/util';
7
8
  import * as i0 from "@angular/core";
8
9
  export interface DbxFirebaseModelEntitiesPopoverConfig {
9
10
  /**
@@ -30,16 +31,25 @@ export interface DbxFirebaseModelEntitiesPopoverConfig {
30
31
  * Observable of entities to display.
31
32
  */
32
33
  readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>>;
34
+ /**
35
+ * Whether or not to only show entities that have a registered widget entry.
36
+ */
37
+ readonly onlyShowRegisteredTypes?: Maybe<boolean>;
38
+ /**
39
+ * Additional popover configuration.
40
+ */
41
+ readonly popoverSizingConfig?: Maybe<DbxPopoverConfigSizing>;
33
42
  }
34
43
  export type DbxFirebaseModelEntitiesPopoverConfigWithoutOrigin = Omit<DbxFirebaseModelEntitiesPopoverConfig, 'origin' | 'entities$'>;
35
44
  export declare const DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY = "entities";
36
45
  export declare class DbxFirebaseModelEntitiesPopoverComponent extends AbstractPopoverDirective<unknown, DbxFirebaseModelEntitiesPopoverConfig> {
37
46
  readonly entities$: Observable<LoadingState<DbxFirebaseModelEntity[]>> | undefined;
38
- static openPopover(popupService: DbxPopoverService, { origin, header, icon, emptyText, entities$ }: DbxFirebaseModelEntitiesPopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef;
47
+ static openPopover(popupService: DbxPopoverService, config: DbxFirebaseModelEntitiesPopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef;
39
48
  get config(): DbxFirebaseModelEntitiesPopoverConfig;
40
49
  readonly icon: string;
41
50
  readonly header: string;
42
51
  readonly emptyText: string;
52
+ readonly onlyShowRegisteredTypes: Maybe<boolean>;
43
53
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesPopoverComponent, never>;
44
54
  static ɵcmp: i0.ɵɵComponentDeclaration<DbxFirebaseModelEntitiesPopoverComponent, "ng-component", never, {}, {}, never, never, true, never>;
45
55
  }
@@ -1,12 +1,15 @@
1
- import { OnDestroy } from '@angular/core';
1
+ import { OnDestroy, Signal } from '@angular/core';
2
2
  import { AbstractDbxFirebaseModelEntitiesWidgetDirective } from './model.entities.widget.entity.abstract.directive';
3
+ import { DownloadTextContent } from '@dereekb/dbx-web';
4
+ import { Maybe } from '@dereekb/util';
3
5
  import * as i0 from "@angular/core";
4
6
  /**
5
7
  * A debug widget component that displays entity data and metadata.
6
8
  */
7
9
  export declare class DbxFirebaseModelEntitiesDebugWidgetComponent extends AbstractDbxFirebaseModelEntitiesWidgetDirective implements OnDestroy {
8
- readonly currentKey: import("@angular/core").Signal<import("dist/packages/util/src").Maybe<string>>;
9
- readonly currentData: import("@angular/core").Signal<any>;
10
+ readonly currentKey: Signal<Maybe<string>>;
11
+ readonly currentData: Signal<any>;
12
+ readonly contentSignal: Signal<Maybe<DownloadTextContent>>;
10
13
  readonly context: import("@dereekb/rxjs").MutableLoadingStateContext<unknown, import("@dereekb/rxjs").LoadingState<any>, import("@dereekb/rxjs").LoadingContextEvent & import("@dereekb/rxjs").LoadingState<any>>;
11
14
  ngOnDestroy(): void;
12
15
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesDebugWidgetComponent, never>;
@@ -7,6 +7,12 @@ export interface DbxFirebaseModelEntitiesWidgetEntry {
7
7
  * Widget type to respond to.
8
8
  */
9
9
  readonly identity: FirestoreModelIdentity;
10
+ /**
11
+ * The priority to use when sorting the entities.
12
+ *
13
+ * Higher values are displayed first in the list.
14
+ */
15
+ readonly sortPriority?: Maybe<number>;
10
16
  /**
11
17
  * Widget component that is specific to this entity.
12
18
  */
@@ -44,6 +50,7 @@ export declare class DbxFirebaseModelEntitiesWidgetService {
44
50
  private _commonComponentClass;
45
51
  private _debugComponentClass;
46
52
  private readonly _entries;
53
+ private readonly _sortPriorityMap;
47
54
  constructor(initialConfig?: DbxFirebaseModelEntitiesWidgetServiceConfig);
48
55
  getCommonComponentClass(): Maybe<Type<unknown>>;
49
56
  setCommonComponentClass(componentClass: Maybe<Type<unknown>>): void;
@@ -61,6 +68,7 @@ export declare class DbxFirebaseModelEntitiesWidgetService {
61
68
  getAllRegisteredWidgetIdentities(): FirestoreModelIdentity[];
62
69
  getWidgetEntry(identity: FirestoreModelIdentity): DbxFirebaseModelEntitiesWidgetEntry;
63
70
  getWidgetEntries(identities: Iterable<FirestoreModelIdentity>): DbxFirebaseModelEntitiesWidgetEntry[];
71
+ getSortPriorityMap(): Map<FirestoreModelIdentity, number>;
64
72
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFirebaseModelEntitiesWidgetService, [{ optional: true; }]>;
65
73
  static ɵprov: i0.ɵɵInjectableDeclaration<DbxFirebaseModelEntitiesWidgetService>;
66
74
  }
@@ -1,6 +1,8 @@
1
1
  @use '../auth/login/login';
2
+ @use '../model/model';
2
3
 
3
4
  // Includes all theming config
4
- @mixin all-component-core() {
5
+ @mixin all-component-core($theme-config) {
5
6
  @include login.core();
7
+ @include model.all-model-core($theme-config);
6
8
  }
@@ -1,6 +1,8 @@
1
1
  @use '../auth/login/login';
2
+ @use '../model/model';
2
3
 
3
4
  // Includes all theming config
4
5
  @mixin all-component-themes($theme-config) {
5
6
  @include login.theme($theme-config);
7
+ @include model.all-model-theme($theme-config);
6
8
  }
@@ -1,6 +1,8 @@
1
1
  @use '../auth/login/login';
2
+ @use '../model/model';
2
3
 
3
4
  // Includes all of the typographic styles.
4
5
  @mixin all-component-typographies($theme-config) {
5
6
  @include login.typography($theme-config);
7
+ @include model.all-model-typography($theme-config);
6
8
  }
@@ -4,5 +4,5 @@
4
4
  @use './config';
5
5
 
6
6
  @mixin core($theme-config: null) {
7
- @include all-core.all-component-core();
7
+ @include all-core.all-component-core($theme-config);
8
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-firebase",
3
- "version": "12.6.15",
3
+ "version": "12.6.17",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^18.0.0",
6
6
  "@dereekb/dbx-analytics": "*",