@dimailn/vuetify 2.7.2-alpha2 → 2.7.2-alpha20
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.css +45 -45
- package/dist/vuetify.css.map +1 -1
- package/dist/vuetify.js +365 -305
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VAppBar/VAppBar.js +7 -12
- package/es5/components/VAppBar/VAppBar.js.map +1 -1
- package/es5/components/VAutocomplete/VAutocomplete.js +10 -7
- package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/es5/components/VCheckbox/VSimpleCheckbox.js +66 -35
- package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
- package/es5/components/VColorPicker/VColorPicker.js +6 -6
- package/es5/components/VColorPicker/VColorPicker.js.map +1 -1
- package/es5/components/VData/VData.js +14 -2
- package/es5/components/VData/VData.js.map +1 -1
- package/es5/components/VDataIterator/VDataIterator.js +4 -3
- package/es5/components/VDataIterator/VDataIterator.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +2 -2
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeader.js +4 -3
- package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeaderDesktop.js +4 -2
- package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
- package/es5/components/VDataTable/VVirtualTable.js +1 -1
- package/es5/components/VDataTable/VVirtualTable.js.map +1 -1
- package/es5/components/VDataTable/mixins/header.js +1 -1
- package/es5/components/VDataTable/mixins/header.js.map +1 -1
- package/es5/components/VDatePicker/VDatePicker.js +6 -6
- package/es5/components/VDatePicker/VDatePicker.js.map +1 -1
- package/es5/components/VDialog/VDialog.js +1 -1
- package/es5/components/VDialog/VDialog.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js +1 -1
- package/es5/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/es5/components/VForm/VForm.js +8 -8
- package/es5/components/VForm/VForm.js.map +1 -1
- package/es5/components/VGrid/VCol.js +3 -3
- package/es5/components/VGrid/VCol.js.map +1 -1
- package/es5/components/VGrid/VContainer.js +3 -1
- package/es5/components/VGrid/VContainer.js.map +1 -1
- package/es5/components/VImg/VImg.js +1 -1
- package/es5/components/VImg/VImg.js.map +1 -1
- package/es5/components/VInput/VInput.js +1 -1
- package/es5/components/VInput/VInput.js.map +1 -1
- package/es5/components/VItemGroup/VItem.js +17 -18
- package/es5/components/VItemGroup/VItem.js.map +1 -1
- package/es5/components/VItemGroup/VItemGroup.js +1 -1
- package/es5/components/VItemGroup/VItemGroup.js.map +1 -1
- package/es5/components/VList/VList.js +1 -1
- package/es5/components/VList/VList.js.map +1 -1
- package/es5/components/VList/VListGroup.js +12 -15
- package/es5/components/VList/VListGroup.js.map +1 -1
- package/es5/components/VMenu/VMenu.js +1 -1
- package/es5/components/VMenu/VMenu.js.map +1 -1
- package/es5/components/VOverlay/VOverlay.js +1 -1
- package/es5/components/VOverlay/VOverlay.js.map +1 -1
- package/es5/components/VRadioGroup/VRadioGroup.js +5 -5
- package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
- package/es5/components/VRangeSlider/VRangeSlider.js +1 -1
- package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +3 -5
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VSelect/VSelectList.js +7 -5
- package/es5/components/VSelect/VSelectList.js.map +1 -1
- package/es5/components/VSparkline/VSparkline.js +6 -6
- package/es5/components/VSparkline/VSparkline.js.map +1 -1
- package/es5/components/VStepper/VStepperContent.js +1 -1
- package/es5/components/VStepper/VStepperContent.js.map +1 -1
- package/es5/components/VStepper/VStepperStep.js +1 -1
- package/es5/components/VStepper/VStepperStep.js.map +1 -1
- package/es5/components/VSubheader/VSubheader.js +3 -3
- package/es5/components/VSubheader/VSubheader.js.map +1 -1
- package/es5/components/VTabs/VTab.js.map +1 -1
- package/es5/components/VTabs/VTabs.js +0 -1
- package/es5/components/VTabs/VTabs.js.map +1 -1
- package/es5/components/VTextField/VTextField.js +5 -2
- package/es5/components/VTextField/VTextField.js.map +1 -1
- package/es5/components/VToolbar/VToolbar.js +2 -3
- package/es5/components/VToolbar/VToolbar.js.map +1 -1
- package/es5/components/VTreeview/VTreeviewNode.js +1 -1
- package/es5/components/VTreeview/VTreeviewNode.js.map +1 -1
- package/es5/components/transitions/createTransition.js +9 -4
- package/es5/components/transitions/createTransition.js.map +1 -1
- package/es5/components/transitions/expand-transition.js +8 -7
- package/es5/components/transitions/expand-transition.js.map +1 -1
- package/es5/directives/intersect/index.js +20 -7
- package/es5/directives/intersect/index.js.map +1 -1
- package/es5/directives/mutate/index.js +13 -13
- package/es5/directives/mutate/index.js.map +1 -1
- package/es5/directives/resize/index.js +8 -8
- package/es5/directives/resize/index.js.map +1 -1
- package/es5/directives/scroll/index.js +10 -9
- package/es5/directives/scroll/index.js.map +1 -1
- package/es5/directives/touch/index.js +4 -4
- package/es5/directives/touch/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/activatable/index.js +9 -4
- package/es5/mixins/activatable/index.js.map +1 -1
- package/es5/mixins/applicationable/index.js +4 -4
- package/es5/mixins/applicationable/index.js.map +1 -1
- package/es5/mixins/binds-attrs/index.js +1 -1
- package/es5/mixins/binds-attrs/index.js.map +1 -1
- package/es5/mixins/detachable/index.js +3 -3
- package/es5/mixins/detachable/index.js.map +1 -1
- package/es5/mixins/groupable/index.js +1 -1
- package/es5/mixins/groupable/index.js.map +1 -1
- package/es5/mixins/intersectable/index.js +2 -2
- package/es5/mixins/intersectable/index.js.map +1 -1
- package/es5/mixins/menuable/index.js +1 -1
- package/es5/mixins/menuable/index.js.map +1 -1
- package/es5/mixins/overlayable/index.js +5 -4
- package/es5/mixins/overlayable/index.js.map +1 -1
- package/es5/mixins/proxyable/index.js +0 -4
- package/es5/mixins/proxyable/index.js.map +1 -1
- package/es5/mixins/selectable/index.js +2 -5
- package/es5/mixins/selectable/index.js.map +1 -1
- package/es5/mixins/translatable/index.js +1 -1
- package/es5/mixins/translatable/index.js.map +1 -1
- package/es5/mixins/validatable/index.js +2 -2
- package/es5/mixins/validatable/index.js.map +1 -1
- package/es5/services/breakpoint/index.js +3 -1
- package/es5/services/breakpoint/index.js.map +1 -1
- package/lib/components/VAppBar/VAppBar.js +7 -11
- package/lib/components/VAppBar/VAppBar.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +11 -8
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCheckbox/VSimpleCheckbox.js +72 -36
- package/lib/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.js +6 -6
- package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
- package/lib/components/VData/VData.js +15 -2
- package/lib/components/VData/VData.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.js +4 -3
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +2 -2
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeader.js +4 -3
- package/lib/components/VDataTable/VDataTableHeader.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.js +3 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
- package/lib/components/VDataTable/VVirtualTable.js +1 -1
- package/lib/components/VDataTable/VVirtualTable.js.map +1 -1
- package/lib/components/VDataTable/mixins/header.js +1 -1
- package/lib/components/VDataTable/mixins/header.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +6 -6
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDialog/VDialog.js +1 -1
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelContent.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelHeader.js.map +1 -1
- package/lib/components/VForm/VForm.js +8 -8
- package/lib/components/VForm/VForm.js.map +1 -1
- package/lib/components/VGrid/VCol.js +3 -3
- package/lib/components/VGrid/VCol.js.map +1 -1
- package/lib/components/VGrid/VContainer.js +3 -1
- package/lib/components/VGrid/VContainer.js.map +1 -1
- package/lib/components/VImg/VImg.js +1 -1
- package/lib/components/VImg/VImg.js.map +1 -1
- package/lib/components/VInput/VInput.js +1 -1
- package/lib/components/VInput/VInput.js.map +1 -1
- package/lib/components/VItemGroup/VItem.js +20 -18
- package/lib/components/VItemGroup/VItem.js.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.js +1 -1
- package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
- package/lib/components/VList/VList.js +1 -1
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListGroup.js +11 -15
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VMenu/VMenu.js +1 -1
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.js +1 -1
- package/lib/components/VOverlay/VOverlay.js.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.js +5 -7
- package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.js +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +1 -3
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelectList.js +7 -5
- package/lib/components/VSelect/VSelectList.js.map +1 -1
- package/lib/components/VSparkline/VSparkline.js +6 -6
- package/lib/components/VSparkline/VSparkline.js.map +1 -1
- package/lib/components/VStepper/VStepperContent.js +1 -1
- package/lib/components/VStepper/VStepperContent.js.map +1 -1
- package/lib/components/VStepper/VStepperStep.js +1 -1
- package/lib/components/VStepper/VStepperStep.js.map +1 -1
- package/lib/components/VSubheader/VSubheader.js +2 -3
- package/lib/components/VSubheader/VSubheader.js.map +1 -1
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTabs/VTabs.js +0 -1
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +5 -2
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VToolbar/VToolbar.js +4 -3
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewNode.js +1 -1
- package/lib/components/VTreeview/VTreeviewNode.js.map +1 -1
- package/lib/components/transitions/createTransition.js +1 -1
- package/lib/components/transitions/createTransition.js.map +1 -1
- package/lib/components/transitions/expand-transition.js +8 -7
- package/lib/components/transitions/expand-transition.js.map +1 -1
- package/lib/directives/intersect/index.js +20 -7
- package/lib/directives/intersect/index.js.map +1 -1
- package/lib/directives/mutate/index.js +13 -13
- package/lib/directives/mutate/index.js.map +1 -1
- package/lib/directives/resize/index.js +8 -8
- package/lib/directives/resize/index.js.map +1 -1
- package/lib/directives/scroll/index.js +10 -9
- package/lib/directives/scroll/index.js.map +1 -1
- package/lib/directives/touch/index.js +4 -4
- package/lib/directives/touch/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/activatable/index.js +10 -5
- package/lib/mixins/activatable/index.js.map +1 -1
- package/lib/mixins/applicationable/index.js +4 -4
- package/lib/mixins/applicationable/index.js.map +1 -1
- package/lib/mixins/binds-attrs/index.js +1 -1
- package/lib/mixins/binds-attrs/index.js.map +1 -1
- package/lib/mixins/detachable/index.js +3 -3
- package/lib/mixins/detachable/index.js.map +1 -1
- package/lib/mixins/groupable/index.js +1 -1
- package/lib/mixins/groupable/index.js.map +1 -1
- package/lib/mixins/intersectable/index.js +2 -2
- package/lib/mixins/intersectable/index.js.map +1 -1
- package/lib/mixins/menuable/index.js +1 -1
- package/lib/mixins/menuable/index.js.map +1 -1
- package/lib/mixins/overlayable/index.js +5 -4
- package/lib/mixins/overlayable/index.js.map +1 -1
- package/lib/mixins/proxyable/index.js +0 -4
- package/lib/mixins/proxyable/index.js.map +1 -1
- package/lib/mixins/selectable/index.js +2 -5
- package/lib/mixins/selectable/index.js.map +1 -1
- package/lib/mixins/translatable/index.js +1 -1
- package/lib/mixins/translatable/index.js.map +1 -1
- package/lib/mixins/validatable/index.js +2 -2
- package/lib/mixins/validatable/index.js.map +1 -1
- package/lib/services/breakpoint/index.js +3 -1
- package/lib/services/breakpoint/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/VAppBar/VAppBar.ts +11 -13
- package/src/components/VAutocomplete/VAutocomplete.ts +13 -6
- package/src/components/VBottomSheet/VBottomSheet.sass +1 -1
- package/src/components/VCheckbox/VSimpleCheckbox.ts +84 -42
- package/src/components/VCheckbox/__tests__/VSimpleCheckbox.spec.ts +46 -13
- package/src/components/VColorPicker/VColorPicker.ts +6 -6
- package/src/components/VData/VData.ts +12 -1
- package/src/components/VDataIterator/VDataIterator.ts +5 -3
- package/src/components/VDataTable/VDataTable.ts +2 -2
- package/src/components/VDataTable/VDataTableHeader.ts +5 -4
- package/src/components/VDataTable/VDataTableHeaderDesktop.ts +1 -1
- package/src/components/VDataTable/VVirtualTable.ts +1 -1
- package/src/components/VDataTable/mixins/header.ts +6 -6
- package/src/components/VDatePicker/VDatePicker.ts +6 -6
- package/src/components/VDialog/VDialog.ts +1 -1
- package/src/components/VExpansionPanel/VExpansionPanelContent.ts +1 -1
- package/src/components/VExpansionPanel/VExpansionPanelHeader.ts +1 -1
- package/src/components/VForm/VForm.ts +8 -8
- package/src/components/VGrid/VCol.ts +2 -2
- package/src/components/VGrid/VContainer.ts +1 -1
- package/src/components/VImg/VImg.ts +1 -1
- package/src/components/VInput/VInput.ts +1 -1
- package/src/components/VItemGroup/VItem.ts +25 -23
- package/src/components/VItemGroup/VItemGroup.ts +3 -3
- package/src/components/VList/VList.ts +1 -1
- package/src/components/VList/VListGroup.ts +14 -14
- package/src/components/VMenu/VMenu.sass +2 -2
- package/src/components/VMenu/VMenu.ts +1 -0
- package/src/components/VOverlay/VOverlay.ts +1 -1
- package/src/components/VRadioGroup/VRadioGroup.ts +8 -9
- package/src/components/VRangeSlider/VRangeSlider.ts +1 -1
- package/src/components/VSelect/VSelect.ts +6 -5
- package/src/components/VSelect/VSelectList.ts +5 -5
- package/src/components/VSnackbar/VSnackbar.sass +2 -2
- package/src/components/VSparkline/VSparkline.ts +6 -6
- package/src/components/VStepper/VStepperContent.ts +1 -1
- package/src/components/VStepper/VStepperStep.ts +1 -1
- package/src/components/VSubheader/VSubheader.ts +2 -2
- package/src/components/VTabs/VTab.ts +1 -1
- package/src/components/VTabs/VTabs.ts +0 -1
- package/src/components/VTextField/VTextField.ts +4 -3
- package/src/components/VToolbar/VToolbar.ts +4 -5
- package/src/components/VTreeview/VTreeviewNode.ts +1 -1
- package/src/components/transitions/createTransition.ts +1 -2
- package/src/components/transitions/expand-transition.ts +9 -7
- package/src/directives/intersect/index.ts +81 -42
- package/src/directives/mutate/index.ts +58 -49
- package/src/directives/resize/index.ts +33 -14
- package/src/directives/scroll/index.ts +36 -20
- package/src/directives/touch/index.ts +37 -27
- package/src/mixins/activatable/index.ts +8 -4
- package/src/mixins/applicationable/index.ts +4 -4
- package/src/mixins/binds-attrs/index.ts +1 -1
- package/src/mixins/detachable/index.ts +5 -5
- package/src/mixins/groupable/index.ts +1 -1
- package/src/mixins/intersectable/index.ts +2 -2
- package/src/mixins/menuable/index.ts +1 -1
- package/src/mixins/overlayable/index.ts +4 -5
- package/src/mixins/proxyable/index.ts +0 -5
- package/src/mixins/selectable/index.ts +3 -7
- package/src/mixins/translatable/index.ts +1 -1
- package/src/mixins/validatable/index.ts +2 -2
- package/src/services/breakpoint/index.ts +5 -0
- package/src/styles/generic/_transitions.scss +38 -38
|
@@ -1,55 +1,73 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { VNode } from 'vue'
|
|
1
|
+
import { DirectiveBinding, ObjectDirective, VNode } from 'vue'
|
|
3
2
|
|
|
4
3
|
type ObserveHandler = (
|
|
5
4
|
entries: IntersectionObserverEntry[],
|
|
6
5
|
observer: IntersectionObserver,
|
|
7
|
-
isIntersecting: boolean
|
|
8
|
-
) => void
|
|
6
|
+
isIntersecting: boolean
|
|
7
|
+
) => void;
|
|
9
8
|
|
|
10
|
-
interface
|
|
11
|
-
|
|
9
|
+
interface ObserveDirectiveBinding
|
|
10
|
+
extends Omit<DirectiveBinding, 'modifiers' | 'value'> {
|
|
11
|
+
value?:
|
|
12
|
+
| ObserveHandler
|
|
13
|
+
| { handler: ObserveHandler, options?: IntersectionObserverInit }
|
|
12
14
|
modifiers?: {
|
|
13
15
|
once?: boolean
|
|
14
16
|
quiet?: boolean
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
// Расширяем HTMLElement для хранения данных наблюдателя
|
|
21
|
+
declare global {
|
|
22
|
+
interface HTMLElement {
|
|
23
|
+
_observe?: Record<
|
|
24
|
+
number,
|
|
25
|
+
{ init: boolean, observer: IntersectionObserver }
|
|
26
|
+
>
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function mounted (
|
|
31
|
+
el: HTMLElement,
|
|
32
|
+
binding: ObserveDirectiveBinding,
|
|
33
|
+
vnode: VNode
|
|
34
|
+
) {
|
|
35
|
+
if (typeof window === 'undefined' || !('IntersectionObserver' in window)) { return }
|
|
20
36
|
|
|
21
37
|
const modifiers = binding.modifiers || {}
|
|
22
38
|
const value = binding.value
|
|
23
|
-
const { handler, options } =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
_observe.init
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
39
|
+
const { handler, options } =
|
|
40
|
+
typeof value === 'object' && value !== null && 'handler' in value
|
|
41
|
+
? value
|
|
42
|
+
: { handler: value, options: {} }
|
|
43
|
+
|
|
44
|
+
if (!handler) return
|
|
45
|
+
|
|
46
|
+
const observer = new IntersectionObserver(
|
|
47
|
+
(
|
|
48
|
+
entries: IntersectionObserverEntry[] = [],
|
|
49
|
+
observer: IntersectionObserver
|
|
50
|
+
) => {
|
|
51
|
+
const _observe = el._observe?.[vnode.ctx!.uid]
|
|
52
|
+
if (!_observe) return // Just in case, should never fire
|
|
53
|
+
|
|
54
|
+
const isIntersecting = entries.some(entry => entry.isIntersecting)
|
|
55
|
+
|
|
56
|
+
// If is not quiet or has already been
|
|
57
|
+
// initted, invoke the user callback
|
|
58
|
+
if (
|
|
59
|
+
handler &&
|
|
60
|
+
(!modifiers.quiet || _observe.init) &&
|
|
61
|
+
(!modifiers.once || isIntersecting || _observe.init)
|
|
62
|
+
) {
|
|
63
|
+
handler(entries, observer, isIntersecting)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (isIntersecting && modifiers.once) unmounted(el, binding, vnode)
|
|
67
|
+
else _observe.init = true
|
|
68
|
+
},
|
|
69
|
+
options
|
|
70
|
+
)
|
|
53
71
|
|
|
54
72
|
el._observe = Object(el._observe)
|
|
55
73
|
el._observe![vnode.ctx!.uid] = { init: false, observer }
|
|
@@ -57,7 +75,23 @@ function inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode
|
|
|
57
75
|
observer.observe(el)
|
|
58
76
|
}
|
|
59
77
|
|
|
60
|
-
function
|
|
78
|
+
function updated (
|
|
79
|
+
el: HTMLElement,
|
|
80
|
+
binding: ObserveDirectiveBinding,
|
|
81
|
+
vnode: VNode
|
|
82
|
+
) {
|
|
83
|
+
// Если значение изменилось, пересоздаем observer
|
|
84
|
+
if (binding.value !== binding.oldValue) {
|
|
85
|
+
unmounted(el, binding, vnode)
|
|
86
|
+
mounted(el, binding, vnode)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function unmounted (
|
|
91
|
+
el: HTMLElement,
|
|
92
|
+
binding: ObserveDirectiveBinding,
|
|
93
|
+
vnode: VNode
|
|
94
|
+
) {
|
|
61
95
|
const observe = el._observe?.[vnode.ctx!.uid]
|
|
62
96
|
if (!observe) return
|
|
63
97
|
|
|
@@ -65,9 +99,14 @@ function unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode)
|
|
|
65
99
|
delete el._observe![vnode.ctx!.uid]
|
|
66
100
|
}
|
|
67
101
|
|
|
68
|
-
export const Intersect
|
|
69
|
-
|
|
70
|
-
|
|
102
|
+
export const Intersect: ObjectDirective<
|
|
103
|
+
HTMLElement,
|
|
104
|
+
| ObserveHandler
|
|
105
|
+
| { handler: ObserveHandler, options?: IntersectionObserverInit }
|
|
106
|
+
> = {
|
|
107
|
+
mounted,
|
|
108
|
+
updated,
|
|
109
|
+
unmounted,
|
|
71
110
|
}
|
|
72
111
|
|
|
73
112
|
export default Intersect
|
|
@@ -1,75 +1,84 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DirectiveBinding, VNode } from 'vue'
|
|
2
2
|
|
|
3
3
|
type MutateHandler = (
|
|
4
4
|
mutationsList: MutationRecord[],
|
|
5
|
-
observer: MutationObserver
|
|
6
|
-
) => void
|
|
5
|
+
observer: MutationObserver
|
|
6
|
+
) => void;
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
type MutateValue =
|
|
9
|
+
| MutateHandler
|
|
10
|
+
| { handler: MutateHandler, options?: MutationObserverInit };
|
|
11
|
+
|
|
12
|
+
type MutateModifiers = {
|
|
13
|
+
once?: boolean
|
|
14
|
+
attr?: boolean
|
|
15
|
+
child?: boolean
|
|
16
|
+
sub?: boolean
|
|
17
|
+
char?: boolean
|
|
18
|
+
};
|
|
18
19
|
|
|
19
|
-
function
|
|
20
|
-
|
|
20
|
+
function mounted (
|
|
21
|
+
el: HTMLElement,
|
|
22
|
+
binding: DirectiveBinding<MutateValue>,
|
|
23
|
+
vnode: VNode
|
|
24
|
+
) {
|
|
25
|
+
const modifiers = (binding.modifiers as MutateModifiers) || {}
|
|
21
26
|
const value = binding.value
|
|
22
27
|
const callback = typeof value === 'object' ? value.handler : value!
|
|
23
28
|
const { once, ...modifierKeys } = modifiers
|
|
24
29
|
const hasModifiers = Object.keys(modifierKeys).length > 0
|
|
25
30
|
|
|
26
31
|
// Options take top priority
|
|
27
|
-
const options =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
const options =
|
|
33
|
+
typeof value === 'object' && value.options
|
|
34
|
+
? value.options
|
|
35
|
+
: hasModifiers
|
|
36
|
+
? {
|
|
37
|
+
// If we have modifiers, use only those provided
|
|
38
|
+
attributes: modifierKeys.attr,
|
|
39
|
+
childList: modifierKeys.child,
|
|
40
|
+
subtree: modifierKeys.sub,
|
|
41
|
+
characterData: modifierKeys.char,
|
|
42
|
+
}
|
|
43
|
+
: {
|
|
44
|
+
// Defaults to everything on
|
|
45
|
+
attributes: true,
|
|
46
|
+
childList: true,
|
|
47
|
+
subtree: true,
|
|
48
|
+
characterData: true,
|
|
49
|
+
}
|
|
44
50
|
|
|
45
|
-
const observer = new MutationObserver(
|
|
46
|
-
mutationsList: MutationRecord[],
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
/* istanbul ignore if */
|
|
50
|
-
if (!el._mutate) return // Just in case, should never fire
|
|
51
|
+
const observer = new MutationObserver(
|
|
52
|
+
(mutationsList: MutationRecord[], observer: MutationObserver) => {
|
|
53
|
+
/* istanbul ignore if */
|
|
54
|
+
if (!el._mutate) return // Just in case, should never fire
|
|
51
55
|
|
|
52
|
-
|
|
56
|
+
callback(mutationsList, observer)
|
|
53
57
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
// If has the once modifier, unbind
|
|
59
|
+
once && unmounted(el, binding, vnode)
|
|
60
|
+
}
|
|
61
|
+
)
|
|
57
62
|
|
|
58
63
|
observer.observe(el, options)
|
|
59
64
|
el._mutate = Object(el._mutate)
|
|
60
|
-
el._mutate![vnode.
|
|
65
|
+
el._mutate![vnode.ctx!.uid] = { observer }
|
|
61
66
|
}
|
|
62
67
|
|
|
63
|
-
function
|
|
64
|
-
|
|
68
|
+
function unmounted (
|
|
69
|
+
el: HTMLElement,
|
|
70
|
+
binding: DirectiveBinding<MutateValue>,
|
|
71
|
+
vnode: VNode
|
|
72
|
+
) {
|
|
73
|
+
if (!el._mutate?.[vnode.ctx!.uid]) return
|
|
65
74
|
|
|
66
|
-
el._mutate[vnode.
|
|
67
|
-
delete el._mutate[vnode.
|
|
75
|
+
el._mutate[vnode.ctx!.uid]!.observer.disconnect()
|
|
76
|
+
delete el._mutate[vnode.ctx!.uid]
|
|
68
77
|
}
|
|
69
78
|
|
|
70
79
|
export const Mutate = {
|
|
71
|
-
|
|
72
|
-
|
|
80
|
+
mounted,
|
|
81
|
+
unmounted,
|
|
73
82
|
}
|
|
74
83
|
|
|
75
84
|
export default Mutate
|
|
@@ -1,19 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { VNode } from 'vue'
|
|
1
|
+
import { DirectiveBinding, ObjectDirective, VNode } from 'vue'
|
|
3
2
|
|
|
4
|
-
interface
|
|
5
|
-
value
|
|
3
|
+
interface ResizeDirectiveBinding extends DirectiveBinding {
|
|
4
|
+
value: () => void
|
|
6
5
|
options?: boolean | AddEventListenerOptions
|
|
7
6
|
}
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
declare global {
|
|
9
|
+
interface HTMLElement {
|
|
10
|
+
_onResize?: Record<
|
|
11
|
+
number,
|
|
12
|
+
{
|
|
13
|
+
callback: () => void
|
|
14
|
+
options: boolean | AddEventListenerOptions
|
|
15
|
+
}
|
|
16
|
+
>
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function mounted (
|
|
21
|
+
el: HTMLElement,
|
|
22
|
+
binding: ResizeDirectiveBinding,
|
|
23
|
+
vnode: VNode
|
|
24
|
+
) {
|
|
25
|
+
const callback = binding.value
|
|
11
26
|
const options = binding.options || { passive: true }
|
|
12
27
|
|
|
13
28
|
window.addEventListener('resize', callback, options)
|
|
14
29
|
|
|
15
30
|
el._onResize = Object(el._onResize)
|
|
16
|
-
el._onResize![vnode.
|
|
31
|
+
el._onResize![vnode.ctx!.uid] = {
|
|
17
32
|
callback,
|
|
18
33
|
options,
|
|
19
34
|
}
|
|
@@ -23,19 +38,23 @@ function inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode)
|
|
|
23
38
|
}
|
|
24
39
|
}
|
|
25
40
|
|
|
26
|
-
function
|
|
27
|
-
|
|
41
|
+
function unmounted (
|
|
42
|
+
el: HTMLElement,
|
|
43
|
+
binding: ResizeDirectiveBinding,
|
|
44
|
+
vnode: VNode
|
|
45
|
+
) {
|
|
46
|
+
if (!el._onResize?.[vnode.ctx!.uid]) return
|
|
28
47
|
|
|
29
|
-
const { callback, options } = el._onResize[vnode.
|
|
48
|
+
const { callback, options } = el._onResize[vnode.ctx!.uid]!
|
|
30
49
|
|
|
31
50
|
window.removeEventListener('resize', callback, options)
|
|
32
51
|
|
|
33
|
-
delete el._onResize[vnode.
|
|
52
|
+
delete el._onResize[vnode.ctx!.uid]
|
|
34
53
|
}
|
|
35
54
|
|
|
36
|
-
export const Resize = {
|
|
37
|
-
|
|
38
|
-
|
|
55
|
+
export const Resize: ObjectDirective = {
|
|
56
|
+
mounted,
|
|
57
|
+
unmounted,
|
|
39
58
|
}
|
|
40
59
|
|
|
41
60
|
export default Resize
|
|
@@ -1,21 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { DirectiveBinding, VNode, ObjectDirective } from 'vue'
|
|
2
|
+
|
|
3
|
+
interface ScrollDirectiveBinding extends Omit<DirectiveBinding, 'modifiers'> {
|
|
4
|
+
value:
|
|
5
|
+
| EventListener
|
|
6
|
+
| {
|
|
7
|
+
handler: EventListener
|
|
8
|
+
options?: boolean | AddEventListenerOptions
|
|
9
|
+
}
|
|
10
|
+
| (EventListenerObject & { options?: boolean | AddEventListenerOptions })
|
|
9
11
|
modifiers?: {
|
|
10
12
|
self?: boolean
|
|
11
13
|
}
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
function
|
|
16
|
+
function mounted (
|
|
17
|
+
el: HTMLElement,
|
|
18
|
+
binding: ScrollDirectiveBinding,
|
|
19
|
+
vnode: VNode
|
|
20
|
+
) {
|
|
15
21
|
const { self = false } = binding.modifiers || {}
|
|
16
22
|
const value = binding.value
|
|
17
|
-
const options = (typeof value === 'object' && value.options) || {
|
|
18
|
-
|
|
23
|
+
const options = (typeof value === 'object' && value.options) || {
|
|
24
|
+
passive: true,
|
|
25
|
+
}
|
|
26
|
+
const handler =
|
|
27
|
+
typeof value === 'function' || 'handleEvent' in value
|
|
28
|
+
? value
|
|
29
|
+
: value.handler
|
|
19
30
|
|
|
20
31
|
const target = self
|
|
21
32
|
? el
|
|
@@ -28,7 +39,8 @@ function inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode)
|
|
|
28
39
|
target.addEventListener('scroll', handler, options)
|
|
29
40
|
|
|
30
41
|
el._onScroll = Object(el._onScroll)
|
|
31
|
-
|
|
42
|
+
// В Vue 3 используем vnode.ctx.uid вместо vnode.context._uid
|
|
43
|
+
el._onScroll![vnode.ctx!.uid] = {
|
|
32
44
|
handler,
|
|
33
45
|
options,
|
|
34
46
|
// Don't reference self
|
|
@@ -36,18 +48,22 @@ function inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode)
|
|
|
36
48
|
}
|
|
37
49
|
}
|
|
38
50
|
|
|
39
|
-
function
|
|
40
|
-
|
|
51
|
+
function unmounted (
|
|
52
|
+
el: HTMLElement,
|
|
53
|
+
binding: ScrollDirectiveBinding,
|
|
54
|
+
vnode: VNode
|
|
55
|
+
) {
|
|
56
|
+
if (!el._onScroll?.[vnode.ctx!.uid]) return
|
|
41
57
|
|
|
42
|
-
const { handler, options, target = el } = el._onScroll[vnode.
|
|
58
|
+
const { handler, options, target = el } = el._onScroll[vnode.ctx!.uid]!
|
|
43
59
|
|
|
44
60
|
target.removeEventListener('scroll', handler, options)
|
|
45
|
-
delete el._onScroll[vnode.
|
|
61
|
+
delete el._onScroll[vnode.ctx!.uid]
|
|
46
62
|
}
|
|
47
63
|
|
|
48
|
-
export const Scroll = {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
64
|
+
export const Scroll: ObjectDirective = {
|
|
65
|
+
mounted,
|
|
66
|
+
unmounted,
|
|
67
|
+
}
|
|
52
68
|
|
|
53
69
|
export default Scroll
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DirectiveBinding, VNode, ObjectDirective } from 'vue'
|
|
2
2
|
import { keys } from '../../util/helpers'
|
|
3
3
|
import { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'
|
|
4
4
|
import makeDirectiveActivatable from '../../util/make-directive-activatable'
|
|
@@ -9,10 +9,6 @@ export interface TouchStoredHandlers {
|
|
|
9
9
|
touchmove: (e: TouchEvent) => void
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
interface TouchVNodeDirective extends VNodeDirective {
|
|
13
|
-
value?: TouchValue
|
|
14
|
-
}
|
|
15
|
-
|
|
16
12
|
const handleGesture = (wrapper: TouchWrapper) => {
|
|
17
13
|
const { touchstartX, touchendX, touchstartY, touchendY } = wrapper
|
|
18
14
|
const dirRatio = 0.5
|
|
@@ -21,13 +17,19 @@ const handleGesture = (wrapper: TouchWrapper) => {
|
|
|
21
17
|
wrapper.offsetY = touchendY - touchstartY
|
|
22
18
|
|
|
23
19
|
if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {
|
|
24
|
-
wrapper.left &&
|
|
25
|
-
|
|
20
|
+
wrapper.left &&
|
|
21
|
+
touchendX < touchstartX - minDistance &&
|
|
22
|
+
wrapper.left(wrapper)
|
|
23
|
+
wrapper.right &&
|
|
24
|
+
touchendX > touchstartX + minDistance &&
|
|
25
|
+
wrapper.right(wrapper)
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {
|
|
29
|
-
wrapper.up &&
|
|
30
|
-
wrapper.down &&
|
|
29
|
+
wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper)
|
|
30
|
+
wrapper.down &&
|
|
31
|
+
touchendY > touchstartY + minDistance &&
|
|
32
|
+
wrapper.down(wrapper)
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
|
|
@@ -36,8 +38,7 @@ function touchstart (event: TouchEvent, wrapper: TouchWrapper) {
|
|
|
36
38
|
wrapper.touchstartX = touch.clientX
|
|
37
39
|
wrapper.touchstartY = touch.clientY
|
|
38
40
|
|
|
39
|
-
wrapper.start &&
|
|
40
|
-
wrapper.start(Object.assign(event, wrapper))
|
|
41
|
+
wrapper.start && wrapper.start(Object.assign(event, wrapper))
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
function touchend (event: TouchEvent, wrapper: TouchWrapper) {
|
|
@@ -45,8 +46,7 @@ function touchend (event: TouchEvent, wrapper: TouchWrapper) {
|
|
|
45
46
|
wrapper.touchendX = touch.clientX
|
|
46
47
|
wrapper.touchendY = touch.clientY
|
|
47
48
|
|
|
48
|
-
wrapper.end &&
|
|
49
|
-
wrapper.end(Object.assign(event, wrapper))
|
|
49
|
+
wrapper.end && wrapper.end(Object.assign(event, wrapper))
|
|
50
50
|
|
|
51
51
|
handleGesture(wrapper)
|
|
52
52
|
}
|
|
@@ -85,39 +85,49 @@ function createHandlers (value: TouchHandlers): TouchStoredHandlers {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
function
|
|
89
|
-
|
|
88
|
+
function mounted (
|
|
89
|
+
el: HTMLElement,
|
|
90
|
+
binding: DirectiveBinding<TouchValue>,
|
|
91
|
+
vnode: VNode
|
|
92
|
+
) {
|
|
93
|
+
const value = binding.value
|
|
90
94
|
const target = value.parent ? el.parentElement : el
|
|
91
95
|
const options = value.options || { passive: true }
|
|
92
96
|
|
|
93
97
|
// Needed to pass unit tests
|
|
94
98
|
if (!target) return
|
|
95
99
|
|
|
96
|
-
const handlers = createHandlers(binding.value
|
|
100
|
+
const handlers = createHandlers(binding.value)
|
|
97
101
|
target._touchHandlers = Object(target._touchHandlers)
|
|
98
|
-
target._touchHandlers![vnode.ctx
|
|
102
|
+
target._touchHandlers![vnode.ctx!.uid] = handlers
|
|
99
103
|
|
|
100
104
|
keys(handlers).forEach(eventName => {
|
|
101
|
-
target.addEventListener(
|
|
105
|
+
target.addEventListener(
|
|
106
|
+
eventName,
|
|
107
|
+
handlers[eventName] as EventListener,
|
|
108
|
+
options
|
|
109
|
+
)
|
|
102
110
|
})
|
|
103
111
|
}
|
|
104
112
|
|
|
105
|
-
function
|
|
106
|
-
|
|
113
|
+
function unmounted (
|
|
114
|
+
el: HTMLElement,
|
|
115
|
+
binding: DirectiveBinding<TouchValue>,
|
|
116
|
+
vnode: VNode
|
|
117
|
+
) {
|
|
118
|
+
const target = binding.value.parent ? el.parentElement : el
|
|
107
119
|
if (!target || !target._touchHandlers) return
|
|
108
120
|
|
|
109
|
-
const handlers = target._touchHandlers[vnode.ctx
|
|
121
|
+
const handlers = target._touchHandlers[vnode.ctx!.uid]
|
|
110
122
|
keys(handlers).forEach(eventName => {
|
|
111
123
|
target.removeEventListener(eventName, handlers[eventName])
|
|
112
124
|
})
|
|
113
|
-
delete target._touchHandlers[vnode.ctx
|
|
125
|
+
delete target._touchHandlers[vnode.ctx!.uid]
|
|
114
126
|
}
|
|
115
127
|
|
|
116
|
-
export const Touch = {
|
|
117
|
-
mounted
|
|
118
|
-
unmounted
|
|
128
|
+
export const Touch: ObjectDirective<HTMLElement, TouchValue> = {
|
|
129
|
+
mounted,
|
|
130
|
+
unmounted,
|
|
119
131
|
}
|
|
120
132
|
|
|
121
|
-
|
|
122
|
-
|
|
123
133
|
export default makeDirectiveActivatable(Touch)
|
|
@@ -62,7 +62,7 @@ export default baseMixins.extend({
|
|
|
62
62
|
this.addActivatorEvents()
|
|
63
63
|
},
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
beforeUnmount () {
|
|
66
66
|
this.removeActivatorEvents()
|
|
67
67
|
},
|
|
68
68
|
|
|
@@ -88,14 +88,18 @@ export default baseMixins.extend({
|
|
|
88
88
|
}
|
|
89
89
|
},
|
|
90
90
|
genActivator () {
|
|
91
|
-
|
|
91
|
+
let node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {
|
|
92
92
|
attrs: {
|
|
93
93
|
...this.genActivatorListeners(),
|
|
94
94
|
...this.genActivatorAttributes(),
|
|
95
95
|
}
|
|
96
96
|
})) || []
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
node = Array.isArray(node) ? node : [node]
|
|
99
|
+
|
|
100
|
+
this.activatorNode = node.flatMap(node => {
|
|
101
|
+
return node.type === Symbol.for('v-fgt') ? node.children : node
|
|
102
|
+
})
|
|
99
103
|
|
|
100
104
|
return node
|
|
101
105
|
},
|
|
@@ -167,7 +171,7 @@ export default baseMixins.extend({
|
|
|
167
171
|
// Use the contents of the activator slot
|
|
168
172
|
// There's either only one element in it or we
|
|
169
173
|
// don't have a click event to use as a last resort
|
|
170
|
-
const vm = this.activatorNode[0].component
|
|
174
|
+
const vm = this.activatorNode[0].component?.ctx
|
|
171
175
|
if (
|
|
172
176
|
vm &&
|
|
173
177
|
(vm.isActivatable !== undefined || vm.isMenuable !== undefined)
|
|
@@ -28,7 +28,7 @@ export default function applicationable (value: TargetProp, events: string[] = [
|
|
|
28
28
|
: this.callUpdate()
|
|
29
29
|
},
|
|
30
30
|
applicationProperty (newVal, oldVal) {
|
|
31
|
-
this.$vuetify.application.unregister(this
|
|
31
|
+
this.$vuetify.application.unregister(this.$.uid, oldVal)
|
|
32
32
|
},
|
|
33
33
|
},
|
|
34
34
|
|
|
@@ -51,7 +51,7 @@ export default function applicationable (value: TargetProp, events: string[] = [
|
|
|
51
51
|
this.removeApplication()
|
|
52
52
|
},
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
unmounted () {
|
|
55
55
|
this.removeApplication()
|
|
56
56
|
},
|
|
57
57
|
|
|
@@ -60,7 +60,7 @@ export default function applicationable (value: TargetProp, events: string[] = [
|
|
|
60
60
|
if (!this.app) return
|
|
61
61
|
|
|
62
62
|
this.$vuetify.application.register(
|
|
63
|
-
this
|
|
63
|
+
this.$.uid,
|
|
64
64
|
this.applicationProperty,
|
|
65
65
|
this.updateApplication()
|
|
66
66
|
)
|
|
@@ -69,7 +69,7 @@ export default function applicationable (value: TargetProp, events: string[] = [
|
|
|
69
69
|
if (!force && !this.app) return
|
|
70
70
|
|
|
71
71
|
this.$vuetify.application.unregister(
|
|
72
|
-
this
|
|
72
|
+
this.$.uid,
|
|
73
73
|
this.applicationProperty
|
|
74
74
|
)
|
|
75
75
|
},
|
|
@@ -9,7 +9,7 @@ function makeWatcher (property: string): ThisType<Vue> & ((val: any, oldVal: any
|
|
|
9
9
|
return function (this: Vue, val, oldVal) {
|
|
10
10
|
for (const attr in oldVal) {
|
|
11
11
|
if (!Object.prototype.hasOwnProperty.call(val, attr)) {
|
|
12
|
-
|
|
12
|
+
delete this.$data[property][attr]
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
for (const attr in val) {
|