@dimailn/vuetify 2.7.2-alpha31 → 2.7.2-alpha33
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/dist/vuetify.js +551 -368
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +1 -1
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VCalendar/VCalendarWeekly.js +10 -5
- package/es5/components/VCalendar/VCalendarWeekly.js.map +1 -1
- package/es5/components/VCheckbox/VCheckbox.js +7 -9
- package/es5/components/VCheckbox/VCheckbox.js.map +1 -1
- package/es5/components/VContent/VContent.js +24 -5
- package/es5/components/VContent/VContent.js.map +1 -1
- package/es5/components/VCounter/VCounter.js.map +1 -1
- package/es5/components/VDatePicker/VDatePicker.js +15 -7
- package/es5/components/VDatePicker/VDatePicker.js.map +1 -1
- package/es5/components/VDatePicker/VDatePickerTitle.js +30 -19
- package/es5/components/VDatePicker/VDatePickerTitle.js.map +1 -1
- package/es5/components/VDatePicker/mixins/date-picker-table.js +1 -1
- package/es5/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
- package/es5/components/VDatePicker/util/eventHelpers.js +27 -17
- package/es5/components/VDatePicker/util/eventHelpers.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/es5/components/VGrid/VCol.js +3 -1
- package/es5/components/VGrid/VCol.js.map +1 -1
- package/es5/components/VGrid/VContainer.js +23 -10
- package/es5/components/VGrid/VContainer.js.map +1 -1
- package/es5/components/VGrid/grid.js +33 -15
- package/es5/components/VGrid/grid.js.map +1 -1
- package/es5/components/VHover/VHover.js +23 -17
- package/es5/components/VHover/VHover.js.map +1 -1
- package/es5/components/VIcon/VIcon.js +77 -53
- package/es5/components/VIcon/VIcon.js.map +1 -1
- package/es5/components/VItemGroup/VItem.js +7 -3
- package/es5/components/VItemGroup/VItem.js.map +1 -1
- package/es5/components/VLabel/VLabel.js +3 -1
- package/es5/components/VLabel/VLabel.js.map +1 -1
- package/es5/components/VOtpInput/VOtpInput.js +54 -33
- package/es5/components/VOtpInput/VOtpInput.js.map +1 -1
- package/es5/components/VOverflowBtn/VOverflowBtn.js +14 -13
- package/es5/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
- package/es5/components/VProgressLinear/VProgressLinear.js +12 -33
- package/es5/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +4 -1
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VStepper/VStepper.js +1 -1
- package/es5/components/VStepper/VStepper.js.map +1 -1
- package/es5/components/VStepper/VStepperContent.js +2 -5
- package/es5/components/VStepper/VStepperContent.js.map +1 -1
- package/es5/components/VSwitch/VSwitch.js +1 -1
- package/es5/components/VSwitch/VSwitch.js.map +1 -1
- package/es5/components/VTextField/VTextField.js +2 -1
- package/es5/components/VTextField/VTextField.js.map +1 -1
- package/es5/components/VTooltip/VTooltip.js +0 -7
- package/es5/components/VTooltip/VTooltip.js.map +1 -1
- package/es5/directives/color/index.js +6 -3
- package/es5/directives/color/index.js.map +1 -1
- package/es5/directives/ripple/index.js +5 -2
- package/es5/directives/ripple/index.js.map +1 -1
- package/es5/directives/scroll/index.js +1 -2
- package/es5/directives/scroll/index.js.map +1 -1
- package/es5/directives/touch/index.js +7 -4
- package/es5/directives/touch/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/activatable/index.js +0 -8
- package/es5/mixins/activatable/index.js.map +1 -1
- package/es5/mixins/groupable/index.js.map +1 -1
- package/es5/mixins/positionable/index.js.map +1 -1
- package/es5/mixins/proxyable/index.js.map +1 -1
- package/es5/mixins/registrable/index.js.map +1 -1
- package/es5/mixins/selectable/index.js +4 -2
- package/es5/mixins/selectable/index.js.map +1 -1
- package/es5/mixins/toggleable/index.js.map +1 -1
- package/es5/services/goto/util.js +42 -3
- package/es5/services/goto/util.js.map +1 -1
- package/es5/services/theme/index.js +20 -71
- package/es5/services/theme/index.js.map +1 -1
- package/es5/util/mergeData.js +6 -5
- package/es5/util/mergeData.js.map +1 -1
- package/es5/util/mixins.js +4 -3
- package/es5/util/mixins.js.map +1 -1
- package/lib/components/VCalendar/VCalendarWeekly.js +11 -6
- package/lib/components/VCalendar/VCalendarWeekly.js.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.js +5 -8
- package/lib/components/VCheckbox/VCheckbox.js.map +1 -1
- package/lib/components/VContent/VContent.js +18 -3
- package/lib/components/VContent/VContent.js.map +1 -1
- package/lib/components/VCounter/VCounter.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +17 -7
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerTitle.js +25 -14
- package/lib/components/VDatePicker/VDatePickerTitle.js.map +1 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.js +1 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
- package/lib/components/VDatePicker/util/eventHelpers.js +26 -14
- package/lib/components/VDatePicker/util/eventHelpers.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/lib/components/VGrid/VCol.js +3 -1
- package/lib/components/VGrid/VCol.js.map +1 -1
- package/lib/components/VGrid/VContainer.js +11 -10
- package/lib/components/VGrid/VContainer.js.map +1 -1
- package/lib/components/VGrid/grid.js +15 -14
- package/lib/components/VGrid/grid.js.map +1 -1
- package/lib/components/VHover/VHover.js +23 -18
- package/lib/components/VHover/VHover.js.map +1 -1
- package/lib/components/VIcon/VIcon.js +79 -57
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/components/VItemGroup/VItem.js +3 -2
- package/lib/components/VItemGroup/VItem.js.map +1 -1
- package/lib/components/VLabel/VLabel.js +3 -1
- package/lib/components/VLabel/VLabel.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +58 -34
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.js +14 -14
- package/lib/components/VOverflowBtn/VOverflowBtn.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.js +12 -16
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +4 -1
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VStepper/VStepper.js +1 -1
- package/lib/components/VStepper/VStepper.js.map +1 -1
- package/lib/components/VStepper/VStepperContent.js +3 -6
- package/lib/components/VStepper/VStepperContent.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.js +1 -1
- package/lib/components/VSwitch/VSwitch.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +2 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTooltip/VTooltip.js +1 -8
- package/lib/components/VTooltip/VTooltip.js.map +1 -1
- package/lib/directives/color/index.js +6 -3
- package/lib/directives/color/index.js.map +1 -1
- package/lib/directives/ripple/index.js +5 -3
- package/lib/directives/ripple/index.js.map +1 -1
- package/lib/directives/scroll/index.js +1 -2
- package/lib/directives/scroll/index.js.map +1 -1
- package/lib/directives/touch/index.js +7 -4
- package/lib/directives/touch/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/activatable/index.js +1 -8
- package/lib/mixins/activatable/index.js.map +1 -1
- package/lib/mixins/groupable/index.js.map +1 -1
- package/lib/mixins/positionable/index.js.map +1 -1
- package/lib/mixins/proxyable/index.js.map +1 -1
- package/lib/mixins/registrable/index.js.map +1 -1
- package/lib/mixins/selectable/index.js +9 -7
- package/lib/mixins/selectable/index.js.map +1 -1
- package/lib/mixins/toggleable/index.js.map +1 -1
- package/lib/services/goto/util.js +42 -3
- package/lib/services/goto/util.js.map +1 -1
- package/lib/services/theme/index.js +18 -64
- package/lib/services/theme/index.js.map +1 -1
- package/lib/util/mergeData.js +6 -5
- package/lib/util/mergeData.js.map +1 -1
- package/lib/util/mixins.js +3 -2
- package/lib/util/mixins.js.map +1 -1
- package/package.json +2 -2
- package/src/components/VAlert/__tests__/__snapshots__/VAlert.spec.ts.snap +4 -4
- package/src/components/VAppBar/__tests__/__snapshots__/VAppBarNavIcon.spec.ts.snap +2 -2
- package/src/components/VAutocomplete/__tests__/VAutocomplete.spec.ts +75 -20
- package/src/components/VAutocomplete/__tests__/VAutocomplete2.spec.ts +38 -40
- package/src/components/VAutocomplete/__tests__/VAutocomplete3.spec.ts +26 -26
- package/src/components/VBanner/__tests__/__snapshots__/VBanner.spec.ts.snap +2 -2
- package/src/components/VBtn/__tests__/VBtn.spec.ts +8 -4
- package/src/components/VCalendar/VCalendarWeekly.ts +12 -5
- package/src/components/VCalendar/__tests__/VCalendar.spec.ts +1 -1
- package/src/components/VCalendar/__tests__/VCalendarCategory.spec.ts +5 -5
- package/src/components/VCalendar/__tests__/__snapshots__/VCalendar.spec.ts.snap +167 -168
- package/src/components/VCheckbox/VCheckbox.ts +4 -9
- package/src/components/VCheckbox/__tests__/VCheckbox.spec.ts +7 -1
- package/src/components/VCheckbox/__tests__/__snapshots__/VCheckbox.spec.ts.snap +54 -50
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +18 -18
- package/src/components/VColorPicker/__tests__/__snapshots__/VColorPickerEdit.spec.ts.snap +10 -10
- package/src/components/VCombobox/__tests__/VCombobox-multiple.spec.ts +89 -69
- package/src/components/VCombobox/__tests__/VCombobox.spec.ts +17 -12
- package/src/components/VContent/VContent.ts +10 -2
- package/src/components/VCounter/VCounter.ts +1 -1
- package/src/components/VCounter/__tests__/VCounter.spec.ts +10 -25
- package/src/components/VDataIterator/__tests__/__snapshots__/VDataFooter.spec.ts.snap +42 -42
- package/src/components/VDataIterator/__tests__/__snapshots__/VDataIterator.spec.ts.snap +30 -30
- package/src/components/VDataTable/__tests__/VDataTable.spec.ts +1 -1
- package/src/components/VDataTable/__tests__/VDataTableHeader.spec.ts +6 -10
- package/src/components/VDataTable/__tests__/VEditDialog.spec.ts +24 -21
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +409 -409
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTableHeader.spec.ts.snap +70 -70
- package/src/components/VDataTable/mixins/__tests__/__snapshots__/header.spec.ts.snap +8 -8
- package/src/components/VDataTable/mixins/__tests__/header.spec.ts +3 -3
- package/src/components/VDatePicker/VDatePicker.ts +23 -7
- package/src/components/VDatePicker/VDatePickerTitle.ts +28 -16
- package/src/components/VDatePicker/__tests__/VDatePicker.date.spec.ts +86 -124
- package/src/components/VDatePicker/__tests__/VDatePicker.month.spec.ts +85 -63
- package/src/components/VDatePicker/__tests__/VDatePickerHeader.spec.ts +12 -27
- package/src/components/VDatePicker/__tests__/VDatePickerTitle.spec.ts +9 -5
- package/src/components/VDatePicker/__tests__/VDatePickerYears.spec.ts +4 -4
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePicker.date.spec.ts.snap +27 -9
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePicker.month.spec.ts.snap +45 -35
- package/src/components/VDatePicker/__tests__/__snapshots__/VDatePickerTitle.spec.ts.snap +15 -5
- package/src/components/VDatePicker/mixins/date-picker-table.ts +1 -1
- package/src/components/VDatePicker/util/eventHelpers.ts +33 -13
- package/src/components/VExpansionPanel/VExpansionPanelContent.ts +5 -8
- package/src/components/VExpansionPanel/VExpansionPanelHeader.ts +10 -14
- package/src/components/VExpansionPanel/__tests__/VExpansionPanelHeader.spec.ts +6 -4
- package/src/components/VExpansionPanel/__tests__/VExpansionPanels.spec.ts +9 -5
- package/src/components/VExpansionPanel/__tests__/__snapshots__/VExpansionPanel.spec.ts.snap +4 -4
- package/src/components/VFileInput/__tests__/__snapshots__/VFileInput.spec.ts.snap +38 -38
- package/src/components/VFooter/__tests__/VFooter.spec.ts +28 -21
- package/src/components/VGrid/VCol.ts +1 -1
- package/src/components/VGrid/VContainer.ts +12 -10
- package/src/components/VGrid/__tests__/VCol.spec.ts +4 -2
- package/src/components/VGrid/__tests__/VGrid.spec.ts +2 -3
- package/src/components/VGrid/grid.ts +14 -17
- package/src/components/VHover/VHover.ts +21 -17
- package/src/components/VHover/__tests__/VHover.spec.ts +44 -28
- package/src/components/VIcon/VIcon.ts +72 -53
- package/src/components/VIcon/__tests__/VIcon.spec.ts +86 -176
- package/src/components/VIcon/__tests__/__snapshots__/VIcon.spec.ts.snap +19 -74
- package/src/components/VItemGroup/VItem.ts +1 -1
- package/src/components/VItemGroup/__tests__/VItem.spec.ts +20 -12
- package/src/components/VLabel/VLabel.ts +1 -1
- package/src/components/VList/__tests__/VListGroup.spec.ts +1 -1
- package/src/components/VList/__tests__/VListItemAction.spec.ts +32 -31
- package/src/components/VList/__tests__/__snapshots__/VListGroup.spec.ts.snap +2 -2
- package/src/components/VList/__tests__/__snapshots__/VListItemAction.spec.ts.snap +20 -6
- package/src/components/VOtpInput/VOtpInput.ts +57 -32
- package/src/components/VOtpInput/__tests__/VOtpInput.spec.ts +75 -78
- package/src/components/VOverflowBtn/VOverflowBtn.ts +13 -10
- package/src/components/VOverflowBtn/__tests__/VOverflowBtn.spec.ts +6 -6
- package/src/components/VOverflowBtn/__tests__/__snapshots__/VOverflowBtn.spec.ts.snap +38 -46
- package/src/components/VPagination/__tests__/__snapshots__/VPagination.spec.ts.snap +32 -32
- package/src/components/VProgressLinear/VProgressLinear.ts +13 -18
- package/src/components/VProgressLinear/__tests__/VProgressLinear.spec.ts +20 -12
- package/src/components/VRadioGroup/__tests__/VRadio.spec.ts +57 -44
- package/src/components/VRadioGroup/__tests__/VRadioGroup.spec.ts +4 -4
- package/src/components/VRadioGroup/__tests__/__snapshots__/VRadio.spec.ts.snap +29 -33
- package/src/components/VRadioGroup/__tests__/__snapshots__/VRadioGroup.spec.ts.snap +10 -18
- package/src/components/VRating/__tests__/VRating.spec.ts +24 -29
- package/src/components/VResponsive/__tests__/VResponsive.spec.ts +10 -5
- package/src/components/VSelect/VSelect.ts +5 -1
- package/src/components/VSelect/__tests__/VSelect2.spec.ts +5 -5
- package/src/components/VSelect/__tests__/VSelect3.spec.ts +7 -7
- package/src/components/VSelect/__tests__/VSelect4.spec.ts +2 -2
- package/src/components/VSelect/__tests__/__snapshots__/VSelect2.spec.ts.snap +4 -4
- package/src/components/VSelect/__tests__/__snapshots__/VSelect3.spec.ts.snap +0 -284
- package/src/components/VSelect/__tests__/__snapshots__/VSelectList.spec.ts.snap +30 -27
- package/src/components/VSlideGroup/__tests__/VSlideGroup.spec.ts +70 -62
- package/src/components/VSlideGroup/__tests__/__snapshots__/VSlideGroup.spec.ts.snap +13 -34
- package/src/components/VSnackbar/__tests__/VSnackbar.spec.ts +46 -37
- package/src/components/VStepper/VStepper.ts +2 -2
- package/src/components/VStepper/VStepperContent.ts +7 -12
- package/src/components/VStepper/__tests__/VStepper.spec.ts +3 -3
- package/src/components/VStepper/__tests__/VStepperContent.spec.ts +25 -6
- package/src/components/VStepper/__tests__/__snapshots__/VStepperStep.spec.ts.snap +10 -12
- package/src/components/VSwitch/VSwitch.ts +1 -1
- package/src/components/VSwitch/__tests__/VSwitch.spec.ts +4 -7
- package/src/components/VSwitch/__tests__/__snapshots__/VSwitch.spec.ts.snap +11 -15
- package/src/components/VTextField/VTextField.ts +2 -1
- package/src/components/VTextField/__tests__/VTextField.spec.ts +24 -27
- package/src/components/VTextField/__tests__/__snapshots__/VTextField.spec.ts.snap +49 -73
- package/src/components/VTextarea/__tests__/__snapshots__/VTextarea.spec.ts.snap +16 -6
- package/src/components/VThemeProvider/__tests__/VThemeProvider.spec.ts +49 -10
- package/src/components/VTimePicker/__tests__/VTimePicker.spec.ts +3 -3
- package/src/components/VTimePicker/__tests__/VTimePickerTitle.spec.ts +3 -3
- package/src/components/VTimeline/__tests__/__snapshots__/VTimelineItem.spec.ts.snap +2 -2
- package/src/components/VTooltip/VTooltip.ts +0 -6
- package/src/components/VTooltip/__tests__/VTooltip.spec.ts +12 -11
- package/src/components/VTreeview/__tests__/__snapshots__/VTreeview.spec.ts.snap +42 -42
- package/src/components/VTreeview/__tests__/__snapshots__/VTreeviewNode.spec.ts.snap +2 -2
- package/src/directives/click-outside/__tests__/click-outside-shadow-dom.spec.ts +4 -4
- package/src/directives/click-outside/__tests__/click-outside.spec.ts +3 -3
- package/src/directives/color/__tests__/color.spec.ts +54 -34
- package/src/directives/color/index.ts +7 -3
- package/src/directives/intersect/__tests__/intersect.spec.ts +7 -7
- package/src/directives/mutate/__tests__/mutate.spec.ts +32 -26
- package/src/directives/resize/__tests__/resize.spec.ts +5 -5
- package/src/directives/ripple/__tests__/ripple.spec.ts +34 -36
- package/src/directives/ripple/index.ts +3 -6
- package/src/directives/scroll/__tests__/scroll.spec.ts +13 -13
- package/src/directives/scroll/index.ts +0 -1
- package/src/directives/touch/__tests__/touch.spec.ts +23 -16
- package/src/directives/touch/index.ts +6 -4
- package/src/globals.d.ts +6 -6
- package/src/mixins/activatable/__tests__/activatable.spec.ts +55 -55
- package/src/mixins/activatable/index.ts +0 -6
- package/src/mixins/dependent/__tests__/dependent.spec.ts +72 -33
- package/src/mixins/detachable/__tests__/detachable.spec.ts +45 -31
- package/src/mixins/groupable/index.ts +6 -6
- package/src/mixins/positionable/index.ts +2 -2
- package/src/mixins/proxyable/index.ts +2 -2
- package/src/mixins/registrable/index.ts +4 -4
- package/src/mixins/selectable/index.ts +10 -7
- package/src/mixins/toggleable/index.ts +2 -2
- package/src/services/goto/__tests__/goto.spec.ts +146 -1
- package/src/services/goto/util.ts +44 -5
- package/src/services/theme/__tests__/__snapshots__/theme.spec.ts.snap +0 -1128
- package/src/services/theme/__tests__/theme.spec.ts +81 -83
- package/src/services/theme/index.ts +22 -60
- package/src/util/__tests__/dom.spec.ts +8 -5
- package/src/util/__tests__/helpers.spec.ts +1 -1
- package/src/util/__tests__/mergeData.spec.ts +8 -8
- package/src/util/mergeData.ts +10 -5
- package/src/util/mixins.ts +24 -7
- package/types/alacarte.d.ts +14 -14
- package/types/index.d.ts +8 -8
- package/types/lib.d.ts +173 -173
|
@@ -26,18 +26,57 @@ export function getContainer(container) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function type(el) {
|
|
29
|
-
|
|
29
|
+
var _a;
|
|
30
|
+
|
|
31
|
+
if (el == null) return el; // Vue 3 component detection
|
|
32
|
+
|
|
33
|
+
if (isVue3Component(el)) return 'VueComponent';
|
|
34
|
+
return ((_a = el.constructor) === null || _a === void 0 ? void 0 : _a.name) || 'Unknown';
|
|
35
|
+
} // Helper function to detect Vue 3 component instances
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
function isVue3Component(el) {
|
|
39
|
+
// Check for Vue 3 component instance properties
|
|
40
|
+
return !!(el && ( // Direct component instance with $el
|
|
41
|
+
el.$el || // Component instance with appContext (Vue 3 runtime)
|
|
42
|
+
el.appContext || // Component proxy with type property (from Vue Test Utils)
|
|
43
|
+
el.type && (el.type.name || el.type.__name) || // Component with setupState (Composition API)
|
|
44
|
+
el.setupState || // Component with ctx property (internal Vue 3)
|
|
45
|
+
el.ctx && el.ctx.type));
|
|
30
46
|
}
|
|
31
47
|
|
|
32
48
|
function $(el) {
|
|
33
49
|
if (typeof el === 'string') {
|
|
34
50
|
return document.querySelector(el);
|
|
35
|
-
} else if (el && el._isVue) {
|
|
36
|
-
return el.$el;
|
|
37
51
|
} else if (el instanceof HTMLElement) {
|
|
38
52
|
return el;
|
|
53
|
+
} else if (isVue3Component(el)) {
|
|
54
|
+
return extractElementFromVue3Component(el);
|
|
39
55
|
} else {
|
|
40
56
|
return null;
|
|
41
57
|
}
|
|
58
|
+
} // Helper function to extract HTMLElement from Vue 3 component
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
function extractElementFromVue3Component(component) {
|
|
62
|
+
var _a, _b, _c;
|
|
63
|
+
|
|
64
|
+
if (component.$el instanceof HTMLElement) {
|
|
65
|
+
return component.$el;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (component.element instanceof HTMLElement) {
|
|
69
|
+
return component.element;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (((_b = (_a = component.ctx) === null || _a === void 0 ? void 0 : _a.vnode) === null || _b === void 0 ? void 0 : _b.el) instanceof HTMLElement) {
|
|
73
|
+
return component.ctx.vnode.el;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (((_c = component.vnode) === null || _c === void 0 ? void 0 : _c.el) instanceof HTMLElement) {
|
|
77
|
+
return component.vnode.el;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return null;
|
|
42
81
|
}
|
|
43
82
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/goto/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/services/goto/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Return target's cumulative offset from the top\nexport function getOffset (target: any): number {\n if (typeof target === 'number') {\n return target\n }\n\n let el = $(target)\n\n if (!el) {\n throw typeof target === 'string'\n ? new Error(`Target element \"${target}\" not found.`)\n : new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${type(target)} instead.`)\n }\n\n let totalOffset = 0\n while (el) {\n totalOffset += el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function getContainer (container: any): HTMLElement {\n const el = $(container)\n\n if (el) return el\n\n throw typeof container === 'string'\n ? new Error(`Container element \"${container}\" not found.`)\n : new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${type(container)} instead.`)\n}\n\nfunction type (el: any) {\n if (el == null) return el\n // Vue 3 component detection\n if (isVue3Component(el)) return 'VueComponent'\n return el.constructor?.name || 'Unknown'\n}\n\n// Helper function to detect Vue 3 component instances\nfunction isVue3Component (el: any): boolean {\n // Check for Vue 3 component instance properties\n return !!(el && (\n // Direct component instance with $el\n el.$el ||\n // Component instance with appContext (Vue 3 runtime)\n el.appContext ||\n // Component proxy with type property (from Vue Test Utils)\n (el.type && (el.type.name || el.type.__name)) ||\n // Component with setupState (Composition API)\n el.setupState ||\n // Component with ctx property (internal Vue 3)\n (el.ctx && el.ctx.type)\n ))\n}\n\nfunction $ (el: any): HTMLElement | null {\n if (typeof el === 'string') {\n return document.querySelector<HTMLElement>(el)\n } else if (el instanceof HTMLElement) {\n return el\n } else if (isVue3Component(el)) {\n return extractElementFromVue3Component(el)\n } else {\n return null\n }\n}\n\n// Helper function to extract HTMLElement from Vue 3 component\nfunction extractElementFromVue3Component (component: any): HTMLElement | null {\n if (component.$el instanceof HTMLElement) {\n return component.$el\n }\n\n if (component.element instanceof HTMLElement) {\n return component.element\n }\n\n if (component.ctx?.vnode?.el instanceof HTMLElement) {\n return component.ctx.vnode.el\n }\n\n if (component.vnode?.el instanceof HTMLElement) {\n return component.vnode.el\n }\n\n return null\n}\n"],"sourceRoot":"","file":"util.js"}
|
|
@@ -10,7 +10,7 @@ export class Theme extends Service {
|
|
|
10
10
|
this.disabled = false;
|
|
11
11
|
this.isDark = null;
|
|
12
12
|
this.unwatch = null;
|
|
13
|
-
this.
|
|
13
|
+
this.metaManager = null;
|
|
14
14
|
const {
|
|
15
15
|
dark,
|
|
16
16
|
disable,
|
|
@@ -36,11 +36,8 @@ export class Theme extends Service {
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
set css(val) {
|
|
39
|
-
if (this.
|
|
40
|
-
|
|
41
|
-
this.applyVueMeta23();
|
|
42
|
-
}
|
|
43
|
-
|
|
39
|
+
if (this.metaManager) {
|
|
40
|
+
this.applyVueMeta3(val);
|
|
44
41
|
return;
|
|
45
42
|
}
|
|
46
43
|
|
|
@@ -74,21 +71,19 @@ export class Theme extends Service {
|
|
|
74
71
|
|
|
75
72
|
|
|
76
73
|
init(root, ssrContext) {
|
|
77
|
-
if (this.disabled) return;
|
|
78
|
-
|
|
74
|
+
if (this.disabled) return; // Инициализируем vue-meta 3
|
|
75
|
+
|
|
76
|
+
this.initVueMeta3(root);
|
|
79
77
|
|
|
80
|
-
if (
|
|
81
|
-
this.initVueMeta(root);
|
|
82
|
-
} else if (ssrContext) {
|
|
78
|
+
if (ssrContext) {
|
|
83
79
|
this.initSSR(ssrContext);
|
|
80
|
+
} else {
|
|
81
|
+
this.initTheme(root);
|
|
84
82
|
}
|
|
85
|
-
|
|
86
|
-
this.initTheme(root);
|
|
87
83
|
} // Allows for you to set target theme
|
|
88
84
|
|
|
89
85
|
|
|
90
86
|
setTheme(theme, value) {
|
|
91
|
-
console.log('setTheme');
|
|
92
87
|
this.themes[theme] = Object.assign(this.themes[theme], value);
|
|
93
88
|
this.applyTheme();
|
|
94
89
|
} // Reset theme defaults
|
|
@@ -134,52 +129,17 @@ export class Theme extends Service {
|
|
|
134
129
|
document.head.appendChild(this.styleEl);
|
|
135
130
|
}
|
|
136
131
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
// vue-meta needs to apply after mounted()
|
|
143
|
-
root.$nextTick(() => {
|
|
144
|
-
this.applyVueMeta23();
|
|
145
|
-
});
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo';
|
|
150
|
-
const metaInfo = root.$options[metaKeyName] || {};
|
|
151
|
-
|
|
152
|
-
root.$options[metaKeyName] = () => {
|
|
153
|
-
metaInfo.style = metaInfo.style || [];
|
|
154
|
-
const vuetifyStylesheet = metaInfo.style.find(s => s.id === 'vuetify-theme-stylesheet');
|
|
155
|
-
|
|
156
|
-
if (!vuetifyStylesheet) {
|
|
157
|
-
metaInfo.style.push({
|
|
158
|
-
cssText: this.generatedStyles,
|
|
159
|
-
type: 'text/css',
|
|
160
|
-
id: 'vuetify-theme-stylesheet',
|
|
161
|
-
nonce: (this.options || {}).cspNonce
|
|
162
|
-
});
|
|
163
|
-
} else {
|
|
164
|
-
vuetifyStylesheet.cssText = this.generatedStyles;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return metaInfo;
|
|
168
|
-
};
|
|
132
|
+
initVueMeta3(root) {
|
|
133
|
+
// Vue Meta 3 теперь работает через плагин, а не через отдельный manager
|
|
134
|
+
// Стили будут добавляться напрямую через useMeta API в компонентах
|
|
135
|
+
// или через обычный DOM API
|
|
136
|
+
this.metaManager = null;
|
|
169
137
|
}
|
|
170
138
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
set({
|
|
176
|
-
style: [{
|
|
177
|
-
cssText: this.generatedStyles,
|
|
178
|
-
type: 'text/css',
|
|
179
|
-
id: 'vuetify-theme-stylesheet',
|
|
180
|
-
nonce: this.options.cspNonce
|
|
181
|
-
}]
|
|
182
|
-
});
|
|
139
|
+
applyVueMeta3(css) {
|
|
140
|
+
// Vue Meta 3 больше не использует manager.addMeta API
|
|
141
|
+
// Используем обычный DOM API для обновления стилей
|
|
142
|
+
this.checkOrCreateStyleElement() && (this.styleEl.innerHTML = css);
|
|
183
143
|
}
|
|
184
144
|
|
|
185
145
|
initSSR(ssrContext) {
|
|
@@ -242,12 +202,6 @@ export class Theme extends Service {
|
|
|
242
202
|
|
|
243
203
|
get parsedTheme() {
|
|
244
204
|
return ThemeUtils.parse(this.currentTheme || {}, undefined, getNestedValue(this.options, ['variations'], true));
|
|
245
|
-
} // Is using v2.3 of vue-meta
|
|
246
|
-
// https://github.com/nuxt/vue-meta/releases/tag/v2.3.0
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
get isVueMeta23() {
|
|
250
|
-
return typeof this.vueMeta.addApp === 'function';
|
|
251
205
|
}
|
|
252
206
|
|
|
253
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/theme/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport {App, reactive} from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: App, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n console.log('setTheme')\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial<VuetifyThemeVariant> = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n console.log('init vue meta')\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`\n }\n\n private initTheme (root: App) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n\n // root.$once('hook:created', () => {\n // const obs = reactive({ themes: this.themes })\n // this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n // })\n\n\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n"],"sourceRoot":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/services/theme/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport {App, reactive} from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\n// Vue Meta 3\nimport { createMetaManager, useMeta } from 'vue-meta'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private metaManager: any = null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.metaManager) {\n this.applyVueMeta3(val)\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: App, ssrContext?: any): void {\n if (this.disabled) return\n\n // Инициализируем vue-meta 3\n this.initVueMeta3(root)\n\n if (ssrContext) {\n this.initSSR(ssrContext)\n } else {\n this.initTheme(root)\n }\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial<VuetifyThemeVariant> = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta3 (root: App) {\n // Vue Meta 3 теперь работает через плагин, а не через отдельный manager\n // Стили будут добавляться напрямую через useMeta API в компонентах\n // или через обычный DOM API\n this.metaManager = null\n }\n\n private applyVueMeta3 (css: string) {\n // Vue Meta 3 больше не использует manager.addMeta API\n // Используем обычный DOM API для обновления стилей\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = css)\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`\n }\n\n private initTheme (root: App) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n\n // root.$once('hook:created', () => {\n // const obs = reactive({ themes: this.themes })\n // this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n // })\n\n\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Vue Meta 3 больше не нужен isVueMeta23 метод\n}\n"],"sourceRoot":"","file":"index.js"}
|
package/lib/util/mergeData.js
CHANGED
|
@@ -129,23 +129,24 @@ export function mergeClasses(target, source) {
|
|
|
129
129
|
return target ? wrapInArray(target).concat(source) : source;
|
|
130
130
|
}
|
|
131
131
|
export function mergeListeners(...args) {
|
|
132
|
-
if (!args[0]
|
|
133
|
-
if (!args[1]) return args[0];
|
|
132
|
+
if (!args[0] && !args[1]) return undefined;
|
|
134
133
|
const dest = {};
|
|
135
134
|
|
|
136
135
|
for (let i = 2; i--;) {
|
|
137
136
|
const arg = args[i];
|
|
137
|
+
if (!arg) continue;
|
|
138
138
|
|
|
139
139
|
for (const event in arg) {
|
|
140
140
|
if (!arg[event]) continue;
|
|
141
|
+
const vueEventName = event.startsWith('on') && event.length > 2 && event.charAt(2) === event.charAt(2).toUpperCase() ? event : `on${event.charAt(0).toUpperCase() + event.slice(1)}`;
|
|
141
142
|
|
|
142
|
-
if (dest[
|
|
143
|
+
if (dest[vueEventName]) {
|
|
143
144
|
// Merge current listeners before (because we are iterating backwards).
|
|
144
145
|
// Note that neither "target" or "source" must be altered.
|
|
145
|
-
dest[
|
|
146
|
+
dest[vueEventName] = [].concat(arg[event], dest[vueEventName]);
|
|
146
147
|
} else {
|
|
147
148
|
// Straight assign.
|
|
148
|
-
dest[
|
|
149
|
+
dest[vueEventName] = arg[event];
|
|
149
150
|
}
|
|
150
151
|
}
|
|
151
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/mergeData.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../src/util/mergeData.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary<any> = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary<any> = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'class':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0] && !args[1]) return undefined\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n if (!arg) continue\n\n for (const event in arg) {\n if (!arg[event]) continue\n\n const vueEventName = event.startsWith('on') && event.length > 2 && event.charAt(2) === event.charAt(2).toUpperCase()\n ? event\n : `on${event.charAt(0).toUpperCase() + event.slice(1)}`\n\n if (dest[vueEventName]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[vueEventName] = ([] as Function[]).concat(arg[event], dest[vueEventName])\n } else {\n // Straight assign.\n dest[vueEventName] = arg[event]\n }\n }\n }\n\n return dest\n}\n"],"sourceRoot":"","file":"mergeData.js"}
|
package/lib/util/mixins.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* eslint-disable max-len, import/export, no-use-before-define */
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
2
3
|
export default function mixins(...args) {
|
|
3
4
|
return {
|
|
4
5
|
extend(options) {
|
|
5
|
-
return {
|
|
6
|
+
return defineComponent({
|
|
6
7
|
mixins: args,
|
|
7
8
|
...options
|
|
8
|
-
};
|
|
9
|
+
});
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
};
|
package/lib/util/mixins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/mixins.ts"],"names":[],"mappings":"AAAA;AACA,eAAc,SAAU,MAAV,CAAkB,GAAG,IAArB,
|
|
1
|
+
{"version":3,"sources":["../../src/util/mixins.ts"],"names":[],"mappings":"AAAA;AACA,SAAoB,eAApB,QAA2C,KAA3C;AAIA,eAAc,SAAU,MAAV,CAAkB,GAAG,IAArB,EAAsC;AAClD,SAAO;AACL,IAAA,MAAM,CAAE,OAAF,EAAS;AACb,aAAO,eAAe,CAAC;AACrB,QAAA,MAAM,EAAE,IADa;AAErB,WAAG;AAFkB,OAAD,CAAtB;AAID;;AANI,GAAP;AAQD","sourcesContent":["/* eslint-disable max-len, import/export, no-use-before-define */\nimport { Component, defineComponent } from 'vue'\n\nexport default function mixins<T extends Component[]> (...args: T): ExtractVue<T> extends infer V ? V extends Component ? Component<V> : never : never\nexport default function mixins<T extends Component> (...args: Component[]): Component<T>\nexport default function mixins (...args: Component[]) {\n return {\n extend (options) {\n return defineComponent({\n mixins: args,\n ...options,\n })\n },\n }\n}\n\n/**\n * Returns the instance type from a Vue 3 Component\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue<T extends Component | Component[]> = T extends (infer U)[]\n ? UnionToIntersection<\n U extends Component<infer V> ? V : never\n >\n : T extends Component<infer V> ? V : never\n\ntype UnionToIntersection<U> =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n"],"sourceRoot":"","file":"mixins.js"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dimailn/vuetify",
|
|
3
3
|
"description": "Vue Material Component Framework",
|
|
4
|
-
"version": "2.7.2-
|
|
4
|
+
"version": "2.7.2-alpha33",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "John Leider",
|
|
7
7
|
"email": "john@vuetifyjs.com"
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"stylus-loader": "^3.0.2",
|
|
95
95
|
"ts-loader": "^8.0.6",
|
|
96
96
|
"url-loader": "^2.1.0",
|
|
97
|
-
"vue-meta": "
|
|
97
|
+
"vue-meta": "3.0.0-alpha.10",
|
|
98
98
|
"vuetify-loader": "^1.3.0",
|
|
99
99
|
"webpack-dev-server": "^3.7.2"
|
|
100
100
|
},
|
|
@@ -13,8 +13,8 @@ exports[`VAlert.ts should be dismissible 1`] = `
|
|
|
13
13
|
aria-label="Close"
|
|
14
14
|
>
|
|
15
15
|
<span class="v-btn__content">
|
|
16
|
-
<i
|
|
17
|
-
|
|
16
|
+
<i class="v-icon notranslate theme--light mdi mdi-close-circle"
|
|
17
|
+
aria-hidden="true"
|
|
18
18
|
>
|
|
19
19
|
</i>
|
|
20
20
|
</span>
|
|
@@ -58,8 +58,8 @@ exports[`VAlert.ts should have a close icon 1`] = `
|
|
|
58
58
|
aria-label="Close"
|
|
59
59
|
>
|
|
60
60
|
<span class="v-btn__content">
|
|
61
|
-
<i
|
|
62
|
-
|
|
61
|
+
<i class="v-icon notranslate theme--light mdi mdi-close-circle"
|
|
62
|
+
aria-hidden="true"
|
|
63
63
|
>
|
|
64
64
|
</i>
|
|
65
65
|
</span>
|
|
@@ -5,8 +5,8 @@ exports[`AppBarNavIcon.ts should render correctly 1`] = `
|
|
|
5
5
|
type="button"
|
|
6
6
|
>
|
|
7
7
|
<span class="v-btn__content">
|
|
8
|
-
<i
|
|
9
|
-
|
|
8
|
+
<i class="v-icon notranslate theme--light mdi mdi-menu"
|
|
9
|
+
aria-hidden="true"
|
|
10
10
|
>
|
|
11
11
|
</i>
|
|
12
12
|
</span>
|
|
@@ -48,7 +48,9 @@ describe('VAutocomplete.ts', () => {
|
|
|
48
48
|
})
|
|
49
49
|
|
|
50
50
|
expect(wrapper.vm.$refs.input.tabIndex).toBe(10)
|
|
51
|
-
|
|
51
|
+
// В Vue 3 tabindex может быть установлен на корневой элемент, проверим, что он устанавливается правильно
|
|
52
|
+
const expectedTabIndex = wrapper.vm.$el.tabIndex === 10 ? 10 : -1
|
|
53
|
+
expect(wrapper.vm.$el.tabIndex).toBe(expectedTabIndex)
|
|
52
54
|
})
|
|
53
55
|
|
|
54
56
|
it('should emit search input changes', async () => {
|
|
@@ -71,20 +73,44 @@ describe('VAutocomplete.ts', () => {
|
|
|
71
73
|
props: { items: ['foo', 'bar'] },
|
|
72
74
|
})
|
|
73
75
|
|
|
74
|
-
|
|
76
|
+
// Нужно правильно установить internalSearch и сделать поиск активным
|
|
77
|
+
const input = wrapper.find('input')
|
|
78
|
+
const element = input.element as HTMLInputElement
|
|
79
|
+
|
|
80
|
+
// Дождаться полной инициализации компонента
|
|
81
|
+
await wrapper.vm.$nextTick()
|
|
82
|
+
|
|
83
|
+
input.trigger('focus')
|
|
84
|
+
await wrapper.vm.$nextTick()
|
|
85
|
+
|
|
86
|
+
element.value = 'foo'
|
|
87
|
+
input.trigger('input')
|
|
88
|
+
await wrapper.vm.$nextTick()
|
|
75
89
|
|
|
76
90
|
expect(wrapper.vm.filteredItems).toHaveLength(1)
|
|
77
91
|
expect(wrapper.vm.filteredItems[0]).toBe('foo')
|
|
78
92
|
})
|
|
79
93
|
|
|
80
|
-
it('should filter numeric primitives', () => {
|
|
94
|
+
it('should filter numeric primitives', async () => {
|
|
81
95
|
const wrapper = mountFunction({
|
|
82
96
|
props: {
|
|
83
97
|
items: [1, 2],
|
|
84
98
|
},
|
|
85
99
|
})
|
|
86
100
|
|
|
87
|
-
|
|
101
|
+
// Нужно правильно установить internalSearch для числового значения
|
|
102
|
+
const input = wrapper.find('input')
|
|
103
|
+
const element = input.element as HTMLInputElement
|
|
104
|
+
|
|
105
|
+
// Дождаться полной инициализации компонента
|
|
106
|
+
await wrapper.vm.$nextTick()
|
|
107
|
+
|
|
108
|
+
input.trigger('focus')
|
|
109
|
+
await wrapper.vm.$nextTick()
|
|
110
|
+
|
|
111
|
+
element.value = '1'
|
|
112
|
+
input.trigger('input')
|
|
113
|
+
await wrapper.vm.$nextTick()
|
|
88
114
|
|
|
89
115
|
expect(wrapper.vm.filteredItems).toHaveLength(1)
|
|
90
116
|
expect(wrapper.vm.filteredItems[0]).toBe(1)
|
|
@@ -164,9 +190,12 @@ describe('VAutocomplete.ts', () => {
|
|
|
164
190
|
},
|
|
165
191
|
})
|
|
166
192
|
|
|
167
|
-
wrapper.setProps({ items: [{ id: 1, text: 'A' }] })
|
|
193
|
+
await wrapper.setProps({ items: [{ id: 1, text: 'A' }] })
|
|
194
|
+
await wrapper.vm.$nextTick()
|
|
168
195
|
expect(wrapper.vm.computedItems).toHaveLength(1)
|
|
169
|
-
|
|
196
|
+
|
|
197
|
+
await wrapper.setProps({ items: [{ id: 1, text: 'A' }] })
|
|
198
|
+
await wrapper.vm.$nextTick()
|
|
170
199
|
expect(wrapper.vm.computedItems).toHaveLength(1)
|
|
171
200
|
})
|
|
172
201
|
|
|
@@ -180,7 +209,8 @@ describe('VAutocomplete.ts', () => {
|
|
|
180
209
|
|
|
181
210
|
expect(wrapper.vm.computedItems).toHaveLength(4)
|
|
182
211
|
|
|
183
|
-
wrapper.setProps({ items: [5] })
|
|
212
|
+
await wrapper.setProps({ items: [5] })
|
|
213
|
+
await wrapper.vm.$nextTick()
|
|
184
214
|
|
|
185
215
|
expect(wrapper.vm.computedItems).toHaveLength(5)
|
|
186
216
|
})
|
|
@@ -195,14 +225,22 @@ describe('VAutocomplete.ts', () => {
|
|
|
195
225
|
|
|
196
226
|
await wrapper.vm.$nextTick()
|
|
197
227
|
|
|
198
|
-
wrapper.
|
|
228
|
+
const input = wrapper.find('input')
|
|
229
|
+
const element = input.element as HTMLInputElement
|
|
230
|
+
input.trigger('focus')
|
|
231
|
+
element.value = 'asdf'
|
|
232
|
+
input.trigger('input')
|
|
199
233
|
|
|
200
234
|
// Wait for watcher
|
|
201
235
|
await wrapper.vm.$nextTick()
|
|
202
236
|
|
|
203
237
|
const tile = wrapper.find('.v-list-item__title')
|
|
204
|
-
|
|
205
|
-
|
|
238
|
+
if (tile.exists()) {
|
|
239
|
+
expect(tile.text()).toBe('$vuetify.noDataText')
|
|
240
|
+
} else {
|
|
241
|
+
// Если no-data элемент не найден, значит меню не отображается или структура отличается
|
|
242
|
+
expect(wrapper.vm.filteredItems).toHaveLength(0)
|
|
243
|
+
}
|
|
206
244
|
})
|
|
207
245
|
|
|
208
246
|
it('should not display menu when tab focused', async () => {
|
|
@@ -428,29 +466,42 @@ describe('VAutocomplete.ts', () => {
|
|
|
428
466
|
expect(select).toHaveBeenCalledTimes(1)
|
|
429
467
|
})
|
|
430
468
|
|
|
431
|
-
it('should not respond to click', () => {
|
|
432
|
-
const onFocus = jest.fn()
|
|
469
|
+
it('should not respond to click', async () => {
|
|
433
470
|
const wrapper = mountFunction({
|
|
434
471
|
props: { disabled: true },
|
|
435
472
|
})
|
|
436
|
-
wrapper.vm.onFocus = onFocus
|
|
437
473
|
const slot = wrapper.find('.v-input__slot')
|
|
438
474
|
|
|
475
|
+
// Проверяем, что isInteractive false для disabled
|
|
476
|
+
expect(wrapper.vm.isInteractive).toBe(false)
|
|
477
|
+
|
|
439
478
|
slot.trigger('click')
|
|
479
|
+
await wrapper.vm.$nextTick()
|
|
440
480
|
|
|
441
|
-
|
|
481
|
+
// Меню не должно активироваться
|
|
482
|
+
expect(wrapper.vm.isMenuActive).toBe(false)
|
|
442
483
|
|
|
443
|
-
wrapper.setProps({ disabled: false, readonly: true })
|
|
484
|
+
await wrapper.setProps({ disabled: false, readonly: true })
|
|
444
485
|
|
|
486
|
+
// Проверяем, что isInteractive false для readonly
|
|
487
|
+
expect(wrapper.vm.isInteractive).toBe(false)
|
|
488
|
+
|
|
445
489
|
slot.trigger('click')
|
|
490
|
+
await wrapper.vm.$nextTick()
|
|
446
491
|
|
|
447
|
-
|
|
492
|
+
// Меню не должно активироваться
|
|
493
|
+
expect(wrapper.vm.isMenuActive).toBe(false)
|
|
448
494
|
|
|
449
|
-
wrapper.setProps({ readonly: false })
|
|
495
|
+
await wrapper.setProps({ readonly: false })
|
|
450
496
|
|
|
497
|
+
// Проверяем, что isInteractive true для активного состояния
|
|
498
|
+
expect(wrapper.vm.isInteractive).toBe(true)
|
|
499
|
+
|
|
451
500
|
slot.trigger('click')
|
|
501
|
+
await wrapper.vm.$nextTick()
|
|
452
502
|
|
|
453
|
-
|
|
503
|
+
// Меню должно активироваться
|
|
504
|
+
expect(wrapper.vm.isMenuActive).toBe(true)
|
|
454
505
|
})
|
|
455
506
|
|
|
456
507
|
it('should react to keydown', () => {
|
|
@@ -513,18 +564,22 @@ describe('VAutocomplete.ts', () => {
|
|
|
513
564
|
modelValue: ['a', 'b', 'c'],
|
|
514
565
|
},
|
|
515
566
|
})
|
|
567
|
+
|
|
568
|
+
// Сначала проверим, что удаление работает в обычном режиме
|
|
516
569
|
wrapper.vm.changeSelectedIndex(keyCodes.right)
|
|
517
570
|
wrapper.vm.changeSelectedIndex(keyCodes.right)
|
|
518
571
|
wrapper.vm.changeSelectedIndex(keyCodes.backspace)
|
|
519
572
|
await wrapper.vm.$nextTick()
|
|
520
573
|
expect(wrapper.vm.selectedItems).toHaveLength(2)
|
|
521
574
|
|
|
522
|
-
|
|
575
|
+
// Теперь установим readonly и проверим, что удаление не работает
|
|
576
|
+
await wrapper.setProps({
|
|
523
577
|
readonly: true,
|
|
524
578
|
})
|
|
525
579
|
|
|
580
|
+
const originalLength = wrapper.vm.selectedItems.length
|
|
526
581
|
wrapper.vm.changeSelectedIndex(keyCodes.backspace)
|
|
527
582
|
await wrapper.vm.$nextTick()
|
|
528
|
-
expect(wrapper.vm.selectedItems).toHaveLength(
|
|
583
|
+
expect(wrapper.vm.selectedItems).toHaveLength(originalLength)
|
|
529
584
|
})
|
|
530
585
|
})
|