@flogeez/angular-tiptap-editor 3.0.0 → 3.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/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ All notable changes to `@flogeez/angular-tiptap-editor` will be documented in th
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), with the exception that the major version is specifically aligned with the major version of [Tiptap](https://tiptap.dev).
7
7
 
8
+ ## [3.0.1] - 2026-02-06
9
+
10
+ ### Fixed
11
+
12
+ - **Link & Underline extensions**: Native `Link` and `Underline` extensions are now utilized directly from `StarterKit` instead of being loaded as separate extensions.
13
+
8
14
  ## [3.0.0] - 2026-02-05
9
15
 
10
16
  ### Changed
@@ -4,11 +4,9 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { Node as Node$1, nodeInputRule, mergeAttributes, Extension, getAttributes, Editor } from '@tiptap/core';
5
5
  import StarterKit from '@tiptap/starter-kit';
6
6
  import { Placeholder, CharacterCount } from '@tiptap/extensions';
7
- import { Underline } from '@tiptap/extension-underline';
8
7
  import { Superscript } from '@tiptap/extension-superscript';
9
8
  import { Subscript } from '@tiptap/extension-subscript';
10
9
  import { TextAlign } from '@tiptap/extension-text-align';
11
- import { Link } from '@tiptap/extension-link';
12
10
  import { Highlight } from '@tiptap/extension-highlight';
13
11
  import { TextStyle } from '@tiptap/extension-text-style';
14
12
  import { Color } from '@tiptap/extension-color';
@@ -6347,18 +6345,19 @@ class AngularTiptapEditorComponent {
6347
6345
  // Appearance & Fundamentals
6348
6346
  this.finalSeamless = computed(() => {
6349
6347
  const inputVal = this.seamless();
6350
- if (inputVal !== undefined)
6348
+ if (inputVal !== undefined) {
6351
6349
  return inputVal;
6350
+ }
6352
6351
  const fromConfig = this.effectiveConfig().mode;
6353
6352
  return fromConfig === "seamless";
6354
6353
  }, ...(ngDevMode ? [{ debugName: "finalSeamless" }] : []));
6355
- this.finalEditable = computed(() => this.editable() ?? this.effectiveConfig().editable, ...(ngDevMode ? [{ debugName: "finalEditable" }] : []));
6354
+ this.finalEditable = computed(() => this.editable() ?? this.effectiveConfig().editable ?? true, ...(ngDevMode ? [{ debugName: "finalEditable" }] : []));
6356
6355
  this.finalPlaceholder = computed(() => this.placeholder() ??
6357
6356
  this.effectiveConfig().placeholder ??
6358
6357
  this.currentTranslations().editor.placeholder, ...(ngDevMode ? [{ debugName: "finalPlaceholder" }] : []));
6359
6358
  this.finalFillContainer = computed(() => this.fillContainer() ?? this.effectiveConfig().fillContainer, ...(ngDevMode ? [{ debugName: "finalFillContainer" }] : []));
6360
- this.finalShowFooter = computed(() => this.showFooter() ?? this.effectiveConfig().showFooter, ...(ngDevMode ? [{ debugName: "finalShowFooter" }] : []));
6361
- this.finalShowEditToggle = computed(() => this.showEditToggle() ?? this.effectiveConfig().showEditToggle, ...(ngDevMode ? [{ debugName: "finalShowEditToggle" }] : []));
6359
+ this.finalShowFooter = computed(() => this.showFooter() ?? this.effectiveConfig().showFooter ?? true, ...(ngDevMode ? [{ debugName: "finalShowFooter" }] : []));
6360
+ this.finalShowEditToggle = computed(() => this.showEditToggle() ?? this.effectiveConfig().showEditToggle ?? false, ...(ngDevMode ? [{ debugName: "finalShowEditToggle" }] : []));
6362
6361
  this.finalHeight = computed(() => {
6363
6362
  const h = this.height() ?? this.effectiveConfig().height;
6364
6363
  return typeof h === "number" ? `${h}px` : h;
@@ -6371,10 +6370,10 @@ class AngularTiptapEditorComponent {
6371
6370
  const mh = this.maxHeight() ?? this.effectiveConfig().maxHeight;
6372
6371
  return typeof mh === "number" ? `${mh}px` : mh;
6373
6372
  }, ...(ngDevMode ? [{ debugName: "finalMaxHeight" }] : []));
6374
- this.finalSpellcheck = computed(() => this.spellcheck() ?? this.effectiveConfig().spellcheck, ...(ngDevMode ? [{ debugName: "finalSpellcheck" }] : []));
6375
- this.finalEnableOfficePaste = computed(() => this.enableOfficePaste() ?? this.effectiveConfig().enableOfficePaste, ...(ngDevMode ? [{ debugName: "finalEnableOfficePaste" }] : []));
6373
+ this.finalSpellcheck = computed(() => this.spellcheck() ?? this.effectiveConfig().spellcheck ?? true, ...(ngDevMode ? [{ debugName: "finalSpellcheck" }] : []));
6374
+ this.finalEnableOfficePaste = computed(() => this.enableOfficePaste() ?? this.effectiveConfig().enableOfficePaste ?? true, ...(ngDevMode ? [{ debugName: "finalEnableOfficePaste" }] : []));
6376
6375
  // Features
6377
- this.finalShowToolbar = computed(() => this.showToolbar() ?? this.effectiveConfig().showToolbar, ...(ngDevMode ? [{ debugName: "finalShowToolbar" }] : []));
6376
+ this.finalShowToolbar = computed(() => this.showToolbar() ?? this.effectiveConfig().showToolbar ?? true, ...(ngDevMode ? [{ debugName: "finalShowToolbar" }] : []));
6378
6377
  this.finalToolbarConfig = computed(() => {
6379
6378
  const fromInput = this.toolbar();
6380
6379
  const fromConfig = this.effectiveConfig().toolbar;
@@ -6387,8 +6386,8 @@ class AngularTiptapEditorComponent {
6387
6386
  }
6388
6387
  return base;
6389
6388
  }, ...(ngDevMode ? [{ debugName: "finalToolbarConfig" }] : []));
6390
- this.finalFloatingToolbar = computed(() => this.floatingToolbar() ?? this.effectiveConfig().floatingToolbar, ...(ngDevMode ? [{ debugName: "finalFloatingToolbar" }] : []));
6391
- this.finalShowBubbleMenu = computed(() => this.showBubbleMenu() ?? this.effectiveConfig().showBubbleMenu, ...(ngDevMode ? [{ debugName: "finalShowBubbleMenu" }] : []));
6389
+ this.finalFloatingToolbar = computed(() => this.floatingToolbar() ?? this.effectiveConfig().floatingToolbar ?? false, ...(ngDevMode ? [{ debugName: "finalFloatingToolbar" }] : []));
6390
+ this.finalShowBubbleMenu = computed(() => this.showBubbleMenu() ?? this.effectiveConfig().showBubbleMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowBubbleMenu" }] : []));
6392
6391
  this.finalBubbleMenuConfig = computed(() => {
6393
6392
  const fromInput = this.bubbleMenu();
6394
6393
  const fromConfig = this.effectiveConfig().bubbleMenu;
@@ -6401,7 +6400,7 @@ class AngularTiptapEditorComponent {
6401
6400
  }
6402
6401
  return base;
6403
6402
  }, ...(ngDevMode ? [{ debugName: "finalBubbleMenuConfig" }] : []));
6404
- this.finalShowImageBubbleMenu = computed(() => this.showImageBubbleMenu() ?? this.effectiveConfig().showImageBubbleMenu, ...(ngDevMode ? [{ debugName: "finalShowImageBubbleMenu" }] : []));
6403
+ this.finalShowImageBubbleMenu = computed(() => this.showImageBubbleMenu() ?? this.effectiveConfig().showImageBubbleMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowImageBubbleMenu" }] : []));
6405
6404
  this.finalImageBubbleMenuConfig = computed(() => {
6406
6405
  const fromInput = this.imageBubbleMenu();
6407
6406
  const fromConfig = this.effectiveConfig().imageBubbleMenu;
@@ -6414,7 +6413,7 @@ class AngularTiptapEditorComponent {
6414
6413
  }
6415
6414
  return base;
6416
6415
  }, ...(ngDevMode ? [{ debugName: "finalImageBubbleMenuConfig" }] : []));
6417
- this.finalShowTableBubbleMenu = computed(() => this.showTableBubbleMenu() ?? this.effectiveConfig().showTableMenu, ...(ngDevMode ? [{ debugName: "finalShowTableBubbleMenu" }] : []));
6416
+ this.finalShowTableBubbleMenu = computed(() => this.showTableBubbleMenu() ?? this.effectiveConfig().showTableMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowTableBubbleMenu" }] : []));
6418
6417
  this.finalTableBubbleMenuConfig = computed(() => {
6419
6418
  const fromInput = this.tableBubbleMenu();
6420
6419
  const fromConfig = this.effectiveConfig().tableBubbleMenu;
@@ -6427,7 +6426,7 @@ class AngularTiptapEditorComponent {
6427
6426
  }
6428
6427
  return base;
6429
6428
  }, ...(ngDevMode ? [{ debugName: "finalTableBubbleMenuConfig" }] : []));
6430
- this.finalShowCellBubbleMenu = computed(() => this.showCellBubbleMenu() ?? this.effectiveConfig().showCellMenu, ...(ngDevMode ? [{ debugName: "finalShowCellBubbleMenu" }] : []));
6429
+ this.finalShowCellBubbleMenu = computed(() => this.showCellBubbleMenu() ?? this.effectiveConfig().showCellMenu ?? true, ...(ngDevMode ? [{ debugName: "finalShowCellBubbleMenu" }] : []));
6431
6430
  this.finalCellBubbleMenuConfig = computed(() => {
6432
6431
  const fromInput = this.cellBubbleMenu();
6433
6432
  const fromConfig = this.effectiveConfig().cellBubbleMenu;
@@ -6440,7 +6439,7 @@ class AngularTiptapEditorComponent {
6440
6439
  }
6441
6440
  return base;
6442
6441
  }, ...(ngDevMode ? [{ debugName: "finalCellBubbleMenuConfig" }] : []));
6443
- this.finalEnableSlashCommands = computed(() => this.enableSlashCommands() ?? this.effectiveConfig().enableSlashCommands, ...(ngDevMode ? [{ debugName: "finalEnableSlashCommands" }] : []));
6442
+ this.finalEnableSlashCommands = computed(() => this.enableSlashCommands() ?? this.effectiveConfig().enableSlashCommands ?? true, ...(ngDevMode ? [{ debugName: "finalEnableSlashCommands" }] : []));
6444
6443
  this.finalSlashCommandsConfig = computed(() => {
6445
6444
  const fromInputComponent = this.customSlashCommands();
6446
6445
  const fromConfigComponent = this.effectiveConfig().customSlashCommands;
@@ -6460,8 +6459,8 @@ class AngularTiptapEditorComponent {
6460
6459
  // Behavior
6461
6460
  this.finalAutofocus = computed(() => this.autofocus() ?? this.effectiveConfig().autofocus, ...(ngDevMode ? [{ debugName: "finalAutofocus" }] : []));
6462
6461
  this.finalMaxCharacters = computed(() => this.maxCharacters() ?? this.effectiveConfig().maxCharacters, ...(ngDevMode ? [{ debugName: "finalMaxCharacters" }] : []));
6463
- this.finalShowCharacterCount = computed(() => this.showCharacterCount() ?? this.effectiveConfig().showCharacterCount, ...(ngDevMode ? [{ debugName: "finalShowCharacterCount" }] : []));
6464
- this.finalShowWordCount = computed(() => this.showWordCount() ?? this.effectiveConfig().showWordCount, ...(ngDevMode ? [{ debugName: "finalShowWordCount" }] : []));
6462
+ this.finalShowCharacterCount = computed(() => this.showCharacterCount() ?? this.effectiveConfig().showCharacterCount ?? true, ...(ngDevMode ? [{ debugName: "finalShowCharacterCount" }] : []));
6463
+ this.finalShowWordCount = computed(() => this.showWordCount() ?? this.effectiveConfig().showWordCount ?? true, ...(ngDevMode ? [{ debugName: "finalShowWordCount" }] : []));
6465
6464
  this.finalLocale = computed(() => this.locale() ?? this.effectiveConfig().locale, ...(ngDevMode ? [{ debugName: "finalLocale" }] : []));
6466
6465
  // Extensions & Options
6467
6466
  this.finalTiptapExtensions = computed(() => this.tiptapExtensions() ?? this.effectiveConfig().tiptapExtensions ?? [], ...(ngDevMode ? [{ debugName: "finalTiptapExtensions" }] : []));
@@ -6619,7 +6618,14 @@ class AngularTiptapEditorComponent {
6619
6618
  }
6620
6619
  initEditor() {
6621
6620
  const extensions = [
6622
- StarterKit,
6621
+ StarterKit.configure({
6622
+ link: {
6623
+ openOnClick: false,
6624
+ HTMLAttributes: {
6625
+ class: "ate-link",
6626
+ },
6627
+ },
6628
+ }),
6623
6629
  TextStyle,
6624
6630
  Color.configure({
6625
6631
  types: ["textStyle"],
@@ -6627,18 +6633,11 @@ class AngularTiptapEditorComponent {
6627
6633
  Placeholder.configure({
6628
6634
  placeholder: this.finalPlaceholder(),
6629
6635
  }),
6630
- Underline,
6631
6636
  Superscript,
6632
6637
  Subscript,
6633
6638
  TextAlign.configure({
6634
6639
  types: ["heading", "paragraph"],
6635
6640
  }),
6636
- Link.configure({
6637
- openOnClick: false,
6638
- HTMLAttributes: {
6639
- class: "ate-link",
6640
- },
6641
- }),
6642
6641
  AteLinkClickBehavior,
6643
6642
  Highlight.configure({
6644
6643
  multicolor: true,