@vuetify/nightly 3.1.8-master-20230307.0 → 3.1.8
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 +10 -2
- package/dist/json/attributes.json +0 -528
- package/dist/json/importMap.json +90 -90
- package/dist/json/tags.json +2 -136
- package/dist/json/web-types.json +20 -1210
- package/dist/vuetify-labs.css +242 -99
- package/dist/vuetify-labs.esm.js +33 -32
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +33 -32
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +261 -118
- package/dist/vuetify.d.ts +27 -27
- package/dist/vuetify.esm.js +33 -32
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +33 -32
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +209 -210
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +1 -1
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +1 -0
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.css +0 -2
- package/lib/components/VSnackbar/VSnackbar.mjs +6 -8
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +0 -2
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VTable/VTable.mjs.map +1 -1
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.mjs +1 -0
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.mjs +1 -0
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
- package/lib/components/transitions/createTransition.mjs +1 -1
- package/lib/components/transitions/createTransition.mjs.map +1 -1
- package/lib/composables/display.mjs +13 -10
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/theme.mjs +7 -10
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +27 -27
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/locale/index.mjs +1 -1
- package/lib/locale/index.mjs.map +1 -1
- package/lib/styles/elements/_global.sass +0 -4
- package/lib/styles/generic/_transitions.scss +111 -9
- package/lib/styles/main.css +212 -67
- package/package.json +16 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTab.mjs","names":["VBtn","IconValue","makeGroupItemProps","makeRouterProps","makeTagProps","makeThemeProps","useTextColor","computed","ref","animate","genericComponent","pick","standardEasing","useRender","VTabsSymbol","VTab","name","props","fixed","Boolean","icon","String","Function","Object","prependIcon","appendIcon","stacked","title","ripple","type","default","color","sliderColor","hideSlider","direction","selectedClass","setup","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","value","prevEl","$el","parentElement","querySelector","nextEl","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","undefined"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeGroupItemProps } from '@/composables/group'\nimport { makeRouterProps } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { animate, genericComponent, pick, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport const VTab = genericComponent()({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n icon: [Boolean, String, Function, Object] as PropType<boolean | IconValue>,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n stacked: Boolean,\n title: String,\n\n ripple: {\n type: Boolean,\n default: true,\n },\n color: String,\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...makeTagProps(),\n ...makeRouterProps(),\n ...makeGroupItemProps({\n selectedClass: 'v-tab--selected',\n }),\n ...makeThemeProps(),\n },\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = ref(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n animate(nextEl, {\n backgroundColor: [color, ''],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n '',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const [btnProps] = pick(props, [\n 'href',\n 'to',\n 'replace',\n 'icon',\n 'stacked',\n 'prependIcon',\n 'appendIcon',\n 'ripple',\n 'theme',\n 'disabled',\n 'selectedClass',\n 'value',\n 'color',\n ])\n\n return (\n <VBtn\n _as=\"VTab\"\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n variant=\"text\"\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default ? slots.default() : props.title }\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )
|
|
1
|
+
{"version":3,"file":"VTab.mjs","names":["VBtn","IconValue","makeGroupItemProps","makeRouterProps","makeTagProps","makeThemeProps","useTextColor","computed","ref","animate","genericComponent","pick","standardEasing","useRender","VTabsSymbol","VTab","name","props","fixed","Boolean","icon","String","Function","Object","prependIcon","appendIcon","stacked","title","ripple","type","default","color","sliderColor","hideSlider","direction","selectedClass","setup","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","value","prevEl","$el","parentElement","querySelector","nextEl","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","undefined"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeGroupItemProps } from '@/composables/group'\nimport { makeRouterProps } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { animate, genericComponent, pick, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport const VTab = genericComponent()({\n name: 'VTab',\n\n props: {\n fixed: Boolean,\n icon: [Boolean, String, Function, Object] as PropType<boolean | IconValue>,\n prependIcon: IconValue,\n appendIcon: IconValue,\n\n stacked: Boolean,\n title: String,\n\n ripple: {\n type: Boolean,\n default: true,\n },\n color: String,\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...makeTagProps(),\n ...makeRouterProps(),\n ...makeGroupItemProps({\n selectedClass: 'v-tab--selected',\n }),\n ...makeThemeProps(),\n },\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = ref(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight])\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight]\n\n const sigma = 1.5\n animate(nextEl, {\n backgroundColor: [color, ''],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n '',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const [btnProps] = pick(props, [\n 'href',\n 'to',\n 'replace',\n 'icon',\n 'stacked',\n 'prependIcon',\n 'appendIcon',\n 'ripple',\n 'theme',\n 'disabled',\n 'selectedClass',\n 'value',\n 'color',\n ])\n\n return (\n <VBtn\n _as=\"VTab\"\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n ]}\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n variant=\"text\"\n rounded={ 0 }\n { ...btnProps }\n { ...attrs }\n onGroup:selected={ updateSlider }\n >\n { slots.default ? slots.default() : props.title }\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </VBtn>\n )\n })\n\n return {}\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTabs.mjs","names":["VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","provideDefaults","useBackgroundColor","useProxiedModel","computed","toRef","convertToUnit","genericComponent","useRender","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignTabs","type","String","default","color","direction","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","modelValue","mandatory","emits","v","setup","slots","model","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","fixed"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VSlideGroup } from '@/components/VSlideGroup'\nimport { VTab } from './VTab'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (typeof item === 'string') return { title: item, value: item }\n\n return item\n })\n}\n\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n\n props: {\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n modelValue: null,\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force',\n },\n\n ...makeDensityProps(),\n ...makeTagProps(),\n },\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => (\n <VSlideGroup\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n mandatory={ props.mandatory }\n direction={ props.direction }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n ))
|
|
1
|
+
{"version":3,"file":"VTabs.mjs","names":["VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","provideDefaults","useBackgroundColor","useProxiedModel","computed","toRef","convertToUnit","genericComponent","useRender","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignTabs","type","String","default","color","direction","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","modelValue","mandatory","emits","v","setup","slots","model","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","fixed"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VSlideGroup } from '@/components/VSlideGroup'\nimport { VTab } from './VTab'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: TabItem[] | undefined) {\n if (!items) return []\n\n return items.map(item => {\n if (typeof item === 'string') return { title: item, value: item }\n\n return item\n })\n}\n\nexport const VTabs = genericComponent()({\n name: 'VTabs',\n\n props: {\n alignTabs: {\n type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n default: 'start',\n },\n color: String,\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n fixedTabs: Boolean,\n items: {\n type: Array as PropType<TabItem[]>,\n default: () => ([]),\n },\n stacked: Boolean,\n bgColor: String,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n sliderColor: String,\n modelValue: null,\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force',\n },\n\n ...makeDensityProps(),\n ...makeTagProps(),\n },\n\n emits: {\n 'update:modelValue': (v: unknown) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const parsedItems = computed(() => parseItems(props.items))\n const { densityClasses } = useDensity(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n\n provideDefaults({\n VTab: {\n color: toRef(props, 'color'),\n direction: toRef(props, 'direction'),\n stacked: toRef(props, 'stacked'),\n fixed: toRef(props, 'fixedTabs'),\n sliderColor: toRef(props, 'sliderColor'),\n hideSlider: toRef(props, 'hideSlider'),\n },\n })\n\n useRender(() => (\n <VSlideGroup\n v-model={ model.value }\n class={[\n 'v-tabs',\n `v-tabs--${props.direction}`,\n `v-tabs--align-tabs-${props.alignTabs}`,\n {\n 'v-tabs--fixed-tabs': props.fixedTabs,\n 'v-tabs--grow': props.grow,\n 'v-tabs--stacked': props.stacked,\n },\n densityClasses.value,\n backgroundColorClasses.value,\n ]}\n style={[\n { '--v-tabs-height': convertToUnit(props.height) },\n backgroundColorStyles.value,\n ]}\n role=\"tablist\"\n symbol={ VTabsSymbol }\n mandatory={ props.mandatory }\n direction={ props.direction }\n >\n { slots.default ? slots.default() : parsedItems.value.map(item => (\n <VTab { ...item } key={ item.title } />\n ))}\n </VSlideGroup>\n ))\n\n return {}\n },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":"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"}
|
|
@@ -148,6 +148,7 @@ export const VTextField = genericComponent()({
|
|
|
148
148
|
"id": id.value,
|
|
149
149
|
"active": isActive.value || isDirty.value,
|
|
150
150
|
"dirty": isDirty.value || props.dirty,
|
|
151
|
+
"disabled": isDisabled.value,
|
|
151
152
|
"focused": isFocused.value,
|
|
152
153
|
"error": isValid.value === false
|
|
153
154
|
}), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTextField.mjs","names":["filterFieldProps","makeVFieldProps","VField","filterInputProps","makeVInputProps","VInput","VCounter","Intersect","forwardRefs","useFocus","useProxiedModel","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","pick","propsFactory","useRender","activeTypes","EventProp","Function","Array","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","includes","messages","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","variant","id","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","inputNode","handler","filterVTextFieldProps","Object","keys"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\ntype EventProp<T = (...args: any[]) => any> = T | T[]\nconst EventProp = [Function, Array] as PropType<EventProp>\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'v-text-field')\n\nexport const VTextField = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n default: []\n}>>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value\n ))\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isFocused.value || props.persistentHint) ? props.hint : ''\n })\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n model.value = (e.target as HTMLInputElement).value\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass }) }\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n ) }\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n ) }\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n\nexport function filterVTextFieldProps (props: Partial<ExtractPropTypes<ReturnType<typeof makeVTextFieldProps>>>) {\n return pick(props, Object.keys(VTextField.props) as any)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VTextField.mjs","names":["filterFieldProps","makeVFieldProps","VField","filterInputProps","makeVInputProps","VInput","VCounter","Intersect","forwardRefs","useFocus","useProxiedModel","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","pick","propsFactory","useRender","activeTypes","EventProp","Function","Array","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","includes","messages","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","variant","id","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","inputNode","handler","filterVTextFieldProps","Object","keys"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\ntype EventProp<T = (...args: any[]) => any> = T | T[]\nconst EventProp = [Function, Array] as PropType<EventProp>\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'v-text-field')\n\nexport const VTextField = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n default: []\n}>>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value\n ))\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isFocused.value || props.persistentHint) ? props.hint : ''\n })\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n model.value = (e.target as HTMLInputElement).value\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n { slots.default ? (\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default() }\n { inputNode }\n </div>\n ) : cloneVNode(inputNode, { class: fieldClass })}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n )}\n </>\n )\n },\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VTextField = InstanceType<typeof VTextField>\n\nexport function filterVTextFieldProps (props: Partial<ExtractPropTypes<ReturnType<typeof makeVTextFieldProps>>>) {\n return pick(props, Object.keys(VTextField.props) as any)\n}\n"],"mappings":"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"}
|
|
@@ -189,6 +189,7 @@ export const VTextarea = genericComponent()({
|
|
|
189
189
|
}, fieldProps, {
|
|
190
190
|
"active": isActive.value || isDirty.value,
|
|
191
191
|
"dirty": isDirty.value || props.dirty,
|
|
192
|
+
"disabled": isDisabled.value,
|
|
192
193
|
"focused": isFocused.value,
|
|
193
194
|
"error": isValid.value === false
|
|
194
195
|
}), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTextarea.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VCounter","VField","Intersect","forwardRefs","useFocus","useProxiedModel","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","callEvent","clamp","convertToUnit","filterInputAttrs","genericComponent","useRender","VTextarea","name","directives","inheritAttrs","props","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","emits","e","focused","val","setup","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","sizerRef","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","includes","variant","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const VTextarea = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'>>()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as string | number\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = ref('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\n })\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n model.value = (e.target as HTMLTextAreaElement).value\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n\n controlHeight.value = convertToUnit(clamp(height ?? 0, minHeight, maxHeight))\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n ) }\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n ) }\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n ) }\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VTextarea.mjs","names":["filterFieldProps","makeVFieldProps","filterInputProps","makeVInputProps","VInput","VCounter","VField","Intersect","forwardRefs","useFocus","useProxiedModel","computed","nextTick","onBeforeUnmount","onMounted","ref","watch","callEvent","clamp","convertToUnit","filterInputAttrs","genericComponent","useRender","VTextarea","name","directives","inheritAttrs","props","autoGrow","Boolean","autofocus","counter","Number","String","counterValue","Function","hint","persistentHint","prefix","placeholder","persistentPlaceholder","persistentCounter","noResize","rows","type","default","validator","v","isNaN","parseFloat","maxRows","suffix","emits","e","focused","val","setup","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","controlHeight","textareaRef","isActive","messages","onFocus","document","activeElement","onControlClick","onControlMousedown","onClear","stopPropagation","onInput","sizerRef","calculateInputHeight","style","getComputedStyle","fieldStyle","$el","padding","getPropertyValue","height","scrollHeight","lineHeight","minHeight","Math","maxHeight","Infinity","density","observer","ResizeObserver","observe","disconnect","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","fieldProps","includes","variant","isDisabled","isDirty","isReadonly","isValid","dirty","class","fieldClass","slotProps","handler"],"sources":["../../../src/components/VTextarea/VTextarea.tsx"],"sourcesContent":["// Styles\nimport './VTextarea.sass'\nimport '../VTextField/VTextField.sass'\n\n// Components\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { filterInputProps, makeVInputProps, VInput } from '@/components/VInput/VInput'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useFocus } from '@/composables/focus'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { callEvent, clamp, convertToUnit, filterInputAttrs, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport const VTextarea = genericComponent<Omit<VInputSlots & VFieldSlots, 'default'>>()({\n name: 'VTextarea',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: {\n autoGrow: Boolean,\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n hint: String,\n persistentHint: Boolean,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n noResize: Boolean,\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n maxRows: {\n type: [Number, String],\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n suffix: String,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value || '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as string | number\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const controlHeight = ref('')\n const textareaRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.persistentPlaceholder\n ))\n\n const messages = computed(() => {\n return props.messages.length\n ? props.messages\n : (isActive.value || props.persistentHint) ? props.hint : ''\n })\n\n function onFocus () {\n if (textareaRef.value !== document.activeElement) {\n textareaRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = ''\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n model.value = (e.target as HTMLTextAreaElement).value\n }\n\n const sizerRef = ref<HTMLTextAreaElement>()\n function calculateInputHeight () {\n if (!props.autoGrow) return\n\n nextTick(() => {\n if (!sizerRef.value || !vFieldRef.value) return\n\n const style = getComputedStyle(sizerRef.value)\n const fieldStyle = getComputedStyle(vFieldRef.value.$el)\n\n const padding = parseFloat(style.getPropertyValue('--v-field-padding-top')) +\n parseFloat(style.getPropertyValue('--v-input-padding-top')) +\n parseFloat(style.getPropertyValue('--v-field-padding-bottom'))\n\n const height = sizerRef.value.scrollHeight\n const lineHeight = parseFloat(style.lineHeight)\n const minHeight = Math.max(\n parseFloat(props.rows) * lineHeight + padding,\n parseFloat(fieldStyle.getPropertyValue('--v-input-control-height'))\n )\n const maxHeight = parseFloat(props.maxRows!) * lineHeight + padding || Infinity\n\n controlHeight.value = convertToUnit(clamp(height ?? 0, minHeight, maxHeight))\n })\n }\n\n onMounted(calculateInputHeight)\n watch(model, calculateInputHeight)\n watch(() => props.rows, calculateInputHeight)\n watch(() => props.maxRows, calculateInputHeight)\n watch(() => props.density, calculateInputHeight)\n\n let observer: ResizeObserver | undefined\n watch(sizerRef, val => {\n if (val) {\n observer = new ResizeObserver(calculateInputHeight)\n observer.observe(sizerRef.value!)\n } else {\n observer?.disconnect()\n }\n })\n onBeforeUnmount(() => {\n observer?.disconnect()\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = filterInputProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-textarea v-text-field',\n {\n 'v-textarea--prefixed': props.prefix,\n 'v-textarea--suffixed': props.suffix,\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-textarea--auto-grow': props.autoGrow,\n 'v-textarea--no-resize': props.noResize || props.autoGrow,\n 'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant),\n },\n ]}\n onClick:prepend={ props['onClick:prepend'] }\n onClick:append={ props['onClick:append'] }\n { ...rootAttrs }\n { ...inputProps }\n focused={ isFocused.value }\n messages={ messages.value }\n >\n {{\n ...slots,\n default: ({\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n style={{\n '--v-textarea-control-height': controlHeight.value,\n }}\n onClick={ onControlClick }\n onMousedown={ onControlMousedown }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\n { ...fieldProps }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n <textarea\n ref={ textareaRef }\n class={ fieldClass }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n placeholder={ props.placeholder }\n rows={ props.rows }\n name={ props.name }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n { props.autoGrow && (\n <textarea\n class={[\n fieldClass,\n 'v-textarea__sizer',\n ]}\n v-model={ model.value }\n ref={ sizerRef }\n readonly\n aria-hidden=\"true\"\n />\n )}\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n )}\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, textareaRef)\n },\n})\n\nexport type VTextarea = InstanceType<typeof VTextarea>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTimelineDivider.mjs","names":["VIcon","IconValue","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeSizeProps","useSize","provideDefaults","useBackgroundColor","genericComponent","useRender","toRef","VTimelineDivider","name","props","dotColor","String","fillDot","Boolean","hideDot","icon","iconColor","lineColor","setup","slots","sizeClasses","sizeStyles","backgroundColorStyles","backgroundColorClasses","roundedClasses","elevationClasses","lineColorClasses","lineColorStyles","color","size","value","default","undefined"],"sources":["../../../src/components/VTimeline/VTimelineDivider.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n\n props: {\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps(),\n },\n\n setup (props, { slots }) {\n const { sizeClasses, sizeStyles } = useSize(props, 'v-timeline-divider__dot')\n const { backgroundColorStyles, backgroundColorClasses } = useBackgroundColor(toRef(props, 'dotColor'))\n const { roundedClasses } = useRounded(props, 'v-timeline-divider__dot')\n const { elevationClasses } = useElevation(props)\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles,\n } = useBackgroundColor(toRef(props, 'lineColor'))\n\n provideDefaults({\n VIcon: {\n color: toRef(props, 'iconColor'),\n icon: toRef(props, 'icon'),\n size: toRef(props, 'size'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-divider',\n {\n 'v-timeline-divider--fill-dot': props.fillDot,\n },\n ]}\n >\n <div\n class={[\n 'v-timeline-divider__before',\n lineColorClasses.value,\n ]}\n style={ lineColorStyles.value }\n />\n\n { !props.hideDot && (\n <div\n key=\"dot\"\n class={[\n 'v-timeline-divider__dot',\n elevationClasses.value,\n roundedClasses.value,\n sizeClasses.value,\n ]}\n style={ sizeStyles.value }\n >\n <div\n class={[\n 'v-timeline-divider__inner-dot',\n backgroundColorClasses.value,\n roundedClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { slots.default?.() ?? (props.icon ? (<VIcon />) : undefined) }\n </div>\n </div>\n )
|
|
1
|
+
{"version":3,"file":"VTimelineDivider.mjs","names":["VIcon","IconValue","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeSizeProps","useSize","provideDefaults","useBackgroundColor","genericComponent","useRender","toRef","VTimelineDivider","name","props","dotColor","String","fillDot","Boolean","hideDot","icon","iconColor","lineColor","setup","slots","sizeClasses","sizeStyles","backgroundColorStyles","backgroundColorClasses","roundedClasses","elevationClasses","lineColorClasses","lineColorStyles","color","size","value","default","undefined"],"sources":["../../../src/components/VTimeline/VTimelineDivider.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\nexport const VTimelineDivider = genericComponent()({\n name: 'VTimelineDivider',\n\n props: {\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n icon: IconValue,\n iconColor: String,\n lineColor: String,\n\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeElevationProps(),\n },\n\n setup (props, { slots }) {\n const { sizeClasses, sizeStyles } = useSize(props, 'v-timeline-divider__dot')\n const { backgroundColorStyles, backgroundColorClasses } = useBackgroundColor(toRef(props, 'dotColor'))\n const { roundedClasses } = useRounded(props, 'v-timeline-divider__dot')\n const { elevationClasses } = useElevation(props)\n const {\n backgroundColorClasses: lineColorClasses,\n backgroundColorStyles: lineColorStyles,\n } = useBackgroundColor(toRef(props, 'lineColor'))\n\n provideDefaults({\n VIcon: {\n color: toRef(props, 'iconColor'),\n icon: toRef(props, 'icon'),\n size: toRef(props, 'size'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-divider',\n {\n 'v-timeline-divider--fill-dot': props.fillDot,\n },\n ]}\n >\n <div\n class={[\n 'v-timeline-divider__before',\n lineColorClasses.value,\n ]}\n style={ lineColorStyles.value }\n />\n\n { !props.hideDot && (\n <div\n key=\"dot\"\n class={[\n 'v-timeline-divider__dot',\n elevationClasses.value,\n roundedClasses.value,\n sizeClasses.value,\n ]}\n style={ sizeStyles.value }\n >\n <div\n class={[\n 'v-timeline-divider__inner-dot',\n backgroundColorClasses.value,\n roundedClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { slots.default?.() ?? (props.icon ? (<VIcon />) : undefined) }\n </div>\n </div>\n )}\n\n <div\n class={[\n 'v-timeline-divider__after',\n lineColorClasses.value,\n ]}\n style={ lineColorStyles.value }\n />\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VTimelineDivider = InstanceType<typeof VTimelineDivider>\n"],"mappings":";AAAA;AAAA,SACSA,KAAK,8BAEd;AAAA,SACSC,SAAS;AAAA,SACTC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,aAAa,EAAEC,OAAO;AAAA,SACtBC,eAAe;AAAA,SACfC,kBAAkB,uCAE3B;AAAA,SACSC,gBAAgB,EAAEC,SAAS;AACpC,SAASC,KAAK,QAAQ,KAAK;AAE3B,OAAO,MAAMC,gBAAgB,GAAGH,gBAAgB,EAAE,CAAC;EACjDI,IAAI,EAAE,kBAAkB;EAExBC,KAAK,EAAE;IACLC,QAAQ,EAAEC,MAAM;IAChBC,OAAO,EAAEC,OAAO;IAChBC,OAAO,EAAED,OAAO;IAChBE,IAAI,EAAEpB,SAAS;IACfqB,SAAS,EAAEL,MAAM;IACjBM,SAAS,EAAEN,MAAM;IAEjB,GAAGb,gBAAgB,EAAE;IACrB,GAAGE,aAAa,EAAE;IAClB,GAAGJ,kBAAkB;EACvB,CAAC;EAEDsB,KAAK,CAAET,KAAK,QAAa;IAAA,IAAX;MAAEU;IAAM,CAAC;IACrB,MAAM;MAAEC,WAAW;MAAEC;IAAW,CAAC,GAAGpB,OAAO,CAACQ,KAAK,EAAE,yBAAyB,CAAC;IAC7E,MAAM;MAAEa,qBAAqB;MAAEC;IAAuB,CAAC,GAAGpB,kBAAkB,CAACG,KAAK,CAACG,KAAK,EAAE,UAAU,CAAC,CAAC;IACtG,MAAM;MAAEe;IAAe,CAAC,GAAGzB,UAAU,CAACU,KAAK,EAAE,yBAAyB,CAAC;IACvE,MAAM;MAAEgB;IAAiB,CAAC,GAAG5B,YAAY,CAACY,KAAK,CAAC;IAChD,MAAM;MACJc,sBAAsB,EAAEG,gBAAgB;MACxCJ,qBAAqB,EAAEK;IACzB,CAAC,GAAGxB,kBAAkB,CAACG,KAAK,CAACG,KAAK,EAAE,WAAW,CAAC,CAAC;IAEjDP,eAAe,CAAC;MACdR,KAAK,EAAE;QACLkC,KAAK,EAAEtB,KAAK,CAACG,KAAK,EAAE,WAAW,CAAC;QAChCM,IAAI,EAAET,KAAK,CAACG,KAAK,EAAE,MAAM,CAAC;QAC1BoB,IAAI,EAAEvB,KAAK,CAACG,KAAK,EAAE,MAAM;MAC3B;IACF,CAAC,CAAC;IAEFJ,SAAS,CAAC;MAAA,SAEC,CACL,oBAAoB,EACpB;QACE,8BAA8B,EAAEI,KAAK,CAACG;MACxC,CAAC;IACF;MAAA,SAGQ,CACL,4BAA4B,EAC5Bc,gBAAgB,CAACI,KAAK,CACvB;MAAA,SACOH,eAAe,CAACG;IAAK,UAG7B,CAACrB,KAAK,CAACK,OAAO;MAAA,OAER,KAAK;MAAA,SACF,CACL,yBAAyB,EACzBW,gBAAgB,CAACK,KAAK,EACtBN,cAAc,CAACM,KAAK,EACpBV,WAAW,CAACU,KAAK,CAClB;MAAA,SACOT,UAAU,CAACS;IAAK;MAAA,SAGf,CACL,+BAA+B,EAC/BP,sBAAsB,CAACO,KAAK,EAC5BN,cAAc,CAACM,KAAK,CACrB;MAAA,SACOR,qBAAqB,CAACQ;IAAK,IAEjCX,KAAK,CAACY,OAAO,IAAI,KAAKtB,KAAK,CAACM,IAAI,qCAAiBiB,SAAS,CAAC,IAGlE;MAAA,SAGQ,CACL,2BAA2B,EAC3BN,gBAAgB,CAACI,KAAK,CACvB;MAAA,SACOH,eAAe,CAACG;IAAK,UAGlC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VTimelineItem.mjs","names":["VTimelineDivider","IconValue","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","convertToUnit","genericComponent","useRender","makeDimensionProps","useDimension","ref","watch","VTimelineItem","name","props","density","String","dotColor","fillDot","Boolean","hideDot","hideOpposite","type","default","undefined","icon","iconColor","lineInset","Number","setup","slots","dimensionStyles","dotSize","dotRef","newValue","value","$el","querySelector","getBoundingClientRect","width","flush","size","elevation","rounded","opposite"],"sources":["../../../src/components/VTimeline/VTimelineItem.tsx"],"sourcesContent":["// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { convertToUnit, genericComponent, useRender } from '@/util'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { ref, watch } from 'vue'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n default: []\n icon: []\n opposite: []\n}\n\nexport const VTimelineItem = genericComponent<VTimelineItemSlots>()({\n name: 'VTimelineItem',\n\n props: {\n density: String as PropType<'default' | 'compact'>,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined,\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n\n ...makeRoundedProps(),\n ...makeElevationProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeDimensionProps(),\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const dotSize = ref(0)\n const dotRef = ref<VTimelineDivider>()\n watch(dotRef, newValue => {\n if (!newValue) return\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0\n }, {\n flush: 'post',\n })\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-item',\n {\n 'v-timeline-item--fill-dot': props.fillDot,\n },\n ]}\n style={{\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0),\n }}\n >\n <div\n class=\"v-timeline-item__body\"\n style={ dimensionStyles.value }\n >\n { slots.default?.() }\n </div>\n\n <VTimelineDivider\n ref={ dotRef }\n hideDot={ props.hideDot }\n icon={ props.icon }\n iconColor={ props.iconColor }\n size={ props.size }\n elevation={ props.elevation }\n dotColor={ props.dotColor }\n fillDot={ props.fillDot }\n rounded={ props.rounded }\n v-slots={{ default: slots.icon }}\n />\n\n { props.density !== 'compact' && (\n <div class=\"v-timeline-item__opposite\">\n { !props.hideOpposite && slots.opposite?.() }\n </div>\n )
|
|
1
|
+
{"version":3,"file":"VTimelineItem.mjs","names":["VTimelineDivider","IconValue","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","convertToUnit","genericComponent","useRender","makeDimensionProps","useDimension","ref","watch","VTimelineItem","name","props","density","String","dotColor","fillDot","Boolean","hideDot","hideOpposite","type","default","undefined","icon","iconColor","lineInset","Number","setup","slots","dimensionStyles","dotSize","dotRef","newValue","value","$el","querySelector","getBoundingClientRect","width","flush","size","elevation","rounded","opposite"],"sources":["../../../src/components/VTimeline/VTimelineItem.tsx"],"sourcesContent":["// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { convertToUnit, genericComponent, useRender } from '@/util'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { ref, watch } from 'vue'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n default: []\n icon: []\n opposite: []\n}\n\nexport const VTimelineItem = genericComponent<VTimelineItemSlots>()({\n name: 'VTimelineItem',\n\n props: {\n density: String as PropType<'default' | 'compact'>,\n dotColor: String,\n fillDot: Boolean,\n hideDot: Boolean,\n hideOpposite: {\n type: Boolean,\n default: undefined,\n },\n icon: IconValue,\n iconColor: String,\n lineInset: [Number, String],\n\n ...makeRoundedProps(),\n ...makeElevationProps(),\n ...makeSizeProps(),\n ...makeTagProps(),\n ...makeDimensionProps(),\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const dotSize = ref(0)\n const dotRef = ref<VTimelineDivider>()\n watch(dotRef, newValue => {\n if (!newValue) return\n dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0\n }, {\n flush: 'post',\n })\n\n useRender(() => (\n <div\n class={[\n 'v-timeline-item',\n {\n 'v-timeline-item--fill-dot': props.fillDot,\n },\n ]}\n style={{\n '--v-timeline-dot-size': convertToUnit(dotSize.value),\n '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0),\n }}\n >\n <div\n class=\"v-timeline-item__body\"\n style={ dimensionStyles.value }\n >\n { slots.default?.() }\n </div>\n\n <VTimelineDivider\n ref={ dotRef }\n hideDot={ props.hideDot }\n icon={ props.icon }\n iconColor={ props.iconColor }\n size={ props.size }\n elevation={ props.elevation }\n dotColor={ props.dotColor }\n fillDot={ props.fillDot }\n rounded={ props.rounded }\n v-slots={{ default: slots.icon }}\n />\n\n { props.density !== 'compact' && (\n <div class=\"v-timeline-item__opposite\">\n { !props.hideOpposite && slots.opposite?.() }\n </div>\n )}\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VTimelineItem = InstanceType<typeof VTimelineItem>\n"],"mappings":";AAAA;AAAA,SACSA,gBAAgB,kCAEzB;AAAA,SACSC,SAAS;AAAA,SACTC,kBAAkB;AAAA,SAClBC,gBAAgB;AAAA,SAChBC,aAAa;AAAA,SACbC,YAAY,qCAErB;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,SAAS;AAAA,SAC1CC,kBAAkB,EAAEC,YAAY;AACzC,SAASC,GAAG,EAAEC,KAAK,QAAQ,KAAK;;AAEhC;;AAUA,OAAO,MAAMC,aAAa,GAAGN,gBAAgB,EAAsB,CAAC;EAClEO,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,OAAO,EAAEC,MAAyC;IAClDC,QAAQ,EAAED,MAAM;IAChBE,OAAO,EAAEC,OAAO;IAChBC,OAAO,EAAED,OAAO;IAChBE,YAAY,EAAE;MACZC,IAAI,EAAEH,OAAO;MACbI,OAAO,EAAEC;IACX,CAAC;IACDC,IAAI,EAAEzB,SAAS;IACf0B,SAAS,EAAEV,MAAM;IACjBW,SAAS,EAAE,CAACC,MAAM,EAAEZ,MAAM,CAAC;IAE3B,GAAGd,gBAAgB,EAAE;IACrB,GAAGD,kBAAkB,EAAE;IACvB,GAAGE,aAAa,EAAE;IAClB,GAAGC,YAAY,EAAE;IACjB,GAAGI,kBAAkB;EACvB,CAAC;EAEDqB,KAAK,CAAEf,KAAK,QAAa;IAAA,IAAX;MAAEgB;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAgB,CAAC,GAAGtB,YAAY,CAACK,KAAK,CAAC;IAE/C,MAAMkB,OAAO,GAAGtB,GAAG,CAAC,CAAC,CAAC;IACtB,MAAMuB,MAAM,GAAGvB,GAAG,EAAoB;IACtCC,KAAK,CAACsB,MAAM,EAAEC,QAAQ,IAAI;MACxB,IAAI,CAACA,QAAQ,EAAE;MACfF,OAAO,CAACG,KAAK,GAAGD,QAAQ,CAACE,GAAG,CAACC,aAAa,CAAC,0BAA0B,CAAC,EAAEC,qBAAqB,EAAE,CAACC,KAAK,IAAI,CAAC;IAC5G,CAAC,EAAE;MACDC,KAAK,EAAE;IACT,CAAC,CAAC;IAEFjC,SAAS,CAAC;MAAA,SAEC,CACL,iBAAiB,EACjB;QACE,2BAA2B,EAAEO,KAAK,CAACI;MACrC,CAAC,CACF;MAAA,SACM;QACL,uBAAuB,EAAEb,aAAa,CAAC2B,OAAO,CAACG,KAAK,CAAC;QACrD,yBAAyB,EAAErB,KAAK,CAACa,SAAS,GAAI,yCAAwCtB,aAAa,CAACS,KAAK,CAACa,SAAS,CAAE,GAAE,GAAGtB,aAAa,CAAC,CAAC;MAC3I;IAAC;MAAA,SAGO,uBAAuB;MAAA,SACrB0B,eAAe,CAACI;IAAK,IAE3BL,KAAK,CAACP,OAAO,IAAI;MAAA,OAIbU,MAAM;MAAA,WACFnB,KAAK,CAACM,OAAO;MAAA,QAChBN,KAAK,CAACW,IAAI;MAAA,aACLX,KAAK,CAACY,SAAS;MAAA,QACpBZ,KAAK,CAAC2B,IAAI;MAAA,aACL3B,KAAK,CAAC4B,SAAS;MAAA,YAChB5B,KAAK,CAACG,QAAQ;MAAA,WACfH,KAAK,CAACI,OAAO;MAAA,WACbJ,KAAK,CAAC6B;IAAO,GACd;MAAEpB,OAAO,EAAEO,KAAK,CAACL;IAAK,CAAC,GAGhCX,KAAK,CAACC,OAAO,KAAK,SAAS;MAAA,SAChB;IAA2B,IAClC,CAACD,KAAK,CAACO,YAAY,IAAIS,KAAK,CAACc,QAAQ,IAAI,EAE9C,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VToolbar.mjs","names":["VDefaultsProvider","VExpandTransition","VImg","VToolbarTitle","makeBorderProps","useBorder","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","computed","ref","toRef","convertToUnit","genericComponent","pick","propsFactory","useRender","allowedDensities","makeVToolbarProps","absolute","Boolean","collapse","color","String","density","type","default","validator","v","includes","extended","extensionHeight","Number","flat","floating","height","image","title","tag","VToolbar","name","props","setup","slots","backgroundColorClasses","backgroundColorStyles","borderClasses","elevationClasses","roundedClasses","themeClasses","isExtended","extension","contentHeight","parseInt","value","VBtn","variant","hasTitle","hasImage","cover","src","VTabs","prepend","text","append","filterToolbarProps","Object","keys"],"sources":["../../../src/components/VToolbar/VToolbar.tsx"],"sourcesContent":["// Styles\nimport './VToolbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VExpandTransition } from '@/components/transitions'\nimport { VImg } from '@/components/VImg'\nimport { VToolbarTitle } from './VToolbarTitle'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'] as const\n\nexport type Density = null | 'prominent' | 'default' | 'comfortable' | 'compact'\n\nexport const makeVToolbarProps = propsFactory({\n absolute: Boolean,\n collapse: Boolean,\n color: String,\n density: {\n type: String as PropType<Density>,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n default: 48,\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default: 64,\n },\n image: String,\n title: String,\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'header' }),\n ...makeThemeProps(),\n}, 'v-toolbar')\n\nexport type VToolbarSlots = MakeSlots<{\n default: []\n image: []\n prepend: []\n append: []\n title: []\n extension: []\n}>\n\nexport const VToolbar = genericComponent<VToolbarSlots>()({\n name: 'VToolbar',\n\n props: makeVToolbarProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { themeClasses } = provideTheme(props)\n\n const isExtended = ref(!!(props.extended || slots.extension?.()))\n const contentHeight = computed(() => parseInt((\n Number(props.height) +\n (props.density === 'prominent' ? Number(props.height) : 0) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ), 10))\n const extensionHeight = computed(() => isExtended.value\n ? parseInt((\n Number(props.extensionHeight) +\n (props.density === 'prominent' ? Number(props.extensionHeight) : 0) -\n (props.density === 'comfortable' ? 4 : 0) -\n (props.density === 'compact' ? 8 : 0)\n ), 10)\n : 0\n )\n\n provideDefaults({\n VBtn: {\n variant: 'text',\n },\n })\n\n useRender(() => {\n const hasTitle = !!(props.title || slots.title)\n const hasImage = !!(slots.image || props.image)\n\n const extension = slots.extension?.()\n isExtended.value = !!(props.extended || extension)\n\n return (\n <props.tag\n class={[\n 'v-toolbar',\n {\n 'v-toolbar--absolute': props.absolute,\n 'v-toolbar--collapse': props.collapse,\n 'v-toolbar--flat': props.flat,\n 'v-toolbar--floating': props.floating,\n [`v-toolbar--density-${props.density}`]: true,\n },\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n themeClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n ]}\n >\n { hasImage && (\n <div key=\"image\" class=\"v-toolbar__image\">\n <VDefaultsProvider\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n >\n { slots.image ? slots.image?.() : (<VImg />) }\n </VDefaultsProvider>\n </div>\n ) }\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(contentHeight.value),\n },\n }}\n >\n <div\n class=\"v-toolbar__content\"\n style={{ height: convertToUnit(contentHeight.value) }}\n >\n { slots.prepend && (\n <div class=\"v-toolbar__prepend\">\n { slots.prepend?.() }\n </div>\n ) }\n\n { hasTitle && (\n <VToolbarTitle key=\"title\" text={ props.title }>\n {{ text: slots.title }}\n </VToolbarTitle>\n ) }\n\n { slots.default?.() }\n\n { slots.append && (\n <div class=\"v-toolbar__append\">\n { slots.append?.() }\n </div>\n ) }\n </div>\n </VDefaultsProvider>\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(extensionHeight.value),\n },\n }}\n >\n <VExpandTransition>\n { isExtended.value && (\n <div\n class=\"v-toolbar__extension\"\n style={{ height: convertToUnit(extensionHeight.value) }}\n >\n { extension }\n </div>\n ) }\n </VExpandTransition>\n </VDefaultsProvider>\n </props.tag>\n )\n })\n\n return {\n contentHeight,\n extensionHeight,\n }\n },\n})\n\nexport type VToolbar = InstanceType<typeof VToolbar>\n\nexport function filterToolbarProps (props: ExtractPropTypes<ReturnType<typeof makeVToolbarProps>>) {\n return pick(props, Object.keys(VToolbar?.props ?? {}) as any)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VToolbar.mjs","names":["VDefaultsProvider","VExpandTransition","VImg","VToolbarTitle","makeBorderProps","useBorder","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","computed","ref","toRef","convertToUnit","genericComponent","pick","propsFactory","useRender","allowedDensities","makeVToolbarProps","absolute","Boolean","collapse","color","String","density","type","default","validator","v","includes","extended","extensionHeight","Number","flat","floating","height","image","title","tag","VToolbar","name","props","setup","slots","backgroundColorClasses","backgroundColorStyles","borderClasses","elevationClasses","roundedClasses","themeClasses","isExtended","extension","contentHeight","parseInt","value","VBtn","variant","hasTitle","hasImage","cover","src","VTabs","prepend","text","append","filterToolbarProps","Object","keys"],"sources":["../../../src/components/VToolbar/VToolbar.tsx"],"sourcesContent":["// Styles\nimport './VToolbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VExpandTransition } from '@/components/transitions'\nimport { VImg } from '@/components/VImg'\nimport { VToolbarTitle } from './VToolbarTitle'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'] as const\n\nexport type Density = null | 'prominent' | 'default' | 'comfortable' | 'compact'\n\nexport const makeVToolbarProps = propsFactory({\n absolute: Boolean,\n collapse: Boolean,\n color: String,\n density: {\n type: String as PropType<Density>,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n default: 48,\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default: 64,\n },\n image: String,\n title: String,\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'header' }),\n ...makeThemeProps(),\n}, 'v-toolbar')\n\nexport type VToolbarSlots = MakeSlots<{\n default: []\n image: []\n prepend: []\n append: []\n title: []\n extension: []\n}>\n\nexport const VToolbar = genericComponent<VToolbarSlots>()({\n name: 'VToolbar',\n\n props: makeVToolbarProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { themeClasses } = provideTheme(props)\n\n const isExtended = ref(!!(props.extended || slots.extension?.()))\n const contentHeight = computed(() => parseInt((\n Number(props.height) +\n (props.density === 'prominent' ? Number(props.height) : 0) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ), 10))\n const extensionHeight = computed(() => isExtended.value\n ? parseInt((\n Number(props.extensionHeight) +\n (props.density === 'prominent' ? Number(props.extensionHeight) : 0) -\n (props.density === 'comfortable' ? 4 : 0) -\n (props.density === 'compact' ? 8 : 0)\n ), 10)\n : 0\n )\n\n provideDefaults({\n VBtn: {\n variant: 'text',\n },\n })\n\n useRender(() => {\n const hasTitle = !!(props.title || slots.title)\n const hasImage = !!(slots.image || props.image)\n\n const extension = slots.extension?.()\n isExtended.value = !!(props.extended || extension)\n\n return (\n <props.tag\n class={[\n 'v-toolbar',\n {\n 'v-toolbar--absolute': props.absolute,\n 'v-toolbar--collapse': props.collapse,\n 'v-toolbar--flat': props.flat,\n 'v-toolbar--floating': props.floating,\n [`v-toolbar--density-${props.density}`]: true,\n },\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n themeClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n ]}\n >\n { hasImage && (\n <div key=\"image\" class=\"v-toolbar__image\">\n <VDefaultsProvider\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n >\n { slots.image ? slots.image?.() : (<VImg />) }\n </VDefaultsProvider>\n </div>\n )}\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(contentHeight.value),\n },\n }}\n >\n <div\n class=\"v-toolbar__content\"\n style={{ height: convertToUnit(contentHeight.value) }}\n >\n { slots.prepend && (\n <div class=\"v-toolbar__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n { hasTitle && (\n <VToolbarTitle key=\"title\" text={ props.title }>\n {{ text: slots.title }}\n </VToolbarTitle>\n )}\n\n { slots.default?.() }\n\n { slots.append && (\n <div class=\"v-toolbar__append\">\n { slots.append?.() }\n </div>\n )}\n </div>\n </VDefaultsProvider>\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(extensionHeight.value),\n },\n }}\n >\n <VExpandTransition>\n { isExtended.value && (\n <div\n class=\"v-toolbar__extension\"\n style={{ height: convertToUnit(extensionHeight.value) }}\n >\n { extension }\n </div>\n )}\n </VExpandTransition>\n </VDefaultsProvider>\n </props.tag>\n )\n })\n\n return {\n contentHeight,\n extensionHeight,\n }\n },\n})\n\nexport type VToolbar = InstanceType<typeof VToolbar>\n\nexport function filterToolbarProps (props: ExtractPropTypes<ReturnType<typeof makeVToolbarProps>>) {\n return pick(props, Object.keys(VToolbar?.props ?? {}) as any)\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VToolbarTitle.mjs","names":["makeTagProps","genericComponent","propsFactory","useRender","makeVToolbarTitleProps","text","String","VToolbarTitle","name","props","setup","slots","hasText","default"],"sources":["../../../src/components/VToolbar/VToolbarTitle.tsx"],"sourcesContent":["// Composables\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { MakeSlots } from '@/util'\n\nexport const makeVToolbarTitleProps = propsFactory({\n text: String,\n\n ...makeTagProps(),\n}, 'v-toolbar-title')\n\nexport type VToolbarTitleSlots = MakeSlots<{\n default: []\n text: []\n}>\n\nexport const VToolbarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VToolbarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const hasText = !!(slots.default || slots.text || props.text)\n\n return (\n <props.tag class=\"v-toolbar-title\">\n { hasText && (\n <div class=\"v-toolbar-title__placeholder\">\n { slots.text ? slots.text() : props.text }\n\n { slots.default?.() }\n </div>\n )
|
|
1
|
+
{"version":3,"file":"VToolbarTitle.mjs","names":["makeTagProps","genericComponent","propsFactory","useRender","makeVToolbarTitleProps","text","String","VToolbarTitle","name","props","setup","slots","hasText","default"],"sources":["../../../src/components/VToolbar/VToolbarTitle.tsx"],"sourcesContent":["// Composables\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { MakeSlots } from '@/util'\n\nexport const makeVToolbarTitleProps = propsFactory({\n text: String,\n\n ...makeTagProps(),\n}, 'v-toolbar-title')\n\nexport type VToolbarTitleSlots = MakeSlots<{\n default: []\n text: []\n}>\n\nexport const VToolbarTitle = genericComponent<VToolbarTitleSlots>()({\n name: 'VToolbarTitle',\n\n props: makeVToolbarTitleProps(),\n\n setup (props, { slots }) {\n useRender(() => {\n const hasText = !!(slots.default || slots.text || props.text)\n\n return (\n <props.tag class=\"v-toolbar-title\">\n { hasText && (\n <div class=\"v-toolbar-title__placeholder\">\n { slots.text ? slots.text() : props.text }\n\n { slots.default?.() }\n </div>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VToolbarTitle = InstanceType<typeof VToolbarTitle>\n"],"mappings":";AAAA;AAAA,SACSA,YAAY,qCAErB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA,OAAO,MAAMC,sBAAsB,GAAGF,YAAY,CAAC;EACjDG,IAAI,EAAEC,MAAM;EAEZ,GAAGN,YAAY;AACjB,CAAC,EAAE,iBAAiB,CAAC;AAOrB,OAAO,MAAMO,aAAa,GAAGN,gBAAgB,EAAsB,CAAC;EAClEO,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAEL,sBAAsB,EAAE;EAE/BM,KAAK,CAAED,KAAK,QAAa;IAAA,IAAX;MAAEE;IAAM,CAAC;IACrBR,SAAS,CAAC,MAAM;MACd,MAAMS,OAAO,GAAG,CAAC,EAAED,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACN,IAAI,IAAII,KAAK,CAACJ,IAAI,CAAC;MAE7D;QAAA,SACmB;MAAiB;QAAA,gBAC9BO,OAAO;UAAA,SACI;QAA8B,IACrCD,KAAK,CAACN,IAAI,GAAGM,KAAK,CAACN,IAAI,EAAE,GAAGI,KAAK,CAACJ,IAAI,EAEtCM,KAAK,CAACE,OAAO,IAAI,EAEtB;MAAA;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { h, Transition, TransitionGroup } from 'vue';
|
|
3
3
|
import { genericComponent } from "../../util/index.mjs"; // Types
|
|
4
4
|
export function createCssTransition(name) {
|
|
5
|
-
let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '
|
|
5
|
+
let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center center';
|
|
6
6
|
let mode = arguments.length > 2 ? arguments[2] : undefined;
|
|
7
7
|
return genericComponent()({
|
|
8
8
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTransition.mjs","names":["h","Transition","TransitionGroup","genericComponent","createCssTransition","name","origin","mode","props","group","Boolean","hideOnLeave","leaveAbsolute","type","String","default","setup","slots","tag","onBeforeEnter","el","style","transformOrigin","onLeave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","setProperty","onAfterLeave","createJavascriptTransition","functions"],"sources":["../../../src/components/transitions/createTransition.ts"],"sourcesContent":["// Utilities\nimport { h, Transition, TransitionGroup } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { FunctionalComponent, PropType } from 'vue'\n\nexport function createCssTransition (\n name: string,\n origin = '
|
|
1
|
+
{"version":3,"file":"createTransition.mjs","names":["h","Transition","TransitionGroup","genericComponent","createCssTransition","name","origin","mode","props","group","Boolean","hideOnLeave","leaveAbsolute","type","String","default","setup","slots","tag","onBeforeEnter","el","style","transformOrigin","onLeave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","setProperty","onAfterLeave","createJavascriptTransition","functions"],"sources":["../../../src/components/transitions/createTransition.ts"],"sourcesContent":["// Utilities\nimport { h, Transition, TransitionGroup } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { FunctionalComponent, PropType } from 'vue'\n\nexport function createCssTransition (\n name: string,\n origin = 'center center',\n mode?: string\n) {\n return genericComponent()({\n name,\n\n props: {\n group: Boolean,\n hideOnLeave: Boolean,\n leaveAbsolute: Boolean,\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n setup (props, { slots }) {\n return () => {\n const tag = props.group ? TransitionGroup : Transition\n\n return h(tag as FunctionalComponent, {\n name,\n mode: props.mode,\n onBeforeEnter (el: HTMLElement) {\n el.style.transformOrigin = props.origin\n },\n onLeave (el: HTMLElement) {\n if (props.leaveAbsolute) {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = `${offsetTop}px`\n el.style.left = `${offsetLeft}px`\n el.style.width = `${offsetWidth}px`\n el.style.height = `${offsetHeight}px`\n }\n\n if (props.hideOnLeave) {\n el.style.setProperty('display', 'none', 'important')\n }\n },\n onAfterLeave (el: HTMLElement) {\n if (props.leaveAbsolute && el?._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n },\n }, slots.default)\n }\n },\n })\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record<string, any>,\n mode = 'in-out'\n) {\n return genericComponent()({\n name,\n\n props: {\n mode: {\n type: String as PropType<'in-out' | 'out-in' | 'default'>,\n default: mode,\n },\n },\n\n setup (props, { slots }) {\n return () => {\n return h(Transition, {\n name,\n // mode: props.mode, // TODO: vuejs/vue-next#3104\n ...functions,\n }, slots.default)\n }\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import { inject, reactive, ref, toRefs, watchEffect } from 'vue';
|
|
2
|
+
import { inject, reactive, ref, shallowRef, toRefs, watchEffect } from 'vue';
|
|
3
3
|
import { mergeDeep } from "../util/index.mjs"; // Globals
|
|
4
4
|
import { IN_BROWSER, SUPPORTS_TOUCH } from "../util/globals.mjs"; // Types
|
|
5
5
|
export const DisplaySymbol = Symbol.for('vuetify:display');
|
|
@@ -24,8 +24,8 @@ function getClientWidth(isHydrate) {
|
|
|
24
24
|
function getClientHeight(isHydrate) {
|
|
25
25
|
return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
|
|
26
26
|
}
|
|
27
|
-
function getPlatform() {
|
|
28
|
-
const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
|
|
27
|
+
function getPlatform(isHydrate) {
|
|
28
|
+
const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
|
|
29
29
|
function match(regexp) {
|
|
30
30
|
return Boolean(userAgent.match(regexp));
|
|
31
31
|
}
|
|
@@ -40,7 +40,6 @@ function getPlatform() {
|
|
|
40
40
|
const win = match(/win/i);
|
|
41
41
|
const mac = match(/mac/i);
|
|
42
42
|
const linux = match(/linux/i);
|
|
43
|
-
const ssr = match(/ssr/i);
|
|
44
43
|
return {
|
|
45
44
|
android,
|
|
46
45
|
ios,
|
|
@@ -54,7 +53,7 @@ function getPlatform() {
|
|
|
54
53
|
mac,
|
|
55
54
|
linux,
|
|
56
55
|
touch: SUPPORTS_TOUCH,
|
|
57
|
-
ssr
|
|
56
|
+
ssr: userAgent === 'ssr'
|
|
58
57
|
};
|
|
59
58
|
}
|
|
60
59
|
export function createDisplay(options, ssr) {
|
|
@@ -63,13 +62,17 @@ export function createDisplay(options, ssr) {
|
|
|
63
62
|
mobileBreakpoint
|
|
64
63
|
} = parseDisplayOptions(options);
|
|
65
64
|
const height = ref(getClientHeight(ssr));
|
|
66
|
-
const platform = getPlatform();
|
|
65
|
+
const platform = shallowRef(getPlatform(ssr));
|
|
67
66
|
const state = reactive({});
|
|
68
67
|
const width = ref(getClientWidth(ssr));
|
|
69
|
-
function
|
|
68
|
+
function updateSize() {
|
|
70
69
|
height.value = getClientHeight();
|
|
71
70
|
width.value = getClientWidth();
|
|
72
71
|
}
|
|
72
|
+
function update() {
|
|
73
|
+
updateSize();
|
|
74
|
+
platform.value = getPlatform();
|
|
75
|
+
}
|
|
73
76
|
|
|
74
77
|
// eslint-disable-next-line max-statements
|
|
75
78
|
watchEffect(() => {
|
|
@@ -81,7 +84,7 @@ export function createDisplay(options, ssr) {
|
|
|
81
84
|
const xxl = width.value >= thresholds.xxl;
|
|
82
85
|
const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
|
|
83
86
|
const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
|
|
84
|
-
const mobile =
|
|
87
|
+
const mobile = width.value < breakpointValue;
|
|
85
88
|
state.xs = xs;
|
|
86
89
|
state.sm = sm;
|
|
87
90
|
state.md = md;
|
|
@@ -101,11 +104,11 @@ export function createDisplay(options, ssr) {
|
|
|
101
104
|
state.width = width.value;
|
|
102
105
|
state.mobile = mobile;
|
|
103
106
|
state.mobileBreakpoint = mobileBreakpoint;
|
|
104
|
-
state.platform = platform;
|
|
107
|
+
state.platform = platform.value;
|
|
105
108
|
state.thresholds = thresholds;
|
|
106
109
|
});
|
|
107
110
|
if (IN_BROWSER) {
|
|
108
|
-
window.addEventListener('resize',
|
|
111
|
+
window.addEventListener('resize', updateSize, {
|
|
109
112
|
passive: true
|
|
110
113
|
});
|
|
111
114
|
}
|