@vuetify/nightly 3.6.10-master.2024-06-27 → 3.6.11-master.2024-07-03
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 +3 -3
- package/dist/json/attributes.json +2 -2
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +106 -106
- package/dist/json/web-types.json +3 -3
- package/dist/vuetify-labs.css +6077 -6077
- package/dist/vuetify-labs.esm.js +61 -64
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +61 -64
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1090 -1090
- package/dist/vuetify.d.ts +36 -36
- package/dist/vuetify.esm.js +11 -9
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +11 -9
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +17 -14
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +7 -2
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/composables/teleport.mjs +2 -2
- package/lib/composables/teleport.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +36 -36
- package/lib/labs/VNumberInput/VNumberInput.mjs +48 -55
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VStepperVertical/VStepperVertical.mjs +2 -0
- package/lib/labs/VStepperVertical/VStepperVertical.mjs.map +1 -1
- package/package.json +1 -1
@@ -132,10 +132,15 @@ export const VOverlay = genericComponent()({
|
|
132
132
|
isActive,
|
133
133
|
isTop: localTop
|
134
134
|
});
|
135
|
-
const potentialShadowDomRoot = computed(() => activatorEl?.value?.getRootNode());
|
136
135
|
const {
|
137
136
|
teleportTarget
|
138
|
-
} = useTeleport(
|
137
|
+
} = useTeleport(() => {
|
138
|
+
const target = props.attach || props.contained;
|
139
|
+
if (target) return target;
|
140
|
+
const rootNode = activatorEl?.value?.getRootNode();
|
141
|
+
if (rootNode instanceof ShadowRoot) return rootNode;
|
142
|
+
return false;
|
143
|
+
});
|
139
144
|
const {
|
140
145
|
dimensionStyles
|
141
146
|
} = useDimension(props);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","potentialShadowDomRoot","getRootNode","teleportTarget","ShadowRoot","dimensionStyles","isMounted","scopeId","root","scrimEl","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const potentialShadowDomRoot = computed(() => (activatorEl?.value as Element)?.getRootNode() as Element)\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained ||\n potentialShadowDomRoot.value instanceof ShadowRoot ? potentialShadowDomRoot.value ?? true : false))\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,yBAAyB,EAAEC,qBAAqB;AAAA,SAChDC,uBAAuB,EAAEC,mBAAmB;AAAA,SAC5CC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB;AAAA,SAClBC,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,YAAY;AAAA,SACZC,aAAa,EAAEC,OAAO;AAAA,SACtBC,MAAM;AAAA,SACNC,eAAe;AAAA,SACfC,aAAa,EAAEC,SAAS;AAAA,SACxBC,UAAU;AAAA,SACVC,QAAQ;AAAA,SACRC,WAAW;AAAA,SACXC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,cAAc;AAAA,SACdC,mBAAmB,EAAEC,eAAe,4CAE7C;AAAA,SACSC,YAAY,oDAErB;AACA,SACEC,QAAQ,EACRC,UAAU,EACVC,eAAe,EACfC,GAAG,EACHC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,KAAK,QACA,KAAK;AAAA,SAEVC,OAAO,EACPC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,UAAU,EACVC,YAAY,EACZC,cAAc,EACdC,SAAS,gCAGX;AAUA,SAASC,KAAKA,CAAEC,KAAiB,EAAE;EACjC,MAAM;IAAEC,UAAU;IAAEC,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAK;EAC5C,OAAAI,YAAA,CAAAf,UAAA;IAAA;IAAA;EAAA;IAAAgB,OAAA,EAAAA,CAAA,MAEML,KAAK,CAACC,UAAU,IAAAG,YAAA,QAAAE,WAAA;MAAA,SAEP,CACL,kBAAkB,EAClBN,KAAK,CAACE,KAAK,CAACK,sBAAsB,CAACC,KAAK,CACzC;MAAA,SACOR,KAAK,CAACE,KAAK,CAACO,qBAAqB,CAACD;IAAK,GAC1CL,IAAI,QAEZ;EAAA;AAGP;AAOA,OAAO,MAAMO,iBAAiB,GAAGd,YAAY,CAAC;EAC5Ce,QAAQ,EAAEC,OAAO;EACjBC,MAAM,EAAE,CAACD,OAAO,EAAEE,MAAM,EAAEC,MAAM,CAAyC;EACzEC,WAAW,EAAE;IACXC,IAAI,EAAEL,OAAO;IACbP,OAAO,EAAE;EACX,CAAC;EACDa,SAAS,EAAEN,OAAO;EAClBO,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAET,OAAO;EACjBU,OAAO,EAAE,CAACC,MAAM,EAAET,MAAM,CAAC;EACzBU,gBAAgB,EAAEZ,OAAO;EACzBX,UAAU,EAAEW,OAAO;EACnBa,UAAU,EAAEb,OAAO;EACnBc,KAAK,EAAE;IACLT,IAAI,EAAE,CAACL,OAAO,EAAEE,MAAM,CAAC;IACvBT,OAAO,EAAE;EACX,CAAC;EACDsB,MAAM,EAAE;IACNV,IAAI,EAAE,CAACM,MAAM,EAAET,MAAM,CAAC;IACtBT,OAAO,EAAE;EACX,CAAC;EAED,GAAG5C,kBAAkB,CAAC,CAAC;EACvB,GAAGG,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGG,aAAa,CAAC,CAAC;EAClB,GAAGX,yBAAyB,CAAC,CAAC;EAC9B,GAAGE,uBAAuB,CAAC,CAAC;EAC5B,GAAGkB,cAAc,CAAC,CAAC;EACnB,GAAGG,mBAAmB,CAAC;AACzB,CAAC,EAAE,UAAU,CAAC;AAEd,OAAO,MAAMgD,QAAQ,GAAGnC,gBAAgB,CAAe,CAAC,CAAC;EACvDoC,IAAI,EAAE,UAAU;EAEhBC,UAAU,EAAE;IAAEhD;EAAa,CAAC;EAE5BiD,YAAY,EAAE,KAAK;EAEnB/B,KAAK,EAAE;IACLgC,mBAAmB,EAAEpB,OAAO;IAE5B,GAAGF,iBAAiB,CAAC;EACvB,CAAC;EAEDuB,KAAK,EAAE;IACL,eAAe,EAAGC,CAAa,IAAK,IAAI;IACxC,mBAAmB,EAAG1B,KAAc,IAAK,IAAI;IAC7C2B,UAAU,EAAEA,CAAA,KAAM,IAAI;IACtBC,UAAU,EAAEA,CAAA,KAAM;EACpB,CAAC;EAEDC,KAAKA,CAAErC,KAAK,EAAAsC,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAH,IAAA;IAClC,MAAMI,KAAK,GAAGvE,eAAe,CAAC6B,KAAK,EAAE,YAAY,CAAC;IAClD,MAAM2C,QAAQ,GAAG5D,QAAQ,CAAC;MACxB6D,GAAG,EAAEA,CAAA,KAAMF,KAAK,CAAClC,KAAK;MACtBqC,GAAG,EAAEC,CAAC,IAAI;QACR,IAAI,EAAEA,CAAC,IAAI9C,KAAK,CAACqB,QAAQ,CAAC,EAAEqB,KAAK,CAAClC,KAAK,GAAGsC,CAAC;MAC7C;IACF,CAAC,CAAC;IACF,MAAM;MAAEC;IAAa,CAAC,GAAGrE,YAAY,CAACsB,KAAK,CAAC;IAC5C,MAAM;MAAEgD,UAAU;MAAEC;IAAM,CAAC,GAAG/E,MAAM,CAAC,CAAC;IACtC,MAAM;MAAEgF,UAAU;MAAEC,YAAY,EAAEC;IAAc,CAAC,GAAGnF,OAAO,CAAC+B,KAAK,EAAE2C,QAAQ,CAAC;IAC5E,MAAMU,UAAU,GAAG1F,kBAAkB,CAACoB,QAAQ,CAAC,MAAM;MACnD,OAAO,OAAOiB,KAAK,CAAC0B,KAAK,KAAK,QAAQ,GAAG1B,KAAK,CAAC0B,KAAK,GAAG,IAAI;IAC7D,CAAC,CAAC,CAAC;IACH,MAAM;MAAE4B,SAAS;MAAEC,QAAQ;MAAEC;IAAY,CAAC,GAAGjF,QAAQ,CAACoE,QAAQ,EAAEvD,KAAK,CAACY,KAAK,EAAE,QAAQ,CAAC,EAAEA,KAAK,CAACgC,mBAAmB,CAAC;IAClH,MAAM;MACJyB,WAAW;MAAEC,YAAY;MACzBC,MAAM;MAAEC,QAAQ;MAAEC,SAAS;MAC3BC,eAAe;MACfC,aAAa;MACbC;IACF,CAAC,GAAGtG,YAAY,CAACsC,KAAK,EAAE;MAAE2C,QAAQ;MAAEsB,KAAK,EAAEV;IAAS,CAAC,CAAC;IACtD,MAAMW,sBAAsB,GAAGnF,QAAQ,CAAC,MAAO0E,WAAW,EAAEjD,KAAK,EAAc2D,WAAW,CAAC,CAAY,CAAC;IACxG,MAAM;MAAEC;IAAe,CAAC,GAAG5F,WAAW,CAACO,QAAQ,CAAC,MAAMiB,KAAK,CAACa,MAAM,IAAIb,KAAK,CAACkB,SAAS,IACnFgD,sBAAsB,CAAC1D,KAAK,YAAY6D,UAAU,GAAGH,sBAAsB,CAAC1D,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;IACrG,MAAM;MAAE8D;IAAgB,CAAC,GAAGxG,YAAY,CAACkC,KAAK,CAAC;IAC/C,MAAMuE,SAAS,GAAGxG,YAAY,CAAC,CAAC;IAChC,MAAM;MAAEyG;IAAQ,CAAC,GAAGlG,UAAU,CAAC,CAAC;IAEhCgB,KAAK,CAAC,MAAMU,KAAK,CAACqB,QAAQ,EAAEyB,CAAC,IAAI;MAC/B,IAAIA,CAAC,EAAEH,QAAQ,CAACnC,KAAK,GAAG,KAAK;IAC/B,CAAC,CAAC;IAEF,MAAMiE,IAAI,GAAGvF,GAAG,CAAc,CAAC;IAC/B,MAAMwF,OAAO,GAAGxF,GAAG,CAAc,CAAC;IAClC,MAAMyF,SAAS,GAAGzF,GAAG,CAAc,CAAC;IACpC,MAAM;MAAE0F,aAAa;MAAEC;IAAe,CAAC,GAAGvH,qBAAqB,CAAC0C,KAAK,EAAE;MACrEiD,KAAK;MACL0B,SAAS;MACThB,MAAM;MACNhB;IACF,CAAC,CAAC;IACFnF,mBAAmB,CAACwC,KAAK,EAAE;MACzByE,IAAI;MACJE,SAAS;MACTf,QAAQ;MACRjB,QAAQ;MACRkC;IACF,CAAC,CAAC;IAEF,SAASC,cAAcA,CAAE5C,CAAa,EAAE;MACtCO,IAAI,CAAC,eAAe,EAAEP,CAAC,CAAC;MAExB,IAAI,CAAClC,KAAK,CAACyB,UAAU,EAAEkB,QAAQ,CAACnC,KAAK,GAAG,KAAK,MACxCuE,YAAY,CAAC,CAAC;IACrB;IAEA,SAASC,gBAAgBA,CAAE9C,CAAQ,EAAE;MACnC,OAAOS,QAAQ,CAACnC,KAAK,IAAI8C,SAAS,CAAC9C,KAAK;MACtC;MACA,CAACR,KAAK,CAAC0B,KAAK,IAAIQ,CAAC,CAACyB,MAAM,KAAKe,OAAO,CAAClE,KAAK,CAC3C;IACH;IAEAb,UAAU,IAAIL,KAAK,CAACqD,QAAQ,EAAEsC,GAAG,IAAI;MACnC,IAAIA,GAAG,EAAE;QACPC,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEC,SAAS,CAAC;MAC/C,CAAC,MAAM;QACLF,MAAM,CAACG,mBAAmB,CAAC,SAAS,EAAED,SAAS,CAAC;MAClD;IACF,CAAC,EAAE;MAAEE,SAAS,EAAE;IAAK,CAAC,CAAC;IAEvBrG,eAAe,CAAC,MAAM;MACpB,IAAI,CAACU,UAAU,EAAE;MAEjBuF,MAAM,CAACG,mBAAmB,CAAC,SAAS,EAAED,SAAS,CAAC;IAClD,CAAC,CAAC;IAEF,SAASA,SAASA,CAAElD,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACqD,GAAG,KAAK,QAAQ,IAAIjC,SAAS,CAAC9C,KAAK,EAAE;QACzC,IAAI,CAACR,KAAK,CAACyB,UAAU,EAAE;UACrBkB,QAAQ,CAACnC,KAAK,GAAG,KAAK;UACtB,IAAImE,SAAS,CAACnE,KAAK,EAAEgF,QAAQ,CAACC,QAAQ,CAACC,aAAa,CAAC,EAAE;YACrDjC,WAAW,CAACjD,KAAK,EAAEmF,KAAK,CAAC,CAAC;UAC5B;QACF,CAAC,MAAMZ,YAAY,CAAC,CAAC;MACvB;IACF;IAEA,MAAMa,MAAM,GAAGvH,SAAS,CAAC,CAAC;IAC1BM,cAAc,CAAC,MAAMqB,KAAK,CAACgB,WAAW,EAAE,MAAM;MAC5C5C,aAAa,CAACwH,MAAM,EAAEC,IAAI,IAAI;QAC5B,IAAIvC,SAAS,CAAC9C,KAAK,IAAImC,QAAQ,CAACnC,KAAK,EAAE;UACrCqF,IAAI,CAAC,KAAK,CAAC;UACX,IAAI,CAAC7F,KAAK,CAACyB,UAAU,EAAEkB,QAAQ,CAACnC,KAAK,GAAG,KAAK,MACxCuE,YAAY,CAAC,CAAC;QACrB,CAAC,MAAM;UACLc,IAAI,CAAC,CAAC;QACR;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMC,GAAG,GAAG5G,GAAG,CAAS,CAAC;IACzBI,KAAK,CAAC,MAAMqD,QAAQ,CAACnC,KAAK,KAAKR,KAAK,CAACW,QAAQ,IAAIX,KAAK,CAACkB,SAAS,CAAC,IAAIkD,cAAc,CAAC5D,KAAK,IAAI,IAAI,EAAEyE,GAAG,IAAI;MACxG,IAAIA,GAAG,EAAE;QACP,MAAMc,YAAY,GAAGrG,eAAe,CAAC+E,IAAI,CAACjE,KAAK,CAAC;QAChD,IAAIuF,YAAY,IAAIA,YAAY,KAAKN,QAAQ,CAACO,gBAAgB,EAAE;UAC9DF,GAAG,CAACtF,KAAK,GAAGuF,YAAY,CAACE,SAAS;QACpC;MACF;IACF,CAAC,CAAC;;IAEF;IACA,SAASlB,YAAYA,CAAA,EAAI;MACvB,IAAI/E,KAAK,CAACwB,gBAAgB,EAAE;MAE5BmD,SAAS,CAACnE,KAAK,IAAIjB,OAAO,CAACoF,SAAS,CAACnE,KAAK,EAAE,CAC1C;QAAE0F,eAAe,EAAE;MAAS,CAAC,EAC7B;QAAEC,SAAS,EAAE;MAAc,CAAC,EAC5B;QAAED,eAAe,EAAE;MAAS,CAAC,CAC9B,EAAE;QACDE,QAAQ,EAAE,GAAG;QACbC,MAAM,EAAExG;MACV,CAAC,CAAC;IACJ;IAEA,SAASyG,YAAYA,CAAA,EAAI;MACvB7D,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA,SAASU,YAAYA,CAAA,EAAI;MACvBC,aAAa,CAAC,CAAC;MACfX,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA3C,SAAS,CAAC,MAAAM,YAAA,CAAAmG,SAAA,SAEJhE,KAAK,CAACiE,SAAS,GAAG;MAClB7D,QAAQ,EAAEA,QAAQ,CAACnC,KAAK;MACxBqD,SAAS;MACT7D,KAAK,EAAEhB,UAAU,CAAC;QAChBE,GAAG,EAAEwE;MACP,CAAC,EAAEI,eAAe,CAACtD,KAAK,EAAER,KAAK,CAACyG,cAAc;IAChD,CAAC,CAAC,EAEAlC,SAAS,CAAC/D,KAAK,IAAI0C,UAAU,CAAC1C,KAAK,IAAAJ,YAAA,CAAAjB,QAAA;MAAA,YAEtB,CAACiF,cAAc,CAAC5D,KAAK;MAAA,MAC3B4D,cAAc,CAAC5D;IAAK;MAAAH,OAAA,EAAAA,CAAA,MAAAD,YAAA,QAAAE,WAAA;QAAA,SAGhB,CACL,WAAW,EACX;UACE,qBAAqB,EAAEN,KAAK,CAACW,QAAQ,IAAIX,KAAK,CAACkB,SAAS;UACxD,mBAAmB,EAAEyB,QAAQ,CAACnC,KAAK;UACnC,sBAAsB,EAAER,KAAK,CAACkB;QAChC,CAAC,EACD6B,YAAY,CAACvC,KAAK,EAClBwC,UAAU,CAACxC,KAAK,EAChBR,KAAK,CAAC0G,KAAK,CACZ;QAAA,SACM,CACLlD,WAAW,CAAChD,KAAK,EACjB;UACE,qBAAqB,EAAER,KAAK,CAACsB,OAAO;UACpCwE,GAAG,EAAEtG,aAAa,CAACsG,GAAG,CAACtF,KAAK;QAC9B,CAAC,EACDR,KAAK,CAAC2G,KAAK,CACZ;QAAA,OACKlC;MAAI,GACLD,OAAO,EACPhC,KAAK,IAAApC,YAAA,CAAAL,KAAA,EAAAO,WAAA;QAAA,SAGA+C,UAAU;QAAA,cACLV,QAAQ,CAACnC,KAAK,IAAI,CAAC,CAACR,KAAK,CAAC0B,KAAK;QAAA,OACtCgD;MAAO,GACRV,WAAW,CAACxD,KAAK,UAAAJ,YAAA,CAAAvB,eAAA;QAAA;QAAA;QAAA,cAKTmB,KAAK,CAAC4G,UAAU;QAAA,UACpBjD,MAAM,CAACnD,KAAK;QAAA,gBACN8F,YAAY;QAAA,gBACZnD;MAAY;QAAA9C,OAAA,EAAAA,CAAA,MAAAwG,eAAA,CAAAzG,YAAA,QAAAE,WAAA;UAAA,OAGnBqE,SAAS;UAAA,SAGR,CACL,oBAAoB,EACpB3E,KAAK,CAACmB,YAAY,CACnB;UAAA,SACM,CACLmD,eAAe,CAAC9D,KAAK,EACrBoE,aAAa,CAACpE,KAAK;QACpB,GACIuD,aAAa,CAACvD,KAAK,EACnBR,KAAK,CAACoB,YAAY,IAErBmB,KAAK,CAAClC,OAAO,GAAG;UAAEsC;QAAS,CAAC,CAAC,MAAAmE,MAAA,EAbtBnE,QAAQ,CAACnC,KAAK,IAAAuG,iBAAA,mBACN;UAAEC,OAAO,EAAElC,cAAc;UAAEE,gBAAgB;UAAEiC,OAAO,EAAEA,CAAA,KAAM,CAACxD,WAAW,CAACjD,KAAK;QAAE,CAAC;MAAA;IAAA,EAiB3G,EAEJ,CAAC;IAEF,OAAO;MACLiD,WAAW;MACXiB,OAAO;MACPf,MAAM;MACNoB,YAAY;MACZJ,SAAS;MACTrB,SAAS;MACTC,QAAQ;MACRsB;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","teleportTarget","rootNode","getRootNode","ShadowRoot","dimensionStyles","isMounted","scopeId","root","scrimEl","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { teleportTarget } = useTeleport(() => {\n const target = props.attach || props.contained\n if (target) return target\n const rootNode = activatorEl?.value?.getRootNode()\n if (rootNode instanceof ShadowRoot) return rootNode\n return false\n })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
// Utilities
|
2
2
|
import { computed, warn } from 'vue';
|
3
|
-
import { IN_BROWSER } from "../util/index.mjs";
|
3
|
+
import { IN_BROWSER } from "../util/index.mjs";
|
4
4
|
export function useTeleport(target) {
|
5
5
|
const teleportTarget = computed(() => {
|
6
|
-
const _target = target
|
6
|
+
const _target = target();
|
7
7
|
if (_target === true || !IN_BROWSER) return undefined;
|
8
8
|
const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;
|
9
9
|
if (targetElement == null) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"teleport.mjs","names":["computed","warn","IN_BROWSER","useTeleport","target","teleportTarget","_target","
|
1
|
+
{"version":3,"file":"teleport.mjs","names":["computed","warn","IN_BROWSER","useTeleport","target","teleportTarget","_target","undefined","targetElement","document","body","querySelector","container","createElement","className","appendChild"],"sources":["../../src/composables/teleport.ts"],"sourcesContent":["// Utilities\nimport { computed, warn } from 'vue'\nimport { IN_BROWSER } from '@/util'\n\nexport function useTeleport (target: () => (boolean | string | ParentNode)) {\n const teleportTarget = computed(() => {\n const _target = target()\n\n if (_target === true || !IN_BROWSER) return undefined\n\n const targetElement =\n _target === false ? document.body\n : typeof _target === 'string' ? document.querySelector(_target)\n : _target\n\n if (targetElement == null) {\n warn(`Unable to locate target ${_target}`)\n return undefined\n }\n\n let container = targetElement.querySelector(':scope > .v-overlay-container')\n\n if (!container) {\n container = document.createElement('div')\n container.className = 'v-overlay-container'\n targetElement.appendChild(container)\n }\n\n return container\n })\n\n return { teleportTarget }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,IAAI,QAAQ,KAAK;AAAA,SAC3BC,UAAU;AAEnB,OAAO,SAASC,WAAWA,CAAEC,MAA6C,EAAE;EAC1E,MAAMC,cAAc,GAAGL,QAAQ,CAAC,MAAM;IACpC,MAAMM,OAAO,GAAGF,MAAM,CAAC,CAAC;IAExB,IAAIE,OAAO,KAAK,IAAI,IAAI,CAACJ,UAAU,EAAE,OAAOK,SAAS;IAErD,MAAMC,aAAa,GACjBF,OAAO,KAAK,KAAK,GAAGG,QAAQ,CAACC,IAAI,GAC/B,OAAOJ,OAAO,KAAK,QAAQ,GAAGG,QAAQ,CAACE,aAAa,CAACL,OAAO,CAAC,GAC7DA,OAAO;IAEX,IAAIE,aAAa,IAAI,IAAI,EAAE;MACzBP,IAAI,CAAE,2BAA0BK,OAAQ,EAAC,CAAC;MAC1C,OAAOC,SAAS;IAClB;IAEA,IAAIK,SAAS,GAAGJ,aAAa,CAACG,aAAa,CAAC,+BAA+B,CAAC;IAE5E,IAAI,CAACC,SAAS,EAAE;MACdA,SAAS,GAAGH,QAAQ,CAACI,aAAa,CAAC,KAAK,CAAC;MACzCD,SAAS,CAACE,SAAS,GAAG,qBAAqB;MAC3CN,aAAa,CAACO,WAAW,CAACH,SAAS,CAAC;IACtC;IAEA,OAAOA,SAAS;EAClB,CAAC,CAAC;EAEF,OAAO;IAAEP;EAAe,CAAC;AAC3B","ignoreList":[]}
|
package/lib/entry-bundler.mjs
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.6.
|
19
|
+
export const version = "3.6.11-master.2024-07-03";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED
package/lib/index.d.mts
CHANGED
@@ -492,38 +492,43 @@ declare module '@vue/runtime-core' {
|
|
492
492
|
}
|
493
493
|
|
494
494
|
export interface GlobalComponents {
|
495
|
-
|
495
|
+
VAlert: typeof import('vuetify/components')['VAlert']
|
496
|
+
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
496
497
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
497
498
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
498
499
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
499
|
-
|
500
|
-
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
501
|
-
VAvatar: typeof import('vuetify/components')['VAvatar']
|
500
|
+
VApp: typeof import('vuetify/components')['VApp']
|
502
501
|
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
503
|
-
|
504
|
-
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
502
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
505
503
|
VBanner: typeof import('vuetify/components')['VBanner']
|
506
504
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
507
505
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
508
|
-
|
506
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
507
|
+
VBadge: typeof import('vuetify/components')['VBadge']
|
509
508
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
510
509
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
511
510
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
512
511
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
513
512
|
VBtn: typeof import('vuetify/components')['VBtn']
|
513
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
514
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
515
|
+
VCarousel: typeof import('vuetify/components')['VCarousel']
|
516
|
+
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
514
517
|
VCard: typeof import('vuetify/components')['VCard']
|
515
518
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
516
519
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
517
520
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
518
521
|
VCardText: typeof import('vuetify/components')['VCardText']
|
519
522
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
520
|
-
|
521
|
-
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
522
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
523
|
+
VChip: typeof import('vuetify/components')['VChip']
|
523
524
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
524
525
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
525
526
|
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
526
527
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
528
|
+
VCounter: typeof import('vuetify/components')['VCounter']
|
529
|
+
VCode: typeof import('vuetify/components')['VCode']
|
530
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
531
|
+
VCombobox: typeof import('vuetify/components')['VCombobox']
|
527
532
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
528
533
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
529
534
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -531,12 +536,6 @@ declare module '@vue/runtime-core' {
|
|
531
536
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
532
537
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
533
538
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
534
|
-
VChip: typeof import('vuetify/components')['VChip']
|
535
|
-
VCode: typeof import('vuetify/components')['VCode']
|
536
|
-
VCounter: typeof import('vuetify/components')['VCounter']
|
537
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
538
|
-
VCombobox: typeof import('vuetify/components')['VCombobox']
|
539
|
-
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
540
539
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
541
540
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
542
541
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
@@ -544,28 +543,28 @@ declare module '@vue/runtime-core' {
|
|
544
543
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
545
544
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
546
545
|
VDivider: typeof import('vuetify/components')['VDivider']
|
546
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
547
547
|
VFab: typeof import('vuetify/components')['VFab']
|
548
548
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
549
549
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
550
550
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
551
551
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
552
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
553
|
-
VFooter: typeof import('vuetify/components')['VFooter']
|
554
552
|
VField: typeof import('vuetify/components')['VField']
|
555
553
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
554
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
556
555
|
VIcon: typeof import('vuetify/components')['VIcon']
|
557
556
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
558
557
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
559
558
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
560
559
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
561
|
-
|
562
|
-
VLabel: typeof import('vuetify/components')['VLabel']
|
560
|
+
VFooter: typeof import('vuetify/components')['VFooter']
|
563
561
|
VImg: typeof import('vuetify/components')['VImg']
|
562
|
+
VInput: typeof import('vuetify/components')['VInput']
|
563
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
564
564
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
565
565
|
VItem: typeof import('vuetify/components')['VItem']
|
566
|
-
|
566
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
567
567
|
VKbd: typeof import('vuetify/components')['VKbd']
|
568
|
-
VMain: typeof import('vuetify/components')['VMain']
|
569
568
|
VList: typeof import('vuetify/components')['VList']
|
570
569
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
571
570
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -575,6 +574,7 @@ declare module '@vue/runtime-core' {
|
|
575
574
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
576
575
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
577
576
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
577
|
+
VMain: typeof import('vuetify/components')['VMain']
|
578
578
|
VMenu: typeof import('vuetify/components')['VMenu']
|
579
579
|
VMessages: typeof import('vuetify/components')['VMessages']
|
580
580
|
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
@@ -584,31 +584,31 @@ declare module '@vue/runtime-core' {
|
|
584
584
|
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
585
585
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
586
586
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
587
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
587
588
|
VRating: typeof import('vuetify/components')['VRating']
|
588
|
-
VSelect: typeof import('vuetify/components')['VSelect']
|
589
589
|
VSheet: typeof import('vuetify/components')['VSheet']
|
590
|
-
VSlider: typeof import('vuetify/components')['VSlider']
|
591
590
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
592
|
-
|
591
|
+
VSelect: typeof import('vuetify/components')['VSelect']
|
592
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
593
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
594
|
+
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
593
595
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
594
596
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
595
|
-
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
596
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
597
597
|
VStepper: typeof import('vuetify/components')['VStepper']
|
598
598
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
599
599
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
600
600
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
601
601
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
602
602
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
603
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
603
604
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
605
|
+
VTextField: typeof import('vuetify/components')['VTextField']
|
604
606
|
VTab: typeof import('vuetify/components')['VTab']
|
605
607
|
VTabs: typeof import('vuetify/components')['VTabs']
|
606
608
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
607
609
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
608
610
|
VTextarea: typeof import('vuetify/components')['VTextarea']
|
609
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
610
611
|
VTable: typeof import('vuetify/components')['VTable']
|
611
|
-
VTextField: typeof import('vuetify/components')['VTextField']
|
612
612
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
613
613
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
614
614
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
@@ -635,11 +635,10 @@ declare module '@vue/runtime-core' {
|
|
635
635
|
VRadio: typeof import('vuetify/components')['VRadio']
|
636
636
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
637
637
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
638
|
-
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
639
638
|
VSparkline: typeof import('vuetify/components')['VSparkline']
|
639
|
+
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
640
640
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
641
641
|
VValidation: typeof import('vuetify/components')['VValidation']
|
642
|
-
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
643
642
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
644
643
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
645
644
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
@@ -656,26 +655,27 @@ declare module '@vue/runtime-core' {
|
|
656
655
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
657
656
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
658
657
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
658
|
+
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
659
659
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
660
660
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
661
661
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
662
662
|
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
663
663
|
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
664
664
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
665
|
+
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
665
666
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
666
667
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
667
|
-
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
668
|
-
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
669
|
-
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
670
|
-
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
671
668
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
672
669
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
673
670
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
671
|
+
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
672
|
+
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
673
|
+
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
674
674
|
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
675
675
|
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
676
676
|
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
677
677
|
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
678
|
-
VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
|
679
678
|
VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
|
679
|
+
VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
|
680
680
|
}
|
681
681
|
}
|
@@ -70,6 +70,10 @@ export const VNumberInput = genericComponent()({
|
|
70
70
|
const controlVariant = computed(() => {
|
71
71
|
return props.hideInput ? 'stacked' : props.controlVariant;
|
72
72
|
});
|
73
|
+
const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse');
|
74
|
+
const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand');
|
75
|
+
const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small');
|
76
|
+
const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
73
77
|
const incrementSlotProps = computed(() => ({
|
74
78
|
click: onClickUp
|
75
79
|
}));
|
@@ -127,18 +131,42 @@ export const VNumberInput = genericComponent()({
|
|
127
131
|
modelValue: _,
|
128
132
|
...textFieldProps
|
129
133
|
} = VTextField.filterProps(props);
|
130
|
-
function
|
131
|
-
|
132
|
-
|
133
|
-
"
|
134
|
-
|
134
|
+
function incrementControlNode() {
|
135
|
+
return !slots.increment ? _createVNode(VBtn, {
|
136
|
+
"disabled": !canIncrease.value,
|
137
|
+
"flat": true,
|
138
|
+
"key": "increment-btn",
|
139
|
+
"height": controlNodeDefaultHeight.value,
|
140
|
+
"name": "increment-btn",
|
141
|
+
"icon": incrementIcon.value,
|
142
|
+
"onClick": onClickUp,
|
143
|
+
"onMousedown": onControlMousedown,
|
144
|
+
"size": controlNodeSize.value,
|
145
|
+
"tabindex": "-1"
|
146
|
+
}, null) : _createVNode(VDefaultsProvider, {
|
147
|
+
"key": "increment-defaults",
|
148
|
+
"defaults": {
|
149
|
+
VBtn: {
|
150
|
+
disabled: !canIncrease.value,
|
151
|
+
flat: true,
|
152
|
+
height: controlNodeDefaultHeight.value,
|
153
|
+
size: controlNodeSize.value,
|
154
|
+
icon: incrementIcon.value
|
155
|
+
}
|
156
|
+
}
|
157
|
+
}, {
|
158
|
+
default: () => [slots.increment(incrementSlotProps.value)]
|
159
|
+
});
|
160
|
+
}
|
161
|
+
function decrementControlNode() {
|
162
|
+
return !slots.decrement ? _createVNode(VBtn, {
|
135
163
|
"disabled": !canDecrease.value,
|
136
164
|
"flat": true,
|
137
165
|
"key": "decrement-btn",
|
138
|
-
"height":
|
166
|
+
"height": controlNodeDefaultHeight.value,
|
139
167
|
"name": "decrement-btn",
|
140
|
-
"icon":
|
141
|
-
"size":
|
168
|
+
"icon": decrementIcon.value,
|
169
|
+
"size": controlNodeSize.value,
|
142
170
|
"tabindex": "-1",
|
143
171
|
"onClick": onClickDown,
|
144
172
|
"onMousedown": onControlMousedown
|
@@ -148,40 +176,21 @@ export const VNumberInput = genericComponent()({
|
|
148
176
|
VBtn: {
|
149
177
|
disabled: !canDecrease.value,
|
150
178
|
flat: true,
|
151
|
-
height:
|
152
|
-
size:
|
153
|
-
icon:
|
179
|
+
height: controlNodeDefaultHeight.value,
|
180
|
+
size: controlNodeSize.value,
|
181
|
+
icon: decrementIcon.value
|
154
182
|
}
|
155
183
|
}
|
156
184
|
}, {
|
157
185
|
default: () => [slots.decrement(decrementSlotProps.value)]
|
158
|
-
})
|
186
|
+
});
|
187
|
+
}
|
188
|
+
function controlNode() {
|
189
|
+
return _createVNode("div", {
|
190
|
+
"class": "v-number-input__control"
|
191
|
+
}, [decrementControlNode(), _createVNode(VDivider, {
|
159
192
|
"vertical": controlVariant.value !== 'stacked'
|
160
|
-
}, null),
|
161
|
-
"disabled": !canIncrease.value,
|
162
|
-
"flat": true,
|
163
|
-
"key": "increment-btn",
|
164
|
-
"height": defaultHeight,
|
165
|
-
"name": "increment-btn",
|
166
|
-
"icon": "$collapse",
|
167
|
-
"onClick": onClickUp,
|
168
|
-
"onMousedown": onControlMousedown,
|
169
|
-
"size": "small",
|
170
|
-
"tabindex": "-1"
|
171
|
-
}, null) : _createVNode(VDefaultsProvider, {
|
172
|
-
"key": "increment-defaults",
|
173
|
-
"defaults": {
|
174
|
-
VBtn: {
|
175
|
-
disabled: !canIncrease.value,
|
176
|
-
flat: true,
|
177
|
-
height: defaultHeight,
|
178
|
-
size: 'small',
|
179
|
-
icon: '$collapse'
|
180
|
-
}
|
181
|
-
}
|
182
|
-
}, {
|
183
|
-
default: () => [slots.increment(incrementSlotProps.value)]
|
184
|
-
})]);
|
193
|
+
}, null), incrementControlNode()]);
|
185
194
|
}
|
186
195
|
function dividerNode() {
|
187
196
|
return !props.hideInput && !props.inset ? _createVNode(VDivider, {
|
@@ -192,27 +201,11 @@ export const VNumberInput = genericComponent()({
|
|
192
201
|
"class": "v-number-input__control"
|
193
202
|
}, [_createVNode(VDivider, {
|
194
203
|
"vertical": true
|
195
|
-
}, null), _createVNode(
|
196
|
-
"flat": true,
|
197
|
-
"height": "100%",
|
198
|
-
"icon": "$plus",
|
199
|
-
"tile": true,
|
200
|
-
"tabindex": "-1",
|
201
|
-
"onClick": onClickUp,
|
202
|
-
"onMousedown": onControlMousedown
|
203
|
-
}, null)]) : !props.reverse ? _createVNode(_Fragment, null, [dividerNode(), controlNode()]) : undefined;
|
204
|
+
}, null), incrementControlNode()]) : !props.reverse ? _createVNode(_Fragment, null, [dividerNode(), controlNode()]) : undefined;
|
204
205
|
const hasAppendInner = slots['append-inner'] || appendInnerControl;
|
205
206
|
const prependInnerControl = controlVariant.value === 'split' ? _createVNode("div", {
|
206
207
|
"class": "v-number-input__control"
|
207
|
-
}, [_createVNode(
|
208
|
-
"flat": true,
|
209
|
-
"height": "100%",
|
210
|
-
"icon": "$minus",
|
211
|
-
"tile": true,
|
212
|
-
"tabindex": "-1",
|
213
|
-
"onClick": onClickDown,
|
214
|
-
"onMousedown": onControlMousedown
|
215
|
-
}, null), _createVNode(VDivider, {
|
208
|
+
}, [decrementControlNode(), _createVNode(VDivider, {
|
216
209
|
"vertical": true
|
217
210
|
}, null)]) : props.reverse ? _createVNode(_Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
218
211
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","watchEffect","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","props","emits","val","setup","_ref","attrs","emit","slots","model","stepDecimals","modelDecimals","value","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onKeydown","includes","key","ctrlKey","preventDefault","test","onModelUpdate","v","onControlMousedown","modelValue","_","textFieldProps","filterProps","controlNode","defaultHeight","_createVNode","decrement","flat","height","size","icon","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: {\n type: Number,\n default: -Infinity,\n },\n max: {\n type: Number,\n default: Infinity,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\n ))\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value - props.step >= props.min\n })\n\n watchEffect(() => {\n if (controlsDisabled.value) return\n if (model.value != null && (model.value < props.min || model.value > props.max)) {\n model.value = clamp(model.value, props.min, props.max)\n }\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = 0\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +(((model.value + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +(((model.value - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown(false)\n return\n }\n if (['ArrowUp'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown()\n return\n }\n\n // Only numbers, +, - & . are allowed\n if (!/^[0-9\\-+.]+$/.test(e.key)) {\n e.preventDefault()\n }\n }\n\n function onModelUpdate (v: string) {\n model.value = v ? +(v) : undefined\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function controlNode () {\n const defaultHeight = controlVariant.value === 'stacked' ? 'auto' : '100%'\n return (\n <div class=\"v-number-input__control\">\n {\n !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ defaultHeight }\n name=\"decrement-btn\"\n icon=\"$expand\"\n size=\"small\"\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: defaultHeight,\n size: 'small',\n icon: '$expand',\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n {\n !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ defaultHeight }\n name=\"increment-btn\"\n icon=\"$collapse\"\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size=\"small\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: defaultHeight,\n size: 'small',\n icon: '$collapse',\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n <VBtn\n flat\n height=\"100%\"\n icon=\"$plus\"\n tile\n tabindex=\"-1\"\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n />\n </div>\n ) : (!props.reverse\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VBtn\n flat\n height=\"100%\"\n icon=\"$minus\"\n tile\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n modelValue={ model.value }\n onUpdate:modelValue={ onModelUpdate }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","watchEffect","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","props","emits","val","setup","_ref","attrs","emit","slots","model","stepDecimals","modelDecimals","value","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onKeydown","includes","key","ctrlKey","preventDefault","test","onModelUpdate","v","onControlMousedown","modelValue","_","textFieldProps","filterProps","incrementControlNode","_createVNode","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: {\n type: Number,\n default: -Infinity,\n },\n max: {\n type: Number,\n default: Infinity,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\n ))\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value - props.step >= props.min\n })\n\n watchEffect(() => {\n if (controlsDisabled.value) return\n if (model.value != null && (model.value < props.min || model.value > props.max)) {\n model.value = clamp(model.value, props.min, props.max)\n }\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = 0\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +(((model.value + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +(((model.value - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown(false)\n return\n }\n if (['ArrowUp'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown()\n return\n }\n\n // Only numbers, +, - & . are allowed\n if (!/^[0-9\\-+.]+$/.test(e.key)) {\n e.preventDefault()\n }\n }\n\n function onModelUpdate (v: string) {\n model.value = v ? +(v) : undefined\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"increment-btn\"\n icon={ incrementIcon.value }\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"decrement-btn\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (!props.reverse\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n modelValue={ model.value }\n onUpdate:modelValue={ onModelUpdate }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|