@wirecore/wirelayer-vue 0.7.0 → 0.8.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/{Checkbox-D175nhKK.js → Checkbox-DS2qfQK1.js} +2 -8
- package/dist/ContextMenu-B6agwyf_.js +2311 -0
- package/dist/{Field-B1EsNF84.js → Field-Cqe2BG_x.js} +1 -1
- package/dist/Input-C5dyvZfJ.js +183 -0
- package/dist/{InputStatus-D7kBGlew.js → InputStatus-Cgarj-yu.js} +16 -3
- package/dist/{Select-Bd2Vpr7G.js → Select-CeZbSy6K.js} +111 -95
- package/dist/Tree-DgHt0P5P.js +807 -0
- package/dist/components/Alert/Alert.vue.d.ts +5 -3
- package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.vue.d.ts +26 -23
- package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.vue.d.ts +9 -1
- package/dist/components/Combobox/Combobox.vue.d.ts.map +1 -1
- package/dist/components/CommandPalette/CommandPalette.vue.d.ts +1 -1
- package/dist/components/ContextMenu/ContextMenu.vue.d.ts +17 -1
- package/dist/components/ContextMenu/ContextMenu.vue.d.ts.map +1 -1
- package/dist/components/Dialog/Dialog.vue.d.ts +1 -1
- package/dist/components/Dialog/DialogContent.vue.d.ts +5 -0
- package/dist/components/Dialog/DialogContent.vue.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.vue.d.ts +1 -1
- package/dist/components/Fieldset/Fieldset.vue.d.ts +1 -1
- package/dist/components/FilterPanel/FilterPanel.vue.d.ts +1 -1
- package/dist/components/HoverCard/HoverCard.vue.d.ts +1 -1
- package/dist/components/Input/Input.vue.d.ts +3 -1
- package/dist/components/Input/Input.vue.d.ts.map +1 -1
- package/dist/components/MaskInput/MaskInput.vue.d.ts +2 -1
- package/dist/components/MaskInput/MaskInput.vue.d.ts.map +1 -1
- package/dist/components/Menu/Menu.vue.d.ts +9 -1
- package/dist/components/Menu/Menu.vue.d.ts.map +1 -1
- package/dist/components/Menu/state.d.ts +22 -0
- package/dist/components/Menu/state.d.ts.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.vue.d.ts +26 -17
- package/dist/components/NativeSelect/NativeSelect.vue.d.ts.map +1 -1
- package/dist/components/NumberInput/NumberInput.vue.d.ts +1 -1
- package/dist/components/NumberInput/NumberInput.vue.d.ts.map +1 -1
- package/dist/components/Panel/Panel.vue.d.ts +1 -1
- package/dist/components/PasswordInput/PasswordInput.vue.d.ts +9 -3
- package/dist/components/PasswordInput/PasswordInput.vue.d.ts.map +1 -1
- package/dist/components/Popover/Popover.vue.d.ts +1 -1
- package/dist/components/Progress/Progress.vue.d.ts +11 -0
- package/dist/components/Progress/Progress.vue.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.vue.d.ts +24 -25
- package/dist/components/RadioGroup/RadioGroup.vue.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroupItem.vue.d.ts +2 -1
- package/dist/components/RadioGroup/RadioGroupItem.vue.d.ts.map +1 -1
- package/dist/components/RadioGroup/context.d.ts +4 -0
- package/dist/components/RadioGroup/context.d.ts.map +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.vue.d.ts +23 -22
- package/dist/components/SegmentedControl/SegmentedControl.vue.d.ts.map +1 -1
- package/dist/components/Select/Select.vue.d.ts +9 -1
- package/dist/components/Select/Select.vue.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.vue.d.ts +3 -1
- package/dist/components/Textarea/Textarea.vue.d.ts.map +1 -1
- package/dist/data-table.js +4 -4
- package/dist/editor.js +1 -1
- package/dist/form.js +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2691 -2636
- package/dist/pdf.js +3 -3
- package/dist/utils/text-field.d.ts +16 -0
- package/dist/utils/text-field.d.ts.map +1 -0
- package/llms-full.txt +66 -20
- package/llms.txt +5 -4
- package/package.json +2 -2
- package/dist/ContextMenu-BEOEyUa6.js +0 -2235
- package/dist/Input-Cn5q0yVE.js +0 -181
- package/dist/Tree-fd9LXqgZ.js +0 -792
package/dist/pdf.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as e, i as t, n } from "./recipes-BlM9aKyt.js";
|
|
2
2
|
import { t as r } from "./Button-BpMOPs8b.js";
|
|
3
|
-
import { t as i } from "./Field-
|
|
4
|
-
import { i as a, t as o } from "./Select-
|
|
5
|
-
import { c as s, i as c, l, n as u, o as d, r as ee, s as te, t as ne } from "./Tree-
|
|
3
|
+
import { t as i } from "./Field-Cqe2BG_x.js";
|
|
4
|
+
import { i as a, t as o } from "./Select-CeZbSy6K.js";
|
|
5
|
+
import { c as s, i as c, l, n as u, o as d, r as ee, s as te, t as ne } from "./Tree-DgHt0P5P.js";
|
|
6
6
|
import { Fragment as f, computed as p, createBlock as re, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, createVNode as v, defineComponent as y, mergeProps as ie, nextTick as ae, normalizeClass as b, normalizeStyle as oe, onBeforeUnmount as se, onMounted as ce, openBlock as x, reactive as le, ref as S, renderList as ue, resolveDynamicComponent as de, toDisplayString as C, unref as w, useAttrs as fe, useId as pe, useTemplateRef as T, vModelText as me, watch as E, withCtx as D, withDirectives as he, withModifiers as ge } from "vue";
|
|
7
7
|
import { CaseSensitive as _e, ChevronDown as ve, ChevronUp as ye, Download as be, FileWarning as xe, Maximize as Se, Minimize as Ce, PanelLeft as we, Printer as Te, RotateCw as Ee, Search as De, X as Oe, ZoomIn as ke, ZoomOut as Ae } from "@lucide/vue";
|
|
8
8
|
import { PDF_ZOOM_MAX as je, PDF_ZOOM_MIN as Me, clampPdfPage as Ne, clampPdfZoom as Pe, downloadBytes as Fe, input as Ie, normalizePdfRotation as O, parsePdfPage as Le, pdfFileName as Re, pdfKeyAction as ze, pdfPrintDocument as k, pdfSearchText as Be, pdfThumbnailSize as Ve, pdfTools as A, pdfViewer as He, pdfZoomFromKey as Ue, pdfZoomKey as We, pdfZoomStep as Ge, pdfZoomSteps as j, pdfZoomSteps as Ke, resolvePdfTools as qe, setupToolbar as Je } from "@wirecore/wirelayer-recipes";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the text fields expose (Input, PasswordInput, NumberInput, Textarea, MaskInput): the native element and its
|
|
3
|
+
* focus and selection methods – the root of these components is a wrapper, not the input
|
|
4
|
+
*/
|
|
5
|
+
export interface TextFieldHandle<E extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement> {
|
|
6
|
+
/** The native input (or textarea); null before mounting */
|
|
7
|
+
readonly element: E | null;
|
|
8
|
+
focus(options?: FocusOptions): void;
|
|
9
|
+
blur(): void;
|
|
10
|
+
/** Selects the whole text */
|
|
11
|
+
select(): void;
|
|
12
|
+
setSelectionRange(start: number | null, end: number | null, direction?: 'forward' | 'backward' | 'none'): void;
|
|
13
|
+
}
|
|
14
|
+
/** The handle for a component's defineExpose, reading the element when called */
|
|
15
|
+
export declare function textFieldHandle<E extends HTMLInputElement | HTMLTextAreaElement>(element: () => E | null | undefined): TextFieldHandle<E>;
|
|
16
|
+
//# sourceMappingURL=text-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../src/utils/text-field.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,gBAAgB,GAAG,mBAAmB,GAAG,gBAAgB;IAChG,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,IAAI,CAAC;IACb,6BAA6B;IAC7B,MAAM,IAAI,IAAI,CAAC;IACf,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;CAClH;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,CAAC,SAAS,gBAAgB,GAAG,mBAAmB,EAC5E,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GACpC,eAAe,CAAC,CAAC,CAAC,CAUpB"}
|
package/llms-full.txt
CHANGED
|
@@ -139,6 +139,10 @@ Message box with status colour, icon, title and text; role="alert" for errors an
|
|
|
139
139
|
| --- | --- | --- |
|
|
140
140
|
| @dismiss | – | |
|
|
141
141
|
|
|
142
|
+
| Slot | Slot props | Description |
|
|
143
|
+
| --- | --- | --- |
|
|
144
|
+
| #default | – | The message text |
|
|
145
|
+
| #actions | – | Buttons in the message, e.g. "Unlock" or "Reconnect" – beside the text, below it when there is little room |
|
|
142
146
|
|
|
143
147
|
### AngleSlider
|
|
144
148
|
|
|
@@ -973,8 +977,8 @@ Checkbox with label (also indeterminate), works inside Field
|
|
|
973
977
|
|
|
974
978
|
| Prop | Type | Description |
|
|
975
979
|
| --- | --- | --- |
|
|
976
|
-
| v-model:checked? | `
|
|
977
|
-
| default-checked? | `
|
|
980
|
+
| v-model:checked? | `C` | Controlled state – use with v-model:checked |
|
|
981
|
+
| default-checked? | `C` | |
|
|
978
982
|
| disabled? | `boolean` | |
|
|
979
983
|
| invalid? | `boolean` | |
|
|
980
984
|
| required? | `boolean` | |
|
|
@@ -985,7 +989,7 @@ Checkbox with label (also indeterminate), works inside Field
|
|
|
985
989
|
|
|
986
990
|
| Event | Payload | Description |
|
|
987
991
|
| --- | --- | --- |
|
|
988
|
-
| v-model:checked | `checked:
|
|
992
|
+
| v-model:checked | `checked: C` | |
|
|
989
993
|
|
|
990
994
|
|
|
991
995
|
### CheckboxCard
|
|
@@ -1307,6 +1311,8 @@ Text field with suggestions (autocomplete): type to filter, arrow keys to choose
|
|
|
1307
1311
|
| min-search-length? | `number` | Fewest characters typed before the data source is asked |
|
|
1308
1312
|
| page-size? | `number` | Options per request of the data source (default 50) |
|
|
1309
1313
|
| id? | `string` | Id of the input, e.g. for a `<label for>` |
|
|
1314
|
+
| v-model:open? | `boolean` | Whether the list is open – use with v-model:open, or listen to update:open |
|
|
1315
|
+
| stop-key-propagation? | `boolean` | Keeps the keys the open list handles itself (Enter choosing, Escape closing, Tab leaving) from bubbling up – e.g. in a dialog with window shortcuts for Enter (save) and Escape (cancel) |
|
|
1310
1316
|
| classes? | `RecipeClasses<typeof comboboxRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
1311
1317
|
|
|
1312
1318
|
| Event | Payload | Description |
|
|
@@ -1315,6 +1321,7 @@ Text field with suggestions (autocomplete): type to filter, arrow keys to choose
|
|
|
1315
1321
|
| @input-value-change | `inputValue: string` | Every change of the text (typing, choosing, clearing) |
|
|
1316
1322
|
| @filter-change | `text: string` | Typed text – e.g. to load matching items from a server (manualFilter) |
|
|
1317
1323
|
| @load-more | – | The end of the list was scrolled into view (hasMore) |
|
|
1324
|
+
| v-model:open | `open: boolean` | The list opened or closed |
|
|
1318
1325
|
|
|
1319
1326
|
| Slot | Slot props | Description |
|
|
1320
1327
|
| --- | --- | --- |
|
|
@@ -1522,13 +1529,18 @@ Opens at the pointer on right click, on touch screens with a long press (and wit
|
|
|
1522
1529
|
- Import: `import { ContextMenu } from '@wirecore/wirelayer-vue'`
|
|
1523
1530
|
- Category: Overlays
|
|
1524
1531
|
- Example: https://wirecore.github.io/WireLayer/?path=/story/vue_overlays-contextmenu--playground
|
|
1525
|
-
- Also takes the props of: MenuItemOptions
|
|
1532
|
+
- Also takes the props of: MenuItemOptions, MenuBehaviorOptions
|
|
1526
1533
|
|
|
1527
1534
|
| Prop | Type | Description |
|
|
1528
1535
|
| --- | --- | --- |
|
|
1529
1536
|
| items | `readonly MenuEntry[]` | Items, groups, separators, checkbox items, radio groups and submenus – as in Menu |
|
|
1530
1537
|
| label? | `string` | Accessible name of the menu – without it the menu is named by the area's content |
|
|
1531
1538
|
| link-as? | `Component \| string` | Component for link items, e.g. RouterLink or NuxtLink (gets `to` for items with `to`, else `href`); default <a> |
|
|
1539
|
+
| v-model:open? | `boolean` | Whether the menu is open – use with v-model:open, or listen to update:open (e.g. to pause list shortcuts) |
|
|
1540
|
+
| close-on-scroll? | `boolean` | Closes when the page (or a container) scrolls |
|
|
1541
|
+
| close-on-resize? | `boolean` | Closes when the window is resized |
|
|
1542
|
+
| close-on-blur? | `boolean` | Closes when the window loses the focus (switching to another window) |
|
|
1543
|
+
| highlight-first? | `boolean` | Highlights the first item when the menu opens, so Enter takes it (as in desktop context menus) |
|
|
1532
1544
|
| classes? | `RecipeClasses<typeof menuRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
1533
1545
|
|
|
1534
1546
|
| Event | Payload | Description |
|
|
@@ -1536,6 +1548,8 @@ Opens at the pointer on right click, on touch screens with a long press (and wit
|
|
|
1536
1548
|
| @select | `value: string` | |
|
|
1537
1549
|
| @checked-change | `value: string, checked: boolean` | A checkbox item was switched |
|
|
1538
1550
|
| @value-change | `name: string, value: string` | A radio group got a new value |
|
|
1551
|
+
| v-model:open | `open: boolean` | |
|
|
1552
|
+
| @before-open | `target: Element` | A right click, long press or the menu key is opening the menu, on this element (e.g. the row under the pointer – select it before the menu shows) |
|
|
1539
1553
|
|
|
1540
1554
|
| Slot | Slot props | Description |
|
|
1541
1555
|
| --- | --- | --- |
|
|
@@ -1997,6 +2011,7 @@ The modal window of a Dialog: title, description, focus trap, Escape closes
|
|
|
1997
2011
|
| --- | --- | --- |
|
|
1998
2012
|
| title | `string` | |
|
|
1999
2013
|
| hide-title? | `boolean` | The title only for screen readers – it still names the dialog (e.g. a video in a dialog) |
|
|
2014
|
+
| title-position? | `'body' \| 'header'` | `body` (default): the title below the header row; `header`: in the row of the close button, after a smaller icon, the header separated by a line (as on the Drawer) |
|
|
2000
2015
|
| description? | `string` | |
|
|
2001
2016
|
| icon? | `Component` | Icon component in the coloured box at the top |
|
|
2002
2017
|
| status? | `DialogStatus` | |
|
|
@@ -3019,7 +3034,7 @@ Shows a value as a button; activating it swaps in the editor (Escape closes it)
|
|
|
3019
3034
|
|
|
3020
3035
|
### Input
|
|
3021
3036
|
|
|
3022
|
-
Text field with sizes, leading icon, prefix and suffix; works inside Field
|
|
3037
|
+
Text field with sizes, leading icon, prefix and suffix; works inside Field. `ref` reaches the native input (focus, select, setSelectionRange)
|
|
3023
3038
|
|
|
3024
3039
|
- Import: `import { Input } from '@wirecore/wirelayer-vue'`
|
|
3025
3040
|
|
|
@@ -3038,6 +3053,7 @@ Text field with sizes, leading icon, prefix and suffix; works inside Field
|
|
|
3038
3053
|
| leading-icon? | `Component` | Icon component rendered inside the field, before the text |
|
|
3039
3054
|
| prefix? | `string` | Static text segment before the input, e.g. `https://` |
|
|
3040
3055
|
| suffix? | `string` | Static text segment after the input, e.g. `.de` |
|
|
3056
|
+
| mono? | `boolean` | Monospace font of the theme (JetBrains Mono) – for paths, tokens, codes, URLs and keys |
|
|
3041
3057
|
| classes? | `RecipeClasses<typeof inputRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
3042
3058
|
|
|
3043
3059
|
| Event | Payload | Description |
|
|
@@ -3553,7 +3569,7 @@ The trigger is the slotted element (e.g. a Button or IconButton)
|
|
|
3553
3569
|
- Import: `import { Menu } from '@wirecore/wirelayer-vue'`
|
|
3554
3570
|
- Category: Overlays
|
|
3555
3571
|
- Example: https://wirecore.github.io/WireLayer/?path=/story/vue_overlays-menu--playground
|
|
3556
|
-
- Also takes the props of: MenuItemOptions
|
|
3572
|
+
- Also takes the props of: MenuItemOptions, MenuBehaviorOptions
|
|
3557
3573
|
|
|
3558
3574
|
| Prop | Type | Description |
|
|
3559
3575
|
| --- | --- | --- |
|
|
@@ -3566,6 +3582,10 @@ The trigger is the slotted element (e.g. a Button or IconButton)
|
|
|
3566
3582
|
| placement? | `PopoverPlacement` | Side of the trigger the menu opens on, e.g. `bottom-end` for a menu at the right edge (default bottom-start) |
|
|
3567
3583
|
| arrow? | `boolean` | Arrow pointing at the trigger, as on the Popover |
|
|
3568
3584
|
| link-as? | `Component \| string` | Component for link items, e.g. RouterLink or NuxtLink (gets `to` for items with `to`, else `href`); default <a> |
|
|
3585
|
+
| close-on-scroll? | `boolean` | Closes when the page (or a container) scrolls – e.g. for a menu opened at a point |
|
|
3586
|
+
| close-on-resize? | `boolean` | Closes when the window is resized |
|
|
3587
|
+
| close-on-blur? | `boolean` | Closes when the window loses the focus (switching to another window) |
|
|
3588
|
+
| highlight-first? | `boolean` | Highlights the first item also when the menu opens by pointer, so Enter takes it (as in desktop menus) |
|
|
3569
3589
|
| classes? | `RecipeClasses<typeof menuRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
3570
3590
|
|
|
3571
3591
|
| Event | Payload | Description |
|
|
@@ -3775,8 +3795,8 @@ The browser's select: its own keyboard and mobile pickers; inside a Field it is
|
|
|
3775
3795
|
|
|
3776
3796
|
| Prop | Type | Description |
|
|
3777
3797
|
| --- | --- | --- |
|
|
3778
|
-
| items | `readonly NativeSelectOption[]` | |
|
|
3779
|
-
| v-model? (modelValue) | `
|
|
3798
|
+
| items | `readonly NativeSelectOption<V>[]` | |
|
|
3799
|
+
| v-model? (modelValue) | `V \| ''` | Chosen value – use with v-model; the placeholder option gives an empty string |
|
|
3780
3800
|
| placeholder? | `string` | First, empty option, e.g. "Please choose" |
|
|
3781
3801
|
| size? | `Size` | |
|
|
3782
3802
|
| invalid? | `boolean` | |
|
|
@@ -3785,7 +3805,7 @@ The browser's select: its own keyboard and mobile pickers; inside a Field it is
|
|
|
3785
3805
|
|
|
3786
3806
|
| Event | Payload | Description |
|
|
3787
3807
|
| --- | --- | --- |
|
|
3788
|
-
| v-model | `value:
|
|
3808
|
+
| v-model | `value: V \| ''` | |
|
|
3789
3809
|
|
|
3790
3810
|
|
|
3791
3811
|
### NavigationMenu
|
|
@@ -3872,7 +3892,7 @@ A number in the format of the locale ("€1,234.50")
|
|
|
3872
3892
|
|
|
3873
3893
|
### NumberInput
|
|
3874
3894
|
|
|
3875
|
-
Number field with − / + buttons, arrow keys and locale formatting ("1,234.5")
|
|
3895
|
+
Number field with − / + buttons, arrow keys and locale formatting ("1,234.5"); `ref` reaches the native input
|
|
3876
3896
|
|
|
3877
3897
|
- Import: `import { NumberInput } from '@wirecore/wirelayer-vue'`
|
|
3878
3898
|
- Category: Forms
|
|
@@ -4112,7 +4132,7 @@ Card with a heading (and actions); toggleable: the heading holds a button with a
|
|
|
4112
4132
|
|
|
4113
4133
|
### PasswordInput
|
|
4114
4134
|
|
|
4115
|
-
Password field with a button that shows/hides the password (named "Show/Hide password")
|
|
4135
|
+
Password field with a button that shows/hides the password (named "Show/Hide password"); `ref` reaches the native input
|
|
4116
4136
|
|
|
4117
4137
|
- Import: `import { PasswordInput } from '@wirecore/wirelayer-vue'`
|
|
4118
4138
|
- Category: Forms
|
|
@@ -4131,7 +4151,7 @@ Password field with a button that shows/hides the password (named "Show/Hide pas
|
|
|
4131
4151
|
| name? | `string` | |
|
|
4132
4152
|
| default-visible? | `boolean` | Initially show the password in plain text |
|
|
4133
4153
|
| v-model:visible? | `boolean` | Whether the password is shown in plain text – use with v-model:visible |
|
|
4134
|
-
| autocomplete? | `'current-password' \| 'new-password'` |
|
|
4154
|
+
| autocomplete? | `'current-password' \| 'new-password' \| 'off' \| 'one-time-code'` | `current-password` (default) or `new-password` for the browser's password manager; `off` or `one-time-code` for secrets it should not offer to save (tokens, passphrases, master passwords, one-time codes) |
|
|
4135
4155
|
| strength? | `boolean` | Strength meter below the field – for choosing a new password |
|
|
4136
4156
|
| requirements? | `readonly PasswordRequirement[]` | Checklist below the field, updated while typing: each rule with its state (icon and text), linked to the input as its description |
|
|
4137
4157
|
| loading? | `boolean` | Shows a spinner in the field and marks it busy (aria-busy) |
|
|
@@ -4139,6 +4159,7 @@ Password field with a button that shows/hides the password (named "Show/Hide pas
|
|
|
4139
4159
|
| clear-label? | `string` | Accessible name of the clear button (default "Clear input") |
|
|
4140
4160
|
| default-value? | `string` | Initial value without v-model |
|
|
4141
4161
|
| id? | `string` | Id of the input, e.g. for a `<label for>` |
|
|
4162
|
+
| mono? | `boolean` | Monospace font of the theme (JetBrains Mono) – for tokens, passphrases and keys |
|
|
4142
4163
|
| classes? | `RecipeClasses<typeof passwordInputRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
4143
4164
|
|
|
4144
4165
|
| Event | Payload | Description |
|
|
@@ -4408,6 +4429,10 @@ Ark names the progressbar after its value; the label is the name, the value its
|
|
|
4408
4429
|
| striped? | `boolean` | Diagonal stripes on the filled part |
|
|
4409
4430
|
| animated? | `boolean` | Moving stripes (only without reduced motion) |
|
|
4410
4431
|
| orientation? | `'horizontal' \| 'vertical'` | Vertical bar (fills the height of its parent) |
|
|
4432
|
+
| size? | `'xs' \| 'md'` | `xs`: a thin bar with small text, e.g. in a list or a status bar |
|
|
4433
|
+
| status? | `'info' \| 'success' \| 'warn' \| 'danger'` | Colour of the filled part by its state, e.g. `danger` for a failed transfer |
|
|
4434
|
+
| hide-label? | `boolean` | The label only for screen readers – it still names the progress bar |
|
|
4435
|
+
| bar-text? | `string` | Short text in the bar, e.g. "42 %", "waiting" or "failed" (a taller bar; horizontal, without segments or steps) – screen readers get it after the value |
|
|
4411
4436
|
| classes? | `RecipeClasses<typeof progressRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
4412
4437
|
|
|
4413
4438
|
|
|
@@ -4535,8 +4560,8 @@ One choice out of several (role="radiogroup", arrow keys), horizontal or vertica
|
|
|
4535
4560
|
|
|
4536
4561
|
| Prop | Type | Description |
|
|
4537
4562
|
| --- | --- | --- |
|
|
4538
|
-
| v-model? (modelValue) | `
|
|
4539
|
-
| default-value? | `
|
|
4563
|
+
| v-model? (modelValue) | `V \| null` | Selected value – use with v-model; numbers when the items have number values |
|
|
4564
|
+
| default-value? | `V \| null` | |
|
|
4540
4565
|
| label? | `string` | Visible group label (otherwise pass aria-label – or place the group in a Field with a label) |
|
|
4541
4566
|
| orientation? | `RadioGroupOrientation` | |
|
|
4542
4567
|
| columns? | `number` | Cards in a grid with this many columns (one column on small screens) – for RadioCard |
|
|
@@ -4548,7 +4573,7 @@ One choice out of several (role="radiogroup", arrow keys), horizontal or vertica
|
|
|
4548
4573
|
|
|
4549
4574
|
| Event | Payload | Description |
|
|
4550
4575
|
| --- | --- | --- |
|
|
4551
|
-
| v-model | `value:
|
|
4576
|
+
| v-model | `value: V \| null` | |
|
|
4552
4577
|
|
|
4553
4578
|
|
|
4554
4579
|
### RadioGroupItem
|
|
@@ -4562,7 +4587,7 @@ One option of a RadioGroup
|
|
|
4562
4587
|
|
|
4563
4588
|
| Prop | Type | Description |
|
|
4564
4589
|
| --- | --- | --- |
|
|
4565
|
-
| value | `string` |
|
|
4590
|
+
| value | `string \| number` | Value of the option – a number makes the group's v-model a number |
|
|
4566
4591
|
| disabled? | `boolean` | |
|
|
4567
4592
|
| classes? | `RecipeClasses<typeof radioGroupRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
4568
4593
|
|
|
@@ -4864,8 +4889,8 @@ Few exclusive options as a segmented switch (radio group)
|
|
|
4864
4889
|
|
|
4865
4890
|
| Prop | Type | Description |
|
|
4866
4891
|
| --- | --- | --- |
|
|
4867
|
-
| v-model? (modelValue) | `
|
|
4868
|
-
| default-value? | `
|
|
4892
|
+
| v-model? (modelValue) | `V \| null` | Selected value – use with v-model |
|
|
4893
|
+
| default-value? | `V` | |
|
|
4869
4894
|
| label? | `string` | Accessible name of the group (visually hidden) – inside a Field with a label, the Field's label names it |
|
|
4870
4895
|
| size? | `SegmentedControlSize` | |
|
|
4871
4896
|
| disabled? | `boolean` | |
|
|
@@ -4874,7 +4899,7 @@ Few exclusive options as a segmented switch (radio group)
|
|
|
4874
4899
|
|
|
4875
4900
|
| Event | Payload | Description |
|
|
4876
4901
|
| --- | --- | --- |
|
|
4877
|
-
| v-model | `value:
|
|
4902
|
+
| v-model | `value: V \| null` | |
|
|
4878
4903
|
|
|
4879
4904
|
|
|
4880
4905
|
### SegmentedControlItem
|
|
@@ -4931,6 +4956,8 @@ Dropdown list for one option: arrow keys, typeahead, Escape; native select hidde
|
|
|
4931
4956
|
| min-search-length? | `number` | Fewest characters the search needs before the data source is asked |
|
|
4932
4957
|
| page-size? | `number` | Options per request of the data source (default 50) |
|
|
4933
4958
|
| standalone? | `boolean` | Not labelled by a surrounding Field – for a second control inside it (e.g. PhoneInput's country) |
|
|
4959
|
+
| v-model:open? | `boolean` | Whether the list is open – use with v-model:open, or listen to update:open |
|
|
4960
|
+
| stop-key-propagation? | `boolean` | Keeps the keys the list handles itself (Enter choosing or opening, Escape closing, Tab leaving) from bubbling up – e.g. in a dialog with window shortcuts for Enter (save) and Escape (cancel) |
|
|
4934
4961
|
| id? | `string` | Id of the field (the trigger), e.g. for a `<label for>` |
|
|
4935
4962
|
| classes? | `RecipeClasses<typeof selectRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipe) |
|
|
4936
4963
|
|
|
@@ -4939,6 +4966,7 @@ Dropdown list for one option: arrow keys, typeahead, Escape; native select hidde
|
|
|
4939
4966
|
| v-model | `value: V \| null` | |
|
|
4940
4967
|
| @filter-change | `text: string` | Text of the search field (filter) – e.g. to load matching items from a server (manualFilter) |
|
|
4941
4968
|
| @load-more | – | The end of the list was scrolled into view (hasMore) |
|
|
4969
|
+
| v-model:open | `open: boolean` | The list opened or closed |
|
|
4942
4970
|
|
|
4943
4971
|
| Slot | Slot props | Description |
|
|
4944
4972
|
| --- | --- | --- |
|
|
@@ -5627,7 +5655,7 @@ Free entries: Enter or "," adds, Backspace on the empty field selects the last e
|
|
|
5627
5655
|
|
|
5628
5656
|
### Textarea
|
|
5629
5657
|
|
|
5630
|
-
Multi-line text field, optionally growing with the text (autoResize) and with a counter; works inside Field
|
|
5658
|
+
Multi-line text field, optionally growing with the text (autoResize) and with a counter; works inside Field. `ref` reaches the native textarea
|
|
5631
5659
|
|
|
5632
5660
|
- Import: `import { Textarea } from '@wirecore/wirelayer-vue'`
|
|
5633
5661
|
- Category: Forms
|
|
@@ -5649,6 +5677,7 @@ Multi-line text field, optionally growing with the text (autoResize) and with a
|
|
|
5649
5677
|
| loading? | `boolean` | Shows a spinner in the corner and marks the field busy (aria-busy) |
|
|
5650
5678
|
| clearable? | `boolean` | Shows a button that empties the field while it has text |
|
|
5651
5679
|
| clear-label? | `string` | Accessible name of the clear button (default "Clear input") |
|
|
5680
|
+
| mono? | `boolean` | Monospace font of the theme (JetBrains Mono) – for keys, codes and logs |
|
|
5652
5681
|
| classes? | `RecipeClasses<typeof textareaRecipe> & RecipeClasses<typeof textareaPartsRecipe>` | Extra classes per part of the component, e.g. { base: "…" } (see the recipes textarea and textareaParts) |
|
|
5653
5682
|
|
|
5654
5683
|
| Event | Payload | Description |
|
|
@@ -7139,6 +7168,23 @@ as `pdfjs-dist` (Apache-2.0), Chart.js, Tiptap and Shiki are installed by the ap
|
|
|
7139
7168
|
- **Brand colours:** `checkTheme` lists the pairs below WCAG AA, `suggestThemeFixes` the nearest colours (and `on-*`
|
|
7140
7169
|
colours) that meet them – an orange `primary` with white text, common in PrimeVue themes, does not.
|
|
7141
7170
|
|
|
7171
|
+
### Desktop apps (dense UI, many dialogs)
|
|
7172
|
+
|
|
7173
|
+
- **Focus from code:** the text fields expose `focus()`, `select()`, `setSelectionRange()` and the native input
|
|
7174
|
+
(`element`) through a template ref – no `$el.querySelector('input')`. In a dialog, mark the first field with
|
|
7175
|
+
`data-autofocus`: a `focus()` in `onMounted` is overridden by the dialog's focus trap.
|
|
7176
|
+
- **Window shortcuts in dialogs:** Enter/Escape listeners on `window` also get the keys of an open list. `Select` and
|
|
7177
|
+
`Combobox` take `stop-key-propagation` and report `v-model:open`; `ContextMenu` reports `v-model:open` and the
|
|
7178
|
+
right-clicked element (`@before-open`).
|
|
7179
|
+
- **Menus at a point:** `close-on-scroll`, `close-on-resize`, `close-on-blur`, and `highlight-first` so Enter takes the
|
|
7180
|
+
first item.
|
|
7181
|
+
- **Closable tabs** are built in: `TabsTrigger closable @close` – the close button is not nested in the tab, Delete
|
|
7182
|
+
closes the focused tab and the focus moves to its neighbour.
|
|
7183
|
+
- **Typed values:** `RadioGroup`, `SegmentedControl` and `NativeSelect` keep the type of the bound value (unions,
|
|
7184
|
+
numbers); `Checkbox` with a boolean model gives booleans.
|
|
7185
|
+
- **Compact parts:** `Progress size="xs"` with `hide-label`, `bar-text` and `status`; `Alert #actions`; `mono` on text
|
|
7186
|
+
fields; `DialogContent title-position="header"` puts the title next to the close button.
|
|
7187
|
+
|
|
7142
7188
|
### Custom theme
|
|
7143
7189
|
|
|
7144
7190
|
A theme overrides any colors per mode. `themeToCss` generates the CSS for it,
|
package/llms.txt
CHANGED
|
@@ -169,8 +169,8 @@ Full API (props, events, slots, examples) in llms-full.txt next to this file. MC
|
|
|
169
169
|
- [MonthPicker](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-monthpicker--playground): Month field ("10.2026"): type the digits in one go, or pick from the month grid; range: start – end (`@wirecore/wirelayer-vue`)
|
|
170
170
|
- [MultiSelect](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-multiselect--playground): Select with several values: the list stays open while choosing, Space/Enter toggle an option (`@wirecore/wirelayer-vue`)
|
|
171
171
|
- [NativeSelect](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-nativeselect--playground): The browser's select: its own keyboard and mobile pickers; inside a Field it is labelled and described (`@wirecore/wirelayer-vue`)
|
|
172
|
-
- [NumberInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-numberinput--playground): Number field with − / + buttons, arrow keys and locale formatting ("1,234.5") (`@wirecore/wirelayer-vue`)
|
|
173
|
-
- [PasswordInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-passwordinput--playground): Password field with a button that shows/hides the password (named "Show/Hide password") (`@wirecore/wirelayer-vue`)
|
|
172
|
+
- [NumberInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-numberinput--playground): Number field with − / + buttons, arrow keys and locale formatting ("1,234.5"); `ref` reaches the native input (`@wirecore/wirelayer-vue`)
|
|
173
|
+
- [PasswordInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-passwordinput--playground): Password field with a button that shows/hides the password (named "Show/Hide password"); `ref` reaches the native input (`@wirecore/wirelayer-vue`)
|
|
174
174
|
- [PhoneInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-phoneinput--playground): Country (flag and calling code, searchable) and the number, formatted for the country; the value is E.164 (`@wirecore/wirelayer-vue`)
|
|
175
175
|
- [PinInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-pininput--playground): Code input (OTP, PIN): one box per character, typing moves on, pasting fills all boxes (`@wirecore/wirelayer-vue`)
|
|
176
176
|
- [QuarterPicker](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-quarterpicker--playground): Quarter field: type "Q4 2026" (also "2026-Q4", "4/2026") or pick from the four quarters of a year; with range a start and an end quarter. Arrow keys move between the quarters and on into the next or previous year. (`@wirecore/wirelayer-vue`)
|
|
@@ -185,7 +185,7 @@ Full API (props, events, slots, examples) in llms-full.txt next to this file. MC
|
|
|
185
185
|
- [Switch](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-switch--playground): Without a text the label is left out: Ark names the input by it, an empty one would hide a <label for> (`@wirecore/wirelayer-vue`)
|
|
186
186
|
- [SwitchGroup](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-switchgroup--playground): role="group" named by its label, described by helper and error text; Switches with a value inside (`@wirecore/wirelayer-vue`)
|
|
187
187
|
- [TagsInput](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-tagsinput--playground): Free entries: Enter or "," adds, Backspace on the empty field selects the last entry (again removes it), arrow keys move between entries; additions and removals are announced. With suggestions the field is a combobox: Arrow down opens them, Enter adds the highlighted one. (`@wirecore/wirelayer-vue`)
|
|
188
|
-
- [Textarea](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-textarea--auto-resize): Multi-line text field, optionally growing with the text (autoResize) and with a counter; works inside Field (`@wirecore/wirelayer-vue`)
|
|
188
|
+
- [Textarea](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-textarea--auto-resize): Multi-line text field, optionally growing with the text (autoResize) and with a counter; works inside Field. `ref` reaches the native textarea (`@wirecore/wirelayer-vue`)
|
|
189
189
|
- [TimeGrid](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-timegrid--playground): Free time slots for a booking: radio buttons for one time (arrow keys move and choose), toggle buttons for a range (start, then end). Taken slots stay visible but cannot be chosen. (`@wirecore/wirelayer-vue`)
|
|
190
190
|
- [TimePicker](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-timepicker--playground): Time field: type the digits one after another ("1430"), arrow keys change hour or minute – or pick from the list of times (every `step` minutes). Gives "HH:mm". (`@wirecore/wirelayer-vue`)
|
|
191
191
|
- [TimeRangePicker](https://wirecore.github.io/WireLayer/?path=/story/vue_forms-timerangepicker--playground): Start and end time in one field ("09:00 – 17:30"): typing runs on from start to end (`@wirecore/wirelayer-vue`)
|
|
@@ -274,7 +274,7 @@ Full API (props, events, slots, examples) in llms-full.txt next to this file. MC
|
|
|
274
274
|
## Other
|
|
275
275
|
|
|
276
276
|
- FilterChips: The active filters as a list of chips with remove buttons ("Remove filter Location: Frankfurt") (`@wirecore/wirelayer-vue`)
|
|
277
|
-
- Input: Text field with sizes, leading icon, prefix and suffix; works inside Field (`@wirecore/wirelayer-vue`)
|
|
277
|
+
- Input: Text field with sizes, leading icon, prefix and suffix; works inside Field. `ref` reaches the native input (focus, select, setSelectionRange) (`@wirecore/wirelayer-vue`)
|
|
278
278
|
- KeyValueEditor: Key-value pairs (FormList preset): two inputs per row, duplicate keys marked (`@wirecore/wirelayer-vue/form`)
|
|
279
279
|
- LocaleProvider: Renders nothing itself; Ark's provider passes locale and direction (keyboard order) on to Ark (`@wirecore/wirelayer-vue`)
|
|
280
280
|
|
|
@@ -310,5 +310,6 @@ Full API (props, events, slots, examples) in llms-full.txt next to this file. MC
|
|
|
310
310
|
- License
|
|
311
311
|
- Components and APIs side by side
|
|
312
312
|
- Pitfalls
|
|
313
|
+
- Desktop apps (dense UI, many dialogs)
|
|
313
314
|
- Custom theme
|
|
314
315
|
- Component sizes and shapes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecore/wirelayer-vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "WireLayer components for Vue 3",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
"@ark-ui/vue": "^5.39.3",
|
|
167
167
|
"@internationalized/date": "^3.12.4",
|
|
168
168
|
"@lucide/vue": "^1.59.0",
|
|
169
|
-
"@wirecore/wirelayer-recipes": "^0.
|
|
169
|
+
"@wirecore/wirelayer-recipes": "^0.7.0",
|
|
170
170
|
"@wirecore/wirelayer-tokens": "^0.4.0"
|
|
171
171
|
},
|
|
172
172
|
"devDependencies": {
|