@v-c/collapse 0.0.4 → 1.0.0

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.
@@ -1,126 +1,159 @@
1
- import { defineComponent as f, ref as y, watch as p, createVNode as s } from "vue";
2
- import { classNames as a } from "@v-c/util";
3
- const v = /* @__PURE__ */ f({
4
- props: {
5
- id: {
6
- type: String,
7
- required: !1
8
- },
9
- header: {
10
- type: null,
11
- required: !1
12
- },
13
- prefixCls: {
14
- type: String,
15
- required: !1
16
- },
17
- headerClass: {
18
- type: String,
19
- required: !1
20
- },
21
- showArrow: {
22
- type: Boolean,
23
- required: !1
24
- },
25
- class: {
26
- type: String,
27
- required: !1
28
- },
29
- classNames: {
30
- type: Object,
31
- required: !1
32
- },
33
- style: {
34
- type: Object,
35
- required: !1
36
- },
37
- styles: {
38
- type: Object,
39
- required: !1
40
- },
41
- isActive: {
42
- type: Boolean,
43
- required: !1
44
- },
45
- openMotion: {
46
- type: null,
47
- required: !1
48
- },
49
- destroyOnHidden: {
50
- type: Boolean,
51
- required: !1
52
- },
53
- accordion: {
54
- type: Boolean,
55
- required: !1
56
- },
57
- forceRender: {
58
- type: Boolean,
59
- required: !1
60
- },
61
- extra: {
62
- type: null,
63
- required: !1
64
- },
65
- onItemClick: {
66
- type: Function,
67
- required: !1
68
- },
69
- expandIcon: {
70
- type: Function,
71
- required: !1
72
- },
73
- panelKey: {
74
- type: [String, Number],
75
- required: !1
76
- },
77
- role: {
78
- type: String,
79
- required: !1
80
- },
81
- collapsible: {
82
- type: String,
83
- required: !1
84
- },
85
- children: {
86
- type: null,
87
- required: !1
88
- }
89
- },
90
- name: "PanelContent",
91
- inheritAttrs: !1,
92
- setup(e, {
93
- slots: i
94
- }) {
95
- const t = y(e.isActive || e.forceRender);
96
- return p(() => [e.isActive, e.forceRender], () => {
97
- (e.isActive || e.forceRender) && (t.value = !0);
98
- }), () => {
99
- if (!t.value)
100
- return null;
101
- const {
102
- prefixCls: r,
103
- isActive: l,
104
- style: n,
105
- role: d,
106
- class: o,
107
- classNames: u,
108
- styles: c
109
- } = e;
110
- return s("div", {
111
- class: a(`${r}-panel`, {
112
- [`${r}-panel-active`]: l,
113
- [`${r}-panel-inactive`]: !l
114
- }, o),
115
- style: n,
116
- role: d
117
- }, [s("div", {
118
- class: a(`${r}-body`, u?.body),
119
- style: c?.body
120
- }, [i.default?.()])]);
121
- };
122
- }
1
+ import { createVNode, defineComponent, ref, watch } from "vue";
2
+ import { classNames } from "@v-c/util";
3
+ var PanelContent_default = /* @__PURE__ */ defineComponent({
4
+ props: {
5
+ id: {
6
+ type: String,
7
+ required: false,
8
+ default: void 0
9
+ },
10
+ header: {
11
+ type: [
12
+ Object,
13
+ Function,
14
+ String,
15
+ Number,
16
+ null,
17
+ Boolean,
18
+ Array
19
+ ],
20
+ required: false,
21
+ default: void 0
22
+ },
23
+ prefixCls: {
24
+ type: String,
25
+ required: false,
26
+ default: void 0
27
+ },
28
+ headerClass: {
29
+ type: String,
30
+ required: false,
31
+ default: void 0
32
+ },
33
+ showArrow: {
34
+ type: Boolean,
35
+ required: false,
36
+ default: void 0
37
+ },
38
+ class: {
39
+ type: String,
40
+ required: false,
41
+ default: void 0
42
+ },
43
+ classNames: {
44
+ type: Object,
45
+ required: false,
46
+ default: void 0
47
+ },
48
+ style: {
49
+ type: Object,
50
+ required: false,
51
+ default: void 0
52
+ },
53
+ styles: {
54
+ type: Object,
55
+ required: false,
56
+ default: void 0
57
+ },
58
+ isActive: {
59
+ type: Boolean,
60
+ required: false,
61
+ default: void 0
62
+ },
63
+ openMotion: {
64
+ type: Object,
65
+ required: false,
66
+ default: void 0
67
+ },
68
+ destroyOnHidden: {
69
+ type: Boolean,
70
+ required: false,
71
+ default: void 0
72
+ },
73
+ accordion: {
74
+ type: Boolean,
75
+ required: false,
76
+ default: void 0
77
+ },
78
+ forceRender: {
79
+ type: Boolean,
80
+ required: false,
81
+ default: void 0
82
+ },
83
+ extra: {
84
+ type: [
85
+ Object,
86
+ Function,
87
+ String,
88
+ Number,
89
+ null,
90
+ Boolean,
91
+ Array
92
+ ],
93
+ required: false,
94
+ default: void 0
95
+ },
96
+ onItemClick: {
97
+ type: Function,
98
+ required: false,
99
+ default: void 0
100
+ },
101
+ expandIcon: {
102
+ type: Function,
103
+ required: false,
104
+ default: void 0
105
+ },
106
+ panelKey: {
107
+ type: [String, Number],
108
+ required: false,
109
+ default: void 0
110
+ },
111
+ role: {
112
+ type: String,
113
+ required: false,
114
+ default: void 0
115
+ },
116
+ collapsible: {
117
+ type: String,
118
+ required: false,
119
+ default: void 0
120
+ },
121
+ children: {
122
+ type: [
123
+ Object,
124
+ Function,
125
+ String,
126
+ Number,
127
+ null,
128
+ Boolean,
129
+ Array
130
+ ],
131
+ required: false,
132
+ default: void 0
133
+ }
134
+ },
135
+ name: "PanelContent",
136
+ inheritAttrs: false,
137
+ setup(props, { slots }) {
138
+ const rendered = ref(props.isActive || props.forceRender);
139
+ watch(() => [props.isActive, props.forceRender], () => {
140
+ if (props.isActive || props.forceRender) rendered.value = true;
141
+ });
142
+ return () => {
143
+ if (!rendered.value) return null;
144
+ const { prefixCls, isActive, style, role, class: className, classNames: customizeClassNames, styles } = props;
145
+ return createVNode("div", {
146
+ "class": classNames(`${prefixCls}-panel`, {
147
+ [`${prefixCls}-panel-active`]: isActive,
148
+ [`${prefixCls}-panel-inactive`]: !isActive
149
+ }, className),
150
+ "style": style,
151
+ "role": role
152
+ }, [createVNode("div", {
153
+ "class": classNames(`${prefixCls}-body`, customizeClassNames?.body),
154
+ "style": styles?.body
155
+ }, [slots.default?.()])]);
156
+ };
157
+ }
123
158
  });
124
- export {
125
- v as default
126
- };
159
+ export { PanelContent_default as default };
@@ -0,0 +1,21 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
9
+ key = keys[i];
10
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
11
+ get: ((k) => from[k]).bind(null, key),
12
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
13
+ });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
18
+ value: mod,
19
+ enumerable: true
20
+ }) : target, mod));
21
+ exports.__toESM = __toESM;
@@ -1 +1,81 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("vue"),q=require("@v-c/util/dist/Children/toArray"),w=require("@v-c/util/dist/props-util"),K=require("@v-c/util/dist/vnode"),P=require("../Panel.cjs");function h(e,c){const{prefixCls:t,accordion:o,collapsible:l,onItemClick:u,activeKey:d,openMotion:p,expandIcon:m,destroyOnHidden:f,classNames:C,styles:b}=c;return e.map((k,r)=>{const{label:I,key:O,collapsible:g,onItemClick:H,destroyOnHidden:N,...a}=k,n=String(O??r),y=g??l,i=N??f,s=A=>{y!=="disabled"&&(u?.(A),H?.(A))};let v=!1;return o?v=d?.[0]===n:v=d.includes(n),x.createVNode(P.default,x.mergeProps(a,{classNames:C,styles:b,prefixCls:t,key:n,panelKey:n,isActive:v,accordion:o,openMotion:p,expandIcon:m,header:I,destroyOnHidden:i,collapsible:y,onItemClick:s}),null)})}function E(e,c,t){if(w.isEmptyElement(e)||!e)return null;if(typeof e=="boolean"||typeof e=="number"||typeof e=="string")return e;const{prefixCls:o,accordion:l,collapsible:u,onItemClick:d,activeKey:p,openMotion:m,expandIcon:f,classNames:C,styles:b,destroyOnHidden:k}=t,r=e.key||String(c),{header:I,headerClass:O,collapsible:g,onItemClick:H,destroyOnHidden:N}=e.props||{};let a=!1;l?a=p[0]===r:a=p.includes(r);const n=g??u,y=s=>{n!=="disabled"&&(d?.(s),H?.(s))},i={key:r,panelKey:r,header:I,headerClass:O,classNames:C,styles:b,isActive:a,prefixCls:o,destroyOnHidden:N??k,openMotion:m,accordion:l,children:e.children?.default?.(),onItemClick:y,expandIcon:f,collapsible:n};return Object.keys(i).forEach(s=>{typeof i[s]>"u"&&delete i[s]}),K.cloneElement(e,i)}function M(e,c,t){return Array.isArray(e)?h(e,t):q.toArray(c?.()).map((o,l)=>E(o,l,t))}exports.useItems=M;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
3
+ const require_Panel = require("../Panel.cjs");
4
+ let vue = require("vue");
5
+ let _v_c_util_dist_Children_toArray = require("@v-c/util/dist/Children/toArray");
6
+ let _v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
7
+ let _v_c_util_dist_vnode = require("@v-c/util/dist/vnode");
8
+ function convertItemsToNodes(items, props) {
9
+ const { prefixCls, accordion, collapsible, onItemClick, activeKey, openMotion, expandIcon, destroyOnHidden, classNames: collapseClassNames, styles } = props;
10
+ return items.map((item, index) => {
11
+ const { label, key: rawKey, collapsible: rawCollapsible, onItemClick: rawOnItemClick, destroyOnHidden: rawDestroyOnHidden, ...restProps } = item;
12
+ const key = String(rawKey ?? index);
13
+ const mergeCollapsible = rawCollapsible ?? collapsible;
14
+ const mergedDestroyOnHidden = rawDestroyOnHidden ?? destroyOnHidden;
15
+ const handleItemClick = (value) => {
16
+ if (mergeCollapsible === "disabled") return;
17
+ onItemClick?.(value);
18
+ rawOnItemClick?.(value);
19
+ };
20
+ let isActive = false;
21
+ if (accordion) isActive = activeKey?.[0] === key;
22
+ else isActive = activeKey.includes(key);
23
+ return (0, vue.createVNode)(require_Panel.default, (0, vue.mergeProps)(restProps, {
24
+ "classNames": collapseClassNames,
25
+ "styles": styles,
26
+ "prefixCls": prefixCls,
27
+ "key": key,
28
+ "panelKey": key,
29
+ "isActive": isActive,
30
+ "accordion": accordion,
31
+ "openMotion": openMotion,
32
+ "expandIcon": expandIcon,
33
+ "header": label,
34
+ "destroyOnHidden": mergedDestroyOnHidden,
35
+ "collapsible": mergeCollapsible,
36
+ "onItemClick": handleItemClick
37
+ }), null);
38
+ });
39
+ }
40
+ function getNewChild(child, index, props) {
41
+ if ((0, _v_c_util_dist_props_util.isEmptyElement)(child) || !child) return null;
42
+ if (typeof child === "boolean" || typeof child === "number" || typeof child === "string") return child;
43
+ const { prefixCls, accordion, collapsible, onItemClick, activeKey, openMotion, expandIcon, classNames: collapseClassNames, styles, destroyOnHidden } = props;
44
+ const key = child.key || String(index);
45
+ const { header, headerClass, collapsible: childCollapsible, onItemClick: childOnItemClick, destroyOnHidden: childDestroyOnHidden } = child.props || {};
46
+ let isActive = false;
47
+ if (accordion) isActive = activeKey[0] === key;
48
+ else isActive = activeKey.includes(key);
49
+ const mergeCollapsible = childCollapsible ?? collapsible;
50
+ const handleItemClick = (value) => {
51
+ if (mergeCollapsible === "disabled") return;
52
+ onItemClick?.(value);
53
+ childOnItemClick?.(value);
54
+ };
55
+ const childProps = {
56
+ key,
57
+ panelKey: key,
58
+ header,
59
+ headerClass,
60
+ classNames: collapseClassNames,
61
+ styles,
62
+ isActive,
63
+ prefixCls,
64
+ destroyOnHidden: childDestroyOnHidden ?? destroyOnHidden,
65
+ openMotion,
66
+ accordion,
67
+ children: child.children?.default?.(),
68
+ onItemClick: handleItemClick,
69
+ expandIcon,
70
+ collapsible: mergeCollapsible
71
+ };
72
+ Object.keys(childProps).forEach((propName) => {
73
+ if (typeof childProps[propName] === "undefined") delete childProps[propName];
74
+ });
75
+ return (0, _v_c_util_dist_vnode.cloneElement)(child, childProps);
76
+ }
77
+ function useItems(items, children, props) {
78
+ if (Array.isArray(items)) return convertItemsToNodes(items, props);
79
+ return (0, _v_c_util_dist_Children_toArray.toArray)(children?.()).map((target, index) => getNewChild(target, index, props));
80
+ }
81
+ exports.useItems = useItems;
@@ -1,100 +1,79 @@
1
- import { createVNode as w, mergeProps as K } from "vue";
2
- import { toArray as h } from "@v-c/util/dist/Children/toArray";
3
- import { isEmptyElement as v } from "@v-c/util/dist/props-util";
4
- import { cloneElement as E } from "@v-c/util/dist/vnode";
5
- import P from "../Panel.js";
6
- function D(e, a) {
7
- const {
8
- prefixCls: s,
9
- accordion: l,
10
- collapsible: t,
11
- onItemClick: y,
12
- activeKey: d,
13
- openMotion: p,
14
- expandIcon: f,
15
- destroyOnHidden: C,
16
- classNames: u,
17
- styles: b
18
- } = a;
19
- return e.map((k, r) => {
20
- const {
21
- label: I,
22
- key: O,
23
- collapsible: H,
24
- onItemClick: g,
25
- destroyOnHidden: N,
26
- ...c
27
- } = k, n = String(O ?? r), m = H ?? t, i = N ?? C, o = (A) => {
28
- m !== "disabled" && (y?.(A), g?.(A));
29
- };
30
- let x = !1;
31
- return l ? x = d?.[0] === n : x = d.includes(n), w(P, K(c, {
32
- classNames: u,
33
- styles: b,
34
- prefixCls: s,
35
- key: n,
36
- panelKey: n,
37
- isActive: x,
38
- accordion: l,
39
- openMotion: p,
40
- expandIcon: f,
41
- header: I,
42
- destroyOnHidden: i,
43
- collapsible: m,
44
- onItemClick: o
45
- }), null);
46
- });
1
+ import Panel_default from "../Panel.js";
2
+ import { createVNode, mergeProps } from "vue";
3
+ import { toArray } from "@v-c/util/dist/Children/toArray";
4
+ import { isEmptyElement } from "@v-c/util/dist/props-util";
5
+ import { cloneElement } from "@v-c/util/dist/vnode";
6
+ function convertItemsToNodes(items, props) {
7
+ const { prefixCls, accordion, collapsible, onItemClick, activeKey, openMotion, expandIcon, destroyOnHidden, classNames: collapseClassNames, styles } = props;
8
+ return items.map((item, index) => {
9
+ const { label, key: rawKey, collapsible: rawCollapsible, onItemClick: rawOnItemClick, destroyOnHidden: rawDestroyOnHidden, ...restProps } = item;
10
+ const key = String(rawKey ?? index);
11
+ const mergeCollapsible = rawCollapsible ?? collapsible;
12
+ const mergedDestroyOnHidden = rawDestroyOnHidden ?? destroyOnHidden;
13
+ const handleItemClick = (value) => {
14
+ if (mergeCollapsible === "disabled") return;
15
+ onItemClick?.(value);
16
+ rawOnItemClick?.(value);
17
+ };
18
+ let isActive = false;
19
+ if (accordion) isActive = activeKey?.[0] === key;
20
+ else isActive = activeKey.includes(key);
21
+ return createVNode(Panel_default, mergeProps(restProps, {
22
+ "classNames": collapseClassNames,
23
+ "styles": styles,
24
+ "prefixCls": prefixCls,
25
+ "key": key,
26
+ "panelKey": key,
27
+ "isActive": isActive,
28
+ "accordion": accordion,
29
+ "openMotion": openMotion,
30
+ "expandIcon": expandIcon,
31
+ "header": label,
32
+ "destroyOnHidden": mergedDestroyOnHidden,
33
+ "collapsible": mergeCollapsible,
34
+ "onItemClick": handleItemClick
35
+ }), null);
36
+ });
47
37
  }
48
- function M(e, a, s) {
49
- if (v(e) || !e) return null;
50
- if (typeof e == "boolean" || typeof e == "number" || typeof e == "string")
51
- return e;
52
- const {
53
- prefixCls: l,
54
- accordion: t,
55
- collapsible: y,
56
- onItemClick: d,
57
- activeKey: p,
58
- openMotion: f,
59
- expandIcon: C,
60
- classNames: u,
61
- styles: b,
62
- destroyOnHidden: k
63
- } = s, r = e.key || String(a), {
64
- header: I,
65
- headerClass: O,
66
- collapsible: H,
67
- onItemClick: g,
68
- destroyOnHidden: N
69
- } = e.props || {};
70
- let c = !1;
71
- t ? c = p[0] === r : c = p.includes(r);
72
- const n = H ?? y, m = (o) => {
73
- n !== "disabled" && (d?.(o), g?.(o));
74
- }, i = {
75
- key: r,
76
- panelKey: r,
77
- header: I,
78
- headerClass: O,
79
- classNames: u,
80
- styles: b,
81
- isActive: c,
82
- prefixCls: l,
83
- destroyOnHidden: N ?? k,
84
- openMotion: f,
85
- accordion: t,
86
- children: e.children?.default?.(),
87
- onItemClick: m,
88
- expandIcon: C,
89
- collapsible: n
90
- };
91
- return Object.keys(i).forEach((o) => {
92
- typeof i[o] > "u" && delete i[o];
93
- }), E(e, i);
38
+ function getNewChild(child, index, props) {
39
+ if (isEmptyElement(child) || !child) return null;
40
+ if (typeof child === "boolean" || typeof child === "number" || typeof child === "string") return child;
41
+ const { prefixCls, accordion, collapsible, onItemClick, activeKey, openMotion, expandIcon, classNames: collapseClassNames, styles, destroyOnHidden } = props;
42
+ const key = child.key || String(index);
43
+ const { header, headerClass, collapsible: childCollapsible, onItemClick: childOnItemClick, destroyOnHidden: childDestroyOnHidden } = child.props || {};
44
+ let isActive = false;
45
+ if (accordion) isActive = activeKey[0] === key;
46
+ else isActive = activeKey.includes(key);
47
+ const mergeCollapsible = childCollapsible ?? collapsible;
48
+ const handleItemClick = (value) => {
49
+ if (mergeCollapsible === "disabled") return;
50
+ onItemClick?.(value);
51
+ childOnItemClick?.(value);
52
+ };
53
+ const childProps = {
54
+ key,
55
+ panelKey: key,
56
+ header,
57
+ headerClass,
58
+ classNames: collapseClassNames,
59
+ styles,
60
+ isActive,
61
+ prefixCls,
62
+ destroyOnHidden: childDestroyOnHidden ?? destroyOnHidden,
63
+ openMotion,
64
+ accordion,
65
+ children: child.children?.default?.(),
66
+ onItemClick: handleItemClick,
67
+ expandIcon,
68
+ collapsible: mergeCollapsible
69
+ };
70
+ Object.keys(childProps).forEach((propName) => {
71
+ if (typeof childProps[propName] === "undefined") delete childProps[propName];
72
+ });
73
+ return cloneElement(child, childProps);
94
74
  }
95
- function z(e, a, s) {
96
- return Array.isArray(e) ? D(e, s) : h(a?.()).map((l, t) => M(l, t, s));
75
+ function useItems(items, children, props) {
76
+ if (Array.isArray(items)) return convertItemsToNodes(items, props);
77
+ return toArray(children?.()).map((target, index) => getNewChild(target, index, props));
97
78
  }
98
- export {
99
- z as useItems
100
- };
79
+ export { useItems };
package/dist/index.cjs CHANGED
@@ -1 +1,9 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./Collapse.cjs"),l=require("./Panel.cjs");exports.default=e.default;exports.Panel=l.default;
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_Panel = require("./Panel.cjs");
6
+ const require_Collapse = require("./Collapse.cjs");
7
+ var src_default = require_Collapse.default;
8
+ exports.Panel = require_Panel.default;
9
+ exports.default = src_default;
package/dist/index.js CHANGED
@@ -1,6 +1,4 @@
1
- import e from "./Collapse.js";
2
- import { default as r } from "./Panel.js";
3
- export {
4
- r as Panel,
5
- e as default
6
- };
1
+ import Panel_default from "./Panel.js";
2
+ import Collapse_default from "./Collapse.js";
3
+ var src_default = Collapse_default;
4
+ export { Panel_default as Panel, src_default as default };
@@ -1 +1 @@
1
- "use strict";
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
package/dist/interface.js CHANGED
@@ -1 +0,0 @@
1
-
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@v-c/collapse",
3
3
  "type": "module",
4
- "version": "0.0.4",
4
+ "version": "1.0.0",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -15,11 +15,15 @@
15
15
  "./package.json": "./package.json"
16
16
  },
17
17
  "main": "dist/index.js",
18
+ "files": [
19
+ "dist",
20
+ "package.json"
21
+ ],
18
22
  "peerDependencies": {
19
23
  "vue": "^3.0.0"
20
24
  },
21
25
  "dependencies": {
22
- "@v-c/util": "0.0.7"
26
+ "@v-c/util": "^1.0.9"
23
27
  },
24
28
  "scripts": {
25
29
  "build": "vite build",