WIP - do not display id on list views and correctly format datetime fields

This commit is contained in:
Francisco Gaona
2026-01-26 19:37:17 +01:00
parent ce65817670
commit c7282ee2a0
3 changed files with 34 additions and 4 deletions

View File

@@ -79,6 +79,10 @@ export class FieldMapperService {
const frontendType = this.mapFieldType(field.type); const frontendType = this.mapFieldType(field.type);
const isLookupField = frontendType === 'belongsTo' || field.type.toLowerCase().includes('lookup'); const isLookupField = frontendType === 'belongsTo' || field.type.toLowerCase().includes('lookup');
// Hide 'id' field from list view by default
const isIdField = field.apiName === 'id';
const defaultShowOnList = isIdField ? false : true;
return { return {
id: field.id, id: field.id,
apiName: field.apiName, apiName: field.apiName,
@@ -95,7 +99,7 @@ export class FieldMapperService {
isReadOnly: field.isSystem || uiMetadata.isReadOnly || false, isReadOnly: field.isSystem || uiMetadata.isReadOnly || false,
// View visibility // View visibility
showOnList: uiMetadata.showOnList !== false, showOnList: uiMetadata.showOnList !== undefined ? uiMetadata.showOnList : defaultShowOnList,
showOnDetail: uiMetadata.showOnDetail !== false, showOnDetail: uiMetadata.showOnDetail !== false,
showOnEdit: uiMetadata.showOnEdit !== false && !field.isSystem, showOnEdit: uiMetadata.showOnEdit !== false && !field.isSystem,
sortable: uiMetadata.sortable !== false, sortable: uiMetadata.sortable !== false,
@@ -141,6 +145,7 @@ export class FieldMapperService {
'boolean': 'boolean', 'boolean': 'boolean',
'date': 'date', 'date': 'date',
'datetime': 'datetime', 'datetime': 'datetime',
'date_time': 'datetime',
'time': 'time', 'time': 'time',
'email': 'email', 'email': 'email',
'url': 'url', 'url': 'url',

View File

@@ -85,9 +85,31 @@ const formatValue = (val: any): string => {
case FieldType.BELONGS_TO: case FieldType.BELONGS_TO:
return relationshipDisplayValue.value return relationshipDisplayValue.value
case FieldType.DATE: case FieldType.DATE:
return val instanceof Date ? val.toLocaleDateString() : new Date(val).toLocaleDateString() try {
const date = val instanceof Date ? val : new Date(val)
return date.toLocaleDateString(undefined, {
year: 'numeric',
month: '2-digit',
day: '2-digit'
})
} catch {
return String(val)
}
case FieldType.DATETIME: case FieldType.DATETIME:
return val instanceof Date ? val.toLocaleString() : new Date(val).toLocaleString() try {
const date = val instanceof Date ? val : new Date(val)
return date.toLocaleString(undefined, {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
})
} catch {
return String(val)
}
case FieldType.BOOLEAN: case FieldType.BOOLEAN:
return val ? 'Yes' : 'No' return val ? 'Yes' : 'No'
case FieldType.CURRENCY: case FieldType.CURRENCY:

View File

@@ -20,6 +20,9 @@ export const useFields = () => {
// Hide system fields and auto-generated fields on edit // Hide system fields and auto-generated fields on edit
const shouldHideOnEdit = isSystemField || isAutoGeneratedField const shouldHideOnEdit = isSystemField || isAutoGeneratedField
// Hide 'id' field from list view by default (check both apiName and id field)
const shouldHideOnList = fieldDef.apiName === 'id' || fieldDef.label === 'Id' || fieldDef.label === 'ID'
return { return {
id: fieldDef.id, id: fieldDef.id,
apiName: fieldDef.apiName, apiName: fieldDef.apiName,
@@ -37,7 +40,7 @@ export const useFields = () => {
validationRules: fieldDef.validationRules || [], validationRules: fieldDef.validationRules || [],
// View options - only hide system and auto-generated fields by default // View options - only hide system and auto-generated fields by default
showOnList: fieldDef.showOnList ?? true, showOnList: fieldDef.showOnList ?? !shouldHideOnList,
showOnDetail: fieldDef.showOnDetail ?? true, showOnDetail: fieldDef.showOnDetail ?? true,
showOnEdit: fieldDef.showOnEdit ?? !shouldHideOnEdit, showOnEdit: fieldDef.showOnEdit ?? !shouldHideOnEdit,
sortable: fieldDef.sortable ?? true, sortable: fieldDef.sortable ?? true,