WIP - do not display id on list views and correctly format datetime fields
This commit is contained in:
@@ -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',
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user