@propbinder/mobile-design 0.2.22 → 0.2.23
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/fesm2022/propbinder-mobile-design.mjs +104 -176
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +22 -26
- package/package.json +1 -1
- package/styles/ionic.css +18 -0
package/index.d.ts
CHANGED
|
@@ -2387,7 +2387,7 @@ declare class DsMobileListItemComponent {
|
|
|
2387
2387
|
* - 'center' - Align to center
|
|
2388
2388
|
* - 'bottom' - Align to bottom
|
|
2389
2389
|
*/
|
|
2390
|
-
align: _angular_core.InputSignal<"
|
|
2390
|
+
align: _angular_core.InputSignal<"top" | "center" | "bottom">;
|
|
2391
2391
|
/**
|
|
2392
2392
|
* Whether the list item is interactive (clickable and long-pressable)
|
|
2393
2393
|
* When true, adds interactive background, cursor pointer, and touch handlers
|
|
@@ -4144,21 +4144,14 @@ declare abstract class MobileModalBase implements OnInit, OnDestroy {
|
|
|
4144
4144
|
* - Any custom CSS padding value
|
|
4145
4145
|
*
|
|
4146
4146
|
* @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
4147
|
*/
|
|
4161
4148
|
contentPadding: _angular_core.InputSignal<string>;
|
|
4149
|
+
/**
|
|
4150
|
+
* Enable auto-height behavior for bottom sheets
|
|
4151
|
+
* When true, sets [fullscreen]="false" on ion-content and enforces flex: 0 0 auto
|
|
4152
|
+
* @default false
|
|
4153
|
+
*/
|
|
4154
|
+
isAutoHeight: _angular_core.InputSignal<boolean>;
|
|
4162
4155
|
/**
|
|
4163
4156
|
* Emitted when modal is closed
|
|
4164
4157
|
*/
|
|
@@ -4200,7 +4193,7 @@ declare abstract class MobileModalBase implements OnInit, OnDestroy {
|
|
|
4200
4193
|
*/
|
|
4201
4194
|
protected cleanupKeyboardListeners(): void;
|
|
4202
4195
|
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>;
|
|
4196
|
+
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
4197
|
}
|
|
4205
4198
|
|
|
4206
4199
|
/**
|
|
@@ -4748,7 +4741,7 @@ declare class DsMobileCardInlineComponent {
|
|
|
4748
4741
|
* - 'default' - Column layout with standard padding (gap: 12px, padding: 10px 12px)
|
|
4749
4742
|
* - 'compact' - Row layout with reduced padding (gap: 8px, padding: 10px)
|
|
4750
4743
|
*/
|
|
4751
|
-
variant: _angular_core.InputSignal<"
|
|
4744
|
+
variant: _angular_core.InputSignal<"compact" | "default">;
|
|
4752
4745
|
/**
|
|
4753
4746
|
* Whether the card is disabled
|
|
4754
4747
|
* Disables all interactions and reduces opacity
|
|
@@ -4811,7 +4804,7 @@ declare class DsMobileCardInlineBannerComponent {
|
|
|
4811
4804
|
* - 'default' - Standard padding and column layout
|
|
4812
4805
|
* - 'compact' - Reduced padding and row layout
|
|
4813
4806
|
*/
|
|
4814
|
-
layout: _angular_core.InputSignal<"
|
|
4807
|
+
layout: _angular_core.InputSignal<"compact" | "default">;
|
|
4815
4808
|
/**
|
|
4816
4809
|
* Emits when the banner is clicked
|
|
4817
4810
|
*/
|
|
@@ -4862,7 +4855,7 @@ declare class DsMobileCardInlineContactComponent {
|
|
|
4862
4855
|
* - 'default' - Standard padding and column layout
|
|
4863
4856
|
* - 'compact' - Reduced padding and row layout
|
|
4864
4857
|
*/
|
|
4865
|
-
layout: _angular_core.InputSignal<"
|
|
4858
|
+
layout: _angular_core.InputSignal<"compact" | "default">;
|
|
4866
4859
|
/**
|
|
4867
4860
|
* Whether the contact item is clickable
|
|
4868
4861
|
*/
|
|
@@ -4919,7 +4912,7 @@ declare class DsMobileCardInlineFileComponent {
|
|
|
4919
4912
|
* - 'default' - Standard padding and column layout
|
|
4920
4913
|
* - 'compact' - Reduced padding and row layout
|
|
4921
4914
|
*/
|
|
4922
|
-
layout: _angular_core.InputSignal<"
|
|
4915
|
+
layout: _angular_core.InputSignal<"compact" | "default">;
|
|
4923
4916
|
/**
|
|
4924
4917
|
* Optional URL to open when clicked
|
|
4925
4918
|
* If provided, clicking the card will open this URL in a new tab
|
|
@@ -5360,6 +5353,7 @@ interface NewInquiryData {
|
|
|
5360
5353
|
* ```
|
|
5361
5354
|
*/
|
|
5362
5355
|
declare class DsMobileNewInquiryModalComponent implements OnInit, AfterViewInit {
|
|
5356
|
+
private modalController;
|
|
5363
5357
|
titleInputRef?: ElementRef<HTMLElement>;
|
|
5364
5358
|
titleInput?: DsTextareaComponent;
|
|
5365
5359
|
fileInput?: ElementRef<HTMLInputElement>;
|
|
@@ -5468,16 +5462,18 @@ interface NewInquiryModalOptions {
|
|
|
5468
5462
|
*
|
|
5469
5463
|
* @example
|
|
5470
5464
|
* ```typescript
|
|
5471
|
-
* constructor(private
|
|
5465
|
+
* constructor(private newInquiryModal: DsMobileNewInquiryModalService) {}
|
|
5466
|
+
*
|
|
5467
|
+
* async createNewInquiry(): Promise<void> {
|
|
5468
|
+
* console.log('[InquiriesPage] FAB clicked, opening modal...');
|
|
5472
5469
|
*
|
|
5473
|
-
*
|
|
5474
|
-
* await this.inquiryModal.open({
|
|
5470
|
+
* await this.newInquiryModal.open({
|
|
5475
5471
|
* onSubmit: async (data) => {
|
|
5476
5472
|
* console.log('Creating inquiry:', data);
|
|
5477
5473
|
* // Call your API to create the inquiry
|
|
5478
5474
|
* await this.apiService.createInquiry(data);
|
|
5479
5475
|
* // Close the modal
|
|
5480
|
-
* await this.
|
|
5476
|
+
* await this.newInquiryModal.close();
|
|
5481
5477
|
* }
|
|
5482
5478
|
* });
|
|
5483
5479
|
* }
|
|
@@ -5996,7 +5992,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
|
|
|
5996
5992
|
/**
|
|
5997
5993
|
* Emitted when the FAB is clicked
|
|
5998
5994
|
*/
|
|
5999
|
-
|
|
5995
|
+
clicked: _angular_core.OutputEmitterRef<void>;
|
|
6000
5996
|
ngAfterViewInit(): void;
|
|
6001
5997
|
/**
|
|
6002
5998
|
* Calculate the FAB position dynamically based on actual tab bar height
|
|
@@ -6013,7 +6009,7 @@ declare class DsMobileFabComponent implements AfterViewInit, OnDestroy {
|
|
|
6013
6009
|
handleClick(): void;
|
|
6014
6010
|
ngOnDestroy(): void;
|
|
6015
6011
|
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; }; }, { "
|
|
6012
|
+
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
6013
|
}
|
|
6018
6014
|
|
|
6019
6015
|
type AppIconSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
@@ -6506,7 +6502,7 @@ declare class MobileInquiriesPageComponent {
|
|
|
6506
6502
|
private newInquiryModal;
|
|
6507
6503
|
pageComponent: DsMobilePageMainComponent;
|
|
6508
6504
|
constructor(userService: UserService, navCtrl: NavController, newInquiryModal: DsMobileNewInquiryModalService);
|
|
6509
|
-
filterStatus: _angular_core.WritableSignal<"
|
|
6505
|
+
filterStatus: _angular_core.WritableSignal<"all" | "open" | "closed">;
|
|
6510
6506
|
tabItems: InlineTabItem[];
|
|
6511
6507
|
inquiries: _angular_core.WritableSignal<Inquiry[]>;
|
|
6512
6508
|
filteredInquiries: _angular_core.Signal<Inquiry[]>;
|
package/package.json
CHANGED
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);
|