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 whenautoRefresh
is 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.