| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- import {align, getAlignmentClasses, checkSelectionConsistency, markLabelAsSelected} from './../utils';
- import {KEY as SEPARATOR} from './separator';
- export const KEY = 'alignment';
- export default function alignmentItem() {
- return {
- key: KEY,
- name: 'Alignment',
- disabled() {
- return !(this.getSelectedRange() && !this.selection.selectedHeader.corner);
- },
- submenu: {
- items: [
- {
- key: `${KEY}:left`,
- name() {
- let label = 'Left';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htLeft') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'horizontal';
- let alignment = 'htLeft';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- },
- {
- key: `${KEY}:center`,
- name() {
- let label = 'Center';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htCenter') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'horizontal';
- let alignment = 'htCenter';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- },
- {
- key: `${KEY}:right`,
- name() {
- let label = 'Right';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htRight') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'horizontal';
- let alignment = 'htRight';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- },
- {
- key: `${KEY}:justify`,
- name() {
- let label = 'Justify';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htJustify') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'horizontal';
- let alignment = 'htJustify';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- },
- {
- name: SEPARATOR
- },
- {
- key: `${KEY}:top`,
- name() {
- let label = 'Top';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htTop') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'vertical';
- let alignment = 'htTop';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- },
- {
- key: `${KEY}:middle`,
- name() {
- let label = 'Middle';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htMiddle') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'vertical';
- let alignment = 'htMiddle';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- },
- {
- key: `${KEY}:bottom`,
- name() {
- let label = 'Bottom';
- let hasClass = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
- let className = this.getCellMeta(row, col).className;
- if (className && className.indexOf('htBottom') !== -1) {
- return true;
- }
- });
- if (hasClass) {
- label = markLabelAsSelected(label);
- }
- return label;
- },
- callback() {
- let range = this.getSelectedRange();
- let stateBefore = getAlignmentClasses(range, (row, col) => this.getCellMeta(row, col).className);
- let type = 'vertical';
- let alignment = 'htBottom';
- this.runHooks('beforeCellAlignment', stateBefore, range, type, alignment);
- align(range, type, alignment, (row, col) => this.getCellMeta(row, col),
- (row, col, key, value) => this.setCellMeta(row, col, key, value));
- this.render();
- },
- disabled: false
- }
- ]
- }
- };
- }
|