@wssto2/vue-core 0.4.14 → 0.4.16

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.
Files changed (98) hide show
  1. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-LlfIPWsJ.js → ActionRow.vue_vue_type_script_setup_true_lang-DOjn7fqy.js} +1 -1
  2. package/dist/{Activity-BdSvn0GP.js → Activity-CVO3sJwy.js} +6 -6
  3. package/dist/{Changes-BQO--N9F.js → Changes-Bzvl3cEx.js} +5 -5
  4. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DkpFEHUw.js → CollectionPage.vue_vue_type_script_setup_true_lang-CD5zZ29o.js} +2 -2
  5. package/dist/DateField.vue_vue_type_script_setup_true_lang-BufoFwVQ.js +278 -0
  6. package/dist/{DeadLetters-OmeiADEi.js → DeadLetters-DmwUtgf9.js} +4 -4
  7. package/dist/FormErrors.vue_vue_type_script_setup_true_lang-DWcVKZM3.js +285 -0
  8. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-DG2zdG_a.js → FormGroup.vue_vue_type_script_setup_true_lang-BokxZ7LU.js} +1 -1
  9. package/dist/{FormView.vue_vue_type_script_setup_true_lang-cr0xNDXP.js → FormView.vue_vue_type_script_setup_true_lang-Dz5TZt92.js} +2 -2
  10. package/dist/{General-CBwFLiKQ.js → General-CUEjJBD4.js} +10 -10
  11. package/dist/{NewRolePage-CblUW2gA.js → NewRolePage-Cyn-oV6r.js} +3 -3
  12. package/dist/NumberField.vue_vue_type_script_setup_true_lang-a8kN3A7k.js +150 -0
  13. package/dist/{ProfilePage-BOoDDbmB.js → ProfilePage-I74SQBFO.js} +41 -41
  14. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-BCE5yrwy.js → RoleEditor.vue_vue_type_script_setup_true_lang-Ce6wjptT.js} +44 -44
  15. package/dist/{RolePage-xDsFL_eC.js → RolePage-DWQP3qQl.js} +8 -8
  16. package/dist/{RolesPage-C39wsF6X.js → RolesPage-BeEsHIQ2.js} +5 -5
  17. package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BMBkEmxr.js +81 -0
  18. package/dist/SelectField.vue_vue_type_script_setup_true_lang-C1Flb1hA.js +465 -0
  19. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-D4k5QeWS.js → SessionList.vue_vue_type_script_setup_true_lang-DoUo68xE.js} +2 -2
  20. package/dist/{Sessions-m_i4aTfw.js → Sessions-D8IXcb5M.js} +4 -4
  21. package/dist/{SettingsPage-ktKvQQnE.js → SettingsPage-DRQP2nrH.js} +9 -9
  22. package/dist/{SignIn-CkoEixY4.js → SignIn-CAZkovhb.js} +6 -6
  23. package/dist/{SignInPage-DVcpFz3G.js → SignInPage-D-49oLY3.js} +3 -3
  24. package/dist/{SignIns-BnVAtncZ.js → SignIns-BtNfgMLc.js} +3 -3
  25. package/dist/SwitchField.vue_vue_type_script_setup_true_lang-0weBvsJf.js +87 -0
  26. package/dist/TextField.vue_vue_type_script_setup_true_lang-D3-R5XXG.js +292 -0
  27. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-4wC3c0BM.js +91 -0
  28. package/dist/TimeField.vue_vue_type_script_setup_true_lang-pAdLPYXA.js +187 -0
  29. package/dist/{UserRecord-Cg69_mbU.js → UserRecord-BSbNuRFi.js} +10 -10
  30. package/dist/{UsersList-BFmBDGs7.js → UsersList-DPHxcaDm.js} +8 -8
  31. package/dist/access/index.js +1 -1
  32. package/dist/app/application.d.ts +8 -2
  33. package/dist/app/index.js +93 -93
  34. package/dist/collection/index.js +1 -1
  35. package/dist/control-B_Nwtmag.js +334 -0
  36. package/dist/{describeError-CvGmajU0.js → describeError-B-NMa--w.js} +12 -7
  37. package/dist/fieldMessages-DV6sESpn.js +25 -0
  38. package/dist/form/CardSelectField.vue.d.ts +2 -2
  39. package/dist/form/ChoiceChips.vue.d.ts +2 -2
  40. package/dist/form/ComboField.vue.d.ts +2 -2
  41. package/dist/form/DateField.vue.d.ts +10 -2
  42. package/dist/form/DateTimeField.vue.d.ts +10 -2
  43. package/dist/form/Field.vue.d.ts +2 -1
  44. package/dist/form/FileField.vue.d.ts +10 -2
  45. package/dist/form/FormErrors.vue.d.ts +1 -1
  46. package/dist/form/FormRow.vue.d.ts +3 -0
  47. package/dist/form/I18nField.vue.d.ts +10 -2
  48. package/dist/form/MoneyField.vue.d.ts +10 -2
  49. package/dist/form/MonthYearField.vue.d.ts +10 -2
  50. package/dist/form/MultiSelectField.vue.d.ts +2 -2
  51. package/dist/form/NumberField.vue.d.ts +25 -2
  52. package/dist/form/PhotoField.vue.d.ts +10 -2
  53. package/dist/form/SegmentedField.vue.d.ts +2 -2
  54. package/dist/form/SelectField.vue.d.ts +7 -8
  55. package/dist/form/SwitchField.vue.d.ts +3 -2
  56. package/dist/form/TextField.vue.d.ts +10 -2
  57. package/dist/form/TextareaField.vue.d.ts +10 -2
  58. package/dist/form/TimeField.vue.d.ts +10 -2
  59. package/dist/form/field.d.ts +12 -0
  60. package/dist/form/index.d.ts +3 -1
  61. package/dist/form/index.js +1167 -956
  62. package/dist/form/useForm.d.ts +2 -2
  63. package/dist/form/useHiddenFieldErrors.d.ts +23 -0
  64. package/dist/form/useSaveChrome.d.ts +8 -3
  65. package/dist/i18n/describeError.d.ts +8 -0
  66. package/dist/i18n/index.d.ts +3 -2
  67. package/dist/i18n/index.js +32 -28
  68. package/dist/identity/fieldMessages.d.ts +1 -1
  69. package/dist/identity/index.js +1 -1
  70. package/dist/{index-RNF5-9uf.js → index-Bq96L43f.js} +15 -15
  71. package/dist/{index-B416VXmR.js → index-CWeNiBX6.js} +2 -2
  72. package/dist/{index-KcCoCfr-.js → index-yKIOaisE.js} +10 -10
  73. package/dist/index.d.ts +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/notifications/index.js +1 -1
  76. package/dist/phone/PhoneField.vue.d.ts +1 -0
  77. package/dist/phone/index.js +66 -65
  78. package/dist/resource/index.js +1 -1
  79. package/dist/{routeResource-BwEFXzIX.js → routeResource-DlTsGTg_.js} +1 -1
  80. package/dist/state/index.js +1 -1
  81. package/dist/{status-OZUHZpWl.js → status-DzmySsWw.js} +1 -1
  82. package/dist/{useCommand-BkONMn3X.js → useCommand-B-N6HJOz.js} +1 -1
  83. package/dist/{useLoad-DuEsLECT.js → useLoad-M7V-AVwR.js} +1 -1
  84. package/dist/{useResourceForm-D1hIpwW5.js → useResourceForm-CP2lCwmD.js} +1 -1
  85. package/dist/useSaveChrome-7huA3FzR.js +26 -0
  86. package/package.json +1 -1
  87. package/dist/DateField.vue_vue_type_script_setup_true_lang-GVasv8ao.js +0 -255
  88. package/dist/FormErrors.vue_vue_type_script_setup_true_lang-BQb7wLT0.js +0 -276
  89. package/dist/NumberField.vue_vue_type_script_setup_true_lang-C7N5nq0P.js +0 -113
  90. package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BMqWlpsL.js +0 -58
  91. package/dist/SelectField.vue_vue_type_script_setup_true_lang-BJoAkBo2.js +0 -437
  92. package/dist/SwitchField.vue_vue_type_script_setup_true_lang-CM8yp9JQ.js +0 -64
  93. package/dist/TextField.vue_vue_type_script_setup_true_lang-B9dwVASU.js +0 -269
  94. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CqAWfABZ.js +0 -68
  95. package/dist/TimeField.vue_vue_type_script_setup_true_lang-DWfAUlnz.js +0 -164
  96. package/dist/control-7EP4tjYy.js +0 -313
  97. package/dist/fieldMessages-D_dpSe19.js +0 -25
  98. package/dist/useSaveChrome-DuWm0Czf.js +0 -25
@@ -1,5 +1,5 @@
1
1
  import type { ControlWidth } from "../controls";
2
- import { type FieldProps } from "./field";
2
+ import { type FieldProps, type FieldSlots } from "./field";
3
3
  /**
4
4
  * An amount of money: a `NumberField` with two decimals and the currency after the number. The currency is
5
5
  * shown as given ("EUR", "€"); the amount is a plain number (what the payload carries is the feature's mapping).
@@ -12,10 +12,11 @@ type __VLS_Props = FieldProps & {
12
12
  negative?: boolean;
13
13
  width?: Exclude<ControlWidth, "content">;
14
14
  };
15
+ type __VLS_Slots = FieldSlots;
15
16
  type __VLS_PublicProps = __VLS_Props & {
16
17
  modelValue?: number | null;
17
18
  };
18
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
19
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {
19
20
  focus: () => void | undefined;
20
21
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
22
  "update:modelValue": (value: number | null) => any;
@@ -29,10 +30,17 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
29
30
  required: boolean;
30
31
  width: Exclude<ControlWidth, "content">;
31
32
  presentation: "control" | "value";
33
+ labelHidden: boolean;
32
34
  hint: string;
33
35
  editable: boolean;
34
36
  lockedReason: string;
35
37
  decimals: number;
36
38
  negative: boolean;
37
39
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
38
41
  export default _default;
42
+ type __VLS_WithSlots<T, S> = T & {
43
+ new (): {
44
+ $slots: S;
45
+ };
46
+ };
@@ -1,4 +1,4 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  /**
3
3
  * A month and a year shown as one date button, kept as two numbers (`month` 1 to 12, `year`), the way a record stores a
4
4
  * first registration. The button opens a popover with the year (arrows step it; clicking it opens a grid of twelve years,
@@ -12,11 +12,12 @@ type __VLS_Props = FieldProps & {
12
12
  minYear?: number;
13
13
  maxYear?: number;
14
14
  };
15
+ type __VLS_Slots = FieldSlots;
15
16
  type __VLS_PublicProps = __VLS_Props & {
16
17
  "month"?: number | null;
17
18
  "year"?: number | null;
18
19
  };
19
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
21
  "update:month": (value: number | null) => any;
21
22
  "update:year": (value: number | null) => any;
22
23
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
@@ -29,10 +30,17 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {},
29
30
  error: string;
30
31
  required: boolean;
31
32
  presentation: "control" | "value";
33
+ labelHidden: boolean;
32
34
  hint: string;
33
35
  editable: boolean;
34
36
  lockedReason: string;
35
37
  minYear: number;
36
38
  maxYear: number;
37
39
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
38
41
  export default _default;
42
+ type __VLS_WithSlots<T, S> = T & {
43
+ new (): {
44
+ $slots: S;
45
+ };
46
+ };
@@ -1,4 +1,4 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  import type { SelectOption } from "./options";
3
3
  import { type OptionsSource } from "./useOptions";
4
4
  declare const _default: <Value extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
@@ -15,7 +15,7 @@ declare const _default: <Value extends string | number>(__VLS_props: NonNullable
15
15
  }) & Partial<{}>> & import("vue").PublicProps;
16
16
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
17
17
  attrs: any;
18
- slots: {};
18
+ slots: FieldSlots;
19
19
  emit: (evt: "update:modelValue", value: Value[]) => void;
20
20
  }>) => import("vue").VNode & {
21
21
  __ctx?: Awaited<typeof __VLS_setup>;
@@ -1,5 +1,5 @@
1
1
  import { type ControlWidth } from "../controls";
2
- import { type FieldProps } from "./field";
2
+ import { type FieldProps, type FieldSlots } from "./field";
3
3
  /**
4
4
  * A number. Empty is `null`; the text is read as the user's locale writes numbers (and forgives the
5
5
  * other decimal mark), rounded to `decimals`, shown with grouping when the field is not being edited.
@@ -7,28 +7,41 @@ import { type FieldProps } from "./field";
7
7
  * <NumberField v-bind="form.bind('quantity')" :label="t('quantity')" suffix="pcs" />
8
8
  * <NumberField v-bind="form.bind('weight')" :decimals="2" suffix="kg" />
9
9
  *
10
+ * `decimals` is the most fraction digits the field takes and keeps; `minDecimals` is how many are always shown (default: `decimals`, so an
11
+ * amount reads `1.50`). A coordinate is `:decimals="7" :min-decimals="0" mono` and reads `43.566139`, not `43.5661390`. `mono` sets the
12
+ * number in the monospaced face of `TextField mono`, when it is read character by character.
13
+ *
10
14
  * `:grouping="false"` writes no thousands separator, shown or typed (a year 2024, a coordinate 45.815123), and then a "."
11
15
  * is always a decimal mark, never a group mark.
12
16
  *
13
17
  * Typing "1,5" mid-edit is never rewritten under the cursor: the text is the user's until the field loses focus.
18
+ * `:max-digits="5"` takes at most five digits (a postal code): typing a sixth does nothing, pasting a longer number keeps its first five.
14
19
  * Limits (`min`, `max`) are the validator's job; the field only keeps what cannot be a number out.
15
20
  */
16
21
  type __VLS_Props = FieldProps & {
22
+ /** The most fraction digits the field takes and keeps. */
17
23
  decimals?: number;
24
+ /** The fraction digits always shown, at most `decimals`: `1.50` for `decimals: 2`. Default: `decimals`; `0` shows only the digits the number has. */
25
+ minDecimals?: number;
18
26
  /** Allows a leading minus sign. */
19
27
  negative?: boolean;
20
28
  /** Separates thousands ("1.234.567"); off for years, coordinates and codes. */
21
29
  grouping?: boolean;
30
+ /** The most digits the field takes, fraction digits included (the sign, separators and decimal mark are not counted): a postal code is `:max-digits="5"`. Further digits are not accepted, as `maxlength` does for text; a pasted longer number keeps its first digits. */
31
+ maxDigits?: number;
32
+ /** The monospaced face of `TextField mono` (coordinates, codes). */
33
+ mono?: boolean;
22
34
  placeholder?: string;
23
35
  prefix?: string;
24
36
  suffix?: string;
25
37
  /** sm 10rem (the default for numbers) · md · lg · full. */
26
38
  width?: Exclude<ControlWidth, "content">;
27
39
  };
40
+ type __VLS_Slots = FieldSlots;
28
41
  type __VLS_PublicProps = __VLS_Props & {
29
42
  modelValue?: number | null;
30
43
  };
31
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
44
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {
32
45
  focus: () => void | undefined;
33
46
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
34
47
  "update:modelValue": (value: number | null) => any;
@@ -44,12 +57,22 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
44
57
  width: Exclude<ControlWidth, "content">;
45
58
  prefix: string;
46
59
  presentation: "control" | "value";
60
+ labelHidden: boolean;
47
61
  hint: string;
48
62
  editable: boolean;
49
63
  lockedReason: string;
64
+ mono: boolean;
50
65
  suffix: string;
51
66
  decimals: number;
67
+ minDecimals: number;
52
68
  negative: boolean;
53
69
  grouping: boolean;
70
+ maxDigits: number;
54
71
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
72
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
55
73
  export default _default;
74
+ type __VLS_WithSlots<T, S> = T & {
75
+ new (): {
76
+ $slots: S;
77
+ };
78
+ };
@@ -1,4 +1,4 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  /**
3
3
  * One picture. The value is the chosen `File`, or a `string` for a picture the record already has (its URL); `null` is none.
4
4
  * The preview is made here and released when it is replaced or the field goes away; tapping it opens the picture in the `PhotoViewer`
@@ -10,10 +10,11 @@ type __VLS_Props = FieldProps & {
10
10
  accept?: readonly string[];
11
11
  maxSize?: number;
12
12
  };
13
+ type __VLS_Slots = Pick<FieldSlots, "trailing" | "labelTrailing">;
13
14
  type __VLS_PublicProps = __VLS_Props & {
14
15
  modelValue?: File | string | null;
15
16
  };
16
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
18
  "update:modelValue": (value: string | File | null) => any;
18
19
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
19
20
  "onUpdate:modelValue"?: ((value: string | File | null) => any) | undefined;
@@ -24,10 +25,17 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {},
24
25
  error: string;
25
26
  required: boolean;
26
27
  presentation: "control" | "value";
28
+ labelHidden: boolean;
27
29
  hint: string;
28
30
  editable: boolean;
29
31
  lockedReason: string;
30
32
  accept: readonly string[];
31
33
  maxSize: number;
32
34
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
35
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
33
36
  export default _default;
37
+ type __VLS_WithSlots<T, S> = T & {
38
+ new (): {
39
+ $slots: S;
40
+ };
41
+ };
@@ -1,4 +1,4 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  import type { SelectOption } from "./options";
3
3
  declare const _default: <Value extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
4
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
@@ -13,7 +13,7 @@ declare const _default: <Value extends string | number>(__VLS_props: NonNullable
13
13
  }) & Partial<{}>> & import("vue").PublicProps;
14
14
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
15
15
  attrs: any;
16
- slots: {};
16
+ slots: FieldSlots;
17
17
  emit: (evt: "update:modelValue", value: Value) => void;
18
18
  }>) => import("vue").VNode & {
19
19
  __ctx?: Awaited<typeof __VLS_setup>;
@@ -1,24 +1,23 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  import type { SelectOption } from "./options";
3
3
  import { type OptionsSource } from "./useOptions";
4
- declare const _default: <Value extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
+ declare const _default: <Value extends string | number, Clearable extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
5
5
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
6
- readonly "onUpdate:modelValue"?: ((value: Value | null) => any) | undefined;
6
+ readonly "onUpdate:modelValue"?: ((value: Clearable extends true ? Value | null : Value) => any) | undefined;
7
7
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue"> & (FieldProps & {
8
8
  options: OptionsSource<Value>;
9
9
  /** The option of the current value when the caller already has it (a saved record's model): its label shows before the options arrive, or when they do not contain it. */
10
10
  selected?: SelectOption<Value> | null;
11
11
  placeholder?: string;
12
- clearable?: boolean;
12
+ clearable?: Clearable;
13
+ modelValue?: Value | null;
13
14
  /** Shows the search box from this many options. */
14
15
  searchFrom?: number;
15
- } & {
16
- modelValue?: Value | null;
17
16
  }) & Partial<{}>> & import("vue").PublicProps;
18
17
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
19
18
  attrs: any;
20
- slots: {};
21
- emit: (evt: "update:modelValue", value: Value | null) => void;
19
+ slots: FieldSlots;
20
+ emit: (evt: "update:modelValue", value: Clearable extends true ? Value | null : Value) => void;
22
21
  }>) => import("vue").VNode & {
23
22
  __ctx?: Awaited<typeof __VLS_setup>;
24
23
  };
@@ -1,4 +1,4 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  /**
3
3
  * An on/off setting, iOS style: the label with a switch at the row's end. The value is a boolean: a column that
4
4
  * holds 0 and 1, or "0" and "1", is mapped where the record is (`toValues`, the payload), so the switch never has
@@ -11,7 +11,7 @@ import { type FieldProps } from "./field";
11
11
  type __VLS_Props = FieldProps & {
12
12
  size?: "sm" | "md" | "lg";
13
13
  };
14
- type __VLS_Slots = {
14
+ type __VLS_Slots = FieldSlots & {
15
15
  before?: () => unknown;
16
16
  };
17
17
  type __VLS_PublicProps = __VLS_Props & {
@@ -29,6 +29,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
29
29
  required: boolean;
30
30
  size: "sm" | "md" | "lg";
31
31
  presentation: "control" | "value";
32
+ labelHidden: boolean;
32
33
  hint: string;
33
34
  editable: boolean;
34
35
  lockedReason: string;
@@ -1,5 +1,5 @@
1
1
  import { type ControlWidth } from "../controls";
2
- import { type FieldProps } from "./field";
2
+ import { type FieldProps, type FieldSlots } from "./field";
3
3
  import { type TextSuggestion } from "./suggestions";
4
4
  /**
5
5
  * A line of text: a name, an e-mail address, a code. The value is always a string ("" is empty); a nullable
@@ -40,10 +40,11 @@ type __VLS_Props = FieldProps & {
40
40
  /** The id the last picks are kept under (see `recentChoicesKey`); setting it shows them under "Recent" before typing. */
41
41
  recents?: string;
42
42
  };
43
+ type __VLS_Slots = FieldSlots;
43
44
  type __VLS_PublicProps = __VLS_Props & {
44
45
  modelValue?: string;
45
46
  };
46
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
47
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {
47
48
  focus: () => void | undefined;
48
49
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
49
50
  "update:modelValue": (value: string) => any;
@@ -68,6 +69,7 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
68
69
  width: Exclude<ControlWidth, "content">;
69
70
  prefix: string;
70
71
  presentation: "control" | "value";
72
+ labelHidden: boolean;
71
73
  hint: string;
72
74
  editable: boolean;
73
75
  lockedReason: string;
@@ -83,4 +85,10 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
83
85
  suggestionsDebounce: number;
84
86
  suggestionsLimit: number;
85
87
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
88
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
86
89
  export default _default;
90
+ type __VLS_WithSlots<T, S> = T & {
91
+ new (): {
92
+ $slots: S;
93
+ };
94
+ };
@@ -1,4 +1,4 @@
1
- import { type FieldProps } from "./field";
1
+ import { type FieldProps, type FieldSlots } from "./field";
2
2
  /**
3
3
  * Longer text. On wide screens a labelled textarea is an entry row like the others (the label in the label
4
4
  * column, top-aligned, with "n / max" under it when there is a `maxLength`); on phones, and when `stacked`,
@@ -14,10 +14,11 @@ type __VLS_Props = FieldProps & {
14
14
  /** The label above the field even on wide screens: for a group too narrow for a label column. */
15
15
  stacked?: boolean;
16
16
  };
17
+ type __VLS_Slots = FieldSlots;
17
18
  type __VLS_PublicProps = __VLS_Props & {
18
19
  modelValue?: string;
19
20
  };
20
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
21
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {
21
22
  focus: () => void | undefined;
22
23
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
24
  "update:modelValue": (value: string) => any;
@@ -33,10 +34,17 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
33
34
  presentation: "control" | "value";
34
35
  rows: number;
35
36
  stacked: boolean;
37
+ labelHidden: boolean;
36
38
  hint: string;
37
39
  editable: boolean;
38
40
  lockedReason: string;
39
41
  maxLength: number;
40
42
  autocomplete: string;
41
43
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
44
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
42
45
  export default _default;
46
+ type __VLS_WithSlots<T, S> = T & {
47
+ new (): {
48
+ $slots: S;
49
+ };
50
+ };
@@ -1,5 +1,5 @@
1
1
  import type { QuickTime } from "./date/quickPicks";
2
- import { type FieldProps } from "./field";
2
+ import { type FieldProps, type FieldSlots } from "./field";
3
3
  /**
4
4
  * A time of day on the clock of the user, without a date or a zone: `"14:35"`, or `null`. Typing is forgiving (`1435`,
5
5
  * `14.35`, `14:35`, `9`, the word for now); the popover (a drum sheet on a phone) has an hour list 00 to 23 and a minute
@@ -15,10 +15,11 @@ type __VLS_Props = FieldProps & {
15
15
  /** Shortcuts: `"now"`, a time such as `"08:00"`, or `{ label, time }`. */
16
16
  quickTimes?: readonly QuickTime[];
17
17
  };
18
+ type __VLS_Slots = FieldSlots;
18
19
  type __VLS_PublicProps = __VLS_Props & {
19
20
  modelValue?: string | null;
20
21
  };
21
- declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
22
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {
22
23
  focus: () => void | undefined;
23
24
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
24
25
  "update:modelValue": (value: string | null) => any;
@@ -31,10 +32,17 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
31
32
  error: string;
32
33
  required: boolean;
33
34
  presentation: "control" | "value";
35
+ labelHidden: boolean;
34
36
  hint: string;
35
37
  editable: boolean;
36
38
  lockedReason: string;
37
39
  minuteStep: number;
38
40
  quickTimes: readonly QuickTime[];
39
41
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
40
43
  export default _default;
44
+ type __VLS_WithSlots<T, S> = T & {
45
+ new (): {
46
+ $slots: S;
47
+ };
48
+ };
@@ -2,6 +2,8 @@ import { type ComputedRef, type InjectionKey, type Ref } from "vue";
2
2
  /** What every field takes besides its value. A field is one labelled row: the label, the control, a hint, the error. */
3
3
  export interface FieldProps {
4
4
  label?: string;
5
+ /** The label stays the control's accessible name (and the read-mode row's) but is not drawn: for a field whose group header already says it. */
6
+ labelHidden?: boolean;
5
7
  /** A sentence under the label (under the control outside a group) that says what to enter. */
6
8
  hint?: string;
7
9
  /** The message to show; `form.bind()` supplies it. */
@@ -22,6 +24,7 @@ export interface FieldProps {
22
24
  /** Defaults of `FieldProps` for `withDefaults(defineProps<FieldProps & …>(), { ...fieldDefaults, … })`. */
23
25
  export declare const fieldDefaults: {
24
26
  label: undefined;
27
+ labelHidden: boolean;
25
28
  hint: undefined;
26
29
  error: undefined;
27
30
  required: boolean;
@@ -31,6 +34,15 @@ export declare const fieldDefaults: {
31
34
  presentation: "control";
32
35
  name: undefined;
33
36
  };
37
+ /** The slots every field passes through to its `Field` row (see `Field`). */
38
+ export interface FieldSlots {
39
+ /** A custom read-only presentation (a picked record's card) when the value is not enough. */
40
+ readonly?: () => unknown;
41
+ /** A row action after the control (a per-row Save). */
42
+ trailing?: () => unknown;
43
+ /** At the end of the label's line while editing. */
44
+ labelTrailing?: () => unknown;
45
+ }
34
46
  /** How a row lays out: a label column with a control, a label with a trailing control, a label over a full-width control, or a value. */
35
47
  export type FormRowLayout = "entry" | "setting" | "stacked" | "value";
36
48
  /** The state a `FormGroup` shares with the rows in it. */
@@ -20,7 +20,7 @@ export { default as DateField } from "./DateField.vue";
20
20
  export { default as DateTimeField } from "./DateTimeField.vue";
21
21
  export { default as Field } from "./Field.vue";
22
22
  export { fieldDefaults, fieldProps, formEditableKey, useFieldMode } from "./field";
23
- export type { FieldProps, FormRowLayout } from "./field";
23
+ export type { FieldProps, FieldSlots, FormRowLayout } from "./field";
24
24
  export { default as FileField } from "./FileField.vue";
25
25
  export { checkFile, formatBytes } from "./file";
26
26
  export type { FileProblem } from "./file";
@@ -61,6 +61,8 @@ export { useGroupSheet } from "./useGroupSheet";
61
61
  export type { GroupSheetForm, GroupSheetOptions, GroupSheetState } from "./useGroupSheet";
62
62
  export { default as EditorPage } from "./EditorPage.vue";
63
63
  export { useSectionStates } from "./sectionStates";
64
+ export { useHiddenFieldErrors } from "./useHiddenFieldErrors";
65
+ export type { HiddenFieldError } from "./useHiddenFieldErrors";
64
66
  export { useSaveChrome } from "./useSaveChrome";
65
67
  export type { SaveChromeOptions } from "./useSaveChrome";
66
68
  export { default as CommandDialog } from "./CommandDialog.vue";