@propbinder/mobile-design 0.2.11 → 0.2.12
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 +972 -638
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +49 -12
- package/package.json +1 -1
- package/styles/ionic.css +15 -0
- package/styles/mobile-common.css +1 -1
package/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ import { ImpactStyle } from '@capacitor/haptics';
|
|
|
5
5
|
import { DsTextareaComponent } from '@propbinder/design-system';
|
|
6
6
|
import { ControlValueAccessor } from '@angular/forms';
|
|
7
7
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
8
|
+
import * as rxjs from 'rxjs';
|
|
9
|
+
import * as _propbinder_mobile_design from '@propbinder/mobile-design';
|
|
8
10
|
import { Animation } from '@ionic/angular';
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -1872,7 +1874,7 @@ declare class DsMobileListItemComponent {
|
|
|
1872
1874
|
* - 'center' - Align to center
|
|
1873
1875
|
* - 'bottom' - Align to bottom
|
|
1874
1876
|
*/
|
|
1875
|
-
align: _angular_core.InputSignal<"
|
|
1877
|
+
align: _angular_core.InputSignal<"center" | "top" | "bottom">;
|
|
1876
1878
|
/**
|
|
1877
1879
|
* Whether the list item is interactive (clickable and long-pressable)
|
|
1878
1880
|
* When true, adds interactive background, cursor pointer, and touch handlers
|
|
@@ -2041,6 +2043,7 @@ declare class DsMobileListItemStaticComponent {
|
|
|
2041
2043
|
* [timestamp]="'2h ago'"
|
|
2042
2044
|
* [avatarInitials]="'JD'"
|
|
2043
2045
|
* [clickable]="true"
|
|
2046
|
+
* [enableLongPress]="true"
|
|
2044
2047
|
* (postClick)="openPost()">
|
|
2045
2048
|
*
|
|
2046
2049
|
* <post-content>
|
|
@@ -2097,6 +2100,13 @@ declare class DsMobileInteractiveListItemPostComponent {
|
|
|
2097
2100
|
* Whether the post card is clickable
|
|
2098
2101
|
*/
|
|
2099
2102
|
clickable: _angular_core.InputSignal<boolean>;
|
|
2103
|
+
/**
|
|
2104
|
+
* Enable long-press interaction when clickable is true
|
|
2105
|
+
* Set to false to disable long-press but keep click
|
|
2106
|
+
* Also controls visibility of desktop "more" button
|
|
2107
|
+
* @default true
|
|
2108
|
+
*/
|
|
2109
|
+
enableLongPress: _angular_core.InputSignal<boolean>;
|
|
2100
2110
|
/**
|
|
2101
2111
|
* Emits when the post card is clicked (if clickable)
|
|
2102
2112
|
*/
|
|
@@ -2114,7 +2124,7 @@ declare class DsMobileInteractiveListItemPostComponent {
|
|
|
2114
2124
|
handleLongPress(): void;
|
|
2115
2125
|
handleMoreButtonClick(event: Event): void;
|
|
2116
2126
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileInteractiveListItemPostComponent, never>;
|
|
2117
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileInteractiveListItemPostComponent, "ds-mobile-interactive-list-item-post", never, { "authorName": { "alias": "authorName"; "required": true; "isSignal": true; }; "authorRole": { "alias": "authorRole"; "required": true; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; "isSignal": true; }; "showBadge": { "alias": "showBadge"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, { "postClick": "postClick"; "commentClick": "commentClick"; "longPress": "longPress"; }, never, ["post-menu", "post-content", "post-actions"], true, never>;
|
|
2127
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileInteractiveListItemPostComponent, "ds-mobile-interactive-list-item-post", never, { "authorName": { "alias": "authorName"; "required": true; "isSignal": true; }; "authorRole": { "alias": "authorRole"; "required": true; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; "isSignal": true; }; "showBadge": { "alias": "showBadge"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "enableLongPress": { "alias": "enableLongPress"; "required": false; "isSignal": true; }; }, { "postClick": "postClick"; "commentClick": "commentClick"; "longPress": "longPress"; }, never, ["post-menu", "post-content", "post-actions"], true, never>;
|
|
2118
2128
|
}
|
|
2119
2129
|
/**
|
|
2120
2130
|
* PostContentComponent
|
|
@@ -2262,6 +2272,7 @@ declare class PostPdfAttachmentComponent {
|
|
|
2262
2272
|
* [timestamp]="'12 days ago'"
|
|
2263
2273
|
* [iconName]="'remixCalendarLine'"
|
|
2264
2274
|
* [clickable]="true"
|
|
2275
|
+
* [enableLongPress]="true"
|
|
2265
2276
|
* (inquiryClick)="openInquiry()">
|
|
2266
2277
|
* </ds-mobile-interactive-list-item-inquiry>
|
|
2267
2278
|
* ```
|
|
@@ -2309,6 +2320,13 @@ declare class DsMobileInteractiveListItemInquiryComponent {
|
|
|
2309
2320
|
* Whether to show chevron icon
|
|
2310
2321
|
*/
|
|
2311
2322
|
showChevron: _angular_core.InputSignal<boolean>;
|
|
2323
|
+
/**
|
|
2324
|
+
* Enable long-press interaction when clickable is true
|
|
2325
|
+
* Set to false to disable long-press but keep click
|
|
2326
|
+
* Also controls visibility of desktop "more" button
|
|
2327
|
+
* @default true
|
|
2328
|
+
*/
|
|
2329
|
+
enableLongPress: _angular_core.InputSignal<boolean>;
|
|
2312
2330
|
/**
|
|
2313
2331
|
* Emits when the inquiry item is clicked (if clickable)
|
|
2314
2332
|
*/
|
|
@@ -2325,7 +2343,7 @@ declare class DsMobileInteractiveListItemInquiryComponent {
|
|
|
2325
2343
|
handleLongPress(): void;
|
|
2326
2344
|
handleMoreButtonClick(event: Event): void;
|
|
2327
2345
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileInteractiveListItemInquiryComponent, never>;
|
|
2328
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileInteractiveListItemInquiryComponent, "ds-mobile-interactive-list-item-inquiry", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; }, { "inquiryClick": "inquiryClick"; "longPress": "longPress"; }, never, never, true, never>;
|
|
2346
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileInteractiveListItemInquiryComponent, "ds-mobile-interactive-list-item-inquiry", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "enableLongPress": { "alias": "enableLongPress"; "required": false; "isSignal": true; }; }, { "inquiryClick": "inquiryClick"; "longPress": "longPress"; }, never, never, true, never>;
|
|
2329
2347
|
}
|
|
2330
2348
|
|
|
2331
2349
|
/**
|
|
@@ -3991,7 +4009,7 @@ declare class DsMobileCardInlineComponent {
|
|
|
3991
4009
|
* - 'default' - Column layout with standard padding (gap: 12px, padding: 10px 12px)
|
|
3992
4010
|
* - 'compact' - Row layout with reduced padding (gap: 8px, padding: 10px)
|
|
3993
4011
|
*/
|
|
3994
|
-
variant: _angular_core.InputSignal<"
|
|
4012
|
+
variant: _angular_core.InputSignal<"compact" | "default">;
|
|
3995
4013
|
/**
|
|
3996
4014
|
* Whether the card is disabled
|
|
3997
4015
|
* Disables all interactions and reduces opacity
|
|
@@ -4054,7 +4072,7 @@ declare class DsMobileCardInlineBannerComponent {
|
|
|
4054
4072
|
* - 'default' - Standard padding and column layout
|
|
4055
4073
|
* - 'compact' - Reduced padding and row layout
|
|
4056
4074
|
*/
|
|
4057
|
-
layout: _angular_core.InputSignal<"
|
|
4075
|
+
layout: _angular_core.InputSignal<"compact" | "default">;
|
|
4058
4076
|
/**
|
|
4059
4077
|
* Emits when the banner is clicked
|
|
4060
4078
|
*/
|
|
@@ -4105,7 +4123,7 @@ declare class DsMobileCardInlineContactComponent {
|
|
|
4105
4123
|
* - 'default' - Standard padding and column layout
|
|
4106
4124
|
* - 'compact' - Reduced padding and row layout
|
|
4107
4125
|
*/
|
|
4108
|
-
layout: _angular_core.InputSignal<"
|
|
4126
|
+
layout: _angular_core.InputSignal<"compact" | "default">;
|
|
4109
4127
|
/**
|
|
4110
4128
|
* Whether the contact item is clickable
|
|
4111
4129
|
*/
|
|
@@ -4162,7 +4180,7 @@ declare class DsMobileCardInlineFileComponent {
|
|
|
4162
4180
|
* - 'default' - Standard padding and column layout
|
|
4163
4181
|
* - 'compact' - Reduced padding and row layout
|
|
4164
4182
|
*/
|
|
4165
|
-
layout: _angular_core.InputSignal<"
|
|
4183
|
+
layout: _angular_core.InputSignal<"compact" | "default">;
|
|
4166
4184
|
/**
|
|
4167
4185
|
* Optional URL to open when clicked
|
|
4168
4186
|
* If provided, clicking the card will open this URL in a new tab
|
|
@@ -5467,6 +5485,8 @@ declare class UserService {
|
|
|
5467
5485
|
readonly avatarType: _angular_core.Signal<"initials" | "photo" | "icon">;
|
|
5468
5486
|
readonly avatarSrc: _angular_core.Signal<string>;
|
|
5469
5487
|
readonly profileMenuItems: _angular_core.Signal<ActionGroup[] | undefined>;
|
|
5488
|
+
private profileActionSelectedSubject;
|
|
5489
|
+
readonly profileActionSelected$: rxjs.Observable<ActionResult>;
|
|
5470
5490
|
/**
|
|
5471
5491
|
* Update avatar configuration
|
|
5472
5492
|
*/
|
|
@@ -5479,6 +5499,10 @@ declare class UserService {
|
|
|
5479
5499
|
* if they don't receive profileMenuItems as an input.
|
|
5480
5500
|
*/
|
|
5481
5501
|
setProfileMenuItems(items: ActionGroup[]): void;
|
|
5502
|
+
/**
|
|
5503
|
+
* Notify subscribers that a profile action was selected
|
|
5504
|
+
*/
|
|
5505
|
+
notifyProfileAction(result: ActionResult): void;
|
|
5482
5506
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserService, never>;
|
|
5483
5507
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<UserService>;
|
|
5484
5508
|
}
|
|
@@ -5592,6 +5616,7 @@ declare class MobileCommunityPageComponent {
|
|
|
5592
5616
|
userService: UserService;
|
|
5593
5617
|
private postsService;
|
|
5594
5618
|
allPosts: _angular_core.Signal<Post[]>;
|
|
5619
|
+
pinnedPosts: _angular_core.Signal<Post[]>;
|
|
5595
5620
|
hasAnyPosts: _angular_core.Signal<boolean>;
|
|
5596
5621
|
hasMorePosts: _angular_core.Signal<boolean>;
|
|
5597
5622
|
constructor(router: Router, route: ActivatedRoute, bottomSheet: DsMobileBottomSheetService, lightbox: DsMobileLightboxService, postModal: DsMobilePostDetailModalService, userService: UserService, postsService: PostsService);
|
|
@@ -5634,13 +5659,25 @@ declare class MobileHandbookPageComponent {
|
|
|
5634
5659
|
}
|
|
5635
5660
|
|
|
5636
5661
|
declare class MobileHomePageComponent {
|
|
5637
|
-
private
|
|
5662
|
+
private router;
|
|
5638
5663
|
userService: UserService;
|
|
5639
|
-
|
|
5664
|
+
private postsService;
|
|
5665
|
+
private postModal;
|
|
5666
|
+
recentPosts: _angular_core.Signal<_propbinder_mobile_design.Post[]>;
|
|
5667
|
+
private allInquiries;
|
|
5668
|
+
openInquiries: _angular_core.Signal<{
|
|
5669
|
+
id: string;
|
|
5670
|
+
title: string;
|
|
5671
|
+
description: string;
|
|
5672
|
+
status: "open";
|
|
5673
|
+
timestamp: string;
|
|
5674
|
+
}[]>;
|
|
5675
|
+
constructor(router: Router, userService: UserService, postsService: PostsService, postModal: DsMobilePostDetailModalService);
|
|
5640
5676
|
handleRefresh(event: any): void;
|
|
5641
|
-
|
|
5642
|
-
|
|
5643
|
-
|
|
5677
|
+
openPost(postId: string, focusComment?: boolean): Promise<void>;
|
|
5678
|
+
openInquiryDetail(inquiryId: string): void;
|
|
5679
|
+
navigateToCommunity(): void;
|
|
5680
|
+
navigateToInquiries(): void;
|
|
5644
5681
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileHomePageComponent, never>;
|
|
5645
5682
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileHomePageComponent, "app-home-page", never, {}, {}, never, never, true, never>;
|
|
5646
5683
|
}
|
package/package.json
CHANGED
package/styles/ionic.css
CHANGED
|
@@ -834,3 +834,18 @@ ion-app ion-router-outlet.ion-page-hidden {
|
|
|
834
834
|
|
|
835
835
|
/* Dark mode support removed - modals should not change based on system dark mode */
|
|
836
836
|
|
|
837
|
+
/* ============================================
|
|
838
|
+
GLOBAL BUTTON INTERACTIVE STATES
|
|
839
|
+
Consistent button behavior across all ds-button instances
|
|
840
|
+
============================================ */
|
|
841
|
+
|
|
842
|
+
/* Base transition */
|
|
843
|
+
ds-button .btn {
|
|
844
|
+
transition: all 0.2s ease !important;
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
/* Active/pressed/click state - scale down slightly */
|
|
848
|
+
ds-button .btn:active:not(:disabled) {
|
|
849
|
+
transform: scale(0.98) !important;
|
|
850
|
+
}
|
|
851
|
+
|