@dynamicforms/vuetify-inputs 0.9.1 → 0.10.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/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import { Action as Action_2 } from '@dynamicforms/vue-forms';
2
2
  import { ActionValue } from '@dynamicforms/vue-forms';
3
+ import { AllowedComponentProps } from 'vue';
3
4
  import { App } from 'vue';
4
5
  import { ClassTypes } from '@dynamicforms/vue-forms';
5
6
  import { ClassValue } from '../../node_modules/vuetify/lib/composables/component';
7
+ import { ComponentCustomProps } from 'vue';
8
+ import { ComponentOptionsBase } from 'vue';
6
9
  import { ComponentOptionsMixin } from 'vue';
7
10
  import { ComponentProvideOptions } from 'vue';
8
11
  import { ComputedRef } from 'vue';
@@ -11,7 +14,6 @@ import { Day } from 'date-fns';
11
14
  import { default as default_2 } from '@dynamicforms/vue-forms';
12
15
  import { DefaultInputSlot } from 'vuetify/lib/components/VField/VField';
13
16
  import { DefineComponent } from 'vue';
14
- import { Editor } from '@ckeditor/ckeditor5-core';
15
17
  import { Era } from 'date-fns';
16
18
  import { FirstWeekContainsDate } from 'date-fns';
17
19
  import { FormatDistanceFn } from 'date-fns';
@@ -50,6 +52,7 @@ import { VImg } from 'vuetify/components/VImg';
50
52
  import { VInput } from 'vuetify/components/VInput';
51
53
  import { VListItem } from 'vuetify/components/VList';
52
54
  import { VMenu } from 'vuetify/components/VMenu';
55
+ import { VNodeProps } from 'vue';
53
56
  import { VNumberInput } from 'vuetify/components/VNumberInput';
54
57
  import { VProgressLinear } from 'vuetify/components/VProgressLinear';
55
58
  import { VRow } from 'vuetify/components/VGrid';
@@ -80,25 +83,17 @@ fetchChoices: SelectFetchChoices;
80
83
  dfSelectRef: unknown;
81
84
  }, any>;
82
85
 
83
- declare const __VLS_component_2: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
86
+ declare const __VLS_component_2: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
84
87
  blur: () => any;
85
88
  "update:modelValue": (value: any) => any;
86
89
  "click:clear": () => any;
87
- }, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{
90
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
88
91
  onBlur?: (() => any) | undefined;
89
92
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
90
93
  "onClick:clear"?: (() => any) | undefined;
91
94
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
92
95
 
93
- declare type __VLS_Props = {
94
- data?: DefaultInputSlot & {
95
- label?: string | MdString;
96
- };
97
- label: Label;
98
- allowWrap?: boolean;
99
- };
100
-
101
- declare type __VLS_Props_2 = BaseProps & {
96
+ declare type __VLS_Props = BaseProps & {
102
97
  loading?: boolean;
103
98
  };
104
99
 
@@ -210,7 +205,14 @@ export declare class Action extends Action_2<ActionBreakpointOptions> {
210
205
  static noAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>): Action;
211
206
  }
212
207
 
213
- export declare type ActionBreakpointOptions = BreakpointsJSON<ActionRenderOptions>;
208
+ export declare type ActionBreakpointOptions = BreakpointsJSON<ActionRenderOptions, ActionBreakpointRenderOptions>;
209
+
210
+ /**
211
+ * What one breakpoint of an action's value may state: the members that describe how the action is drawn.
212
+ * `name`, `defaultConfirm` and `defaultReject` are not among them - which key a modal resolves with, and which
213
+ * key fires the action, are properties of the action itself and do not depend on the width of the screen.
214
+ */
215
+ export declare type ActionBreakpointRenderOptions = Omit<ActionRenderOptions, 'name' | 'defaultConfirm' | 'defaultReject'>;
214
216
 
215
217
  /**
216
218
  * DisplayMode enum provides an enumeration for supported ways of rendering a particular object in the DOM
@@ -290,12 +292,12 @@ export declare interface BaseProps<T = any> {
290
292
 
291
293
  export declare type BreakpointNames = (typeof responsiveBreakpoints)[number];
292
294
 
293
- export declare type BreakpointsJSON<T extends Record<string, any>> = T & Partial<Record<BreakpointNames, T>>;
294
-
295
- export declare const ckEditorLanguage: {
296
- language: string;
297
- translations: undefined;
298
- };
295
+ /**
296
+ * A set of options and the per-breakpoint sets that restate parts of it. `B` is what a breakpoint may state,
297
+ * and defaults to the whole of `T`; a subclass narrows it where a member belongs to the object as a whole rather
298
+ * than to one screen width.
299
+ */
300
+ export declare type BreakpointsJSON<T extends Record<string, any>, B extends Record<string, any> = T> = T & Partial<Record<BreakpointNames, B>>;
299
301
 
300
302
  export declare const DateTimeLocaleConfig: {
301
303
  dateTimeLocale: Ref<{
@@ -478,6 +480,8 @@ export declare namespace DfInputComponentProps {
478
480
  DfDateTimeProps,
479
481
  DfFileProps,
480
482
  DfInputProps,
483
+ DfInputHintProps,
484
+ DfLabelProps,
481
485
  DfRtfEditorProps,
482
486
  DfSelectProps,
483
487
  DfTextAreaProps
@@ -493,19 +497,239 @@ export declare namespace DfInputComponents {
493
497
  DfFile,
494
498
  DfInput,
495
499
  DfInputHint,
500
+ DfLabel,
496
501
  DfRtfEditor,
497
502
  DfSelect,
498
503
  DfTextArea
499
504
  }
500
505
  }
501
506
 
502
- export declare const DfInputHint: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<Props> & Readonly<{}>, {
507
+ /**
508
+ * Every component this library draws with, keyed by the tag a layout names it by.
509
+ *
510
+ * A rendering layer that resolves a component by name out of a map - `@dynamicforms/vuetify-modal-form-kit`'s
511
+ * `<component-render>` is one - is handed this instead of keeping a list of its own, which would have to be
512
+ * extended whenever this package gains a component and would silently render nothing until it was.
513
+ *
514
+ * The keys are the kebab-case of the export names, so a tag names the same component whether it is looked up
515
+ * here or left to Vue's own resolver after `DynamicFormsInputs` has registered the components globally.
516
+ */
517
+ export declare const dfInputComponentsByTag: {
518
+ readonly 'df-actions': DefineComponent<DfActionsProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<DfActionsProps> & Readonly<{}>, {
519
+ buttonSize: string | number;
520
+ showAsGroup: "no" | "grouped" | "grouped-no-borders";
521
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
522
+ readonly 'df-checkbox': DefineComponent<DfCheckboxProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
523
+ "update:modelValue": (value: any) => any;
524
+ "click:clear": () => any;
525
+ }, string, PublicProps, Readonly<DfCheckboxProps> & Readonly<{
526
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
527
+ "onClick:clear"?: (() => any) | undefined;
528
+ }>, {
529
+ enabled: boolean;
530
+ clearable: boolean;
531
+ allowNull: boolean;
532
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
533
+ readonly 'df-color': DefineComponent<DfColorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
534
+ "update:modelValue": (value: any) => any;
535
+ "click:clear": () => any;
536
+ }, string, PublicProps, Readonly<DfColorProps> & Readonly<{
537
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
538
+ "onClick:clear"?: (() => any) | undefined;
539
+ }>, {
540
+ enabled: boolean;
541
+ clearable: boolean;
542
+ allowNull: boolean;
543
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
544
+ readonly 'df-date-time': DefineComponent<DfDateTimeProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
545
+ "update:modelValue": (value: any) => any;
546
+ "click:clear": () => any;
547
+ }, string, PublicProps, Readonly<DfDateTimeProps> & Readonly<{
548
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
549
+ "onClick:clear"?: (() => any) | undefined;
550
+ }>, {
551
+ enabled: boolean;
552
+ clearable: boolean;
553
+ inputType: "datetime" | "date" | "time";
554
+ displayFormatDate: string;
555
+ displayFormatTime: string;
556
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
557
+ readonly 'df-file': DefineComponent<DfFileProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
558
+ "update:modelValue": (value: any) => any;
559
+ "click:clear": () => any;
560
+ }, string, PublicProps, Readonly<DfFileProps> & Readonly<{
561
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
562
+ "onClick:clear"?: (() => any) | undefined;
563
+ }>, {
564
+ enabled: boolean;
565
+ clearable: boolean;
566
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
567
+ readonly 'df-input': DefineComponent<DfInputProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
568
+ "update:modelValue": (value: any) => any;
569
+ "click:clear": () => any;
570
+ }, string, PublicProps, Readonly<DfInputProps> & Readonly<{
571
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
572
+ "onClick:clear"?: (() => any) | undefined;
573
+ }>, {
574
+ enabled: boolean;
575
+ clearable: boolean;
576
+ inputType: "text" | "password" | "email" | "url" | "number";
577
+ precision: number | null;
578
+ step: number;
579
+ min: number;
580
+ max: number;
581
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
582
+ readonly 'df-input-hint': DefineComponent<DfInputHintProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<DfInputHintProps> & Readonly<{}>, {
583
+ errors: string | ValidationError[];
584
+ message: string | ValidationError[];
585
+ errorClasses: ClassTypes;
586
+ messageClasses: ClassTypes;
587
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
588
+ readonly 'df-label': DefineComponent<DfLabelProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<DfLabelProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
589
+ readonly 'df-rtf-editor': DefineComponent<DfRtfEditorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
590
+ "update:modelValue": (value: any) => any;
591
+ "click:clear": () => any;
592
+ }, string, PublicProps, Readonly<DfRtfEditorProps> & Readonly<{
593
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
594
+ "onClick:clear"?: (() => any) | undefined;
595
+ }>, {
596
+ minHeight: string;
597
+ enabled: boolean;
598
+ clearable: boolean;
599
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {
600
+ $editor: CreateComponentPublicInstanceWithMixins<Readonly<{
601
+ modelValue?: string;
602
+ minHeight?: string;
603
+ disabled?: boolean;
604
+ }> & Readonly<{
605
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
606
+ }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
607
+ "update:modelValue": (value: string) => any;
608
+ }, PublicProps, {
609
+ minHeight: string;
610
+ modelValue: string;
611
+ disabled: boolean;
612
+ }, false, {}, {}, GlobalComponents, GlobalDirectives, string, {}, HTMLDivElement, ComponentProvideOptions, {
613
+ P: {};
614
+ B: {};
615
+ D: {};
616
+ C: {};
617
+ M: {};
618
+ Defaults: {};
619
+ }, Readonly<{
620
+ modelValue?: string;
621
+ minHeight?: string;
622
+ disabled?: boolean;
623
+ }> & Readonly<{
624
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
625
+ }>, {}, {}, {}, {}, {
626
+ minHeight: string;
627
+ modelValue: string;
628
+ disabled: boolean;
629
+ }> | null;
630
+ }, any>;
631
+ readonly 'df-select': {
632
+ new (...args: any[]): CreateComponentPublicInstanceWithMixins<Readonly<DfSelectProps> & Readonly<{
633
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
634
+ "onClick:clear"?: (() => any) | undefined;
635
+ "onUpdate:modelValueDisplay"?: ((value: SelectChoice[]) => any) | undefined;
636
+ }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
637
+ "update:modelValue": (value: any) => any;
638
+ "click:clear": () => any;
639
+ "update:modelValueDisplay": (value: SelectChoice[]) => any;
640
+ }, PublicProps, {
641
+ enabled: boolean;
642
+ clearable: boolean;
643
+ allowNull: boolean;
644
+ choices: SelectChoice[];
645
+ multiple: boolean;
646
+ allowTags: boolean;
647
+ fetchChoices: SelectFetchChoices;
648
+ }, false, {}, {}, GlobalComponents, GlobalDirectives, string, {
649
+ dfSelectRef: unknown;
650
+ }, any, ComponentProvideOptions, {
651
+ P: {};
652
+ B: {};
653
+ D: {};
654
+ C: {};
655
+ M: {};
656
+ Defaults: {};
657
+ }, Readonly<DfSelectProps> & Readonly<{
658
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
659
+ "onClick:clear"?: (() => any) | undefined;
660
+ "onUpdate:modelValueDisplay"?: ((value: SelectChoice[]) => any) | undefined;
661
+ }>, {}, {}, {}, {}, {
662
+ enabled: boolean;
663
+ clearable: boolean;
664
+ allowNull: boolean;
665
+ choices: SelectChoice[];
666
+ multiple: boolean;
667
+ allowTags: boolean;
668
+ fetchChoices: SelectFetchChoices;
669
+ }>;
670
+ __isFragment?: never;
671
+ __isTeleport?: never;
672
+ __isSuspense?: never;
673
+ } & ComponentOptionsBase<Readonly<DfSelectProps> & Readonly<{
674
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
675
+ "onClick:clear"?: (() => any) | undefined;
676
+ "onUpdate:modelValueDisplay"?: ((value: SelectChoice[]) => any) | undefined;
677
+ }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
678
+ "update:modelValue": (value: any) => any;
679
+ "click:clear": () => any;
680
+ "update:modelValueDisplay": (value: SelectChoice[]) => any;
681
+ }, string, {
682
+ enabled: boolean;
683
+ clearable: boolean;
684
+ allowNull: boolean;
685
+ choices: SelectChoice[];
686
+ multiple: boolean;
687
+ allowTags: boolean;
688
+ fetchChoices: SelectFetchChoices;
689
+ }, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & (new () => {
690
+ $slots: Readonly<{
691
+ 'append-inner'?: (props: any) => any;
692
+ 'prepend-inner'?: (props: any) => any;
693
+ }> & {
694
+ 'append-inner'?: (props: any) => any;
695
+ 'prepend-inner'?: (props: any) => any;
696
+ };
697
+ });
698
+ readonly 'df-text-area': DefineComponent<DfTextAreaProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
699
+ "update:modelValue": (value: any) => any;
700
+ "click:clear": () => any;
701
+ }, string, PublicProps, Readonly<DfTextAreaProps> & Readonly<{
702
+ "onUpdate:modelValue"?: ((value: any) => any) | undefined;
703
+ "onClick:clear"?: (() => any) | undefined;
704
+ }>, {
705
+ enabled: boolean;
706
+ clearable: boolean;
707
+ rows: number;
708
+ maxRows: number;
709
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
710
+ };
711
+
712
+ /** The tags {@link dfInputComponentsByTag} answers for. */
713
+ export declare type DfInputComponentTag = keyof typeof dfInputComponentsByTag;
714
+
715
+ export declare const DfInputHint: DefineComponent<DfInputHintProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<DfInputHintProps> & Readonly<{}>, {
503
716
  errors: string | ValidationError[];
504
717
  message: string | ValidationError[];
505
718
  errorClasses: ClassTypes;
506
719
  messageClasses: ClassTypes;
507
720
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
508
721
 
722
+ declare interface DfInputHintProps {
723
+ /** The errors to render. Rendered in place of {@link message} whenever there is one. */
724
+ errors?: string | ValidationError[];
725
+ /** The message to render, shown while there is no error. */
726
+ message?: string | ValidationError[];
727
+ /** Classes for the rendered errors. Defaults to `text-error`. */
728
+ errorClasses?: ClassTypes;
729
+ /** Classes for the rendered message. Defaults to no class. */
730
+ messageClasses?: ClassTypes;
731
+ }
732
+
509
733
  declare interface DfInputProps extends BaseProps {
510
734
  inputType?: 'text' | 'password' | 'email' | 'url' | 'number';
511
735
  precision?: number | null;
@@ -514,7 +738,18 @@ declare interface DfInputProps extends BaseProps {
514
738
  max?: number;
515
739
  }
516
740
 
517
- export declare const DfLabel: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
741
+ export declare const DfLabel: DefineComponent<DfLabelProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<DfLabelProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
742
+
743
+ declare interface DfLabelProps {
744
+ /** The slot data Vuetify hands a `#label` slot. Where it is given, its `label` is what is rendered. */
745
+ data?: DefaultInputSlot & {
746
+ label?: string | MdString;
747
+ };
748
+ /** The label to render where no {@link data} is given: its text, and the icon it carries. */
749
+ label: Label;
750
+ /** Whether the label wraps over several lines. It is rendered on one line by default. */
751
+ allowWrap?: boolean;
752
+ }
518
753
 
519
754
  export declare const DfRtfEditor: DefineComponent<DfRtfEditorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
520
755
  "update:modelValue": (value: any) => any;
@@ -533,17 +768,13 @@ minHeight?: string;
533
768
  disabled?: boolean;
534
769
  }> & Readonly<{
535
770
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
536
- }>, {
537
- onEditorReady: (editorReady: Editor) => void;
538
- }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
771
+ }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
539
772
  "update:modelValue": (value: string) => any;
540
773
  }, PublicProps, {
541
774
  minHeight: string;
542
775
  modelValue: string;
543
776
  disabled: boolean;
544
- }, false, {}, {}, GlobalComponents, GlobalDirectives, string, {
545
- editorElement: HTMLDivElement;
546
- }, HTMLDivElement, ComponentProvideOptions, {
777
+ }, false, {}, {}, GlobalComponents, GlobalDirectives, string, {}, HTMLDivElement, ComponentProvideOptions, {
547
778
  P: {};
548
779
  B: {};
549
780
  D: {};
@@ -556,9 +787,7 @@ minHeight?: string;
556
787
  disabled?: boolean;
557
788
  }> & Readonly<{
558
789
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
559
- }>, {
560
- onEditorReady: (editorReady: Editor) => void;
561
- }, {}, {}, {}, {
790
+ }>, {}, {}, {}, {}, {
562
791
  minHeight: string;
563
792
  modelValue: string;
564
793
  disabled: boolean;
@@ -660,13 +889,6 @@ export declare class Label {
660
889
  constructor(text: string, icon?: string | undefined, iconComponent?: string);
661
890
  }
662
891
 
663
- declare interface Props {
664
- errors?: string | ValidationError[];
665
- message?: string | ValidationError[];
666
- errorClasses?: ClassTypes;
667
- messageClasses?: ClassTypes;
668
- }
669
-
670
892
  export declare class ResponsiveActionRenderOptions extends ResponsiveRenderOptions<ActionRenderOptions> {
671
893
  protected cleanBreakpoint(bp?: ActionRenderOptions, defaultIfEmpty?: boolean): ActionRenderOptions | null;
672
894
  }
@@ -681,8 +903,7 @@ export declare abstract class ResponsiveRenderOptions<T extends Record<string, a
681
903
  * Normalizes one breakpoint's options. The merge reads `null` and `undefined` as "this breakpoint says
682
904
  * nothing about that field", so a field the breakpoint does not state has to come back as `undefined` rather
683
905
  * than as an empty value - an empty array or string returned here reads as a breakpoint deliberately emptying
684
- * what it inherited. The value returned for `defaultIfEmpty` carries every field the class merges, since the
685
- * field set is taken from it.
906
+ * what it inherited.
686
907
  */
687
908
  protected abstract cleanBreakpoint(bp?: T, defaultIfEmpty?: boolean): T | null;
688
909
  }
@@ -695,8 +916,6 @@ export declare interface SelectChoice {
695
916
 
696
917
  export declare type SelectFetchChoices<T1 = any, T2 = any> = (queryValue?: T1, idValue?: T2) => Promise<SelectChoice[]>;
697
918
 
698
- export declare function setCkEditorLanguage(language: string, translations: any): void;
699
-
700
919
  declare type ShowAsGroup = 'no' | 'grouped' | 'grouped-no-borders';
701
920
 
702
921
  export declare const translatableStrings: {
@@ -720,6 +939,43 @@ export declare const translatableStrings: {
720
939
  Spoiler: string;
721
940
  CodeDark: string;
722
941
  CodeBright: string;
942
+ Undo: string;
943
+ Redo: string;
944
+ SelectAll: string;
945
+ Bold: string;
946
+ Italic: string;
947
+ HorizontalLine: string;
948
+ Blockquote: string;
949
+ BulletedList: string;
950
+ NumberedList: string;
951
+ Outdent: string;
952
+ Indent: string;
953
+ AlignLeft: string;
954
+ AlignCenter: string;
955
+ AlignRight: string;
956
+ AlignJustify: string;
957
+ Link: string;
958
+ LinkUrl: string;
959
+ LinkApply: string;
960
+ LinkRemove: string;
961
+ Image: string;
962
+ ImageUrl: string;
963
+ ImageUpload: string;
964
+ ImageInsert: string;
965
+ Table: string;
966
+ TableInsert: string;
967
+ TableAddRowAbove: string;
968
+ TableAddRowBelow: string;
969
+ TableDeleteRow: string;
970
+ TableAddColumnBefore: string;
971
+ TableAddColumnAfter: string;
972
+ TableDeleteColumn: string;
973
+ TableToggleHeaderRow: string;
974
+ TableDeleteTable: string;
975
+ Style: string;
976
+ MediaEmbed: string;
977
+ MediaEmbedUrl: string;
978
+ MediaEmbedInsert: string;
723
979
  };
724
980
 
725
981
  export declare function translateStrings(translationCallback: (s: string) => string): void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dynamicforms/vuetify-inputs",
3
3
  "private": false,
4
- "version": "0.9.1",
4
+ "version": "0.10.0",
5
5
  "type": "module",
6
6
  "description": "Vuetify input components with guaranteed visual consistency across all form fields — unified density/variant system, globally configurable, with inline mode for table cells. Built for @dynamicforms/vue-forms.",
7
7
  "author": "Jure Erznožnik",
@@ -24,6 +24,7 @@
24
24
  "scripts": {
25
25
  "build": "vite build",
26
26
  "test": "vitest run --coverage",
27
+ "test:e2e": "playwright test",
27
28
  "lint": "eslint src --fix && vue-tsc --noEmit",
28
29
  "lint:ci": "eslint src && vue-tsc --noEmit",
29
30
  "docs:dev": "npm run docs:dev -w docs",
@@ -55,10 +56,20 @@
55
56
  "url": "https://github.com/dynamicforms/vuetify-inputs/issues"
56
57
  },
57
58
  "peerDependencies": {
58
- "@ckeditor/ckeditor5-vue": "^7.0.0",
59
59
  "@dynamicforms/vue-forms": "^0.17.0",
60
60
  "@mdi/font": "^7.4.47",
61
- "ckeditor5": "^43.0.0",
61
+ "@tiptap/core": "^3.30.2",
62
+ "@tiptap/extension-image": "^3.30.2",
63
+ "@tiptap/extension-link": "^3.30.2",
64
+ "@tiptap/extension-placeholder": "^3.30.2",
65
+ "@tiptap/extension-table": "^3.30.2",
66
+ "@tiptap/extension-table-cell": "^3.30.2",
67
+ "@tiptap/extension-table-header": "^3.30.2",
68
+ "@tiptap/extension-table-row": "^3.30.2",
69
+ "@tiptap/extension-text-align": "^3.30.2",
70
+ "@tiptap/pm": "^3.30.2",
71
+ "@tiptap/starter-kit": "^3.30.2",
72
+ "@tiptap/vue-3": "^3.30.2",
62
73
  "date-fns": "^4.1.0",
63
74
  "lodash-es": "^4.17.12",
64
75
  "vitepress-plugin-crosslinks": "^1.0.0",
@@ -68,14 +79,15 @@
68
79
  "vuetify": "^3.9"
69
80
  },
70
81
  "devDependencies": {
82
+ "@playwright/test": "^1.62.1",
71
83
  "@types/lodash-es": "^4.17.12",
72
84
  "@types/markdown-it-attrs": "^4.1.3",
73
- "@types/node": "^24",
85
+ "@types/node": "^26",
74
86
  "@vitejs/plugin-vue": "^6",
75
87
  "@vitest/coverage-v8": "^3",
76
88
  "@vue/test-utils": "^2.2.4",
77
89
  "@vue/tsconfig": "^0.7.0",
78
- "eslint-config-velis": "^2.0.12",
90
+ "eslint-config-velis": "^3",
79
91
  "jsdom": "^26.0.0",
80
92
  "markdown-it-attrs": "^4.3.1",
81
93
  "rollup-plugin-visualizer": "^5.14.0",
@@ -85,5 +97,10 @@
85
97
  "vite-plugin-eslint": "^1.8.1",
86
98
  "vitest": "^3",
87
99
  "vue-tsc": "^2"
100
+ },
101
+ "allowScripts": {
102
+ "@parcel/watcher@2.6.0": true,
103
+ "esbuild@0.28.2": true,
104
+ "unrs-resolver@1.12.2": true
88
105
  }
89
106
  }
package/readme.md CHANGED
@@ -66,10 +66,9 @@ consistent appearance.
66
66
  - **Selection**: static choices or an async `fetchChoices`, single or multiple, chips with icons, free values with
67
67
  `allowTags`
68
68
  - **Uploads**: a `FileComms` object with upload progress, delete and a periodic touch
69
- - **Rich text**: a configured CKEditor 5 inside the same field frame as every other input
70
- - **Localisable**: `translateStrings()` replaces the library's own strings, `setCkEditorLanguage()` sets the RTF
71
- editor's interface language, and `DateTimeLocaleConfig` sets the date-fns locale dates are formatted and parsed
72
- with
69
+ - **Rich text**: TipTap with a Vuetify toolbar, inside the same field frame as every other input
70
+ - **Localisable**: `translateStrings()` replaces the library's own strings, including every RTF editor toolbar
71
+ label, and `DateTimeLocaleConfig` sets the date-fns locale dates are formatted and parsed with
73
72
  - **TypeScript**: every component's props are an exported interface, and the definitions ship with the build
74
73
 
75
74
  ## Installation