@flogeez/angular-tiptap-editor 0.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +93 -31
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +282 -207
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/index.d.ts +24 -19
- package/package.json +1 -1
- package/src/lib/styles/bubble-menu.global.css +3 -4
package/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Editor, Node, Mark, Extension, EditorOptions } from '@tiptap/core';
|
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
6
|
import { ControlValueAccessor } from '@angular/forms';
|
|
7
7
|
|
|
8
|
-
type SupportedLocale = "en" | "fr";
|
|
8
|
+
type SupportedLocale = "en" | "fr" | (string & {});
|
|
9
9
|
interface TiptapTranslations {
|
|
10
10
|
toolbar: {
|
|
11
11
|
bold: string;
|
|
@@ -13,6 +13,7 @@ interface TiptapTranslations {
|
|
|
13
13
|
underline: string;
|
|
14
14
|
strike: string;
|
|
15
15
|
code: string;
|
|
16
|
+
codeBlock: string;
|
|
16
17
|
superscript: string;
|
|
17
18
|
subscript: string;
|
|
18
19
|
highlight: string;
|
|
@@ -174,6 +175,8 @@ declare class TiptapI18nService {
|
|
|
174
175
|
private _currentLocale;
|
|
175
176
|
private _translations;
|
|
176
177
|
readonly currentLocale: _angular_core.Signal<SupportedLocale>;
|
|
178
|
+
/** All loaded translations (useful for dynamic key access) */
|
|
179
|
+
readonly allTranslations: _angular_core.Signal<Record<SupportedLocale, TiptapTranslations>>;
|
|
177
180
|
readonly translations: _angular_core.Signal<TiptapTranslations>;
|
|
178
181
|
readonly t: _angular_core.Signal<TiptapTranslations>;
|
|
179
182
|
readonly toolbar: _angular_core.Signal<{
|
|
@@ -182,6 +185,7 @@ declare class TiptapI18nService {
|
|
|
182
185
|
underline: string;
|
|
183
186
|
strike: string;
|
|
184
187
|
code: string;
|
|
188
|
+
codeBlock: string;
|
|
185
189
|
superscript: string;
|
|
186
190
|
subscript: string;
|
|
187
191
|
highlight: string;
|
|
@@ -342,7 +346,7 @@ declare class TiptapI18nService {
|
|
|
342
346
|
setLocale(locale: SupportedLocale): void;
|
|
343
347
|
autoDetectLocale(): void;
|
|
344
348
|
getSupportedLocales(): SupportedLocale[];
|
|
345
|
-
addTranslations(locale:
|
|
349
|
+
addTranslations(locale: string, translations: TiptapTranslations | Partial<TiptapTranslations>): void;
|
|
346
350
|
private detectBrowserLanguage;
|
|
347
351
|
getToolbarTitle(key: keyof TiptapTranslations["toolbar"]): string;
|
|
348
352
|
getBubbleMenuTitle(key: keyof TiptapTranslations["bubbleMenu"]): string;
|
|
@@ -581,6 +585,7 @@ interface EditorStateSnapshot {
|
|
|
581
585
|
computedColor: string | null;
|
|
582
586
|
background: string | null;
|
|
583
587
|
computedBackground: string | null;
|
|
588
|
+
linkOpenOnClick: boolean;
|
|
584
589
|
};
|
|
585
590
|
/** Capability states (canExecute) */
|
|
586
591
|
can: {
|
|
@@ -616,6 +621,7 @@ interface EditorStateSnapshot {
|
|
|
616
621
|
toggleBulletList: boolean;
|
|
617
622
|
toggleOrderedList: boolean;
|
|
618
623
|
toggleBlockquote: boolean;
|
|
624
|
+
toggleCodeBlock: boolean;
|
|
619
625
|
setTextAlignLeft: boolean;
|
|
620
626
|
setTextAlignCenter: boolean;
|
|
621
627
|
setTextAlignRight: boolean;
|
|
@@ -686,6 +692,7 @@ declare class EditorCommandsService {
|
|
|
686
692
|
toggleItalic(editor: Editor): void;
|
|
687
693
|
toggleStrike(editor: Editor): void;
|
|
688
694
|
toggleCode(editor: Editor): void;
|
|
695
|
+
toggleCodeBlock(editor: Editor): void;
|
|
689
696
|
toggleUnderline(editor: Editor): void;
|
|
690
697
|
toggleSuperscript(editor: Editor): void;
|
|
691
698
|
toggleSubscript(editor: Editor): void;
|
|
@@ -776,6 +783,7 @@ interface ToolbarConfig {
|
|
|
776
783
|
underline?: boolean;
|
|
777
784
|
strike?: boolean;
|
|
778
785
|
code?: boolean;
|
|
786
|
+
codeBlock?: boolean;
|
|
779
787
|
superscript?: boolean;
|
|
780
788
|
subscript?: boolean;
|
|
781
789
|
highlight?: boolean;
|
|
@@ -853,6 +861,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
853
861
|
content: _angular_core.InputSignal<string>;
|
|
854
862
|
placeholder: _angular_core.InputSignal<string>;
|
|
855
863
|
editable: _angular_core.InputSignal<boolean>;
|
|
864
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
856
865
|
minHeight: _angular_core.InputSignal<number>;
|
|
857
866
|
height: _angular_core.InputSignal<number | undefined>;
|
|
858
867
|
maxHeight: _angular_core.InputSignal<number | undefined>;
|
|
@@ -867,6 +876,8 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
867
876
|
customSlashCommands: _angular_core.InputSignal<CustomSlashCommands | undefined>;
|
|
868
877
|
locale: _angular_core.InputSignal<SupportedLocale | undefined>;
|
|
869
878
|
autofocus: _angular_core.InputSignal<number | boolean | "start" | "end" | "all">;
|
|
879
|
+
seamless: _angular_core.InputSignal<boolean>;
|
|
880
|
+
floatingToolbar: _angular_core.InputSignal<boolean>;
|
|
870
881
|
tiptapExtensions: _angular_core.InputSignal<(Node<any, any> | Mark<any, any> | Extension<any, any>)[]>;
|
|
871
882
|
tiptapOptions: _angular_core.InputSignal<Partial<EditorOptions>>;
|
|
872
883
|
showBubbleMenu: _angular_core.InputSignal<boolean>;
|
|
@@ -874,6 +885,10 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
874
885
|
showImageBubbleMenu: _angular_core.InputSignal<boolean>;
|
|
875
886
|
imageBubbleMenu: _angular_core.InputSignal<Partial<ImageBubbleMenuConfig>>;
|
|
876
887
|
toolbar: _angular_core.InputSignal<Partial<ToolbarConfig>>;
|
|
888
|
+
showTableBubbleMenu: _angular_core.InputSignal<boolean>;
|
|
889
|
+
tableBubbleMenu: _angular_core.InputSignal<Partial<TableBubbleMenuConfig>>;
|
|
890
|
+
showCellBubbleMenu: _angular_core.InputSignal<boolean>;
|
|
891
|
+
cellBubbleMenu: _angular_core.InputSignal<Partial<CellBubbleMenuConfig>>;
|
|
877
892
|
/**
|
|
878
893
|
* Additionnal state calculators to extend the reactive editor state.
|
|
879
894
|
*/
|
|
@@ -927,25 +942,15 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
927
942
|
readonly wordCount: _angular_core.Signal<number>;
|
|
928
943
|
readonly isDragOver: _angular_core.Signal<boolean>;
|
|
929
944
|
readonly editorFullyInitialized: _angular_core.Signal<boolean>;
|
|
945
|
+
private _isFormControlDisabled;
|
|
946
|
+
readonly isFormControlDisabled: _angular_core.Signal<boolean>;
|
|
947
|
+
readonly mergedDisabled: _angular_core.Signal<boolean>;
|
|
930
948
|
isEditorReady: _angular_core.Signal<boolean>;
|
|
931
949
|
toolbarConfig: _angular_core.Signal<ToolbarConfig>;
|
|
932
950
|
bubbleMenuConfig: _angular_core.Signal<BubbleMenuConfig>;
|
|
933
951
|
imageBubbleMenuConfig: _angular_core.Signal<ImageBubbleMenuConfig>;
|
|
934
|
-
tableBubbleMenuConfig: _angular_core.Signal<
|
|
935
|
-
|
|
936
|
-
addRowAfter: boolean;
|
|
937
|
-
deleteRow: boolean;
|
|
938
|
-
addColumnBefore: boolean;
|
|
939
|
-
addColumnAfter: boolean;
|
|
940
|
-
deleteColumn: boolean;
|
|
941
|
-
deleteTable: boolean;
|
|
942
|
-
toggleHeaderRow: boolean;
|
|
943
|
-
toggleHeaderColumn: boolean;
|
|
944
|
-
}>;
|
|
945
|
-
cellBubbleMenuConfig: _angular_core.Signal<{
|
|
946
|
-
mergeCells: boolean;
|
|
947
|
-
splitCell: boolean;
|
|
948
|
-
}>;
|
|
952
|
+
tableBubbleMenuConfig: _angular_core.Signal<TableBubbleMenuConfig>;
|
|
953
|
+
cellBubbleMenuConfig: _angular_core.Signal<CellBubbleMenuConfig>;
|
|
949
954
|
imageUploadConfig: _angular_core.Signal<{
|
|
950
955
|
maxSize: number;
|
|
951
956
|
maxWidth: number;
|
|
@@ -958,6 +963,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
958
963
|
quality: number;
|
|
959
964
|
}>;
|
|
960
965
|
slashCommandsConfigComputed: _angular_core.Signal<CustomSlashCommands>;
|
|
966
|
+
readonly currentTranslations: _angular_core.Signal<_flogeez_angular_tiptap_editor.TiptapTranslations>;
|
|
961
967
|
private _destroyRef;
|
|
962
968
|
private ngControl;
|
|
963
969
|
readonly i18nService: TiptapI18nService;
|
|
@@ -980,10 +986,9 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
|
|
|
980
986
|
clearContent(): void;
|
|
981
987
|
getEditor(): Editor | null;
|
|
982
988
|
private setupFormControlSubscription;
|
|
983
|
-
setDisabledState(isDisabled: boolean): void;
|
|
984
989
|
onEditorClick(event: MouseEvent): void;
|
|
985
990
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AngularTiptapEditorComponent, never>;
|
|
986
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AngularTiptapEditorComponent, "angular-tiptap-editor", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "fillContainer": { "alias": "fillContainer"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; "isSignal": true; }; "showWordCount": { "alias": "showWordCount"; "required": false; "isSignal": true; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; "isSignal": true; }; "enableOfficePaste": { "alias": "enableOfficePaste"; "required": false; "isSignal": true; }; "enableSlashCommands": { "alias": "enableSlashCommands"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "customSlashCommands": { "alias": "customSlashCommands"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "tiptapExtensions": { "alias": "tiptapExtensions"; "required": false; "isSignal": true; }; "tiptapOptions": { "alias": "tiptapOptions"; "required": false; "isSignal": true; }; "showBubbleMenu": { "alias": "showBubbleMenu"; "required": false; "isSignal": true; }; "bubbleMenu": { "alias": "bubbleMenu"; "required": false; "isSignal": true; }; "showImageBubbleMenu": { "alias": "showImageBubbleMenu"; "required": false; "isSignal": true; }; "imageBubbleMenu": { "alias": "imageBubbleMenu"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "stateCalculators": { "alias": "stateCalculators"; "required": false; "isSignal": true; }; "imageUpload": { "alias": "imageUpload"; "required": false; "isSignal": true; }; "imageUploadHandler": { "alias": "imageUploadHandler"; "required": false; "isSignal": true; }; }, { "contentChange": "contentChange"; "editorCreated": "editorCreated"; "editorUpdate": "editorUpdate"; "editorFocus": "editorFocus"; "editorBlur": "editorBlur"; }, never, never, true, [{ directive: typeof NoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
991
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AngularTiptapEditorComponent, "angular-tiptap-editor", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "fillContainer": { "alias": "fillContainer"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; "isSignal": true; }; "showWordCount": { "alias": "showWordCount"; "required": false; "isSignal": true; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; "isSignal": true; }; "enableOfficePaste": { "alias": "enableOfficePaste"; "required": false; "isSignal": true; }; "enableSlashCommands": { "alias": "enableSlashCommands"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "customSlashCommands": { "alias": "customSlashCommands"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "seamless": { "alias": "seamless"; "required": false; "isSignal": true; }; "floatingToolbar": { "alias": "floatingToolbar"; "required": false; "isSignal": true; }; "tiptapExtensions": { "alias": "tiptapExtensions"; "required": false; "isSignal": true; }; "tiptapOptions": { "alias": "tiptapOptions"; "required": false; "isSignal": true; }; "showBubbleMenu": { "alias": "showBubbleMenu"; "required": false; "isSignal": true; }; "bubbleMenu": { "alias": "bubbleMenu"; "required": false; "isSignal": true; }; "showImageBubbleMenu": { "alias": "showImageBubbleMenu"; "required": false; "isSignal": true; }; "imageBubbleMenu": { "alias": "imageBubbleMenu"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "showTableBubbleMenu": { "alias": "showTableBubbleMenu"; "required": false; "isSignal": true; }; "tableBubbleMenu": { "alias": "tableBubbleMenu"; "required": false; "isSignal": true; }; "showCellBubbleMenu": { "alias": "showCellBubbleMenu"; "required": false; "isSignal": true; }; "cellBubbleMenu": { "alias": "cellBubbleMenu"; "required": false; "isSignal": true; }; "stateCalculators": { "alias": "stateCalculators"; "required": false; "isSignal": true; }; "imageUpload": { "alias": "imageUpload"; "required": false; "isSignal": true; }; "imageUploadHandler": { "alias": "imageUploadHandler"; "required": false; "isSignal": true; }; }, { "contentChange": "contentChange"; "editorCreated": "editorCreated"; "editorUpdate": "editorUpdate"; "editorFocus": "editorFocus"; "editorBlur": "editorBlur"; }, never, never, true, [{ directive: typeof NoopValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
987
992
|
}
|
|
988
993
|
|
|
989
994
|
interface ColorPickerSelection {
|
package/package.json
CHANGED
|
@@ -15,11 +15,10 @@
|
|
|
15
15
|
display: flex !important;
|
|
16
16
|
align-items: center;
|
|
17
17
|
gap: 6px;
|
|
18
|
-
background: var(--ate-menu-bg,
|
|
19
|
-
backdrop-filter: blur(var(--ate-menu-blur, 12px));
|
|
18
|
+
background: var(--ate-menu-bg, rgb(255, 255, 255)) !important;
|
|
20
19
|
border: 1px solid var(--ate-menu-border, rgba(0, 0, 0, 0.1));
|
|
21
|
-
border-radius: var(--ate-border-radius, 16px);
|
|
22
|
-
padding:
|
|
20
|
+
border-radius: var(--ate-menu-border-radius, 16px);
|
|
21
|
+
padding: var(--ate-menu-padding, 6px 12px);
|
|
23
22
|
box-shadow: var(--ate-menu-shadow, 0 8px 32px rgba(0, 0, 0, 0.12));
|
|
24
23
|
z-index: 1000;
|
|
25
24
|
animation: slideUp 0.18s cubic-bezier(0, 0, 0.2, 1);
|