51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
import React from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import ViewButton from './ViewButton'
|
|
import { getModelByName } from '../../../database/ObjectModels'
|
|
|
|
const ColumnViewButton = ({
|
|
type,
|
|
disabled = false,
|
|
visibleState = {},
|
|
updateVisibleState = () => {},
|
|
...buttonProps
|
|
}) => {
|
|
// Get the model by name
|
|
const model = getModelByName(type)
|
|
|
|
// Get the properties that correspond to the model's columns
|
|
const columnProperties =
|
|
model.columns
|
|
?.map((columnName) => {
|
|
const property = model.properties.find(
|
|
(prop) => prop.name === columnName
|
|
)
|
|
if (property) {
|
|
return {
|
|
key: property.name,
|
|
label: property.label
|
|
}
|
|
}
|
|
})
|
|
.filter(Boolean) || []
|
|
|
|
return (
|
|
<ViewButton
|
|
disabled={disabled}
|
|
items={columnProperties}
|
|
visibleState={visibleState}
|
|
updateVisibleState={updateVisibleState}
|
|
{...buttonProps}
|
|
/>
|
|
)
|
|
}
|
|
|
|
ColumnViewButton.propTypes = {
|
|
type: PropTypes.string.isRequired,
|
|
disabled: PropTypes.bool,
|
|
visibleState: PropTypes.object,
|
|
updateVisibleState: PropTypes.func
|
|
}
|
|
|
|
export default ColumnViewButton
|