@flogeez/angular-tiptap-editor 0.6.0 → 2.0.1

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/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: SupportedLocale, translations: Partial<TiptapTranslations>): void;
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,11 +861,13 @@ 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>;
859
868
  fillContainer: _angular_core.InputSignal<boolean>;
860
869
  showToolbar: _angular_core.InputSignal<boolean>;
870
+ showFooter: _angular_core.InputSignal<boolean>;
861
871
  showCharacterCount: _angular_core.InputSignal<boolean>;
862
872
  showWordCount: _angular_core.InputSignal<boolean>;
863
873
  maxCharacters: _angular_core.InputSignal<number | undefined>;
@@ -867,6 +877,8 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
867
877
  customSlashCommands: _angular_core.InputSignal<CustomSlashCommands | undefined>;
868
878
  locale: _angular_core.InputSignal<SupportedLocale | undefined>;
869
879
  autofocus: _angular_core.InputSignal<number | boolean | "start" | "end" | "all">;
880
+ seamless: _angular_core.InputSignal<boolean>;
881
+ floatingToolbar: _angular_core.InputSignal<boolean>;
870
882
  tiptapExtensions: _angular_core.InputSignal<(Node<any, any> | Mark<any, any> | Extension<any, any>)[]>;
871
883
  tiptapOptions: _angular_core.InputSignal<Partial<EditorOptions>>;
872
884
  showBubbleMenu: _angular_core.InputSignal<boolean>;
@@ -874,6 +886,10 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
874
886
  showImageBubbleMenu: _angular_core.InputSignal<boolean>;
875
887
  imageBubbleMenu: _angular_core.InputSignal<Partial<ImageBubbleMenuConfig>>;
876
888
  toolbar: _angular_core.InputSignal<Partial<ToolbarConfig>>;
889
+ showTableBubbleMenu: _angular_core.InputSignal<boolean>;
890
+ tableBubbleMenu: _angular_core.InputSignal<Partial<TableBubbleMenuConfig>>;
891
+ showCellBubbleMenu: _angular_core.InputSignal<boolean>;
892
+ cellBubbleMenu: _angular_core.InputSignal<Partial<CellBubbleMenuConfig>>;
877
893
  /**
878
894
  * Additionnal state calculators to extend the reactive editor state.
879
895
  */
@@ -927,25 +943,15 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
927
943
  readonly wordCount: _angular_core.Signal<number>;
928
944
  readonly isDragOver: _angular_core.Signal<boolean>;
929
945
  readonly editorFullyInitialized: _angular_core.Signal<boolean>;
946
+ private _isFormControlDisabled;
947
+ readonly isFormControlDisabled: _angular_core.Signal<boolean>;
948
+ readonly mergedDisabled: _angular_core.Signal<boolean>;
930
949
  isEditorReady: _angular_core.Signal<boolean>;
931
950
  toolbarConfig: _angular_core.Signal<ToolbarConfig>;
932
951
  bubbleMenuConfig: _angular_core.Signal<BubbleMenuConfig>;
933
952
  imageBubbleMenuConfig: _angular_core.Signal<ImageBubbleMenuConfig>;
934
- tableBubbleMenuConfig: _angular_core.Signal<{
935
- addRowBefore: boolean;
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
- }>;
953
+ tableBubbleMenuConfig: _angular_core.Signal<TableBubbleMenuConfig>;
954
+ cellBubbleMenuConfig: _angular_core.Signal<CellBubbleMenuConfig>;
949
955
  imageUploadConfig: _angular_core.Signal<{
950
956
  maxSize: number;
951
957
  maxWidth: number;
@@ -958,6 +964,7 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
958
964
  quality: number;
959
965
  }>;
960
966
  slashCommandsConfigComputed: _angular_core.Signal<CustomSlashCommands>;
967
+ readonly currentTranslations: _angular_core.Signal<_flogeez_angular_tiptap_editor.TiptapTranslations>;
961
968
  private _destroyRef;
962
969
  private ngControl;
963
970
  readonly i18nService: TiptapI18nService;
@@ -980,10 +987,9 @@ declare class AngularTiptapEditorComponent implements AfterViewInit, OnDestroy {
980
987
  clearContent(): void;
981
988
  getEditor(): Editor | null;
982
989
  private setupFormControlSubscription;
983
- setDisabledState(isDisabled: boolean): void;
984
990
  onEditorClick(event: MouseEvent): void;
985
991
  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: {}; }]>;
992
+ 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; }; "showFooter": { "alias": "showFooter"; "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
993
  }
988
994
 
989
995
  interface ColorPickerSelection {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flogeez/angular-tiptap-editor",
3
- "version": "0.6.0",
3
+ "version": "2.0.1",
4
4
  "description": "A modern, customizable rich-text editor for Angular (18+), built with Tiptap and featuring complete internationalization support",
5
5
  "keywords": [
6
6
  "angular",
@@ -15,11 +15,10 @@
15
15
  display: flex !important;
16
16
  align-items: center;
17
17
  gap: 6px;
18
- background: var(--ate-menu-bg, rgba(255, 255, 255, 0.95)) !important;
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: 8px 12px;
20
+ border-radius: var(--ate-menu-border-radius, 16px);
21
+ padding: var(--ate-menu-padding, 6px);
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);