Skip to content

Commit 37a1b3b

Browse files
authored
chore(#9): update javascript behaviours (#145)
1 parent 68adfa8 commit 37a1b3b

File tree

1 file changed

+37
-18
lines changed

1 file changed

+37
-18
lines changed

src/components/MenuItem.vue

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -103,34 +103,53 @@ export default {
103103
},
104104
105105
computed: {
106-
hasChildren: ({ item }) => !!(item.children || []).length,
106+
hasChildren: ({ item }) => !!item.children?.length,
107107
isCollapsible: ({ type }) => type === 'collapsible',
108108
isFlyout: ({ type }) => type === 'flyout',
109109
},
110110
111-
created() {
112-
try {
113-
// Attach client side only javascript.
114-
if (!process.client) return
115-
if (this.isCollapsible) {
116-
delete require.cache[require.resolve('@civictheme/uikit/components/00-base/collapsible/collapsible')]
117-
require('@civictheme/uikit/components/00-base/collapsible/collapsible')
118-
}
111+
methods: {
112+
attachJs() {
113+
try {
114+
// Attach client side only javascript.
115+
if (!process.client) return
116+
if (this.isCollapsible) {
117+
delete require.cache[require.resolve('@civictheme/uikit/components/00-base/collapsible/collapsible')]
118+
require('@civictheme/uikit/components/00-base/collapsible/collapsible')
119+
}
119120
120-
if (this.isFlyout) {
121-
delete require.cache[require.resolve('@civictheme/uikit/components/00-base/flyout/flyout')]
122-
require('@civictheme/uikit/components/00-base/flyout/flyout')
121+
if (this.isFlyout) {
122+
delete require.cache[require.resolve('@civictheme/uikit/components/00-base/flyout/flyout')]
123+
require('@civictheme/uikit/components/00-base/flyout/flyout')
124+
}
123125
}
124-
}
125-
catch(e) {
126-
// eslint-disable-next-line
127-
console.error(e)
126+
catch(e) {
127+
// eslint-disable-next-line
128+
console.error(e)
129+
}
130+
},
131+
132+
detachJs() {
133+
if (this.isCollapsible) delete require.cache[require.resolve('@civictheme/uikit/components/00-base/collapsible/collapsible')]
134+
if (this.isFlyout) delete require.cache[require.resolve('@civictheme/uikit/components/00-base/flyout/flyout')]
128135
}
129136
},
130137
138+
created() {
139+
this.attachJs()
140+
},
141+
131142
beforeDestroy() {
132-
if (this.isCollapsible) delete require.cache[require.resolve('@civictheme/uikit/components/00-base/collapsible/collapsible')]
133-
if (this.isFlyout) delete require.cache[require.resolve('@civictheme/uikit/components/00-base/flyout/flyout')]
143+
this.detachJs()
144+
},
145+
146+
watch: {
147+
item(to) {
148+
if (to.children.length) {
149+
this.detachJs()
150+
this.attachJs()
151+
}
152+
}
134153
}
135154
}
136155
</script>

0 commit comments

Comments
 (0)