@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.2
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 +53 -2
- package/dist/json/attributes.json +343 -195
- package/dist/json/importMap.json +20 -0
- package/dist/json/tags.json +106 -44
- package/dist/json/web-types.json +946 -549
- package/dist/vuetify.css +1486 -1085
- package/dist/vuetify.d.ts +9036 -8077
- package/dist/vuetify.esm.js +1511 -944
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +1510 -943
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +3 -3
- package/dist/vuetify.min.js +825 -754
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +29 -8
- package/lib/components/VAlert/VAlert.mjs +31 -17
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.sass +27 -7
- package/lib/components/VAlert/VAlertTitle.mjs +1 -0
- package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +14 -7
- package/lib/components/VApp/VApp.css +1 -0
- package/lib/components/VApp/VApp.sass +1 -0
- package/lib/components/VAppBar/VAppBar.mjs +7 -3
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -69
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.mjs +15 -14
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.css +82 -58
- package/lib/components/VBanner/VBanner.mjs +39 -43
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.sass +61 -54
- package/lib/components/VBanner/VBannerActions.mjs +34 -2
- package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
- package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
- package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
- package/lib/components/VBanner/VBannerIcon.mjs +20 -0
- package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
- package/lib/components/VBanner/_variables.scss +10 -14
- package/lib/components/VBanner/index.mjs +2 -0
- package/lib/components/VBanner/index.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +2 -0
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +20 -1
- package/lib/components/VBtn/VBtn.mjs +20 -7
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +15 -2
- package/lib/components/VBtn/_variables.scss +3 -0
- package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
- package/lib/components/VBtnGroup/VBtnGroup.sass +14 -6
- package/lib/components/VCard/VCard.css +13 -11
- package/lib/components/VCard/VCard.mjs +5 -2
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCard.sass +12 -9
- package/lib/components/VCard/VCardActions.mjs +1 -2
- package/lib/components/VCard/VCardActions.mjs.map +1 -1
- package/lib/components/VCard/VCardContent.mjs +3 -0
- package/lib/components/VCard/VCardContent.mjs.map +1 -0
- package/lib/components/VCard/_variables.scss +11 -5
- package/lib/components/VCard/index.mjs +1 -0
- package/lib/components/VCard/index.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.mjs +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VChip/VChip.css +3 -0
- package/lib/components/VChip/VChip.sass +3 -0
- package/lib/components/VChip/_variables.scss +3 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +92 -74
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +31 -11
- package/lib/components/VDialog/VDialog.mjs +6 -9
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +27 -10
- package/lib/components/VDialog/_variables.scss +3 -6
- package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VField/VField.css +1 -1
- package/lib/components/VField/VField.mjs +3 -4
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +2 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.mjs +32 -15
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VForm/VForm.mjs +25 -11
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.css +27 -12
- package/lib/components/VIcon/VIcon.mjs +19 -16
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.sass +27 -16
- package/lib/components/VIcon/_variables.scss +1 -0
- package/lib/components/VInput/VInput.css +3 -1
- package/lib/components/VInput/VInput.mjs +3 -4
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +3 -1
- package/lib/components/VInput/_variables.scss +4 -0
- package/lib/components/VList/VList.css +7 -6
- package/lib/components/VList/VList.mjs +36 -17
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +3 -2
- package/lib/components/VList/VListChildren.mjs +1 -1
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +28 -10
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +119 -42
- package/lib/components/VList/VListItem.mjs +36 -32
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +76 -28
- package/lib/components/VList/VListItemAction.mjs +29 -0
- package/lib/components/VList/VListItemAction.mjs.map +1 -0
- package/lib/components/VList/VListItemAvatar.mjs +10 -16
- package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
- package/lib/components/VList/VListItemIcon.mjs +23 -0
- package/lib/components/VList/VListItemIcon.mjs.map +1 -0
- package/lib/components/VList/VListItemMedia.mjs +4 -4
- package/lib/components/VList/VListItemMedia.mjs.map +1 -1
- package/lib/components/VList/_variables.scss +12 -3
- package/lib/components/VList/index.mjs +2 -0
- package/lib/components/VList/index.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.css +2 -12
- package/lib/components/VMenu/VMenu.mjs +61 -31
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +3 -6
- package/lib/components/VMenu/shared.mjs +2 -0
- package/lib/components/VMenu/shared.mjs.map +1 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +8 -0
- package/lib/components/VOverlay/VOverlay.mjs +16 -15
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +9 -0
- package/lib/components/VOverlay/_variables.scss +1 -0
- package/lib/components/VOverlay/positionStrategies.mjs +7 -3
- package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +9 -0
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +50 -14
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +10 -12
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VRadio/VRadio.mjs +1 -2
- package/lib/components/VRadio/VRadio.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRating/VRating.css +2 -2
- package/lib/components/VRating/VRating.mjs +13 -3
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/VRating.sass +2 -2
- package/lib/components/VSelect/VSelect.mjs +70 -91
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +2 -2
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
- package/lib/components/VSlideGroup/VSlideGroup.mjs +36 -14
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.sass +0 -4
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.css +7 -2
- package/lib/components/VSlider/VSlider.sass +11 -5
- package/lib/components/VSlider/VSliderTrack.css +6 -6
- package/lib/components/VSlider/VSliderTrack.mjs +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.sass +7 -7
- package/lib/components/VSlider/_variables.scss +5 -2
- package/lib/components/VSnackbar/VSnackbar.css +14 -13
- package/lib/components/VSnackbar/VSnackbar.mjs +22 -10
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +15 -16
- package/lib/components/VSnackbar/_variables.scss +0 -4
- package/lib/components/VSwitch/VSwitch.mjs +8 -5
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +0 -5
- package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.sass +0 -5
- package/lib/components/VSystemBar/_variables.scss +0 -3
- package/lib/components/VTabs/VTab.mjs +28 -32
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.css +6 -2
- package/lib/components/VTabs/VTabs.mjs +7 -8
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.sass +6 -1
- package/lib/components/VTabs/shared.mjs +2 -0
- package/lib/components/VTabs/shared.mjs.map +1 -0
- package/lib/components/VTextField/VTextField.css +4 -4
- package/lib/components/VTextField/VTextField.mjs +5 -9
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +5 -5
- package/lib/components/VTextarea/VTextarea.css +7 -4
- package/lib/components/VTextarea/VTextarea.sass +9 -5
- package/lib/components/VTimeline/VTimeline.css +187 -48
- package/lib/components/VTimeline/VTimeline.mjs +27 -11
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.sass +196 -51
- package/lib/components/VTimeline/VTimelineDivider.mjs +2 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/_variables.scss +2 -1
- package/lib/components/VToolbar/VToolbar.css +8 -1
- package/lib/components/VToolbar/VToolbar.mjs +8 -11
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -1
- package/lib/components/VToolbar/VToolbarItems.mjs +0 -1
- package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
- package/lib/components/VToolbar/_variables.scss +13 -1
- package/lib/components/VWindow/VWindow.mjs +0 -8
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/index.d.ts +9025 -8077
- package/lib/composables/defaults.mjs +2 -2
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/form.mjs +18 -5
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/forwardRef.mjs +10 -6
- package/lib/composables/forwardRef.mjs.map +1 -1
- package/lib/composables/group.mjs +14 -6
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/items.mjs +56 -0
- package/lib/composables/items.mjs.map +1 -0
- package/lib/composables/layout.mjs +7 -3
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +27 -14
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +63 -36
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +163 -122
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/overlay.mjs +5 -1
- package/lib/composables/overlay.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +1 -9
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/router.mjs +17 -5
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/selectLink.mjs +19 -0
- package/lib/composables/selectLink.mjs.map +1 -0
- package/lib/composables/stack.mjs +7 -4
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/validation.mjs +6 -3
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/variant.mjs +0 -3
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/directives/ripple/index.mjs +15 -3
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +12 -7
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +18 -2
- package/lib/locale/ca.mjs +9 -9
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/styles/generic/_colors.scss +0 -1
- package/lib/styles/main.css +400 -392
- package/lib/styles/settings/_utilities.scss +54 -26
- package/lib/styles/tools/_states.sass +2 -1
- package/lib/util/defineComponent.mjs +37 -6
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/getCurrentInstance.mjs +1 -1
- package/lib/util/getCurrentInstance.mjs.map +1 -1
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +31 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"names":["genItem","makeSelectProps","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","useForwardRef","useLocale","useProxiedModel","useTextColor","computed","nextTick","ref","watch","genericComponent","useRender","wrapInArray","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","transition","emits","val","setup","slots","t","vTextFieldRef","activator","isFocused","isPristine","menu","selectionIndex","color","value","items","map","textColorClasses","textColorStyles","model","v","multiple","_search","search","get","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","array","index","unwrapped","item","found","find","selection","push","selected","onClear","e","openOnClear","onClickControl","onKeydown","selectionStart","preventDefault","includes","key","prev","setSelectionRange","next","onAfterLeave","findIndex","filter","title","$el","querySelector","hasChips","chips","chip","menuIcon","default","eager","noDataText","onChipClose","stopPropagation","slotProps","modelValue","closable","closableChips","size"],"mappings":"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","sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { genItem, makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { genericComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { DefaultChipSlot, InternalSelectItem } from '@/components/VSelect/VSelect'\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport interface InternalComboboxItem extends InternalSelectItem {\n selected: boolean\n}\n\nexport interface DefaultComboboxSlot {\n selection: InternalComboboxItem\n}\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\nexport const VCombobox = genericComponent<new <T>() => {\n $slots: MakeSlots<{\n chip: [DefaultChipSlot]\n default: []\n selection: [DefaultComboboxSlot]\n }>\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true }),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const activator = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = ref(false)\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const items = computed(() => props.items.map(genItem))\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v || []),\n (v: any) => props.multiple ? v : v[0]\n )\n const _search = ref('')\n const search = computed<string>({\n get: () => props.multiple ? _search.value : genItem(model.value[0]).value,\n set: val => {\n if (props.multiple) {\n _search.value = val\n } else {\n model.value = [val]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select({ value: v })\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n const array: InternalComboboxItem[] = []\n let index = 0\n for (const unwrapped of model.value) {\n const item = genItem(unwrapped)\n\n const found = array.find(selection => selection.value === item.value)\n\n if (found == null) {\n array.push({\n ...item,\n index,\n selected: index === selectionIndex.value,\n })\n\n index++\n }\n }\n\n return array\n })\n const selected = computed(() => selections.value.map(selection => selection.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !filteredItems.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter') {\n select({ value: search.value })\n search.value = ''\n }\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: any) {\n if (props.multiple) {\n const index = selections.value.findIndex(selection => selection.value === item.value)\n\n if (index === -1) {\n model.value.push(item.value)\n } else {\n model.value = selected.value.filter(selection => selection !== item.value)\n }\n\n search.value = ''\n } else {\n search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(() => vTextFieldRef.value, val => {\n activator.value = val.$el.querySelector('.v-input__control')\n })\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value.push(search.value)\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ search.value }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n dirty={ selected.value.length > 0 }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n { activator.value && (\n <VMenu\n v-model={ menu.value }\n activator={ activator.value }\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n >\n { !filteredItems.value.length && !props.hideNoData && (\n <VListItem title={ t(props.noDataText) } />\n ) }\n\n { filteredItems.value.map(({ item, matches }) => (\n <VListItem\n value={ item.value }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onClick={ () => select(item) }\n >\n {{\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n </VList>\n </VMenu>\n ) }\n\n { selections.value.map((selection, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(selection)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n }\n\n return (\n <div\n class={[\n 'v-combobox__selection',\n selection.selected && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ selection.selected ? textColorStyles.value : {} }\n >\n { hasChips && (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: selection.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, selection })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) }\n\n { !hasChips && (\n slots.selection\n ? slots.selection({ selection })\n : (\n <span class=\"v-combobox__selection-text\">\n { selection.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"file":"VCombobox.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"names":["makeSelectProps","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","transformItem","useItems","useForwardRef","useLocale","useProxiedModel","useTextColor","computed","nextTick","ref","watch","genericComponent","useRender","wrapInArray","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","transition","emits","val","setup","emit","slots","t","vTextFieldRef","activator","isFocused","isPristine","menu","selectionIndex","color","value","items","textColorClasses","textColorStyles","model","v","multiple","_search","search","get","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","array","index","unwrapped","item","found","find","selection","push","selected","map","onClear","e","openOnClear","onClickControl","onKeydown","selectionStart","preventDefault","includes","key","prev","setSelectionRange","next","onInput","target","onAfterLeave","findIndex","splice","title","$el","querySelector","hasChips","chips","chip","menuIcon","default","eager","noDataText","onChipClose","stopPropagation","slotProps","modelValue","closable","closableChips","size"],"mappings":"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","sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { transformItem, useItems } from '@/composables/items'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { genericComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { DefaultChipSlot, InternalSelectItem } from '@/components/VSelect/VSelect'\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport interface InternalComboboxItem extends InternalSelectItem {\n selected: boolean\n}\n\nexport interface DefaultComboboxSlot {\n selection: InternalComboboxItem\n}\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\nexport const VCombobox = genericComponent<new <T>() => {\n $slots: MakeSlots<{\n chip: [DefaultChipSlot]\n default: []\n selection: [DefaultComboboxSlot]\n }>\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true }),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:searchInput': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const activator = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = ref(false)\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v || []),\n (v: any) => props.multiple ? v : v[0]\n )\n const _search = ref('')\n const search = computed<string>({\n get: () => props.multiple ? _search.value : transformItem(props, model.value[0]).value,\n set: val => {\n if (props.multiple) {\n _search.value = val\n } else {\n model.value = [val]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select({ value: v })\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n emit('update:searchInput', value)\n })\n\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n const array: InternalComboboxItem[] = []\n let index = 0\n for (const unwrapped of model.value) {\n const item = transformItem(props, unwrapped)\n\n const found = array.find(selection => selection.value === item.value)\n\n if (found == null) {\n array.push({\n ...item,\n index,\n selected: index === selectionIndex.value,\n })\n\n index++\n }\n }\n\n return array\n })\n const selected = computed(() => selections.value.map(selection => selection.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !filteredItems.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter') {\n select({ value: search.value })\n search.value = ''\n }\n }\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: any) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => selection === item.value)\n\n if (index === -1) {\n model.value = [...model.value, item.value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n\n search.value = ''\n } else {\n search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(() => vTextFieldRef.value, val => {\n activator.value = val.$el.querySelector('.v-input__control')\n })\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value = [...model.value, search.value]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n modelValue={ search.value }\n onInput={ onInput }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n dirty={ selected.value.length > 0 }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n { activator.value && (\n <VMenu\n v-model={ menu.value }\n activator={ activator.value }\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n >\n { !filteredItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { filteredItems.value.map(({ item, matches }) => (\n <VListItem\n value={ item.value }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onClick={ () => select(item) }\n >\n {{\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n </VList>\n </VMenu>\n ) }\n\n { selections.value.map((selection, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(selection)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n }\n\n return (\n <div\n class={[\n 'v-combobox__selection',\n selection.selected && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ selection.selected ? textColorStyles.value : {} }\n >\n { hasChips && (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: selection.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, selection })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) }\n\n { !hasChips && (\n slots.selection\n ? slots.selection({ selection })\n : (\n <span class=\"v-combobox__selection-text\">\n { selection.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"file":"VCombobox.mjs"}
|
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
z-index: 2400;
|
|
3
3
|
align-items: center;
|
|
4
4
|
justify-content: center;
|
|
5
|
+
margin: auto;
|
|
5
6
|
}
|
|
6
7
|
.v-dialog .v-overlay__content {
|
|
7
|
-
max-height:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
@media (max-width: 959.98px) {
|
|
13
|
-
.v-dialog .v-overlay__content {
|
|
14
|
-
max-width: 280px;
|
|
15
|
-
}
|
|
8
|
+
max-height: calc(100% - 48px);
|
|
9
|
+
margin: 24px;
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
16
12
|
}
|
|
17
13
|
.v-dialog .v-overlay__content > .v-card,
|
|
18
14
|
.v-dialog .v-overlay__content > .v-sheet {
|
|
19
|
-
border-radius:
|
|
20
|
-
overflow:
|
|
15
|
+
border-radius: 4px;
|
|
16
|
+
overflow-y: auto;
|
|
21
17
|
box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
|
|
22
18
|
}
|
|
19
|
+
.v-dialog .v-overlay__content > .v-card {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
}
|
|
23
23
|
.v-dialog .v-overlay__content > .v-card > .v-card-avatar {
|
|
24
24
|
padding: 0;
|
|
25
25
|
}
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
.v-dialog--fullscreen .v-overlay__content {
|
|
43
43
|
border-radius: 0;
|
|
44
44
|
margin: 0;
|
|
45
|
+
padding: 0;
|
|
45
46
|
width: 100%;
|
|
46
47
|
height: 100%;
|
|
47
48
|
max-width: 100%;
|
|
@@ -54,4 +55,23 @@
|
|
|
54
55
|
.v-dialog--fullscreen .v-overlay__content > .v-sheet {
|
|
55
56
|
min-height: 100%;
|
|
56
57
|
min-width: 100%;
|
|
58
|
+
border-radius: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.v-dialog--scrollable .v-overlay__content,
|
|
62
|
+
.v-dialog--scrollable .v-overlay__content > form {
|
|
63
|
+
display: flex;
|
|
64
|
+
}
|
|
65
|
+
.v-dialog--scrollable .v-overlay__content > .v-card,
|
|
66
|
+
.v-dialog--scrollable .v-overlay__content > form > .v-card {
|
|
67
|
+
display: flex;
|
|
68
|
+
flex: 1 1 100%;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
max-height: 100%;
|
|
71
|
+
max-width: 100%;
|
|
72
|
+
}
|
|
73
|
+
.v-dialog--scrollable .v-overlay__content > .v-card > .v-card-text,
|
|
74
|
+
.v-dialog--scrollable .v-overlay__content > form > .v-card > .v-card-text {
|
|
75
|
+
backface-visibility: hidden;
|
|
76
|
+
overflow-y: auto;
|
|
57
77
|
}
|
|
@@ -52,19 +52,15 @@ export const VDialog = genericComponent()({
|
|
|
52
52
|
const overlay = ref();
|
|
53
53
|
|
|
54
54
|
function onFocusin(e) {
|
|
55
|
-
var _overlay$value;
|
|
55
|
+
var _overlay$value, _overlay$value2;
|
|
56
56
|
|
|
57
57
|
const before = e.relatedTarget;
|
|
58
58
|
const after = e.target;
|
|
59
59
|
|
|
60
|
-
if (before !== after && (_overlay$value = overlay.value) != null && _overlay$value.contentEl && //
|
|
60
|
+
if (before !== after && (_overlay$value = overlay.value) != null && _overlay$value.contentEl && // We're the topmost dialog
|
|
61
|
+
(_overlay$value2 = overlay.value) != null && _overlay$value2.isTop && // It isn't the document or the dialog body
|
|
61
62
|
![document, overlay.value.contentEl].includes(after) && // It isn't inside the dialog body
|
|
62
|
-
!overlay.value.contentEl.contains(after)
|
|
63
|
-
// TODO: this.activeZIndex >= this.getMaxZIndex() &&
|
|
64
|
-
// It isn't inside a dependent element (like a menu)
|
|
65
|
-
// TODO: !this.getOpenDependentElements().some(el => el.contains(target))
|
|
66
|
-
// So we must have focused something outside the dialog and its children
|
|
67
|
-
) {
|
|
63
|
+
!overlay.value.contentEl.contains(after)) {
|
|
68
64
|
const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
|
|
69
65
|
if (!focusable.length) return;
|
|
70
66
|
const firstElement = focusable[0];
|
|
@@ -108,7 +104,8 @@ export const VDialog = genericComponent()({
|
|
|
108
104
|
"modelValue": isActive.value,
|
|
109
105
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
110
106
|
"class": ['v-dialog', {
|
|
111
|
-
'v-dialog--fullscreen': props.fullscreen
|
|
107
|
+
'v-dialog--fullscreen': props.fullscreen,
|
|
108
|
+
'v-dialog--scrollable': props.scrollable
|
|
112
109
|
}],
|
|
113
110
|
"style": dimensionStyles.value,
|
|
114
111
|
"transition": props.transition,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VDialog/VDialog.tsx"],"names":["VDialogTransition","VOverlay","makeDimensionProps","useDimension","makeTransitionProps","useProxiedModel","nextTick","ref","watch","genericComponent","IN_BROWSER","VDialog","name","inheritAttrs","props","fullscreen","Boolean","origin","type","String","default","retainFocus","scrollable","modelValue","width","transition","component","emits","value","setup","attrs","slots","isActive","dimensionStyles","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","document","includes","contains","focusable","querySelectorAll","filter","el","hasAttribute","length","firstElement","lastElement","focus","val","addEventListener","removeEventListener","immediate","preventScroll","activatorEl","activator"],"mappings":";AAAA;AACA,uB,CAEA;;SACSA,iB;SACAC,Q,iCAET;;SACSC,kB,EAAoBC,Y;SACpBC,mB;SACAC,e,8CAET;;AACA,SAASC,QAAT,EAAmBC,GAAnB,EAAwBC,KAAxB,QAAqC,KAArC;SACSC,gB,EAAkBC,U,gCAE3B;;AAGA,OAAO,MAAMC,OAAO,GAAGF,gBAAgB,GAElC;AACHG,EAAAA,IAAI,EAAE,SADH;AAGHC,EAAAA,YAAY,EAAE,KAHX;AAKHC,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAEC,OADP;AAELC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAEC,MADA;AAENC,MAAAA,OAAO,EAAE;AAFH,KAFH;AAMLC,IAAAA,WAAW,EAAE;AACXH,MAAAA,IAAI,EAAEF,OADK;AAEXI,MAAAA,OAAO,EAAE;AAFE,KANR;AAULE,IAAAA,UAAU,EAAEN,OAVP;AAWLO,IAAAA,UAAU,EAAEP,OAXP;AAaL,OAAGd,kBAAkB,CAAC;AAAEsB,MAAAA,KAAK,EAAE;AAAT,KAAD,CAbhB;AAcL,OAAGpB,mBAAmB,CAAC;AACrBqB,MAAAA,UAAU,EAAE;AAAEC,QAAAA,SAAS,EAAE1B;AAAb;AADS,KAAD;AAdjB,GALJ;AAwBH2B,EAAAA,KAAK,EAAE;AACL,yBAAsBC,KAAD,IAAoB;AADpC,GAxBJ;;AA4BHC,EAAAA,KAAK,CAAEf,KAAF,QAA2B;AAAA,QAAlB;AAAEgB,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAkB;AAC9B,UAAMC,QAAQ,GAAG3B,eAAe,CAACS,KAAD,EAAQ,YAAR,CAAhC;AACA,UAAM;AAAEmB,MAAAA;AAAF,QAAsB9B,YAAY,CAACW,KAAD,CAAxC;AAEA,UAAMoB,OAAO,GAAG3B,GAAG,EAAnB;;AACA,aAAS4B,SAAT,CAAoBC,CAApB,EAAmC;AAAA;;AACjC,YAAMC,MAAM,GAAGD,CAAC,CAACE,aAAjB;AACA,YAAMC,KAAK,GAAGH,CAAC,CAACI,MAAhB;;AAEA,UACEH,MAAM,KAAKE,KAAX,sBACAL,OAAO,CAACN,KADR,aACA,eAAea,SADf,IAEA;AACA,OAAC,CAACC,QAAD,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VDialog/VDialog.tsx"],"names":["VDialogTransition","VOverlay","makeDimensionProps","useDimension","makeTransitionProps","useProxiedModel","nextTick","ref","watch","genericComponent","IN_BROWSER","VDialog","name","inheritAttrs","props","fullscreen","Boolean","origin","type","String","default","retainFocus","scrollable","modelValue","width","transition","component","emits","value","setup","attrs","slots","isActive","dimensionStyles","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","isTop","document","includes","contains","focusable","querySelectorAll","filter","el","hasAttribute","length","firstElement","lastElement","focus","val","addEventListener","removeEventListener","immediate","preventScroll","activatorEl","activator"],"mappings":"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","sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VOverlay } from '@/components/VOverlay'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { nextTick, ref, watch } from 'vue'\nimport { genericComponent, IN_BROWSER } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const VDialog = genericComponent<new () => {\n $slots: OverlaySlots\n}>()({\n name: 'VDialog',\n\n inheritAttrs: false,\n\n props: {\n fullscreen: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n modelValue: Boolean,\n\n ...makeDimensionProps({ width: 'auto' }),\n ...makeTransitionProps({\n transition: { component: VDialogTransition },\n }),\n },\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { dimensionStyles } = useDimension(props)\n\n const overlay = ref<VOverlay>()\n function onFocusin (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost dialog\n overlay.value?.isTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = [...overlay.value.contentEl.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => !el.hasAttribute('disabled')) as HTMLElement[]\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n watch(isActive, async val => {\n await nextTick()\n if (val) {\n overlay.value!.contentEl?.focus({ preventScroll: true })\n } else {\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n return () => {\n return (\n <VOverlay\n v-model={ isActive.value }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n ]}\n style={ dimensionStyles.value }\n transition={ props.transition }\n ref={ overlay }\n aria-role=\"dialog\"\n aria-modal=\"true\"\n activatorProps={{\n 'aria-haspopup': 'dialog',\n 'aria-expanded': String(isActive.value),\n }}\n { ...attrs }\n v-slots={{\n default: slots.default,\n activator: slots.activator,\n }}\n />\n )\n }\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"file":"VDialog.mjs"}
|
|
@@ -7,25 +7,25 @@
|
|
|
7
7
|
z-index: $dialog-z-index
|
|
8
8
|
align-items: center
|
|
9
9
|
justify-content: center
|
|
10
|
+
margin: auto
|
|
10
11
|
|
|
11
12
|
.v-overlay__content
|
|
12
|
-
max-height: $dialog-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@include tools.rounded($dialog-overlay-content-border-radius)
|
|
17
|
-
|
|
18
|
-
@media #{$dialog-overlay-content-mobile-breakpoint}
|
|
19
|
-
max-width: $dialog-overlay-content-mobile-max-width
|
|
13
|
+
max-height: calc(100% - #{$dialog-margin * 2})
|
|
14
|
+
margin: $dialog-margin
|
|
15
|
+
display: flex
|
|
16
|
+
flex-direction: column
|
|
20
17
|
|
|
21
18
|
> .v-card,
|
|
22
19
|
> .v-sheet
|
|
23
|
-
border-radius:
|
|
24
|
-
overflow:
|
|
20
|
+
border-radius: $dialog-border-radius
|
|
21
|
+
overflow-y: auto
|
|
25
22
|
|
|
26
23
|
@include tools.elevation($dialog-elevation)
|
|
27
24
|
|
|
28
25
|
> .v-card
|
|
26
|
+
display: flex
|
|
27
|
+
flex-direction: column
|
|
28
|
+
|
|
29
29
|
> .v-card-avatar
|
|
30
30
|
padding: $dialog-card-avatar-padding
|
|
31
31
|
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
.v-overlay__content
|
|
48
48
|
border-radius: 0
|
|
49
49
|
margin: 0
|
|
50
|
+
padding: 0
|
|
50
51
|
width: 100%
|
|
51
52
|
height: 100%
|
|
52
53
|
max-width: 100%
|
|
@@ -59,3 +60,19 @@
|
|
|
59
60
|
> .v-sheet
|
|
60
61
|
min-height: 100%
|
|
61
62
|
min-width: 100%
|
|
63
|
+
border-radius: 0
|
|
64
|
+
|
|
65
|
+
.v-dialog--scrollable .v-overlay__content,
|
|
66
|
+
.v-dialog--scrollable .v-overlay__content > form
|
|
67
|
+
display: flex
|
|
68
|
+
|
|
69
|
+
> .v-card
|
|
70
|
+
display: flex
|
|
71
|
+
flex: 1 1 100%
|
|
72
|
+
flex-direction: column
|
|
73
|
+
max-height: 100%
|
|
74
|
+
max-width: 100%
|
|
75
|
+
|
|
76
|
+
> .v-card-text
|
|
77
|
+
backface-visibility: hidden
|
|
78
|
+
overflow-y: auto
|
|
@@ -5,14 +5,11 @@
|
|
|
5
5
|
// Defaults
|
|
6
6
|
$dialog-elevation: 24 !default;
|
|
7
7
|
$dialog-z-index: $dialog-elevation * 100 !default;
|
|
8
|
+
$dialog-border-radius: settings.$border-radius-root !default;
|
|
9
|
+
$dialog-margin: 24px !default;
|
|
10
|
+
|
|
8
11
|
$dialog-card-avatar-padding: 0 !default;
|
|
9
12
|
$dialog-card-header-padding: 14px 24px 0 !default;
|
|
10
13
|
$dialog-card-header-text-padding-top: 10px !default;
|
|
11
14
|
$dialog-card-text-padding: 16px 24px 10px !default;
|
|
12
15
|
$dialog-card-text-letter-spacing: tools.map-deep-get(settings.$typography, 'body-1', 'letter-spacing') !default;
|
|
13
|
-
$dialog-overlay-content-border-radius: settings.$border-radius-root !default;
|
|
14
|
-
$dialog-overlay-content-max-width: 560px !default;
|
|
15
|
-
$dialog-overlay-content-max-height: 360px !default;
|
|
16
|
-
$dialog-overlay-content-min-width: 240px !default;
|
|
17
|
-
$dialog-overlay-content-mobile-breakpoint: map.get(settings.$display-breakpoints, 'sm-and-down') !default;
|
|
18
|
-
$dialog-overlay-content-mobile-max-width: 280px !default;
|
|
@@ -129,10 +129,11 @@
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
.v-expansion-panel-title--active:hover.v-expansion-panel-title__overlay,
|
|
132
|
-
.v-expansion-panel-title--active .v-expansion-panel-title__overlay
|
|
132
|
+
.v-expansion-panel-title--active .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:hover.v-expansion-panel-title__overlay,
|
|
133
|
+
.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true] .v-expansion-panel-title__overlay {
|
|
133
134
|
opacity: calc(0.12 * var(--v-theme-overlay-multiplier));
|
|
134
135
|
}
|
|
135
|
-
.v-expansion-panel-title--active:focus .v-expansion-panel-title__overlay {
|
|
136
|
+
.v-expansion-panel-title--active:focus .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus .v-expansion-panel-title__overlay {
|
|
136
137
|
opacity: calc(0.16 * var(--v-theme-overlay-multiplier));
|
|
137
138
|
}
|
|
138
139
|
.v-expansion-panel-title--active::before {
|
|
@@ -43,13 +43,17 @@ export const VExpansionPanel = defineComponent({
|
|
|
43
43
|
roundedClasses
|
|
44
44
|
} = useRounded(props);
|
|
45
45
|
const isDisabled = computed(() => (groupItem == null ? void 0 : groupItem.disabled.value) || props.disabled);
|
|
46
|
+
const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
|
|
47
|
+
if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
|
|
48
|
+
return arr;
|
|
49
|
+
}, []));
|
|
46
50
|
const isBeforeSelected = computed(() => {
|
|
47
51
|
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
|
48
|
-
return !groupItem.isSelected.value &&
|
|
52
|
+
return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);
|
|
49
53
|
});
|
|
50
54
|
const isAfterSelected = computed(() => {
|
|
51
55
|
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
|
52
|
-
return !groupItem.isSelected.value &&
|
|
56
|
+
return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);
|
|
53
57
|
});
|
|
54
58
|
provide(VExpansionPanelSymbol, groupItem);
|
|
55
59
|
useRender(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelText","VExpansionPanelSymbol","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeRoundedProps","useRounded","useBackgroundColor","makeTagProps","makeLazyProps","computed","provide","defineComponent","useRender","VExpansionPanel","name","props","title","String","text","bgColor","setup","slots","groupItem","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","isDisabled","disabled","value","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelText","VExpansionPanelSymbol","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeRoundedProps","useRounded","useBackgroundColor","makeTagProps","makeLazyProps","computed","provide","defineComponent","useRender","VExpansionPanel","name","props","title","String","text","bgColor","setup","slots","groupItem","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","isDisabled","disabled","value","selectedIndices","group","items","reduce","arr","item","index","selected","includes","id","push","isBeforeSelected","findIndex","isSelected","some","selectedIndex","isAfterSelected","hasText","hasTitle","collapseIcon","color","expandIcon","hideActions","ripple","eager","default"],"mappings":"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","sourcesContent":["// Components\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VExpansionPanelText } from './VExpansionPanelText'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeLazyProps } from '@/composables/lazy'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\nexport const VExpansionPanel = defineComponent({\n name: 'VExpansionPanel',\n\n props: {\n title: String,\n text: String,\n bgColor: String,\n\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n const selectedIndices = computed(() => groupItem.group.items.value.reduce<number[]>((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index)\n return arr\n }, []))\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === 1)\n })\n\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === -1)\n })\n\n provide(VExpansionPanelSymbol, groupItem)\n\n useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\n\n return (\n <props.tag\n class={[\n 'v-expansion-panel',\n {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value,\n },\n roundedClasses.value,\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n aria-expanded={ groupItem.isSelected.value }\n >\n <div\n class={[\n 'v-expansion-panel__shadow',\n ...elevationClasses.value,\n ]}\n />\n\n { hasTitle && (\n <VExpansionPanelTitle\n collapseIcon={ props.collapseIcon }\n color={ props.color }\n expandIcon={ props.expandIcon }\n hideActions={ props.hideActions }\n ripple={ props.ripple }\n >\n { slots.title ? slots.title() : props.title }\n </VExpansionPanelTitle>\n ) }\n\n { hasText && (\n <VExpansionPanelText eager={ props.eager }>\n { slots.text ? slots.text() : props.text }\n </VExpansionPanelText>\n ) }\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n"],"file":"VExpansionPanel.mjs"}
|
|
@@ -23,7 +23,8 @@ export const makeVExpansionPanelTitleProps = propsFactory({
|
|
|
23
23
|
ripple: {
|
|
24
24
|
type: [Boolean, Object],
|
|
25
25
|
default: false
|
|
26
|
-
}
|
|
26
|
+
},
|
|
27
|
+
readonly: Boolean
|
|
27
28
|
});
|
|
28
29
|
export const VExpansionPanelTitle = defineComponent({
|
|
29
30
|
name: 'VExpansionPanelTitle',
|
|
@@ -47,7 +48,8 @@ export const VExpansionPanelTitle = defineComponent({
|
|
|
47
48
|
collapseIcon: props.collapseIcon,
|
|
48
49
|
disabled: expansionPanel.disabled.value,
|
|
49
50
|
expanded: expansionPanel.isSelected.value,
|
|
50
|
-
expandIcon: props.expandIcon
|
|
51
|
+
expandIcon: props.expandIcon,
|
|
52
|
+
readonly: props.readonly
|
|
51
53
|
}));
|
|
52
54
|
useRender(() => {
|
|
53
55
|
var _slots$default;
|
|
@@ -61,7 +63,7 @@ export const VExpansionPanelTitle = defineComponent({
|
|
|
61
63
|
"tabindex": expansionPanel.disabled.value ? -1 : undefined,
|
|
62
64
|
"disabled": expansionPanel.disabled.value,
|
|
63
65
|
"aria-expanded": expansionPanel.isSelected.value,
|
|
64
|
-
"onClick": expansionPanel.toggle
|
|
66
|
+
"onClick": !props.readonly ? expansionPanel.toggle : undefined
|
|
65
67
|
}, [_createVNode("div", {
|
|
66
68
|
"class": "v-expansion-panel-title__overlay"
|
|
67
69
|
}, null), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value), !props.hideActions && _createVNode("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"names":["VIcon","VExpansionPanelSymbol","useBackgroundColor","Ripple","computed","inject","defineComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","ripple","Object","VExpansionPanelTitle","name","directives","props","setup","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","undefined","toggle","actions"],"mappings":";AAAA;SACSA,K;SACAC,qB,kCAET;;SACSC,kB,uCAET;;SACSC,M,6CAET;;AACA,SAASC,QAAT,EAAmBC,MAAnB,QAAiC,KAAjC;SACSC,e,EAAiBC,Y,EAAcC,S;AAExC,OAAO,MAAMC,6BAA6B,GAAGF,YAAY,CAAC;AACxDG,EAAAA,KAAK,EAAEC,MADiD;AAExDC,EAAAA,UAAU,EAAE;AACVC,IAAAA,IAAI,EAAEF,MADI;AAEVG,IAAAA,OAAO,EAAE;AAFC,GAF4C;AAMxDC,EAAAA,YAAY,EAAE;AACZF,IAAAA,IAAI,EAAEF,MADM;AAEZG,IAAAA,OAAO,EAAE;AAFG,GAN0C;AAUxDE,EAAAA,WAAW,EAAEC,OAV2C;AAWxDC,EAAAA,MAAM,EAAE;AACNL,IAAAA,IAAI,EAAE,CAACI,OAAD,EAAUE,MAAV,CADA;AAENL,IAAAA,OAAO,EAAE;AAFH;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"names":["VIcon","VExpansionPanelSymbol","useBackgroundColor","Ripple","computed","inject","defineComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","undefined","toggle","actions"],"mappings":"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","sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { defineComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n collapseIcon: {\n type: String,\n default: '$collapse',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n readonly: Boolean,\n})\n\nexport const VExpansionPanelTitle = defineComponent({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: {\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n },\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <div class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <div class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </div>\n ) }\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"file":"VExpansionPanelTitle.mjs"}
|
|
@@ -21,6 +21,7 @@ export const VExpansionPanels = defineComponent({
|
|
|
21
21
|
default: 'default',
|
|
22
22
|
validator: v => allowedVariants.includes(v)
|
|
23
23
|
},
|
|
24
|
+
readonly: Boolean,
|
|
24
25
|
...makeGroupProps(),
|
|
25
26
|
...makeTagProps(),
|
|
26
27
|
...makeThemeProps()
|
|
@@ -41,6 +42,9 @@ export const VExpansionPanels = defineComponent({
|
|
|
41
42
|
provideDefaults({
|
|
42
43
|
VExpansionPanel: {
|
|
43
44
|
color: toRef(props, 'color')
|
|
45
|
+
},
|
|
46
|
+
VExpansionPanelTitle: {
|
|
47
|
+
readonly: toRef(props, 'readonly')
|
|
44
48
|
}
|
|
45
49
|
});
|
|
46
50
|
useRender(() => _createVNode(props.tag, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"names":["makeGroupProps","useGroup","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","defineComponent","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","VExpansionPanels","name","props","color","String","variant","type","default","validator","v","includes","emits","val","setup","slots","themeClasses","variantClass","VExpansionPanel","value"],"mappings":";AAAA;AACA,+B,CAEA;;SACSA,c,EAAgBC,Q;SAChBC,Y;SACAC,c,EAAgBC,Y;SAChBC,e,0CAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,e,EAAiBC,S,gCAE1B;;AAIA,OAAO,MAAMC,qBAAqD,GAAGC,MAAM,CAACC,GAAP,CAAW,2BAAX,CAA9D;AAEP,MAAMC,eAAe,GAAG,CAAC,SAAD,EAAY,WAAZ,EAAyB,OAAzB,EAAkC,QAAlC,CAAxB;AAIA,OAAO,MAAMC,gBAAgB,GAAGN,eAAe,CAAC;AAC9CO,EAAAA,IAAI,EAAE,kBADwC;AAG9CC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,MADF;AAELC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAEF,MADC;AAEPG,MAAAA,OAAO,EAAE,SAFF;AAGPC,MAAAA,SAAS,EAAGC,CAAD,IAAYV,eAAe,CAACW,QAAhB,CAAyBD,CAAzB;AAHhB,KAFJ;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"names":["makeGroupProps","useGroup","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","defineComponent","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","VExpansionPanels","name","props","color","String","variant","type","default","validator","v","includes","readonly","Boolean","emits","val","setup","slots","themeClasses","variantClass","VExpansionPanel","VExpansionPanelTitle","value"],"mappings":";AAAA;AACA,+B,CAEA;;SACSA,c,EAAgBC,Q;SAChBC,Y;SACAC,c,EAAgBC,Y;SAChBC,e,0CAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,e,EAAiBC,S,gCAE1B;;AAIA,OAAO,MAAMC,qBAAqD,GAAGC,MAAM,CAACC,GAAP,CAAW,2BAAX,CAA9D;AAEP,MAAMC,eAAe,GAAG,CAAC,SAAD,EAAY,WAAZ,EAAyB,OAAzB,EAAkC,QAAlC,CAAxB;AAIA,OAAO,MAAMC,gBAAgB,GAAGN,eAAe,CAAC;AAC9CO,EAAAA,IAAI,EAAE,kBADwC;AAG9CC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,MADF;AAELC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAEF,MADC;AAEPG,MAAAA,OAAO,EAAE,SAFF;AAGPC,MAAAA,SAAS,EAAGC,CAAD,IAAYV,eAAe,CAACW,QAAhB,CAAyBD,CAAzB;AAHhB,KAFJ;AAOLE,IAAAA,QAAQ,EAAEC,OAPL;AASL,OAAG1B,cAAc,EATZ;AAUL,OAAGE,YAAY,EAVV;AAWL,OAAGC,cAAc;AAXZ,GAHuC;AAiB9CwB,EAAAA,KAAK,EAAE;AACL,yBAAsBC,GAAD,IAAkB;AADlC,GAjBuC;;AAqB9CC,EAAAA,KAAK,CAAEb,KAAF,QAAoB;AAAA,QAAX;AAAEc,MAAAA;AAAF,KAAW;AACvB7B,IAAAA,QAAQ,CAACe,KAAD,EAAQN,qBAAR,CAAR;AAEA,UAAM;AAAEqB,MAAAA;AAAF,QAAmB3B,YAAY,CAACY,KAAD,CAArC;AAEA,UAAMgB,YAAY,GAAG1B,QAAQ,CAAC,MAAMU,KAAK,CAACG,OAAN,IAAkB,+BAA8BH,KAAK,CAACG,OAAQ,EAArE,CAA7B;AAEAd,IAAAA,eAAe,CAAC;AACd4B,MAAAA,eAAe,EAAE;AACfhB,QAAAA,KAAK,EAAEV,KAAK,CAACS,KAAD,EAAQ,OAAR;AADG,OADH;AAIdkB,MAAAA,oBAAoB,EAAE;AACpBT,QAAAA,QAAQ,EAAElB,KAAK,CAACS,KAAD,EAAQ,UAAR;AADK;AAJR,KAAD,CAAf;AASAP,IAAAA,SAAS,CAAC;AAAA,eAEC,CACL,oBADK,EAELsB,YAAY,CAACI,KAFR,EAGLH,YAAY,CAACG,KAHR;AAFD,OAOIL,KAPJ,CAAD,CAAT;AAWA,WAAO,EAAP;AACD;;AAjD6C,CAAD,CAAxC","sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Composables\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const VExpansionPanels = defineComponent({\n name: 'VExpansionPanels',\n\n props: {\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n readonly: Boolean,\n\n ...makeGroupProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n color: toRef(props, 'color'),\n },\n VExpansionPanelTitle: {\n readonly: toRef(props, 'readonly'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n themeClasses.value,\n variantClass.value,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"file":"VExpansionPanels.mjs"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
.v-field {
|
|
3
3
|
display: grid;
|
|
4
4
|
grid-template-areas: "prepend-inner field clear append-inner";
|
|
5
|
-
grid-template-columns: min-content
|
|
5
|
+
grid-template-columns: min-content minmax(0, 1fr) min-content min-content;
|
|
6
6
|
font-size: 16px;
|
|
7
7
|
letter-spacing: 0.009375em;
|
|
8
8
|
max-width: 100%;
|
|
@@ -51,8 +51,6 @@ export const VField = genericComponent()({
|
|
|
51
51
|
},
|
|
52
52
|
emits: {
|
|
53
53
|
'click:clear': e => true,
|
|
54
|
-
'click:prepend-inner': e => true,
|
|
55
|
-
'click:append-inner': e => true,
|
|
56
54
|
'click:control': e => true,
|
|
57
55
|
'update:focused': focused => true,
|
|
58
56
|
'update:modelValue': val => true
|
|
@@ -167,6 +165,7 @@ export const VField = genericComponent()({
|
|
|
167
165
|
'v-field--prepended': hasPrepend,
|
|
168
166
|
'v-field--reverse': props.reverse,
|
|
169
167
|
'v-field--single-line': props.singleLine,
|
|
168
|
+
'v-field--has-label': !!label,
|
|
170
169
|
[`v-field--variant-${props.variant}`]: true
|
|
171
170
|
}, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
|
|
172
171
|
"style": [backgroundColorStyles.value, textColorStyles.value],
|
|
@@ -182,7 +181,7 @@ export const VField = genericComponent()({
|
|
|
182
181
|
}), hasPrepend && _createVNode("div", {
|
|
183
182
|
"class": "v-field__prepend-inner"
|
|
184
183
|
}, [props.prependInnerIcon && _createVNode(VIcon, {
|
|
185
|
-
"onClick":
|
|
184
|
+
"onClick": attrs['onClick:prependInner'],
|
|
186
185
|
"icon": props.prependInnerIcon
|
|
187
186
|
}, null), slots == null ? void 0 : (_slots$prependInner = slots.prependInner) == null ? void 0 : _slots$prependInner.call(slots, slotProps.value)]), _createVNode("div", {
|
|
188
187
|
"class": "v-field__field"
|
|
@@ -214,7 +213,7 @@ export const VField = genericComponent()({
|
|
|
214
213
|
}), hasAppend && _createVNode("div", {
|
|
215
214
|
"class": "v-field__append-inner"
|
|
216
215
|
}, [slots == null ? void 0 : (_slots$appendInner = slots.appendInner) == null ? void 0 : _slots$appendInner.call(slots, slotProps.value), props.appendInnerIcon && _createVNode(VIcon, {
|
|
217
|
-
"onClick":
|
|
216
|
+
"onClick": attrs['onClick:appendInner'],
|
|
218
217
|
"icon": props.appendInnerIcon
|
|
219
218
|
}, null)]), _createVNode("div", {
|
|
220
219
|
"class": ['v-field__outline', textColorClasses.value]
|