2
0
mirror of https://github.com/tenrok/vue-context.git synced 2026-06-24 19:20:32 +03:00
This commit is contained in:
rawilk
2020-08-30 20:19:17 -05:00
parent 633eb31afd
commit 19af14b9fc
6 changed files with 478 additions and 387 deletions
+7
View File
@@ -1,6 +1,7 @@
import Vue from 'vue'; import Vue from 'vue';
import Advanced1 from './advanced-1'; import Advanced1 from './advanced-1';
import Advanced2 from './advanced-2'; import Advanced2 from './advanced-2';
import NestedMenus from './nested-menus';
// Need a separate vue app for each of these so we can render the markdown properly. // Need a separate vue app for each of these so we can render the markdown properly.
new Vue({ new Vue({
@@ -14,3 +15,9 @@ new Vue({
Advanced2, Advanced2,
}, },
}).$mount('#advanced-2-app'); }).$mount('#advanced-2-app');
new Vue({
components: {
NestedMenus,
},
}).$mount('#nested-menus');
@@ -10,9 +10,7 @@
:key="index" :key="index"
@contextmenu.prevent="$refs.menu.open" @contextmenu.prevent="$refs.menu.open"
> >
<div class="flex items-center px-4 py-4 sm:px-6" <div class="flex items-center px-4 py-4 sm:px-6">
:class="{ 'pt-0': index === 0, 'pb-0': index + 1 === items.length }"
>
<div class="min-w-0 flex-1 md:grid md:grid-cols-2 md:gap-4"> <div class="min-w-0 flex-1 md:grid md:grid-cols-2 md:gap-4">
<div class="text-sm leading-5 font-medium text-gray-600 truncate" v-text="item"></div> <div class="text-sm leading-5 font-medium text-gray-600 truncate" v-text="item"></div>
</div> </div>
@@ -53,28 +51,28 @@
</template> </template>
<script> <script>
import VueContext from 'vue-context'; import VueContext from 'vue-context';
import 'vue-context/src/sass/vue-context.scss'; import 'vue-context/src/sass/vue-context.scss';
export default { export default {
components: { VueContext }, components: { VueContext },
data() { data() {
return { return {
items: [ items: [
'Cras justo odio', 'Cras justo odio',
'Dapibus ac facilisis in', 'Dapibus ac facilisis in',
'Morbi leo risus', 'Morbi leo risus',
'Porta ac consectetur ac', 'Porta ac consectetur ac',
'Vestibulum at eros' 'Vestibulum at eros',
] ]
}; };
},
methods: {
alertText(text) {
alert(`You clicked: ${text}`);
}, },
},
methods: { };
alertText(text) {
alert(`You clicked: ${text}`);
}
}
};
</script> </script>
-3
View File
@@ -1,15 +1,12 @@
import Vue from 'vue'; import Vue from 'vue';
import BasicUsage from './basic-usage'; import BasicUsage from './basic-usage';
import NestedMenus from './nested-menus';
import CloseOnClick from './close-on-click'; import CloseOnClick from './close-on-click';
import CloseOnScroll from './close-on-scroll'; import CloseOnScroll from './close-on-scroll';
new Vue({ new Vue({
components: { components: {
BasicUsage, BasicUsage,
NestedMenus,
CloseOnClick, CloseOnClick,
CloseOnScroll, CloseOnScroll,
}, },
+93
View File
@@ -111,6 +111,10 @@ export default {
## Demo 2 ## Demo 2
{.tip}
> Right click on each of the colors to have a context menu appear to allow you do add or
> remove the color from the array of selected colors.
<div id="advanced-2-app"> <div id="advanced-2-app">
<div style="margin-bottom: 1rem;"> <div style="margin-bottom: 1rem;">
<advanced-2></advanced-2> <advanced-2></advanced-2>
@@ -211,4 +215,93 @@ export default {
[Demo Source](https://github.com/rawilk/vue-context/blob/master/docs-build/js/advanced/advanced-2.vue) [Demo Source](https://github.com/rawilk/vue-context/blob/master/docs-build/js/advanced/advanced-2.vue)
## Nested Menus
<div id="nested-app" style="margin-bottom: 1rem;">
<nested-menus></nested-menus>
</div>
```html
<template>
<div>
<div class="bg-white shadow overflow-hidden sm:rounded-md">
<ul>
<li>
<a href="#"
class="block hover:bg-gray-50 focus:outline-none focus:bg-gray-50 transition duration-150 ease-in-out"
:class="{ 'border-t border-gray-200': index > 0 }"
v-for="(item, index) in items"
:key="index"
@contextmenu.prevent="$refs.menu.open"
>
<div class="flex items-center px-4 py-4 sm:px-6">
<div class="min-w-0 flex-1 md:grid md:grid-cols-2 md:gap-4">
<div class="text-sm leading-5 font-medium text-gray-600 truncate" v-text="item"></div>
</div>
</div>
</a>
</li>
</ul>
</div>
<vue-context ref="menu">
<li>
<a @click.prevent="alertText($event.target.innerText)">Not nested</a>
</li>
<li class="v-context__sub">
<a @click.prevent="alertText($event.target.innerText)">Has sub menu</a>
<ul class="v-context">
<li>
<a @click.prevent="alertText($event.target.innerText)">Nested child</a>
</li>
<li class="v-context__sub">
<a @click.prevent="alertText($event.target.innerText)">Another nested menu</a>
<ul class="v-context">
<li>
<a @click.prevent="alertText($event.target.innerText)">Another level deep</a>
</li>
<li>
<a @click.prevent="alertText($event.target.innerText)">There is no limit</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a @click.prevent="alertText($event.target.text)">Also not nested</a>
</li>
</vue-context>
</div>
</template>
<script>
import VueContext from 'vue-context';
import 'vue-context/src/sass/vue-context.scss';
export default {
components: { VueContext },
data() {
return {
items: [
'Cras justo odio',
'Dapibus ac facilisis in',
'Morbi leo risus',
'Porta ac consectetur ac',
'Vestibulum at eros',
]
};
},
methods: {
alertText(text) {
alert(`You clicked: ${text}`);
},
},
};
</script>
```
[Demo Source](https://github.com/rawilk/vue-context/blob/master/docs-build/js/advanced/nested-menus.vue)
<script src="../scripts/vue-context-advanced-demos.js"></script> <script src="../scripts/vue-context-advanced-demos.js"></script>
+352
View File
@@ -255,6 +255,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _advanced_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./advanced-1 */ "./js/advanced/advanced-1.vue"); /* harmony import */ var _advanced_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./advanced-1 */ "./js/advanced/advanced-1.vue");
/* harmony import */ var _advanced_2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./advanced-2 */ "./js/advanced/advanced-2.vue"); /* harmony import */ var _advanced_2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./advanced-2 */ "./js/advanced/advanced-2.vue");
/* harmony import */ var _nested_menus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./nested-menus */ "./js/advanced/nested-menus.vue");
// Need a separate vue app for each of these so we can render the markdown properly. // Need a separate vue app for each of these so we can render the markdown properly.
@@ -269,6 +271,80 @@ new vue__WEBPACK_IMPORTED_MODULE_0___default.a({
Advanced2: _advanced_2__WEBPACK_IMPORTED_MODULE_2__["default"] Advanced2: _advanced_2__WEBPACK_IMPORTED_MODULE_2__["default"]
} }
}).$mount('#advanced-2-app'); }).$mount('#advanced-2-app');
new vue__WEBPACK_IMPORTED_MODULE_0___default.a({
components: {
NestedMenus: _nested_menus__WEBPACK_IMPORTED_MODULE_3__["default"]
}
}).$mount('#nested-menus');
/***/ }),
/***/ "./js/advanced/nested-menus.vue":
/*!**************************************!*\
!*** ./js/advanced/nested-menus.vue ***!
\**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _nested_menus_vue_vue_type_template_id_670e4233___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nested-menus.vue?vue&type=template&id=670e4233& */ "./js/advanced/nested-menus.vue?vue&type=template&id=670e4233&");
/* harmony import */ var _nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nested-menus.vue?vue&type=script&lang=js& */ "./js/advanced/nested-menus.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_nested_menus_vue_vue_type_template_id_670e4233___WEBPACK_IMPORTED_MODULE_0__["render"],
_nested_menus_vue_vue_type_template_id_670e4233___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "js/advanced/nested-menus.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./js/advanced/nested-menus.vue?vue&type=script&lang=js&":
/*!***************************************************************!*\
!*** ./js/advanced/nested-menus.vue?vue&type=script&lang=js& ***!
\***************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib??ref--4-0!../../node_modules/vue-loader/lib??vue-loader-options!./nested-menus.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./js/advanced/nested-menus.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./js/advanced/nested-menus.vue?vue&type=template&id=670e4233&":
/*!*********************************************************************!*\
!*** ./js/advanced/nested-menus.vue?vue&type=template&id=670e4233& ***!
\*********************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_template_id_670e4233___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib??vue-loader-options!./nested-menus.vue?vue&type=template&id=670e4233& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./js/advanced/nested-menus.vue?vue&type=template&id=670e4233&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_template_id_670e4233___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_template_id_670e4233___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }), /***/ }),
@@ -455,6 +531,90 @@ __webpack_require__.r(__webpack_exports__);
/***/ }), /***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./js/advanced/nested-menus.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./js/advanced/nested-menus.vue?vue&type=script&lang=js& ***!
\***********************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-context */ "./node_modules/vue-context/src/js/index.js");
/* harmony import */ var vue_context_src_sass_vue_context_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-context/src/sass/vue-context.scss */ "./node_modules/vue-context/src/sass/vue-context.scss");
/* harmony import */ var vue_context_src_sass_vue_context_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_context_src_sass_vue_context_scss__WEBPACK_IMPORTED_MODULE_1__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
components: {
VueContext: vue_context__WEBPACK_IMPORTED_MODULE_0__["default"]
},
data: function data() {
return {
items: ['Cras justo odio', 'Dapibus ac facilisis in', 'Morbi leo risus', 'Porta ac consectetur ac', 'Vestibulum at eros']
};
},
methods: {
alertText: function alertText(text) {
alert("You clicked: ".concat(text));
}
}
});
/***/ }),
/***/ "./node_modules/css-loader/index.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-context/src/sass/vue-context.scss": /***/ "./node_modules/css-loader/index.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-context/src/sass/vue-context.scss":
/*!***********************************************************************************************************************************************************************************!*\ /*!***********************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader!./node_modules/postcss-loader/src??ref--6-2!./node_modules/sass-loader/dist/cjs.js??ref--6-3!./node_modules/vue-context/src/sass/vue-context.scss ***! !*** ./node_modules/css-loader!./node_modules/postcss-loader/src??ref--6-2!./node_modules/sass-loader/dist/cjs.js??ref--6-3!./node_modules/vue-context/src/sass/vue-context.scss ***!
@@ -2547,6 +2707,198 @@ render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./js/advanced/nested-menus.vue?vue&type=template&id=670e4233&":
/*!***************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./js/advanced/nested-menus.vue?vue&type=template&id=670e4233& ***!
\***************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
[
_c(
"div",
{ staticClass: "bg-white shadow overflow-hidden sm:rounded-md" },
[
_c("ul", [
_c(
"li",
_vm._l(_vm.items, function(item, index) {
return _c(
"a",
{
key: index,
staticClass:
"block hover:bg-gray-50 focus:outline-none focus:bg-gray-50 transition duration-150 ease-in-out",
class: { "border-t border-gray-200": index > 0 },
attrs: { href: "#" },
on: {
contextmenu: function($event) {
$event.preventDefault()
return _vm.$refs.menu.open($event)
}
}
},
[
_c(
"div",
{ staticClass: "flex items-center px-4 py-4 sm:px-6" },
[
_c(
"div",
{
staticClass:
"min-w-0 flex-1 md:grid md:grid-cols-2 md:gap-4"
},
[
_c("div", {
staticClass:
"text-sm leading-5 font-medium text-gray-600 truncate",
domProps: { textContent: _vm._s(item) }
})
]
)
]
)
]
)
}),
0
)
])
]
),
_vm._v(" "),
_c("vue-context", { ref: "menu" }, [
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Not nested")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "v-context__sub" }, [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Has sub menu")]
),
_vm._v(" "),
_c("ul", { staticClass: "v-context" }, [
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Nested child")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "v-context__sub" }, [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Another nested menu")]
),
_vm._v(" "),
_c("ul", { staticClass: "v-context" }, [
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Another level deep")]
)
]),
_vm._v(" "),
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("There is no limit")]
)
])
])
])
])
]),
_vm._v(" "),
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.text)
}
}
},
[_vm._v("Also not nested")]
)
])
])
],
1
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }), /***/ }),
/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js": /***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js":
+4 -360
View File
@@ -305,10 +305,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js"); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _basic_usage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basic-usage */ "./js/basic-usage.vue"); /* harmony import */ var _basic_usage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basic-usage */ "./js/basic-usage.vue");
/* harmony import */ var _nested_menus__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nested-menus */ "./js/nested-menus.vue"); /* harmony import */ var _close_on_click__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./close-on-click */ "./js/close-on-click.vue");
/* harmony import */ var _close_on_click__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./close-on-click */ "./js/close-on-click.vue"); /* harmony import */ var _close_on_scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./close-on-scroll */ "./js/close-on-scroll.vue");
/* harmony import */ var _close_on_scroll__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./close-on-scroll */ "./js/close-on-scroll.vue");
@@ -316,81 +314,11 @@ __webpack_require__.r(__webpack_exports__);
new vue__WEBPACK_IMPORTED_MODULE_0___default.a({ new vue__WEBPACK_IMPORTED_MODULE_0___default.a({
components: { components: {
BasicUsage: _basic_usage__WEBPACK_IMPORTED_MODULE_1__["default"], BasicUsage: _basic_usage__WEBPACK_IMPORTED_MODULE_1__["default"],
NestedMenus: _nested_menus__WEBPACK_IMPORTED_MODULE_2__["default"], CloseOnClick: _close_on_click__WEBPACK_IMPORTED_MODULE_2__["default"],
CloseOnClick: _close_on_click__WEBPACK_IMPORTED_MODULE_3__["default"], CloseOnScroll: _close_on_scroll__WEBPACK_IMPORTED_MODULE_3__["default"]
CloseOnScroll: _close_on_scroll__WEBPACK_IMPORTED_MODULE_4__["default"]
} }
}).$mount('#app'); }).$mount('#app');
/***/ }),
/***/ "./js/nested-menus.vue":
/*!*****************************!*\
!*** ./js/nested-menus.vue ***!
\*****************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _nested_menus_vue_vue_type_template_id_575462f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nested-menus.vue?vue&type=template&id=575462f4& */ "./js/nested-menus.vue?vue&type=template&id=575462f4&");
/* harmony import */ var _nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nested-menus.vue?vue&type=script&lang=js& */ "./js/nested-menus.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
/* normalize component */
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
_nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
_nested_menus_vue_vue_type_template_id_575462f4___WEBPACK_IMPORTED_MODULE_0__["render"],
_nested_menus_vue_vue_type_template_id_575462f4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
false,
null,
null,
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "js/nested-menus.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
/***/ }),
/***/ "./js/nested-menus.vue?vue&type=script&lang=js&":
/*!******************************************************!*\
!*** ./js/nested-menus.vue?vue&type=script&lang=js& ***!
\******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../node_modules/babel-loader/lib??ref--4-0!../node_modules/vue-loader/lib??vue-loader-options!./nested-menus.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./js/nested-menus.vue?vue&type=script&lang=js&");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
/***/ }),
/***/ "./js/nested-menus.vue?vue&type=template&id=575462f4&":
/*!************************************************************!*\
!*** ./js/nested-menus.vue?vue&type=template&id=575462f4& ***!
\************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_template_id_575462f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../node_modules/vue-loader/lib??vue-loader-options!./nested-menus.vue?vue&type=template&id=575462f4& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./js/nested-menus.vue?vue&type=template&id=575462f4&");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_template_id_575462f4___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_nested_menus_vue_vue_type_template_id_575462f4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/***/ }), /***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./js/basic-usage.vue?vue&type=script&lang=js&": /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./js/basic-usage.vue?vue&type=script&lang=js&":
@@ -612,92 +540,6 @@ __webpack_require__.r(__webpack_exports__);
/***/ }), /***/ }),
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./js/nested-menus.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./js/nested-menus.vue?vue&type=script&lang=js& ***!
\**************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-context */ "./node_modules/vue-context/src/js/index.js");
/* harmony import */ var vue_context_src_sass_vue_context_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-context/src/sass/vue-context.scss */ "./node_modules/vue-context/src/sass/vue-context.scss");
/* harmony import */ var vue_context_src_sass_vue_context_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_context_src_sass_vue_context_scss__WEBPACK_IMPORTED_MODULE_1__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ __webpack_exports__["default"] = ({
components: {
VueContext: vue_context__WEBPACK_IMPORTED_MODULE_0__["default"]
},
data: function data() {
return {
items: ['Cras justo odio', 'Dapibus ac facilisis in', 'Morbi leo risus', 'Porta ac consectetur ac', 'Vestibulum at eros']
};
},
methods: {
alertText: function alertText(text) {
alert("You clicked: ".concat(text));
}
}
});
/***/ }),
/***/ "./node_modules/css-loader/index.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-context/src/sass/vue-context.scss": /***/ "./node_modules/css-loader/index.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/vue-context/src/sass/vue-context.scss":
/*!***********************************************************************************************************************************************************************************!*\ /*!***********************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader!./node_modules/postcss-loader/src??ref--6-2!./node_modules/sass-loader/dist/cjs.js??ref--6-3!./node_modules/vue-context/src/sass/vue-context.scss ***! !*** ./node_modules/css-loader!./node_modules/postcss-loader/src??ref--6-2!./node_modules/sass-loader/dist/cjs.js??ref--6-3!./node_modules/vue-context/src/sass/vue-context.scss ***!
@@ -2908,204 +2750,6 @@ render._withStripped = true
/***/ }),
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./js/nested-menus.vue?vue&type=template&id=575462f4&":
/*!******************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./js/nested-menus.vue?vue&type=template&id=575462f4& ***!
\******************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
[
_c(
"div",
{ staticClass: "bg-white shadow overflow-hidden sm:rounded-md" },
[
_c("ul", [
_c(
"li",
_vm._l(_vm.items, function(item, index) {
return _c(
"a",
{
key: index,
staticClass:
"block hover:bg-gray-50 focus:outline-none focus:bg-gray-50 transition duration-150 ease-in-out",
class: { "border-t border-gray-200": index > 0 },
attrs: { href: "#" },
on: {
contextmenu: function($event) {
$event.preventDefault()
return _vm.$refs.menu.open($event)
}
}
},
[
_c(
"div",
{
staticClass: "flex items-center px-4 py-4 sm:px-6",
class: {
"pt-0": index === 0,
"pb-0": index + 1 === _vm.items.length
}
},
[
_c(
"div",
{
staticClass:
"min-w-0 flex-1 md:grid md:grid-cols-2 md:gap-4"
},
[
_c("div", {
staticClass:
"text-sm leading-5 font-medium text-gray-600 truncate",
domProps: { textContent: _vm._s(item) }
})
]
)
]
)
]
)
}),
0
)
])
]
),
_vm._v(" "),
_c("vue-context", { ref: "menu" }, [
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Not nested")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "v-context__sub" }, [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Has sub menu")]
),
_vm._v(" "),
_c("ul", { staticClass: "v-context" }, [
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Nested child")]
)
]),
_vm._v(" "),
_c("li", { staticClass: "v-context__sub" }, [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Another nested menu")]
),
_vm._v(" "),
_c("ul", { staticClass: "v-context" }, [
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("Another level deep")]
)
]),
_vm._v(" "),
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.innerText)
}
}
},
[_vm._v("There is no limit")]
)
])
])
])
])
]),
_vm._v(" "),
_c("li", [
_c(
"a",
{
on: {
click: function($event) {
$event.preventDefault()
return _vm.alertText($event.target.text)
}
}
},
[_vm._v("Also not nested")]
)
])
])
],
1
)
}
var staticRenderFns = []
render._withStripped = true
/***/ }), /***/ }),
/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js": /***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js":