@fastkit/vui 0.20.4 → 1.0.0-next.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.
@@ -1,3 +1,7 @@
1
+ @use 'sass:map' as _vui_af_display_flow_map;
2
+ @use 'sass:string' as _vui_af_display_flow_string;
3
+ @use 'sass:meta' as _vui_af_display_flow_meta;
4
+
1
5
  $props-map: (
2
6
  (
3
7
  prop: 'display',
@@ -296,16 +300,16 @@ $props-map: (
296
300
 
297
301
  @mixin display-flow($breakpoint-suffix: '') {
298
302
  @each $prop-info in $props-map {
299
- $prop: map-get($prop-info, prop);
300
- $values: map-get($prop-info, values);
303
+ $prop: _vui_af_display_flow_map.get($prop-info, prop);
304
+ $values: _vui_af_display_flow_map.get($prop-info, values);
301
305
 
302
306
  @each $value-info in $values {
303
- $selector: map-get($value-info, selector);
304
- $value: map-get($value-info, value);
307
+ $selector: _vui_af_display_flow_map.get($value-info, selector);
308
+ $value: _vui_af_display_flow_map.get($value-info, value);
305
309
 
306
310
  .#{$selector}#{$breakpoint-suffix} {
307
311
  /* stylelint-disable-next-line scss/function-unquote-no-unquoted-strings-inside */
308
- #{$prop}: unquote($value);
312
+ #{$prop}: _vui_af_display_flow_string.unquote($value);
309
313
  }
310
314
  }
311
315
  }
@@ -341,6 +345,9 @@ $props-map: (
341
345
 
342
346
  @include display-flow;
343
347
 
344
- @include mq-each {
345
- @include display-flow($breakpoint-suffix: '--' + $mq-each-target);
348
+ // mq-eachミックスインが定義されている場合のみ実行
349
+ @if _vui_af_display_flow_meta.mixin-exists(mq-each) {
350
+ @include mq-each {
351
+ @include display-flow($breakpoint-suffix: '--' + $mq-each-target);
352
+ }
346
353
  }
@@ -8,6 +8,8 @@
8
8
  // * .my-0 : margin-top: 0; margin-bottom: 0;
9
9
  // * .mt-1--xs: margin-top: 8px; (only xs media)
10
10
  // *************************
11
+ @use 'sass:map' as _vui_af_spacing_map;
12
+ @use 'sass:meta' as _vui_af_spacing_meta;
11
13
 
12
14
  $property-map: (
13
15
  (
@@ -72,14 +74,14 @@ $sides-map: (
72
74
 
73
75
  @mixin spacing($breakpoint-suffix: '') {
74
76
  @each $property-info in $property-map {
75
- $prop-selector: map-get($property-info, selector);
76
- $prop-name: map-get($property-info, prop);
77
- $has-negative: map-get($property-info, has-negative);
78
- $has-auto: map-get($property-info, has-auto);
77
+ $prop-selector: _vui_af_spacing_map.get($property-info, selector);
78
+ $prop-name: _vui_af_spacing_map.get($property-info, prop);
79
+ $has-negative: _vui_af_spacing_map.get($property-info, has-negative);
80
+ $has-auto: _vui_af_spacing_map.get($property-info, has-auto);
79
81
 
80
82
  @each $sides-info in $sides-map {
81
- $sides-selector: map-get($sides-info, selector);
82
- $sides-props: map-get($sides-info, props);
83
+ $sides-selector: _vui_af_spacing_map.get($sides-info, selector);
84
+ $sides-props: _vui_af_spacing_map.get($sides-info, props);
83
85
  $base-selector: '.' + #{$prop-selector}#{$sides-selector};
84
86
 
85
87
  @if $has-auto {
@@ -149,6 +151,9 @@ $sides-map: (
149
151
 
150
152
  @include spacing;
151
153
 
152
- @include mq-each {
153
- @include spacing($breakpoint-suffix: '--' + $mq-each-target);
154
+ // mq-eachミックスインが定義されている場合のみ実行
155
+ @if _vui_af_spacing_meta.mixin-exists(mq-each) {
156
+ @include mq-each {
157
+ @include spacing($breakpoint-suffix: '--' + $mq-each-target);
158
+ }
154
159
  }
@@ -1,3 +1,7 @@
1
+ @use 'sass:map' as _vui_af_text_map;
2
+ @use 'sass:string' as _vui_af_text_string;
3
+ @use 'sass:meta' as _vui_af_text_meta;
4
+
1
5
  $props-map: (
2
6
  (
3
7
  prop: 'text-align',
@@ -61,16 +65,16 @@ $props-map: (
61
65
  }
62
66
 
63
67
  @each $prop-info in $props-map {
64
- $prop: map-get($prop-info, prop);
65
- $values: map-get($prop-info, values);
68
+ $prop: _vui_af_text_map.get($prop-info, prop);
69
+ $values: _vui_af_text_map.get($prop-info, values);
66
70
 
67
71
  @each $value-info in $values {
68
- $selector: map-get($value-info, selector);
69
- $value: map-get($value-info, value);
72
+ $selector: _vui_af_text_map.get($value-info, selector);
73
+ $value: _vui_af_text_map.get($value-info, value);
70
74
 
71
75
  .#{$selector}#{$breakpoint-suffix} {
72
76
  /* stylelint-disable-next-line scss/function-unquote-no-unquoted-strings-inside */
73
- #{$prop}: unquote($value);
77
+ #{$prop}: _vui_af_text_string.unquote($value);
74
78
  }
75
79
  }
76
80
  }
@@ -86,6 +90,9 @@ $props-map: (
86
90
 
87
91
  @include text;
88
92
 
89
- @include mq-each {
90
- @include text($breakpoint-suffix: '--' + $mq-each-target);
93
+ // mq-eachミックスインが定義されている場合のみ実行
94
+ @if _vui_af_text_meta.mixin-exists(mq-each) {
95
+ @include mq-each {
96
+ @include text($breakpoint-suffix: '--' + $mq-each-target);
97
+ }
91
98
  }
@@ -1,3 +1,3 @@
1
- @import './after-effects/display-flow';
2
- @import './after-effects/text';
3
- @import './after-effects/spacing';
1
+ @use './after-effects/display-flow' as *;
2
+ @use './after-effects/text' as *;
3
+ @use './after-effects/spacing' as *;
package/dist/vui.css CHANGED
@@ -1,4 +1,4 @@
1
- @layer vui-normalize, vui-color-scheme, vue-loading, vue-app-layout, vui;
1
+ @layer vui-normalize, vui-color-scheme, vue-disabled-reason, vue-loading, vue-app-layout, vui;
2
2
  @layer vui-normalize{
3
3
  *,:after,:before{
4
4
  box-sizing:border-box;
@@ -717,6 +717,24 @@
717
717
  transform:translateX(-100%);
718
718
  z-index:1;
719
719
  }
720
+ .v-disabled-reason{
721
+ -webkit-tap-highlight-color:rgba(0, 0, 0, 0);
722
+ }
723
+ .v-disabled-reason::-moz-focus-inner{
724
+ border:0;
725
+ }
726
+ .v-disabled-reason{
727
+ border-radius:inherit;
728
+ cursor:default;
729
+ display:block;
730
+ inset:0;
731
+ pointer-events:none;
732
+ position:absolute;
733
+ z-index:10;
734
+ }
735
+ .v-disabled-reason[tabindex]:not([tabindex^="-"]){
736
+ pointer-events:auto;
737
+ }
720
738
  .v-busy-image{
721
739
  display:inline-block;
722
740
  max-width:100%;
package/dist/vui.d.ts CHANGED
@@ -42,6 +42,7 @@ import { ScopeName, ColorVariant , ThemeName, PaletteName } from '@fastkit/colo
42
42
  import * as vue_router from 'vue-router';
43
43
  import { Router, UseLinkOptions, useLink, RouteLocationRaw } from 'vue-router';
44
44
  import * as _fastkit_vue_resize from '@fastkit/vue-resize';
45
+ import * as _fastkit_vue_disabled_reason from '@fastkit/vue-disabled-reason';
45
46
 
46
47
  declare const CONTROL_SIZES: readonly ["sm", "md", "lg"];
47
48
  type ControlSize = (typeof CONTROL_SIZES)[number];
@@ -2151,6 +2152,173 @@ declare const VSkeltonLoaderBone: vue.DefineComponent<{
2151
2152
  tag: string;
2152
2153
  }, {}>;
2153
2154
 
2155
+ /**
2156
+ * Display type
2157
+ *
2158
+ * Currently, only tooltip is supported
2159
+ */
2160
+ type DisabledReasonType = 'tooltip';
2161
+ declare const VDisabledReason: vue.DefineComponent<{
2162
+ /**
2163
+ * Display type
2164
+ *
2165
+ * Currently, only tooltip is supported
2166
+ *
2167
+ * @see {@link DisabledReasonType}
2168
+ */
2169
+ type: {
2170
+ type: PropType<DisabledReasonType>;
2171
+ default: string;
2172
+ };
2173
+ x: PropType<_fastkit_vue_stack.VMenuXPosition>;
2174
+ y: PropType<_fastkit_vue_stack.VMenuYPosition>;
2175
+ allowOverflow: {
2176
+ type: BooleanConstructor;
2177
+ default: boolean;
2178
+ };
2179
+ width: {
2180
+ type: PropType<number | "fit" | "free">;
2181
+ default: undefined;
2182
+ };
2183
+ height: {
2184
+ type: PropType<number | "fit" | "free">;
2185
+ default: undefined;
2186
+ };
2187
+ minWidth: {
2188
+ type: PropType<number | "fit" | "free">;
2189
+ default: undefined;
2190
+ };
2191
+ minHeight: {
2192
+ type: PropType<number | "fit" | "free">;
2193
+ default: undefined;
2194
+ };
2195
+ maxWidth: PropType<(number | "fit" | "free") | ((window: _fastkit_vue_resize.UseWindowRef) => number | undefined)>;
2196
+ maxHeight: PropType<(number | "fit" | "free") | ((window: _fastkit_vue_resize.UseWindowRef) => number | undefined)>;
2197
+ distance: {
2198
+ type: NumberConstructor;
2199
+ default: number;
2200
+ };
2201
+ edgeMargin: {
2202
+ type: NumberConstructor;
2203
+ default: number;
2204
+ };
2205
+ forceEdgeMargin: {
2206
+ type: BooleanConstructor;
2207
+ default: boolean;
2208
+ };
2209
+ overlap: {
2210
+ type: PropType<_fastkit_vue_stack.MenuOverlapSettings | boolean>;
2211
+ default: boolean | _fastkit_vue_stack.MenuOverlapSettings;
2212
+ };
2213
+ resizeWatchDebounce: {
2214
+ type: NumberConstructor;
2215
+ default: number;
2216
+ };
2217
+ hideOnScroll: {
2218
+ type: (BooleanConstructor | StringConstructor | NumberConstructor)[];
2219
+ default: string | number | boolean;
2220
+ };
2221
+ hideOnInvisible: {
2222
+ type: BooleanConstructor;
2223
+ default: boolean;
2224
+ };
2225
+ } & {
2226
+ 'v-slots': PropType<{
2227
+ default?: ((api: _fastkit_vue_disabled_reason.DisabledReasonAPI<{}>) => vue.VNodeChild) | undefined;
2228
+ reason?: ((api: _fastkit_vue_disabled_reason.DisabledReasonAPI<{}>) => vue.VNodeChild) | undefined;
2229
+ }>;
2230
+ reason: PropType<_fastkit_vue_utils.VNodeChildOrSlot>;
2231
+ }, () => (string | number | boolean | void | vue.VNodeArrayChildren | vue.VNode<vue.RendererNode, vue.RendererElement, {
2232
+ [key: string]: any;
2233
+ }> | null)[], unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
2234
+ /**
2235
+ * Display type
2236
+ *
2237
+ * Currently, only tooltip is supported
2238
+ *
2239
+ * @see {@link DisabledReasonType}
2240
+ */
2241
+ type: {
2242
+ type: PropType<DisabledReasonType>;
2243
+ default: string;
2244
+ };
2245
+ x: PropType<_fastkit_vue_stack.VMenuXPosition>;
2246
+ y: PropType<_fastkit_vue_stack.VMenuYPosition>;
2247
+ allowOverflow: {
2248
+ type: BooleanConstructor;
2249
+ default: boolean;
2250
+ };
2251
+ width: {
2252
+ type: PropType<number | "fit" | "free">;
2253
+ default: undefined;
2254
+ };
2255
+ height: {
2256
+ type: PropType<number | "fit" | "free">;
2257
+ default: undefined;
2258
+ };
2259
+ minWidth: {
2260
+ type: PropType<number | "fit" | "free">;
2261
+ default: undefined;
2262
+ };
2263
+ minHeight: {
2264
+ type: PropType<number | "fit" | "free">;
2265
+ default: undefined;
2266
+ };
2267
+ maxWidth: PropType<(number | "fit" | "free") | ((window: _fastkit_vue_resize.UseWindowRef) => number | undefined)>;
2268
+ maxHeight: PropType<(number | "fit" | "free") | ((window: _fastkit_vue_resize.UseWindowRef) => number | undefined)>;
2269
+ distance: {
2270
+ type: NumberConstructor;
2271
+ default: number;
2272
+ };
2273
+ edgeMargin: {
2274
+ type: NumberConstructor;
2275
+ default: number;
2276
+ };
2277
+ forceEdgeMargin: {
2278
+ type: BooleanConstructor;
2279
+ default: boolean;
2280
+ };
2281
+ overlap: {
2282
+ type: PropType<_fastkit_vue_stack.MenuOverlapSettings | boolean>;
2283
+ default: boolean | _fastkit_vue_stack.MenuOverlapSettings;
2284
+ };
2285
+ resizeWatchDebounce: {
2286
+ type: NumberConstructor;
2287
+ default: number;
2288
+ };
2289
+ hideOnScroll: {
2290
+ type: (BooleanConstructor | StringConstructor | NumberConstructor)[];
2291
+ default: string | number | boolean;
2292
+ };
2293
+ hideOnInvisible: {
2294
+ type: BooleanConstructor;
2295
+ default: boolean;
2296
+ };
2297
+ } & {
2298
+ 'v-slots': PropType<{
2299
+ default?: ((api: _fastkit_vue_disabled_reason.DisabledReasonAPI<{}>) => vue.VNodeChild) | undefined;
2300
+ reason?: ((api: _fastkit_vue_disabled_reason.DisabledReasonAPI<{}>) => vue.VNodeChild) | undefined;
2301
+ }>;
2302
+ reason: PropType<_fastkit_vue_utils.VNodeChildOrSlot>;
2303
+ }>>, {
2304
+ type: "tooltip";
2305
+ allowOverflow: boolean;
2306
+ width: number | "fit" | "free";
2307
+ height: number | "fit" | "free";
2308
+ minWidth: number | "fit" | "free";
2309
+ minHeight: number | "fit" | "free";
2310
+ distance: number;
2311
+ edgeMargin: number;
2312
+ forceEdgeMargin: boolean;
2313
+ overlap: boolean | _fastkit_vue_stack.MenuOverlapSettings;
2314
+ resizeWatchDebounce: number;
2315
+ hideOnScroll: string | number | boolean;
2316
+ hideOnInvisible: boolean;
2317
+ }, _fastkit_vue_utils.DefinedSlots<{
2318
+ default?: (api: _fastkit_vue_disabled_reason.DisabledReasonAPI) => any;
2319
+ reason?: (api: _fastkit_vue_disabled_reason.DisabledReasonAPI) => any;
2320
+ }>>;
2321
+
2154
2322
  declare type ImgHTMLAttributesPropOptions = {
2155
2323
  [K in keyof ImgHTMLAttributes]-?: PropType<ImgHTMLAttributes[K]>;
2156
2324
  };
@@ -7236,4 +7404,4 @@ declare class VuiPlugin {
7236
7404
  }
7237
7405
  declare function installVuiPlugin(app: App, opts: VuiPluginOptions): App<any>;
7238
7406
 
7239
- export { ARROW_KEY_TYPES, AVATAR_SIZES, type AdornmentPosition, type AvatarSize, BUTTON_ALIGNS, type BreadcrumbsItem, type BusyImageLoadState, type BusyImageRect, type BusyImageRects, type BusyImageSizeValue, CHIP_SIZES, CHOICE_KEY_TYPES, CONTROL_FIELD_VARIANTS, CONTROL_LOADING_SPINNER_SIZES, CONTROL_SIZES, type ChipSize, type ContentSwitcherSeeTopOptions, type ControlFieldProvider, type ControlFieldProviderProps, type ControlFieldVariant, type ControlProps, type ControlProvider, type ControlSize, type DataTableCellSlotPayload, type DataTableDefaults, type DataTableHeader, type DataTableHeaderAlign, type DataTableItem, type DataTableItemSlotPayload, type DataTableRowSettings, type DataTableRowSettingsFn, type DefineFormSelectorComponentOptions, type ElevationProps, type GridContainerAlignContentValue, type GridContainerDirectionValue, type GridContainerJustifyContentValue, type GridContainerSpacingValue, type GridContainerWrapValue, type GridItemAlignValue, type GridItemJustifyValue, type GridItemNumberSizeValue, type GridItemSizeValue, type ImgHTMLAttributesPropOptions, type InputBoxSlots, KEYBOARD_EVENT_TYPES, type NavigationInput, type NavigationItemInput, PAGINATION_ALIGNS, type RawBreadcrumbsItem, type RawDataTableRowSettings, type RawIconProp, type RawVButtonIcon, type RawVButtonSpacer, type RawVChipIcon, type RawVuiPluginOptions, type RawVuiPromptOptions, type RawVuiServiceIconSettings, type RawVuiServiceOptions, type RawVuiServiceUISettings, type TextFieldEmits, type TextFieldInput, type TextFieldPropsOptions, type UseControlFieldProviderOptions, type UseControlProviderOptions, type UseElevationOptions, type UseLinkResult, VApp, VAvatar, VBreadcrumbs, VBusyImage, VButton, type VButtonAlign, VButtonGroup, type VButtonIcon, type VButtonProps, type VButtonResolvedProps, type VButtonSpacer, VCard, VCardActions, VCardContent, VCheckbox, VCheckboxGroup, VChip, type VChipIcon, VContentSwitcher, VControlField, VDataTable, VDialog, VDrawerLayout, VForm, VFormControl, VFormGroup, type VFormGroupSlots, type VFormSlots, VGridContainer, VGridItem, VHero, VIcon, VListTile, VMenu, VNavigation, VNavigationItem, VNumberField, VOption, VOptionGroup, VPagination, type VPaginationAlign, type VPaginationGuard, VPaper, VRadio, VRadioGroup, VSelect, VSheetModal, type VSheetModalSlots, VSkeltonLoaderBone, VSnackbar, VSwitch, VSwitchGroup, VTabs, type VTabsGuard, type VTabsItem, type VTabsItemLabelSlot, type VTabsItemLabelSlotCtx, type VTabsRouterHandler, VTextCounter, VTextField, VTextarea, VToolbar, VToolbarEdge, type VToolbarEdgeEdge, VToolbarMenu, type VToolbarMenuEdge, VToolbarTitle, VTooltip, VUI_CHECKBOX_GROUP_SYMBOL, VUI_CHECKBOX_SYMBOL, VUI_FORM_GROUP_SYMBOL, VUI_FORM_SYMBOL, VUI_OPTION_SYMBOL, VUI_RADIO_GROUP_SYMBOL, VUI_RADIO_SYMBOL, VUI_SELECT_SYMBOL, VUI_SWITCH_GROUP_SYMBOL, VUI_SWITCH_SYMBOL, VUI_TEXTAREA_SYMBOL, VUI_TEXT_FIELD_SYMBOL, type VuiColorProvider, VuiColorProviderInjectionKey, VuiControlFieldInjectionKey, VuiControlInjectionKey, type VuiElevationValue, type VuiFormPromptSettings, VuiInjectionKey, VuiPlugin, type VuiPluginOptions, type VuiPluginStackOptions, type VuiPromptOptions, VuiService, type VuiServiceIconSettings, type VuiServiceOptions, type VuiServiceUISettings, type VuiVNodeResolver, configureDataTableDefaults, createAvatarProps, createCardProps, createChipProps, createControlFieldProps, createControlFieldProviderProps, createControlProps, createElevationProps, createListTileProps, createNavigationItemProps, createNavigationProps, createPaperBaseProps, createPaperProps, createRequiredChipRenderer, createVFormGroupProps, createVFormProps, defineFormSelectorComponent, formGroupSlots, formSlots, iconProps, installVuiPlugin, listTileEmits, mergeVuiPluginOptions, mergeVuiServiceIconSettings, mergeVuiServiceOptions, mergeVuiServiceUISettings, paginationProps, paperBaseSlots, rawIconProp, renderNavigationItemInput, resolveNavigationItemInput, resolveRawIconProp, sheetModalProps, splitAttrs, useControl, useControlField, useElevation, useVui, useVuiColorProvider, vueButtonProps };
7407
+ export { ARROW_KEY_TYPES, AVATAR_SIZES, type AdornmentPosition, type AvatarSize, BUTTON_ALIGNS, type BreadcrumbsItem, type BusyImageLoadState, type BusyImageRect, type BusyImageRects, type BusyImageSizeValue, CHIP_SIZES, CHOICE_KEY_TYPES, CONTROL_FIELD_VARIANTS, CONTROL_LOADING_SPINNER_SIZES, CONTROL_SIZES, type ChipSize, type ContentSwitcherSeeTopOptions, type ControlFieldProvider, type ControlFieldProviderProps, type ControlFieldVariant, type ControlProps, type ControlProvider, type ControlSize, type DataTableCellSlotPayload, type DataTableDefaults, type DataTableHeader, type DataTableHeaderAlign, type DataTableItem, type DataTableItemSlotPayload, type DataTableRowSettings, type DataTableRowSettingsFn, type DefineFormSelectorComponentOptions, type DisabledReasonType, type ElevationProps, type GridContainerAlignContentValue, type GridContainerDirectionValue, type GridContainerJustifyContentValue, type GridContainerSpacingValue, type GridContainerWrapValue, type GridItemAlignValue, type GridItemJustifyValue, type GridItemNumberSizeValue, type GridItemSizeValue, type ImgHTMLAttributesPropOptions, type InputBoxSlots, KEYBOARD_EVENT_TYPES, type NavigationInput, type NavigationItemInput, PAGINATION_ALIGNS, type RawBreadcrumbsItem, type RawDataTableRowSettings, type RawIconProp, type RawVButtonIcon, type RawVButtonSpacer, type RawVChipIcon, type RawVuiPluginOptions, type RawVuiPromptOptions, type RawVuiServiceIconSettings, type RawVuiServiceOptions, type RawVuiServiceUISettings, type TextFieldEmits, type TextFieldInput, type TextFieldPropsOptions, type UseControlFieldProviderOptions, type UseControlProviderOptions, type UseElevationOptions, type UseLinkResult, VApp, VAvatar, VBreadcrumbs, VBusyImage, VButton, type VButtonAlign, VButtonGroup, type VButtonIcon, type VButtonProps, type VButtonResolvedProps, type VButtonSpacer, VCard, VCardActions, VCardContent, VCheckbox, VCheckboxGroup, VChip, type VChipIcon, VContentSwitcher, VControlField, VDataTable, VDialog, VDisabledReason, VDrawerLayout, VForm, VFormControl, VFormGroup, type VFormGroupSlots, type VFormSlots, VGridContainer, VGridItem, VHero, VIcon, VListTile, VMenu, VNavigation, VNavigationItem, VNumberField, VOption, VOptionGroup, VPagination, type VPaginationAlign, type VPaginationGuard, VPaper, VRadio, VRadioGroup, VSelect, VSheetModal, type VSheetModalSlots, VSkeltonLoaderBone, VSnackbar, VSwitch, VSwitchGroup, VTabs, type VTabsGuard, type VTabsItem, type VTabsItemLabelSlot, type VTabsItemLabelSlotCtx, type VTabsRouterHandler, VTextCounter, VTextField, VTextarea, VToolbar, VToolbarEdge, type VToolbarEdgeEdge, VToolbarMenu, type VToolbarMenuEdge, VToolbarTitle, VTooltip, VUI_CHECKBOX_GROUP_SYMBOL, VUI_CHECKBOX_SYMBOL, VUI_FORM_GROUP_SYMBOL, VUI_FORM_SYMBOL, VUI_OPTION_SYMBOL, VUI_RADIO_GROUP_SYMBOL, VUI_RADIO_SYMBOL, VUI_SELECT_SYMBOL, VUI_SWITCH_GROUP_SYMBOL, VUI_SWITCH_SYMBOL, VUI_TEXTAREA_SYMBOL, VUI_TEXT_FIELD_SYMBOL, type VuiColorProvider, VuiColorProviderInjectionKey, VuiControlFieldInjectionKey, VuiControlInjectionKey, type VuiElevationValue, type VuiFormPromptSettings, VuiInjectionKey, VuiPlugin, type VuiPluginOptions, type VuiPluginStackOptions, type VuiPromptOptions, VuiService, type VuiServiceIconSettings, type VuiServiceOptions, type VuiServiceUISettings, type VuiVNodeResolver, configureDataTableDefaults, createAvatarProps, createCardProps, createChipProps, createControlFieldProps, createControlFieldProviderProps, createControlProps, createElevationProps, createListTileProps, createNavigationItemProps, createNavigationProps, createPaperBaseProps, createPaperProps, createRequiredChipRenderer, createVFormGroupProps, createVFormProps, defineFormSelectorComponent, formGroupSlots, formSlots, iconProps, installVuiPlugin, listTileEmits, mergeVuiPluginOptions, mergeVuiServiceIconSettings, mergeVuiServiceOptions, mergeVuiServiceUISettings, paginationProps, paperBaseSlots, rawIconProp, renderNavigationItemInput, resolveNavigationItemInput, resolveRawIconProp, sheetModalProps, splitAttrs, useControl, useControlField, useElevation, useVui, useVuiColorProvider, vueButtonProps };
package/dist/vui.mjs CHANGED
@@ -24,7 +24,7 @@ import { createFormNodeWrapperSettings, useFormNodeWrapper, useParentFormNode, c
24
24
  export * from '@fastkit/vue-form-control';
25
25
  import { VScroller, getDocumentScroller } from '@fastkit/vue-scroller';
26
26
  export * from '@fastkit/vue-scroller';
27
- import { defineMenuComponent, defineDialogComponent, createStackActionProps, useStackAction, defineSnackbarComponent, createStackableDefine, useStackControl, VDynamicStacks, BUILTIN_ACTION_HANDLERS, installVueStackPlugin } from '@fastkit/vue-stack';
27
+ import { defineMenuComponent, defineDialogComponent, createStackActionProps, useStackAction, defineSnackbarComponent, createStackableDefine, useStackControl, createMenuProps, VDynamicStacks, BUILTIN_ACTION_HANDLERS, installVueStackPlugin } from '@fastkit/vue-stack';
28
28
  export * from '@fastkit/vue-stack';
29
29
  import { useActionable, VAction, actionableInheritProps, setDefaultActionableClassName, setDefaultRouterLink } from '@fastkit/vue-action';
30
30
  export * from '@fastkit/vue-action';
@@ -34,6 +34,7 @@ export * from '@fastkit/vue-utils';
34
34
  import * as vue_loading_star from '@fastkit/vue-loading';
35
35
  export * from '@fastkit/vue-loading';
36
36
  import { defineComponent, computed, createVNode, mergeProps, ref, watch, onMounted, onBeforeUnmount, Fragment, isVNode, cloneVNode, withDirectives, vShow, onBeforeUpdate, Transition, inject, provide, createTextVNode, nextTick, vModelSelect, reactive } from 'vue';
37
+ import { defineDisabledReasonComponent } from '@fastkit/vue-disabled-reason';
37
38
  import { loadImage } from '@fastkit/dom';
38
39
  import { useRouter, useRoute, RouterLink, useLink } from 'vue-router';
39
40
  import { resizeDirectiveArgument, installResizeDirective } from '@fastkit/vue-resize';
@@ -86,6 +87,7 @@ __export(src_exports, {
86
87
  VControlField: () => VControlField,
87
88
  VDataTable: () => VDataTable,
88
89
  VDialog: () => VDialog,
90
+ VDisabledReason: () => VDisabledReason,
89
91
  VDrawerLayout: () => VDrawerLayout,
90
92
  VForm: () => VForm,
91
93
  VFormControl: () => VFormControl,
@@ -661,6 +663,7 @@ __export(components_exports, {
661
663
  VControlField: () => VControlField,
662
664
  VDataTable: () => VDataTable,
663
665
  VDialog: () => VDialog,
666
+ VDisabledReason: () => VDisabledReason,
664
667
  VDrawerLayout: () => VDrawerLayout,
665
668
  VForm: () => VForm,
666
669
  VFormControl: () => VFormControl,
@@ -874,6 +877,43 @@ var VSkeltonLoaderBone = defineComponent({
874
877
  };
875
878
  }
876
879
  });
880
+ var menuProps = createMenuProps();
881
+ var VDisabledReason = defineDisabledReasonComponent({
882
+ name: "VDisabledReason",
883
+ props: {
884
+ ...menuProps,
885
+ /**
886
+ * Display type
887
+ *
888
+ * Currently, only tooltip is supported
889
+ *
890
+ * @see {@link DisabledReasonType}
891
+ */
892
+ type: {
893
+ type: String,
894
+ default: "tooltip"
895
+ }
896
+ },
897
+ setup(api) {
898
+ return (reason) => {
899
+ const {
900
+ type: _type,
901
+ ...tooltipProps
902
+ } = api.props;
903
+ return createVNode(VTooltip, mergeProps(tooltipProps, {
904
+ "disabled": !reason || !api.disabled
905
+ }), {
906
+ activator: ({
907
+ attrs
908
+ }) => createVNode("span", mergeProps({
909
+ "class": "v-disabled-reason",
910
+ "tabindex": api.disabled ? 0 : -1
911
+ }, attrs), null),
912
+ default: () => reason
913
+ });
914
+ };
915
+ }
916
+ });
877
917
  var IMAGE_ATTRS = ["alt", "crossorigin", "decoding", "sizes", "src", "srcset", "usemap"];
878
918
  function splitAttrs(attrs) {
879
919
  const el = {
@@ -4783,6 +4823,6 @@ function installVuiPlugin(app, opts) {
4783
4823
  return app.use(VuiPlugin, opts);
4784
4824
  }
4785
4825
 
4786
- export { ARROW_KEY_TYPES, AVATAR_SIZES, BUTTON_ALIGNS, CHIP_SIZES, CHOICE_KEY_TYPES, CONTROL_FIELD_VARIANTS, CONTROL_LOADING_SPINNER_SIZES, CONTROL_SIZES, KEYBOARD_EVENT_TYPES, PAGINATION_ALIGNS, VApp, VAvatar, VBreadcrumbs, VBusyImage, VButton, VButtonGroup, VCard, VCardActions, VCardContent, VCheckbox, VCheckboxGroup, VChip, VContentSwitcher, VControlField, VDataTable, VDialog, VDrawerLayout, VForm, VFormControl, VFormGroup, VGridContainer, VGridItem, VHero, VIcon, VListTile, VMenu, VNavigation, VNavigationItem, VNumberField, VOption, VOptionGroup, VPagination, VPaper, VRadio, VRadioGroup, VSelect, VSheetModal, VSkeltonLoaderBone, VSnackbar, VSwitch, VSwitchGroup, VTabs, VTextCounter, VTextField, VTextarea, VToolbar, VToolbarEdge, VToolbarMenu, VToolbarTitle, VTooltip, VUI_CHECKBOX_GROUP_SYMBOL, VUI_CHECKBOX_SYMBOL, VUI_FORM_GROUP_SYMBOL, VUI_FORM_SYMBOL, VUI_OPTION_SYMBOL, VUI_RADIO_GROUP_SYMBOL, VUI_RADIO_SYMBOL, VUI_SELECT_SYMBOL, VUI_SWITCH_GROUP_SYMBOL, VUI_SWITCH_SYMBOL, VUI_TEXTAREA_SYMBOL, VUI_TEXT_FIELD_SYMBOL, VuiColorProviderInjectionKey, VuiControlFieldInjectionKey, VuiControlInjectionKey, VuiInjectionKey, VuiPlugin, VuiService, configureDataTableDefaults, createAvatarProps, createCardProps, createChipProps, createControlFieldProps, createControlFieldProviderProps, createControlProps, createElevationProps, createListTileProps, createNavigationItemProps, createNavigationProps, createPaperBaseProps, createPaperProps, createRequiredChipRenderer, createVFormGroupProps, createVFormProps, defineFormSelectorComponent, formGroupSlots, formSlots, iconProps, installVuiPlugin, listTileEmits, mergeVuiPluginOptions, mergeVuiServiceIconSettings, mergeVuiServiceOptions, mergeVuiServiceUISettings, paginationProps, paperBaseSlots, rawIconProp, renderNavigationItemInput, resolveNavigationItemInput, resolveRawIconProp, sheetModalProps, splitAttrs, useControl, useControlField, useElevation, useVui, useVuiColorProvider, vueButtonProps };
4826
+ export { ARROW_KEY_TYPES, AVATAR_SIZES, BUTTON_ALIGNS, CHIP_SIZES, CHOICE_KEY_TYPES, CONTROL_FIELD_VARIANTS, CONTROL_LOADING_SPINNER_SIZES, CONTROL_SIZES, KEYBOARD_EVENT_TYPES, PAGINATION_ALIGNS, VApp, VAvatar, VBreadcrumbs, VBusyImage, VButton, VButtonGroup, VCard, VCardActions, VCardContent, VCheckbox, VCheckboxGroup, VChip, VContentSwitcher, VControlField, VDataTable, VDialog, VDisabledReason, VDrawerLayout, VForm, VFormControl, VFormGroup, VGridContainer, VGridItem, VHero, VIcon, VListTile, VMenu, VNavigation, VNavigationItem, VNumberField, VOption, VOptionGroup, VPagination, VPaper, VRadio, VRadioGroup, VSelect, VSheetModal, VSkeltonLoaderBone, VSnackbar, VSwitch, VSwitchGroup, VTabs, VTextCounter, VTextField, VTextarea, VToolbar, VToolbarEdge, VToolbarMenu, VToolbarTitle, VTooltip, VUI_CHECKBOX_GROUP_SYMBOL, VUI_CHECKBOX_SYMBOL, VUI_FORM_GROUP_SYMBOL, VUI_FORM_SYMBOL, VUI_OPTION_SYMBOL, VUI_RADIO_GROUP_SYMBOL, VUI_RADIO_SYMBOL, VUI_SELECT_SYMBOL, VUI_SWITCH_GROUP_SYMBOL, VUI_SWITCH_SYMBOL, VUI_TEXTAREA_SYMBOL, VUI_TEXT_FIELD_SYMBOL, VuiColorProviderInjectionKey, VuiControlFieldInjectionKey, VuiControlInjectionKey, VuiInjectionKey, VuiPlugin, VuiService, configureDataTableDefaults, createAvatarProps, createCardProps, createChipProps, createControlFieldProps, createControlFieldProviderProps, createControlProps, createElevationProps, createListTileProps, createNavigationItemProps, createNavigationProps, createPaperBaseProps, createPaperProps, createRequiredChipRenderer, createVFormGroupProps, createVFormProps, defineFormSelectorComponent, formGroupSlots, formSlots, iconProps, installVuiPlugin, listTileEmits, mergeVuiPluginOptions, mergeVuiServiceIconSettings, mergeVuiServiceOptions, mergeVuiServiceUISettings, paginationProps, paperBaseSlots, rawIconProp, renderNavigationItemInput, resolveNavigationItemInput, resolveRawIconProp, sheetModalProps, splitAttrs, useControl, useControlField, useElevation, useVui, useVuiColorProvider, vueButtonProps };
4787
4827
  //# sourceMappingURL=vui.mjs.map
4788
4828
  //# sourceMappingURL=vui.mjs.map