@propbinder/mobile-design 0.2.34 → 0.2.36
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 +38 -28
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +22 -3
- package/package.json +1 -1
- package/styles/ionic.css +36 -35
package/index.d.ts
CHANGED
|
@@ -5426,6 +5426,16 @@ interface ChatModalData {
|
|
|
5426
5426
|
currentUserAvatarSrc?: string;
|
|
5427
5427
|
/** Auto-focus input when modal opens */
|
|
5428
5428
|
autoFocus?: boolean;
|
|
5429
|
+
/**
|
|
5430
|
+
* Callback executed when a message is sent from the chat.
|
|
5431
|
+
* Use this to handle API calls to your backend.
|
|
5432
|
+
*/
|
|
5433
|
+
onSend?: (message: string, attachments: AttachmentData[]) => void | Promise<void>;
|
|
5434
|
+
/**
|
|
5435
|
+
* Optional callback for when a file attachment is clicked.
|
|
5436
|
+
* If not provided, the default behavior will try to open/download the file.
|
|
5437
|
+
*/
|
|
5438
|
+
onFileClick?: (file: AttachmentData) => void;
|
|
5429
5439
|
}
|
|
5430
5440
|
/**
|
|
5431
5441
|
* DsMobileChatModalComponent
|
|
@@ -5653,7 +5663,16 @@ declare class DsMobileChatModalComponent implements OnInit, AfterViewInit {
|
|
|
5653
5663
|
* ],
|
|
5654
5664
|
* currentUserId: '456',
|
|
5655
5665
|
* currentUserInitials: 'JD',
|
|
5656
|
-
*
|
|
5666
|
+
* currentUserInitials: 'JD',
|
|
5667
|
+
* autoFocus: true,
|
|
5668
|
+
* onSend: async (message, attachments) => {
|
|
5669
|
+
* console.log('Sending message:', message);
|
|
5670
|
+
* // await this.chatService.sendMessage(participant.id, message, attachments);
|
|
5671
|
+
* },
|
|
5672
|
+
* onFileClick: (file) => {
|
|
5673
|
+
* console.log('File clicked:', file);
|
|
5674
|
+
* // window.open(file.url, '_blank');
|
|
5675
|
+
* }
|
|
5657
5676
|
* });
|
|
5658
5677
|
* }
|
|
5659
5678
|
* ```
|
|
@@ -6985,7 +7004,7 @@ declare class DsMobileHandbookFolderMiniComponent {
|
|
|
6985
7004
|
* ```
|
|
6986
7005
|
*/
|
|
6987
7006
|
declare class DsTextInputComponent implements ControlValueAccessor {
|
|
6988
|
-
type: _angular_core.InputSignal<"search" | "text" | "
|
|
7007
|
+
type: _angular_core.InputSignal<"search" | "text" | "email" | "password" | "tel" | "url">;
|
|
6989
7008
|
placeholder: _angular_core.InputSignal<string>;
|
|
6990
7009
|
disabled: _angular_core.InputSignal<boolean>;
|
|
6991
7010
|
readonly: _angular_core.InputSignal<boolean>;
|
|
@@ -6993,7 +7012,7 @@ declare class DsTextInputComponent implements ControlValueAccessor {
|
|
|
6993
7012
|
hasError: _angular_core.InputSignal<boolean>;
|
|
6994
7013
|
errorMessage: _angular_core.InputSignal<string>;
|
|
6995
7014
|
autocomplete: _angular_core.InputSignal<string>;
|
|
6996
|
-
inputmode: _angular_core.InputSignal<"search" | "text" | "
|
|
7015
|
+
inputmode: _angular_core.InputSignal<"search" | "text" | "numeric" | "email" | "tel" | "url" | undefined>;
|
|
6997
7016
|
autoClearError: _angular_core.InputSignal<boolean>;
|
|
6998
7017
|
validator: _angular_core.InputSignal<((value: string) => boolean) | null>;
|
|
6999
7018
|
valueChange: _angular_core.OutputEmitterRef<string>;
|
package/package.json
CHANGED
package/styles/ionic.css
CHANGED
|
@@ -279,17 +279,16 @@ ion-modal:not(.ds-bottom-sheet) {
|
|
|
279
279
|
--background: var(--color-background-neutral-primary);
|
|
280
280
|
--border-radius: 16px;
|
|
281
281
|
--box-shadow: var(--box-shadow-lg);
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
height:
|
|
282
|
+
/* Prevent modal from resizing when keyboard appears */
|
|
283
|
+
height: 100% !important;
|
|
284
|
+
max-height: 100vh !important;
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
/* Prevent modal container from resizing when keyboard appears */
|
|
288
288
|
ion-modal:not(.ds-bottom-sheet)::part(content) {
|
|
289
289
|
position: fixed !important;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
padding-bottom: env(safe-area-inset-bottom);
|
|
290
|
+
height: 100% !important;
|
|
291
|
+
max-height: 100vh !important;
|
|
293
292
|
}
|
|
294
293
|
|
|
295
294
|
/* Prevent ion-content inside modals from resizing */
|
|
@@ -329,15 +328,9 @@ ion-toast {
|
|
|
329
328
|
--box-shadow: 0px -2px 24px rgba(0, 0, 0, 0.12);
|
|
330
329
|
--backdrop-opacity: 0.4;
|
|
331
330
|
transition: --backdrop-opacity 0.3s ease;
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
height: 100% !important;
|
|
336
|
-
|
|
337
|
-
/* Align the actual sheet at the bottom */
|
|
338
|
-
display: flex;
|
|
339
|
-
flex-direction: column;
|
|
340
|
-
justify-content: flex-end;
|
|
331
|
+
/* Modal at top:0 so backdrop covers full screen including status bar */
|
|
332
|
+
top: 0;
|
|
333
|
+
height: 100%;
|
|
341
334
|
}
|
|
342
335
|
|
|
343
336
|
/* Backdrop styling */
|
|
@@ -355,21 +348,18 @@ ion-toast {
|
|
|
355
348
|
margin-bottom: 8px;
|
|
356
349
|
}
|
|
357
350
|
|
|
358
|
-
/* Content area styling
|
|
351
|
+
/* Content area styling */
|
|
359
352
|
.ds-bottom-sheet::part(content) {
|
|
360
353
|
/* Offset content below status bar (backdrop still covers full screen) */
|
|
361
354
|
margin-top: var(--app-sheet-top-offset);
|
|
362
355
|
border-radius: var(--border-radius) var(--border-radius) 0 0;
|
|
363
356
|
background: var(--color-background-neutral-primary, #ffffff);
|
|
364
357
|
box-shadow: var(--box-shadow);
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
/* Sit at the bottom of the flex container */
|
|
371
|
-
position: relative !important;
|
|
372
|
-
margin-top: auto !important;
|
|
358
|
+
position: absolute !important;
|
|
359
|
+
top: 0 !important;
|
|
360
|
+
bottom: 0 !important;
|
|
361
|
+
height: 100% !important;
|
|
362
|
+
max-height: 100% !important;
|
|
373
363
|
}
|
|
374
364
|
|
|
375
365
|
/* Remove border radius when fully expanded */
|
|
@@ -406,8 +396,23 @@ ion-toast {
|
|
|
406
396
|
Make action sheets auto-size to their content
|
|
407
397
|
============================================ */
|
|
408
398
|
|
|
409
|
-
/* Auto-height
|
|
399
|
+
/* Auto-height modal - override base bottom sheet styles */
|
|
400
|
+
.ds-bottom-sheet.auto-height {
|
|
401
|
+
top: 0 !important;
|
|
402
|
+
height: 100% !important;
|
|
403
|
+
display: flex;
|
|
404
|
+
flex-direction: column;
|
|
405
|
+
justify-content: flex-end;
|
|
406
|
+
}
|
|
410
407
|
|
|
408
|
+
.ds-bottom-sheet.auto-height::part(content) {
|
|
409
|
+
position: relative !important;
|
|
410
|
+
height: auto !important;
|
|
411
|
+
max-height: 80vh !important;
|
|
412
|
+
top: auto !important;
|
|
413
|
+
bottom: auto !important;
|
|
414
|
+
margin-top: auto !important;
|
|
415
|
+
}
|
|
411
416
|
/* Ensure action sheet component sizes naturally */
|
|
412
417
|
.ds-bottom-sheet ds-mobile-actions-bottom-sheet {
|
|
413
418
|
display: block;
|
|
@@ -621,12 +626,9 @@ ion-modal.ds-modal-base {
|
|
|
621
626
|
--background: var(--color-background-neutral-primary, #ffffff);
|
|
622
627
|
--width: 100%;
|
|
623
628
|
--max-width: 640px;
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
--max-height: calc(100dvh - var(--app-sheet-top-offset, 24px)) !important;
|
|
629
|
+
--height: 100dvh;
|
|
630
|
+
/* Full viewport height - content top offset creates gap */
|
|
627
631
|
--border-radius: 16px 16px 0 0;
|
|
628
|
-
display: flex !important;
|
|
629
|
-
align-items: flex-end !important;
|
|
630
632
|
}
|
|
631
633
|
|
|
632
634
|
ion-modal.ds-modal-base::part(content) {
|
|
@@ -635,11 +637,10 @@ ion-modal.ds-modal-base::part(content) {
|
|
|
635
637
|
background: var(--color-background-neutral-primary, #ffffff);
|
|
636
638
|
max-width: 640px;
|
|
637
639
|
margin: 0 auto;
|
|
638
|
-
/*
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
position: relative !important;
|
|
640
|
+
/* Use top positioning instead of margin-top to work with fixed positioning */
|
|
641
|
+
top: var(--app-sheet-top-offset) !important;
|
|
642
|
+
height: calc(100% - var(--app-sheet-top-offset)) !important;
|
|
643
|
+
max-height: calc(100dvh - var(--app-sheet-top-offset)) !important;
|
|
643
644
|
}
|
|
644
645
|
|
|
645
646
|
/* Auto-height support for base modals */
|