@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.
- package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-LlfIPWsJ.js → ActionRow.vue_vue_type_script_setup_true_lang-DOjn7fqy.js} +1 -1
- package/dist/{Activity-BdSvn0GP.js → Activity-CVO3sJwy.js} +6 -6
- package/dist/{Changes-BQO--N9F.js → Changes-Bzvl3cEx.js} +5 -5
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DkpFEHUw.js → CollectionPage.vue_vue_type_script_setup_true_lang-CD5zZ29o.js} +2 -2
- package/dist/DateField.vue_vue_type_script_setup_true_lang-BufoFwVQ.js +278 -0
- package/dist/{DeadLetters-OmeiADEi.js → DeadLetters-DmwUtgf9.js} +4 -4
- package/dist/FormErrors.vue_vue_type_script_setup_true_lang-DWcVKZM3.js +285 -0
- 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
- package/dist/{FormView.vue_vue_type_script_setup_true_lang-cr0xNDXP.js → FormView.vue_vue_type_script_setup_true_lang-Dz5TZt92.js} +2 -2
- package/dist/{General-CBwFLiKQ.js → General-CUEjJBD4.js} +10 -10
- package/dist/{NewRolePage-CblUW2gA.js → NewRolePage-Cyn-oV6r.js} +3 -3
- package/dist/NumberField.vue_vue_type_script_setup_true_lang-a8kN3A7k.js +150 -0
- package/dist/{ProfilePage-BOoDDbmB.js → ProfilePage-I74SQBFO.js} +41 -41
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-BCE5yrwy.js → RoleEditor.vue_vue_type_script_setup_true_lang-Ce6wjptT.js} +44 -44
- package/dist/{RolePage-xDsFL_eC.js → RolePage-DWQP3qQl.js} +8 -8
- package/dist/{RolesPage-C39wsF6X.js → RolesPage-BeEsHIQ2.js} +5 -5
- package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BMBkEmxr.js +81 -0
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-C1Flb1hA.js +465 -0
- package/dist/{SessionList.vue_vue_type_script_setup_true_lang-D4k5QeWS.js → SessionList.vue_vue_type_script_setup_true_lang-DoUo68xE.js} +2 -2
- package/dist/{Sessions-m_i4aTfw.js → Sessions-D8IXcb5M.js} +4 -4
- package/dist/{SettingsPage-ktKvQQnE.js → SettingsPage-DRQP2nrH.js} +9 -9
- package/dist/{SignIn-CkoEixY4.js → SignIn-CAZkovhb.js} +6 -6
- package/dist/{SignInPage-DVcpFz3G.js → SignInPage-D-49oLY3.js} +3 -3
- package/dist/{SignIns-BnVAtncZ.js → SignIns-BtNfgMLc.js} +3 -3
- package/dist/SwitchField.vue_vue_type_script_setup_true_lang-0weBvsJf.js +87 -0
- package/dist/TextField.vue_vue_type_script_setup_true_lang-D3-R5XXG.js +292 -0
- package/dist/TextareaField.vue_vue_type_script_setup_true_lang-4wC3c0BM.js +91 -0
- package/dist/TimeField.vue_vue_type_script_setup_true_lang-pAdLPYXA.js +187 -0
- package/dist/{UserRecord-Cg69_mbU.js → UserRecord-BSbNuRFi.js} +10 -10
- package/dist/{UsersList-BFmBDGs7.js → UsersList-DPHxcaDm.js} +8 -8
- package/dist/access/index.js +1 -1
- package/dist/app/application.d.ts +8 -2
- package/dist/app/index.js +93 -93
- package/dist/collection/index.js +1 -1
- package/dist/control-B_Nwtmag.js +334 -0
- package/dist/{describeError-CvGmajU0.js → describeError-B-NMa--w.js} +12 -7
- package/dist/fieldMessages-DV6sESpn.js +25 -0
- package/dist/form/CardSelectField.vue.d.ts +2 -2
- package/dist/form/ChoiceChips.vue.d.ts +2 -2
- package/dist/form/ComboField.vue.d.ts +2 -2
- package/dist/form/DateField.vue.d.ts +10 -2
- package/dist/form/DateTimeField.vue.d.ts +10 -2
- package/dist/form/Field.vue.d.ts +2 -1
- package/dist/form/FileField.vue.d.ts +10 -2
- package/dist/form/FormErrors.vue.d.ts +1 -1
- package/dist/form/FormRow.vue.d.ts +3 -0
- package/dist/form/I18nField.vue.d.ts +10 -2
- package/dist/form/MoneyField.vue.d.ts +10 -2
- package/dist/form/MonthYearField.vue.d.ts +10 -2
- package/dist/form/MultiSelectField.vue.d.ts +2 -2
- package/dist/form/NumberField.vue.d.ts +25 -2
- package/dist/form/PhotoField.vue.d.ts +10 -2
- package/dist/form/SegmentedField.vue.d.ts +2 -2
- package/dist/form/SelectField.vue.d.ts +7 -8
- package/dist/form/SwitchField.vue.d.ts +3 -2
- package/dist/form/TextField.vue.d.ts +10 -2
- package/dist/form/TextareaField.vue.d.ts +10 -2
- package/dist/form/TimeField.vue.d.ts +10 -2
- package/dist/form/field.d.ts +12 -0
- package/dist/form/index.d.ts +3 -1
- package/dist/form/index.js +1167 -956
- package/dist/form/useForm.d.ts +2 -2
- package/dist/form/useHiddenFieldErrors.d.ts +23 -0
- package/dist/form/useSaveChrome.d.ts +8 -3
- package/dist/i18n/describeError.d.ts +8 -0
- package/dist/i18n/index.d.ts +3 -2
- package/dist/i18n/index.js +32 -28
- package/dist/identity/fieldMessages.d.ts +1 -1
- package/dist/identity/index.js +1 -1
- package/dist/{index-RNF5-9uf.js → index-Bq96L43f.js} +15 -15
- package/dist/{index-B416VXmR.js → index-CWeNiBX6.js} +2 -2
- package/dist/{index-KcCoCfr-.js → index-yKIOaisE.js} +10 -10
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/phone/PhoneField.vue.d.ts +1 -0
- package/dist/phone/index.js +66 -65
- package/dist/resource/index.js +1 -1
- package/dist/{routeResource-BwEFXzIX.js → routeResource-DlTsGTg_.js} +1 -1
- package/dist/state/index.js +1 -1
- package/dist/{status-OZUHZpWl.js → status-DzmySsWw.js} +1 -1
- package/dist/{useCommand-BkONMn3X.js → useCommand-B-N6HJOz.js} +1 -1
- package/dist/{useLoad-DuEsLECT.js → useLoad-M7V-AVwR.js} +1 -1
- package/dist/{useResourceForm-D1hIpwW5.js → useResourceForm-CP2lCwmD.js} +1 -1
- package/dist/useSaveChrome-7huA3FzR.js +26 -0
- package/package.json +1 -1
- package/dist/DateField.vue_vue_type_script_setup_true_lang-GVasv8ao.js +0 -255
- package/dist/FormErrors.vue_vue_type_script_setup_true_lang-BQb7wLT0.js +0 -276
- package/dist/NumberField.vue_vue_type_script_setup_true_lang-C7N5nq0P.js +0 -113
- package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BMqWlpsL.js +0 -58
- package/dist/SelectField.vue_vue_type_script_setup_true_lang-BJoAkBo2.js +0 -437
- package/dist/SwitchField.vue_vue_type_script_setup_true_lang-CM8yp9JQ.js +0 -64
- package/dist/TextField.vue_vue_type_script_setup_true_lang-B9dwVASU.js +0 -269
- package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CqAWfABZ.js +0 -68
- package/dist/TimeField.vue_vue_type_script_setup_true_lang-DWfAUlnz.js +0 -164
- package/dist/control-7EP4tjYy.js +0 -313
- package/dist/fieldMessages-D_dpSe19.js +0 -25
- package/dist/useSaveChrome-DuWm0Czf.js +0 -25
package/dist/form/useForm.d.ts
CHANGED
|
@@ -80,8 +80,8 @@ export interface FormOptions<Values extends object, Output = Values> {
|
|
|
80
80
|
readonly defaults: Values | (() => Values);
|
|
81
81
|
/** The app's schema (anything with Zod's `safeParse`). Without one the server is the only validator. */
|
|
82
82
|
readonly validator?: FormValidator<Output>;
|
|
83
|
-
/**
|
|
84
|
-
readonly
|
|
83
|
+
/** A field message into a sentence, for a form that says it differently from the rest of the app. Default: the application's (`createApplication({ describeFieldError })`), else as sent. */
|
|
84
|
+
readonly describeFieldError?: (message: string, field: string) => string;
|
|
85
85
|
/** The draft's name for a field the server names, given the whole dotted path (`tax_id` is `taxId`, `lines.0.unit_price` is `lines.0.unitPrice`). Default: the same name. */
|
|
86
86
|
readonly serverField?: (field: string) => string;
|
|
87
87
|
/** The sentence for a failure; return undefined for the library's default of that kind. */
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ComputedRef, type MaybeRefOrGetter } from "vue";
|
|
2
|
+
import type { Form } from "./useForm";
|
|
3
|
+
export interface HiddenFieldError {
|
|
4
|
+
/** The path of the field (`lines.0.quantity`). */
|
|
5
|
+
readonly field: string;
|
|
6
|
+
/** Its first message. */
|
|
7
|
+
readonly message: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The form's errors whose field is not on screen: the draft lacks that field (a server field), or it sits in a part that is not
|
|
11
|
+
* shown (a collapsed section). `FormErrors` lists them; use this for another way to say it, such as a toast when a save fails.
|
|
12
|
+
*
|
|
13
|
+
* const hidden = useHiddenFieldErrors({ form });
|
|
14
|
+
* // after a refused save: toast.error(hidden.value.map((each) => `${label(each.field)}: ${each.message}`).join("; "))
|
|
15
|
+
*
|
|
16
|
+
* A field counts as shown while an element carries `data-field-key="<name>"` (`form.bind()` sets it) or the name of something that
|
|
17
|
+
* contains it. The answer follows the errors and is worked out after the next render, so read it after `await nextTick()`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useHiddenFieldErrors(options: {
|
|
20
|
+
readonly form: Pick<Form<object>, "errors">;
|
|
21
|
+
/** Where to look for shown fields; by default the whole document. */
|
|
22
|
+
readonly root?: MaybeRefOrGetter<ParentNode | null | undefined>;
|
|
23
|
+
}): ComputedRef<readonly HiddenFieldError[]>;
|
|
@@ -11,16 +11,21 @@ export interface SaveChromeOptions {
|
|
|
11
11
|
readonly ready?: MaybeRefOrGetter<boolean>;
|
|
12
12
|
/** The action id (for tests and shortcuts). Default `save`. */
|
|
13
13
|
readonly id?: string;
|
|
14
|
+
/** Save is disabled while the form has no changes (nothing to save). Default true; a page that creates a record passes false so an untouched form can still be submitted and say what is missing. */
|
|
15
|
+
readonly disabledWhileClean?: MaybeRefOrGetter<boolean>;
|
|
14
16
|
readonly save: () => void;
|
|
15
|
-
/** Cancel: put the saved values back. */
|
|
16
|
-
readonly cancel
|
|
17
|
+
/** Cancel: put the saved values back. Without it there is no Cancel (a section edited in place, where leaving is guarded anyway). */
|
|
18
|
+
readonly cancel?: () => void;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* The page chrome of a page that edits directly (a long form, a settings section): Save as the page's primary action with
|
|
20
|
-
* a spinner while it works, "Unsaved changes" beside it, Cancel (while there are edits
|
|
22
|
+
* a spinner while it works (disabled while there is nothing to save), "Unsaved changes" beside it, Cancel (while there are edits, if you
|
|
23
|
+
* give one) in place of Back, and the leave guard.
|
|
21
24
|
* Inside an `EditorPage` this is done for you; use it for a page of your own. Call it from a component rendered inside the
|
|
22
25
|
* page shell (or where the app's page chrome is installed).
|
|
23
26
|
*
|
|
24
27
|
* useSaveChrome({ form, label: () => t("save"), allowed: () => can("tickets:update"), save: submit, cancel: () => form.reset() });
|
|
28
|
+
* useSaveChrome({ form, allowed: () => can("dealer:update"), save: submit }); // a section edited in place: no Cancel
|
|
29
|
+
* useSaveChrome({ form, disabledWhileClean: false, save: submit }); // a create page: Save is always there
|
|
25
30
|
*/
|
|
26
31
|
export declare function useSaveChrome(options: SaveChromeOptions): void;
|
|
@@ -19,6 +19,14 @@ interface Translator {
|
|
|
19
19
|
*/
|
|
20
20
|
export type AppErrorDescriber = (error: unknown) => string | undefined;
|
|
21
21
|
export declare const appErrorDescriberKey: InjectionKey<AppErrorDescriber>;
|
|
22
|
+
/**
|
|
23
|
+
* The application's one sentence for a field message the server sent (`createApplication({ describeFieldError })`): often a
|
|
24
|
+
* code or a translation key. Asked by every form that has no `describeFieldError` of its own; `(message, field) => sentence`.
|
|
25
|
+
*/
|
|
26
|
+
export type AppFieldErrorDescriber = (message: string, field: string) => string;
|
|
27
|
+
export declare const appFieldErrorDescriberKey: InjectionKey<AppFieldErrorDescriber>;
|
|
28
|
+
/** The application's field-message describer, when one was installed and this runs in a setup. */
|
|
29
|
+
export declare function useAppFieldErrorDescriber(): AppFieldErrorDescriber | null;
|
|
22
30
|
/** The application's describer, when one was installed and this runs in a setup. */
|
|
23
31
|
export declare function useAppErrorDescriber(): AppErrorDescriber | null;
|
|
24
32
|
/** `describeError` over a translator; exported for the composable and tests. */
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -379,11 +379,12 @@ export declare const coreMessages: {
|
|
|
379
379
|
readonly hr: CoreMessages;
|
|
380
380
|
readonly bs: CoreMessages;
|
|
381
381
|
readonly sl: CoreMessages;
|
|
382
|
+
readonly "sr-Latn": CoreMessages;
|
|
382
383
|
};
|
|
383
384
|
export type CoreLocale = keyof typeof coreMessages;
|
|
384
385
|
export { localeMessages } from "./messages";
|
|
385
386
|
export type { LocaleMessagesOptions, MessageLoader, MessageNamespace, Messages } from "./messages";
|
|
386
387
|
export { createMessageRuntime } from "./runtime";
|
|
387
388
|
export type { MessageFailure, MessageRuntime, MessageRuntimeOptions, MessageTarget } from "./runtime";
|
|
388
|
-
export { appErrorDescriberKey, useDescribeError } from "./describeError";
|
|
389
|
-
export type { AppErrorDescriber, DescribeError, DescribeErrorOptions } from "./describeError";
|
|
389
|
+
export { appErrorDescriberKey, appFieldErrorDescriberKey, useDescribeError } from "./describeError";
|
|
390
|
+
export type { AppErrorDescriber, AppFieldErrorDescriber, DescribeError, DescribeErrorOptions } from "./describeError";
|