@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
186 lines • 6.16 kB
JavaScript
import React from 'react';
import { ToolbarDropdownItemSection } from '@atlaskit/editor-toolbar';
import { AddColumnLeftItem } from './items/AddColumnLeftItem';
import { AddColumnRightItem } from './items/AddColumnRightItem';
import { ColumnBackgroundSection } from './items/ColumnBackgroundSection';
import { ColumnToggleSection } from './items/ColumnToggleSection';
import { DeleteColumnItem } from './items/DeleteColumnItem';
import { DistributeColumnsItem } from './items/DistributeColumnsItem';
import { HeaderColumnToggleItem } from './items/HeaderColumnToggleItem';
import { MoveColumnLeftItem } from './items/MoveColumnLeftItem';
import { MoveColumnRightItem } from './items/MoveColumnRightItem';
import { SortDecreasingItem } from './items/SortDecreasingItem';
import { SortIncreasingItem } from './items/SortIncreasingItem';
import { COLUMN_MENU, COLUMN_TOGGLE_SECTION, COLUMN_BACKGROUND_SECTION, COLUMN_SORT_SECTION, COLUMN_ADD_SECTION, COLUMN_DANGER_SECTION, COLUMN_SECTION_RANK, HEADER_COLUMN_TOGGLE_ITEM, SORT_INCREASING_ITEM, SORT_DECREASING_ITEM, ADD_COLUMN_LEFT_ITEM, ADD_COLUMN_RIGHT_ITEM, MOVE_COLUMN_LEFT_ITEM, MOVE_COLUMN_RIGHT_ITEM, DISTRIBUTE_COLUMNS_ITEM, DELETE_COLUMN_ITEM, COLUMN_TOGGLE_SECTION_RANK, COLUMN_SORT_SECTION_RANK, COLUMN_ADD_SECTION_RANK, COLUMN_DANGER_SECTION_RANK } from './keys';
export const getColumnMenuComponents = ({
api
}) => [
// --- Menu surface ---
{
type: COLUMN_MENU.type,
key: COLUMN_MENU.key
},
// --- Toggle section (Header column) ---
{
type: COLUMN_TOGGLE_SECTION.type,
key: COLUMN_TOGGLE_SECTION.key,
parents: [{
type: COLUMN_MENU.type,
key: COLUMN_MENU.key,
rank: COLUMN_SECTION_RANK[COLUMN_TOGGLE_SECTION.key]
}],
component: props => /*#__PURE__*/React.createElement(ColumnToggleSection, {
api: api
}, props.children)
}, {
type: HEADER_COLUMN_TOGGLE_ITEM.type,
key: HEADER_COLUMN_TOGGLE_ITEM.key,
parents: [{
type: COLUMN_TOGGLE_SECTION.type,
key: COLUMN_TOGGLE_SECTION.key,
rank: COLUMN_TOGGLE_SECTION_RANK[HEADER_COLUMN_TOGGLE_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(HeaderColumnToggleItem, {
api: api
})
},
// --- Background color section ---
{
type: COLUMN_BACKGROUND_SECTION.type,
key: COLUMN_BACKGROUND_SECTION.key,
parents: [{
type: COLUMN_MENU.type,
key: COLUMN_MENU.key,
rank: COLUMN_SECTION_RANK[COLUMN_BACKGROUND_SECTION.key]
}],
component: props => /*#__PURE__*/React.createElement(ColumnBackgroundSection, {
api: api
}, props.children)
},
// --- Sort section ---
{
type: COLUMN_SORT_SECTION.type,
key: COLUMN_SORT_SECTION.key,
parents: [{
type: COLUMN_MENU.type,
key: COLUMN_MENU.key,
rank: COLUMN_SECTION_RANK[COLUMN_SORT_SECTION.key]
}],
component: props => /*#__PURE__*/React.createElement(ToolbarDropdownItemSection, {
hasSeparator: true
}, props.children)
}, {
type: SORT_INCREASING_ITEM.type,
key: SORT_INCREASING_ITEM.key,
parents: [{
type: COLUMN_SORT_SECTION.type,
key: COLUMN_SORT_SECTION.key,
rank: COLUMN_SORT_SECTION_RANK[SORT_INCREASING_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(SortIncreasingItem, {
api: api
})
}, {
type: SORT_DECREASING_ITEM.type,
key: SORT_DECREASING_ITEM.key,
parents: [{
type: COLUMN_SORT_SECTION.type,
key: COLUMN_SORT_SECTION.key,
rank: COLUMN_SORT_SECTION_RANK[SORT_DECREASING_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(SortDecreasingItem, {
api: api
})
},
// --- Add / Move section ---
{
type: COLUMN_ADD_SECTION.type,
key: COLUMN_ADD_SECTION.key,
parents: [{
type: COLUMN_MENU.type,
key: COLUMN_MENU.key,
rank: COLUMN_SECTION_RANK[COLUMN_ADD_SECTION.key]
}],
component: props => /*#__PURE__*/React.createElement(ToolbarDropdownItemSection, {
hasSeparator: true
}, props.children)
}, {
type: ADD_COLUMN_LEFT_ITEM.type,
key: ADD_COLUMN_LEFT_ITEM.key,
parents: [{
type: COLUMN_ADD_SECTION.type,
key: COLUMN_ADD_SECTION.key,
rank: COLUMN_ADD_SECTION_RANK[ADD_COLUMN_LEFT_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(AddColumnLeftItem, {
api: api
})
}, {
type: ADD_COLUMN_RIGHT_ITEM.type,
key: ADD_COLUMN_RIGHT_ITEM.key,
parents: [{
type: COLUMN_ADD_SECTION.type,
key: COLUMN_ADD_SECTION.key,
rank: COLUMN_ADD_SECTION_RANK[ADD_COLUMN_RIGHT_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(AddColumnRightItem, {
api: api
})
}, {
type: MOVE_COLUMN_LEFT_ITEM.type,
key: MOVE_COLUMN_LEFT_ITEM.key,
parents: [{
type: COLUMN_ADD_SECTION.type,
key: COLUMN_ADD_SECTION.key,
rank: COLUMN_ADD_SECTION_RANK[MOVE_COLUMN_LEFT_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(MoveColumnLeftItem, {
api: api
})
}, {
type: MOVE_COLUMN_RIGHT_ITEM.type,
key: MOVE_COLUMN_RIGHT_ITEM.key,
parents: [{
type: COLUMN_ADD_SECTION.type,
key: COLUMN_ADD_SECTION.key,
rank: COLUMN_ADD_SECTION_RANK[MOVE_COLUMN_RIGHT_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(MoveColumnRightItem, {
api: api
})
}, {
type: DISTRIBUTE_COLUMNS_ITEM.type,
key: DISTRIBUTE_COLUMNS_ITEM.key,
parents: [{
type: COLUMN_ADD_SECTION.type,
key: COLUMN_ADD_SECTION.key,
rank: COLUMN_ADD_SECTION_RANK[DISTRIBUTE_COLUMNS_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(DistributeColumnsItem, {
api: api
})
},
// --- Danger section (Clear cells, Delete column) ---
{
type: COLUMN_DANGER_SECTION.type,
key: COLUMN_DANGER_SECTION.key,
parents: [{
type: COLUMN_MENU.type,
key: COLUMN_MENU.key,
rank: COLUMN_SECTION_RANK[COLUMN_DANGER_SECTION.key]
}],
component: props => /*#__PURE__*/React.createElement(ToolbarDropdownItemSection, {
hasSeparator: true
}, props.children)
}, {
type: DELETE_COLUMN_ITEM.type,
key: DELETE_COLUMN_ITEM.key,
parents: [{
type: COLUMN_DANGER_SECTION.type,
key: COLUMN_DANGER_SECTION.key,
rank: COLUMN_DANGER_SECTION_RANK[DELETE_COLUMN_ITEM.key]
}],
component: () => /*#__PURE__*/React.createElement(DeleteColumnItem, {
api: api
})
}];