@codemonster-ru/vueforge 0.42.0 → 0.44.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/README.md +119 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.ts.mjs +2589 -2203
- package/dist/index.ts.umd.js +3 -3
- package/dist/package/components/__tests__/command-palette.test.d.ts +1 -0
- package/dist/package/components/__tests__/virtual-scroller.test.d.ts +1 -0
- package/dist/package/components/command-palette.vue.d.ts +56 -0
- package/dist/package/components/virtual-scroller.vue.d.ts +56 -0
- package/dist/package/config/theme-core.d.ts +58 -0
- package/dist/package/themes/default/components/command-palette.d.ts +45 -0
- package/dist/package/themes/default/components/virtual-scroller.d.ts +13 -0
- package/dist/package/themes/default/index.d.ts +56 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -54,11 +54,13 @@ import {
|
|
|
54
54
|
Rating,
|
|
55
55
|
Tree,
|
|
56
56
|
TreeSelect,
|
|
57
|
+
VirtualScroller,
|
|
57
58
|
Drawer,
|
|
58
59
|
ConfirmDialog,
|
|
59
60
|
Dropdown,
|
|
60
61
|
SplitButton,
|
|
61
62
|
ContextMenu,
|
|
63
|
+
CommandPalette,
|
|
62
64
|
} from '@codemonster-ru/vueforge';
|
|
63
65
|
import '@codemonster-ru/vueforge/dist/index.css';
|
|
64
66
|
|
|
@@ -100,6 +102,11 @@ app.use(VueForge, {
|
|
|
100
102
|
<Rating v-model="rating" allow-half />
|
|
101
103
|
<Tree v-model="selectedNode" v-model:expandedKeys="expandedKeys" :items="treeItems" />
|
|
102
104
|
<TreeSelect v-model="selectedNode" v-model:expandedKeys="expandedKeys" :items="treeItems" placeholder="Select node" />
|
|
105
|
+
<VirtualScroller :items="largeItems" :item-height="40" height="320px">
|
|
106
|
+
<template #default="{ item, index }">
|
|
107
|
+
{{ index + 1 }}. {{ item.label }}
|
|
108
|
+
</template>
|
|
109
|
+
</VirtualScroller>
|
|
103
110
|
<Accordion v-model="faq">
|
|
104
111
|
<AccordionItem value="shipping" title="Shipping">
|
|
105
112
|
Shipping details
|
|
@@ -136,6 +143,13 @@ app.use(VueForge, {
|
|
|
136
143
|
<ContextMenu :items="menuItems">
|
|
137
144
|
<div>Right-click here</div>
|
|
138
145
|
</ContextMenu>
|
|
146
|
+
<CommandPalette
|
|
147
|
+
v-model="commandPaletteOpen"
|
|
148
|
+
:items="[
|
|
149
|
+
{ label: 'Open docs', value: 'docs', group: 'Navigation' },
|
|
150
|
+
{ label: 'Save as draft', value: 'draft', group: 'Actions' },
|
|
151
|
+
]"
|
|
152
|
+
/>
|
|
139
153
|
```
|
|
140
154
|
|
|
141
155
|
## Components
|
|
@@ -167,6 +181,7 @@ app.use(VueForge, {
|
|
|
167
181
|
- Dropdown
|
|
168
182
|
- SplitButton
|
|
169
183
|
- ContextMenu
|
|
184
|
+
- CommandPalette
|
|
170
185
|
- Popover
|
|
171
186
|
- Select
|
|
172
187
|
- Autocomplete
|
|
@@ -188,6 +203,7 @@ app.use(VueForge, {
|
|
|
188
203
|
- Rating
|
|
189
204
|
- Tree
|
|
190
205
|
- TreeSelect
|
|
206
|
+
- VirtualScroller
|
|
191
207
|
|
|
192
208
|
Input / Textarea (quick API):
|
|
193
209
|
|
|
@@ -1131,6 +1147,63 @@ Component tokens (override via `theme.overrides.components.contextMenu`):
|
|
|
1131
1147
|
- `panelBackgroundColor`, `panelShadow`, `zIndex`
|
|
1132
1148
|
- `disabledOpacity`, `itemPadding`
|
|
1133
1149
|
|
|
1150
|
+
## CommandPalette
|
|
1151
|
+
|
|
1152
|
+
Props:
|
|
1153
|
+
|
|
1154
|
+
- `modelValue?: boolean` (v-model)
|
|
1155
|
+
- `items?: Array<{ label: string; value?: string | number; description?: string; shortcut?: string; group?: string; disabled?: boolean; keywords?: Array<string>; command?: () => void }>`
|
|
1156
|
+
- `placeholder?: string` (default `Type a command or search...`)
|
|
1157
|
+
- `emptyText?: string` (default `No commands found`)
|
|
1158
|
+
- `ariaLabel?: string` (default `Command palette`)
|
|
1159
|
+
- `closeOnOverlay?: boolean` (default `true`)
|
|
1160
|
+
- `closeOnEsc?: boolean` (default `true`)
|
|
1161
|
+
- `closeOnSelect?: boolean` (default `true`)
|
|
1162
|
+
- `filter?: boolean` (default `true`)
|
|
1163
|
+
- `enableShortcut?: boolean` (default `true`)
|
|
1164
|
+
- `shortcutKey?: string` (default `k`)
|
|
1165
|
+
|
|
1166
|
+
Events:
|
|
1167
|
+
|
|
1168
|
+
- `update:modelValue`
|
|
1169
|
+
- `open`
|
|
1170
|
+
- `close`
|
|
1171
|
+
- `select`
|
|
1172
|
+
- `search`
|
|
1173
|
+
|
|
1174
|
+
Example:
|
|
1175
|
+
|
|
1176
|
+
```vue
|
|
1177
|
+
<CommandPalette
|
|
1178
|
+
v-model="open"
|
|
1179
|
+
:items="[
|
|
1180
|
+
{ label: 'Open docs', value: 'docs', group: 'Navigation' },
|
|
1181
|
+
{ label: 'Save and publish', value: 'publish', group: 'Actions', shortcut: 'Ctrl+Enter' },
|
|
1182
|
+
]"
|
|
1183
|
+
@select="onCommand"
|
|
1184
|
+
/>
|
|
1185
|
+
```
|
|
1186
|
+
|
|
1187
|
+
### CommandPalette tokens
|
|
1188
|
+
|
|
1189
|
+
Component tokens (override via `theme.overrides.components.commandPalette`):
|
|
1190
|
+
|
|
1191
|
+
- `width`, `maxWidth`, `maxHeight`
|
|
1192
|
+
- `padding`, `borderRadius`, `borderColor`
|
|
1193
|
+
- `backgroundColor`, `textColor`, `overlayBackgroundColor`
|
|
1194
|
+
- `shadow`, `zIndex`, `headerGap`
|
|
1195
|
+
- `inputPadding`, `inputBorderRadius`, `inputBorderColor`
|
|
1196
|
+
- `inputBackgroundColor`, `inputTextColor`, `inputPlaceholderColor`
|
|
1197
|
+
- `inputFocusBorderColor`, `inputFocusRingShadow`
|
|
1198
|
+
- `listGap`, `groupGap`
|
|
1199
|
+
- `groupLabelPadding`, `groupLabelColor`, `groupLabelFontSize`
|
|
1200
|
+
- `itemPadding`, `itemBorderRadius`, `itemGap`
|
|
1201
|
+
- `itemTextColor`, `itemDescriptionColor`, `itemDescriptionFontSize`
|
|
1202
|
+
- `itemActiveBackgroundColor`, `itemActiveTextColor`, `itemDisabledOpacity`
|
|
1203
|
+
- `shortcutPadding`, `shortcutBorderRadius`, `shortcutBorderColor`
|
|
1204
|
+
- `shortcutBackgroundColor`, `shortcutTextColor`, `shortcutFontSize`
|
|
1205
|
+
- `emptyPadding`, `emptyColor`
|
|
1206
|
+
|
|
1134
1207
|
## Tooltip
|
|
1135
1208
|
|
|
1136
1209
|
Props:
|
|
@@ -1543,6 +1616,51 @@ Component tokens (override via `theme.overrides.components.treeselect`):
|
|
|
1543
1616
|
- `small.fontSize`, `small.padding`
|
|
1544
1617
|
- `large.fontSize`, `large.padding`
|
|
1545
1618
|
|
|
1619
|
+
## VirtualScroller
|
|
1620
|
+
|
|
1621
|
+
Props:
|
|
1622
|
+
|
|
1623
|
+
- `items?: Array<unknown>` (default `[]`)
|
|
1624
|
+
- `itemHeight?: number` (default `36`)
|
|
1625
|
+
- `height?: string` (default `18rem`)
|
|
1626
|
+
- `overscan?: number` (default `4`)
|
|
1627
|
+
- `keyField?: string` (default `id`)
|
|
1628
|
+
- `virtual?: boolean` (default `true`)
|
|
1629
|
+
- `ariaLabel?: string` (default `Virtual list`)
|
|
1630
|
+
- `emptyText?: string` (default `No items`)
|
|
1631
|
+
|
|
1632
|
+
Events:
|
|
1633
|
+
|
|
1634
|
+
- `scroll`
|
|
1635
|
+
- `rangeChange` (payload: `{ start: number; end: number }`)
|
|
1636
|
+
- `reachEnd`
|
|
1637
|
+
|
|
1638
|
+
Slots:
|
|
1639
|
+
|
|
1640
|
+
- `default` - item content with slot props `{ item, index }`
|
|
1641
|
+
- `empty` - empty state content
|
|
1642
|
+
|
|
1643
|
+
Example:
|
|
1644
|
+
|
|
1645
|
+
```vue
|
|
1646
|
+
<VirtualScroller :items="users" :item-height="44" height="320px" :overscan="6" key-field="id">
|
|
1647
|
+
<template #default="{ item, index }">
|
|
1648
|
+
<div>{{ index + 1 }}. {{ item.name }}</div>
|
|
1649
|
+
</template>
|
|
1650
|
+
</VirtualScroller>
|
|
1651
|
+
```
|
|
1652
|
+
|
|
1653
|
+
### VirtualScroller tokens
|
|
1654
|
+
|
|
1655
|
+
Component tokens (override via `theme.overrides.components.virtualScroller`):
|
|
1656
|
+
|
|
1657
|
+
- `fontSize`
|
|
1658
|
+
- `borderColor`, `borderRadius`
|
|
1659
|
+
- `backgroundColor`, `textColor`
|
|
1660
|
+
- `focusRingShadow`
|
|
1661
|
+
- `itemPadding`, `itemBorderColor`
|
|
1662
|
+
- `emptyPadding`, `emptyColor`
|
|
1663
|
+
|
|
1546
1664
|
## Tokens
|
|
1547
1665
|
|
|
1548
1666
|
VueForge exposes design tokens as CSS variables generated from the theme preset. Core groups:
|
|
@@ -1557,7 +1675,7 @@ VueForge exposes design tokens as CSS variables generated from the theme preset.
|
|
|
1557
1675
|
Typed tokens:
|
|
1558
1676
|
|
|
1559
1677
|
- `ThemeTokens`/`ThemeOptions`/`ThemePreset` are exported for type-safe theming in TS.
|
|
1560
|
-
- `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/numberInput/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/select/autocomplete/multiselect/datepicker/daterangepicker/timepicker/pagination/switch/tooltip/skeleton/progress/badge/chip/avatar/datatable/slider/stepper/rating/tree/treeselect).
|
|
1678
|
+
- `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/numberInput/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/commandPalette/select/autocomplete/multiselect/datepicker/daterangepicker/timepicker/pagination/switch/tooltip/skeleton/progress/badge/chip/avatar/datatable/slider/stepper/rating/tree/treeselect/virtualScroller).
|
|
1561
1679
|
|
|
1562
1680
|
Default core values (from `DefaultTheme`):
|
|
1563
1681
|
|