@propbinder/mobile-design 0.0.27 → 0.1.0
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/assets/fonts/Brockmann-Bold.otf +0 -0
- package/assets/fonts/Brockmann-BoldItalic.otf +0 -0
- package/assets/fonts/Brockmann-Medium.otf +0 -0
- package/assets/fonts/Brockmann-MediumItalic.otf +0 -0
- package/assets/fonts/Brockmann-Regular.otf +0 -0
- package/assets/fonts/Brockmann-RegularItalic.otf +0 -0
- package/assets/fonts/Brockmann-SemiBold.otf +0 -0
- package/assets/fonts/Brockmann-SemiBoldItalic.otf +0 -0
- package/assets/fonts/Brockmann_desktop_license.pdf +0 -0
- package/assets/fonts/brockmann-medium-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-regular-webfont.woff2 +0 -0
- package/assets/fonts/brockmann-semibold-webfont.woff2 +0 -0
- package/fesm2022/propbinder-mobile-design.mjs +2378 -1858
- package/fesm2022/propbinder-mobile-design.mjs.map +1 -1
- package/index.d.ts +103 -157
- package/package.json +10 -1
- package/styles/ionic.css +711 -0
- package/styles/mobile-common.css +109 -0
- package/styles/mobile-page-base.css +282 -0
package/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { AfterViewInit, ElementRef, OnDestroy, EventEmitter, OnInit, Application
|
|
|
3
3
|
import { IonContent, NavController, ModalController, GestureController } from '@ionic/angular/standalone';
|
|
4
4
|
import { ImpactStyle } from '@capacitor/haptics';
|
|
5
5
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
6
|
-
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
7
6
|
import { Animation } from '@ionic/angular';
|
|
8
7
|
|
|
9
8
|
/**
|
|
@@ -444,7 +443,7 @@ declare class DsMobilePostCardComponent {
|
|
|
444
443
|
* - 'detail' - Full detail view
|
|
445
444
|
* - 'compact' - Compact display for nested/related posts
|
|
446
445
|
*/
|
|
447
|
-
variant: _angular_core.InputSignal<"
|
|
446
|
+
variant: _angular_core.InputSignal<"compact" | "feed" | "detail">;
|
|
448
447
|
/**
|
|
449
448
|
* Whether the post card is clickable
|
|
450
449
|
*/
|
|
@@ -944,7 +943,7 @@ declare class DsMobileListItemComponent {
|
|
|
944
943
|
* - 'detail' - Full detail view
|
|
945
944
|
* - 'compact' - Compact display for nested/related items
|
|
946
945
|
*/
|
|
947
|
-
variant: _angular_core.InputSignal<"
|
|
946
|
+
variant: _angular_core.InputSignal<"compact" | "feed" | "detail">;
|
|
948
947
|
/**
|
|
949
948
|
* Whether the list item is interactive (clickable and long-pressable)
|
|
950
949
|
* When true, adds interactive background, cursor pointer, and touch handlers
|
|
@@ -1114,7 +1113,7 @@ declare class DsMobileInteractiveListItemPostComponent {
|
|
|
1114
1113
|
* - 'detail' - Full detail view
|
|
1115
1114
|
* - 'compact' - Compact display for nested/related posts
|
|
1116
1115
|
*/
|
|
1117
|
-
variant: _angular_core.InputSignal<"
|
|
1116
|
+
variant: _angular_core.InputSignal<"compact" | "feed" | "detail">;
|
|
1118
1117
|
/**
|
|
1119
1118
|
* Whether the post card is clickable
|
|
1120
1119
|
*/
|
|
@@ -1219,7 +1218,7 @@ declare class DsMobileInteractiveListItemInquiryComponent {
|
|
|
1219
1218
|
* - 'detail' - Full detail view
|
|
1220
1219
|
* - 'compact' - Compact display
|
|
1221
1220
|
*/
|
|
1222
|
-
variant: _angular_core.InputSignal<"
|
|
1221
|
+
variant: _angular_core.InputSignal<"compact" | "feed" | "detail">;
|
|
1223
1222
|
/**
|
|
1224
1223
|
* Whether the inquiry item is clickable
|
|
1225
1224
|
*/
|
|
@@ -1368,81 +1367,63 @@ declare class DsMobileContactListItemComponent {
|
|
|
1368
1367
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileContactListItemComponent, "ds-mobile-contact-list-item", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "initials": { "alias": "initials"; "required": true; "isSignal": true; }; "contactPerson": { "alias": "contactPerson"; "required": false; "isSignal": true; }; "phoneNumber": { "alias": "phoneNumber"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; }, { "contactClick": "contactClick"; }, never, never, true, never>;
|
|
1369
1368
|
}
|
|
1370
1369
|
|
|
1371
|
-
interface TabConfig$
|
|
1370
|
+
interface TabConfig$1 {
|
|
1372
1371
|
id: string;
|
|
1373
1372
|
label: string;
|
|
1374
1373
|
route: string;
|
|
1375
1374
|
icon: string;
|
|
1376
1375
|
iconActive: string;
|
|
1377
1376
|
}
|
|
1378
|
-
type HeaderVariant = 'home' | 'simple' | 'back' | 'none';
|
|
1379
1377
|
/**
|
|
1380
|
-
*
|
|
1378
|
+
* DsMobileTabBarComponent
|
|
1381
1379
|
*
|
|
1382
|
-
*
|
|
1383
|
-
*
|
|
1380
|
+
* Responsive navigation tab bar that adapts from mobile to desktop:
|
|
1381
|
+
* - Mobile (< 768px): Bottom tab bar with icons + labels
|
|
1382
|
+
* - Desktop (≥ 768px): Top navigation bar with logo, tabs, and avatar
|
|
1384
1383
|
*
|
|
1385
|
-
*
|
|
1386
|
-
* -
|
|
1387
|
-
* - Multiple header variants (home with logomark, simple title, back button)
|
|
1388
|
-
* - Pull-to-refresh support
|
|
1389
|
-
* - Purple brand background with content wrapper
|
|
1390
|
-
* - iOS safe area support
|
|
1384
|
+
* Use this component INSIDE your own `ion-tabs` when Angular routing
|
|
1385
|
+
* requires `ion-tabs` to be a direct child in your component.
|
|
1391
1386
|
*
|
|
1392
1387
|
* @example
|
|
1393
1388
|
* ```html
|
|
1394
|
-
*
|
|
1395
|
-
*
|
|
1396
|
-
*
|
|
1397
|
-
*
|
|
1398
|
-
*
|
|
1399
|
-
*
|
|
1389
|
+
* <!-- In your component with child routes -->
|
|
1390
|
+
* <ion-tabs>
|
|
1391
|
+
* <ds-mobile-tab-bar
|
|
1392
|
+
* [tabs]="tabs"
|
|
1393
|
+
* [avatarInitials]="'JD'"
|
|
1394
|
+
* (avatarClick)="handleAvatarClick()"
|
|
1395
|
+
* />
|
|
1396
|
+
* </ion-tabs>
|
|
1400
1397
|
* ```
|
|
1401
1398
|
*/
|
|
1402
|
-
declare class
|
|
1403
|
-
private router;
|
|
1399
|
+
declare class DsMobileTabBarComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
1404
1400
|
private elementRef;
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
showBackButton: _angular_core.InputSignal<boolean>;
|
|
1412
|
-
showPullToRefresh: _angular_core.InputSignal<boolean>;
|
|
1413
|
-
showTabBar: _angular_core.InputSignal<boolean>;
|
|
1414
|
-
tabs: _angular_core.InputSignal<TabConfig$2[]>;
|
|
1415
|
-
avatarType: _angular_core.InputSignal<"initials" | "photo" | "icon">;
|
|
1416
|
-
avatarInitials: _angular_core.InputSignal<string>;
|
|
1417
|
-
avatarSrc: _angular_core.InputSignal<string>;
|
|
1418
|
-
avatarIconName: _angular_core.InputSignal<string>;
|
|
1419
|
-
backClick: _angular_core.OutputEmitterRef<void>;
|
|
1420
|
-
refresh: _angular_core.OutputEmitterRef<any>;
|
|
1421
|
-
avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
1422
|
-
scroll: _angular_core.OutputEmitterRef<any>;
|
|
1423
|
-
private scrollY;
|
|
1401
|
+
tabs: TabConfig$1[];
|
|
1402
|
+
avatarType: 'initials' | 'photo' | 'icon';
|
|
1403
|
+
avatarInitials: string;
|
|
1404
|
+
avatarSrc: string;
|
|
1405
|
+
avatarIconName: string;
|
|
1406
|
+
avatarClick: EventEmitter<void>;
|
|
1424
1407
|
activeTab: _angular_core.WritableSignal<string>;
|
|
1425
1408
|
isDesktop: _angular_core.WritableSignal<boolean>;
|
|
1426
|
-
|
|
1409
|
+
private mutationObserver?;
|
|
1410
|
+
private resizeObserver?;
|
|
1411
|
+
private mediaQuery?;
|
|
1412
|
+
constructor(elementRef: ElementRef);
|
|
1413
|
+
ngOnInit(): void;
|
|
1427
1414
|
ngAfterViewInit(): void;
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1415
|
+
ngOnDestroy(): void;
|
|
1416
|
+
private setupBreakpointDetection;
|
|
1417
|
+
private handleBreakpointChange;
|
|
1418
|
+
private setupTitleRemovalObserver;
|
|
1419
|
+
private removeTitleAttributes;
|
|
1420
|
+
trackByTabId(index: number, tab: TabConfig$1): string;
|
|
1434
1421
|
isTabActive(tabId: string): boolean;
|
|
1435
|
-
|
|
1436
|
-
static
|
|
1422
|
+
handleAvatarClick(): void;
|
|
1423
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileTabBarComponent, never>;
|
|
1424
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileTabBarComponent, "ds-mobile-tab-bar", never, { "tabs": { "alias": "tabs"; "required": false; }; "avatarType": { "alias": "avatarType"; "required": false; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; }; }, { "avatarClick": "avatarClick"; }, never, never, true, never>;
|
|
1437
1425
|
}
|
|
1438
1426
|
|
|
1439
|
-
interface TabConfig$1 {
|
|
1440
|
-
id: string;
|
|
1441
|
-
label: string;
|
|
1442
|
-
route: string;
|
|
1443
|
-
icon: string;
|
|
1444
|
-
iconActive: string;
|
|
1445
|
-
}
|
|
1446
1427
|
/**
|
|
1447
1428
|
* DsMobileTabsComponent
|
|
1448
1429
|
*
|
|
@@ -1453,6 +1434,11 @@ interface TabConfig$1 {
|
|
|
1453
1434
|
* Wraps ion-tabs to maintain native routing functionality while
|
|
1454
1435
|
* providing a responsive navigation experience with branding.
|
|
1455
1436
|
*
|
|
1437
|
+
* NOTE: This component wraps `ion-tabs` internally. If your Angular
|
|
1438
|
+
* routing requires `ion-tabs` to be a direct child in your component
|
|
1439
|
+
* (e.g., when using `ion-router-outlet` in app.html), use the
|
|
1440
|
+
* `DsMobileTabBarComponent` directly inside your own `ion-tabs` instead.
|
|
1441
|
+
*
|
|
1456
1442
|
* @example
|
|
1457
1443
|
* ```html
|
|
1458
1444
|
* <ds-mobile-tabs
|
|
@@ -1462,44 +1448,35 @@ interface TabConfig$1 {
|
|
|
1462
1448
|
* />
|
|
1463
1449
|
* ```
|
|
1464
1450
|
*/
|
|
1465
|
-
declare class DsMobileTabsComponent implements OnInit
|
|
1466
|
-
private elementRef;
|
|
1451
|
+
declare class DsMobileTabsComponent implements OnInit {
|
|
1467
1452
|
tabs: TabConfig$1[];
|
|
1468
1453
|
avatarType: 'initials' | 'photo' | 'icon';
|
|
1469
1454
|
avatarInitials: string;
|
|
1470
1455
|
avatarSrc: string;
|
|
1471
1456
|
avatarIconName: string;
|
|
1472
1457
|
avatarClick: EventEmitter<void>;
|
|
1473
|
-
|
|
1474
|
-
isDesktop: _angular_core.WritableSignal<boolean>;
|
|
1475
|
-
private mutationObserver?;
|
|
1476
|
-
constructor(elementRef: ElementRef);
|
|
1458
|
+
constructor();
|
|
1477
1459
|
ngOnInit(): void;
|
|
1478
|
-
ngAfterViewInit(): void;
|
|
1479
|
-
ngOnDestroy(): void;
|
|
1480
|
-
private setupTitleRemovalObserver;
|
|
1481
|
-
private removeTitleAttributes;
|
|
1482
1460
|
trackByTabId(index: number, tab: TabConfig$1): string;
|
|
1483
|
-
isTabActive(tabId: string): boolean;
|
|
1484
1461
|
handleAvatarClick(): void;
|
|
1485
1462
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileTabsComponent, never>;
|
|
1486
1463
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileTabsComponent, "ds-mobile-tabs", never, { "tabs": { "alias": "tabs"; "required": false; }; "avatarType": { "alias": "avatarType"; "required": false; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; }; "avatarIconName": { "alias": "avatarIconName"; "required": false; }; }, { "avatarClick": "avatarClick"; }, never, never, true, never>;
|
|
1487
1464
|
}
|
|
1488
1465
|
|
|
1489
|
-
interface
|
|
1466
|
+
interface InlineTabItem {
|
|
1490
1467
|
id: string;
|
|
1491
1468
|
label: string;
|
|
1492
1469
|
badge?: number;
|
|
1493
1470
|
}
|
|
1494
1471
|
/**
|
|
1495
|
-
*
|
|
1472
|
+
* DsMobileInlineTabsComponent
|
|
1496
1473
|
*
|
|
1497
|
-
* Pill-style
|
|
1474
|
+
* Pill-style inline tabs for filtering/switching views
|
|
1498
1475
|
* Used in the purple header section of pages
|
|
1499
1476
|
*
|
|
1500
1477
|
* @example
|
|
1501
1478
|
* ```html
|
|
1502
|
-
* <ds-mobile-
|
|
1479
|
+
* <ds-mobile-inline-tabs
|
|
1503
1480
|
* [tabs]="[
|
|
1504
1481
|
* { id: 'all', label: 'All' },
|
|
1505
1482
|
* { id: 'open', label: 'Open' },
|
|
@@ -1507,14 +1484,14 @@ interface TabItem {
|
|
|
1507
1484
|
* ]"
|
|
1508
1485
|
* [activeTab]="'all'"
|
|
1509
1486
|
* (tabChange)="handleTabChange($event)">
|
|
1510
|
-
* </ds-mobile-
|
|
1487
|
+
* </ds-mobile-inline-tabs>
|
|
1511
1488
|
* ```
|
|
1512
1489
|
*/
|
|
1513
|
-
declare class
|
|
1490
|
+
declare class DsMobileInlineTabsComponent {
|
|
1514
1491
|
/**
|
|
1515
1492
|
* Array of tab items to display
|
|
1516
1493
|
*/
|
|
1517
|
-
tabs: _angular_core.InputSignal<
|
|
1494
|
+
tabs: _angular_core.InputSignal<InlineTabItem[]>;
|
|
1518
1495
|
/**
|
|
1519
1496
|
* Currently active tab ID
|
|
1520
1497
|
*/
|
|
@@ -1524,8 +1501,8 @@ declare class DsMobileTabBarComponent {
|
|
|
1524
1501
|
*/
|
|
1525
1502
|
tabChange: _angular_core.OutputEmitterRef<string>;
|
|
1526
1503
|
handleTabClick(tabId: string): void;
|
|
1527
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
1528
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<
|
|
1504
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileInlineTabsComponent, never>;
|
|
1505
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileInlineTabsComponent, "ds-mobile-inline-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": true; "isSignal": true; }; }, { "tabChange": "tabChange"; }, never, never, true, never>;
|
|
1529
1506
|
}
|
|
1530
1507
|
|
|
1531
1508
|
interface ActionResult {
|
|
@@ -2710,55 +2687,6 @@ interface ContactItem {
|
|
|
2710
2687
|
contactPerson?: string;
|
|
2711
2688
|
phoneNumber?: string;
|
|
2712
2689
|
}
|
|
2713
|
-
/**
|
|
2714
|
-
* DsMobileHandbookDetailModalComponent
|
|
2715
|
-
*
|
|
2716
|
-
* Modal wrapper for displaying handbook folder details.
|
|
2717
|
-
*
|
|
2718
|
-
* Features:
|
|
2719
|
-
* - Folder content display
|
|
2720
|
-
* - Items list with descriptions
|
|
2721
|
-
* - Images and attachments
|
|
2722
|
-
* - Contact information
|
|
2723
|
-
* - Native modal controls (close, swipe down)
|
|
2724
|
-
* - Safe area support
|
|
2725
|
-
*
|
|
2726
|
-
* This component is typically not used directly - use DsMobileHandbookDetailModalService instead.
|
|
2727
|
-
*/
|
|
2728
|
-
declare class DsMobileHandbookDetailModalComponent {
|
|
2729
|
-
private modalController;
|
|
2730
|
-
handbookData: HandbookDetailData;
|
|
2731
|
-
handbook: _angular_core.WritableSignal<HandbookDetailData>;
|
|
2732
|
-
constructor(modalController: ModalController);
|
|
2733
|
-
ngOnInit(): void;
|
|
2734
|
-
/**
|
|
2735
|
-
* Split handbook items to enforce content structure rules:
|
|
2736
|
-
* - Never mix photos and documents (attachments) in the same section
|
|
2737
|
-
* - Never mix contact persons and attachments together in the same section
|
|
2738
|
-
*
|
|
2739
|
-
* This method splits items that violate these rules into multiple display items.
|
|
2740
|
-
* Each resulting item will have only compatible content types.
|
|
2741
|
-
*/
|
|
2742
|
-
splitItemsByContentRules(item: HandbookItem): HandbookItem[];
|
|
2743
|
-
/**
|
|
2744
|
-
* Get all display items with enforced content structure rules applied
|
|
2745
|
-
*/
|
|
2746
|
-
getDisplayItems(): HandbookItem[];
|
|
2747
|
-
/**
|
|
2748
|
-
* Close the modal
|
|
2749
|
-
*/
|
|
2750
|
-
close(): void;
|
|
2751
|
-
/**
|
|
2752
|
-
* Handle contact click
|
|
2753
|
-
*/
|
|
2754
|
-
handleContactClick(contact: ContactItem): void;
|
|
2755
|
-
/**
|
|
2756
|
-
* Handle attachment click
|
|
2757
|
-
*/
|
|
2758
|
-
handleAttachmentClick(attachment: AttachmentItem): void;
|
|
2759
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileHandbookDetailModalComponent, never>;
|
|
2760
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileHandbookDetailModalComponent, "ds-mobile-handbook-detail-modal", never, { "handbookData": { "alias": "handbookData"; "required": false; }; }, {}, never, never, true, never>;
|
|
2761
|
-
}
|
|
2762
2690
|
|
|
2763
2691
|
/**
|
|
2764
2692
|
* DsMobileHandbookDetailModalService
|
|
@@ -3041,8 +2969,8 @@ declare class MobileInquiriesPageComponent {
|
|
|
3041
2969
|
userService: UserService;
|
|
3042
2970
|
private navCtrl;
|
|
3043
2971
|
constructor(userService: UserService, navCtrl: NavController);
|
|
3044
|
-
filterStatus: _angular_core.WritableSignal<"
|
|
3045
|
-
tabItems:
|
|
2972
|
+
filterStatus: _angular_core.WritableSignal<"all" | "open" | "closed">;
|
|
2973
|
+
tabItems: InlineTabItem[];
|
|
3046
2974
|
inquiries: _angular_core.WritableSignal<Inquiry[]>;
|
|
3047
2975
|
filteredInquiries: _angular_core.Signal<Inquiry[]>;
|
|
3048
2976
|
openInquiries: _angular_core.Signal<Inquiry[]>;
|
|
@@ -3086,7 +3014,7 @@ declare class MobileInquiryDetailPageComponent extends MobilePageBase implements
|
|
|
3086
3014
|
isNativePlatform: _angular_core.Signal<boolean>;
|
|
3087
3015
|
inquiryTitle: string;
|
|
3088
3016
|
activeTab: _angular_core.WritableSignal<string>;
|
|
3089
|
-
tabItems:
|
|
3017
|
+
tabItems: InlineTabItem[];
|
|
3090
3018
|
activities: ActivityItem[];
|
|
3091
3019
|
messageThreads: MessageThread[];
|
|
3092
3020
|
unreadMessagesCount: _angular_core.Signal<number>;
|
|
@@ -3113,6 +3041,7 @@ declare class MobileTabsExampleComponent implements OnInit {
|
|
|
3113
3041
|
userService: UserService;
|
|
3114
3042
|
private modalController;
|
|
3115
3043
|
private router;
|
|
3044
|
+
private whitelabelDemoModal;
|
|
3116
3045
|
constructor(userService: UserService, modalController: ModalController, router: Router);
|
|
3117
3046
|
ngOnInit(): void;
|
|
3118
3047
|
tabs: TabConfig[];
|
|
@@ -3177,8 +3106,10 @@ interface WhitelabelConfig {
|
|
|
3177
3106
|
logoHeight?: number;
|
|
3178
3107
|
logoMarkWidth?: number;
|
|
3179
3108
|
logoMarkHeight?: number;
|
|
3180
|
-
|
|
3181
|
-
|
|
3109
|
+
primarySurface: string;
|
|
3110
|
+
primaryContent: string;
|
|
3111
|
+
secondarySurface: string;
|
|
3112
|
+
secondaryContent: string;
|
|
3182
3113
|
organizationName: string;
|
|
3183
3114
|
organizationId: string;
|
|
3184
3115
|
}
|
|
@@ -3207,13 +3138,16 @@ interface WhitelabelConfig {
|
|
|
3207
3138
|
*/
|
|
3208
3139
|
declare class WhitelabelService {
|
|
3209
3140
|
private _config;
|
|
3210
|
-
readonly logoUrl:
|
|
3211
|
-
readonly logoMarkUrl:
|
|
3212
|
-
readonly logoAlt:
|
|
3213
|
-
readonly
|
|
3214
|
-
readonly
|
|
3215
|
-
readonly
|
|
3216
|
-
readonly
|
|
3141
|
+
readonly logoUrl: _angular_core.Signal<string>;
|
|
3142
|
+
readonly logoMarkUrl: _angular_core.Signal<string>;
|
|
3143
|
+
readonly logoAlt: _angular_core.Signal<string>;
|
|
3144
|
+
readonly logoHeight: _angular_core.Signal<number>;
|
|
3145
|
+
readonly primarySurface: _angular_core.Signal<string>;
|
|
3146
|
+
readonly primaryContent: _angular_core.Signal<string>;
|
|
3147
|
+
readonly secondarySurface: _angular_core.Signal<string>;
|
|
3148
|
+
readonly secondaryContent: _angular_core.Signal<string>;
|
|
3149
|
+
readonly organizationName: _angular_core.Signal<string>;
|
|
3150
|
+
readonly organizationId: _angular_core.Signal<string>;
|
|
3217
3151
|
readonly config: _angular_core.Signal<WhitelabelConfig>;
|
|
3218
3152
|
constructor();
|
|
3219
3153
|
/**
|
|
@@ -3235,16 +3169,32 @@ declare class WhitelabelService {
|
|
|
3235
3169
|
/**
|
|
3236
3170
|
* Update only the brand colors
|
|
3237
3171
|
*/
|
|
3238
|
-
updateColors(
|
|
3172
|
+
updateColors(colors: {
|
|
3173
|
+
primarySurface?: string;
|
|
3174
|
+
primaryContent?: string;
|
|
3175
|
+
secondarySurface?: string;
|
|
3176
|
+
secondaryContent?: string;
|
|
3177
|
+
}): void;
|
|
3239
3178
|
/**
|
|
3240
3179
|
* Reset to default configuration
|
|
3241
3180
|
*/
|
|
3242
3181
|
resetToDefault(): void;
|
|
3243
3182
|
/**
|
|
3244
|
-
*
|
|
3183
|
+
* Convert hex color to RGB values
|
|
3184
|
+
*/
|
|
3185
|
+
private hexToRgb;
|
|
3186
|
+
/**
|
|
3187
|
+
* Apply colors to CSS custom properties and native StatusBar
|
|
3245
3188
|
* This updates the actual CSS variables used throughout the app
|
|
3189
|
+
* and the native status bar color on mobile devices
|
|
3246
3190
|
*/
|
|
3247
3191
|
private applyColors;
|
|
3192
|
+
/**
|
|
3193
|
+
* Update the native status bar color
|
|
3194
|
+
* Note: This only works on Android. On iOS, the status bar is transparent
|
|
3195
|
+
* and shows the web content behind it (controlled by CSS variables)
|
|
3196
|
+
*/
|
|
3197
|
+
private updateNativeStatusBar;
|
|
3248
3198
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WhitelabelService, never>;
|
|
3249
3199
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<WhitelabelService>;
|
|
3250
3200
|
}
|
|
@@ -3252,24 +3202,20 @@ declare class WhitelabelService {
|
|
|
3252
3202
|
/**
|
|
3253
3203
|
* Whitelabel Demo Page
|
|
3254
3204
|
*
|
|
3255
|
-
* Demonstrates the whitelabeling system with
|
|
3205
|
+
* Demonstrates the whitelabeling system with theme selection, brand colors, and logo previews.
|
|
3256
3206
|
*/
|
|
3257
3207
|
declare class WhitelabelDemoPage implements OnInit {
|
|
3258
3208
|
whitelabelService: WhitelabelService;
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3209
|
+
currentTheme: string;
|
|
3210
|
+
customPrimarySurface: string;
|
|
3211
|
+
customPrimaryContent: string;
|
|
3212
|
+
customSecondarySurface: string;
|
|
3213
|
+
customSecondaryContent: string;
|
|
3263
3214
|
ngOnInit(): void;
|
|
3264
|
-
handleFullLogoUpload(event: Event): void;
|
|
3265
|
-
handleLogomarkUpload(event: Event): void;
|
|
3266
|
-
resetFullLogo(): void;
|
|
3267
|
-
resetLogomark(): void;
|
|
3268
|
-
configJson(): string;
|
|
3269
3215
|
applyDefaultTheme(): void;
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3216
|
+
applyCejTheme(): void;
|
|
3217
|
+
applyPkaTheme(): void;
|
|
3218
|
+
applyClaveTheme(): void;
|
|
3273
3219
|
applyCustomColors(): void;
|
|
3274
3220
|
private updateCustomColorInputs;
|
|
3275
3221
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WhitelabelDemoPage, never>;
|
|
@@ -3295,5 +3241,5 @@ declare const customPageTransition: (_: HTMLElement, opts: any) => Animation;
|
|
|
3295
3241
|
*/
|
|
3296
3242
|
declare const customBackTransition: (_: HTMLElement, opts: any) => Animation;
|
|
3297
3243
|
|
|
3298
|
-
export { ActionCommentComponent, ActionLikeComponent, ContentRowComponent, DsMobileActionsBottomSheetComponent,
|
|
3299
|
-
export type { ActionGroup, ActionItem, ActionResult,
|
|
3244
|
+
export { ActionCommentComponent, ActionLikeComponent, ContentRowComponent, DsMobileActionsBottomSheetComponent, DsMobileBottomSheetService, DsMobileActionsBottomSheetComponent as DsMobileCommentActionsBottomSheetComponent, DsMobileCommentComponent, DsMobileContactListItemComponent, DsMobileContentComponent, DsMobileContentSectionComponent, DsMobileHandbookFolderComponent, DsMobileHandbookFolderMiniComponent, DsMobileHeaderContentComponent, DsMobileHeaderContentTileComponent, DsMobileInlinePhotoComponent, DsMobileInlineTabsComponent, DsMobileInteractiveListItemInquiryComponent, DsMobileInteractiveListItemMessageComponent, DsMobileInteractiveListItemPostComponent, DsMobileLightboxImageComponent as DsMobileLightboxComponent, DsMobileLightboxFooterComponent, DsMobileLightboxHeaderComponent, DsMobileLightboxImageComponent, DsMobileLightboxPdfComponent, DsMobileLightboxService, DsMobileListItemComponent, DsMobileLongPressDirective, DsMobileModalService, DsMobilePageDetailsComponent, DsMobilePageMainComponent, DsMobileActionsBottomSheetComponent as DsMobilePostActionsBottomSheetComponent, DsMobilePostCardComponent, DsMobilePostComposerComponent, DsMobilePostCreateBottomSheetComponent, DsMobilePostDetailModalComponent, DsMobilePostDetailModalService, DsMobileTabBarComponent, DsMobileTabsComponent, MobileCommunityPageComponent, MobileHandbookPageComponent, MobileHomePageComponent, MobileInquiriesPageComponent, MobileInquiryDetailPageComponent, MobilePageBase, MobilePostDetailPageComponent, MobileTabsExampleComponent, PostActionsComponent, PostAttachmentsComponent, PostContentComponent, PostCreatePageComponent, PostMediaComponent, PostPdfAttachmentComponent, PostTextComponent, SectionHeaderComponent, TileContentComponent, TileIconComponent, TileLabelComponent, TileValueComponent, UserService, WhitelabelDemoPage, WhitelabelService, customBackTransition, customPageTransition };
|
|
3245
|
+
export type { ActionGroup, ActionItem, ActionResult, BottomSheetOptions, ActionResult as CommentActionResult, CommentData, ContentWidth, InlineTabItem, LightboxAuthor, LightboxImage, LightboxImageOptions, LightboxMediaFile, LightboxMediaType, LightboxOptions, LightboxPdf, LightboxPdfOptions, ModalOptions, ActionResult as PostActionResult, PostDetailData, TabConfig$1 as TabConfig, WhitelabelConfig };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@propbinder/mobile-design",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^20.3.0 || ^21.0.0",
|
|
6
6
|
"@angular/core": "^20.3.0 || ^21.0.0"
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
"./styles/globals.css": {
|
|
29
29
|
"default": "./styles/globals.css"
|
|
30
30
|
},
|
|
31
|
+
"./styles/ionic.css": {
|
|
32
|
+
"default": "./styles/ionic.css"
|
|
33
|
+
},
|
|
34
|
+
"./styles/mobile-common.css": {
|
|
35
|
+
"default": "./styles/mobile-common.css"
|
|
36
|
+
},
|
|
37
|
+
"./styles/mobile-page-base.css": {
|
|
38
|
+
"default": "./styles/mobile-page-base.css"
|
|
39
|
+
},
|
|
31
40
|
"./ui/*": {
|
|
32
41
|
"default": "./ui/*"
|
|
33
42
|
},
|