@vuetify/nightly 3.9.0-beta.0-dev.2025-06-24 → 3.9.0-beta.1-dev.2025-06-28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -83
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +2471 -2411
- package/dist/json/importMap-labs.json +34 -30
- package/dist/json/importMap.json +146 -146
- package/dist/json/tags.json +20 -0
- package/dist/json/web-types.json +4808 -4642
- package/dist/vuetify-labs.cjs +750 -15
- package/dist/vuetify-labs.css +5609 -5358
- package/dist/vuetify-labs.d.ts +300 -54
- package/dist/vuetify-labs.esm.js +750 -16
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +750 -15
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +357 -15
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3235 -3226
- package/dist/vuetify.d.ts +73 -53
- package/dist/vuetify.esm.js +357 -16
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +357 -15
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +292 -253
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VKbd/VKbd.css +14 -5
- package/lib/components/VKbd/VKbd.js.map +1 -1
- package/lib/components/VKbd/VKbd.scss +26 -0
- package/lib/components/VKbd/_variables.scss +12 -6
- package/lib/components/VKbd/index.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewChildren.d.ts +13 -0
- package/lib/components/VTreeview/VTreeviewChildren.js +2 -1
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewItem.js +3 -3
- package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/composables/hotkey/hotkey-parsing.d.ts +15 -0
- package/lib/composables/hotkey/hotkey-parsing.js +154 -0
- package/lib/composables/hotkey/hotkey-parsing.js.map +1 -0
- package/lib/composables/hotkey/hotkey.d.ts +9 -0
- package/lib/composables/{hotkey.js → hotkey/hotkey.js} +31 -39
- package/lib/composables/hotkey/hotkey.js.map +1 -0
- package/lib/composables/hotkey/index.d.ts +1 -0
- package/lib/composables/hotkey/index.js +2 -0
- package/lib/composables/hotkey/index.js.map +1 -0
- package/lib/composables/hotkey/key-aliases.d.ts +14 -0
- package/lib/composables/hotkey/key-aliases.js +38 -0
- package/lib/composables/hotkey/key-aliases.js.map +1 -0
- package/lib/composables/icons.d.ts +11 -0
- package/lib/composables/icons.js.map +1 -1
- package/lib/composables/index.d.ts +1 -0
- package/lib/composables/index.js +1 -0
- package/lib/composables/index.js.map +1 -1
- package/lib/composables/nested/nested.js +8 -8
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +74 -53
- package/lib/framework.js +1 -1
- package/lib/iconsets/fa.js +12 -1
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +12 -1
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +12 -1
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +12 -1
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/iconsets/mdi.js +12 -1
- package/lib/iconsets/mdi.js.map +1 -1
- package/lib/labs/VHotkey/VHotkey.css +242 -0
- package/lib/labs/VHotkey/VHotkey.d.ts +387 -0
- package/lib/labs/VHotkey/VHotkey.js +432 -0
- package/lib/labs/VHotkey/VHotkey.js.map +1 -0
- package/lib/labs/VHotkey/VHotkey.scss +253 -0
- package/lib/labs/VHotkey/_variables.scss +43 -0
- package/lib/labs/VHotkey/index.d.ts +1 -0
- package/lib/labs/VHotkey/index.js +2 -0
- package/lib/labs/VHotkey/index.js.map +1 -0
- package/lib/labs/components.d.ts +1 -0
- package/lib/labs/components.js +1 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/locale/af.d.ts +18 -0
- package/lib/locale/af.js +18 -0
- package/lib/locale/af.js.map +1 -1
- package/lib/locale/ar.d.ts +18 -0
- package/lib/locale/ar.js +18 -0
- package/lib/locale/ar.js.map +1 -1
- package/lib/locale/az.d.ts +18 -0
- package/lib/locale/az.js +18 -0
- package/lib/locale/az.js.map +1 -1
- package/lib/locale/bg.d.ts +18 -0
- package/lib/locale/bg.js +18 -0
- package/lib/locale/bg.js.map +1 -1
- package/lib/locale/ca.d.ts +18 -0
- package/lib/locale/ca.js +18 -0
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/ckb.d.ts +18 -0
- package/lib/locale/ckb.js +18 -0
- package/lib/locale/ckb.js.map +1 -1
- package/lib/locale/cs.d.ts +18 -0
- package/lib/locale/cs.js +18 -0
- package/lib/locale/cs.js.map +1 -1
- package/lib/locale/da.d.ts +18 -0
- package/lib/locale/da.js +18 -0
- package/lib/locale/da.js.map +1 -1
- package/lib/locale/de.d.ts +18 -0
- package/lib/locale/de.js +18 -0
- package/lib/locale/de.js.map +1 -1
- package/lib/locale/el.d.ts +18 -0
- package/lib/locale/el.js +18 -0
- package/lib/locale/el.js.map +1 -1
- package/lib/locale/en.d.ts +18 -0
- package/lib/locale/en.js +18 -0
- package/lib/locale/en.js.map +1 -1
- package/lib/locale/es.d.ts +18 -0
- package/lib/locale/es.js +18 -0
- package/lib/locale/es.js.map +1 -1
- package/lib/locale/et.d.ts +18 -0
- package/lib/locale/et.js +18 -0
- package/lib/locale/et.js.map +1 -1
- package/lib/locale/fa.d.ts +18 -0
- package/lib/locale/fa.js +18 -0
- package/lib/locale/fa.js.map +1 -1
- package/lib/locale/fi.d.ts +18 -0
- package/lib/locale/fi.js +18 -0
- package/lib/locale/fi.js.map +1 -1
- package/lib/locale/fr.d.ts +18 -0
- package/lib/locale/fr.js +18 -0
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/he.d.ts +18 -0
- package/lib/locale/he.js +18 -0
- package/lib/locale/he.js.map +1 -1
- package/lib/locale/hr.d.ts +18 -0
- package/lib/locale/hr.js +18 -0
- package/lib/locale/hr.js.map +1 -1
- package/lib/locale/hu.d.ts +18 -0
- package/lib/locale/hu.js +18 -0
- package/lib/locale/hu.js.map +1 -1
- package/lib/locale/id.d.ts +18 -0
- package/lib/locale/id.js +18 -0
- package/lib/locale/id.js.map +1 -1
- package/lib/locale/it.d.ts +18 -0
- package/lib/locale/it.js +18 -0
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/ja.d.ts +18 -0
- package/lib/locale/ja.js +18 -0
- package/lib/locale/ja.js.map +1 -1
- package/lib/locale/km.d.ts +18 -0
- package/lib/locale/km.js +18 -0
- package/lib/locale/km.js.map +1 -1
- package/lib/locale/ko.d.ts +18 -0
- package/lib/locale/ko.js +18 -0
- package/lib/locale/ko.js.map +1 -1
- package/lib/locale/lt.d.ts +18 -0
- package/lib/locale/lt.js +18 -0
- package/lib/locale/lt.js.map +1 -1
- package/lib/locale/lv.d.ts +18 -0
- package/lib/locale/lv.js +18 -0
- package/lib/locale/lv.js.map +1 -1
- package/lib/locale/nl.d.ts +18 -0
- package/lib/locale/nl.js +18 -0
- package/lib/locale/nl.js.map +1 -1
- package/lib/locale/no.d.ts +18 -0
- package/lib/locale/no.js +18 -0
- package/lib/locale/no.js.map +1 -1
- package/lib/locale/pl.d.ts +18 -0
- package/lib/locale/pl.js +18 -0
- package/lib/locale/pl.js.map +1 -1
- package/lib/locale/pt.d.ts +18 -0
- package/lib/locale/pt.js +18 -0
- package/lib/locale/pt.js.map +1 -1
- package/lib/locale/ro.d.ts +18 -0
- package/lib/locale/ro.js +18 -0
- package/lib/locale/ro.js.map +1 -1
- package/lib/locale/ru.d.ts +18 -0
- package/lib/locale/ru.js +18 -0
- package/lib/locale/ru.js.map +1 -1
- package/lib/locale/sk.d.ts +18 -0
- package/lib/locale/sk.js +18 -0
- package/lib/locale/sk.js.map +1 -1
- package/lib/locale/sl.d.ts +18 -0
- package/lib/locale/sl.js +18 -0
- package/lib/locale/sl.js.map +1 -1
- package/lib/locale/sr-Cyrl.d.ts +18 -0
- package/lib/locale/sr-Cyrl.js +18 -0
- package/lib/locale/sr-Cyrl.js.map +1 -1
- package/lib/locale/sr-Latn.d.ts +18 -0
- package/lib/locale/sr-Latn.js +18 -0
- package/lib/locale/sr-Latn.js.map +1 -1
- package/lib/locale/sv.d.ts +18 -0
- package/lib/locale/sv.js +18 -0
- package/lib/locale/sv.js.map +1 -1
- package/lib/locale/th.d.ts +18 -0
- package/lib/locale/th.js +18 -0
- package/lib/locale/th.js.map +1 -1
- package/lib/locale/tr.d.ts +18 -0
- package/lib/locale/tr.js +18 -0
- package/lib/locale/tr.js.map +1 -1
- package/lib/locale/uk.d.ts +18 -0
- package/lib/locale/uk.js +18 -0
- package/lib/locale/uk.js.map +1 -1
- package/lib/locale/vi.d.ts +18 -0
- package/lib/locale/vi.js +18 -0
- package/lib/locale/vi.js.map +1 -1
- package/lib/locale/zh-Hans.d.ts +18 -0
- package/lib/locale/zh-Hans.js +18 -0
- package/lib/locale/zh-Hans.js.map +1 -1
- package/lib/locale/zh-Hant.d.ts +18 -0
- package/lib/locale/zh-Hant.js +18 -0
- package/lib/locale/zh-Hant.js.map +1 -1
- package/package.json +1 -1
- package/lib/components/VKbd/VKbd.sass +0 -15
- package/lib/composables/hotkey.d.ts +0 -9
- package/lib/composables/hotkey.js.map +0 -1
@@ -1,10 +1,19 @@
|
|
1
1
|
.v-kbd {
|
2
|
+
font-family: "Roboto", sans-serif;
|
3
|
+
align-items: center;
|
4
|
+
align-self: stretch;
|
2
5
|
background: rgb(var(--v-theme-kbd));
|
3
6
|
color: rgb(var(--v-theme-on-kbd));
|
4
|
-
display: inline;
|
5
|
-
font-size:
|
7
|
+
display: inline-flex;
|
8
|
+
font-size: 0.875em;
|
6
9
|
font-weight: normal;
|
7
|
-
|
10
|
+
line-height: 1;
|
11
|
+
justify-content: center;
|
12
|
+
min-height: 1em;
|
13
|
+
min-width: 20px;
|
14
|
+
padding: 3px 6px;
|
15
|
+
vertical-align: baseline;
|
16
|
+
margin-inline: 1px;
|
8
17
|
}
|
9
18
|
.v-kbd {
|
10
19
|
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
@@ -16,8 +25,8 @@
|
|
16
25
|
box-shadow: none;
|
17
26
|
}
|
18
27
|
.v-kbd {
|
19
|
-
box-shadow: 0px
|
28
|
+
box-shadow: 0px 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 1px 1px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 3px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
20
29
|
}
|
21
30
|
.v-kbd {
|
22
|
-
border-radius:
|
31
|
+
border-radius: 4px;
|
23
32
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VKbd.js","names":["makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","genericComponent","propsFactory","useRender","makeVKbdProps","color","String","tag","VKbd","name","props","setup","_ref","slots","themeClasses","borderClasses","roundedClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","_createVNode","_normalizeClass","value","class","_normalizeStyle","style"],"sources":["../../../src/components/VKbd/VKbd.tsx"],"sourcesContent":["// Styles\nimport './VKbd.
|
1
|
+
{"version":3,"file":"VKbd.js","names":["makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","genericComponent","propsFactory","useRender","makeVKbdProps","color","String","tag","VKbd","name","props","setup","_ref","slots","themeClasses","borderClasses","roundedClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","_createVNode","_normalizeClass","value","class","_normalizeStyle","style"],"sources":["../../../src/components/VKbd/VKbd.tsx"],"sourcesContent":["// Styles\nimport './VKbd.scss'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVKbdProps = propsFactory({\n color: String,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'kbd' }),\n ...makeThemeProps(),\n ...makeElevationProps(),\n}, 'VKbd')\n\nexport const VKbd = genericComponent()({\n name: 'VKbd',\n\n props: makeVKbdProps(),\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { roundedClasses } = useRounded(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { elevationClasses } = useElevation(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-kbd',\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VKbd = InstanceType<typeof VKbd>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY,sCAErC;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,aAAa,GAAGF,YAAY,CAAC;EACxCG,KAAK,EAAEC,MAAM;EAEb,GAAGhB,eAAe,CAAC,CAAC;EACpB,GAAGG,kBAAkB,CAAC,CAAC;EACvB,GAAGG,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC;IAAES,GAAG,EAAE;EAAM,CAAC,CAAC;EAC/B,GAAGR,cAAc,CAAC,CAAC;EACnB,GAAGL,kBAAkB,CAAC;AACxB,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,MAAMc,IAAI,GAAGP,gBAAgB,CAAC,CAAC,CAAC;EACrCQ,IAAI,EAAE,MAAM;EAEZC,KAAK,EAAEN,aAAa,CAAC,CAAC;EAEtBO,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAa,CAAC,GAAGd,YAAY,CAACU,KAAK,CAAC;IAC5C,MAAM;MAAEK;IAAc,CAAC,GAAGxB,SAAS,CAACmB,KAAK,CAAC;IAC1C,MAAM;MAAEM;IAAe,CAAC,GAAGnB,UAAU,CAACa,KAAK,CAAC;IAC5C,MAAM;MAAEO,sBAAsB;MAAEC;IAAsB,CAAC,GAAG1B,kBAAkB,CAAC,MAAMkB,KAAK,CAACL,KAAK,CAAC;IAC/F,MAAM;MAAEc;IAAiB,CAAC,GAAGxB,YAAY,CAACe,KAAK,CAAC;IAEhDP,SAAS,CAAC,MAAAiB,YAAA,CAAAV,KAAA,CAAAH,GAAA;MAAA,SAAAc,eAAA,CAEC,CACL,OAAO,EACPP,YAAY,CAACQ,KAAK,EAClBL,sBAAsB,CAACK,KAAK,EAC5BP,aAAa,CAACO,KAAK,EACnBH,gBAAgB,CAACG,KAAK,EACtBN,cAAc,CAACM,KAAK,EACpBZ,KAAK,CAACa,KAAK,CACZ;MAAA,SAAAC,eAAA,CACM,CACLN,qBAAqB,CAACI,KAAK,EAC3BZ,KAAK,CAACe,KAAK,CACZ;IAAA,GACSZ,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
@use '../../styles/tools';
|
2
|
+
@use './variables' as *;
|
3
|
+
|
4
|
+
@include tools.layer('components') {
|
5
|
+
.v-kbd {
|
6
|
+
font-family: $kbd-font-family;
|
7
|
+
align-items: center;
|
8
|
+
align-self: stretch;
|
9
|
+
background: rgb(var(--v-theme-kbd));
|
10
|
+
color: rgb(var(--v-theme-on-kbd));
|
11
|
+
display: $kbd-display;
|
12
|
+
font-size: $kbd-font-size;
|
13
|
+
font-weight: $kbd-font-weight;
|
14
|
+
line-height: $kbd-line-height;
|
15
|
+
justify-content: center;
|
16
|
+
min-height: $kbd-min-height;
|
17
|
+
min-width: $kbd-min-width;
|
18
|
+
padding: $kbd-padding;
|
19
|
+
vertical-align: baseline;
|
20
|
+
margin-inline: $kbd-margin-inline;
|
21
|
+
|
22
|
+
@include tools.border($kbd-border...);
|
23
|
+
@include tools.elevation($kbd-elevation);
|
24
|
+
@include tools.rounded($kbd-border-radius);
|
25
|
+
}
|
26
|
+
}
|
@@ -1,11 +1,17 @@
|
|
1
1
|
// VKbd
|
2
|
-
|
3
|
-
$kbd-
|
4
|
-
$kbd-
|
5
|
-
$kbd-
|
2
|
+
// Kbd elements naturally use monospace fonts, if users want to change this, they can do so by setting the font-family on the v-kbd element.
|
3
|
+
$kbd-font-family: "Roboto", sans-serif !default;
|
4
|
+
$kbd-border-radius: 4px !default;
|
5
|
+
$kbd-display: inline-flex !default;
|
6
|
+
$kbd-elevation: 1 !default;
|
7
|
+
// Kbd elements are used inline with text, so we should use the same font size as the text it's with.
|
8
|
+
$kbd-font-size: 0.875em !default;
|
6
9
|
$kbd-font-weight: normal !default;
|
7
|
-
$kbd-
|
8
|
-
|
10
|
+
$kbd-line-height: 1 !default;
|
11
|
+
$kbd-padding: 3px 6px !default;;
|
12
|
+
$kbd-min-height: 1em !default;
|
13
|
+
$kbd-min-width: 20px !default;
|
14
|
+
$kbd-margin-inline: 1px !default;
|
9
15
|
$kbd-border-color: rgba(var(--v-border-color), var(--v-border-opacity)) !default;
|
10
16
|
$kbd-border-style: solid !default;
|
11
17
|
$kbd-border-width: thin !default;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["VKbd"],"sources":["../../../src/components/VKbd/index.ts"],"sourcesContent":["// Styles\nimport './VKbd.
|
1
|
+
{"version":3,"file":"index.js","names":["VKbd"],"sources":["../../../src/components/VKbd/index.ts"],"sourcesContent":["// Styles\nimport './VKbd.scss'\n\nexport { VKbd } from './VKbd'\n"],"mappings":"AAAA;AACA;AAAoB,SAEXA,IAAI","ignoreList":[]}
|
@@ -28,6 +28,7 @@ export declare const makeVTreeviewChildrenProps: <Defaults extends {
|
|
28
28
|
falseIcon?: unknown;
|
29
29
|
trueIcon?: unknown;
|
30
30
|
returnObject?: unknown;
|
31
|
+
activatable?: unknown;
|
31
32
|
selectable?: unknown;
|
32
33
|
selectedColor?: unknown;
|
33
34
|
selectStrategy?: unknown;
|
@@ -100,6 +101,10 @@ export declare const makeVTreeviewChildrenProps: <Defaults extends {
|
|
100
101
|
type: PropType<unknown extends Defaults["returnObject"] ? boolean : boolean | Defaults["returnObject"]>;
|
101
102
|
default: unknown extends Defaults["returnObject"] ? boolean : boolean | Defaults["returnObject"];
|
102
103
|
};
|
104
|
+
activatable: unknown extends Defaults["activatable"] ? BooleanConstructor : {
|
105
|
+
type: PropType<unknown extends Defaults["activatable"] ? boolean : boolean | Defaults["activatable"]>;
|
106
|
+
default: unknown extends Defaults["activatable"] ? boolean : boolean | Defaults["activatable"];
|
107
|
+
};
|
103
108
|
selectable: unknown extends Defaults["selectable"] ? BooleanConstructor : {
|
104
109
|
type: PropType<unknown extends Defaults["selectable"] ? boolean : boolean | Defaults["selectable"]>;
|
105
110
|
default: unknown extends Defaults["selectable"] ? boolean : boolean | Defaults["selectable"];
|
@@ -134,6 +139,7 @@ export declare const VTreeviewChildren: {
|
|
134
139
|
returnObject: boolean;
|
135
140
|
density: import("../../composables/density.js").Density;
|
136
141
|
indeterminateIcon: IconValue;
|
142
|
+
activatable: boolean;
|
137
143
|
selectable: boolean;
|
138
144
|
loadingIcon: string;
|
139
145
|
} & {
|
@@ -153,6 +159,7 @@ export declare const VTreeviewChildren: {
|
|
153
159
|
density: import("../../composables/density.js").Density;
|
154
160
|
openOnClick: boolean;
|
155
161
|
indeterminateIcon: IconValue;
|
162
|
+
activatable: boolean;
|
156
163
|
selectable: boolean;
|
157
164
|
loadingIcon: string;
|
158
165
|
}, true, {}, import("vue").SlotsType<Partial<{
|
@@ -191,6 +198,7 @@ export declare const VTreeviewChildren: {
|
|
191
198
|
returnObject: boolean;
|
192
199
|
density: import("../../composables/density.js").Density;
|
193
200
|
indeterminateIcon: IconValue;
|
201
|
+
activatable: boolean;
|
194
202
|
selectable: boolean;
|
195
203
|
loadingIcon: string;
|
196
204
|
} & {
|
@@ -210,6 +218,7 @@ export declare const VTreeviewChildren: {
|
|
210
218
|
density: import("../../composables/density.js").Density;
|
211
219
|
openOnClick: boolean;
|
212
220
|
indeterminateIcon: IconValue;
|
221
|
+
activatable: boolean;
|
213
222
|
selectable: boolean;
|
214
223
|
loadingIcon: string;
|
215
224
|
}>;
|
@@ -222,6 +231,7 @@ export declare const VTreeviewChildren: {
|
|
222
231
|
returnObject: boolean;
|
223
232
|
density: import("../../composables/density.js").Density;
|
224
233
|
indeterminateIcon: IconValue;
|
234
|
+
activatable: boolean;
|
225
235
|
selectable: boolean;
|
226
236
|
loadingIcon: string;
|
227
237
|
} & {
|
@@ -241,6 +251,7 @@ export declare const VTreeviewChildren: {
|
|
241
251
|
density: import("../../composables/density.js").Density;
|
242
252
|
openOnClick: boolean;
|
243
253
|
indeterminateIcon: IconValue;
|
254
|
+
activatable: boolean;
|
244
255
|
selectable: boolean;
|
245
256
|
loadingIcon: string;
|
246
257
|
}, {}, string, import("vue").SlotsType<Partial<{
|
@@ -292,6 +303,7 @@ export declare const VTreeviewChildren: {
|
|
292
303
|
falseIcon: PropType<IconValue>;
|
293
304
|
trueIcon: PropType<IconValue>;
|
294
305
|
returnObject: BooleanConstructor;
|
306
|
+
activatable: BooleanConstructor;
|
295
307
|
selectable: BooleanConstructor;
|
296
308
|
selectedColor: StringConstructor;
|
297
309
|
selectStrategy: PropType<SelectStrategyProp>;
|
@@ -324,6 +336,7 @@ export declare const VTreeviewChildren: {
|
|
324
336
|
falseIcon: PropType<IconValue>;
|
325
337
|
trueIcon: PropType<IconValue>;
|
326
338
|
returnObject: BooleanConstructor;
|
339
|
+
activatable: BooleanConstructor;
|
327
340
|
selectable: BooleanConstructor;
|
328
341
|
selectedColor: StringConstructor;
|
329
342
|
selectStrategy: PropType<SelectStrategyProp>;
|
@@ -26,6 +26,7 @@ export const makeVTreeviewChildrenProps = propsFactory({
|
|
26
26
|
falseIcon: IconValue,
|
27
27
|
trueIcon: IconValue,
|
28
28
|
returnObject: Boolean,
|
29
|
+
activatable: Boolean,
|
29
30
|
selectable: Boolean,
|
30
31
|
selectedColor: String,
|
31
32
|
selectStrategy: [String, Function, Object],
|
@@ -45,7 +46,7 @@ export const VTreeviewChildren = genericComponent()({
|
|
45
46
|
} = _ref;
|
46
47
|
const isLoading = reactive(new Set());
|
47
48
|
const activatorItems = ref([]);
|
48
|
-
const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable));
|
49
|
+
const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable && !props.activatable));
|
49
50
|
async function checkChildren(item) {
|
50
51
|
try {
|
51
52
|
if (!props.items?.length || !props.loadChildren) return;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VTreeviewChildren.js","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","makeDensityProps","IconValue","computed","reactive","ref","toRaw","genericComponent","propsFactory","makeVTreeviewChildrenProps","disabled","Boolean","loadChildren","Function","loadingIcon","type","String","default","items","Array","openOnClick","undefined","indeterminateIcon","falseIcon","trueIcon","returnObject","selectable","selectedColor","selectStrategy","Object","index","Number","path","VTreeviewChildren","name","props","setup","_ref","slots","isLoading","Set","activatorItems","isClickOnOpen","checkChildren","item","length","children","add","value","raw","delete","selectItem","select","isSelected","map","itemProps","loading","has","treeItemProps","depth","isFirst","isLast","slotsWithItem","prepend","slotProps","_createElementVNode","_Fragment","includes","_createVNode","density","isIndeterminate","v","e","stopPropagation","key","internalItem","append","title","subtitle","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref2","activatorProps","listItemProps","onToggleExpand","onClick","el"],"sources":["../../../src/components/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, reactive, ref, toRaw } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & {\n item: T\n internalItem: InternalListItem<T>\n }\n} & {\n default: never\n item: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n disabled: Boolean,\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n falseIcon: IconValue,\n trueIcon: IconValue,\n returnObject: Boolean,\n selectable: Boolean,\n selectedColor: String,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n index: Number,\n path: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n ...makeDensityProps(),\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { slots }) {\n const isLoading = reactive(new Set<unknown>())\n const activatorItems = ref<VTreeviewItem[]>([])\n\n const isClickOnOpen = computed(() => (\n !props.disabled && (\n props.openOnClick != null\n ? props.openOnClick\n : props.selectable\n )))\n\n async function checkChildren (item: InternalListItem) {\n try {\n if (!props.items?.length || !props.loadChildren) return\n\n if (item?.children?.length === 0) {\n isLoading.add(item.value)\n await props.loadChildren(item.raw)\n }\n } finally {\n isLoading.delete(item.value)\n }\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map((item, index) => {\n const { children, props: itemProps } = item\n const loading = isLoading.has(item.value)\n\n const treeItemProps = {\n index,\n depth: props.path?.length ?? 0,\n isFirst: index === 0,\n isLast: props.items ? props.items.length - 1 === index : false,\n path: [...props.path, index],\n }\n\n const slotsWithItem = {\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <div>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n disabled={ props.disabled }\n loading={ loading }\n color={ props.selectedColor }\n density={ props.density }\n indeterminate={ slotProps.isIndeterminate }\n indeterminateIcon={ props.indeterminateIcon }\n falseIcon={ props.falseIcon }\n trueIcon={ props.trueIcon }\n onUpdate:modelValue={ v => selectItem(slotProps.select, v) }\n onClick={ (e: PointerEvent) => e.stopPropagation() }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </div>\n )}\n\n { slots.prepend?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item }) }\n </>\n ),\n append: slots.append\n ? slotProps => slots.append?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item })\n : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n subtitle: slots.subtitle ? slotProps => slots.subtitle?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps({ ...props, ...treeItemProps })\n\n return children ? (\n <VTreeviewGroup\n { ...treeviewGroupProps }\n value={ props.returnObject ? item.raw : treeviewGroupProps?.value }\n rawId={ treeviewGroupProps?.value }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n onToggleExpand: [() => checkChildren(item), activatorProps.onClick] as any,\n onClick: isClickOnOpen.value\n ? [() => checkChildren(item), activatorProps.onClick] as any\n : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected),\n }\n\n return (\n <VTreeviewItem\n ref={ el => activatorItems.value[index] = el as VTreeviewItem }\n { ...listItemProps }\n value={ props.returnObject ? item.raw : itemProps.value }\n loading={ loading }\n v-slots={ slotsWithItem }\n />\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps, item: item.raw, internalItem: item }) ?? (\n <VTreeviewItem\n { ...itemProps }\n value={ props.returnObject ? toRaw(item.raw) : itemProps.value }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VTreeviewChildren.js","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","makeDensityProps","IconValue","computed","reactive","ref","toRaw","genericComponent","propsFactory","makeVTreeviewChildrenProps","disabled","Boolean","loadChildren","Function","loadingIcon","type","String","default","items","Array","openOnClick","undefined","indeterminateIcon","falseIcon","trueIcon","returnObject","activatable","selectable","selectedColor","selectStrategy","Object","index","Number","path","VTreeviewChildren","name","props","setup","_ref","slots","isLoading","Set","activatorItems","isClickOnOpen","checkChildren","item","length","children","add","value","raw","delete","selectItem","select","isSelected","map","itemProps","loading","has","treeItemProps","depth","isFirst","isLast","slotsWithItem","prepend","slotProps","_createElementVNode","_Fragment","includes","_createVNode","density","isIndeterminate","v","e","stopPropagation","key","internalItem","append","title","subtitle","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref2","activatorProps","listItemProps","onToggleExpand","onClick","el"],"sources":["../../../src/components/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, reactive, ref, toRaw } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & {\n item: T\n internalItem: InternalListItem<T>\n }\n} & {\n default: never\n item: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n disabled: Boolean,\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n falseIcon: IconValue,\n trueIcon: IconValue,\n returnObject: Boolean,\n activatable: Boolean,\n selectable: Boolean,\n selectedColor: String,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n index: Number,\n path: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n ...makeDensityProps(),\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { slots }) {\n const isLoading = reactive(new Set<unknown>())\n const activatorItems = ref<VTreeviewItem[]>([])\n\n const isClickOnOpen = computed(() => (\n !props.disabled && (\n props.openOnClick != null\n ? props.openOnClick\n : props.selectable && !props.activatable\n )))\n\n async function checkChildren (item: InternalListItem) {\n try {\n if (!props.items?.length || !props.loadChildren) return\n\n if (item?.children?.length === 0) {\n isLoading.add(item.value)\n await props.loadChildren(item.raw)\n }\n } finally {\n isLoading.delete(item.value)\n }\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map((item, index) => {\n const { children, props: itemProps } = item\n const loading = isLoading.has(item.value)\n\n const treeItemProps = {\n index,\n depth: props.path?.length ?? 0,\n isFirst: index === 0,\n isLast: props.items ? props.items.length - 1 === index : false,\n path: [...props.path, index],\n }\n\n const slotsWithItem = {\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <div>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n disabled={ props.disabled }\n loading={ loading }\n color={ props.selectedColor }\n density={ props.density }\n indeterminate={ slotProps.isIndeterminate }\n indeterminateIcon={ props.indeterminateIcon }\n falseIcon={ props.falseIcon }\n trueIcon={ props.trueIcon }\n onUpdate:modelValue={ v => selectItem(slotProps.select, v) }\n onClick={ (e: PointerEvent) => e.stopPropagation() }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </div>\n )}\n\n { slots.prepend?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item }) }\n </>\n ),\n append: slots.append\n ? slotProps => slots.append?.({ ...slotProps, ...treeItemProps, item: item.raw, internalItem: item })\n : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n subtitle: slots.subtitle ? slotProps => slots.subtitle?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps({ ...props, ...treeItemProps })\n\n return children ? (\n <VTreeviewGroup\n { ...treeviewGroupProps }\n value={ props.returnObject ? item.raw : treeviewGroupProps?.value }\n rawId={ treeviewGroupProps?.value }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n onToggleExpand: [() => checkChildren(item), activatorProps.onClick] as any,\n onClick: isClickOnOpen.value\n ? [() => checkChildren(item), activatorProps.onClick] as any\n : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected),\n }\n\n return (\n <VTreeviewItem\n ref={ el => activatorItems.value[index] = el as VTreeviewItem }\n { ...listItemProps }\n value={ props.returnObject ? item.raw : itemProps.value }\n loading={ loading }\n v-slots={ slotsWithItem }\n />\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps, item: item.raw, internalItem: item }) ?? (\n <VTreeviewItem\n { ...itemProps }\n value={ props.returnObject ? toRaw(item.raw) : itemProps.value }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
@@ -10,7 +10,7 @@ import { VProgressCircular } from "../VProgressCircular/index.js"; // Composable
|
|
10
10
|
import { forwardRefs } from "../../composables/forwardRefs.js";
|
11
11
|
import { IconValue } from "../../composables/icons.js"; // Utilities
|
12
12
|
import { computed, inject, ref, toRaw } from 'vue';
|
13
|
-
import { genericComponent,
|
13
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
14
14
|
import { VTreeviewSymbol } from "./shared.js";
|
15
15
|
export const makeVTreeviewItemProps = propsFactory({
|
16
16
|
loading: Boolean,
|
@@ -49,7 +49,7 @@ export const VTreeviewItem = genericComponent()({
|
|
49
49
|
emit('toggleExpand', e);
|
50
50
|
}
|
51
51
|
useRender(() => {
|
52
|
-
const listItemProps =
|
52
|
+
const listItemProps = VListItem.filterProps(props);
|
53
53
|
const hasPrepend = slots.prepend || props.toggleIcon;
|
54
54
|
return _createVNode(VListItem, _mergeProps({
|
55
55
|
"ref": vListItemRef
|
@@ -60,7 +60,7 @@ export const VTreeviewItem = genericComponent()({
|
|
60
60
|
'v-treeview-item--filtered': isFiltered.value
|
61
61
|
}, props.class],
|
62
62
|
"ripple": false,
|
63
|
-
"onClick":
|
63
|
+
"onClick": activateGroupActivator
|
64
64
|
}), {
|
65
65
|
...slots,
|
66
66
|
prepend: hasPrepend ? slotProps => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VTreeviewItem.js","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","forwardRefs","IconValue","computed","inject","ref","toRaw","genericComponent","
|
1
|
+
{"version":3,"file":"VTreeviewItem.js","names":["VBtn","VListItemAction","makeVListItemProps","VListItem","VProgressCircular","forwardRefs","IconValue","computed","inject","ref","toRaw","genericComponent","propsFactory","useRender","VTreeviewSymbol","makeVTreeviewItemProps","loading","Boolean","toggleIcon","slim","VTreeviewItem","name","props","emits","toggleExpand","value","setup","_ref","slots","emit","visibleIds","vListItemRef","isActivatableGroupActivator","root","activatable","isGroupActivator","vListItemRefIsClickable","link","isClickable","list","disabled","isFiltered","has","id","activateGroupActivator","e","activate","isActivated","onClickAction","preventDefault","stopPropagation","listItemProps","filterProps","hasPrepend","prepend","_createVNode","_mergeProps","class","slotProps","_createElementVNode","_Fragment","default","loader","undefined"],"sources":["../../../src/components/VTreeview/VTreeviewItem.tsx"],"sourcesContent":["// Styles\nimport './VTreeviewItem.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VListItemAction } from '@/components/VList'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, inject, ref, toRaw } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport { VTreeviewSymbol } from './shared'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport const makeVTreeviewItemProps = propsFactory({\n loading: Boolean,\n toggleIcon: IconValue,\n\n ...makeVListItemProps({ slim: true }),\n}, 'VTreeviewItem')\n\nexport const VTreeviewItem = genericComponent<VListItemSlots>()({\n name: 'VTreeviewItem',\n\n props: makeVTreeviewItemProps(),\n\n emits: {\n toggleExpand: (value: PointerEvent) => true,\n },\n\n setup (props, { slots, emit }) {\n const visibleIds = inject(VTreeviewSymbol, { visibleIds: ref() }).visibleIds\n\n const vListItemRef = ref<VListItem>()\n\n const isActivatableGroupActivator = computed(() =>\n (vListItemRef.value?.root.activatable.value) &&\n vListItemRef.value?.isGroupActivator\n )\n const vListItemRefIsClickable = computed(() => (\n vListItemRef.value?.link.isClickable.value ||\n (props.value != null && !!vListItemRef.value?.list)\n ))\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || vListItemRefIsClickable.value || isActivatableGroupActivator.value)\n )\n const isFiltered = computed(() => visibleIds.value && !visibleIds.value.has(toRaw(vListItemRef.value?.id)))\n\n function activateGroupActivator (e: MouseEvent | KeyboardEvent) {\n if (isClickable.value && isActivatableGroupActivator.value) {\n vListItemRef.value?.activate(!vListItemRef.value?.isActivated, e)\n }\n }\n\n function onClickAction (e: PointerEvent) {\n e.preventDefault()\n e.stopPropagation()\n emit('toggleExpand', e)\n }\n\n useRender(() => {\n const listItemProps = VListItem.filterProps(props)\n const hasPrepend = slots.prepend || props.toggleIcon\n\n return (\n <VListItem\n ref={ vListItemRef }\n { ...listItemProps }\n active={ vListItemRef.value?.isActivated }\n class={[\n 'v-treeview-item',\n {\n 'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,\n 'v-treeview-item--filtered': isFiltered.value,\n },\n props.class,\n ]}\n ripple={ false }\n onClick={ activateGroupActivator }\n >\n {{\n ...slots,\n prepend: hasPrepend ? slotProps => {\n return (\n <>\n <VListItemAction start>\n { props.toggleIcon ? (\n <VBtn\n density=\"compact\"\n icon={ props.toggleIcon }\n loading={ props.loading }\n variant=\"text\"\n onClick={ onClickAction }\n >\n {{\n loader: () => (\n <VProgressCircular\n indeterminate=\"disable-shrink\"\n size=\"20\"\n width=\"2\"\n />\n ),\n }}\n </VBtn>\n ) : (\n <div class=\"v-treeview-item__level\" />\n )}\n </VListItemAction>\n\n { slots.prepend?.(slotProps) }\n </>\n )\n } : undefined,\n }}\n </VListItem>\n )\n })\n\n return forwardRefs({}, vListItemRef)\n },\n})\n\nexport type VTreeviewItem = InstanceType<typeof VTreeviewItem>\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
export declare const MODIFIERS: string[];
|
2
|
+
/**
|
3
|
+
* Splits a single combination string into individual key parts.
|
4
|
+
*
|
5
|
+
* A combination is a set of keys that must be pressed simultaneously.
|
6
|
+
* e.g. `ctrl+k`, `shift--`
|
7
|
+
*/
|
8
|
+
export declare function splitKeyCombination(combination: string, isInternal?: boolean): string[];
|
9
|
+
/**
|
10
|
+
* Splits a hotkey string into its constituent combination groups.
|
11
|
+
*
|
12
|
+
* A sequence is a series of combinations that must be pressed in order.
|
13
|
+
* e.g. `a-b`, `ctrl+k-p`
|
14
|
+
*/
|
15
|
+
export declare function splitKeySequence(str: string): string[];
|
@@ -0,0 +1,154 @@
|
|
1
|
+
// Utilities
|
2
|
+
import { normalizeKey } from "./key-aliases.js";
|
3
|
+
import { consoleWarn } from "../../util/console.js"; // Types
|
4
|
+
export const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd'];
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Splits a single combination string into individual key parts.
|
8
|
+
*
|
9
|
+
* A combination is a set of keys that must be pressed simultaneously.
|
10
|
+
* e.g. `ctrl+k`, `shift--`
|
11
|
+
*/
|
12
|
+
export function splitKeyCombination(combination) {
|
13
|
+
let isInternal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
14
|
+
if (!combination) {
|
15
|
+
if (!isInternal) consoleWarn('Invalid hotkey combination: empty string provided');
|
16
|
+
return [];
|
17
|
+
}
|
18
|
+
|
19
|
+
// --- VALIDATION ---
|
20
|
+
const startsWithPlusOrUnderscore = combination.startsWith('+') || combination.startsWith('_');
|
21
|
+
const hasInvalidLeadingSeparator =
|
22
|
+
// Starts with a single '+' or '_' followed by a non-separator character (e.g. '+a', '_a')
|
23
|
+
startsWithPlusOrUnderscore && !(combination.startsWith('++') || combination.startsWith('__'));
|
24
|
+
const hasInvalidStructure =
|
25
|
+
// Invalid leading separator patterns
|
26
|
+
combination.length > 1 && hasInvalidLeadingSeparator ||
|
27
|
+
// Disallow literal + or _ keys (they require shift)
|
28
|
+
combination.includes('++') || combination.includes('__') || combination === '+' || combination === '_' ||
|
29
|
+
// Ends with a separator that is not part of a doubled literal
|
30
|
+
combination.length > 1 && (combination.endsWith('+') || combination.endsWith('_')) && combination.at(-2) !== combination.at(-1) ||
|
31
|
+
// Stand-alone doubled separators (dangling)
|
32
|
+
combination === '++' || combination === '--' || combination === '__';
|
33
|
+
if (hasInvalidStructure) {
|
34
|
+
if (!isInternal) consoleWarn(`Invalid hotkey combination: "${combination}" has invalid structure`);
|
35
|
+
return [];
|
36
|
+
}
|
37
|
+
const keys = [];
|
38
|
+
let buffer = '';
|
39
|
+
const flushBuffer = () => {
|
40
|
+
if (buffer) {
|
41
|
+
keys.push(normalizeKey(buffer));
|
42
|
+
buffer = '';
|
43
|
+
}
|
44
|
+
};
|
45
|
+
for (let i = 0; i < combination.length; i++) {
|
46
|
+
const char = combination[i];
|
47
|
+
const nextChar = combination[i + 1];
|
48
|
+
if (char === '+' || char === '_' || char === '-') {
|
49
|
+
if (char === nextChar) {
|
50
|
+
flushBuffer();
|
51
|
+
keys.push(char);
|
52
|
+
i++;
|
53
|
+
} else if (char === '+' || char === '_') {
|
54
|
+
flushBuffer();
|
55
|
+
} else {
|
56
|
+
buffer += char;
|
57
|
+
}
|
58
|
+
} else {
|
59
|
+
buffer += char;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
flushBuffer();
|
63
|
+
|
64
|
+
// Within a combination, `-` is only valid as a literal key (e.g., `ctrl+-`).
|
65
|
+
// `-` cannot be part of a longer key name within a combination.
|
66
|
+
const hasInvalidMinus = keys.some(key => key.length > 1 && key.includes('-') && key !== '--');
|
67
|
+
if (hasInvalidMinus) {
|
68
|
+
if (!isInternal) consoleWarn(`Invalid hotkey combination: "${combination}" has invalid structure`);
|
69
|
+
return [];
|
70
|
+
}
|
71
|
+
if (keys.length === 0 && combination) {
|
72
|
+
return [normalizeKey(combination)];
|
73
|
+
}
|
74
|
+
return keys;
|
75
|
+
}
|
76
|
+
|
77
|
+
/**
|
78
|
+
* Splits a hotkey string into its constituent combination groups.
|
79
|
+
*
|
80
|
+
* A sequence is a series of combinations that must be pressed in order.
|
81
|
+
* e.g. `a-b`, `ctrl+k-p`
|
82
|
+
*/
|
83
|
+
export function splitKeySequence(str) {
|
84
|
+
if (!str) {
|
85
|
+
consoleWarn('Invalid hotkey sequence: empty string provided');
|
86
|
+
return [];
|
87
|
+
}
|
88
|
+
|
89
|
+
// A sequence is invalid if it starts or ends with a separator,
|
90
|
+
// unless it is part of a combination (e.g., `shift+-`).
|
91
|
+
const hasInvalidStart = str.startsWith('-') && !['---', '--+'].includes(str);
|
92
|
+
const hasInvalidEnd = str.endsWith('-') && !str.endsWith('+-') && !str.endsWith('_-') && str !== '-' && str !== '---';
|
93
|
+
if (hasInvalidStart || hasInvalidEnd) {
|
94
|
+
consoleWarn(`Invalid hotkey sequence: "${str}" contains invalid combinations`);
|
95
|
+
return [];
|
96
|
+
}
|
97
|
+
const result = [];
|
98
|
+
let buffer = '';
|
99
|
+
let i = 0;
|
100
|
+
while (i < str.length) {
|
101
|
+
const char = str[i];
|
102
|
+
if (char === '-') {
|
103
|
+
// Determine if this hyphen is part of the current combination
|
104
|
+
const prevChar = str[i - 1];
|
105
|
+
const prevPrevChar = i > 1 ? str[i - 2] : undefined;
|
106
|
+
const precededBySinglePlusOrUnderscore = (prevChar === '+' || prevChar === '_') && prevPrevChar !== '+';
|
107
|
+
if (precededBySinglePlusOrUnderscore) {
|
108
|
+
// Treat as part of the combination (e.g., 'ctrl+-')
|
109
|
+
buffer += char;
|
110
|
+
i++;
|
111
|
+
} else {
|
112
|
+
// Treat as sequence separator
|
113
|
+
if (buffer) {
|
114
|
+
result.push(buffer);
|
115
|
+
buffer = '';
|
116
|
+
} else {
|
117
|
+
// Empty buffer means we have a literal '-' key
|
118
|
+
result.push('-');
|
119
|
+
}
|
120
|
+
i++;
|
121
|
+
}
|
122
|
+
} else {
|
123
|
+
buffer += char;
|
124
|
+
i++;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
// Add final buffer if it exists
|
129
|
+
if (buffer) {
|
130
|
+
result.push(buffer);
|
131
|
+
}
|
132
|
+
|
133
|
+
// Collapse runs of '-' so that every second '-' is removed
|
134
|
+
const collapsed = [];
|
135
|
+
let minusCount = 0;
|
136
|
+
for (const part of result) {
|
137
|
+
if (part === '-') {
|
138
|
+
if (minusCount % 2 === 0) collapsed.push('-');
|
139
|
+
minusCount++;
|
140
|
+
} else {
|
141
|
+
minusCount = 0;
|
142
|
+
collapsed.push(part);
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
// Validate that each part of the sequence is a valid combination
|
147
|
+
const areAllValid = collapsed.every(s => splitKeyCombination(s, true).length > 0);
|
148
|
+
if (!areAllValid) {
|
149
|
+
consoleWarn(`Invalid hotkey sequence: "${str}" contains invalid combinations`);
|
150
|
+
return [];
|
151
|
+
}
|
152
|
+
return collapsed;
|
153
|
+
}
|
154
|
+
//# sourceMappingURL=hotkey-parsing.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"hotkey-parsing.js","names":["normalizeKey","consoleWarn","MODIFIERS","splitKeyCombination","combination","isInternal","arguments","length","undefined","startsWithPlusOrUnderscore","startsWith","hasInvalidLeadingSeparator","hasInvalidStructure","includes","endsWith","at","keys","buffer","flushBuffer","push","i","char","nextChar","hasInvalidMinus","some","key","splitKeySequence","str","hasInvalidStart","hasInvalidEnd","result","prevChar","prevPrevChar","precededBySinglePlusOrUnderscore","collapsed","minusCount","part","areAllValid","every","s"],"sources":["../../../src/composables/hotkey/hotkey-parsing.ts"],"sourcesContent":["// Utilities\nimport { normalizeKey } from './key-aliases'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nexport const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd']\n\n/**\n * Splits a single combination string into individual key parts.\n *\n * A combination is a set of keys that must be pressed simultaneously.\n * e.g. `ctrl+k`, `shift--`\n */\nexport function splitKeyCombination (combination: string, isInternal = false): string[] {\n if (!combination) {\n if (!isInternal) consoleWarn('Invalid hotkey combination: empty string provided')\n return []\n }\n\n // --- VALIDATION ---\n const startsWithPlusOrUnderscore = combination.startsWith('+') || combination.startsWith('_')\n\n const hasInvalidLeadingSeparator = (\n // Starts with a single '+' or '_' followed by a non-separator character (e.g. '+a', '_a')\n startsWithPlusOrUnderscore &&\n !(combination.startsWith('++') || combination.startsWith('__'))\n )\n\n const hasInvalidStructure = (\n // Invalid leading separator patterns\n (combination.length > 1 && hasInvalidLeadingSeparator) ||\n // Disallow literal + or _ keys (they require shift)\n combination.includes('++') || combination.includes('__') ||\n combination === '+' || combination === '_' ||\n // Ends with a separator that is not part of a doubled literal\n (combination.length > 1 && (combination.endsWith('+') || combination.endsWith('_')) && combination.at(-2) !== combination.at(-1)) ||\n // Stand-alone doubled separators (dangling)\n combination === '++' || combination === '--' || combination === '__'\n )\n\n if (hasInvalidStructure) {\n if (!isInternal) consoleWarn(`Invalid hotkey combination: \"${combination}\" has invalid structure`)\n return []\n }\n\n const keys: string[] = []\n let buffer = ''\n\n const flushBuffer = () => {\n if (buffer) {\n keys.push(normalizeKey(buffer))\n buffer = ''\n }\n }\n\n for (let i = 0; i < combination.length; i++) {\n const char = combination[i]\n const nextChar = combination[i + 1]\n\n if (char === '+' || char === '_' || char === '-') {\n if (char === nextChar) {\n flushBuffer()\n keys.push(char)\n i++\n } else if (char === '+' || char === '_') {\n flushBuffer()\n } else {\n buffer += char\n }\n } else {\n buffer += char\n }\n }\n flushBuffer()\n\n // Within a combination, `-` is only valid as a literal key (e.g., `ctrl+-`).\n // `-` cannot be part of a longer key name within a combination.\n const hasInvalidMinus = keys.some(key => key.length > 1 && key.includes('-') && key !== '--')\n if (hasInvalidMinus) {\n if (!isInternal) consoleWarn(`Invalid hotkey combination: \"${combination}\" has invalid structure`)\n return []\n }\n\n if (keys.length === 0 && combination) {\n return [normalizeKey(combination)]\n }\n\n return keys\n}\n\n/**\n * Splits a hotkey string into its constituent combination groups.\n *\n * A sequence is a series of combinations that must be pressed in order.\n * e.g. `a-b`, `ctrl+k-p`\n */\nexport function splitKeySequence (str: string): string[] {\n if (!str) {\n consoleWarn('Invalid hotkey sequence: empty string provided')\n return []\n }\n\n // A sequence is invalid if it starts or ends with a separator,\n // unless it is part of a combination (e.g., `shift+-`).\n const hasInvalidStart = str.startsWith('-') && !['---', '--+'].includes(str)\n const hasInvalidEnd = str.endsWith('-') && !str.endsWith('+-') && !str.endsWith('_-') && str !== '-' && str !== '---'\n\n if (hasInvalidStart || hasInvalidEnd) {\n consoleWarn(`Invalid hotkey sequence: \"${str}\" contains invalid combinations`)\n return []\n }\n\n const result: string[] = []\n let buffer = ''\n let i = 0\n\n while (i < str.length) {\n const char = str[i]\n\n if (char === '-') {\n // Determine if this hyphen is part of the current combination\n const prevChar = str[i - 1]\n const prevPrevChar = i > 1 ? str[i - 2] : undefined\n\n const precededBySinglePlusOrUnderscore = (\n (prevChar === '+' || prevChar === '_') && prevPrevChar !== '+'\n )\n\n if (precededBySinglePlusOrUnderscore) {\n // Treat as part of the combination (e.g., 'ctrl+-')\n buffer += char\n i++\n } else {\n // Treat as sequence separator\n if (buffer) {\n result.push(buffer)\n buffer = ''\n } else {\n // Empty buffer means we have a literal '-' key\n result.push('-')\n }\n i++\n }\n } else {\n buffer += char\n i++\n }\n }\n\n // Add final buffer if it exists\n if (buffer) {\n result.push(buffer)\n }\n\n // Collapse runs of '-' so that every second '-' is removed\n const collapsed: string[] = []\n let minusCount = 0\n for (const part of result) {\n if (part === '-') {\n if (minusCount % 2 === 0) collapsed.push('-')\n minusCount++\n } else {\n minusCount = 0\n collapsed.push(part)\n }\n }\n\n // Validate that each part of the sequence is a valid combination\n const areAllValid = collapsed.every(s => splitKeyCombination(s, true).length > 0)\n\n if (!areAllValid) {\n consoleWarn(`Invalid hotkey sequence: \"${str}\" contains invalid combinations`)\n return []\n }\n\n return collapsed\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import type { MaybeRef } from "../../util/index.js";
|
2
|
+
interface HotkeyOptions {
|
3
|
+
event?: MaybeRef<'keydown' | 'keyup'>;
|
4
|
+
inputs?: MaybeRef<boolean>;
|
5
|
+
preventDefault?: MaybeRef<boolean>;
|
6
|
+
sequenceTimeout?: MaybeRef<number>;
|
7
|
+
}
|
8
|
+
export declare function useHotkey(keys: MaybeRef<string | undefined>, callback: (e: KeyboardEvent) => void, options?: HotkeyOptions): () => void;
|
9
|
+
|