mirror of
https://github.com/codex-team/editor.js
synced 2024-06-10 18:03:25 +02:00
Rename custom to html, add enum with item types
This commit is contained in:
parent
f398168610
commit
af24b9c1a1
|
@ -26,6 +26,7 @@ import { isMutationBelongsToElement } from '../utils/mutations';
|
|||
import { EditorEventMap, FakeCursorAboutToBeToggled, FakeCursorHaveBeenSet, RedactorDomChanged } from '../events';
|
||||
import { RedactorDomChangedPayload } from '../events/RedactorDomChanged';
|
||||
import { convertBlockDataToString, isSameBlockData } from '../utils/blocks';
|
||||
import { PopoverItemType } from '../utils/popover';
|
||||
|
||||
/**
|
||||
* Interface describes Block class constructor argument
|
||||
|
@ -625,7 +626,7 @@ export default class Block extends EventsDispatcher<BlockEvents> {
|
|||
|
||||
if ($.isElement(tunesDefinedInTool)) {
|
||||
toolTunesPopoverParams.push({
|
||||
type: 'custom',
|
||||
type: PopoverItemType.Html,
|
||||
element: tunesDefinedInTool,
|
||||
});
|
||||
} else if (Array.isArray(tunesDefinedInTool)) {
|
||||
|
@ -644,7 +645,7 @@ export default class Block extends EventsDispatcher<BlockEvents> {
|
|||
commonTunes.forEach(tuneConfig => {
|
||||
if ($.isElement(tuneConfig)) {
|
||||
commonTunesPopoverParams.push({
|
||||
type: 'custom',
|
||||
type: PopoverItemType.Html,
|
||||
element: tuneConfig,
|
||||
});
|
||||
} else if (Array.isArray(tuneConfig)) {
|
||||
|
|
|
@ -7,7 +7,7 @@ import { I18nInternalNS } from '../../i18n/namespace-internal';
|
|||
import Flipper from '../../flipper';
|
||||
import { TunesMenuConfigItem } from '../../../../types/tools';
|
||||
import { resolveAliases } from '../../utils/resolve-aliases';
|
||||
import { type Popover, PopoverDesktop, PopoverMobile, PopoverItemParams, PopoverItemDefaultParams } from '../../utils/popover';
|
||||
import { type Popover, PopoverDesktop, PopoverMobile, PopoverItemParams, PopoverItemDefaultParams, PopoverItemType } from '../../utils/popover';
|
||||
import { PopoverEvent } from '../../utils/popover/popover.types';
|
||||
import { isMobileScreen } from '../../utils';
|
||||
import { EditorMobileLayoutToggled } from '../../events';
|
||||
|
@ -210,7 +210,7 @@ export default class BlockSettings extends Module<BlockSettingsNodes> {
|
|||
if (toolTunes !== undefined && toolTunes.length > 0) {
|
||||
items.push(...toolTunes);
|
||||
items.push({
|
||||
type: 'separator',
|
||||
type: PopoverItemType.Separator,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -225,7 +225,7 @@ export default class BlockSettings extends Module<BlockSettingsNodes> {
|
|||
},
|
||||
});
|
||||
items.push({
|
||||
type: 'separator',
|
||||
type: PopoverItemType.Separator,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -318,7 +318,7 @@ export default class BlockSettings extends Module<BlockSettingsNodes> {
|
|||
* @param item - item with resolved aliases
|
||||
*/
|
||||
private resolveTuneAliases(item: TunesMenuConfigItem): PopoverItemParams {
|
||||
if (item.type === 'separator' || item.type === 'custom') {
|
||||
if (item.type === PopoverItemType.Separator || item.type === PopoverItemType.Html) {
|
||||
return item;
|
||||
}
|
||||
const result = resolveAliases(item, { label: 'title' });
|
||||
|
|
|
@ -3,7 +3,7 @@ import { bem } from '../../../../bem';
|
|||
/**
|
||||
* Popover item block CSS class constructor
|
||||
*/
|
||||
const className = bem('ce-popover-item-custom');
|
||||
const className = bem('ce-popover-item-html');
|
||||
|
||||
/**
|
||||
* CSS class names to be used in popover item class
|
|
@ -1,12 +1,12 @@
|
|||
import { PopoverItem } from '../popover-item';
|
||||
import { PopoverItemCustomParams } from '../popover-item.types';
|
||||
import { css } from './popover-item-custom.const';
|
||||
import { PopoverItemHtmlParams } from '../popover-item.types';
|
||||
import { css } from './popover-item-html.const';
|
||||
import Dom from '../../../../../dom';
|
||||
|
||||
/**
|
||||
* Represents popover item with custom html content
|
||||
*/
|
||||
export class PopoverItemCustom extends PopoverItem {
|
||||
export class PopoverItemHtml extends PopoverItem {
|
||||
/**
|
||||
* Item html elements
|
||||
*/
|
||||
|
@ -17,7 +17,7 @@ export class PopoverItemCustom extends PopoverItem {
|
|||
*
|
||||
* @param params – instance parameters
|
||||
*/
|
||||
constructor(params: PopoverItemCustomParams) {
|
||||
constructor(params: PopoverItemHtmlParams) {
|
||||
super();
|
||||
|
||||
this.nodes = {
|
|
@ -1,3 +1,16 @@
|
|||
/**
|
||||
* Popover item types
|
||||
*/
|
||||
export enum PopoverItemType {
|
||||
/** Default popover item */
|
||||
Default = 'default',
|
||||
|
||||
/** Separator item*/
|
||||
Separator = 'separator',
|
||||
|
||||
/** Item with custom html content */
|
||||
Html = 'html'
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents popover item separator.
|
||||
|
@ -7,17 +20,17 @@ export interface PopoverItemSeparatorParams {
|
|||
/**
|
||||
* Item type
|
||||
*/
|
||||
type: 'separator'
|
||||
type: PopoverItemType.Separator
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents popover item with custom html content
|
||||
*/
|
||||
export interface PopoverItemCustomParams {
|
||||
export interface PopoverItemHtmlParams {
|
||||
/**
|
||||
* Item type
|
||||
*/
|
||||
type: 'custom';
|
||||
type: PopoverItemType.Html;
|
||||
|
||||
/**
|
||||
* Custom html content to be displayed in the popover
|
||||
|
@ -32,7 +45,7 @@ interface PopoverItemDefaultBaseParams {
|
|||
/**
|
||||
* Item type
|
||||
*/
|
||||
type?: 'default';
|
||||
type?: PopoverItemType.Default;
|
||||
|
||||
/**
|
||||
* Displayed text
|
||||
|
@ -137,5 +150,5 @@ export type PopoverItemDefaultParams =
|
|||
export type PopoverItemParams =
|
||||
PopoverItemDefaultParams |
|
||||
PopoverItemSeparatorParams |
|
||||
PopoverItemCustomParams;
|
||||
PopoverItemHtmlParams;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { PopoverItem, PopoverItemDefault, PopoverItemSeparator } from './components/popover-item';
|
||||
import { PopoverItem, PopoverItemDefault, PopoverItemSeparator, PopoverItemType } from './components/popover-item';
|
||||
import Dom from '../../dom';
|
||||
import { SearchInput, SearchInputEvent, SearchableItem } from './components/search-input';
|
||||
import EventsDispatcher from '../events';
|
||||
|
@ -6,7 +6,7 @@ import Listeners from '../listeners';
|
|||
import { PopoverEventMap, PopoverMessages, PopoverParams, PopoverEvent, PopoverNodes } from './popover.types';
|
||||
import { css } from './popover.const';
|
||||
import { PopoverItemParams } from './components/popover-item';
|
||||
import { PopoverItemCustom } from './components/popover-item/popover-item-custom/popover-item-custom';
|
||||
import { PopoverItemHtml } from './components/popover-item/popover-item-html/popover-item-html';
|
||||
|
||||
/**
|
||||
* Class responsible for rendering popover and handling its behaviour
|
||||
|
@ -151,10 +151,10 @@ export abstract class PopoverAbstract<Nodes extends PopoverNodes = PopoverNodes>
|
|||
protected buildItems(items: PopoverItemParams[]): Array<PopoverItem> {
|
||||
return items.map(item => {
|
||||
switch (item.type) {
|
||||
case 'separator':
|
||||
case PopoverItemType.Separator:
|
||||
return new PopoverItemSeparator();
|
||||
case 'custom':
|
||||
return new PopoverItemCustom(item);
|
||||
case PopoverItemType.Html:
|
||||
return new PopoverItemHtml(item);
|
||||
default:
|
||||
return new PopoverItemDefault(item);
|
||||
}
|
||||
|
@ -195,7 +195,7 @@ export abstract class PopoverAbstract<Nodes extends PopoverNodes = PopoverNodes>
|
|||
|
||||
if (item instanceof PopoverItemDefault) {
|
||||
isHidden = !data.items.includes(item);
|
||||
} else if (item instanceof PopoverItemSeparator || item instanceof PopoverItemCustom) {
|
||||
} else if (item instanceof PopoverItemSeparator || item instanceof PopoverItemHtml) {
|
||||
/** Should hide separators if nothing found message displayed or if there is some search query applied */
|
||||
isHidden = isNothingFound || !isEmptyQuery;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import { css } from './popover.const';
|
|||
import { SearchInputEvent, SearchableItem } from './components/search-input';
|
||||
import { cacheable } from '../../utils';
|
||||
import { PopoverItemDefault } from './components/popover-item';
|
||||
import { PopoverItemCustom } from './components/popover-item/popover-item-custom/popover-item-custom';
|
||||
import { PopoverItemHtml } from './components/popover-item/popover-item-html/popover-item-html';
|
||||
|
||||
/**
|
||||
* Desktop popover.
|
||||
|
@ -282,7 +282,7 @@ export class PopoverDesktop extends PopoverAbstract {
|
|||
if (item instanceof PopoverItemDefault) {
|
||||
return item.getElement();
|
||||
}
|
||||
if (item instanceof PopoverItemCustom) {
|
||||
if (item instanceof PopoverItemHtml) {
|
||||
return item.getControls();
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { PopoverDesktop as Popover } from '../../../../src/components/utils/popover';
|
||||
import { PopoverDesktop as Popover, PopoverItemType } from '../../../../src/components/utils/popover';
|
||||
import { PopoverItemParams } from '../../../../types';
|
||||
import { TunesMenuConfig } from '../../../../types/tools';
|
||||
|
||||
|
@ -115,7 +115,7 @@ describe('Popover', () => {
|
|||
.should('have.class', 'ce-popover-item--disabled')
|
||||
.click()
|
||||
.then(() => {
|
||||
if (items[0].type !== 'default') {
|
||||
if (items[0].type !== PopoverItemType.Default) {
|
||||
return;
|
||||
}
|
||||
// Check onActivate callback has never been called
|
||||
|
@ -642,7 +642,7 @@ describe('Popover', () => {
|
|||
name: 'test-item',
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
type: PopoverItemType.Separator,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
@ -704,7 +704,7 @@ describe('Popover', () => {
|
|||
name: 'test-item-1',
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
type: PopoverItemType.Separator,
|
||||
},
|
||||
{
|
||||
onActivate: (): void => {},
|
||||
|
@ -791,7 +791,7 @@ describe('Popover', () => {
|
|||
name: 'test-item-1',
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
type: PopoverItemType.Separator,
|
||||
},
|
||||
{
|
||||
onActivate: (): void => {},
|
||||
|
|
6
types/tools/tool-settings.d.ts
vendored
6
types/tools/tool-settings.d.ts
vendored
|
@ -1,6 +1,6 @@
|
|||
import { ToolConfig } from './tool-config';
|
||||
import { ToolConstructable, BlockToolData } from './index';
|
||||
import { PopoverItemDefaultParams, PopoverItemSeparatorParams, PopoverItemParams, PopoverItemCustomParams } from '../configs';
|
||||
import { PopoverItemDefaultParams, PopoverItemSeparatorParams, PopoverItemHtmlParams } from '../configs';
|
||||
|
||||
/**
|
||||
* Tool may specify its toolbox configuration
|
||||
|
@ -60,12 +60,12 @@ export type TunesMenuConfigSeparatorItem = PopoverItemSeparatorParams;
|
|||
/**
|
||||
* Represents single Tunes Menu item with custom HTML contect
|
||||
*/
|
||||
export type TunesMenuConfigCustomItem = PopoverItemCustomParams;
|
||||
export type TunesMenuConfigHtmlItem = PopoverItemHtmlParams;
|
||||
|
||||
/**
|
||||
* Union of all Tunes Menu item types
|
||||
*/
|
||||
export type TunesMenuConfigItem = TunesMenuConfigDefaultItem | TunesMenuConfigSeparatorItem | TunesMenuConfigCustomItem;
|
||||
export type TunesMenuConfigItem = TunesMenuConfigDefaultItem | TunesMenuConfigSeparatorItem | TunesMenuConfigHtmlItem;
|
||||
|
||||
/**
|
||||
* Tool may specify its tunes configuration
|
||||
|
|
Loading…
Reference in a new issue