Notes Component
Introduction
The Notes Component is a rich-text editor built on TipTap that enables users to create, edit, and manage threaded notes for any entity in CargoXplorer TMS. It provides a powerful documentation and collaboration system with support for mentions, tags, rich formatting, and full-text search across logistics workflows.
Key Concepts:
- Notes are automatically organized into implicit threads identified by organizationId + threadName
- Each notes component instance displays and manages notes from a single thread
- Threads are auto-created when first accessed - no pre-configuration required
- Rich-text editing with TipTap provides professional document authoring capabilities
- Full-text search, tagging, and mention system enable efficient information retrieval
YAML Structure
component: notes
props:
threadName: "ParcelShipment/10001/Internal"
title:
en-US: "Parcel Shipment Notes"
height: 400
placeholder: "Add your notes here..."
readonly: false
options:
allowAttachments: true
allowReplies: true
sortOrder: "desc"
showTimestamps: true
showAuthor: true
autoRefresh: false
refreshInterval: 30
pagination:
pageSize: 20
orderBy: "createdAt"
permissions:
create: "Notes/Create"
view: "Notes/View"
edit: "Notes/Edit"
delete: "Notes/Delete"
events:
onNoteCreated:
- notification:
message: "Note added successfully"
onNoteUpdated:
- setVariables:
lastUpdated: "{{ event.note.updatedAt }}"
onNoteDeleted:
- notification:
message: "Note deleted"
Attribute Description
Core Attributes
component: (string) Required - Must be set to "notes" to use this component type.props: (object) Required - Contains the configuration properties for the notes component.
Props Attributes
Required Properties
threadName: (string) Required - Thread identifier for grouping related notes. Threads are automatically created when first accessed. Use the entity type and id to create a unique thread name. For example, "ParcelShipment/123456/Internal".
Optional Properties
-
title: (object) - Localized title for the notes section.- Supports multiple languages (e.g.,
en-US,es-ES,fr-FR) - Default: "Notes" in the user's language
- Supports multiple languages (e.g.,
-
height: (number) - Height of the component in pixels.- Default:
400 - Minimum:
200
- Default:
-
placeholder: (string) - Placeholder text displayed in empty editor.- Default: "Add your notes here..."
-
readonly: (boolean) - Enable read-only mode to prevent editing.- Default:
false - When
true, disables all editing, creation, and deletion
- Default:
-
options: (object) - Configuration options for component behavior and display.allowAttachments: (boolean) - Enable attaching files to notes- Default:
true
- Default:
allowReplies: (boolean) - Enable threaded replies under notes- Default:
true
- Default:
sortOrder: (string) - Sort order for notes- Options:
"asc","desc" - Default:
"desc"
- Options:
showTimestamps: (boolean) - Display created/updated timestamps- Default:
true
- Default:
showAuthor: (boolean) - Display author/user on each note- Default:
true
- Default:
autoRefresh: (boolean) - Auto-refresh the notes list- Default:
false
- Default:
refreshInterval: (number) - Auto-refresh interval in seconds (used whenautoRefreshis true)- Default:
30
- Default:
-
editor: (object) - TipTap editor configuration and extensions.extensions: (array) - Enabled editor extensions- Available:
bold,italic,underline,strikethrough,bulletList,orderedList,link,mention,table,image,code,codeBlock,highlight,taskList
- Available:
mentions: (object) - Mention functionality settingsenabled: (boolean) - Enable @mentions feature
tags: (object) - Tag configurationsuggestions: (array) - Pre-defined tag suggestions for quick selection
-
pagination: (object) - Pagination settings for note listing.pageSize: (number) - Number of notes to display per page- Default:
20 - Range: 5-100
- Default:
orderBy: (string) - Sort field- Options:
"createdAt","updatedAt" - Default:
"createdAt"
- Options:
orderDirection: (string) - Sort direction- Options:
"ASC"(oldest first),"DESC"(newest first) - Default:
"DESC"
- Options:
-
permissions: (object) - Permission control for note operations.create: (string) - Permission required to create notesview: (string) - Permission required to view notesedit: (string) - Permission required to edit notesdelete: (string) - Permission required to delete notes
Note: props.readonly: true disables create/edit/delete actions even if permissions are granted.
Events Attributes
events: (object) - Event handlers for notes interactions usingonNoteCreated: (array) - Actions executed when a note is createdonNoteUpdated: (array) - Actions executed when a note is updatedonNoteDeleted: (array) - Actions executed when a note is deletedonMentionClick: (array) - Actions executed when a mention is clickedonTagClick: (array) - Actions executed when a tag is clicked
Examples
Basic Notes Component
component: notes
props:
threadName: "Order/{{ orderId }}/Internal"
This creates a basic notes component with default settings for order-related customer communication.
Customer Support Notes with Tags and Mentions
component: notes
props:
threadName: "Support Case/{{ ticketNumber }}/Internal"
title:
en-US: "Support Case Documentation"
editor:
extensions:
- bold
- italic
- bulletList
- orderedList
- link
- mention
mentions:
enabled: true
tags:
suggestions:
- "urgent"
- "waiting-customer"
- "escalated"
- "resolved"
events:
onNoteCreated:
- notification:
message: "Support note added"
This component provides rich text editing with mentions for support staff and predefined tags for case categorization.
Shipment Operations Log
component: notes
props:
threadName: "Shipment/{{ shipmentId }}/OperationsLog"
title:
en-US: "Operations Log"
editor:
extensions:
- bold
- italic
- bulletList
- orderedList
- table
- image
tags:
suggestions:
- "pickup"
- "delivery"
- "customs"
- "delay"
- "inspection"
pagination:
pageSize: 30
orderBy: "createdAt"
orderDirection: "ASC" # Chronological order for logs
events:
onNoteCreated:
- mutation:
command: "mutation LogShipmentActivity($shipmentId: ID!, $activity: String!) { logShipmentActivity(shipmentId: $shipmentId, activity: $activity) }"
variables:
shipmentId: "{{ shipmentId }}"
activity: "Documentation updated"
This configuration provides structured logging with tables and images, using chronological ordering appropriate for operational logs.
Read-Only Documentation
component: notes
props:
threadName: "SystemAudit/{{ auditId }}/Internal"
title:
en-US: "System Audit Log"
readonly: true
options:
allowAttachments: false
allowReplies: false
sortOrder: "desc"
showTimestamps: true
showAuthor: true
autoRefresh: false
permissions:
view: "Audit/View"
# No create, edit, or delete permissions - read only
This creates a read-only notes display for system-generated audit documentation.
Role-Based Access Control
component: notes
props:
threadName: "QC Report/{{ inspectionId }}/Internal"
title:
en-US: "Quality Control Report"
readonly: "{{ eval user.role !== 'quality_inspector' }}"
options:
allowAttachments: "{{ eval user.role === 'quality_inspector' }}"
allowReplies: "{{ eval user.role === 'quality_inspector' }}"
editor:
tags:
suggestions:
- "passed"
- "failed"
- "retest-required"
permissions:
create: "QC/Reports/Create"
view: "QC/Reports/View"
edit: "QC/Reports/Edit"
This component adapts its interface based on user roles, providing full editing for quality inspectors and read-only access for others.