@propbinder/mobile-design 0.2.22 → 0.2.24

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnDestroy, AfterViewInit, OnInit, ElementRef, Injector, TemplateRef, EventEmitter, ApplicationRef, EnvironmentInjector, Type, AfterContentInit, ChangeDetectorRef } from '@angular/core';
2
+ import { OnDestroy, AfterViewInit, OnInit, ElementRef, OnChanges, Injector, SimpleChanges, TemplateRef, EventEmitter, ApplicationRef, EnvironmentInjector, Type, AfterContentInit, ChangeDetectorRef } from '@angular/core';
3
3
  import { ModalController, IonContent, NavController, GestureController, ModalOptions as ModalOptions$1 } from '@ionic/angular/standalone';
4
4
  import { Style } from '@capacitor/status-bar';
5
5
  import { ImpactStyle } from '@capacitor/haptics';
@@ -422,7 +422,7 @@ interface Language {
422
422
  * }
423
423
  * ```
424
424
  */
425
- declare class DsMobileProfileActionsSheetComponent {
425
+ declare class DsMobileProfileActionsSheetComponent implements OnInit, OnChanges {
426
426
  private modalController;
427
427
  private injector;
428
428
  /**
@@ -470,6 +470,8 @@ declare class DsMobileProfileActionsSheetComponent {
470
470
  */
471
471
  isAnimating: _angular_core.WritableSignal<boolean>;
472
472
  constructor(modalController: ModalController, injector: Injector);
473
+ ngOnChanges(changes: SimpleChanges): void;
474
+ ngOnInit(): void;
473
475
  /**
474
476
  * Handle action item click
475
477
  */
@@ -4144,21 +4146,14 @@ declare abstract class MobileModalBase implements OnInit, OnDestroy {
4144
4146
  * - Any custom CSS padding value
4145
4147
  *
4146
4148
  * @default '0'
4147
- *
4148
- * @example
4149
- * ```html
4150
- * <!-- Default: sections handle padding -->
4151
- * <ds-mobile-modal-base headerTitle="Details">
4152
- * <ds-mobile-section headline="Info">...</ds-mobile-section>
4153
- * </ds-mobile-modal-base>
4154
- *
4155
- * <!-- Legacy: content without sections -->
4156
- * <ds-mobile-modal-base headerTitle="Details" contentPadding="20px">
4157
- * <div>Padded content</div>
4158
- * </ds-mobile-modal-base>
4159
- * ```
4160
4149
  */
4161
4150
  contentPadding: _angular_core.InputSignal<string>;
4151
+ /**
4152
+ * Enable auto-height behavior for bottom sheets
4153
+ * When true, sets [fullscreen]="false" on ion-content and enforces flex: 0 0 auto
4154
+ * @default false
4155
+ */
4156
+ isAutoHeight: _angular_core.InputSignal<boolean>;
4162
4157
  /**
4163
4158
  * Emitted when modal is closed
4164
4159
  */
@@ -4200,7 +4195,7 @@ declare abstract class MobileModalBase implements OnInit, OnDestroy {
4200
4195
  */
4201
4196
  protected cleanupKeyboardListeners(): void;
4202
4197
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileModalBase, never>;
4203
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MobileModalBase, never, never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerMeta": { "alias": "headerMeta"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "enableKeyboardHandling": { "alias": "enableKeyboardHandling"; "required": false; "isSignal": true; }; "hasFixedBottom": { "alias": "hasFixedBottom"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "keyboardWillShow": "keyboardWillShow"; "keyboardWillHide": "keyboardWillHide"; }, never, never, true, never>;
4198
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MobileModalBase, never, never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "headerTitle": { "alias": "headerTitle"; "required": false; "isSignal": true; }; "headerMeta": { "alias": "headerMeta"; "required": false; "isSignal": true; }; "closeButtonLabel": { "alias": "closeButtonLabel"; "required": false; "isSignal": true; }; "enableKeyboardHandling": { "alias": "enableKeyboardHandling"; "required": false; "isSignal": true; }; "hasFixedBottom": { "alias": "hasFixedBottom"; "required": false; "isSignal": true; }; "contentPadding": { "alias": "contentPadding"; "required": false; "isSignal": true; }; "isAutoHeight": { "alias": "isAutoHeight"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "keyboardWillShow": "keyboardWillShow"; "keyboardWillHide": "keyboardWillHide"; }, never, never, true, never>;
4204
4199
  }
4205
4200
 
4206
4201
  /**
@@ -5360,6 +5355,7 @@ interface NewInquiryData {
5360
5355
  * ```
5361
5356
  */
5362
5357
  declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit {
5358
+ private modalController;
5363
5359
  titleInputRef?: ElementRef<HTMLElement>;
5364
5360
  titleInput?: DsTextareaComponent;
5365
5361
  fileInput?: ElementRef<HTMLInputElement>;
@@ -5468,16 +5464,18 @@ interface NewInquiryModalOptions {
5468
5464
  *
5469
5465
  * @example
5470
5466
  * ```typescript
5471
- * constructor(private inquiryModal: DsMobileNewInquiryModalService) {}
5467
+ * constructor(private newInquiryModal: DsMobileNewInquiryModalService) {}
5468
+ *
5469
+ * async createNewInquiry(): Promise<void> {
5470
+ * console.log('[InquiriesPage] FAB clicked, opening modal...');
5472
5471
  *
5473
- * async createNewInquiry() {
5474
- * await this.inquiryModal.open({
5472
+ * await this.newInquiryModal.open({
5475
5473
  * onSubmit: async (data) => {
5476
5474
  * console.log('Creating inquiry:', data);
5477
5475
  * // Call your API to create the inquiry
5478
5476
  * await this.apiService.createInquiry(data);
5479
5477
  * // Close the modal
5480
- * await this.inquiryModal.close();
5478
+ * await this.newInquiryModal.close();
5481
5479
  * }
5482
5480
  * });
5483
5481
  * }
@@ -5996,7 +5994,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
5996
5994
  /**
5997
5995
  * Emitted when the FAB is clicked
5998
5996
  */
5999
- fabClick: _angular_core.OutputEmitterRef<void>;
5997
+ clicked: _angular_core.OutputEmitterRef<void>;
6000
5998
  ngAfterViewInit(): void;
6001
5999
  /**
6002
6000
  * Calculate the FAB position dynamically based on actual tab bar height
@@ -6013,7 +6011,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
6013
6011
  handleClick(): void;
6014
6012
  ngOnDestroy(): void;
6015
6013
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileFabComponent, never>;
6016
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileFabComponent, "ds-mobile-fab", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "fabClick": "fabClick"; }, never, never, true, never>;
6014
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileFabComponent, "ds-mobile-fab", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
6017
6015
  }
6018
6016
 
6019
6017
  type AppIconSize = 'sm' | 'md' | 'lg' | 'xl';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.2.22",
3
+ "version": "0.2.24",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"
package/styles/ionic.css CHANGED
@@ -618,6 +618,24 @@ ion-tab-button::part(native) {
618
618
  max-height: calc(100vh - var(--app-sheet-top-offset)) !important;
619
619
  }
620
620
 
621
+ /* Auto-height support for base modals */
622
+ .ds-modal-base.auto-height {
623
+ display: flex;
624
+ flex-direction: column;
625
+ justify-content: flex-end;
626
+ }
627
+
628
+ .ds-modal-base.auto-height::part(content) {
629
+ height: auto !important;
630
+ margin-top: auto !important;
631
+ position: relative !important;
632
+ top: auto !important;
633
+ }
634
+
635
+ .ds-modal-base.auto-height ion-content {
636
+ height: auto !important;
637
+ --height: auto;
638
+ }
621
639
  .ds-modal-base::part(backdrop) {
622
640
  background: rgba(0, 0, 0, 0.4);
623
641
  backdrop-filter: blur(4px);