@propbinder/mobile-design 0.3.1 → 0.3.3

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
@@ -2193,6 +2193,27 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
2193
2193
  initials: string;
2194
2194
  role: string;
2195
2195
  }[]>;
2196
+ /**
2197
+ * Whether to show the internal message toggle
2198
+ */
2199
+ showInternalToggle: _angular_core.InputSignal<boolean>;
2200
+ /**
2201
+ * Label for the internal message toggle
2202
+ */
2203
+ internalToggleLabel: _angular_core.InputSignal<string>;
2204
+ /**
2205
+ * Label for the reply header
2206
+ */
2207
+ replyLabel: _angular_core.InputSignal<string>;
2208
+ /**
2209
+ * Description text shown when internal message is active
2210
+ */
2211
+ internalMessageDescription: _angular_core.InputSignal<string>;
2212
+ /**
2213
+ * Local state for internal toggle
2214
+ */
2215
+ isInternal: _angular_core.WritableSignal<boolean>;
2216
+ toggleInternal(): void;
2196
2217
  /**
2197
2218
  * Auto-focus input on mount
2198
2219
  */
@@ -2291,6 +2312,7 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
2291
2312
  replyTo?: string;
2292
2313
  isEdit?: boolean;
2293
2314
  attachments?: AttachmentData[];
2315
+ isInternal?: boolean;
2294
2316
  }>;
2295
2317
  /**
2296
2318
  * Emits when edit is cancelled
@@ -2431,7 +2453,7 @@ declare class DsMobileMessageComposerComponent implements AfterViewInit, OnDestr
2431
2453
  */
2432
2454
  insertText(text: string): void;
2433
2455
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileMessageComposerComponent, never>;
2434
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileMessageComposerComponent, "ds-mobile-message-composer", never, { "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "sendButtonLabel": { "alias": "sendButtonLabel"; "required": false; "isSignal": true; }; "attachmentButtonLabel": { "alias": "attachmentButtonLabel"; "required": false; "isSignal": true; }; "showAttachmentButton": { "alias": "showAttachmentButton"; "required": false; "isSignal": true; }; "showAiButton": { "alias": "showAiButton"; "required": false; "isSignal": true; }; "editIndicatorText": { "alias": "editIndicatorText"; "required": false; "isSignal": true; }; "replyIndicatorText": { "alias": "replyIndicatorText"; "required": false; "isSignal": true; }; "enableMentions": { "alias": "enableMentions"; "required": false; "isSignal": true; }; "mentionUsers": { "alias": "mentionUsers"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; }, { "messageSent": "messageSent"; "editCancelled": "editCancelled"; "replyCancelled": "replyCancelled"; "mentionSelected": "mentionSelected"; "attachmentClicked": "attachmentClicked"; "attachmentsChanged": "attachmentsChanged"; "aiClick": "aiClick"; }, never, never, true, never>;
2456
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileMessageComposerComponent, "ds-mobile-message-composer", never, { "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "sendButtonLabel": { "alias": "sendButtonLabel"; "required": false; "isSignal": true; }; "attachmentButtonLabel": { "alias": "attachmentButtonLabel"; "required": false; "isSignal": true; }; "showAttachmentButton": { "alias": "showAttachmentButton"; "required": false; "isSignal": true; }; "showAiButton": { "alias": "showAiButton"; "required": false; "isSignal": true; }; "editIndicatorText": { "alias": "editIndicatorText"; "required": false; "isSignal": true; }; "replyIndicatorText": { "alias": "replyIndicatorText"; "required": false; "isSignal": true; }; "enableMentions": { "alias": "enableMentions"; "required": false; "isSignal": true; }; "mentionUsers": { "alias": "mentionUsers"; "required": false; "isSignal": true; }; "showInternalToggle": { "alias": "showInternalToggle"; "required": false; "isSignal": true; }; "internalToggleLabel": { "alias": "internalToggleLabel"; "required": false; "isSignal": true; }; "replyLabel": { "alias": "replyLabel"; "required": false; "isSignal": true; }; "internalMessageDescription": { "alias": "internalMessageDescription"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "autoFocus"; "required": false; "isSignal": true; }; }, { "messageSent": "messageSent"; "editCancelled": "editCancelled"; "replyCancelled": "replyCancelled"; "mentionSelected": "mentionSelected"; "attachmentClicked": "attachmentClicked"; "attachmentsChanged": "attachmentsChanged"; "aiClick": "aiClick"; }, never, never, true, never>;
2435
2457
  }
2436
2458
 
2437
2459
  /**
@@ -2514,6 +2536,14 @@ declare class DsMobileMessageBubbleComponent {
2514
2536
  * Sender's name (for display purposes)
2515
2537
  */
2516
2538
  senderName: _angular_core.InputSignal<string>;
2539
+ /**
2540
+ * Whether the message is an internal message
2541
+ */
2542
+ isInternal: _angular_core.InputSignal<boolean>;
2543
+ /**
2544
+ * Text for the internal message badge
2545
+ */
2546
+ internalMessageBadgeText: _angular_core.InputSignal<string>;
2517
2547
  /**
2518
2548
  * Timestamp text (e.g., "12:34", "08-12-2025 13:18")
2519
2549
  */
@@ -2614,7 +2644,7 @@ declare class DsMobileMessageBubbleComponent {
2614
2644
  */
2615
2645
  handleContextMenu(event: Event): void;
2616
2646
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsMobileMessageBubbleComponent, never>;
2617
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileMessageBubbleComponent, "ds-mobile-message-bubble", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "isOwnMessage": { "alias": "isOwnMessage"; "required": false; "isSignal": true; }; "senderName": { "alias": "senderName"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "showTimestamp": { "alias": "showTimestamp"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "showAvatar": { "alias": "showAvatar"; "required": false; "isSignal": true; }; "clusterPosition": { "alias": "clusterPosition"; "required": false; "isSignal": true; }; "attachments": { "alias": "attachments"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "isNewMessage": { "alias": "isNewMessage"; "required": false; "isSignal": true; }; "isDeleted": { "alias": "isDeleted"; "required": false; "isSignal": true; }; "showEditedHint": { "alias": "showEditedHint"; "required": false; "isSignal": true; }; "editedHintText": { "alias": "editedHintText"; "required": false; "isSignal": true; }; }, { "attachmentClick": "attachmentClick"; "longPress": "longPress"; "messageClick": "messageClick"; }, never, never, true, never>;
2647
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMobileMessageBubbleComponent, "ds-mobile-message-bubble", never, { "content": { "alias": "content"; "required": true; "isSignal": true; }; "isOwnMessage": { "alias": "isOwnMessage"; "required": false; "isSignal": true; }; "senderName": { "alias": "senderName"; "required": false; "isSignal": true; }; "isInternal": { "alias": "isInternal"; "required": false; "isSignal": true; }; "internalMessageBadgeText": { "alias": "internalMessageBadgeText"; "required": false; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": true; "isSignal": true; }; "showTimestamp": { "alias": "showTimestamp"; "required": false; "isSignal": true; }; "avatarInitials": { "alias": "avatarInitials"; "required": false; "isSignal": true; }; "avatarType": { "alias": "avatarType"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "showAvatar": { "alias": "showAvatar"; "required": false; "isSignal": true; }; "clusterPosition": { "alias": "clusterPosition"; "required": false; "isSignal": true; }; "attachments": { "alias": "attachments"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "isNewMessage": { "alias": "isNewMessage"; "required": false; "isSignal": true; }; "isDeleted": { "alias": "isDeleted"; "required": false; "isSignal": true; }; "showEditedHint": { "alias": "showEditedHint"; "required": false; "isSignal": true; }; "editedHintText": { "alias": "editedHintText"; "required": false; "isSignal": true; }; }, { "attachmentClick": "attachmentClick"; "longPress": "longPress"; "messageClick": "messageClick"; }, never, never, true, never>;
2618
2648
  }
2619
2649
 
2620
2650
  /**
@@ -4125,6 +4155,7 @@ interface ChatMessage {
4125
4155
  avatarType?: 'initials' | 'photo' | 'icon';
4126
4156
  avatarSrc?: string;
4127
4157
  isOwnMessage: boolean;
4158
+ isInternal?: boolean;
4128
4159
  attachments?: ChatAttachment[];
4129
4160
  fileAttachments?: AttachmentData[];
4130
4161
  isNewMessage?: boolean;
@@ -4251,7 +4282,7 @@ interface ChatModalData {
4251
4282
  * Callback executed when a message is sent from the chat.
4252
4283
  * Use this to handle API calls to your backend.
4253
4284
  */
4254
- onSend?: (message: string, attachments: AttachmentData[]) => void | Promise<void>;
4285
+ onSend?: (message: string, attachments: AttachmentData[], isInternal?: boolean) => void | Promise<void>;
4255
4286
  /**
4256
4287
  * Optional callback for generating an AI reply.
4257
4288
  * Resolves with the generated text, or void/null if cancelled or failed.
@@ -4285,10 +4316,16 @@ interface ChatModalData {
4285
4316
  allTenantsForPicker?: ChatParticipant[];
4286
4317
  /** Localizable UI labels — Danish defaults used when omitted. */
4287
4318
  labels?: Partial<ChatModalLabels>;
4319
+ /** Whether to show the internal message toggle */
4320
+ showInternalToggle?: boolean;
4288
4321
  }
4289
4322
  interface ChatModalLabels {
4290
4323
  composerPlaceholder: string;
4291
4324
  composerEditIndicator: string;
4325
+ internalToggleLabel: string;
4326
+ replyLabel: string;
4327
+ internalMessageDescription: string;
4328
+ internalMessageBadge: string;
4292
4329
  addMembersTitle: string;
4293
4330
  youSenderName: string;
4294
4331
  actionCopy: string;
@@ -4445,6 +4482,7 @@ declare class DsMobileChatModalComponent implements OnInit, AfterViewInit {
4445
4482
  replyTo?: string;
4446
4483
  isEdit?: boolean;
4447
4484
  attachments?: AttachmentData[];
4485
+ isInternal?: boolean;
4448
4486
  }): void;
4449
4487
  /**
4450
4488
  * Handle attachment click
@@ -5166,7 +5204,7 @@ declare class DsMobileCreateGroupModalComponent implements OnInit {
5166
5204
  members: CreateGroupMember[];
5167
5205
  defaultName: string;
5168
5206
  allTenants: CreateGroupMember[];
5169
- view: _angular_core.WritableSignal<"main" | "add-members">;
5207
+ view: _angular_core.WritableSignal<"add-members" | "main">;
5170
5208
  groupName: _angular_core.WritableSignal<string>;
5171
5209
  customAvatarUrl: _angular_core.WritableSignal<string>;
5172
5210
  localMembers: _angular_core.WritableSignal<CreateGroupMember[]>;
@@ -8569,7 +8607,7 @@ declare class DsTextInputComponent implements ControlValueAccessor {
8569
8607
  hasError: _angular_core.InputSignal<boolean>;
8570
8608
  errorMessage: _angular_core.InputSignal<string>;
8571
8609
  autocomplete: _angular_core.InputSignal<string>;
8572
- inputmode: _angular_core.InputSignal<"search" | "text" | "email" | "tel" | "url" | "numeric" | undefined>;
8610
+ inputmode: _angular_core.InputSignal<"search" | "text" | "numeric" | "email" | "tel" | "url" | undefined>;
8573
8611
  autoClearError: _angular_core.InputSignal<boolean>;
8574
8612
  validator: _angular_core.InputSignal<((value: string) => boolean) | null>;
8575
8613
  valueChange: _angular_core.OutputEmitterRef<string>;
@@ -8877,7 +8915,7 @@ declare class DsMobileIllustrationComponent {
8877
8915
  * Predefined illustration variant
8878
8916
  * Available variants: 'post', 'inquiry', 'confirmation', 'family'
8879
8917
  */
8880
- variant: _angular_core.InputSignal<"post" | "inquiry" | "confirmation" | "family" | "cancel-booking" | "delete-warning">;
8918
+ variant: _angular_core.InputSignal<"inquiry" | "delete-warning" | "post" | "confirmation" | "family" | "cancel-booking">;
8881
8919
  /**
8882
8920
  * Illustration size (width and height)
8883
8921
  * @default '120px'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"