vxe-pc-ui 0.2.0 → 0.3.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.
- package/es/tabs/src/tabs.js +24 -5
- package/es/ui/src/core.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +33 -7
- package/lib/index.umd.min.js +1 -1
- package/lib/tabs/src/tabs.js +31 -5
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/ui/src/core.js +1 -1
- package/lib/ui/src/core.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +1 -1
- package/packages/tabs/src/tabs.ts +24 -5
- package/types/components/tab-pane.d.ts +1 -1
- package/types/components/tabs.d.ts +2 -2
package/lib/tabs/src/tabs.js
CHANGED
|
@@ -17,10 +17,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
17
17
|
destroyOnClose: Boolean,
|
|
18
18
|
type: String
|
|
19
19
|
},
|
|
20
|
-
emits: [],
|
|
20
|
+
emits: ['update:modelValue', 'click', 'change', 'load'],
|
|
21
21
|
setup(props, context) {
|
|
22
22
|
const {
|
|
23
|
-
slots
|
|
23
|
+
slots,
|
|
24
|
+
emit
|
|
24
25
|
} = context;
|
|
25
26
|
const xID = _xeUtils.default.uniqueId();
|
|
26
27
|
const refElem = (0, _vue.ref)();
|
|
@@ -96,15 +97,37 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
96
97
|
};
|
|
97
98
|
const clickEvent = (evnt, item) => {
|
|
98
99
|
const {
|
|
99
|
-
initNames
|
|
100
|
+
initNames,
|
|
101
|
+
activeName
|
|
100
102
|
} = reactData;
|
|
101
103
|
const {
|
|
102
104
|
name
|
|
103
105
|
} = item;
|
|
106
|
+
let isInit = false;
|
|
107
|
+
const value = name;
|
|
104
108
|
if (!initNames.includes(name)) {
|
|
109
|
+
isInit = true;
|
|
105
110
|
initNames.push(name);
|
|
106
111
|
}
|
|
107
112
|
reactData.activeName = name;
|
|
113
|
+
emit('update:modelValue', value);
|
|
114
|
+
if (name !== activeName) {
|
|
115
|
+
emit('change', {
|
|
116
|
+
value,
|
|
117
|
+
name,
|
|
118
|
+
$event: evnt
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
emit('click', {
|
|
122
|
+
name,
|
|
123
|
+
$event: evnt
|
|
124
|
+
});
|
|
125
|
+
if (isInit) {
|
|
126
|
+
emit('load', {
|
|
127
|
+
name,
|
|
128
|
+
$event: evnt
|
|
129
|
+
});
|
|
130
|
+
}
|
|
108
131
|
updateLineStyle();
|
|
109
132
|
};
|
|
110
133
|
const renderTabHeader = list => {
|
|
@@ -129,6 +152,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
129
152
|
} = item;
|
|
130
153
|
const tabSlot = slots ? slots.tab : null;
|
|
131
154
|
return (0, _vue.h)('div', {
|
|
155
|
+
key: name,
|
|
132
156
|
class: ['vxe-tab-header--item', {
|
|
133
157
|
'is--active': activeName === name
|
|
134
158
|
}],
|
|
@@ -162,6 +186,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
162
186
|
return (0, _vue.h)(_tabPane.default, item, {
|
|
163
187
|
default() {
|
|
164
188
|
return name && initNames.includes(name) ? (0, _vue.h)('div', {
|
|
189
|
+
key: name,
|
|
165
190
|
class: ['vxe-tab-pane--item', {
|
|
166
191
|
'is--visible': activeName === name
|
|
167
192
|
}]
|
|
@@ -175,7 +200,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
175
200
|
} = props;
|
|
176
201
|
const activeOptionTab = computeActiveOptionTab.value;
|
|
177
202
|
if (destroyOnClose) {
|
|
178
|
-
return activeOptionTab ? renderOptionPane(activeOptionTab) : (0, _vue.createCommentVNode)();
|
|
203
|
+
return activeOptionTab ? [renderOptionPane(activeOptionTab)] : (0, _vue.createCommentVNode)();
|
|
179
204
|
}
|
|
180
205
|
return options.map(renderOptionPane);
|
|
181
206
|
};
|
|
@@ -190,6 +215,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
190
215
|
} = item;
|
|
191
216
|
const defaultSlot = slots ? slots.default : null;
|
|
192
217
|
return name && initNames.includes(name) ? (0, _vue.h)('div', {
|
|
218
|
+
key: name,
|
|
193
219
|
class: ['vxe-tab-pane--item', {
|
|
194
220
|
'is--visible': activeName === name
|
|
195
221
|
}]
|
|
@@ -201,7 +227,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
201
227
|
} = props;
|
|
202
228
|
const activeDefaultTab = computeActiveDefaultTab.value;
|
|
203
229
|
if (destroyOnClose) {
|
|
204
|
-
return activeDefaultTab ? renderDefaultPane(activeDefaultTab) : (0, _vue.createCommentVNode)();
|
|
230
|
+
return activeDefaultTab ? [renderDefaultPane(activeDefaultTab)] : (0, _vue.createCommentVNode)();
|
|
205
231
|
}
|
|
206
232
|
return staticTabs.map(renderDefaultPane);
|
|
207
233
|
};
|
package/lib/tabs/src/tabs.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_tabPane=_interopRequireDefault(require("./tab-pane")),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTabs",props:{modelValue:[String,Number,Boolean],options:Array,destroyOnClose:Boolean,type:String},emits:[],setup(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_tabPane=_interopRequireDefault(require("./tab-pane")),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTabs",props:{modelValue:[String,Number,Boolean],options:Array,destroyOnClose:Boolean,type:String},emits:["update:modelValue","click","change","load"],setup(l,e){const{slots:i,emit:s}=e;var t=_xeUtils.default.uniqueId();const u=(0,_vue.ref)(),r=(0,_vue.ref)(),v=(0,_vue.reactive)({staticTabs:[],activeName:l.modelValue,initNames:l.modelValue?[l.modelValue]:[],lintLeft:0,lintWidth:0}),a={refElem:u},o=(0,_vue.computed)(()=>{var e=l["options"];const t=v["activeName"];return e?e.find(e=>e.name===t):null}),d=(0,_vue.computed)(()=>{const{staticTabs:e,activeName:t}=v;return e.find(e=>e.name===t)}),n={};t={xID:t,props:l,context:e,reactData:v,getRefMaps:()=>a,getComputeMaps:()=>n};const c=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=i[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],m=()=>{(0,_vue.nextTick)(()=>{var{type:e,options:t}=l;const{staticTabs:a,activeName:n}=v;var i=r.value;i&&!e&&-1<(e=_xeUtils.default.findIndexOf(a.length?a:t,e=>e.name===n))&&(i=(t=i.children[e]).clientWidth,e=Math.max(4,Math.floor(.6*i)),v.lintLeft=t.offsetLeft+Math.floor((i-e)/2),v.lintWidth=e)})},_=(e,t)=>{var{initNames:a,activeName:n}=v,t=t["name"];let i=!1;var l=t;a.includes(t)||(i=!0,a.push(t)),v.activeName=t,s("update:modelValue",l),t!==n&&s("change",{value:l,name:t,$event:e}),s("click",{name:t,$event:e}),i&&s("load",{name:t,$event:e}),m()},p=e=>{const{initNames:t,activeName:a}=v,{name:n,slots:i}=e,l=i?i.default:null;return(0,_vue.h)(_tabPane.default,e,{default(){return n&&t.includes(n)?(0,_vue.h)("div",{key:n,class:["vxe-tab-pane--item",{"is--visible":a===n}]},c(l,{})):(0,_vue.createCommentVNode)()}})},f=e=>{var{initNames:t,activeName:a}=v,{name:e,slots:n}=e,n=n?n.default:null;return e&&t.includes(e)?(0,_vue.h)("div",{key:e,class:["vxe-tab-pane--item",{"is--visible":a===e}]},c(n,{})):(0,_vue.createCommentVNode)()};return(0,_vue.watch)(()=>l.modelValue,e=>{v.activeName=e,m()}),(0,_vue.onMounted)(()=>{m()}),t.renderVN=()=>{var{type:e,options:t}=l,a=v["staticTabs"],n=i.default;return(0,_vue.h)("div",{ref:u,class:["vxe-tabs","vxe-tabs--"+(e||"default")]},[(0,_vue.h)("div",{class:"vxe-tabs-slots"},n?n({}):[]),(e=>{var t=l["type"];const{activeName:i,lintLeft:a,lintWidth:n}=v;return(0,_vue.h)("div",{class:"vxe-tabs-header"},[(0,_vue.h)("div",{ref:r,class:"vxe-tabs-header--wrapper"},e.map(t=>{var{title:e,name:a,slots:n}=t,n=n?n.tab:null;return(0,_vue.h)("div",{key:a,class:["vxe-tab-header--item",{"is--active":i===a}],onClick(e){_(e,t)}},[(0,_vue.h)("div",{class:"vxe-tab-header--item-name"},n?c(n,{name:a,title:e}):""+e)])})),t?null:(0,_vue.h)("span",{class:"vxe-tabs-header--active-line",style:{left:a+"px",width:n+"px"}})])})(n?a:t||[]),(0,_vue.h)("div",{class:"vxe-tabs-pane"},n?(e=a,n=l.destroyOnClose,a=d.value,n?a?[f(a)]:(0,_vue.createCommentVNode)():e.map(f)):(n=t||[],a=l.destroyOnClose,e=o.value,a?e?[p(e)]:(0,_vue.createCommentVNode)():n.map(p)))])},(0,_vue.provide)("$xeTabs",t),t},render(){return this.renderVN()}});
|
package/lib/ui/src/core.js
CHANGED
|
@@ -84,7 +84,7 @@ function setIcon(options) {
|
|
|
84
84
|
function getIcon(key) {
|
|
85
85
|
return arguments.length ? _xeUtils.default.get(_iconStore.default, key) : _iconStore.default;
|
|
86
86
|
}
|
|
87
|
-
const version = exports.version = "0.
|
|
87
|
+
const version = exports.version = "0.3.0";
|
|
88
88
|
const VxeCore = {
|
|
89
89
|
version,
|
|
90
90
|
setConfig,
|
package/lib/ui/src/core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={setConfig:!0,getConfig:!0,setIcon:!0,getIcon:!0,version:!0},_xeUtils=(exports.default=void 0,exports.getConfig=getConfig,exports.getIcon=getIcon,exports.setConfig=setConfig,exports.setIcon=setIcon,exports.version=void 0,_interopRequireDefault(require("xe-utils"))),_domZindex=_interopRequireDefault(require("dom-zindex")),_globalStore=_interopRequireDefault(require("./globalStore")),_iconStore=_interopRequireDefault(require("./iconStore")),_theme=_interopRequireDefault(require("./theme")),_i18n=require("./i18n"),_renderer=(Object.keys(_i18n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_i18n[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _i18n[e]}})}),require("./renderer")),_validators=(Object.keys(_renderer).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_renderer[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _renderer[e]}})}),require("./validators"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function setConfig(e){return e&&(e.theme&&(0,_theme.default)(e),e.zIndex)&&_domZindex.default.setCurrent(e.zIndex),e?_xeUtils.default.merge(_globalStore.default,e):_globalStore.default}function getConfig(e,t){return arguments.length?_xeUtils.default.get(_globalStore.default,e,t):_globalStore.default}function setIcon(e){return e?Object.assign(_iconStore.default,e):_iconStore.default}function getIcon(e){return arguments.length?_xeUtils.default.get(_iconStore.default,e):_iconStore.default}Object.keys(_validators).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_validators[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _validators[e]}})});const version=exports.version="0.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={setConfig:!0,getConfig:!0,setIcon:!0,getIcon:!0,version:!0},_xeUtils=(exports.default=void 0,exports.getConfig=getConfig,exports.getIcon=getIcon,exports.setConfig=setConfig,exports.setIcon=setIcon,exports.version=void 0,_interopRequireDefault(require("xe-utils"))),_domZindex=_interopRequireDefault(require("dom-zindex")),_globalStore=_interopRequireDefault(require("./globalStore")),_iconStore=_interopRequireDefault(require("./iconStore")),_theme=_interopRequireDefault(require("./theme")),_i18n=require("./i18n"),_renderer=(Object.keys(_i18n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_i18n[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _i18n[e]}})}),require("./renderer")),_validators=(Object.keys(_renderer).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_renderer[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _renderer[e]}})}),require("./validators"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function setConfig(e){return e&&(e.theme&&(0,_theme.default)(e),e.zIndex)&&_domZindex.default.setCurrent(e.zIndex),e?_xeUtils.default.merge(_globalStore.default,e):_globalStore.default}function getConfig(e,t){return arguments.length?_xeUtils.default.get(_globalStore.default,e,t):_globalStore.default}function setIcon(e){return e?Object.assign(_iconStore.default,e):_iconStore.default}function getIcon(e){return arguments.length?_xeUtils.default.get(_iconStore.default,e):_iconStore.default}Object.keys(_validators).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_validators[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _validators[e]}})});const version=exports.version="0.3.0",VxeCore={version:version,setConfig:setConfig,getConfig:getConfig,setIcon:setIcon,getIcon:getIcon,getI18n:_i18n.getI18n,renderer:_renderer.renderer,validators:_validators.validators,modal:null};(0,_theme.default)();var _default=exports.default=VxeCore;
|
package/lib/ui/src/log.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.getLog = getLog;
|
|
|
8
8
|
exports.warnLog = void 0;
|
|
9
9
|
var _i18n = require("./i18n");
|
|
10
10
|
function getLog(message, params) {
|
|
11
|
-
return `[vxe-table v${"0.
|
|
11
|
+
return `[vxe-table v${"0.3.0"}] ${(0, _i18n.getI18n)(message, params)}`;
|
|
12
12
|
}
|
|
13
13
|
function outLog(type) {
|
|
14
14
|
return function (message, params) {
|
package/lib/ui/src/log.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.errLog=void 0,exports.getLog=getLog,exports.warnLog=void 0;var _i18n=require("./i18n");function getLog(o,e){return"[vxe-table v0.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.errLog=void 0,exports.getLog=getLog,exports.warnLog=void 0;var _i18n=require("./i18n");function getLog(o,e){return"[vxe-table v0.3.0] "+(0,_i18n.getI18n)(o,e)}function outLog(r){return function(o,e){o=getLog(o,e);return console[r](o),o}}const warnLog=exports.warnLog=outLog("warn"),errLog=exports.errLog=outLog("error");
|
package/package.json
CHANGED
|
@@ -13,9 +13,14 @@ export default defineComponent({
|
|
|
13
13
|
destroyOnClose: Boolean as PropType<VxeTabsPropTypes.DestroyOnClose>,
|
|
14
14
|
type: String as PropType<VxeTabsPropTypes.Type>
|
|
15
15
|
},
|
|
16
|
-
emits: [
|
|
16
|
+
emits: [
|
|
17
|
+
'update:modelValue',
|
|
18
|
+
'click',
|
|
19
|
+
'change',
|
|
20
|
+
'load'
|
|
21
|
+
],
|
|
17
22
|
setup (props, context) {
|
|
18
|
-
const { slots } = context
|
|
23
|
+
const { slots, emit } = context
|
|
19
24
|
|
|
20
25
|
const xID = XEUtils.uniqueId()
|
|
21
26
|
|
|
@@ -89,12 +94,23 @@ export default defineComponent({
|
|
|
89
94
|
}
|
|
90
95
|
|
|
91
96
|
const clickEvent = (evnt: KeyboardEvent, item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) => {
|
|
92
|
-
const { initNames } = reactData
|
|
97
|
+
const { initNames, activeName } = reactData
|
|
93
98
|
const { name } = item
|
|
99
|
+
let isInit = false
|
|
100
|
+
const value = name
|
|
94
101
|
if (!initNames.includes(name)) {
|
|
102
|
+
isInit = true
|
|
95
103
|
initNames.push(name)
|
|
96
104
|
}
|
|
97
105
|
reactData.activeName = name
|
|
106
|
+
emit('update:modelValue', value)
|
|
107
|
+
if (name !== activeName) {
|
|
108
|
+
emit('change', { value, name, $event: evnt })
|
|
109
|
+
}
|
|
110
|
+
emit('click', { name, $event: evnt })
|
|
111
|
+
if (isInit) {
|
|
112
|
+
emit('load', { name, $event: evnt })
|
|
113
|
+
}
|
|
98
114
|
updateLineStyle()
|
|
99
115
|
}
|
|
100
116
|
|
|
@@ -111,6 +127,7 @@ export default defineComponent({
|
|
|
111
127
|
const { title, name, slots } = item
|
|
112
128
|
const tabSlot = slots ? slots.tab : null
|
|
113
129
|
return h('div', {
|
|
130
|
+
key: name,
|
|
114
131
|
class: ['vxe-tab-header--item', {
|
|
115
132
|
'is--active': activeName === name
|
|
116
133
|
}],
|
|
@@ -143,6 +160,7 @@ export default defineComponent({
|
|
|
143
160
|
default () {
|
|
144
161
|
return name && initNames.includes(name)
|
|
145
162
|
? h('div', {
|
|
163
|
+
key: name,
|
|
146
164
|
class: ['vxe-tab-pane--item', {
|
|
147
165
|
'is--visible': activeName === name
|
|
148
166
|
}]
|
|
@@ -156,7 +174,7 @@ export default defineComponent({
|
|
|
156
174
|
const { destroyOnClose } = props
|
|
157
175
|
const activeOptionTab = computeActiveOptionTab.value
|
|
158
176
|
if (destroyOnClose) {
|
|
159
|
-
return activeOptionTab ? renderOptionPane(activeOptionTab) : createCommentVNode()
|
|
177
|
+
return activeOptionTab ? [renderOptionPane(activeOptionTab)] : createCommentVNode()
|
|
160
178
|
}
|
|
161
179
|
return options.map(renderOptionPane)
|
|
162
180
|
}
|
|
@@ -167,6 +185,7 @@ export default defineComponent({
|
|
|
167
185
|
const defaultSlot = slots ? slots.default : null
|
|
168
186
|
return name && initNames.includes(name)
|
|
169
187
|
? h('div', {
|
|
188
|
+
key: name,
|
|
170
189
|
class: ['vxe-tab-pane--item', {
|
|
171
190
|
'is--visible': activeName === name
|
|
172
191
|
}]
|
|
@@ -178,7 +197,7 @@ export default defineComponent({
|
|
|
178
197
|
const { destroyOnClose } = props
|
|
179
198
|
const activeDefaultTab = computeActiveDefaultTab.value
|
|
180
199
|
if (destroyOnClose) {
|
|
181
|
-
return activeDefaultTab ? renderDefaultPane(activeDefaultTab) : createCommentVNode()
|
|
200
|
+
return activeDefaultTab ? [renderDefaultPane(activeDefaultTab)] : createCommentVNode()
|
|
182
201
|
}
|
|
183
202
|
return staticTabs.map(renderDefaultPane)
|
|
184
203
|
}
|
|
@@ -23,7 +23,7 @@ export interface VxeTabPanePrivateRef extends TabPanePrivateRef { }
|
|
|
23
23
|
|
|
24
24
|
export namespace VxeTabPanePropTypes {
|
|
25
25
|
export type Title = string | number
|
|
26
|
-
export type Name = string | number
|
|
26
|
+
export type Name = string | number
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export type VxeTabPaneProps = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RenderFunction, SetupContext, Ref, ComponentPublicInstance } from 'vue'
|
|
2
2
|
import { defineVxeComponent, VxeComponentBase, VxeComponentEvent } from '../tool'
|
|
3
|
-
import { VxeTabPaneProps, VxeTabPaneDefines } from './tab-pane'
|
|
3
|
+
import { VxeTabPaneProps, VxeTabPaneDefines, VxeTabPanePropTypes } from './tab-pane'
|
|
4
4
|
|
|
5
5
|
/* eslint-disable no-use-before-define,@typescript-eslint/ban-types */
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@ export interface TabsPrivateRef {
|
|
|
23
23
|
export interface VxeTabsPrivateRef extends TabsPrivateRef { }
|
|
24
24
|
|
|
25
25
|
export namespace VxeTabsPropTypes {
|
|
26
|
-
export type ModelValue = undefined | null |
|
|
26
|
+
export type ModelValue = undefined | null | VxeTabPanePropTypes.Name
|
|
27
27
|
export type Options = VxeTabPaneProps[]
|
|
28
28
|
export type DestroyOnClose = boolean
|
|
29
29
|
export type Type = null | '' | 'default' | 'card' | 'border-card'
|