A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/vuematerial/vue-material/commit/ecf5cb7 below:

new props mdCloseOnClick (#1630) · vuematerial/vue-material@ecf5cb7 · GitHub

File tree Expand file treeCollapse file tree 5 files changed

+93

-22

lines changed

Filter options

Expand file treeCollapse file tree 5 files changed

+93

-22

lines changed Original file line number Diff line number Diff line change

@@ -1,6 +1,7 @@

1 1

<example src="./examples/Directions.vue" />

2 2

<example src="./examples/Sizes.vue" />

3 3

<example src="./examples/MenuAlignments.vue" />

4 +

<example src="./examples/AutoClose.vue" />

4 5

<example src="./examples/MultipleContent.vue" />

5 6 6 7

<template>

@@ -33,6 +34,13 @@

33 34

<note-block>The max-width of a menu is 280px.</note-block>

34 35

</div>

35 36 37 +

<div class="page-container-section">

38 +

<h2>AutoClose</h2>

39 + 40 +

<p><code>md-menu</code> can be auto closed on click or select:</p>

41 +

<code-example title="Auto close menu on events" :component="examples['auto-close']" />

42 +

</div>

43 + 36 44

<div class="page-container-section">

37 45

<h2>Rich Content and Icon Alignment</h2>

38 46

@@ -71,6 +79,12 @@

71 79

description: 'Used to show/hide a menu programatically.',

72 80

defaults: 'false'

73 81

},

82 +

{

83 +

name: 'md-close-on-click',

84 +

type: 'Boolean',

85 +

description: 'When this options is true, the menu will be closed after any click event.',

86 +

defaults: 'false'

87 +

},

74 88

{

75 89

name: 'md-close-on-select',

76 90

type: 'Boolean',

Original file line number Diff line number Diff line change

@@ -0,0 +1,41 @@

1 +

<template>

2 +

<div>

3 +

<div>

4 +

<md-checkbox :value="true" v-model="closeOnClick">closeOnClick</md-checkbox>

5 +

<md-checkbox :value="true" v-model="closeOnSelect">closeOnSelect</md-checkbox>

6 +

</div>

7 +

<div>

8 +

<md-menu md-direction="bottom-end" :mdCloseOnClick="closeOnClick" :mdCloseOnSelect="closeOnSelect">

9 +

<md-button md-menu-trigger>Bottom End</md-button>

10 + 11 +

<md-menu-content>

12 +

<md-menu-item disabled @click="data = 'click disabled'">Disabled</md-menu-item>

13 +

<md-menu-item @click="data = 'click 1'">Click Event 1</md-menu-item>

14 +

<md-menu-item @click="data = 'click 2'">Click Event 2</md-menu-item>

15 +

<md-menu-item>Plain text</md-menu-item>

16 +

</md-menu-content>

17 +

</md-menu>

18 +

</div>

19 +

<div>{{data}}</div>

20 +

</div>

21 +

</template>

22 + 23 +

<script>

24 +

export default {

25 +

name: 'AutoClose',

26 + 27 +

data () {

28 +

return {

29 +

data: '',

30 +

closeOnClick: false,

31 +

closeOnSelect: true

32 +

}

33 +

}

34 +

}

35 +

</script>

36 + 37 +

<style lang="scss" scoped>

38 +

.md-menu {

39 +

margin: 24px;

40 +

}

41 +

</style>

Original file line number Diff line number Diff line change

@@ -30,6 +30,10 @@

30 30

type: Boolean,

31 31

default: true

32 32

},

33 +

mdCloseOnClick: {

34 +

type: Boolean,

35 +

default: false

36 +

},

33 37

mdSize: {

34 38

type: String,

35 39

default: 'small',

@@ -56,6 +60,7 @@

56 60

fullWidth: this.mdFullWidth,

57 61

dense: this.mdDense,

58 62

closeOnSelect: this.mdCloseOnSelect,

63 +

closeOnClick: this.mdCloseOnClick,

59 64

bodyClickObserver: null,

60 65

windowResizeObserver: null,

61 66

$el: this.$el

@@ -102,6 +107,12 @@

102 107

} else {

103 108

this.$emit('md-opened')

104 109

}

110 +

},

111 +

mdCloseOnSelect () {

112 +

this.MdMenu.closeOnSelect = this.mdCloseOnSelect

113 +

},

114 +

mdCloseOnClick () {

115 +

this.MdMenu.closeOnClick = this.mdCloseOnClick

105 116

}

106 117

},

107 118

methods: {

Original file line number Diff line number Diff line change

@@ -199,7 +199,8 @@

199 199

$event.stopPropagation()

200 200

let isMdMenu = this.MdMenu.$el ? this.MdMenu.$el.contains($event.target) : false

201 201

let isMenuContentEl = this.$refs.menu ? this.$refs.menu.contains($event.target) : false

202 -

if (!this.$el.contains($event.target) && !isMdMenu && !isMenuContentEl) {

202 +

let onBackdropExpectMenu = !this.$el.contains($event.target) && !isMenuContentEl

203 +

if (!isMdMenu && (this.MdMenu.closeOnClick || onBackdropExpectMenu)) {

203 204

this.MdMenu.active = false

204 205

this.MdMenu.bodyClickObserver.destroy()

205 206

this.MdMenu.windowResizeObserver.destroy()

Original file line number Diff line number Diff line change

@@ -16,14 +16,38 @@

16 16

},

17 17

inject: ['MdMenu'],

18 18

data: () => ({

19 -

listeners: {},

20 19

highlighted: false

21 20

}),

22 21

computed: {

23 22

itemClasses () {

24 23

return {

25 24

'md-highlight': this.highlighted

26 25

}

26 +

},

27 +

listeners () {

28 +

if (this.disabled) {

29 +

return {}

30 +

}

31 + 32 +

if (!this.MdMenu.closeOnSelect) {

33 +

return this.$listeners

34 +

}

35 + 36 +

let listeners = {}

37 +

let listenerNames = Object.keys(this.$listeners)

38 + 39 +

listenerNames.forEach(listener => {

40 +

if (MdInteractionEvents.includes(listener)) {

41 +

listeners[listener] = $event => {

42 +

this.$listeners[listener]($event)

43 +

this.closeMenu()

44 +

}

45 +

} else {

46 +

listeners[listener] = this.$listeners[listener]

47 +

}

48 +

})

49 + 50 +

return listeners

27 51

}

28 52

},

29 53

methods: {

@@ -41,26 +65,6 @@

41 65

}

42 66

}

43 67

},

44 -

created () {

45 -

if (this.MdMenu.closeOnSelect) {

46 -

let listenerNames = Object.keys(this.$listeners)

47 - 48 -

listenerNames.forEach(listener => {

49 -

if (MdInteractionEvents.includes(listener)) {

50 -

this.listeners[listener] = $event => {

51 -

if (!this.disabled) {

52 -

this.$listeners[listener]($event)

53 -

this.closeMenu()

54 -

}

55 -

}

56 -

} else {

57 -

this.listeners[listener] = this.$listeners[listener]

58 -

}

59 -

})

60 -

} else {

61 -

this.listeners = this.$listeners

62 -

}

63 -

},

64 68

mounted () {

65 69

if (this.$el.children && this.$el.children[0]) {

66 70

let listItem = this.$el.children[0]

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4