@vue-interface/dropdown-menu 2.0.0-beta.0 → 2.0.0-beta.2
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/dropdown-menu.es.js +42 -39
- package/dist/dropdown-menu.umd.js +1 -1
- package/package.json +10 -10
- package/src/DropdownMenuItems.vue +20 -7
package/dist/dropdown-menu.es.js
CHANGED
|
@@ -1,68 +1,71 @@
|
|
|
1
|
-
import { h as
|
|
2
|
-
function
|
|
3
|
-
|
|
1
|
+
import { h as c, isVNode as d, resolveComponent as u, openBlock as m, createElementBlock as f, normalizeClass as w, createVNode as h, withCtx as _, renderSlot as g } from "vue";
|
|
2
|
+
function s(e, t) {
|
|
3
|
+
e.props.class = `${e.props.class || ""} ${t}`.trim();
|
|
4
4
|
}
|
|
5
|
-
function
|
|
6
|
-
return (
|
|
7
|
-
typeof
|
|
5
|
+
function i(e, t) {
|
|
6
|
+
return (o) => {
|
|
7
|
+
typeof t == "function" && t(o), o.cancelBubble || e(o);
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
|
-
function
|
|
11
|
-
return
|
|
10
|
+
function p(e, t) {
|
|
11
|
+
return e.attrs.on[t] || e.type && e.type.listeners && e.componentOptions.listeners[t];
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
13
|
+
function b(e) {
|
|
14
|
+
for (const t of e[0].children) {
|
|
15
|
+
if (!d(t))
|
|
16
|
+
continue;
|
|
16
17
|
t.props = Object.assign({ class: void 0 }, t.props), t.attrs = Object.assign({}, t.attrs), t.attrs.on || (t.attrs.on = {});
|
|
17
|
-
const
|
|
18
|
-
t.attrs.on.click =
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
}
|
|
24
|
-
}, y = g, $ = (r, s) => {
|
|
25
|
-
const e = r.__vccOpts || r;
|
|
26
|
-
for (const [t, n] of s)
|
|
27
|
-
e[t] = n;
|
|
18
|
+
const o = t.props.class && t.props.class.match(/dropdown-item/), r = t.props.class && t.props.class.match(/dropdown-divider/);
|
|
19
|
+
t.attrs.on.click = i((n) => {
|
|
20
|
+
context.parent.$emit("click-item", n, t);
|
|
21
|
+
}, p(t, "click")), t.attrs.on.blur = i((n) => {
|
|
22
|
+
context.parent.$emit("blur-item", n, t);
|
|
23
|
+
}, p(t, "blur")), typeof t.type == "string" && t.type.match(/^h\d$/) ? s(t, "dropdown-header") : t.type === "hr" && !r ? (t.type = "div", s(t, "dropdown-divider")) : !o && !r && s(t, "dropdown-item");
|
|
24
|
+
}
|
|
28
25
|
return e;
|
|
29
|
-
}
|
|
26
|
+
}
|
|
27
|
+
const y = (e, t) => c("div", {}, b(t.slots.default())), $ = y, k = (e, t) => {
|
|
28
|
+
const o = e.__vccOpts || e;
|
|
29
|
+
for (const [r, n] of t)
|
|
30
|
+
o[r] = n;
|
|
31
|
+
return o;
|
|
32
|
+
}, C = {
|
|
30
33
|
name: "DropdownMenu",
|
|
31
34
|
components: {
|
|
32
|
-
DropdownMenuItems:
|
|
35
|
+
DropdownMenuItems: $
|
|
33
36
|
},
|
|
34
37
|
props: {
|
|
35
38
|
align: {
|
|
36
39
|
type: String,
|
|
37
40
|
default: "left",
|
|
38
|
-
validate(
|
|
39
|
-
return ["left", "right"].indexOf(
|
|
41
|
+
validate(e) {
|
|
42
|
+
return ["left", "right"].indexOf(e.toLowerCase()) !== -1;
|
|
40
43
|
}
|
|
41
44
|
},
|
|
42
45
|
show: Boolean
|
|
43
46
|
}
|
|
44
|
-
},
|
|
45
|
-
function D(
|
|
46
|
-
const
|
|
47
|
-
return
|
|
47
|
+
}, v = ["aria-labelledby"];
|
|
48
|
+
function D(e, t, o, r, n, I) {
|
|
49
|
+
const l = u("dropdown-menu-items");
|
|
50
|
+
return m(), f("div", {
|
|
48
51
|
class: w(["dropdown-menu", {
|
|
49
|
-
"dropdown-menu-left":
|
|
50
|
-
"dropdown-menu-right":
|
|
51
|
-
show:
|
|
52
|
+
"dropdown-menu-left": o.align === "left",
|
|
53
|
+
"dropdown-menu-right": o.align === "right",
|
|
54
|
+
show: o.show
|
|
52
55
|
}]),
|
|
53
|
-
"aria-labelledby":
|
|
56
|
+
"aria-labelledby": e.$attrs.id
|
|
54
57
|
}, [
|
|
55
|
-
h(
|
|
58
|
+
h(l, null, {
|
|
56
59
|
default: _(() => [
|
|
57
|
-
|
|
58
|
-
onClick:
|
|
60
|
+
g(e.$slots, "default", {
|
|
61
|
+
onClick: t[0] || (t[0] = (...a) => e.onItemClick && e.onItemClick(...a))
|
|
59
62
|
})
|
|
60
63
|
]),
|
|
61
64
|
_: 3
|
|
62
65
|
})
|
|
63
|
-
], 10,
|
|
66
|
+
], 10, v);
|
|
64
67
|
}
|
|
65
|
-
const O = /* @__PURE__ */
|
|
68
|
+
const O = /* @__PURE__ */ k(C, [["render", D]]);
|
|
66
69
|
export {
|
|
67
70
|
O as DropdownMenu
|
|
68
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(s,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(s=typeof globalThis<"u"?globalThis:s||self,n(s.DropdownMenu={},s.Vue))})(this,function(s,n){"use strict";function d(t,e){t.props.class=`${t.props.class||""} ${e}`.trim()}function p(t,e){return o=>{typeof e=="function"&&e(o),o.cancelBubble||t(o)}}function l(t,e){return t.attrs.on[e]||t.type&&t.type.listeners&&t.componentOptions.listeners[e]}function c(t){for(const e of t[0].children){if(!n.isVNode(e))continue;e.props=Object.assign({class:void 0},e.props),e.attrs=Object.assign({},e.attrs),e.attrs.on||(e.attrs.on={});const o=e.props.class&&e.props.class.match(/dropdown-item/),i=e.props.class&&e.props.class.match(/dropdown-divider/);e.attrs.on.click=p(r=>{context.parent.$emit("click-item",r,e)},l(e,"click")),e.attrs.on.blur=p(r=>{context.parent.$emit("blur-item",r,e)},l(e,"blur")),typeof e.type=="string"&&e.type.match(/^h\d$/)?d(e,"dropdown-header"):e.type==="hr"&&!i?(e.type="div",d(e,"dropdown-divider")):!o&&!i&&d(e,"dropdown-item")}return t}const a=(t,e)=>n.h("div",{},c(e.slots.default())),u=(t,e)=>{const o=t.__vccOpts||t;for(const[i,r]of e)o[i]=r;return o},f={name:"DropdownMenu",components:{DropdownMenuItems:a},props:{align:{type:String,default:"left",validate(t){return["left","right"].indexOf(t.toLowerCase())!==-1}},show:Boolean}},m=["aria-labelledby"];function w(t,e,o,i,r,g){const _=n.resolveComponent("dropdown-menu-items");return n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass(["dropdown-menu",{"dropdown-menu-left":o.align==="left","dropdown-menu-right":o.align==="right",show:o.show}]),"aria-labelledby":t.$attrs.id},[n.createVNode(_,null,{default:n.withCtx(()=>[n.renderSlot(t.$slots,"default",{onClick:e[0]||(e[0]=(...y)=>t.onItemClick&&t.onItemClick(...y))})]),_:3})],10,m)}const h=u(f,[["render",w]]);s.DropdownMenu=h,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue-interface/dropdown-menu",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"description": "A Vue dropdown menu component.",
|
|
5
5
|
"files": [
|
|
6
6
|
"index.js",
|
|
@@ -47,19 +47,19 @@
|
|
|
47
47
|
"vue": "^3.0.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@rollup/plugin-babel": "^
|
|
51
|
-
"@vitejs/plugin-vue": "^3.
|
|
52
|
-
"autoprefixer": "^10.4.
|
|
50
|
+
"@rollup/plugin-babel": "^6.0.0",
|
|
51
|
+
"@vitejs/plugin-vue": "^3.1.2",
|
|
52
|
+
"autoprefixer": "^10.4.12",
|
|
53
53
|
"babel-eslint": "^10.1.0",
|
|
54
54
|
"babel-preset-vue": "^2.0.2",
|
|
55
55
|
"change-case": "^4.1.2",
|
|
56
|
-
"eslint": "^8.
|
|
57
|
-
"eslint-plugin-vue": "^9.
|
|
56
|
+
"eslint": "^8.25.0",
|
|
57
|
+
"eslint-plugin-vue": "^9.6.0",
|
|
58
58
|
"pascalcase": "^2.0.0",
|
|
59
|
-
"postcss": "^8.4.
|
|
59
|
+
"postcss": "^8.4.18",
|
|
60
60
|
"tailwindcss": "^3.1.8",
|
|
61
|
-
"vite": "^3.
|
|
62
|
-
"vue": "^3.2.
|
|
63
|
-
"vue-router": "^4.1.
|
|
61
|
+
"vite": "^3.1.7",
|
|
62
|
+
"vue": "^3.2.40",
|
|
63
|
+
"vue-router": "^4.1.5"
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { h } from 'vue';
|
|
2
|
+
import { h, isVNode } from 'vue';
|
|
3
3
|
|
|
4
4
|
function appendClass(vnode, str) {
|
|
5
5
|
vnode.props.class = `${vnode.props.class || ''} ${str}`.trim();
|
|
@@ -24,11 +24,22 @@ function listener(vnode, key) {
|
|
|
24
24
|
vnode.componentOptions.listeners[key]
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
|
+
function isDropdownItem(vnode) {
|
|
28
|
+
return vnode && vnode.type && vnode.type.name === 'DropdownItem';
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// function isSymbol(vnode) {
|
|
32
|
+
// // We'll go ahead and assume that if the type is a symbol, then the vnode is fragment.
|
|
33
|
+
// // This may be a faulty assumption; if it is, it'll need to be changed.
|
|
34
|
+
// return vnode && vnode.type && (vnode.type === 'fragment' || typeof vnode.type === 'symbol');
|
|
35
|
+
// }
|
|
27
36
|
|
|
28
|
-
|
|
29
|
-
const
|
|
37
|
+
function changeMenuItems(items) {
|
|
38
|
+
for(const vnode of items[0].children) {
|
|
39
|
+
if(!isVNode(vnode)) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
30
42
|
|
|
31
|
-
children.forEach(vnode => {
|
|
32
43
|
vnode.props = Object.assign({ class: undefined }, vnode.props);
|
|
33
44
|
vnode.attrs = Object.assign({}, vnode.attrs);
|
|
34
45
|
|
|
@@ -58,10 +69,12 @@ const DropdownMenuItems = (props, context) => {
|
|
|
58
69
|
else if(!isDropdownItem && !isDropdownDivider) {
|
|
59
70
|
appendClass(vnode, 'dropdown-item');
|
|
60
71
|
}
|
|
61
|
-
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return items;
|
|
75
|
+
}
|
|
62
76
|
|
|
63
|
-
|
|
64
|
-
};
|
|
77
|
+
const DropdownMenuItems = (props, context) => h('div', {}, changeMenuItems(context.slots.default()));
|
|
65
78
|
|
|
66
79
|
export default DropdownMenuItems;
|
|
67
80
|
</script>
|