@vuetify/nightly 3.0.0-beta.5 → 3.0.0-beta.6
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 +39 -17
- package/dist/json/attributes.json +26 -70
- package/dist/json/importMap.json +66 -98
- package/dist/json/tags.json +6 -32
- package/dist/json/web-types.json +135 -255
- package/dist/vuetify.css +688 -652
- package/dist/vuetify.d.ts +3566 -1150
- package/dist/vuetify.esm.js +276 -226
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +275 -225
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +611 -612
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.css +13 -6
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -5
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +8 -3
- package/lib/components/VBreadcrumbs/_variables.scss +2 -1
- package/lib/components/VBtn/VBtn.css +20 -13
- package/lib/components/VBtn/VBtn.mjs +6 -3
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +20 -9
- package/lib/components/VBtn/_variables.scss +2 -3
- package/lib/components/VBtnGroup/VBtnGroup.css +1 -1
- package/lib/components/VCard/VCard.css +3 -3
- package/lib/components/VCard/VCard.sass +3 -3
- package/lib/components/VCard/_variables.scss +1 -0
- package/lib/components/VChip/VChip.mjs +2 -1
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +5 -11
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.mjs +5 -4
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +1 -0
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +3 -0
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +1 -0
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -2
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VField/VField.css +2 -2
- package/lib/components/VField/VField.sass +2 -2
- package/lib/components/VFileInput/VFileInput.css +3 -3
- package/lib/components/VFileInput/VFileInput.mjs +9 -4
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +3 -3
- package/lib/components/VInput/VInput.mjs +1 -1
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VItemGroup/VItem.mjs +3 -0
- package/lib/components/VItemGroup/VItem.mjs.map +1 -1
- package/lib/components/VList/VList.css +2 -2
- package/lib/components/VList/VList.sass +1 -1
- package/lib/components/VList/VListChildren.mjs +4 -3
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +42 -38
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +78 -52
- package/lib/components/VList/VListItem.mjs +69 -41
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +67 -38
- package/lib/components/VList/_variables.scss +11 -5
- package/lib/components/VList/index.mjs +0 -3
- package/lib/components/VList/index.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +23 -9
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +4 -4
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -0
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.mjs +6 -2
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.css +7 -0
- package/lib/components/VSwitch/VSwitch.sass +6 -0
- package/lib/components/VSystemBar/VSystemBar.mjs +1 -1
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VTable/VTable.css +1 -0
- package/lib/components/VTable/VTable.sass +1 -0
- package/lib/components/VTabs/VTab.css +3 -1
- package/lib/components/VTabs/VTab.sass +4 -1
- package/lib/components/VTabs/VTabs.mjs +7 -6
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.mjs +18 -8
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.mjs +18 -8
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.mjs +6 -3
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VWindow/VWindowItem.mjs +3 -0
- package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
- package/lib/components/index.d.ts +3566 -1135
- package/lib/components/transitions/index.mjs +0 -5
- package/lib/components/transitions/index.mjs.map +1 -1
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +2 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/stack.mjs +7 -7
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/theme.mjs +9 -4
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/variant.mjs +2 -2
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/index.d.ts +22 -29
- package/lib/styles/generic/_transitions.scss +13 -77
- package/lib/styles/main.css +44 -58
- package/lib/util/helpers.mjs +16 -4
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +3 -3
- package/lib/components/VList/VListItemAvatar.mjs +0 -24
- package/lib/components/VList/VListItemAvatar.mjs.map +0 -1
- package/lib/components/VList/VListItemHeader.mjs +0 -3
- package/lib/components/VList/VListItemHeader.mjs.map +0 -1
- package/lib/components/VList/VListItemIcon.mjs +0 -24
- package/lib/components/VList/VListItemIcon.mjs.map +0 -1
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { createCssTransition, createJavascriptTransition } from "./createTransition.mjs";
|
|
2
2
|
import ExpandTransitionGenerator from "./expand-transition.mjs"; // Component specific transitions
|
|
3
3
|
|
|
4
|
-
export const VCarouselTransition = createCssTransition('carousel-transition');
|
|
5
|
-
export const VCarouselReverseTransition = createCssTransition('carousel-reverse-transition');
|
|
6
|
-
export const VTabTransition = createCssTransition('tab-transition');
|
|
7
|
-
export const VTabReverseTransition = createCssTransition('tab-reverse-transition');
|
|
8
|
-
export const VMenuTransition = createCssTransition('menu-transition');
|
|
9
4
|
export const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in'); // Generic transitions
|
|
10
5
|
|
|
11
6
|
export const VDialogBottomTransition = createCssTransition('dialog-bottom-transition');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["createCssTransition","createJavascriptTransition","ExpandTransitionGenerator","
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["createCssTransition","createJavascriptTransition","ExpandTransitionGenerator","VFabTransition","VDialogBottomTransition","VDialogTopTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VScrollXReverseTransition","VScrollYTransition","VScrollYReverseTransition","VSlideXTransition","VSlideXReverseTransition","VSlideYTransition","VSlideYReverseTransition","VExpandTransition","VExpandXTransition","VDialogTransition"],"sources":["../../../src/components/transitions/index.ts"],"sourcesContent":["import {\n createCssTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VFabTransition = createCssTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogBottomTransition = createCssTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createCssTransition('dialog-top-transition')\nexport const VFadeTransition = createCssTransition('fade-transition')\nexport const VScaleTransition = createCssTransition('scale-transition')\nexport const VScrollXTransition = createCssTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createCssTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createCssTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createCssTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createCssTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createCssTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createCssTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createCssTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport { VDialogTransition } from './dialog-transition'\n"],"mappings":"SACEA,mB,EACAC,0B;OAGKC,yB,iCAEP;;AACA,OAAO,MAAMC,cAAc,GAAGH,mBAAmB,CAAC,gBAAD,EAAmB,eAAnB,EAAoC,QAApC,CAA1C,C,CAEP;;AACA,OAAO,MAAMI,uBAAuB,GAAGJ,mBAAmB,CAAC,0BAAD,CAAnD;AACP,OAAO,MAAMK,oBAAoB,GAAGL,mBAAmB,CAAC,uBAAD,CAAhD;AACP,OAAO,MAAMM,eAAe,GAAGN,mBAAmB,CAAC,iBAAD,CAA3C;AACP,OAAO,MAAMO,gBAAgB,GAAGP,mBAAmB,CAAC,kBAAD,CAA5C;AACP,OAAO,MAAMQ,kBAAkB,GAAGR,mBAAmB,CAAC,qBAAD,CAA9C;AACP,OAAO,MAAMS,yBAAyB,GAAGT,mBAAmB,CAAC,6BAAD,CAArD;AACP,OAAO,MAAMU,kBAAkB,GAAGV,mBAAmB,CAAC,qBAAD,CAA9C;AACP,OAAO,MAAMW,yBAAyB,GAAGX,mBAAmB,CAAC,6BAAD,CAArD;AACP,OAAO,MAAMY,iBAAiB,GAAGZ,mBAAmB,CAAC,oBAAD,CAA7C;AACP,OAAO,MAAMa,wBAAwB,GAAGb,mBAAmB,CAAC,4BAAD,CAApD;AACP,OAAO,MAAMc,iBAAiB,GAAGd,mBAAmB,CAAC,oBAAD,CAA7C;AACP,OAAO,MAAMe,wBAAwB,GAAGf,mBAAmB,CAAC,4BAAD,CAApD,C,CAEP;;AACA,OAAO,MAAMgB,iBAAiB,GAAGf,0BAA0B,CAAC,mBAAD,EAAsBC,yBAAyB,EAA/C,CAApD;AACP,OAAO,MAAMe,kBAAkB,GAAGhB,0BAA0B,CAAC,qBAAD,EAAwBC,yBAAyB,CAAC,EAAD,EAAK,IAAL,CAAjD,CAArD;SAEEgB,iB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","provide","reactive","toRef","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","getUid","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","emit","toggle","select","useGroup","isUnmounted","items","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","splice","push","forceMandatoryValue","findIndex","find","length","internalValue","slice","includes","step","offset","currentId","currentIndex","i","newIndex","newItem","state","prev","next","getItemIndex","ids","values"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, provide, reactive, toRef, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\n\nexport interface GroupItem {\n id: number\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': ((val: unknown) => void) | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: number) => void\n select: (id: number, value: boolean) => void\n selected: Ref<Readonly<number[]>>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: ComputedRef<{\n id: number\n value: unknown\n disabled: boolean | undefined\n }[]>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: number\n isSelected: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport type GroupItemProps = ExtractPropTypes<ReturnType<typeof makeGroupItemProps>>\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = getUid()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(props, 'value')\n const disabled = computed(() => group.disabled.value || props.disabled)\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n })\n\n return {\n id,\n isSelected,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v == null) return []\n\n return getIds(items, wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: number) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function select (id: number, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (item.value != null) {\n if (modelValue.find(value => deepEqual(value, item.value)) != null) {\n ids.push(item.id)\n }\n } else if (modelValue.includes(i)) {\n ids.push(item.id)\n }\n }\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (ids.includes(item.id)) {\n values.push(item.value != null ? item.value : i)\n }\n }\n\n return values\n}\n"],"mappings":"AAAA;SACSA,e,8BAET;;AACA,SAASC,QAAT,EAAmBC,MAAnB,EAA2BC,eAA3B,EAA4CC,SAA5C,EAAuDC,OAAvD,EAAgEC,QAAhE,EAA0EC,KAA1E,EAAiFC,KAAjF,QAA8F,KAA9F;SACSC,W,EAAaC,S,EAAWC,uB,EAAyBC,kB,EAAoBC,M,EAAQC,Y,EAAcC,W,6BAEpG;;AAgDA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,UAAU,EAAE;IACVC,IAAI,EAAE,IADI;IAEVC,OAAO,EAAEC;EAFC,CAD6B;EAKzCC,QAAQ,EAAEC,OAL+B;EAMzCC,SAAS,EAAE,CAACD,OAAD,EAAUE,MAAV,CAN8B;EAOzCC,GAAG,EAAEC,MAPoC;EAQzCC,aAAa,EAAEH,MAR0B;EASzCI,QAAQ,EAAEN;AAT+B,CAAD,EAUvC,OAVuC,CAAnC;AAYP,OAAO,MAAMO,kBAAkB,GAAGf,YAAY,CAAC;EAC7CgB,KAAK,EAAE,IADsC;EAE7CF,QAAQ,EAAEN,OAFmC;EAG7CK,aAAa,EAAEH;AAH8B,CAAD,EAI3C,YAJ2C,CAAvC;AAmBP,OAAO,SAASO,YAAT,CACLC,KADK,EAELC,SAFK,EAIoB;EAAA,IADzBC,QACyB,uEADd,IACc;EACzB,MAAMC,EAAE,GAAGvB,kBAAkB,CAAC,cAAD,CAA7B;;EAEA,IAAI,CAACuB,EAAL,EAAS;IACP,MAAM,IAAIC,KAAJ,CACJ,kFADI,CAAN;EAGD;;EAED,MAAMC,EAAE,GAAGxB,MAAM,EAAjB;EAEAR,OAAO,CAACiC,MAAM,CAACC,GAAP,CAAY,GAAEN,SAAS,CAACO,WAAY,KAApC,CAAD,EAA4CH,EAA5C,CAAP;EAEA,MAAMI,KAAK,GAAGvC,MAAM,CAAC+B,SAAD,EAAY,IAAZ,CAApB;;EAEA,IAAI,CAACQ,KAAL,EAAY;IACV,IAAI,CAACP,QAAL,EAAe,OAAOO,KAAP;IAEf,MAAM,IAAIL,KAAJ,CAAW,2DAA0DH,SAAS,CAACO,WAAY,EAA3F,CAAN;EACD;;EAED,MAAMV,KAAK,GAAGvB,KAAK,CAACyB,KAAD,EAAQ,OAAR,CAAnB;EACA,MAAMJ,QAAQ,GAAG3B,QAAQ,CAAC,MAAMwC,KAAK,CAACb,QAAN,CAAeE,KAAf,IAAwBE,KAAK,CAACJ,QAArC,CAAzB;EAEAa,KAAK,CAACC,QAAN,CAAe;IACbL,EADa;IAEbP,KAFa;IAGbF;EAHa,CAAf,EAIGO,EAJH;EAMAhC,eAAe,CAAC,MAAM;IACpBsC,KAAK,CAACE,UAAN,CAAiBN,EAAjB;EACD,CAFc,CAAf;EAIA,MAAMO,UAAU,GAAG3C,QAAQ,CAAC,MAAM;IAChC,OAAOwC,KAAK,CAACG,UAAN,CAAiBP,EAAjB,CAAP;EACD,CAF0B,CAA3B;EAIA,MAAMV,aAAa,GAAG1B,QAAQ,CAAC,MAAM2C,UAAU,CAACd,KAAX,IAAoB,CAACW,KAAK,CAACd,aAAN,CAAoBG,KAArB,EAA4BE,KAAK,CAACL,aAAlC,CAA3B,CAA9B;EAEAnB,KAAK,CAACoC,UAAD,EAAad,KAAK,IAAI;IACzBK,EAAE,CAACU,IAAH,CAAQ,gBAAR,EAA0B;MAAEf;IAAF,CAA1B;EACD,CAFI,CAAL;EAIA,OAAO;IACLO,EADK;IAELO,UAFK;IAGLE,MAAM,EAAE,MAAML,KAAK,CAACM,MAAN,CAAaV,EAAb,EAAiB,CAACO,UAAU,CAACd,KAA7B,CAHT;IAILiB,MAAM,EAAGjB,KAAD,IAAoBW,KAAK,CAACM,MAAN,CAAaV,EAAb,EAAiBP,KAAjB,CAJvB;IAKLH,aALK;IAMLG,KANK;IAOLF,QAPK;IAQLa;EARK,CAAP;AAUD;AAED,OAAO,SAASO,QAAT,CACLhB,KADK,EAELC,SAFK,EAGL;EACA,IAAIgB,WAAW,GAAG,KAAlB;EACA,MAAMC,KAAK,GAAG5C,QAAQ,CAAc,EAAd,CAAtB;EACA,MAAM6C,QAAQ,GAAGnD,eAAe,CAC9BgC,KAD8B,EAE9B,YAF8B,EAG9B,EAH8B,EAI9BoB,CAAC,IAAI;IACH,IAAIA,CAAC,IAAI,IAAT,EAAe,OAAO,EAAP;IAEf,OAAOC,MAAM,CAACH,KAAD,EAAQnC,WAAW,CAACqC,CAAD,CAAnB,CAAb;EACD,CAR6B,EAS9BA,CAAC,IAAI;IACH,MAAME,GAAG,GAAGC,SAAS,CAACL,KAAD,EAAQE,CAAR,CAArB;IAEA,OAAOpB,KAAK,CAACX,QAAN,GAAiBiC,GAAjB,GAAuBA,GAAG,CAAC,CAAD,CAAjC;EACD,CAb6B,CAAhC;EAgBA,MAAME,OAAO,GAAG5C,kBAAkB,CAAC,UAAD,CAAlC;;EAEA,SAAS8B,QAAT,CAAmBe,IAAnB,EAAoCtB,EAApC,EAAmE;IACjE;IACA,MAAMuB,SAAS,GAAGD,IAAlB;IAEA,MAAME,GAAG,GAAGrB,MAAM,CAACC,GAAP,CAAY,GAAEN,SAAS,CAACO,WAAY,KAApC,CAAZ;IACA,MAAMoB,QAAQ,GAAGjD,uBAAuB,CAACgD,GAAD,EAAMH,OAAN,oBAAMA,OAAO,CAAEK,KAAf,CAAxC;IACA,MAAMC,KAAK,GAAGF,QAAQ,CAACG,OAAT,CAAiB5B,EAAjB,CAAd;;IAEA,IAAI2B,KAAK,GAAG,CAAC,CAAb,EAAgB;MACdZ,KAAK,CAACc,MAAN,CAAaF,KAAb,EAAoB,CAApB,EAAuBJ,SAAvB;IACD,CAFD,MAEO;MACLR,KAAK,CAACe,IAAN,CAAWP,SAAX;IACD;EACF;;EAED,SAASf,UAAT,CAAqBN,EAArB,EAAiC;IAC/B,IAAIY,WAAJ,EAAiB,OADc,CAG/B;IACA;IACA;;IAEAiB,mBAAmB;IAEnB,MAAMJ,KAAK,GAAGZ,KAAK,CAACiB,SAAN,CAAgBV,IAAI,IAAIA,IAAI,CAACpB,EAAL,KAAYA,EAApC,CAAd;IACAa,KAAK,CAACc,MAAN,CAAaF,KAAb,EAAoB,CAApB;EACD,CA/CD,CAiDA;;;EACA,SAASI,mBAAT,GAAgC;IAC9B,MAAMT,IAAI,GAAGP,KAAK,CAACkB,IAAN,CAAWX,IAAI,IAAI,CAACA,IAAI,CAAC7B,QAAzB,CAAb;;IACA,IAAI6B,IAAI,IAAIzB,KAAK,CAACT,SAAN,KAAoB,OAA5B,IAAuC,CAAC4B,QAAQ,CAACrB,KAAT,CAAeuC,MAA3D,EAAmE;MACjElB,QAAQ,CAACrB,KAAT,GAAiB,CAAC2B,IAAI,CAACpB,EAAN,CAAjB;IACD;EACF;;EAEDjC,SAAS,CAAC,MAAM;IACd8D,mBAAmB;EACpB,CAFQ,CAAT;EAIA/D,eAAe,CAAC,MAAM;IACpB8C,WAAW,GAAG,IAAd;EACD,CAFc,CAAf;;EAIA,SAASF,MAAT,CAAiBV,EAAjB,EAA6BP,KAA7B,EAA8C;IAC5C,MAAM2B,IAAI,GAAGP,KAAK,CAACkB,IAAN,CAAWX,IAAI,IAAIA,IAAI,CAACpB,EAAL,KAAYA,EAA/B,CAAb;IACA,IAAIP,KAAK,IAAI2B,IAAJ,YAAIA,IAAI,CAAE7B,QAAnB,EAA6B;;IAE7B,IAAII,KAAK,CAACX,QAAV,EAAoB;MAAA;;MAClB,MAAMiD,aAAa,GAAGnB,QAAQ,CAACrB,KAAT,CAAeyC,KAAf,EAAtB;MACA,MAAMT,KAAK,GAAGQ,aAAa,CAACH,SAAd,CAAwBf,CAAC,IAAIA,CAAC,KAAKf,EAAnC,CAAd;MACA,MAAMO,UAAU,GAAG,CAACkB,KAApB;MACAhC,KAAK,aAAGA,KAAH,qBAAY,CAACc,UAAlB,CAJkB,CAMlB;MACA;MACA;;MACA,IACEA,UAAU,IACVZ,KAAK,CAACT,SADN,IAEA+C,aAAa,CAACD,MAAd,IAAwB,CAH1B,EAIE,OAbgB,CAelB;MACA;;MACA,IACE,CAACzB,UAAD,IACAZ,KAAK,CAACP,GAAN,IAAa,IADb,IAEA6C,aAAa,CAACD,MAAd,GAAuB,CAAvB,GAA2BrC,KAAK,CAACP,GAHnC,EAIE;MAEF,IAAIqC,KAAK,GAAG,CAAR,IAAahC,KAAjB,EAAwBwC,aAAa,CAACL,IAAd,CAAmB5B,EAAnB,EAAxB,KACK,IAAIyB,KAAK,IAAI,CAAT,IAAc,CAAChC,KAAnB,EAA0BwC,aAAa,CAACN,MAAd,CAAqBF,KAArB,EAA4B,CAA5B;MAE/BX,QAAQ,CAACrB,KAAT,GAAiBwC,aAAjB;IACD,CA3BD,MA2BO;MAAA;;MACL,MAAM1B,UAAU,GAAGO,QAAQ,CAACrB,KAAT,CAAe0C,QAAf,CAAwBnC,EAAxB,CAAnB;MACA,IAAIL,KAAK,CAACT,SAAN,IAAmBqB,UAAvB,EAAmC;MAEnCO,QAAQ,CAACrB,KAAT,GAAiB,YAACA,KAAD,sBAAU,CAACc,UAAX,IAAyB,CAACP,EAAD,CAAzB,GAAgC,EAAjD;IACD;EACF;;EAED,SAASoC,IAAT,CAAeC,MAAf,EAA+B;IAC7B;IACA,IAAI1C,KAAK,CAACX,QAAV,EAAoBZ,WAAW,CAAC,yDAAD,CAAX;;IAEpB,IAAI,CAAC0C,QAAQ,CAACrB,KAAT,CAAeuC,MAApB,EAA4B;MAC1B,MAAMZ,IAAI,GAAGP,KAAK,CAACkB,IAAN,CAAWX,IAAI,IAAI,CAACA,IAAI,CAAC7B,QAAzB,CAAb;MACA6B,IAAI,KAAKN,QAAQ,CAACrB,KAAT,GAAiB,CAAC2B,IAAI,CAACpB,EAAN,CAAtB,CAAJ;IACD,CAHD,MAGO;MACL,MAAMsC,SAAS,GAAGxB,QAAQ,CAACrB,KAAT,CAAe,CAAf,CAAlB;MACA,MAAM8C,YAAY,GAAG1B,KAAK,CAACiB,SAAN,CAAgBU,CAAC,IAAIA,CAAC,CAACxC,EAAF,KAASsC,SAA9B,CAArB;MAEA,IAAIG,QAAQ,GAAG,CAACF,YAAY,GAAGF,MAAhB,IAA0BxB,KAAK,CAACmB,MAA/C;MACA,IAAIU,OAAO,GAAG7B,KAAK,CAAC4B,QAAD,CAAnB;;MAEA,OAAOC,OAAO,CAACnD,QAAR,IAAoBkD,QAAQ,KAAKF,YAAxC,EAAsD;QACpDE,QAAQ,GAAG,CAACA,QAAQ,GAAGJ,MAAZ,IAAsBxB,KAAK,CAACmB,MAAvC;QACAU,OAAO,GAAG7B,KAAK,CAAC4B,QAAD,CAAf;MACD;;MAED,IAAIC,OAAO,CAACnD,QAAZ,EAAsB;MAEtBuB,QAAQ,CAACrB,KAAT,GAAiB,CAACoB,KAAK,CAAC4B,QAAD,CAAL,CAAgBzC,EAAjB,CAAjB;IACD;EACF;;EAED,MAAM2C,KAAmB,GAAG;IAC1BtC,QAD0B;IAE1BC,UAF0B;IAG1BQ,QAH0B;IAI1BJ,MAJ0B;IAK1BnB,QAAQ,EAAErB,KAAK,CAACyB,KAAD,EAAQ,UAAR,CALW;IAM1BiD,IAAI,EAAE,MAAMR,IAAI,CAACvB,KAAK,CAACmB,MAAN,GAAe,CAAhB,CANU;IAO1Ba,IAAI,EAAE,MAAMT,IAAI,CAAC,CAAD,CAPU;IAQ1B7B,UAAU,EAAGP,EAAD,IAAgBc,QAAQ,CAACrB,KAAT,CAAe0C,QAAf,CAAwBnC,EAAxB,CARF;IAS1BV,aAAa,EAAE1B,QAAQ,CAAC,MAAM+B,KAAK,CAACL,aAAb,CATG;IAU1BuB,KAAK,EAAEjD,QAAQ,CAAC,MAAMiD,KAAP,CAVW;IAW1BiC,YAAY,EAAGrD,KAAD,IAAoBqD,YAAY,CAACjC,KAAD,EAAQpB,KAAR;EAXpB,CAA5B;EAcAzB,OAAO,CAAC4B,SAAD,EAAY+C,KAAZ,CAAP;EAEA,OAAOA,KAAP;AACD;;AAED,SAASG,YAAT,CAAuBjC,KAAvB,EAAsDpB,KAAtD,EAAsE;EACpE,MAAMsD,GAAG,GAAG/B,MAAM,CAACH,KAAD,EAAQ,CAACpB,KAAD,CAAR,CAAlB;EAEA,IAAI,CAACsD,GAAG,CAACf,MAAT,EAAiB,OAAO,CAAC,CAAR;EAEjB,OAAOnB,KAAK,CAACiB,SAAN,CAAgBV,IAAI,IAAIA,IAAI,CAACpB,EAAL,KAAY+C,GAAG,CAAC,CAAD,CAAvC,CAAP;AACD;;AAED,SAAS/B,MAAT,CAAiBH,KAAjB,EAAgDjC,UAAhD,EAAmE;EACjE,MAAMmE,GAAG,GAAG,EAAZ;;EACA,KAAK,IAAIP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3B,KAAK,CAACmB,MAA1B,EAAkCQ,CAAC,EAAnC,EAAuC;IACrC,MAAMpB,IAAI,GAAGP,KAAK,CAAC2B,CAAD,CAAlB;;IAEA,IAAIpB,IAAI,CAAC3B,KAAL,IAAc,IAAlB,EAAwB;MACtB,IAAIb,UAAU,CAACmD,IAAX,CAAgBtC,KAAK,IAAIpB,SAAS,CAACoB,KAAD,EAAQ2B,IAAI,CAAC3B,KAAb,CAAlC,KAA0D,IAA9D,EAAoE;QAClEsD,GAAG,CAACnB,IAAJ,CAASR,IAAI,CAACpB,EAAd;MACD;IACF,CAJD,MAIO,IAAIpB,UAAU,CAACuD,QAAX,CAAoBK,CAApB,CAAJ,EAA4B;MACjCO,GAAG,CAACnB,IAAJ,CAASR,IAAI,CAACpB,EAAd;IACD;EACF;;EAED,OAAO+C,GAAP;AACD;;AAED,SAAS7B,SAAT,CAAoBL,KAApB,EAAmDkC,GAAnD,EAA+D;EAC7D,MAAMC,MAAM,GAAG,EAAf;;EAEA,KAAK,IAAIR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3B,KAAK,CAACmB,MAA1B,EAAkCQ,CAAC,EAAnC,EAAuC;IACrC,MAAMpB,IAAI,GAAGP,KAAK,CAAC2B,CAAD,CAAlB;;IAEA,IAAIO,GAAG,CAACZ,QAAJ,CAAaf,IAAI,CAACpB,EAAlB,CAAJ,EAA2B;MACzBgD,MAAM,CAACpB,IAAP,CAAYR,IAAI,CAAC3B,KAAL,IAAc,IAAd,GAAqB2B,IAAI,CAAC3B,KAA1B,GAAkC+C,CAA9C;IACD;EACF;;EAED,OAAOQ,MAAP;AACD"}
|
|
1
|
+
{"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","provide","reactive","toRef","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","getUid","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","emit","toggle","select","useGroup","isUnmounted","items","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","splice","push","forceMandatoryValue","findIndex","find","length","internalValue","slice","includes","step","offset","currentId","currentIndex","i","newIndex","newItem","state","prev","next","getItemIndex","ids","values"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, provide, reactive, toRef, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, getUid, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ComputedRef, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\n\nexport interface GroupItem {\n id: number\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': ((val: unknown) => void) | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: number) => void\n select: (id: number, value: boolean) => void\n selected: Ref<Readonly<number[]>>\n isSelected: (id: number) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: ComputedRef<{\n id: number\n value: unknown\n disabled: boolean | undefined\n }[]>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: number\n isSelected: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': ((val: { value: boolean }) => void) | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = getUid()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(props, 'value')\n const disabled = computed(() => group.disabled.value || props.disabled)\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n })\n\n return {\n id,\n isSelected,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v == null) return []\n\n return getIds(items, wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: number) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function select (id: number, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (item.value != null) {\n if (modelValue.find(value => deepEqual(value, item.value)) != null) {\n ids.push(item.id)\n }\n } else if (modelValue.includes(i)) {\n ids.push(item.id)\n }\n }\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n\n if (ids.includes(item.id)) {\n values.push(item.value != null ? item.value : i)\n }\n }\n\n return values\n}\n"],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@ export function useProxiedModel(props, prop, defaultValue) {
|
|
|
10
10
|
const propIsDefined = computed(() => {
|
|
11
11
|
var _vm$vnode$props, _vm$vnode$props2;
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
void props[prop];
|
|
14
|
+
return !!(vm != null && (_vm$vnode$props = vm.vnode.props) != null && _vm$vnode$props.hasOwnProperty(prop) || vm != null && (_vm$vnode$props2 = vm.vnode.props) != null && _vm$vnode$props2.hasOwnProperty(toKebabCase(prop)));
|
|
14
15
|
});
|
|
15
16
|
const internal = ref(transformIn(props[prop]));
|
|
16
17
|
return computed({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxiedModel.mjs","names":["computed","ref","getCurrentInstance","toKebabCase","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","propIsDefined","vnode","hasOwnProperty","internal","get","value","set","newValue","emit"],"sources":["../../src/composables/proxiedModel.ts"],"sourcesContent":["// Utilities\nimport { computed, ref } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n\n const propIsDefined = computed(() => {\n
|
|
1
|
+
{"version":3,"file":"proxiedModel.mjs","names":["computed","ref","getCurrentInstance","toKebabCase","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","propIsDefined","vnode","hasOwnProperty","internal","get","value","set","newValue","emit"],"sources":["../../src/composables/proxiedModel.ts"],"sourcesContent":["// Utilities\nimport { computed, ref } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n\n const propIsDefined = computed(() => {\n void props[prop]\n return !!(\n (vm?.vnode.props?.hasOwnProperty(prop) || vm?.vnode.props?.hasOwnProperty(toKebabCase(prop)))\n )\n })\n\n const internal = ref(transformIn(props[prop])) as Ref<Inner>\n\n return computed<Inner extends any[] ? Readonly<Inner> : Inner>({\n get (): any {\n if (propIsDefined.value) return transformIn(props[prop])\n else return internal.value\n },\n set (newValue) {\n if ((propIsDefined.value ? transformIn(props[prop]) : internal.value) === newValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, transformOut(newValue))\n },\n })\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAT,EAAmBC,GAAnB,QAA8B,KAA9B;SACSC,kB,EAAoBC,W,6BAE7B;;AAGA;AACA,OAAO,SAASC,eAAT,CAKLC,KALK,EAMLC,IANK,EAOLC,YAPK,EAUL;EAAA,IAFAC,WAEA,uEAF+CC,CAAD,IAAYA,CAE1D;EAAA,IADAC,YACA,uEAD+CD,CAAD,IAAYA,CAC1D;EACA,MAAME,EAAE,GAAGT,kBAAkB,CAAC,iBAAD,CAA7B;EAEA,MAAMU,aAAa,GAAGZ,QAAQ,CAAC,MAAM;IAAA;;IACnC,KAAKK,KAAK,CAACC,IAAD,CAAV;IACA,OAAO,CAAC,EACLK,EAAE,QAAF,uBAAAA,EAAE,CAAEE,KAAJ,CAAUR,KAAV,6BAAiBS,cAAjB,CAAgCR,IAAhC,KAAyCK,EAAzC,gCAAyCA,EAAE,CAAEE,KAAJ,CAAUR,KAAnD,aAAyC,iBAAiBS,cAAjB,CAAgCX,WAAW,CAACG,IAAD,CAA3C,CADpC,CAAR;EAGD,CAL6B,CAA9B;EAOA,MAAMS,QAAQ,GAAGd,GAAG,CAACO,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAZ,CAApB;EAEA,OAAON,QAAQ,CAAgD;IAC7DgB,GAAG,GAAS;MACV,IAAIJ,aAAa,CAACK,KAAlB,EAAyB,OAAOT,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAlB,CAAzB,KACK,OAAOS,QAAQ,CAACE,KAAhB;IACN,CAJ4D;;IAK7DC,GAAG,CAAEC,QAAF,EAAY;MACb,IAAI,CAACP,aAAa,CAACK,KAAd,GAAsBT,WAAW,CAACH,KAAK,CAACC,IAAD,CAAN,CAAjC,GAAiDS,QAAQ,CAACE,KAA3D,MAAsEE,QAA1E,EAAoF;QAClF;MACD;;MACDJ,QAAQ,CAACE,KAAT,GAAiBE,QAAjB;MACAR,EAAE,QAAF,YAAAA,EAAE,CAAES,IAAJ,CAAU,UAASd,IAAK,EAAxB,EAA2BI,YAAY,CAACS,QAAD,CAAvC;IACD;;EAX4D,CAAhD,CAAf;AAaD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useToggleScope } from "./toggleScope.mjs";
|
|
2
|
-
import { computed, onScopeDispose, reactive, readonly, ref,
|
|
2
|
+
import { computed, onScopeDispose, reactive, readonly, ref, watchEffect } from 'vue';
|
|
3
3
|
import { getCurrentInstance } from "../util/index.mjs"; // Types
|
|
4
4
|
|
|
5
5
|
const stack = reactive([]);
|
|
@@ -9,21 +9,21 @@ export function useStack(isActive, zIndex) {
|
|
|
9
9
|
const _zIndex = ref(+zIndex.value);
|
|
10
10
|
|
|
11
11
|
useToggleScope(isActive, () => {
|
|
12
|
-
var _stack;
|
|
12
|
+
var _stack$at;
|
|
13
13
|
|
|
14
|
-
const lastZIndex = (_stack = stack
|
|
14
|
+
const lastZIndex = (_stack$at = stack.at(-1)) == null ? void 0 : _stack$at[1];
|
|
15
15
|
_zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value;
|
|
16
|
-
stack.push([vm, _zIndex.value]);
|
|
16
|
+
stack.push([vm.uid, _zIndex.value]);
|
|
17
17
|
onScopeDispose(() => {
|
|
18
|
-
const idx = stack.findIndex(v => v[0] === vm);
|
|
18
|
+
const idx = stack.findIndex(v => v[0] === vm.uid);
|
|
19
19
|
stack.splice(idx, 1);
|
|
20
20
|
});
|
|
21
21
|
});
|
|
22
22
|
const isTop = ref(true);
|
|
23
23
|
watchEffect(() => {
|
|
24
|
-
var
|
|
24
|
+
var _stack$at2;
|
|
25
25
|
|
|
26
|
-
const _isTop =
|
|
26
|
+
const _isTop = ((_stack$at2 = stack.at(-1)) == null ? void 0 : _stack$at2[0]) === vm.uid;
|
|
27
27
|
|
|
28
28
|
setTimeout(() => isTop.value = _isTop);
|
|
29
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.mjs","names":["useToggleScope","computed","onScopeDispose","reactive","readonly","ref","
|
|
1
|
+
{"version":3,"file":"stack.mjs","names":["useToggleScope","computed","onScopeDispose","reactive","readonly","ref","watchEffect","getCurrentInstance","stack","useStack","isActive","zIndex","vm","_zIndex","value","lastZIndex","at","push","uid","idx","findIndex","v","splice","isTop","_isTop","setTimeout","stackStyles"],"sources":["../../src/composables/stack.ts"],"sourcesContent":["import { useToggleScope } from '@/composables/toggleScope'\n\nimport { computed, onScopeDispose, reactive, readonly, ref, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst stack = reactive<[uid: number, zIndex: number][]>([])\n\nexport function useStack (isActive: Readonly<Ref<boolean>>, zIndex: Readonly<Ref<string | number>>) {\n const vm = getCurrentInstance('useStack')\n\n const _zIndex = ref(+zIndex.value)\n useToggleScope(isActive, () => {\n const lastZIndex = stack.at(-1)?.[1]\n _zIndex.value = lastZIndex ? lastZIndex + 10 : +zIndex.value\n stack.push([vm.uid, _zIndex.value])\n\n onScopeDispose(() => {\n const idx = stack.findIndex(v => v[0] === vm.uid)\n stack.splice(idx, 1)\n })\n })\n\n const isTop = ref(true)\n watchEffect(() => {\n const _isTop = stack.at(-1)?.[0] === vm.uid\n setTimeout(() => isTop.value = _isTop)\n })\n\n return {\n isTop: readonly(isTop),\n stackStyles: computed(() => ({ zIndex: _zIndex.value })),\n }\n}\n"],"mappings":"SAASA,c;AAET,SAASC,QAAT,EAAmBC,cAAnB,EAAmCC,QAAnC,EAA6CC,QAA7C,EAAuDC,GAAvD,EAA4DC,WAA5D,QAA+E,KAA/E;SACSC,kB,6BAET;;AAGA,MAAMC,KAAK,GAAGL,QAAQ,CAAkC,EAAlC,CAAtB;AAEA,OAAO,SAASM,QAAT,CAAmBC,QAAnB,EAAqDC,MAArD,EAA6F;EAClG,MAAMC,EAAE,GAAGL,kBAAkB,CAAC,UAAD,CAA7B;;EAEA,MAAMM,OAAO,GAAGR,GAAG,CAAC,CAACM,MAAM,CAACG,KAAT,CAAnB;;EACAd,cAAc,CAACU,QAAD,EAAW,MAAM;IAAA;;IAC7B,MAAMK,UAAU,gBAAGP,KAAK,CAACQ,EAAN,CAAS,CAAC,CAAV,CAAH,qBAAG,UAAe,CAAf,CAAnB;IACAH,OAAO,CAACC,KAAR,GAAgBC,UAAU,GAAGA,UAAU,GAAG,EAAhB,GAAqB,CAACJ,MAAM,CAACG,KAAvD;IACAN,KAAK,CAACS,IAAN,CAAW,CAACL,EAAE,CAACM,GAAJ,EAASL,OAAO,CAACC,KAAjB,CAAX;IAEAZ,cAAc,CAAC,MAAM;MACnB,MAAMiB,GAAG,GAAGX,KAAK,CAACY,SAAN,CAAgBC,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAD,KAAST,EAAE,CAACM,GAAjC,CAAZ;MACAV,KAAK,CAACc,MAAN,CAAaH,GAAb,EAAkB,CAAlB;IACD,CAHa,CAAd;EAID,CATa,CAAd;EAWA,MAAMI,KAAK,GAAGlB,GAAG,CAAC,IAAD,CAAjB;EACAC,WAAW,CAAC,MAAM;IAAA;;IAChB,MAAMkB,MAAM,GAAG,eAAAhB,KAAK,CAACQ,EAAN,CAAS,CAAC,CAAV,iCAAe,CAAf,OAAsBJ,EAAE,CAACM,GAAxC;;IACAO,UAAU,CAAC,MAAMF,KAAK,CAACT,KAAN,GAAcU,MAArB,CAAV;EACD,CAHU,CAAX;EAKA,OAAO;IACLD,KAAK,EAAEnB,QAAQ,CAACmB,KAAD,CADV;IAELG,WAAW,EAAEzB,QAAQ,CAAC,OAAO;MAAEU,MAAM,EAAEE,OAAO,CAACC;IAAlB,CAAP,CAAD;EAFhB,CAAP;AAID"}
|
|
@@ -192,13 +192,17 @@ export function createTheme(app, options) {
|
|
|
192
192
|
});
|
|
193
193
|
|
|
194
194
|
if (head) {
|
|
195
|
-
head.addHeadObjs(computed(() =>
|
|
196
|
-
style
|
|
195
|
+
head.addHeadObjs(computed(() => {
|
|
196
|
+
const style = {
|
|
197
197
|
children: styles.value,
|
|
198
198
|
type: 'text/css',
|
|
199
199
|
id: 'vuetify-theme-stylesheet'
|
|
200
|
-
}
|
|
201
|
-
|
|
200
|
+
};
|
|
201
|
+
if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce;
|
|
202
|
+
return {
|
|
203
|
+
style: [style]
|
|
204
|
+
};
|
|
205
|
+
}));
|
|
202
206
|
|
|
203
207
|
if (IN_BROWSER) {
|
|
204
208
|
watchEffect(() => head.updateDOM());
|
|
@@ -216,6 +220,7 @@ export function createTheme(app, options) {
|
|
|
216
220
|
const el = document.createElement('style');
|
|
217
221
|
el.type = 'text/css';
|
|
218
222
|
el.id = 'vuetify-theme-stylesheet';
|
|
223
|
+
if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce);
|
|
219
224
|
styleEl = el;
|
|
220
225
|
document.head.appendChild(styleEl);
|
|
221
226
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","colorToInt","colorToRGB","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","intToHex","lighten","mergeDeep","propsFactory","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","isDisabled","key","Object","entries","createTheme","app","head","_context","provides","usehead","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","themeName","genCssVariables","map","startsWith","undefined","rgb","r","g","b","Set","values","flatMap","str","i","join","addHeadObjs","style","children","type","id","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","push","line","lightOverlay","darkOverlay"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n colorToInt,\n colorToRGB,\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n intToHex,\n lighten,\n mergeDeep,\n propsFactory,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'kbd-background-color': '#212529',\n 'kbd-color': '#FFFFFF',\n 'code-background-color': '#C2C2C2',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'kbd-background-color': '#212529',\n 'kbd-color': '#FFFFFF',\n 'code-background-color': '#B7B7B7',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (app: App, options?: ThemeOptions): ThemeInstance {\n const head = app._context.provides.usehead as HeadClient | undefined\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = intToHex(fn(colorToInt(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = colorToInt(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(0, colorVal))\n const whiteContrast = Math.abs(APCAcontrast(0xffffff, colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n const { variables, dark } = theme\n\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ...Object.keys(variables).map(key => {\n const value = variables[key]\n const color = typeof value === 'string' && value.startsWith('#') ? colorToRGB(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n\n return `--v-${key}: ${rgb ?? value}`\n }),\n ])\n }\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/on-[a-z]/.test(key)) {\n createCssClass(lines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(lines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(lines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(lines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n if (head) {\n head.addHeadObjs(computed(() => ({\n style: [{\n children: styles.value,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n }],\n })))\n\n if (IN_BROWSER) {\n watchEffect(() => head.updateDOM())\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = colorToRGB(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n return variables\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","reactive","ref","watch","watchEffect","colorToInt","colorToRGB","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","intToHex","lighten","mergeDeep","propsFactory","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","isDisabled","key","Object","entries","createTheme","app","head","_context","provides","usehead","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","themeName","genCssVariables","map","startsWith","undefined","rgb","r","g","b","Set","values","flatMap","str","i","join","addHeadObjs","style","children","type","id","cspNonce","nonce","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","push","line","lightOverlay","darkOverlay"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n colorToInt,\n colorToRGB,\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n intToHex,\n lighten,\n mergeDeep,\n propsFactory,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\nimport type { HeadAttrs, HeadClient } from '@vueuse/head'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'kbd-background-color': '#212529',\n 'kbd-color': '#FFFFFF',\n 'code-background-color': '#C2C2C2',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'kbd-background-color': '#212529',\n 'kbd-color': '#FFFFFF',\n 'code-background-color': '#B7B7B7',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (app: App, options?: ThemeOptions): ThemeInstance {\n const head = app._context.provides.usehead as HeadClient | undefined\n const parsedOptions = reactive(parseThemeOptions(options))\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = intToHex(fn(colorToInt(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = colorToInt(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(0, colorVal))\n const whiteContrast = Math.abs(APCAcontrast(0xffffff, colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n const { variables, dark } = theme\n\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ...Object.keys(variables).map(key => {\n const value = variables[key]\n const color = typeof value === 'string' && value.startsWith('#') ? colorToRGB(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n\n return `--v-${key}: ${rgb ?? value}`\n }),\n ])\n }\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/on-[a-z]/.test(key)) {\n createCssClass(lines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(lines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(lines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(lines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n if (head) {\n head.addHeadObjs(computed(() => {\n const style: HeadAttrs = {\n children: styles.value,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n }\n if (parsedOptions.cspNonce) style.nonce = parsedOptions.cspNonce\n\n return { style: [style] }\n }))\n\n if (IN_BROWSER) {\n watchEffect(() => head.updateDOM())\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n watch(styles, updateStyles, { immediate: true })\n function updateStyles () {\n if (parsedOptions.isDisabled) return\n\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = colorToRGB(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n return variables\n}\n"],"mappings":"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"}
|
|
@@ -7,10 +7,10 @@ import { getCurrentInstanceName, propsFactory } from "../util/index.mjs"; // Typ
|
|
|
7
7
|
|
|
8
8
|
export const allowedVariants = ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'];
|
|
9
9
|
export function genOverlays(isClickable, name) {
|
|
10
|
-
return _createVNode(_Fragment, null, [isClickable && _createVNode("
|
|
10
|
+
return _createVNode(_Fragment, null, [isClickable && _createVNode("span", {
|
|
11
11
|
"key": "overlay",
|
|
12
12
|
"class": `${name}__overlay`
|
|
13
|
-
}, null), _createVNode("
|
|
13
|
+
}, null), _createVNode("span", {
|
|
14
14
|
"key": "underlay",
|
|
15
15
|
"class": `${name}__underlay`
|
|
16
16
|
}, null)]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.mjs","names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","variantClasses","colorClasses","colorStyles"],"sources":["../../src/composables/variant.tsx"],"sourcesContent":["// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <
|
|
1
|
+
{"version":3,"file":"variant.mjs","names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","variantClasses","colorClasses","colorStyles"],"sources":["../../src/composables/variant.tsx"],"sourcesContent":["// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n 'elevated',\n 'flat',\n 'tonal',\n 'outlined',\n 'text',\n 'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n color?: string\n variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n return (\n <>\n { isClickable && <span key=\"overlay\" class={`${name}__overlay`} /> }\n\n <span key=\"underlay\" class={`${name}__underlay`} />\n </>\n )\n}\n\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'elevated',\n validator: (v: any) => allowedVariants.includes(v),\n },\n}, 'variant')\n\nexport function useVariant (\n props: MaybeRef<VariantProps>,\n name = getCurrentInstanceName(),\n) {\n const variantClasses = computed(() => {\n const { variant } = unref(props)\n return `${name}--variant-${variant}`\n })\n\n const { colorClasses, colorStyles } = useColor(computed(() => {\n const { variant, color } = unref(props)\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n }\n }))\n\n return { colorClasses, colorStyles, variantClasses }\n}\n"],"mappings":";AAAA;SACSA,Q,uBAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,sB,EAAwBC,Y,6BAEjC;;AAIA,OAAO,MAAMC,eAAe,GAAG,CAC7B,UAD6B,EAE7B,MAF6B,EAG7B,OAH6B,EAI7B,UAJ6B,EAK7B,MAL6B,EAM7B,OAN6B,CAAxB;AAgBP,OAAO,SAASC,WAAT,CAAsBC,WAAtB,EAA4CC,IAA5C,EAA0D;EAC/D,sCAEMD,WAAW;IAAA,OAAc,SAAd;IAAA,SAAgC,GAAEC,IAAK;EAAvC,QAFjB;IAAA,OAIc,UAJd;IAAA,SAIiC,GAAEA,IAAK;EAJxC;AAOD;AAED,OAAO,MAAMC,gBAAgB,GAAGL,YAAY,CAAC;EAC3CM,KAAK,EAAEC,MADoC;EAE3CC,OAAO,EAAE;IACPC,IAAI,EAAEF,MADC;IAEPG,OAAO,EAAE,UAFF;IAGPC,SAAS,EAAGC,CAAD,IAAYX,eAAe,CAACY,QAAhB,CAAyBD,CAAzB;EAHhB;AAFkC,CAAD,EAOzC,SAPyC,CAArC;AASP,OAAO,SAASE,UAAT,CACLC,KADK,EAGL;EAAA,IADAX,IACA,uEADOL,sBAAsB,EAC7B;EACA,MAAMiB,cAAc,GAAGnB,QAAQ,CAAC,MAAM;IACpC,MAAM;MAAEW;IAAF,IAAcV,KAAK,CAACiB,KAAD,CAAzB;IACA,OAAQ,GAAEX,IAAK,aAAYI,OAAQ,EAAnC;EACD,CAH8B,CAA/B;EAKA,MAAM;IAAES,YAAF;IAAgBC;EAAhB,IAAgCtB,QAAQ,CAACC,QAAQ,CAAC,MAAM;IAC5D,MAAM;MAAEW,OAAF;MAAWF;IAAX,IAAqBR,KAAK,CAACiB,KAAD,CAAhC;IACA,OAAO;MACL,CAAC,CAAC,UAAD,EAAa,MAAb,EAAqBF,QAArB,CAA8BL,OAA9B,IAAyC,YAAzC,GAAwD,MAAzD,GAAkEF;IAD7D,CAAP;EAGD,CALsD,CAAT,CAA9C;EAOA,OAAO;IAAEW,YAAF;IAAgBC,WAAhB;IAA6BF;EAA7B,CAAP;AACD"}
|
package/lib/entry-bundler.mjs
CHANGED
|
@@ -10,7 +10,7 @@ export const createVuetify = function () {
|
|
|
10
10
|
...options
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
|
-
export const version = "3.0.0-beta.
|
|
13
|
+
export const version = "3.0.0-beta.6";
|
|
14
14
|
export { components, directives };
|
|
15
15
|
export * from "./composables/index.mjs";
|
|
16
16
|
//# sourceMappingURL=entry-bundler.mjs.map
|
package/lib/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ declare type DeepPartial<T> = T extends object ? {
|
|
|
4
4
|
[P in keyof T]?: DeepPartial<T[P]>;
|
|
5
5
|
} : T;
|
|
6
6
|
declare type ThemeOptions = false | {
|
|
7
|
+
cspNonce?: string;
|
|
7
8
|
defaultTheme?: string;
|
|
8
9
|
variations?: false | VariationsOptions;
|
|
9
10
|
themes?: Record<string, ThemeDefinition>;
|
|
@@ -314,27 +315,26 @@ declare module '@vue/runtime-core' {
|
|
|
314
315
|
export interface GlobalComponents {
|
|
315
316
|
VApp: typeof import('vuetify/components')['VApp']
|
|
316
317
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
|
317
|
-
VHover: typeof import('vuetify/components')['VHover']
|
|
318
318
|
VContainer: typeof import('vuetify/components')['VContainer']
|
|
319
319
|
VCol: typeof import('vuetify/components')['VCol']
|
|
320
320
|
VRow: typeof import('vuetify/components')['VRow']
|
|
321
321
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
|
322
|
-
|
|
322
|
+
VHover: typeof import('vuetify/components')['VHover']
|
|
323
323
|
VForm: typeof import('vuetify/components')['VForm']
|
|
324
|
-
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
|
325
324
|
VLayout: typeof import('vuetify/components')['VLayout']
|
|
326
325
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
|
327
|
-
|
|
326
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
|
327
|
+
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
|
328
328
|
VParallax: typeof import('vuetify/components')['VParallax']
|
|
329
|
-
|
|
329
|
+
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
|
330
330
|
VRadio: typeof import('vuetify/components')['VRadio']
|
|
331
|
+
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
|
332
|
+
VResponsive: typeof import('vuetify/components')['VResponsive']
|
|
331
333
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
|
332
334
|
VValidation: typeof import('vuetify/components')['VValidation']
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
VTabReverseTransition: typeof import('vuetify/components')['VTabReverseTransition']
|
|
337
|
-
VMenuTransition: typeof import('vuetify/components')['VMenuTransition']
|
|
335
|
+
VAppBar: typeof import('vuetify/components')['VAppBar']
|
|
336
|
+
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
|
337
|
+
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
|
338
338
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
|
339
339
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
|
340
340
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
|
@@ -351,9 +351,6 @@ declare module '@vue/runtime-core' {
|
|
|
351
351
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
|
352
352
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
|
353
353
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
|
354
|
-
VAppBar: typeof import('vuetify/components')['VAppBar']
|
|
355
|
-
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
|
356
|
-
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
|
357
354
|
VAlert: typeof import('vuetify/components')['VAlert']
|
|
358
355
|
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
|
359
356
|
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
|
@@ -363,11 +360,11 @@ declare module '@vue/runtime-core' {
|
|
|
363
360
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
|
364
361
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
|
365
362
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
|
366
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
|
367
363
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
|
368
364
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
|
369
365
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
|
370
366
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
|
367
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
|
371
368
|
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
|
372
369
|
VCard: typeof import('vuetify/components')['VCard']
|
|
373
370
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
|
@@ -382,27 +379,26 @@ declare module '@vue/runtime-core' {
|
|
|
382
379
|
VChip: typeof import('vuetify/components')['VChip']
|
|
383
380
|
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
|
384
381
|
VCode: typeof import('vuetify/components')['VCode']
|
|
385
|
-
VResponsive: typeof import('vuetify/components')['VResponsive']
|
|
386
382
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
|
387
383
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
|
388
384
|
VCounter: typeof import('vuetify/components')['VCounter']
|
|
389
385
|
VDialog: typeof import('vuetify/components')['VDialog']
|
|
390
386
|
VDivider: typeof import('vuetify/components')['VDivider']
|
|
391
|
-
VField: typeof import('vuetify/components')['VField']
|
|
392
|
-
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
|
393
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
|
394
387
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
|
395
388
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
|
396
389
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
|
397
390
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
|
391
|
+
VField: typeof import('vuetify/components')['VField']
|
|
392
|
+
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
|
398
393
|
VFooter: typeof import('vuetify/components')['VFooter']
|
|
399
394
|
VIcon: typeof import('vuetify/components')['VIcon']
|
|
400
395
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
|
401
396
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
|
402
397
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
|
403
398
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
|
404
|
-
VInput: typeof import('vuetify/components')['VInput']
|
|
405
399
|
VImg: typeof import('vuetify/components')['VImg']
|
|
400
|
+
VInput: typeof import('vuetify/components')['VInput']
|
|
401
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
|
406
402
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
|
407
403
|
VItem: typeof import('vuetify/components')['VItem']
|
|
408
404
|
VKbd: typeof import('vuetify/components')['VKbd']
|
|
@@ -412,38 +408,34 @@ declare module '@vue/runtime-core' {
|
|
|
412
408
|
VListImg: typeof import('vuetify/components')['VListImg']
|
|
413
409
|
VListItem: typeof import('vuetify/components')['VListItem']
|
|
414
410
|
VListItemAction: typeof import('vuetify/components')['VListItemAction']
|
|
415
|
-
VListItemAvatar: typeof import('vuetify/components')['VListItemAvatar']
|
|
416
|
-
VListItemHeader: typeof import('vuetify/components')['VListItemHeader']
|
|
417
|
-
VListItemIcon: typeof import('vuetify/components')['VListItemIcon']
|
|
418
411
|
VListItemMedia: typeof import('vuetify/components')['VListItemMedia']
|
|
419
412
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
|
420
413
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
|
421
414
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
|
422
|
-
VMain: typeof import('vuetify/components')['VMain']
|
|
423
415
|
VMenu: typeof import('vuetify/components')['VMenu']
|
|
416
|
+
VMain: typeof import('vuetify/components')['VMain']
|
|
424
417
|
VMessages: typeof import('vuetify/components')['VMessages']
|
|
425
418
|
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
426
419
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
|
427
|
-
|
|
420
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
|
428
421
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
|
429
422
|
VRating: typeof import('vuetify/components')['VRating']
|
|
430
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
|
431
423
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
|
432
|
-
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
433
424
|
VSelect: typeof import('vuetify/components')['VSelect']
|
|
425
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
434
426
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
|
435
427
|
VSheet: typeof import('vuetify/components')['VSheet']
|
|
428
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
|
436
429
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
|
437
430
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
|
438
|
-
VSlider: typeof import('vuetify/components')['VSlider']
|
|
439
431
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
|
440
432
|
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
|
441
433
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
|
434
|
+
VTable: typeof import('vuetify/components')['VTable']
|
|
442
435
|
VTabs: typeof import('vuetify/components')['VTabs']
|
|
443
436
|
VTab: typeof import('vuetify/components')['VTab']
|
|
444
|
-
VTable: typeof import('vuetify/components')['VTable']
|
|
445
|
-
VTextField: typeof import('vuetify/components')['VTextField']
|
|
446
437
|
VTextarea: typeof import('vuetify/components')['VTextarea']
|
|
438
|
+
VTextField: typeof import('vuetify/components')['VTextField']
|
|
447
439
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
|
448
440
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
|
449
441
|
VTooltip: typeof import('vuetify/components')['VTooltip']
|
|
@@ -452,5 +444,6 @@ declare module '@vue/runtime-core' {
|
|
|
452
444
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
|
453
445
|
VWindow: typeof import('vuetify/components')['VWindow']
|
|
454
446
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
|
447
|
+
VPagination: typeof import('vuetify/components')['VPagination']
|
|
455
448
|
}
|
|
456
449
|
}
|