diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..115cc02
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,31 @@
+/*
+ * Eslint config file
+ * Documentation: https://eslint.org/docs/user-guide/configuring/
+ * Install the Eslint extension before using this feature.
+ */
+module.exports = {
+ env: {
+ es6: true,
+ browser: true,
+ node: true,
+ },
+ ecmaFeatures: {
+ modules: true,
+ },
+ parserOptions: {
+ ecmaVersion: 2018,
+ sourceType: 'module',
+ },
+ globals: {
+ wx: true,
+ App: true,
+ Page: true,
+ getCurrentPages: true,
+ getApp: true,
+ Component: true,
+ requirePlugin: true,
+ requireMiniProgram: true,
+ },
+ // extends: 'eslint:recommended',
+ rules: {},
+}
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..01346d5
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/xzjl-ui.iml b/.idea/xzjl-ui.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/xzjl-ui.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app.js b/app.js
new file mode 100644
index 0000000..1ed57c4
--- /dev/null
+++ b/app.js
@@ -0,0 +1,19 @@
+// app.js
+App({
+ onLaunch() {
+ // 展示本地存储能力
+ const logs = wx.getStorageSync('logs') || []
+ logs.unshift(Date.now())
+ wx.setStorageSync('logs', logs)
+
+ // 登录
+ wx.login({
+ success: res => {
+ // 发送 res.code 到后台换取 openId, sessionKey, unionId
+ }
+ })
+ },
+ globalData: {
+ userInfo: null
+ }
+})
diff --git a/app.json b/app.json
new file mode 100644
index 0000000..22ff90a
--- /dev/null
+++ b/app.json
@@ -0,0 +1,60 @@
+{
+ "entryPagePath": "pages/index/index",
+ "pages": [
+ "pages/logs/logs",
+ "pages/home/me/indexx",
+ "pages/home/xx/index",
+ "pages/home/xy/index",
+ "pages/home/xyc/index",
+ "pages/home/jl/index",
+ "pages/index/index",
+ "pages/index/out/out",
+ "pages/home/xx/xz/xz",
+ "pages/home/xx/xz/index"
+ ],
+ "window": {
+ "backgroundTextStyle": "light",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom"
+ },
+ "tabBar": {
+ "position": "bottom",
+ "color": "#6C6C6C",
+ "selectedColor": "#F8632A",
+ "list": [
+ {
+ "pagePath": "pages/home/xy/index",
+ "text": "星运",
+ "iconPath": "icons/unselected/xy.png",
+ "selectedIconPath": "icons/selected/xy.png"
+ },
+ {
+ "pagePath": "pages/home/xyc/index",
+ "text": "许愿池",
+ "iconPath": "icons/unselected/xyc.png",
+ "selectedIconPath": "icons/selected/xyc.png"
+ },
+ {
+ "pagePath": "pages/home/jl/index",
+ "text": "精灵",
+ "iconPath": "icons/unselected/jl.png",
+ "selectedIconPath": "icons/selected/jl.png"
+ },
+ {
+ "pagePath": "pages/home/xx/index",
+ "text": "星讯",
+ "iconPath": "icons/unselected/xx.png",
+ "selectedIconPath": "icons/selected/xx.png"
+ },
+ {
+ "pagePath": "pages/home/me/indexx",
+ "text": "我的",
+ "iconPath": "icons/unselected/me.png",
+ "selectedIconPath": "icons/selected/me.png"
+ }
+ ]
+ },
+ "lazyCodeLoading": "requiredComponents",
+ "sitemapLocation": "sitemap.json"
+}
\ No newline at end of file
diff --git a/app.wxss b/app.wxss
new file mode 100644
index 0000000..06c6fc9
--- /dev/null
+++ b/app.wxss
@@ -0,0 +1,10 @@
+/**app.wxss**/
+.container {
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ padding: 200rpx 0;
+ box-sizing: border-box;
+}
diff --git a/icons/index/question.png b/icons/index/question.png
new file mode 100644
index 0000000..bd1a2f7
Binary files /dev/null and b/icons/index/question.png differ
diff --git a/icons/selected/jl.png b/icons/selected/jl.png
new file mode 100644
index 0000000..4f06d66
Binary files /dev/null and b/icons/selected/jl.png differ
diff --git a/icons/selected/me.png b/icons/selected/me.png
new file mode 100644
index 0000000..ec63064
Binary files /dev/null and b/icons/selected/me.png differ
diff --git a/icons/selected/xx.png b/icons/selected/xx.png
new file mode 100644
index 0000000..83fe812
Binary files /dev/null and b/icons/selected/xx.png differ
diff --git a/icons/selected/xy.png b/icons/selected/xy.png
new file mode 100644
index 0000000..253a0bb
Binary files /dev/null and b/icons/selected/xy.png differ
diff --git a/icons/selected/xyc.png b/icons/selected/xyc.png
new file mode 100644
index 0000000..ca9d2fa
Binary files /dev/null and b/icons/selected/xyc.png differ
diff --git a/icons/unselected/jl.png b/icons/unselected/jl.png
new file mode 100644
index 0000000..a720f09
Binary files /dev/null and b/icons/unselected/jl.png differ
diff --git a/icons/unselected/me.png b/icons/unselected/me.png
new file mode 100644
index 0000000..cd25309
Binary files /dev/null and b/icons/unselected/me.png differ
diff --git a/icons/unselected/xx.png b/icons/unselected/xx.png
new file mode 100644
index 0000000..2120cb0
Binary files /dev/null and b/icons/unselected/xx.png differ
diff --git a/icons/unselected/xy.png b/icons/unselected/xy.png
new file mode 100644
index 0000000..17c284e
Binary files /dev/null and b/icons/unselected/xy.png differ
diff --git a/icons/unselected/xyc.png b/icons/unselected/xyc.png
new file mode 100644
index 0000000..044a87e
Binary files /dev/null and b/icons/unselected/xyc.png differ
diff --git a/miniprogram_npm/dayjs/index.js b/miniprogram_npm/dayjs/index.js
new file mode 100644
index 0000000..fcc927b
--- /dev/null
+++ b/miniprogram_npm/dayjs/index.js
@@ -0,0 +1,13 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1681361285816, function(require, module, exports) {
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)",
+ "path": "./action-sheet/action-sheet"
+ },
+ "t-avatar-group": {
+ "key": "t-avatar-group",
+ "label": "头像组",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-avatar.png",
+ "properties": [
+ {
+ "key": "cascading",
+ "type": ["String"],
+ "desc": "图片之间的层叠关系,可选值:左侧图片在上和右侧图片在上",
+ "label": ""
+ },
+ {
+ "key": "collapseAvatar",
+ "type": ["String"],
+ "desc": "头像数量超出时,会出现一个头像折叠元素。该元素内容可自定义。默认为 `+N`。示例:`+5`,`...`, `更多`",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "能够同时显示的最多头像数量",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸,示例值:small/medium/large/24px/38px 等。优先级低于 Avatar.size",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-image", "t-class-content"],
+ "tpl": "",
+ "require": {
+ "t-avatar": "./avatar/avatar"
+ },
+ "path": "./avatar/avatar-group"
+ },
+ "t-avatar": {
+ "key": "t-avatar",
+ "label": "头像",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-avatar.png",
+ "properties": [
+ {
+ "key": "alt",
+ "type": ["String"],
+ "desc": "头像替换文本,仅当图片加载失败时有效",
+ "label": ""
+ },
+ {
+ "key": "badgeProps",
+ "type": ["Object"],
+ "desc": "头像右上角提示信息,继承 Badge 组件的全部特性。如:小红点,或者数字",
+ "label": ""
+ },
+ {
+ "key": "hideOnLoadFailed",
+ "type": ["Boolean"],
+ "desc": "加载失败时隐藏图片",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "图片地址",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "形状",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸,示例值:small/medium/large/24px/38px 等,默认为 large",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:error",
+ "desc": "图片加载失败时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./avatar/avatar"
+ },
+ "t-back-top": {
+ "key": "t-back-top",
+ "label": "回到顶部",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-backtop.png",
+ "properties": [
+ {
+ "key": "fixed",
+ "type": ["Boolean"],
+ "desc": "是否绝对定位固定到屏幕右下方",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "文案",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "预设的样式类型",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon", "t-class-text"],
+ "events": [
+ {
+ "key": "bind:to-top",
+ "desc": "点击触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./back-top/back-top"
+ },
+ "t-badge": {
+ "key": "t-badge",
+ "label": "徽标数",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-badge.png",
+ "properties": [
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "颜色",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "徽标内容,示例:`content='自定义内容'`。也可以使用默认插槽定义",
+ "label": ""
+ },
+ {
+ "key": "count",
+ "type": ["String", "Number"],
+ "desc": "徽标右上角内容。可以是数字,也可以是文字。如:'new'/3/99+。特殊:值为空表示使用插槽渲染",
+ "label": ""
+ },
+ {
+ "key": "dot",
+ "type": ["Boolean"],
+ "desc": "是否为红点",
+ "label": ""
+ },
+ {
+ "key": "maxCount",
+ "type": ["Number"],
+ "desc": "封顶的数字值",
+ "label": ""
+ },
+ {
+ "key": "offset",
+ "type": ["Array"],
+ "desc": "设置状态点的位置偏移,示例:[-10, 20] 或 ['10em', '8rem']",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "形状",
+ "label": ""
+ },
+ {
+ "key": "showZero",
+ "type": ["Boolean"],
+ "desc": "当数值为 0 时,是否展示徽标",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-count"],
+ "tpl": "",
+ "path": "./badge/badge"
+ },
+ "t-button": {
+ "key": "t-button",
+ "label": "按钮",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-button.png",
+ "properties": [
+ {
+ "key": "block",
+ "type": ["Boolean"],
+ "desc": "是否为块级元素",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "按钮内容",
+ "label": ""
+ },
+ {
+ "key": "customDataset",
+ "type": ["Object"],
+ "desc": "自定义 dataset,可通过 event.currentTarget.dataset.custom 获取",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用按钮",
+ "label": ""
+ },
+ {
+ "key": "ghost",
+ "type": ["Boolean"],
+ "desc": "是否为幽灵按钮(镂空按钮)",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否显示为加载状态",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "按钮形状,有 4 种:长方形、正方形、圆角长方形、圆形",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "组件尺寸",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "组件风格,依次为品牌色、危险色",
+ "label": ""
+ },
+ {
+ "key": "type",
+ "type": ["String"],
+ "desc": "同小程序的 formType",
+ "label": ""
+ },
+ {
+ "key": "variant",
+ "type": ["String"],
+ "desc": "按钮形式,基础、线框、文字",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon"],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "点击时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./button/button"
+ },
+ "t-cell-group": {
+ "key": "t-cell-group",
+ "label": "单元格组",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-cell.png",
+ "properties": [
+ {
+ "key": "bordered",
+ "type": ["Boolean"],
+ "desc": "是否显示组边框",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "单元格组标题",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "tpl": "",
+ "require": {
+ "t-cell": "./cell/cell"
+ },
+ "path": "./cell-group/cell-group"
+ },
+ "t-cell": {
+ "key": "t-cell",
+ "label": "单元格",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-cell.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "内容的对齐方式,默认居中对齐",
+ "label": ""
+ },
+ {
+ "key": "arrow",
+ "type": ["Boolean"],
+ "desc": "是否显示右侧箭头",
+ "label": ""
+ },
+ {
+ "key": "bordered",
+ "type": ["Boolean"],
+ "desc": "是否显示下边框",
+ "label": ""
+ },
+ {
+ "key": "description",
+ "type": ["String"],
+ "desc": "下方内容描述",
+ "label": ""
+ },
+ {
+ "key": "hover",
+ "type": ["Boolean"],
+ "desc": "是否开启点击反馈",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "主图",
+ "label": ""
+ },
+ {
+ "key": "jumpType",
+ "type": ["String"],
+ "desc": "链接跳转类型",
+ "label": ""
+ },
+ {
+ "key": "leftIcon",
+ "type": ["String"],
+ "desc": "左侧图标,出现在单元格标题的左侧",
+ "label": ""
+ },
+ {
+ "key": "note",
+ "type": ["String"],
+ "desc": "和标题同行的说明文字",
+ "label": ""
+ },
+ {
+ "key": "required",
+ "type": ["Boolean"],
+ "desc": "是否显示表单必填星号",
+ "label": ""
+ },
+ {
+ "key": "rightIcon",
+ "type": ["String"],
+ "desc": "最右侧图标",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "url",
+ "type": ["String"],
+ "desc": "点击后跳转链接地址。如果值为空,则表示不需要跳转",
+ "label": ""
+ }
+ ],
+ "externalClasses": [
+ "t-class",
+ "t-class-title",
+ "t-class-note",
+ "t-class-description",
+ "t-class-thumb",
+ "t-class-hover",
+ "t-class-left",
+ "t-class-right"
+ ],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "右侧内容",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./cell/cell"
+ },
+ "t-check-tag": {
+ "key": "t-check-tag",
+ "label": "可选标签",
+ "icon": "",
+ "properties": [
+ {
+ "key": "checked",
+ "type": ["Boolean"],
+ "desc": "标签选中的状态,默认风格(theme=default)才有选中态",
+ "label": ""
+ },
+ {
+ "key": "closable",
+ "type": ["Boolean"],
+ "desc": "标签是否可关闭",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String", "Number"],
+ "desc": "组件子元素",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "标签中的图标,可自定义图标呈现",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "标签类型,有三种:方形、圆角方形、标记型",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "标签尺寸",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "组件子元素",
+ "label": ""
+ },
+ {
+ "key": "bind:click",
+ "desc": "点击标签时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "check tag",
+ "path": "./check-tag/check-tag"
+ },
+ "t-checkbox-group": {
+ "key": "t-checkbox-group",
+ "label": "多选框组",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-checkbox.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "支持最多选中的数量",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "统一设置内部复选框 HTML 属性",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "以配置形式设置子元素。示例1:`['北京', '上海']` ,示例2: `[{ label: '全选', checkAll: true }, { label: '上海', value: 'shanghai' }]`。checkAll 值为 true 表示当前选项为「全选选项」",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Array"],
+ "desc": "选中值",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "值变化时触发。`context.current` 表示当前变化的数据项,如果是全选则为空;`context.type` 表示引起选中数据变化的是选中或是取消选中,`context.option` 表示当前变化的数据项",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-checkbox": "./checkbox/checkbox"
+ },
+ "path": "./checkbox-group/checkbox-group"
+ },
+ "t-checkbox": {
+ "key": "t-checkbox",
+ "label": "多选框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-checkbox.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "多选框和内容相对位置",
+ "label": ""
+ },
+ {
+ "key": "checkAll",
+ "type": ["Boolean"],
+ "desc": "用于标识是否为「全选选项」。单独使用无效,需在 CheckboxGroup 中使用",
+ "label": ""
+ },
+ {
+ "key": "checked",
+ "type": ["Boolean"],
+ "desc": "是否选中",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "多选框颜色",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "多选框内容",
+ "label": ""
+ },
+ {
+ "key": "contentDisabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件内容(content)触发选中",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["Array"],
+ "desc": "自定义选中图标和非选中图标。示例:[选中态图标地址,非选中态图标地址]",
+ "label": ""
+ },
+ {
+ "key": "indeterminate",
+ "type": ["Boolean"],
+ "desc": "是否为半选",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "主文案",
+ "label": ""
+ },
+ {
+ "key": "maxContentRow",
+ "type": ["Number"],
+ "desc": "内容最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "maxLabelRow",
+ "type": ["Number"],
+ "desc": "主文案最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "HTML 元素原生属性",
+ "label": ""
+ },
+ {
+ "key": "readonly",
+ "type": ["Boolean"],
+ "desc": "只读状态",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "多选框的值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "值变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./checkbox/checkbox"
+ },
+ "t-collapse-panel": {
+ "key": "t-collapse-panel",
+ "label": "折叠面板",
+ "icon": "",
+ "properties": [
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "折叠面板内容",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "禁止当前面板展开,优先级大于 Collapse 的同名属性",
+ "label": ""
+ },
+ {
+ "key": "expandIcon",
+ "type": ["Boolean"],
+ "desc": "当前折叠面板展开图标,优先级大于 Collapse 的同名属性",
+ "label": ""
+ },
+ {
+ "key": "header",
+ "type": ["String"],
+ "desc": "面板头内容",
+ "label": ""
+ },
+ {
+ "key": "headerRightContent",
+ "type": ["String"],
+ "desc": "面板头的右侧区域,一般用于呈现面板操作",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "当前面板唯一标识,如果值为空则取当前面下标兜底作为唯一标识",
+ "label": ""
+ }
+ ],
+ "tpl": "此处可自定义内容",
+ "path": "./collapse/collapse-panel"
+ },
+ "t-collapse": {
+ "key": "t-collapse",
+ "label": "折叠",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-collapse.png",
+ "properties": [
+ {
+ "key": "defaultExpandAll",
+ "type": ["Boolean"],
+ "desc": "默认是否展开全部",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用面板展开/收起操作",
+ "label": ""
+ },
+ {
+ "key": "expandIcon",
+ "type": ["Boolean"],
+ "desc": "展开图标。值为 undefined 或 false 则不显示展开图标;值为 true 显示默认图标;值类型为函数,则表示完全自定义展开图标",
+ "label": ""
+ },
+ {
+ "key": "expandMutex",
+ "type": ["Boolean"],
+ "desc": "每个面板互斥展开,每次只展开一个面板",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Array"],
+ "desc": "展开的面板集合",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "切换面板时触发,返回变化的值",
+ "label": ""
+ }
+ ],
+ "tpl": "此处可自定义内容",
+ "require": {
+ "t-collapse-panel": "./collapse/collapse-panel"
+ },
+ "path": "./collapse/collapse"
+ },
+ "t-date-time-picker": {
+ "key": "t-date-time-picker",
+ "label": "日期时间选择器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-datetimepicker.png",
+ "properties": [
+ {
+ "key": "cancelBtn",
+ "type": ["String"],
+ "desc": "取消按钮文字",
+ "label": ""
+ },
+ {
+ "key": "confirmBtn",
+ "type": ["String"],
+ "desc": "确定按钮文字",
+ "label": ""
+ },
+ {
+ "key": "end",
+ "type": ["String", "Number"],
+ "desc": "选择器的结束时间",
+ "label": ""
+ },
+ {
+ "key": "footer",
+ "type": ["String"],
+ "desc": "底部内容",
+ "label": ""
+ },
+ {
+ "key": "format",
+ "type": ["String"],
+ "desc": "用于格式化日期,[详细文档](https://day.js.org/docs/en/display/format)",
+ "label": ""
+ },
+ {
+ "key": "header",
+ "type": ["Boolean"],
+ "desc": "头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容",
+ "label": ""
+ },
+ {
+ "key": "mode",
+ "type": ["String", "Array"],
+ "desc": "选择器模式,用于表示可以选择到哪一个层级。【示例一】year 或者 ['year'] 表示纯日期选择器,只能选择到年份,只显示年份。【示例二】'hour' 或 ['hour'] 表示纯时间选择器,只能选择到小时维度。【示例三】['year', 'month', 'date', 'hour', 'minute'] 表示,日期和时间 混合选择器,可以选择到具体哪一分钟,显示全部时间:年/月/日/时/分",
+ "label": ""
+ },
+ {
+ "key": "showWeek",
+ "type": ["Boolean"],
+ "desc": "【开发中】是否在日期旁边显示周几(如周一,周二,周日等)",
+ "label": ""
+ },
+ {
+ "key": "start",
+ "type": ["String", "Number"],
+ "desc": "选择器的开始时间",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "选中值",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-confirm", "t-class-cancel", "t-class-title"],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "取消按钮点击时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "选中值发生变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:column-change",
+ "desc": "每一列选中数据变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:confirm",
+ "desc": "确认按钮点击时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./date-time-picker/date-time-picker"
+ },
+ "t-dialog": {
+ "key": "t-dialog",
+ "label": "对话框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-dialog.png",
+ "properties": [
+ {
+ "key": "actions",
+ "type": ["Array"],
+ "desc": "操作栏",
+ "label": ""
+ },
+ {
+ "key": "buttonLayout",
+ "type": ["String"],
+ "desc": "多按钮排列方式",
+ "label": ""
+ },
+ {
+ "key": "cancelBtn",
+ "type": ["String", "Object"],
+ "desc": "取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件",
+ "label": ""
+ },
+ {
+ "key": "closeOnOverlayClick",
+ "type": ["Boolean"],
+ "desc": "点击蒙层时是否触发关闭事件",
+ "label": ""
+ },
+ {
+ "key": "confirmBtn",
+ "type": ["String", "Object"],
+ "desc": "确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "内容",
+ "label": ""
+ },
+ {
+ "key": "preventScrollThrough",
+ "type": ["Boolean"],
+ "desc": "防止滚动穿透",
+ "label": ""
+ },
+ {
+ "key": "showInAttachedElement",
+ "type": ["Boolean"],
+ "desc": "【开发中】仅在挂载元素中显示抽屉,默认在浏览器可视区域显示。父元素需要有定位属性,如:position: relative",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "控制对话框是否显示",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "对话框层级,Web 侧样式默认为 2500,移动端和小程序样式默认为 1500",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-confirm", "t-class-cancel"],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件",
+ "label": ""
+ },
+ {
+ "key": "bind:close",
+ "desc": "关闭事件,点击 取消按钮 或 点击蒙层 时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:overlay-click",
+ "desc": "如果蒙层存在,点击蒙层时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./dialog/dialog"
+ },
+ "t-divider": {
+ "key": "t-divider",
+ "label": "分割线",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-divider.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "文本位置(仅在水平分割线有效)",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "子元素",
+ "label": ""
+ },
+ {
+ "key": "dashed",
+ "type": ["Boolean"],
+ "desc": "是否虚线(仅在水平分割线有效)",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "分隔线类型有两种:水平和垂直",
+ "label": ""
+ },
+ {
+ "key": "lineColor",
+ "type": ["String"],
+ "desc": "分隔线颜色",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-line", "t-class-content"],
+ "tpl": "",
+ "path": "./divider/divider"
+ },
+ "t-drawer": {
+ "key": "t-drawer",
+ "label": "模态抽屉",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-drawer.png",
+ "properties": [
+ {
+ "key": "closeOnOverlayClick",
+ "type": ["Boolean"],
+ "desc": "点击蒙层时是否触发抽屉关闭事件",
+ "label": ""
+ },
+ {
+ "key": "destroyOnClose",
+ "type": ["Boolean"],
+ "desc": "抽屉关闭时是否销毁节点",
+ "label": ""
+ },
+ {
+ "key": "items",
+ "type": ["Array"],
+ "desc": "抽屉里的列表项",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "抽屉方向",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "组件是否可见",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "抽屉层级,样式默认为 1500",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:close",
+ "desc": "关闭事件,取消按钮点击时、关闭按钮点击时、点击蒙层时均会触发",
+ "label": ""
+ },
+ {
+ "key": "bind:item-click",
+ "desc": "点击抽屉里的列表项",
+ "label": ""
+ },
+ {
+ "key": "bind:overlay-click",
+ "desc": "如果蒙层存在,点击蒙层时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./drawer/drawer"
+ },
+ "t-dropdown-item": {
+ "key": "t-dropdown-item",
+ "label": "下拉菜单子项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-dropdownmenu.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "multiple",
+ "type": ["Boolean"],
+ "desc": "是否多选",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "选项数据",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./dropdown-menu/dropdown-item"
+ },
+ "t-dropdown-menu": {
+ "key": "t-dropdown-menu",
+ "label": "下拉菜单",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-dropdownmenu.png",
+ "properties": [
+ {
+ "key": "activeColor",
+ "type": ["String"],
+ "desc": "【讨论中】菜单标题和选项的选中态颜色",
+ "label": ""
+ },
+ {
+ "key": "closeOnClickOverlay",
+ "type": ["Boolean"],
+ "desc": "是否在点击遮罩层后关闭菜单",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["String", "Number"],
+ "desc": "动画时长",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "菜单栏 z-index 层级",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-dropdown-item": "./dropdown-menu/dropdown-item"
+ },
+ "path": "./dropdown-menu/dropdown-menu"
+ },
+ "t-empty": {
+ "key": "t-empty",
+ "label": "空状态",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-empty.png",
+ "properties": [
+ {
+ "key": "action",
+ "type": ["String"],
+ "desc": "操作按钮",
+ "label": ""
+ },
+ {
+ "key": "description",
+ "type": ["String"],
+ "desc": "描述文字",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "图片地址",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-description", "t-class-image", "t-class-actions"],
+ "tpl": "",
+ "path": "./empty/empty"
+ },
+ "t-fab": {
+ "key": "t-fab",
+ "label": "悬浮按钮",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-fab.png",
+ "properties": [
+ {
+ "key": "buttonProps",
+ "type": ["Object"],
+ "desc": "透传至 Button 组件",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标",
+ "label": ""
+ },
+ {
+ "key": "style",
+ "type": ["String"],
+ "desc": "悬浮按钮的样式,常用于调整位置",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "文本内容",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "悬浮按钮点击事件",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./fab/fab"
+ },
+ "t-footer": {
+ "key": "t-footer",
+ "label": "布局-底部内容",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-footer.png",
+ "properties": [
+ {
+ "key": "copyright",
+ "type": ["String"],
+ "desc": "版权信息,type 为`text`生效",
+ "label": ""
+ },
+ {
+ "key": "logo",
+ "type": ["Object"],
+ "desc": "图标配置,type 为`logo`生效。`logo.icon` 表示图标链接地址,`logo.title` 表示标题文本,`logo.url` 表示链接跳转地址",
+ "label": ""
+ },
+ {
+ "key": "textLinkList",
+ "type": ["Array"],
+ "desc": "链接列表,type 为`text`生效。name 表示链接名称, url 表示链接 page 路径,目前只支持小程序内部跳转,openType 表示跳转方式",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "页脚展示类型",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./footer/footer"
+ },
+ "t-grid-item": {
+ "key": "t-grid-item",
+ "label": "宫格子项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-grid.png",
+ "properties": [
+ {
+ "key": "badgeProps",
+ "type": ["Object"],
+ "desc": "头像右上角提示信息,继承 Badge 组件的全部特性。如:小红点,或者数字",
+ "label": ""
+ },
+ {
+ "key": "description",
+ "type": ["String"],
+ "desc": "文本以外的更多描述,辅助信息。可以通过 Props 传入文本,也可以自定义标题节点",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "图片,可以是图片地址,也可以自定义图片节点",
+ "label": ""
+ },
+ {
+ "key": "jumpType",
+ "type": ["String"],
+ "desc": "链接跳转类型",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "内容布局方式",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "文本,可以通过 Props 传入文本,也可以自定义标题节点",
+ "label": ""
+ },
+ {
+ "key": "url",
+ "type": ["String"],
+ "desc": "点击后的跳转链接",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-image", "t-class-text", "t-class-description"],
+ "tpl": "",
+ "path": "./grid-item/grid-item"
+ },
+ "t-grid": {
+ "key": "t-grid",
+ "label": "栅格",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-grid.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "内容对齐方式",
+ "label": ""
+ },
+ {
+ "key": "border",
+ "type": ["Boolean", "Object"],
+ "desc": "边框,默认不显示。值为 true 则显示默认边框,值类型为 object 则表示自定义边框样式",
+ "label": ""
+ },
+ {
+ "key": "column",
+ "type": ["Number"],
+ "desc": "每一行的列数量",
+ "label": ""
+ },
+ {
+ "key": "gutter",
+ "type": ["Number"],
+ "desc": "间隔大小",
+ "label": ""
+ },
+ {
+ "key": "hover",
+ "type": ["Boolean"],
+ "desc": "是否开启点击反馈",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "tpl": "",
+ "require": {
+ "t-grid-item": "./grid-item/grid-item"
+ },
+ "path": "./grid/grid"
+ },
+ "t-icon": {
+ "key": "t-icon",
+ "label": "图标",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-icon.png",
+ "properties": [
+ {
+ "key": "classPrefix",
+ "type": ["String"],
+ "desc": "自定义icon前缀",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "图标颜色",
+ "label": ""
+ },
+ {
+ "key": "style",
+ "type": ["String"],
+ "desc": "自定义样式",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String", "Number"],
+ "desc": "图标名称",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./icon/icon"
+ },
+ "t-image": {
+ "key": "t-image",
+ "label": "图片",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-image.png",
+ "properties": [
+ {
+ "key": "error",
+ "type": ["String"],
+ "desc": "加载失败时显示的内容。值为 `default` 则表示使用默认加载失败风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `error`;值为其他则表示普通文本内容,如“加载失败”",
+ "label": ""
+ },
+ {
+ "key": "lazy",
+ "type": ["Boolean"],
+ "desc": "是否开启图片懒加载",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["String"],
+ "desc": "加载态内容。值为 `default` 则表示使用默认加载中风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `loading`;值为其他则表示普通文本内容,如“加载中”",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "图片圆角类型",
+ "label": ""
+ },
+ {
+ "key": "src",
+ "type": ["String"],
+ "desc": "图片链接",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-load"],
+ "events": [
+ {
+ "key": "bind:error",
+ "desc": "图片加载失败时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:load",
+ "desc": "图片加载完成时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./image/image"
+ },
+ "t-indexes": {
+ "key": "t-indexes",
+ "label": "索引",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-indexes.png",
+ "properties": [
+ {
+ "key": "height",
+ "type": ["Number"],
+ "desc": "列表高度,未设置默认占满设备高度",
+ "label": ""
+ },
+ {
+ "key": "list",
+ "type": ["Array"],
+ "desc": "索引列表的列表数据。每个元素包含三个子元素,index(string):索引值,例如1,2,3,...或A,B,C等;title(string): 索引标题,可不填将默认设为索引值;children(Array<{title: string}>): 子元素列表,title为子元素的展示文案。",
+ "label": ""
+ },
+ {
+ "key": "sticky",
+ "type": ["Boolean"],
+ "desc": "索引是否吸顶,默认为true",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:select",
+ "desc": "点击行元素时触发事件",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./indexes/indexes"
+ },
+ "t-input": {
+ "key": "t-input",
+ "label": "输入框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-input.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "文本内容位置,居左/居中/居右",
+ "label": ""
+ },
+ {
+ "key": "borderless",
+ "type": ["Boolean"],
+ "desc": "【讨论中】是否开启无边框模式",
+ "label": ""
+ },
+ {
+ "key": "clearable",
+ "type": ["Boolean"],
+ "desc": "是否可清空",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用输入框",
+ "label": ""
+ },
+ {
+ "key": "errorMessage",
+ "type": ["String"],
+ "desc": "错误提示文本,值为空不显示(废弃属性,如果需要,请更为使用 status 和 tips)",
+ "label": ""
+ },
+ {
+ "key": "format",
+ "type": ["String"],
+ "desc": "【开发中】指定输入框展示值的格式",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "左侧文本",
+ "label": ""
+ },
+ {
+ "key": "maxcharacter",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的字符个数,一个中文汉字表示两个字符长度。`maxcharacter` 和 `maxlength` 二选一使用",
+ "label": ""
+ },
+ {
+ "key": "maxlength",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的文本长度,一个中文等于一个计数长度。值小于等于 0 的时候,则表示不限制输入长度。`maxcharacter` 和 `maxlength` 二选一使用",
+ "label": ""
+ },
+ {
+ "key": "placeholder",
+ "type": ["String"],
+ "desc": "占位符",
+ "label": ""
+ },
+ {
+ "key": "prefixIcon",
+ "type": ["String"],
+ "desc": "组件前置图标,值为字符串则表示图标名称",
+ "label": ""
+ },
+ {
+ "key": "readonly",
+ "type": ["Boolean"],
+ "desc": "只读状态",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "输入框尺寸",
+ "label": ""
+ },
+ {
+ "key": "status",
+ "type": ["String"],
+ "desc": "输入框状态",
+ "label": ""
+ },
+ {
+ "key": "suffix",
+ "type": ["String"],
+ "desc": "后置图标前的后置内容",
+ "label": ""
+ },
+ {
+ "key": "suffixIcon",
+ "type": ["String"],
+ "desc": "后置文本内容,值为字符串则表示图标名称",
+ "label": ""
+ },
+ {
+ "key": "tips",
+ "type": ["String"],
+ "desc": "输入框下方提示文本,会根据不同的 `status` 呈现不同的样式",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "输入框的值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-input", "t-class-placeholder", "t-class-error-msg"],
+ "events": [
+ {
+ "key": "bind:blur",
+ "desc": "失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "输入框值发生变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:clear",
+ "desc": "清空按钮点击时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:enter",
+ "desc": "回车键按下时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:focus",
+ "desc": "获得焦点时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./input/input"
+ },
+ "t-loading": {
+ "key": "t-loading",
+ "label": "加载中",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-loading.png",
+ "properties": [
+ {
+ "key": "delay",
+ "type": ["Number"],
+ "desc": "延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "加载动画执行完成一次的时间,单位:毫秒",
+ "label": ""
+ },
+ {
+ "key": "indicator",
+ "type": ["Boolean"],
+ "desc": "是否显示加载指示符",
+ "label": ""
+ },
+ {
+ "key": "inheritColor",
+ "type": ["Boolean"],
+ "desc": "是否继承父元素颜色",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "对齐方式",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否处于加载状态",
+ "label": ""
+ },
+ {
+ "key": "pause",
+ "type": ["Boolean"],
+ "desc": "是否暂停动画",
+ "label": ""
+ },
+ {
+ "key": "progress",
+ "type": ["Number"],
+ "desc": "加载进度",
+ "label": ""
+ },
+ {
+ "key": "reverse",
+ "type": ["Boolean"],
+ "desc": "加载动画是否反向",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸,示例:40rpx/20px",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "加载提示文案",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "加载组件类型",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-text", "t-class-indicator"],
+ "tpl": "",
+ "path": "./loading/loading"
+ },
+ "t-message": {
+ "key": "t-message",
+ "label": "全局提醒",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-message.png",
+ "properties": [
+ {
+ "key": "action",
+ "type": ["String"],
+ "desc": "操作",
+ "label": ""
+ },
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "文本对齐方式",
+ "label": ""
+ },
+ {
+ "key": "closeBtn",
+ "type": ["String", "Boolean"],
+ "desc": "关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。也可以完全自定义按钮",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "用于自定义消息弹出内容",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "消息内置计时器,计时到达时会触发 duration-end 事件。单位:毫秒。值为 0 则表示没有计时器。",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String", "Boolean"],
+ "desc": "消息提醒前面的图标。值为 true 则根据 theme 显示对应的图标,值为 false 则不显示图标。值为 'info' 或 'bell' 则显示组件内置图标。也可以完全自定义图标节点",
+ "label": ""
+ },
+ {
+ "key": "marquee",
+ "type": ["Boolean", "Object"],
+ "desc": "跑马灯效果。speed 指速度控制;loop 指循环播放次数,值为 -1 表示循环播放,值为 0 表示不循环播放;delay 表示延迟多久开始播放",
+ "label": ""
+ },
+ {
+ "key": "offset",
+ "type": ["Array"],
+ "desc": "相对于 placement 的偏移量,示例:[-10, 20] 或 ['10rpx', '8rpx']",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "消息组件风格",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示,隐藏时默认销毁组件",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "元素层级,样式默认为 5000",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-icon", "t-class-action", "t-class-close-btn"],
+ "events": [
+ {
+ "key": "bind:action-btn-click",
+ "desc": "当操作按钮存在时,用户点击操作按钮时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:close-btn-click",
+ "desc": "当关闭按钮存在时,用户点击关闭按钮触发",
+ "label": ""
+ },
+ {
+ "key": "bind:duration-end",
+ "desc": "计时结束后触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./message/message"
+ },
+ "t-navbar": {
+ "key": "t-navbar",
+ "label": "导航条",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-navbar.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["Boolean"],
+ "desc": "是否添加动画效果",
+ "label": ""
+ },
+ {
+ "key": "background",
+ "type": ["String"],
+ "desc": "背景",
+ "label": ""
+ },
+ {
+ "key": "delta",
+ "type": ["Number"],
+ "desc": "后退按钮后退层数,含义参考 [wx.navigateBack](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html),特殊的,传入 0 不会发生执行 wx.navigateBack,只会触发一个 goback 事件供自行处理。",
+ "label": ""
+ },
+ {
+ "key": "fixed",
+ "type": ["Boolean"],
+ "desc": "是否固定在顶部",
+ "label": ""
+ },
+ {
+ "key": "homeIcon",
+ "type": ["String"],
+ "desc": "首页图标地址。值为 '' 或者 undefiend 则表示不显示返回图标,值为 'circle' 表示显示默认图标,值为 'slot' 表示使用插槽渲染,值为其他则表示图标地址",
+ "label": ""
+ },
+ {
+ "key": "leftIcon",
+ "type": ["String"],
+ "desc": "左侧图标地址,值为 '' 或者 undefiend 则表示不显示返回图标,值为 'arrow-left' 表示显示返回图标,值为 'slot' 表示使用插槽渲染,值为其他则表示图标地址",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "页面标题",
+ "label": ""
+ },
+ {
+ "key": "titleMaxLength",
+ "type": ["Number"],
+ "desc": "标题文字最大长度,超出的范围使用 `...` 表示",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-title", "t-class-left-icon", "t-class-home-icon", "t-class-capsule"],
+ "events": [
+ {
+ "key": "bind:complete",
+ "desc": "navigateBack 执行完成后触发(失败或成功均会触发)",
+ "label": ""
+ },
+ {
+ "key": "bind:fail",
+ "desc": "navigateBack 执行失败后触发",
+ "label": ""
+ },
+ {
+ "key": "bind:go-back",
+ "desc": "delta 值为 0 时,点击返回,触发该事件",
+ "label": ""
+ },
+ {
+ "key": "bind:go-home",
+ "desc": "点击 Home 触发",
+ "label": ""
+ },
+ {
+ "key": "bind:success",
+ "desc": "navigateBack 执行成功后触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./navbar/navbar"
+ },
+ "t-picker-item": {
+ "key": "t-picker-item",
+ "label": "选择器子项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-picker.png",
+ "properties": [
+ {
+ "key": "format",
+ "type": ["String"],
+ "desc": "格式化标签",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "数据源",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./picker-item/picker-item"
+ },
+ "t-picker": {
+ "key": "t-picker",
+ "label": "选择器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-picker.png",
+ "properties": [
+ {
+ "key": "cancelBtn",
+ "type": ["String", "Object"],
+ "desc": "取消按钮文字",
+ "label": ""
+ },
+ {
+ "key": "confirmBtn",
+ "type": ["String", "Object"],
+ "desc": "确定按钮文字",
+ "label": ""
+ },
+ {
+ "key": "footer",
+ "type": ["String"],
+ "desc": "底部内容",
+ "label": ""
+ },
+ {
+ "key": "header",
+ "type": ["Boolean"],
+ "desc": "头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Array"],
+ "desc": "选中值",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "点击取消按钮时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "选中变化时候触发",
+ "label": ""
+ },
+ {
+ "key": "bind:pick",
+ "desc": "任何一列选中都会触发,不同的列参数不同。`context.column` 表示第几列变化,`context.index` 表示变化那一列的选中项下标",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-picker-item": "./picker-item/picker-item"
+ },
+ "path": "./picker/picker"
+ },
+ "t-popup": {
+ "key": "t-popup",
+ "label": "气泡框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-popup.png",
+ "properties": [
+ {
+ "key": "closeBtn",
+ "type": ["Boolean"],
+ "desc": "关闭按钮,值类型为 Boolean 时表示是否显示关闭按钮。也可以自定义关闭按钮",
+ "label": ""
+ },
+ {
+ "key": "closeOnOverlayClick",
+ "type": ["Boolean"],
+ "desc": "点击遮罩层是否关闭",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "浮层里面的内容",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "浮层出现位置",
+ "label": ""
+ },
+ {
+ "key": "preventScrollThrough",
+ "type": ["Boolean"],
+ "desc": "防止滚动穿透",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "transitionProps",
+ "type": ["Object"],
+ "desc": "动画效果定义",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示浮层",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-overlay", "t-class-content"],
+ "events": [
+ {
+ "key": "bind:visible-change",
+ "desc": "当浮层隐藏或显示时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./popup/popup"
+ },
+ "t-progress": {
+ "key": "t-progress",
+ "label": "进度条",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-progress.png",
+ "properties": [
+ {
+ "key": "color",
+ "type": ["String", "Object", "Array"],
+ "desc": "进度条颜色。示例:'#ED7B2F' 或 'orange' 或 `['#f00', '#0ff', '#f0f']` 或 `{ '0%': '#f00', '100%': '#0ff' }` 或 `{ from: '#000', to: '#000' }` 等",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String", "Boolean"],
+ "desc": "进度百分比,可自定义",
+ "label": ""
+ },
+ {
+ "key": "percentage",
+ "type": ["Number"],
+ "desc": "进度条百分比",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String", "Number"],
+ "desc": "进度条尺寸,示例:small/medium/large/240。small 值为 72; medium 值为 112;large 值为 160",
+ "label": ""
+ },
+ {
+ "key": "status",
+ "type": ["String"],
+ "desc": "进度条状态",
+ "label": ""
+ },
+ {
+ "key": "strokeWidth",
+ "type": ["String", "Number"],
+ "desc": "进度条线宽。宽度数值不能超过 size 的一半,否则不能输出环形进度",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "进度条风格。值为 line,标签(label)显示在进度条右侧;值为 plump,标签(label)显示在进度条里面;值为 circle,标签(label)显示在进度条正中间",
+ "label": ""
+ },
+ {
+ "key": "trackColor",
+ "type": ["String"],
+ "desc": "进度条未完成部分颜色",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./progress/progress"
+ },
+ "t-pull-down-refresh": {
+ "key": "t-pull-down-refresh",
+ "label": "下拉刷新",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-pulldownrefresh.png",
+ "properties": [
+ {
+ "key": "loadingBarHeight",
+ "type": ["String", "Number"],
+ "desc": "加载中下拉高度,如果值为数字则单位是:'px'",
+ "label": ""
+ },
+ {
+ "key": "loadingProps",
+ "type": ["Object"],
+ "desc": "加载loading样式",
+ "label": ""
+ },
+ {
+ "key": "loadingTexts",
+ "type": ["Array"],
+ "desc": "提示语,组件内部默认值为 ['下拉刷新', '松手刷新', '正在刷新', '刷新完成']",
+ "label": ""
+ },
+ {
+ "key": "maxBarHeight",
+ "type": ["String", "Number"],
+ "desc": "最大下拉高度,如果值为数字则单位是:'px'",
+ "label": ""
+ },
+ {
+ "key": "refreshTimeout",
+ "type": ["Number"],
+ "desc": "刷新超时时间",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Boolean"],
+ "desc": "组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-loading", "t-class-text", "t-class-indicator"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "下拉或收起时触发,用户手势往下滑动触发下拉状态,手势松开触发收起状态",
+ "label": ""
+ },
+ {
+ "key": "bind:refresh",
+ "desc": "结束下拉时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:timeout",
+ "desc": "刷新超时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "拖拽该区域演示 中间下拉刷新",
+ "path": "./pull-down-refresh/pull-down-refresh"
+ },
+ "t-radio-group": {
+ "key": "t-radio-group",
+ "label": "单选框组",
+ "icon": "",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用全部子单选框",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "HTML 元素原生属性",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "单选组件按钮形式。RadioOption 数据类型为 string 或 number 时,表示 label 和 value 值相同",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Boolean"],
+ "desc": "选中的值",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "选中值发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-radio": "./radio/radio"
+ },
+ "path": "./radio-group/radio-group"
+ },
+ "t-radio": {
+ "key": "t-radio",
+ "label": "单选框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-radio.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "复选框和内容相对位置",
+ "label": ""
+ },
+ {
+ "key": "allowUncheck",
+ "type": ["Boolean"],
+ "desc": "是否允许取消选中",
+ "label": ""
+ },
+ {
+ "key": "checked",
+ "type": ["Boolean"],
+ "desc": "是否选中",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "单选按钮颜色",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "单选内容",
+ "label": ""
+ },
+ {
+ "key": "contentDisabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件内容(content)触发选中",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否为禁用态",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String", "Array"],
+ "desc": "自定义选中图标和非选中图标。示例:[选中态图标,非选中态图标]。值为 fill-circle 表示图标为填充型图标,值为 stroke-line 表示图标为描边型图标",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "主文案",
+ "label": ""
+ },
+ {
+ "key": "maxContentRow",
+ "type": ["Number"],
+ "desc": "内容最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "maxLabelRow",
+ "type": ["Number"],
+ "desc": "主文案最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "HTML 元素原生属性",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Boolean"],
+ "desc": "单选按钮的值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "值变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./radio/radio"
+ },
+ "t-rate": {
+ "key": "t-rate",
+ "label": "评分",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-rate.png",
+ "properties": [
+ {
+ "key": "allowHalf",
+ "type": ["Boolean"],
+ "desc": "是否允许半选",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String", "Array"],
+ "desc": "评分图标的颜色,样式中默认为 #ED7B2F。一个值表示设置选中高亮的五角星颜色,示例:[选中颜色]。数组则表示分别设置 选中高亮的五角星颜色 和 未选中暗灰的五角星颜色,[选中颜色,未选中颜色]。示例:['#ED7B2F', '#E3E6EB']",
+ "label": ""
+ },
+ {
+ "key": "count",
+ "type": ["Number"],
+ "desc": "评分的数量",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用评分",
+ "label": ""
+ },
+ {
+ "key": "gap",
+ "type": ["Number"],
+ "desc": "评分图标的间距",
+ "label": ""
+ },
+ {
+ "key": "showText",
+ "type": ["Boolean"],
+ "desc": "是否显示对应的辅助文字",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "评分图标的大小,示例:`20`",
+ "label": ""
+ },
+ {
+ "key": "texts",
+ "type": ["Array"],
+ "desc": "评分等级对应的辅助文字。组件内置默认值为:['极差', '失望', '一般', '满意', '惊喜']。自定义值示例:['1分', '2分', '3分', '4分', '5分']",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Number"],
+ "desc": "选择评分的值",
+ "label": ""
+ },
+ {
+ "key": "variant",
+ "type": ["String"],
+ "desc": "形状类型,有描边类型和填充类型两种",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "评分数改变时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./rate/rate"
+ },
+ "t-search": {
+ "key": "t-search",
+ "label": "搜索",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-search.png",
+ "properties": [
+ {
+ "key": "action",
+ "type": ["String"],
+ "desc": "自定义右侧操作按钮文字",
+ "label": ""
+ },
+ {
+ "key": "center",
+ "type": ["Boolean"],
+ "desc": "是否居中",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用",
+ "label": ""
+ },
+ {
+ "key": "focus",
+ "type": ["Boolean"],
+ "desc": "是否聚焦",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "左侧文本",
+ "label": ""
+ },
+ {
+ "key": "leftIcon",
+ "type": ["String"],
+ "desc": "左侧图标",
+ "label": ""
+ },
+ {
+ "key": "placeholder",
+ "type": ["String"],
+ "desc": "占位符",
+ "label": ""
+ },
+ {
+ "key": "rightIcon",
+ "type": ["String"],
+ "desc": "右侧图标",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "搜索框形状",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String"],
+ "desc": "值",
+ "label": ""
+ }
+ ],
+ "externalClasses": [
+ "t-class",
+ "t-class-input",
+ "t-class-input-container",
+ "t-class-cancel",
+ "t-class-left",
+ "t-class-right"
+ ],
+ "events": [
+ {
+ "key": "bind:action-click",
+ "desc": "点击右侧操作按钮文字时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:blur",
+ "desc": "失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "值发生变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:clear",
+ "desc": "点击清除时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:focus",
+ "desc": "聚焦时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:submit",
+ "desc": "提交时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./search/search"
+ },
+ "t-skeleton": {
+ "key": "t-skeleton",
+ "label": "骨架屏",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-skeleton.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["String"],
+ "desc": "动画效果,有「渐变加载动画」和「闪烁加载动画」两种。值为 'none' 则表示没有动画",
+ "label": ""
+ },
+ {
+ "key": "delay",
+ "type": ["Number"],
+ "desc": "【开发中】延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否为加载状态,如果是则显示骨架图,如果不是则显示加载完成的内容",
+ "label": ""
+ },
+ {
+ "key": "rowCol",
+ "type": ["Array"],
+ "desc": "用于设置行列数量、宽度高度、间距等。【示例一】,`[1, 1, 2]` 表示输出三行骨架图,第一行一列,第二行一列,第三行两列。【示例二】,`[1, 1, { width: '100px' }]` 表示自定义第三行的宽度为 `100px`。【示例三】,`[1, 2, [{ width, height }, { width, height, marginLeft }]]` 表示第三行有两列,且自定义宽度、高度和间距",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "骨架图风格,有基础、头像组合等两大类",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-avatar", "t-class-image", "t-class-text"],
+ "tpl": "",
+ "path": "./skeleton/skeleton"
+ },
+ "t-slider": {
+ "key": "t-slider",
+ "label": "滑块",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-slider.png",
+ "properties": [
+ {
+ "key": "colors",
+ "type": ["Array"],
+ "desc": "颜色,[已选择, 未选择]",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "disabledColor",
+ "type": ["Array"],
+ "desc": "禁用状态滑动条的颜色,[已选, 未选]",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String", "Boolean"],
+ "desc": "滑块当前值文本。
值为 true 显示默认文案;值为 false 不显示滑块当前值文本;
值为 `${value}%` 则表示组件会根据占位符渲染文案;
值类型为函数时,参数 `value` 标识滑块值,参数 `position=start` 表示范围滑块的起始值,参数 `position=end` 表示范围滑块的终点值",
+ "label": ""
+ },
+ {
+ "key": "marks",
+ "type": ["Object", "Array"],
+ "desc": "刻度标记,示例:`[0, 10, 40, 200]` 或者 `{ 5: '5¥', 10: '10%' }`",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "滑块范围最大值",
+ "label": ""
+ },
+ {
+ "key": "min",
+ "type": ["Number"],
+ "desc": "滑块范围最小值",
+ "label": ""
+ },
+ {
+ "key": "range",
+ "type": ["Boolean"],
+ "desc": "双游标滑块",
+ "label": ""
+ },
+ {
+ "key": "showExtremeValue",
+ "type": ["Boolean"],
+ "desc": "是否边界值",
+ "label": ""
+ },
+ {
+ "key": "step",
+ "type": ["Number"],
+ "desc": "步长",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Number", "Array"],
+ "desc": "滑块值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-bar", "t-class-bar-active", "t-class-bar-disabled", "t-class-cursor"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "滑块值变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:dragend",
+ "desc": "结束拖动时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:dragstart",
+ "desc": "开始拖动时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./slider/slider"
+ },
+ "t-step-item": {
+ "key": "t-step-item",
+ "label": "步骤",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-steps.png",
+ "properties": [
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "步骤描述",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标。传入 slot 代表使用插槽,其他字符串代表使用内置图标",
+ "label": ""
+ },
+ {
+ "key": "status",
+ "type": ["String"],
+ "desc": "当前步骤的状态",
+ "label": ""
+ },
+ {
+ "key": "subStepItems",
+ "type": ["Array"],
+ "desc": "子步骤条,仅支持 layout = 'vertical' 时",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-title", "t-class-description", "t-class-extra"],
+ "tpl": "",
+ "path": "./step-item/step-item"
+ },
+ "t-stepper": {
+ "key": "t-stepper",
+ "label": "步进器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-stepper.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "禁用全部操作",
+ "label": ""
+ },
+ {
+ "key": "disableInput",
+ "type": ["Boolean"],
+ "desc": "禁用输入框",
+ "label": ""
+ },
+ {
+ "key": "inputWidth",
+ "type": ["Number"],
+ "desc": "输入框宽度",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "最大值",
+ "label": ""
+ },
+ {
+ "key": "min",
+ "type": ["Number"],
+ "desc": "最小值",
+ "label": ""
+ },
+ {
+ "key": "step",
+ "type": ["Number"],
+ "desc": "步长",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "组件风格",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-input", "t-class-add", "t-class-minus"],
+ "events": [
+ {
+ "key": "bind:blur",
+ "desc": "输入框失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "数值发生变更时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:overlimit",
+ "desc": "数值超出限制时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./stepper/stepper"
+ },
+ "t-steps": {
+ "key": "t-steps",
+ "label": "步骤条",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-steps.png",
+ "properties": [
+ {
+ "key": "current",
+ "type": ["String", "Number"],
+ "desc": "当前步骤,即整个步骤条进度。默认根据步骤下标判断步骤的完成状态,当前步骤为进行中,当前步骤之前的步骤为已完成,当前步骤之后的步骤为未开始。如果每个步骤没有设置 value,current 值为步骤长度则表示所有步骤已完成。如果每个步骤设置了自定义 value,则 current = 'FINISH' 表示所有状态完成",
+ "label": ""
+ },
+ {
+ "key": "currentStatus",
+ "type": ["String"],
+ "desc": "用于控制 current 指向的步骤条的状态",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "步骤条方向,有两种:横向和纵向",
+ "label": ""
+ },
+ {
+ "key": "readonly",
+ "type": ["Boolean"],
+ "desc": "只读状态",
+ "label": ""
+ },
+ {
+ "key": "separator",
+ "type": ["String"],
+ "desc": "步骤条分割符",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "步骤条风格",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "当前步骤发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-step-item": "./step-item/step-item"
+ },
+ "path": "./steps/steps"
+ },
+ "t-sticky": {
+ "key": "t-sticky",
+ "label": "吸顶容器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-sticky.png",
+ "properties": [
+ {
+ "key": "container",
+ "type": ["String"],
+ "desc": "函数返回容器对应的 NodesRef 节点,将对应节点指定为组件的外部容器,滚动时组件会始终保持在容器范围内,当组件即将超出容器底部时,会返回原位置。",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "offsetTop",
+ "type": ["String", "Number"],
+ "desc": "吸顶时与顶部的距离,单位`px`",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "吸顶时的 z-index",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:scroll",
+ "desc": "滚动时触发,scrollTop: 距离顶部位置,isFixed: 是否吸顶",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./sticky/sticky"
+ },
+ "t-swipe-cell": {
+ "key": "t-swipe-cell",
+ "label": "滑动操作",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-swipecell.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用滑动",
+ "label": ""
+ },
+ {
+ "key": "expanded",
+ "type": ["String"],
+ "desc": "操作项是否呈现为打开态",
+ "label": ""
+ },
+ {
+ "key": "left",
+ "type": ["Array"],
+ "desc": "左侧滑动操作项。所有行为同 `right`",
+ "label": ""
+ },
+ {
+ "key": "right",
+ "type": ["Array"],
+ "desc": "右侧滑动操作项。有两种定义方式,一种是使用数组,二种是使用插槽。`right.text` 表示操作文本,`right.className` 表示操作项类名,`right.style` 表示操作项样式,`right.onClick` 表示点击操作项后执行的回调函数。示例:`[{ text: '删除', style: 'background-color: red', onClick: () => {} }]`",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)",
+ "label": ""
+ }
+ ],
+ "tpl": "删除",
+ "require": {
+ "t-cell": "./cell/cell"
+ },
+ "path": "./swipe-cell/swipe-cell"
+ },
+ "t-swiper": {
+ "key": "t-swiper",
+ "label": "轮播",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-swiper.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["String"],
+ "desc": "轮播切换动画效果类型",
+ "label": ""
+ },
+ {
+ "key": "autoplay",
+ "type": ["Boolean"],
+ "desc": "是否自动播放",
+ "label": ""
+ },
+ {
+ "key": "current",
+ "type": ["Number"],
+ "desc": "当前轮播在哪一项(下标)",
+ "label": ""
+ },
+ {
+ "key": "direction",
+ "type": ["String"],
+ "desc": "轮播滑动方向,包括横向滑动和纵向滑动两个方向",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "滑动动画时长",
+ "label": ""
+ },
+ {
+ "key": "height",
+ "type": ["Number"],
+ "desc": "当使用垂直方向滚动时的高度",
+ "label": ""
+ },
+ {
+ "key": "interval",
+ "type": ["Number"],
+ "desc": "轮播间隔时间",
+ "label": ""
+ },
+ {
+ "key": "loop",
+ "type": ["Boolean"],
+ "desc": "是否循环播放",
+ "label": ""
+ },
+ {
+ "key": "navigation",
+ "type": ["Object"],
+ "desc": "导航器全部配置",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "轮播切换时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-swiper-item": "./swiper/swiper-item"
+ },
+ "path": "./swiper/swiper"
+ },
+ "t-switch": {
+ "key": "t-switch",
+ "label": "开关",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-switch.png",
+ "properties": [
+ {
+ "key": "colors",
+ "type": ["Array"],
+ "desc": "自定义颜色,[打开时的颜色,关闭时的颜色]。组件默认颜色为 ['#0052d9', 'rgba(0, 0, 0, .26']。示例:[blue, gray]",
+ "label": ""
+ },
+ {
+ "key": "customValue",
+ "type": ["Array"],
+ "desc": "开关内容,[打开时的值,关闭时的值]。默认为 [true, false]。示例:[1, 0]",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "开关的标签",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否处于加载中状态",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "开关尺寸",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Boolean"],
+ "desc": "开关值",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "数据发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./switch/switch"
+ },
+ "t-tab-bar-item": {
+ "key": "t-tab-bar-item",
+ "label": "标签栏选项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabbar.png",
+ "properties": [
+ {
+ "key": "badgeProps",
+ "type": ["Object"],
+ "desc": "图标右上角提示信息",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "subTabBar",
+ "type": ["Array"],
+ "desc": "二级菜单",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "标识符",
+ "label": ""
+ }
+ ],
+ "tpl": "{{item.label}}",
+ "path": "./tab-bar-item/tab-bar-item"
+ },
+ "t-tab-bar": {
+ "key": "t-tab-bar",
+ "label": "标签栏",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabbar.png",
+ "properties": [
+ {
+ "key": "bordered",
+ "type": ["Boolean"],
+ "desc": "是否显示外边框",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["Array"],
+ "desc": "标签颜色设置。示例:[选中标签的颜色, 未选中的标签颜色]",
+ "label": ""
+ },
+ {
+ "key": "fixed",
+ "type": ["Boolean"],
+ "desc": "是否固定在底部",
+ "label": ""
+ },
+ {
+ "key": "safeAreaInsetBottom",
+ "type": ["Boolean"],
+ "desc": "是否为 iPhoneX 留出底部安全距离",
+ "label": ""
+ },
+ {
+ "key": "split",
+ "type": ["Boolean"],
+ "desc": "是否需要分割线",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Array"],
+ "desc": "当前选中标签的索引",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "选中标签切换时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "{{item.label}}",
+ "require": {
+ "t-tab-bar-item": "./tab-bar-item/tab-bar-item"
+ },
+ "path": "./tab-bar/tab-bar"
+ },
+ "t-tab-panel": {
+ "key": "t-tab-panel",
+ "label": "选项卡面板",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabs.png",
+ "properties": [
+ {
+ "key": "destroyOnHide",
+ "type": ["Boolean"],
+ "desc": "选项卡内容隐藏时是否销毁",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用当前选项卡",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "选项卡名称",
+ "label": ""
+ },
+ {
+ "key": "panel",
+ "type": ["String"],
+ "desc": "用于自定义选项卡面板内容",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "选项卡的值,唯一标识",
+ "label": ""
+ }
+ ],
+ "tpl": "标签一内容",
+ "path": "./tab-panel/tab-panel"
+ },
+ "t-tabs": {
+ "key": "t-tabs",
+ "label": "选项卡",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabs.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["Object"],
+ "desc": "动画效果设置。其中 duration 表示动画时长",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "选项卡位置",
+ "label": ""
+ },
+ {
+ "key": "showBottomLine",
+ "type": ["Boolean"],
+ "desc": "是否展示底部激活线条",
+ "label": ""
+ },
+ {
+ "key": "stickyProps",
+ "type": ["Object"],
+ "desc": "是否支持吸顶",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "激活的选项卡值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-item", "t-class-active", "t-class-track"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "激活的选项卡发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "标签一内容标签二内容",
+ "require": {
+ "t-tab-panel": "./tab-panel/tab-panel"
+ },
+ "path": "./tabs/tabs"
+ },
+ "t-tag": {
+ "key": "t-tag",
+ "label": "标签",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tag.png",
+ "properties": [
+ {
+ "key": "closable",
+ "type": ["Boolean"],
+ "desc": "标签是否可关闭",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "标签中的图标,可自定义图标呈现",
+ "label": ""
+ },
+ {
+ "key": "maxWidth",
+ "type": ["String", "Number"],
+ "desc": "标签最大宽度,宽度超出后会出现省略号。示例:'50px' / 80",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "标签类型,有三种:方形、圆角方形、标记型",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "标签尺寸",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "组件风格,用于描述组件不同的应用场景",
+ "label": ""
+ },
+ {
+ "key": "variant",
+ "type": ["String"],
+ "desc": "标签风格变体",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "点击时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:close",
+ "desc": "如果关闭按钮存在,点击关闭按钮时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "重要",
+ "path": "./tag/tag"
+ },
+ "t-textarea": {
+ "key": "t-textarea",
+ "label": "文本输入框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-textarea.png",
+ "properties": [
+ {
+ "key": "adjustPosition",
+ "type": ["Boolean"],
+ "desc": "键盘弹起时,是否自动上推页面",
+ "label": ""
+ },
+ {
+ "key": "autofocus",
+ "type": ["Boolean"],
+ "desc": "自动聚焦,拉起键盘",
+ "label": ""
+ },
+ {
+ "key": "autosize",
+ "type": ["Boolean"],
+ "desc": "是否自动增高,值为 autosize 时,style.height 不生效",
+ "label": ""
+ },
+ {
+ "key": "confirmHold",
+ "type": ["Boolean"],
+ "desc": "点击键盘右下角按钮时是否保持键盘不收起点",
+ "label": ""
+ },
+ {
+ "key": "confirmType",
+ "type": ["String"],
+ "desc": "设置键盘右下角按钮的文字,仅在 type='text'时生效",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用文本框",
+ "label": ""
+ },
+ {
+ "key": "focus",
+ "type": ["Boolean"],
+ "desc": "自动聚焦",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "左侧文本",
+ "label": ""
+ },
+ {
+ "key": "maxcharacter",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的字符个数,一个中文汉字表示两个字符长度",
+ "label": ""
+ },
+ {
+ "key": "maxlength",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的字符个数",
+ "label": ""
+ },
+ {
+ "key": "placeholder",
+ "type": ["String"],
+ "desc": "占位符",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String"],
+ "desc": "文本框值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-textarea", "t-class-placeholder", "t-class-name"],
+ "events": [
+ {
+ "key": "bind:blur",
+ "desc": "失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "输入内容变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:enter",
+ "desc": "点击完成时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:focus",
+ "desc": "获得焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:line-change",
+ "desc": "行高发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./textarea/textarea"
+ },
+ "t-toast": {
+ "key": "t-toast",
+ "label": "轻提示",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-toast.png",
+ "properties": [
+ {
+ "key": "direction",
+ "type": ["String"],
+ "desc": "图标排列方式",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "弹窗显示毫秒数",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "自定义图标",
+ "label": ""
+ },
+ {
+ "key": "message",
+ "type": ["String"],
+ "desc": "弹窗显示文字",
+ "label": ""
+ },
+ {
+ "key": "overlayProps",
+ "type": ["Object"],
+ "desc": "遮罩层属性,透传至 Overlay",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "弹窗展示位置",
+ "label": ""
+ },
+ {
+ "key": "preventScrollThrough",
+ "type": ["Boolean"],
+ "desc": "防止滚动穿透,即不允许点击和滚动",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "提示类型",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "tpl": "",
+ "path": "./toast/toast"
+ },
+ "t-transition": {
+ "key": "t-transition",
+ "label": "动画",
+ "icon": "",
+ "properties": [
+ {
+ "key": "appear",
+ "type": ["Boolean"],
+ "desc": "首次出现是否展示动画",
+ "label": ""
+ },
+ {
+ "key": "customClass",
+ "type": ["String"],
+ "desc": "自定义容器类名",
+ "label": ""
+ },
+ {
+ "key": "destoryOnClose",
+ "type": ["Boolean"],
+ "desc": "隐藏时是否销毁内容",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "指定过渡时间",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "过渡类名",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./transition/transition"
+ },
+ "t-upload": {
+ "key": "t-upload",
+ "label": "上传",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-upload.png",
+ "properties": [
+ {
+ "key": "addContent",
+ "type": ["String"],
+ "desc": "添加按钮内容。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "allowUploadDuplicateFile",
+ "type": ["Boolean"],
+ "desc": "是否允许重复上传相同文件名的文件",
+ "label": ""
+ },
+ {
+ "key": "config",
+ "type": ["Object"],
+ "desc": "图片上传配置,视频上传配置,文件上传配置等,包含图片尺寸、图片来源、视频来源、视频拍摄最长时间等。更多细节查看小程序官网。[图片上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)。[视频上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)",
+ "label": ""
+ },
+ {
+ "key": "deleteBtn",
+ "type": ["String"],
+ "desc": "删除图标。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "fileListDisplay",
+ "type": ["String"],
+ "desc": "用于完全自定义文件列表内容",
+ "label": ""
+ },
+ {
+ "key": "files",
+ "type": ["Array"],
+ "desc": "已上传文件列表",
+ "label": ""
+ },
+ {
+ "key": "gridConfig",
+ "type": ["Object"],
+ "desc": "upload组件每行上传图片列数以及图片的宽度和高度",
+ "label": ""
+ },
+ {
+ "key": "gutter",
+ "type": ["Number"],
+ "desc": "预览窗格的 `gutter` 大小,单位 rpx",
+ "label": ""
+ },
+ {
+ "key": "imageProps",
+ "type": ["Object"],
+ "desc": "透传 Image 组件全部属性",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "用于控制文件上传数量,值为 0 则不限制",
+ "label": ""
+ },
+ {
+ "key": "mediaType",
+ "type": ["Array"],
+ "desc": "支持上传的文件类型,图片或视频",
+ "label": ""
+ },
+ {
+ "key": "requestMethod",
+ "type": ["String"],
+ "desc": "自定义上传方法",
+ "label": ""
+ },
+ {
+ "key": "sizeLimit",
+ "type": ["Number", "Object"],
+ "desc": "图片文件大小限制,单位 KB。可选单位有:`'B' | 'KB' | 'MB' | 'GB'`。示例一:`1000`。示例二:`{ size: 2, unit: 'MB', message: '图片大小不超过 {sizeLimit} MB' }`",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:add",
+ "desc": "上传成功后触发,仅包含本次选择的照片;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ },
+ {
+ "key": "bind:complete",
+ "desc": "上传成功或失败后触发",
+ "label": ""
+ },
+ {
+ "key": "bind:fail",
+ "desc": "上传失败后触发",
+ "label": ""
+ },
+ {
+ "key": "bind:remove",
+ "desc": "移除文件时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:select-change",
+ "desc": "选择文件或图片之后,上传之前,触发该事件。
`files` 表示之前已经上传完成的文件列表。
`currentSelectedFiles` 表示本次上传选中的文件列表",
+ "label": ""
+ },
+ {
+ "key": "bind:success",
+ "desc": "上传成功后触发,包含所有上传的文件;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./upload/upload"
+ }
+ },
+ "common": {
+ "properties": {},
+ "events": {}
+ },
+ "menu": [
+ {
+ "key": "menu-basic",
+ "label": "基础",
+ "submenu": [
+ {
+ "key": "subMenu-button",
+ "label": "Button 按钮",
+ "components": ["t-button"]
+ },
+ {
+ "key": "subMenu-divider",
+ "label": "Divider 分割线",
+ "components": ["t-divider"]
+ },
+ {
+ "key": "subMenu-fab",
+ "label": "Fab 悬浮按钮",
+ "components": ["t-fab"]
+ },
+ {
+ "key": "subMenu-icon",
+ "label": "Icon 图标",
+ "components": ["t-icon"]
+ }
+ ]
+ },
+ {
+ "key": "menu-nav",
+ "label": "导航",
+ "submenu": [
+ {
+ "key": "subMenu-drawer",
+ "label": "Drawer 抽屉",
+ "components": ["t-drawer"]
+ },
+ {
+ "key": "subMenu-indexes",
+ "label": "Indexes 索引",
+ "components": ["t-indexes"]
+ },
+ {
+ "key": "subMenu-navbar",
+ "label": "Navbar 导航条",
+ "components": ["t-navbar"]
+ },
+ {
+ "key": "subMenu-steps",
+ "label": "Steps 步骤条",
+ "components": ["t-steps"]
+ },
+ {
+ "key": "subMenu-tabbar",
+ "label": "TabBar 标签栏",
+ "components": ["t-tab-bar"]
+ },
+ {
+ "key": "subMenu-tabs",
+ "label": "Tabs 选项卡",
+ "components": ["t-tabs"]
+ }
+ ]
+ },
+ {
+ "key": "menu-input",
+ "label": "输入",
+ "submenu": [
+ {
+ "key": "subMenu-checkbox",
+ "label": "CheckBox 复选框",
+ "components": ["t-checkbox"]
+ },
+ {
+ "key": "subMenu-dateTimePicker",
+ "label": "DateTimePicker 时间选择器",
+ "components": ["t-date-time-picker"]
+ },
+ {
+ "key": "subMenu-input",
+ "label": "Input 输入框",
+ "components": ["t-input"]
+ },
+ {
+ "key": "subMenu-picker",
+ "label": "Picker 选择器",
+ "components": ["t-picker"]
+ },
+ {
+ "key": "subMenu-radio",
+ "label": "Radio 单选框",
+ "components": ["t-radio"]
+ },
+ {
+ "key": "subMenu-rate",
+ "label": "Rate 评分",
+ "components": ["t-rate"]
+ },
+ {
+ "key": "subMenu-search",
+ "label": "Search 搜索框",
+ "components": ["t-search"]
+ },
+ {
+ "key": "subMenu-slider",
+ "label": "Slider 滑动选择器",
+ "components": ["t-slider"]
+ },
+ {
+ "key": "subMenu-stepper",
+ "label": "Stepper 步进器",
+ "components": ["t-stepper"]
+ },
+ {
+ "key": "subMenu-switch",
+ "label": "Switch 开关",
+ "components": ["t-switch"]
+ },
+ {
+ "key": "subMenu-textarea",
+ "label": "Textarea 多行文本框",
+ "components": ["t-textarea"]
+ },
+ {
+ "key": "subMenu-upload",
+ "label": "UpLoad 上传",
+ "components": ["t-upload"]
+ }
+ ]
+ },
+ {
+ "key": "menu-data",
+ "label": "数据展示",
+ "submenu": [
+ {
+ "key": "subMenu-avatar",
+ "label": "Avatar 头像",
+ "components": ["t-avatar"]
+ },
+ {
+ "key": "subMenu-badge",
+ "label": "Badge 徽标",
+ "components": ["t-badge"]
+ },
+ {
+ "key": "subMenu-cell",
+ "label": "Cell 单元格",
+ "components": ["t-cell"]
+ },
+ {
+ "key": "subMenu-collapse",
+ "label": "Collapse 折叠面板",
+ "components": ["t-collapse"]
+ },
+ {
+ "key": "subMenu-dropdown-menu",
+ "label": "DropdownMenu 下拉菜单",
+ "components": ["t-dropdown-menu"]
+ },
+ {
+ "key": "subMenu-empty",
+ "label": "Empty 空状态",
+ "components": ["t-empty"]
+ },
+ {
+ "key": "subMenu-footer",
+ "label": "Footer 页脚",
+ "components": ["t-footer"]
+ },
+ {
+ "key": "subMenu-grid",
+ "label": "Grid 宫格",
+ "components": ["t-grid"]
+ },
+ {
+ "key": "subMenu-image",
+ "label": "Image 图片",
+ "components": ["t-image"]
+ },
+ {
+ "key": "subMenu-skeleton",
+ "label": "Skeleton 骨架屏",
+ "components": ["t-skeleton"]
+ },
+ {
+ "key": "subMenu-sticky",
+ "label": "Sticky 吸顶容器",
+ "components": ["t-sticky"]
+ },
+ {
+ "key": "subMenu-swiper",
+ "label": "Swiper 轮播图",
+ "components": ["t-swiper"]
+ },
+ {
+ "key": "subMenu-tag",
+ "label": "Tag 标签",
+ "components": ["t-tag"]
+ }
+ ]
+ },
+ {
+ "key": "menu-info",
+ "label": "消息提醒",
+ "submenu": [
+ {
+ "key": "subMenu-actionsheet",
+ "label": "ActionSheet 动作面板",
+ "components": ["t-action-sheet"]
+ },
+ {
+ "key": "subMenu-back-top",
+ "label": "BackTop 返回顶部",
+ "components": ["t-back-top"]
+ },
+ {
+ "key": "subMenu-dialog",
+ "label": "Dialog 弹出框",
+ "components": ["t-dialog"]
+ },
+ {
+ "key": "subMenu-loading",
+ "label": "Loading 加载",
+ "components": ["t-loading"]
+ },
+ {
+ "key": "subMenu-message",
+ "label": "Message 消息通知",
+ "components": ["t-message"]
+ },
+ {
+ "key": "subMenu-popup",
+ "label": "Popup 弹出层",
+ "components": ["t-popup"]
+ },
+ {
+ "key": "subMenu-progress",
+ "label": "Progress 进度条",
+ "components": ["t-progress"]
+ },
+ {
+ "key": "subMenu-pullDownRefresh",
+ "label": "PullDownRefresh 下拉刷新",
+ "components": ["t-pull-down-refresh"]
+ },
+ {
+ "key": "subMenu-swipeCell",
+ "label": "SwipeCell 滑动操作",
+ "components": ["t-swipe-cell"]
+ },
+ {
+ "key": "subMenu-toast",
+ "label": "Toast 轻提示",
+ "components": ["t-toast"]
+ }
+ ]
+ }
+ ]
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/action-sheet/README.en-US.md
new file mode 100644
index 0000000..0c84067
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### ActionSheet Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | center | `0.29.0`。options:center/left | N
+cancel-text | String | - | \- | N
+count | Number | 8 | \- | N
+description | String | - | `0.29.0` | N
+items | Array | - | required。Typescript:`Array` `interface ActionSheetItem {label: string; color?: string; disabled?: boolean }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts) | Y
+show-cancel | Boolean | true | \- | N
+theme | String | list | options:list/grid | N
+visible | Boolean | false | required | Y
+default-visible | Boolean | undefined | required。uncontrolled property | Y
+
+### ActionSheet Events
+
+name | params | description
+-- | -- | --
+cancel | \- | \-
+close | `(trigger: TriggerSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts)。
`type TriggerSource = 'overlay' \| 'command' \| 'select' `
+selected | `(selected: ActionSheetItem \| string, index: number)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/README.md b/miniprogram_npm/tdesign-miniprogram/action-sheet/README.md
new file mode 100644
index 0000000..1ba2bab
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/README.md
@@ -0,0 +1,107 @@
+---
+title: ActionSheet 动作面板
+description: 由用户操作后触发的一种特定的模态弹出框 ,呈现一组与当前情境相关的两个或多个选项。
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.9.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-action-sheet": "tdesign-miniprogram/action-sheet/action-sheet",
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+列表型动作面板
+
+{{ list }}
+
+宫格型动作面板
+
+{{ grid }}
+
+### 组件状态
+
+宫格型动作面板
+
+{{ status }}
+
+### 组件样式
+
+列表型对齐方式
+
+{{ align }}
+
+### 支持指令调用
+
+```javascript
+import ActionSheet, { ActionSheetTheme } from 'tdesign-miniprogram/action-sheet/index';
+
+// 指令调用不同于组件引用不需要传入visible
+const basicListOption: ActionSheetShowOption = {
+ theme: ActionSheetTheme.List,
+ selector: '#t-action-sheet',
+ items: [
+ {
+ label: '默认选项',
+ },
+ {
+ label: '失效选项',
+ disabled: true,
+ },
+ {
+ label: '警告选项',
+ color: '#e34d59',
+ },
+ ],
+};
+
+const handler = ActionSheet.show(basicListOption);
+```
+
+指令调用的关闭如下
+
+```javascript
+handler.close();
+```
+
+
+## API
+### ActionSheet Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | center | `0.29.0`。水平对齐方式。可选项:center/left | N
+cancel-text | String | - | 设置取消按钮的文本 | N
+count | Number | 8 | 设置每页展示菜单的数量,仅当 type=grid 时有效 | N
+description | String | - | `0.29.0`。动作面板描述文字 | N
+items | Array | - | 必需。菜单项。TS 类型:`Array` `interface ActionSheetItem {label: string; color?: string; disabled?: boolean }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts) | Y
+show-cancel | Boolean | true | 是否显示取消按钮 | N
+theme | String | list | 展示类型,列表和表格形式展示。可选项:list/grid | N
+visible | Boolean | false | 必需。显示与隐藏 | Y
+default-visible | Boolean | undefined | 必需。显示与隐藏。非受控属性 | Y
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class', 't-class-content', 't-class-cancel']` | N
+
+### ActionSheet Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | \- | 点击取消按钮时触发
+close | `(trigger: TriggerSource)` | 关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts)。
`type TriggerSource = 'overlay' \| 'command' \| 'select' `
+selected | `(selected: ActionSheetItem \| string, index: number)` | 选择菜单项时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.d.ts b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.d.ts
new file mode 100644
index 0000000..dd4d4bf
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.d.ts
@@ -0,0 +1,66 @@
+import { SuperComponent } from '../common/src/index';
+export default class ActionSheet extends SuperComponent {
+ static show: (options: import("./show").ActionSheetShowOption) => WechatMiniprogram.Component.TrivialInstance;
+ externalClasses: string[];
+ properties: {
+ align?: {
+ type: StringConstructor;
+ value?: "center" | "left";
+ };
+ cancelText?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ count?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ items: {
+ type: ArrayConstructor;
+ value?: (string | import("./type").ActionSheetItem)[];
+ };
+ showCancel?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: "list" | "grid";
+ };
+ visible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ gridThemeItems: any[];
+ currentSwiperIndex: number;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ ready(): void;
+ methods: {
+ onSwiperChange(e: WechatMiniprogram.TouchEvent): void;
+ splitGridThemeActions(): void;
+ show(options: any): void;
+ memoInitialData(): void;
+ close(): void;
+ onPopupVisibleChange({ detail }: {
+ detail: any;
+ }): void;
+ onSelect(event: WechatMiniprogram.TouchEvent): void;
+ onCancel(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.js b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.js
new file mode 100644
index 0000000..b21268b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.js
@@ -0,0 +1,94 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { chunk } from '../common/utils';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import { ActionSheetTheme, show } from './show';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-action-sheet`;
+let ActionSheet = class ActionSheet extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`, `${prefix}-class-cancel`];
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ gridThemeItems: [],
+ currentSwiperIndex: 0,
+ };
+ this.controlledProps = [
+ {
+ key: 'visible',
+ event: 'visible-change',
+ },
+ ];
+ this.methods = {
+ onSwiperChange(e) {
+ const { detail: { current }, } = e;
+ this.setData({
+ currentSwiperIndex: current,
+ });
+ },
+ splitGridThemeActions() {
+ if (this.data.theme !== ActionSheetTheme.Grid)
+ return;
+ this.setData({
+ gridThemeItems: chunk(this.data.items, this.data.count),
+ });
+ },
+ show(options) {
+ this.setData(Object.assign(Object.assign(Object.assign({}, this.initialData), options), { visible: true }));
+ this.splitGridThemeActions();
+ this.autoClose = true;
+ this._trigger('visible-change', { visible: true });
+ },
+ memoInitialData() {
+ this.initialData = Object.assign(Object.assign({}, this.properties), this.data);
+ },
+ close() {
+ this.triggerEvent('close', { trigger: 'command' });
+ this._trigger('visible-change', { visible: false });
+ },
+ onPopupVisibleChange({ detail }) {
+ if (!detail.visible) {
+ this.triggerEvent('close', { trigger: 'overlay' });
+ this._trigger('visible-change', { visible: false });
+ }
+ if (this.autoClose) {
+ this.setData({ visible: false });
+ this.autoClose = false;
+ }
+ },
+ onSelect(event) {
+ const { currentSwiperIndex, items, gridThemeItems, count, theme } = this.data;
+ const { index } = event.currentTarget.dataset;
+ const isSwiperMode = theme === ActionSheetTheme.Grid;
+ const item = isSwiperMode ? gridThemeItems[currentSwiperIndex][index] : items[index];
+ const realIndex = isSwiperMode ? index + currentSwiperIndex * count : index;
+ if (item) {
+ this.triggerEvent('selected', { selected: item, index: realIndex });
+ this.triggerEvent('close', { trigger: 'select' });
+ this._trigger('visible-change', { visible: false });
+ }
+ },
+ onCancel() {
+ this.triggerEvent('cancel');
+ },
+ };
+ }
+ ready() {
+ this.memoInitialData();
+ this.splitGridThemeActions();
+ }
+};
+ActionSheet.show = show;
+ActionSheet = __decorate([
+ wxComponent()
+], ActionSheet);
+export default ActionSheet;
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.json b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.json
new file mode 100644
index 0000000..c1eb33e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-popup": "../popup/popup",
+ "t-grid": "../grid/grid",
+ "t-grid-item": "../grid-item/grid-item",
+ "t-swiper-nav": "../swiper-nav/swiper-nav"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxml b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxml
new file mode 100644
index 0000000..9be95bc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxs b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxs
new file mode 100644
index 0000000..af7a695
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxs
@@ -0,0 +1,19 @@
+var getListThemeItemClass = function (props) {
+ var classPrefix = props.classPrefix;
+ var item = props.item;
+ var prefix = props.prefix;
+ var classList = [classPrefix + '__list-item'];
+ if (item.disabled) {
+ classList.push(prefix + '-is-disabled');
+ }
+ return classList.join(' ');
+};
+
+var isImage = function (name) {
+ return name.indexOf('/') !== -1;
+};
+
+module.exports = {
+ getListThemeItemClass: getListThemeItemClass,
+ isImage: isImage,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxss b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxss
new file mode 100644
index 0000000..a8297bf
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/action-sheet.wxss
@@ -0,0 +1,165 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-action-sheet__content {
+ color: var(--td-action-sheet-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-top-left-radius: var(--td-action-sheet-border-radius, var(--td-radius-extra-large, 24rpx));
+ border-top-right-radius: var(--td-action-sheet-border-radius, var(--td-radius-extra-large, 24rpx));
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ overflow: hidden;
+}
+.t-action-sheet__content--grid {
+ padding-top: 16rpx;
+}
+.t-action-sheet__content:focus {
+ outline: 0;
+}
+.t-action-sheet__grid {
+ padding-bottom: 16rpx;
+}
+.t-action-sheet__grid--swiper {
+ padding-bottom: 48rpx;
+}
+.t-action-sheet__description {
+ color: var(--td-action-sheet-description-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ line-height: 44rpx;
+ font-size: 28rpx;
+ text-align: var(--td-action-sheet-text-align, center);
+ padding: 24rpx 32rpx;
+ position: relative;
+}
+.t-action-sheet__description:focus {
+ outline: 0;
+}
+.t-action-sheet__description::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__description::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-action-sheet__description--left {
+ text-align: left;
+}
+.t-action-sheet__description--left::after {
+ left: 32rpx;
+}
+.t-action-sheet__list-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ height: var(--td-action-sheet-list-item-height, 112rpx);
+ padding: 0 32rpx;
+}
+.t-action-sheet__list-item::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__list-item::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-action-sheet__list-item:focus {
+ outline: 0;
+}
+.t-action-sheet__list-item--left {
+ justify-content: start;
+}
+.t-action-sheet__list-item--left::after {
+ left: 32rpx;
+}
+.t-action-sheet__list-item--disabled {
+ color: var(--td-action-sheet-list-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-action-sheet__list-item-text {
+ font-size: var(--td-font-size-m, 32rpx);
+ word-wrap: normal;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.t-action-sheet__list-item-icon {
+ margin-right: 16rpx;
+}
+.t-action-sheet__swiper-wrap {
+ margin-top: 8rpx;
+ position: relative;
+}
+.t-action-sheet__footer {
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+}
+.t-action-sheet__gap-list {
+ height: 16rpx;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__gap-grid {
+ height: 1rpx;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__cancel {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: var(--td-action-sheet-cancel-height, 96rpx);
+}
+.t-action-sheet__dots {
+ position: absolute;
+ left: 50%;
+ bottom: 32rpx;
+ transform: translateX(-50%);
+ display: flex;
+ flex-direction: row;
+}
+.t-action-sheet__dots-item {
+ width: 16rpx;
+ height: 16rpx;
+ background-color: #dcdcdc;
+ border-radius: 50%;
+ margin: 0 16rpx;
+ transition: all 0.4s ease-in;
+}
+.t-action-sheet__dots-item.t-is-active {
+ background-color: #0052d9;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/index.d.ts b/miniprogram_npm/tdesign-miniprogram/action-sheet/index.d.ts
new file mode 100644
index 0000000..de46874
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/index.d.ts
@@ -0,0 +1,3 @@
+import ActionSheet from './action-sheet';
+export * from './show';
+export default ActionSheet;
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/index.js b/miniprogram_npm/tdesign-miniprogram/action-sheet/index.js
new file mode 100644
index 0000000..de46874
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/index.js
@@ -0,0 +1,3 @@
+import ActionSheet from './action-sheet';
+export * from './show';
+export default ActionSheet;
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/props.d.ts b/miniprogram_npm/tdesign-miniprogram/action-sheet/props.d.ts
new file mode 100644
index 0000000..0fff787
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/props.d.ts
@@ -0,0 +1,3 @@
+import { TdActionSheetProps } from './type';
+declare const props: TdActionSheetProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/props.js b/miniprogram_npm/tdesign-miniprogram/action-sheet/props.js
new file mode 100644
index 0000000..c89fa9e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/props.js
@@ -0,0 +1,38 @@
+const props = {
+ align: {
+ type: String,
+ value: 'center',
+ },
+ cancelText: {
+ type: String,
+ value: '取消',
+ },
+ count: {
+ type: Number,
+ value: 8,
+ },
+ description: {
+ type: String,
+ value: '',
+ },
+ items: {
+ type: Array,
+ },
+ showCancel: {
+ type: Boolean,
+ value: true,
+ },
+ theme: {
+ type: String,
+ value: 'list',
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/show.d.ts b/miniprogram_npm/tdesign-miniprogram/action-sheet/show.d.ts
new file mode 100644
index 0000000..e0d8eae
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/show.d.ts
@@ -0,0 +1,29 @@
+///
+///
+export interface ActionSheetItem {
+ label: string;
+ color?: string;
+ disabled?: boolean;
+ icon?: string;
+}
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+export declare enum ActionSheetTheme {
+ List = "list",
+ Grid = "grid"
+}
+interface ActionSheetProps {
+ visible: boolean;
+ items: Array;
+ defaultVisible?: boolean;
+ cancelText?: string;
+ count?: number;
+ showCancel?: boolean;
+ theme?: ActionSheetTheme;
+}
+export interface ActionSheetShowOption extends Omit {
+ context?: Context;
+ selector?: string;
+}
+export declare const show: (options: ActionSheetShowOption) => WechatMiniprogram.Component.TrivialInstance;
+export declare const close: (options: ActionSheetShowOption) => void;
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/show.js b/miniprogram_npm/tdesign-miniprogram/action-sheet/show.js
new file mode 100644
index 0000000..44b0365
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/show.js
@@ -0,0 +1,33 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { getInstance } from '../common/utils';
+export var ActionSheetTheme;
+(function (ActionSheetTheme) {
+ ActionSheetTheme["List"] = "list";
+ ActionSheetTheme["Grid"] = "grid";
+})(ActionSheetTheme || (ActionSheetTheme = {}));
+export const show = function (options) {
+ const _a = Object.assign({}, options), { context, selector = '#t-action-sheet' } = _a, otherOptions = __rest(_a, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.show(Object.assign({}, otherOptions));
+ return instance;
+ }
+ console.error('未找到组件,请确认 selector && context 是否正确');
+};
+export const close = function (options) {
+ const { context, selector = '#t-action-sheet' } = Object.assign({}, options);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.close();
+ }
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/template/grid.wxml b/miniprogram_npm/tdesign-miniprogram/action-sheet/template/grid.wxml
new file mode 100644
index 0000000..bdc595e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/template/grid.wxml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/template/list.wxml b/miniprogram_npm/tdesign-miniprogram/action-sheet/template/list.wxml
new file mode 100644
index 0000000..37e5dcf
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/template/list.wxml
@@ -0,0 +1,14 @@
+
+
+
+ {{item.label || item}}
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/type.d.ts b/miniprogram_npm/tdesign-miniprogram/action-sheet/type.d.ts
new file mode 100644
index 0000000..f77a8fb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/type.d.ts
@@ -0,0 +1,43 @@
+export interface TdActionSheetProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'center' | 'left';
+ };
+ cancelText?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ count?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ items: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ showCancel?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'list' | 'grid';
+ };
+ visible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export interface ActionSheetItem {
+ label: string;
+ color?: string;
+ disabled?: boolean;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/action-sheet/type.js b/miniprogram_npm/tdesign-miniprogram/action-sheet/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/action-sheet/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.d.ts b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.d.ts
new file mode 100644
index 0000000..c9f9ba6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class AvatarGroup extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdAvatarGroupProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ hasChild: boolean;
+ length: number;
+ className: string;
+ };
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ lifetimes: {
+ attached(): void;
+ ready(): void;
+ };
+ observers: {
+ 'cascading, size'(): void;
+ };
+ methods: {
+ setClass(): void;
+ handleMax(): void;
+ handleChildCascading(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.js b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.js
new file mode 100644
index 0000000..b1d4563
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.js
@@ -0,0 +1,86 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import avatarGroupProps from './props';
+const { prefix } = config;
+const name = `${prefix}-avatar-group`;
+let AvatarGroup = class AvatarGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`, `${prefix}-class-image`];
+ this.properties = avatarGroupProps;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ hasChild: true,
+ length: 0,
+ className: '',
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../avatar/avatar': {
+ type: 'descendant',
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ ready() {
+ this.setData({
+ length: this.$children.length,
+ });
+ this.handleMax();
+ this.handleChildCascading();
+ },
+ };
+ this.observers = {
+ 'cascading, size'() {
+ this.setClass();
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { cascading, size } = this.properties;
+ const direction = cascading.split('-')[0];
+ const classList = [
+ name,
+ `${prefix}-class`,
+ `${name}-offset-${direction}-${size.indexOf('px') > -1 ? 'medium' : size}`,
+ ];
+ this.setData({
+ className: classList.join(' '),
+ });
+ },
+ handleMax() {
+ const { max } = this.data;
+ const len = this.$children.length;
+ if (!max || max > len)
+ return;
+ const restAvatars = this.$children.splice(max, len - max);
+ restAvatars.forEach((child) => {
+ child.hide();
+ });
+ },
+ handleChildCascading() {
+ if (this.properties.cascading === 'right-up')
+ return;
+ const defaultZIndex = 100;
+ this.$children.forEach((child, index) => {
+ child.updateCascading(defaultZIndex - index * 10);
+ });
+ },
+ };
+ }
+};
+AvatarGroup = __decorate([
+ wxComponent()
+], AvatarGroup);
+export default AvatarGroup;
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.json b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.json
new file mode 100644
index 0000000..9f58d25
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-avatar": "../avatar/avatar"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.wxml b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.wxml
new file mode 100644
index 0000000..26929f2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.wxml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+ {{collapseAvatar}}
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.wxss b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.wxss
new file mode 100644
index 0000000..62dc816
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/avatar-group.wxss
@@ -0,0 +1,137 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-avatar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ background-color: var(--td-avatar-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ color: var(--td-avatar-content-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-avatar__wrapper {
+ display: inline-flex;
+ position: relative;
+ vertical-align: top;
+ margin-left: var(--td-avatar-margin-left, 0);
+}
+.t-avatar--large {
+ width: var(--td-avatar-large-width, 128rpx);
+ height: var(--td-avatar-large-width, 128rpx);
+ font-size: var(--td-avatar-text-large-font-size, 16px);
+}
+.t-avatar--large .t-avatar__icon {
+ font-size: var(--td-avatar-icon-large-font-size, 64rpx);
+}
+.t-avatar--medium {
+ width: var(--td-avatar-medium-width, 96rpx);
+ height: var(--td-avatar-medium-width, 96rpx);
+ font-size: var(--td-avatar-text-medium-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-avatar--medium .t-avatar__icon {
+ font-size: var(--td-avatar-icon-medium-font-size, 48rpx);
+}
+.t-avatar--small {
+ width: var(--td-avatar-small-width, 80rpx);
+ height: var(--td-avatar-small-width, 80rpx);
+ font-size: var(--td-avatar-text-small-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-avatar--small .t-avatar__icon {
+ font-size: var(--td-avatar-icon-small-font-size, 40rpx);
+}
+.t-avatar .t-image,
+.t-avatar__image {
+ width: 100%;
+ height: 100%;
+}
+.t-avatar--circle {
+ border-radius: var(--td-avatar-circle-border-radius, var(--td-radius-circle, 50%));
+ overflow: hidden;
+}
+.t-avatar--round {
+ border-radius: var(--td-avatar-round-border-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-avatar__text,
+.t-avatar__icon {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-avatar__text:empty,
+.t-avatar__icon:empty {
+ width: 0;
+ height: 0;
+}
+.t-avatar--border {
+ border-color: var(--td-avatar-border-color, #fff);
+ border-style: solid;
+}
+.t-avatar--border-small {
+ border-width: var(--td-avatar-border-width-small, 4rpx);
+}
+.t-avatar--border-medium {
+ border-width: var(--td-avatar-border-width-medium, 6rpx);
+}
+.t-avatar--border-large {
+ border-width: var(--td-avatar-border-width-large, 8rpx);
+}
+.t-avatar-group {
+ display: inline-flex;
+ align-items: center;
+}
+.t-avatar-group-offset-left-small {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-small, -4px);
+}
+.t-avatar-group-offset-left-medium {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-medium, -6px);
+}
+.t-avatar-group-offset-left-large {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-large, -8px);
+}
+.t-avatar-group-offset-right-small {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-small, -4px);
+}
+.t-avatar-group-offset-right-medium {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-medium, -6px);
+}
+.t-avatar-group-offset-right-large {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-large, -8px);
+}
+.t-avatar-group__collapse--slot {
+ float: left;
+}
+.t-avatar-group__collapse--slot:not(:empty) + .t-avatar-group__collapse--default {
+ display: none;
+ float: left;
+}
+.t-avatar-group__collapse--slot:empty + .t-avatar-group__collapse--default {
+ display: block;
+ float: left;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/props.d.ts b/miniprogram_npm/tdesign-miniprogram/avatar-group/props.d.ts
new file mode 100644
index 0000000..892b866
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdAvatarGroupProps } from './type';
+declare const props: TdAvatarGroupProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/props.js b/miniprogram_npm/tdesign-miniprogram/avatar-group/props.js
new file mode 100644
index 0000000..34d9d36
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/props.js
@@ -0,0 +1,20 @@
+const props = {
+ cascading: {
+ type: String,
+ value: 'left-up',
+ },
+ collapseAvatar: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ max: {
+ type: Number,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/type.d.ts b/miniprogram_npm/tdesign-miniprogram/avatar-group/type.d.ts
new file mode 100644
index 0000000..fccdffc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/type.d.ts
@@ -0,0 +1,27 @@
+export interface TdAvatarGroupProps {
+ cascading?: {
+ type: StringConstructor;
+ value?: CascadingValue;
+ };
+ collapseAvatar?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-image', 't-class-content'];
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type CascadingValue = 'left-up' | 'right-up';
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar-group/type.js b/miniprogram_npm/tdesign-miniprogram/avatar-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/avatar/README.en-US.md
new file mode 100644
index 0000000..57e9af2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/README.en-US.md
@@ -0,0 +1,33 @@
+:: BASE_DOC ::
+
+## API
+### Avatar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+alt | String | - | show it when url is not valid | N
+badge-props | Object | - | Typescript:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+bordered | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-image', 't-class-icon', 't-class-alt', 't-class-content']` | N
+hide-on-load-failed | Boolean | false | hide image when loading image failed | N
+icon | String / Object | - | \- | N
+image | String | - | images url | N
+image-props | Object | - | \- | N
+shape | String | circle | shape。options:circle/round。Typescript:`ShapeEnum ` `type ShapeEnum = 'circle' \| 'round'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+size | String | medium | size | N
+
+### Avatar Events
+
+name | params | description
+-- | -- | --
+error | \- | trigger on image load failed
+
+### AvatarGroup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+cascading | String | 'right-up' | multiple images cascading。options:left-up/right-up。Typescript:`CascadingValue` `type CascadingValue = 'left-up' \| 'right-up'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar-group/type.ts) | N
+collapse-avatar | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-image', 't-class-content']` | N
+max | Number | - | \- | N
+size | String | medium | size | N
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/README.md b/miniprogram_npm/tdesign-miniprogram/avatar/README.md
new file mode 100644
index 0000000..d083ac6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/README.md
@@ -0,0 +1,87 @@
+---
+title: Avatar 头像
+description: 用于展示用户头像信息,除了纯展示也可点击进入个人详情等操作。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-avatar": "tdesign-miniprogram/avatar/avatar",
+ "t-avatar-group": "tdesign-miniprogram/avatar-group/avatar-group"
+}
+```
+
+## 代码演示
+
+### 头像类型
+
+图片头像
+
+{{ image-avatar }}
+
+字符头像
+
+{{ character-avatar }}
+
+图标头像
+
+{{ icon-avatar }}
+
+徽标头像
+
+{{ badge-avatar }}
+
+
+### 组合头像
+
+纯展示
+
+{{ exhibition }}
+
+带操作
+
+{{ action }}
+
+### 头像尺寸
+
+头像 large/medium/small 尺寸
+
+{{ size }}
+
+## API
+### Avatar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+alt | String | - | 头像替换文本,仅当图片加载失败时有效 | N
+badge-props | Object | - | 头像右上角提示信息,继承 Badge 组件的全部特性。如:小红点,或者数字。TS 类型:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+bordered | Boolean | false | 已废弃。是否显示外边框 | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class', 't-class-image', 't-class-icon', 't-class-alt', 't-class-content']` | N
+hide-on-load-failed | Boolean | false | 加载失败时隐藏图片 | N
+icon | String / Object | - | 图标。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+image | String | - | 图片地址 | N
+image-props | Object | - | 透传至 Image 组件 | N
+shape | String | circle | 形状。可选项:circle/round。TS 类型:`ShapeEnum ` `type ShapeEnum = 'circle' \| 'round'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+size | String | medium | 尺寸,示例值:small/medium/large/24px/38px 等 | N
+
+### Avatar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+error | \- | 图片加载失败时触发
+
+### AvatarGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+cascading | String | 'left-up' | 图片之间的层叠关系,可选值:左侧图片在上和右侧图片在上。可选项:left-up/right-up。TS 类型:`CascadingValue` `type CascadingValue = 'left-up' \| 'right-up'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar-group/type.ts) | N
+collapse-avatar | String / Slot | - | 头像数量超出时,会出现一个头像折叠元素。该元素内容可自定义。默认为 `+N`。示例:`+5`,`...`, `更多` | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class', 't-class-image', 't-class-content']` | N
+max | Number | - | 能够同时显示的最多头像数量 | N
+size | String | medium | 尺寸,示例值:small/medium/large/24px/38px 等。优先级低于 Avatar.size | N
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/avatar.d.ts b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.d.ts
new file mode 100644
index 0000000..97ca39e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.d.ts
@@ -0,0 +1,23 @@
+///
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Avatar extends SuperComponent {
+ options: WechatMiniprogram.Component.ComponentOptions;
+ externalClasses: string[];
+ properties: import("./type").TdAvatarProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ isShow: boolean;
+ zIndex: number;
+ borderedWithGroup: boolean;
+ };
+ relations: RelationsOptions;
+ observers: {
+ icon(icon: any): void;
+ };
+ methods: {
+ hide(): void;
+ updateCascading(zIndex: any): void;
+ onLoadError(e: WechatMiniprogram.CustomEvent): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/avatar.js b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.js
new file mode 100644
index 0000000..8ca57d5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.js
@@ -0,0 +1,77 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import avatarProps from './props';
+import { setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-avatar`;
+let Avatar = class Avatar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ styleIsolation: 'apply-shared',
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-image`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-alt`,
+ `${prefix}-class-content`,
+ ];
+ this.properties = avatarProps;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ isShow: true,
+ zIndex: 0,
+ borderedWithGroup: false,
+ };
+ this.relations = {
+ '../avatar-group/avatar-group': {
+ type: 'ancestor',
+ linked(parent) {
+ var _a;
+ this.parent = parent;
+ this.setData({
+ size: (_a = this.data.size) !== null && _a !== void 0 ? _a : parent.data.size,
+ borderedWithGroup: true,
+ });
+ },
+ },
+ };
+ this.observers = {
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ this.methods = {
+ hide() {
+ this.setData({
+ isShow: false,
+ });
+ },
+ updateCascading(zIndex) {
+ this.setData({ zIndex });
+ },
+ onLoadError(e) {
+ if (this.properties.hideOnLoadFailed) {
+ this.setData({
+ isShow: false,
+ });
+ }
+ this.triggerEvent('error', e.detail);
+ },
+ };
+ }
+};
+Avatar = __decorate([
+ wxComponent()
+], Avatar);
+export default Avatar;
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/avatar.json b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.json
new file mode 100644
index 0000000..4461d94
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-badge": "../badge/badge",
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxml b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxml
new file mode 100644
index 0000000..a92bb54
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxs b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxs
new file mode 100644
index 0000000..d67e5d8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxs
@@ -0,0 +1,26 @@
+module.exports = {
+ getClass: function (classPrefix, size, shape, bordered) {
+ var hasPx = (size || '').indexOf('px') > -1;
+ var borderSize = hasPx ? 'medium' : size;
+ var classNames = [
+ classPrefix,
+ classPrefix + (shape === 'round' ? '--round' : '--circle'),
+ bordered ? classPrefix + '--border' + ' ' + classPrefix + '--border-' + borderSize : '',
+ hasPx ? '' : classPrefix + '--' + size,
+ ];
+ return classNames.join(' ');
+ },
+
+ getSize: function (size = 'medium') {
+ var pxIndex = size.indexOf('px');
+ if (pxIndex > -1) {
+ return 'width:' + size + ';height:' + size + ';font-size:' + ((size.slice(0, pxIndex) / 8) * 3 + 2) + 'px;';
+ }
+ },
+
+ getStyles: function (isShow, zIndex) {
+ var displayStyle = isShow ? '' : 'display: none;';
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return displayStyle + zIndexStyle;
+ },
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxss b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxss
new file mode 100644
index 0000000..b1c3697
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/avatar.wxss
@@ -0,0 +1,104 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-avatar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ background-color: var(--td-avatar-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ color: var(--td-avatar-content-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-avatar__wrapper {
+ display: inline-flex;
+ position: relative;
+ vertical-align: top;
+ margin-left: var(--td-avatar-margin-left, 0);
+}
+.t-avatar--large {
+ width: var(--td-avatar-large-width, 128rpx);
+ height: var(--td-avatar-large-width, 128rpx);
+ font-size: var(--td-avatar-text-large-font-size, 16px);
+}
+.t-avatar--large .t-avatar__icon {
+ font-size: var(--td-avatar-icon-large-font-size, 64rpx);
+}
+.t-avatar--medium {
+ width: var(--td-avatar-medium-width, 96rpx);
+ height: var(--td-avatar-medium-width, 96rpx);
+ font-size: var(--td-avatar-text-medium-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-avatar--medium .t-avatar__icon {
+ font-size: var(--td-avatar-icon-medium-font-size, 48rpx);
+}
+.t-avatar--small {
+ width: var(--td-avatar-small-width, 80rpx);
+ height: var(--td-avatar-small-width, 80rpx);
+ font-size: var(--td-avatar-text-small-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-avatar--small .t-avatar__icon {
+ font-size: var(--td-avatar-icon-small-font-size, 40rpx);
+}
+.t-avatar .t-image,
+.t-avatar__image {
+ width: 100%;
+ height: 100%;
+}
+.t-avatar--circle {
+ border-radius: var(--td-avatar-circle-border-radius, var(--td-radius-circle, 50%));
+ overflow: hidden;
+}
+.t-avatar--round {
+ border-radius: var(--td-avatar-round-border-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-avatar__text,
+.t-avatar__icon {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-avatar__text:empty,
+.t-avatar__icon:empty {
+ width: 0;
+ height: 0;
+}
+.t-avatar--border {
+ border-color: var(--td-avatar-border-color, #fff);
+ border-style: solid;
+}
+.t-avatar--border-small {
+ border-width: var(--td-avatar-border-width-small, 4rpx);
+}
+.t-avatar--border-medium {
+ border-width: var(--td-avatar-border-width-medium, 6rpx);
+}
+.t-avatar--border-large {
+ border-width: var(--td-avatar-border-width-large, 8rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/props.d.ts b/miniprogram_npm/tdesign-miniprogram/avatar/props.d.ts
new file mode 100644
index 0000000..f3e7907
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdAvatarProps } from './type';
+declare const props: TdAvatarProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/props.js b/miniprogram_npm/tdesign-miniprogram/avatar/props.js
new file mode 100644
index 0000000..bd83025
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/props.js
@@ -0,0 +1,39 @@
+const props = {
+ alt: {
+ type: String,
+ value: '',
+ },
+ badgeProps: {
+ type: Object,
+ },
+ bordered: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ hideOnLoadFailed: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ image: {
+ type: String,
+ value: '',
+ },
+ imageProps: {
+ type: Object,
+ },
+ shape: {
+ type: String,
+ value: 'circle',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/avatar/type.d.ts
new file mode 100644
index 0000000..07dfe75
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/type.d.ts
@@ -0,0 +1,48 @@
+import { BadgeProps } from '../badge/index';
+export interface TdAvatarProps {
+ alt?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: BadgeProps;
+ };
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-image', 't-class-icon', 't-class-alt', 't-class-content'];
+ };
+ hideOnLoadFailed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: ShapeEnum;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type ShapeEnum = 'circle' | 'round';
diff --git a/miniprogram_npm/tdesign-miniprogram/avatar/type.js b/miniprogram_npm/tdesign-miniprogram/avatar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/avatar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/back-top/README.en-US.md
new file mode 100644
index 0000000..c75a4b5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/README.en-US.md
@@ -0,0 +1,19 @@
+:: BASE_DOC ::
+
+## API
+
+### BackTop Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-text']` | N
+fixed | Boolean | true | \- | N
+icon | String / Boolean / Object / Slot | - | \- | N
+text | String | '' | \- | N
+theme | String | round | options:round/half-round/round-dark/half-round-dark | N
+
+### BackTop Events
+
+name | params | description
+-- | -- | --
+to-top | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/README.md b/miniprogram_npm/tdesign-miniprogram/back-top/README.md
new file mode 100644
index 0000000..7e220e4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/README.md
@@ -0,0 +1,42 @@
+---
+title: BackTop 返回顶部
+description: 用于当页面过长往下滑动时,帮助用户快速回到页面顶部。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+"t-back-top": "tdesign-miniprogram/back-top/back-top",
+}
+```
+
+## 代码演示
+
+
+
+### 基础返回顶部
+
+{{ base }}
+
+## API
+### BackTop Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 组件类名,分别用于设置外层元素、图标、文本内容等元素类名。`['t-class', 't-class-icon', 't-class-text']` | N
+fixed | Boolean | true | 是否绝对定位固定到屏幕右下方 | N
+icon | String / Boolean / Object / Slot | true | 图标。值为 `false` 表示不显示图标。不传表示使用默认图标 `'backtop'` | N
+text | String | '' | 文案 | N
+theme | String | round | 预设的样式类型。可选项:round/half-round/round-dark/half-round-dark | N
+
+### BackTop Events
+
+名称 | 参数 | 描述
+-- | -- | --
+to-top | \- | 点击触发
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/back-top.d.ts b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.d.ts
new file mode 100644
index 0000000..90e8f03
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class BackTop extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdBackTopProps;
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ _icon: any;
+ };
+ observers: {
+ icon(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ setIcon(v: any): void;
+ toTop(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/back-top.js b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.js
new file mode 100644
index 0000000..8c2ce59
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.js
@@ -0,0 +1,67 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-back-top`;
+let BackTop = class BackTop extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-icon`, `${prefix}-class-text`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.relations = {
+ '../pull-down-refresh/pull-down-refresh': {
+ type: 'ancestor',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ _icon: null,
+ };
+ this.observers = {
+ icon() {
+ this.setIcon();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ const { icon } = this.properties;
+ this.setIcon(icon);
+ },
+ };
+ this.methods = {
+ setIcon(v) {
+ this.setData({
+ _icon: calcIcon(v, 'backtop'),
+ });
+ },
+ toTop() {
+ var _a;
+ this.triggerEvent('to-top');
+ if (this.$parent) {
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.setScrollTop(0);
+ }
+ else {
+ wx.pageScrollTo({
+ scrollTop: 0,
+ duration: 300,
+ });
+ }
+ },
+ };
+ }
+};
+BackTop = __decorate([
+ wxComponent()
+], BackTop);
+export default BackTop;
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/back-top.json b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/back-top.wxml b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.wxml
new file mode 100644
index 0000000..1d02278
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.wxml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+ {{text}}
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/back-top.wxss b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.wxss
new file mode 100644
index 0000000..3ec2469
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/back-top.wxss
@@ -0,0 +1,89 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-back-top {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background-color: transparent;
+ overflow: hidden;
+ box-sizing: border-box;
+ transition: height 0.2s;
+ height: auto;
+}
+.t-back-top--fixed {
+ position: fixed;
+ right: var(--td-spacer, 16rpx);
+ bottom: var(--td-spacer-2, 32rpx);
+}
+.t-back-top--round,
+.t-back-top--round-dark {
+ width: 96rpx;
+ height: 96rpx;
+ border-radius: var(--td-back-top-round-border-radius, var(--td-radius-circle, 50%));
+}
+.t-back-top--round,
+.t-back-top--half-round {
+ color: var(--td-back-top-round-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border: 1rpx solid var(--td-back-top-round-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ background-color: var(--td-back-top-round-bg-color, var(--td-font-white-1, #ffffff));
+}
+.t-back-top--round-dark,
+.t-back-top--half-round-dark {
+ color: var(--td-back-top-round-dark-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-back-top-round-dark-bg-color, var(--td-gray-color-14, #181818));
+}
+.t-back-top--half-round,
+.t-back-top--half-round-dark {
+ width: 120rpx;
+ height: 80rpx;
+ border-radius: var(--td-back-top-half-round-border-radius, var(--td-radius-round, 999px)) 0 0 var(--td-back-top-half-round-border-radius, var(--td-radius-round, 999px));
+ flex-direction: row;
+ right: 0;
+}
+.t-back-top__text--round,
+.t-back-top__text--round-dark,
+.t-back-top__text--half-round,
+.t-back-top__text--half-round-dark {
+ font-size: var(--td-font-size, 20rpx);
+ line-height: 24rpx;
+}
+.t-back-top__text--half-round,
+.t-back-top__text--half-round-dark {
+ width: 2em;
+}
+.t-back-top__icon:not(:empty) + .t-back-top__text--half-round,
+.t-back-top__icon:not(:empty) + .t-back-top__text--half-round-dark {
+ margin-left: 8rpx;
+}
+.t-back-top__icon {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 44rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/props.d.ts b/miniprogram_npm/tdesign-miniprogram/back-top/props.d.ts
new file mode 100644
index 0000000..5ac1e9f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/props.d.ts
@@ -0,0 +1,3 @@
+import { TdBackTopProps } from './type';
+declare const props: TdBackTopProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/props.js b/miniprogram_npm/tdesign-miniprogram/back-top/props.js
new file mode 100644
index 0000000..7becbe4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/props.js
@@ -0,0 +1,22 @@
+const props = {
+ externalClasses: {
+ type: Array,
+ },
+ fixed: {
+ type: Boolean,
+ value: true,
+ },
+ icon: {
+ type: null,
+ value: true,
+ },
+ text: {
+ type: String,
+ value: '',
+ },
+ theme: {
+ type: String,
+ value: 'round',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/type.d.ts b/miniprogram_npm/tdesign-miniprogram/back-top/type.d.ts
new file mode 100644
index 0000000..45b6bae
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdBackTopProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-text'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'round' | 'half-round' | 'round-dark' | 'half-round-dark';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/back-top/type.js b/miniprogram_npm/tdesign-miniprogram/back-top/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/back-top/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/badge/README.en-US.md
new file mode 100644
index 0000000..f592805
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/README.en-US.md
@@ -0,0 +1,17 @@
+:: BASE_DOC ::
+
+## API
+### Badge Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+color | String | - | \- | N
+content | String | - | \- | N
+count | String / Number / Slot | 0 | \- | N
+dot | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-count']` | N
+max-count | Number | 99 | \- | N
+offset | Array | - | Typescript:`Array` | N
+shape | String | circle | options:circle/round/ribbon/bubble | N
+show-zero | Boolean | false | \- | N
+size | String | medium | options:small/medium | N
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/README.md b/miniprogram_npm/tdesign-miniprogram/badge/README.md
new file mode 100644
index 0000000..7d1bf08
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/README.md
@@ -0,0 +1,47 @@
+---
+title: Badge 徽标
+description: 用于告知用户,该区域的状态变化或者待处理任务的数量。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-badge": "tdesign-miniprogram/badge/badge"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+{{ base }}
+
+### 组件样式
+
+{{ theme }}
+
+### 组件尺寸
+
+{{ size }}
+
+## API
+### Badge Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+color | String | - | 颜色 | N
+content | String | - | 徽标内容,示例:`content='自定义内容'`。也可以使用默认插槽定义 | N
+count | String / Number / Slot | 0 | 徽标右上角内容。可以是数字,也可以是文字。如:'new'/3/99+。特殊:值为空表示使用插槽渲染 | N
+dot | Boolean | false | 是否为红点 | N
+external-classes | Array | - | 组件类名,分别用于设置外层元素、默认内容、右上角内容等元素类名。`['t-class', 't-class-content', 't-class-count']` | N
+max-count | Number | 99 | 封顶的数字值 | N
+offset | Array | - | 设置状态点的位置偏移,示例:[-10, 20] 或 ['10em', '8rem']。TS 类型:`Array` | N
+shape | String | circle | 形状。可选项:circle/round/ribbon/bubble | N
+show-zero | Boolean | false | 当数值为 0 时,是否展示徽标 | N
+size | String | medium | 尺寸。可选项:small/medium | N
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/badge.d.ts b/miniprogram_npm/tdesign-miniprogram/badge/badge.d.ts
new file mode 100644
index 0000000..2680a17
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/badge.d.ts
@@ -0,0 +1,21 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdBadgeProps } from './type';
+export interface BadgeProps extends TdBadgeProps {
+}
+export default class Badge extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ properties: TdBadgeProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ value: string;
+ labelID: string;
+ descriptionID: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/badge.js b/miniprogram_npm/tdesign-miniprogram/badge/badge.js
new file mode 100644
index 0000000..370a57e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/badge.js
@@ -0,0 +1,43 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { uniqueFactory } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-badge`;
+const getUniqueID = uniqueFactory('badge');
+let Badge = class Badge extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-count`, `${prefix}-class-content`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ value: '',
+ labelID: '',
+ descriptionID: '',
+ };
+ this.lifetimes = {
+ ready() {
+ const uniqueID = getUniqueID();
+ this.setData({
+ labelID: `${uniqueID}_label`,
+ descriptionID: `${uniqueID}_description`,
+ });
+ },
+ };
+ }
+};
+Badge = __decorate([
+ wxComponent()
+], Badge);
+export default Badge;
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/badge.json b/miniprogram_npm/tdesign-miniprogram/badge/badge.json
new file mode 100644
index 0000000..a7a3e7a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/badge.json
@@ -0,0 +1,5 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
+
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/badge.wxml b/miniprogram_npm/tdesign-miniprogram/badge/badge.wxml
new file mode 100644
index 0000000..f669d65
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/badge.wxml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+ {{ this.getBadgeValue({dot, count, maxCount}) }}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/badge.wxs b/miniprogram_npm/tdesign-miniprogram/badge/badge.wxs
new file mode 100644
index 0000000..08db60d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/badge.wxs
@@ -0,0 +1,70 @@
+var getBadgeValue = function (props) {
+ if (props.dot) {
+ return '';
+ }
+ if (isNaN(props.count) || isNaN(props.maxCount)) {
+ return props.count;
+ }
+ return parseInt(props.count) > props.maxCount ? props.maxCount + '+' : props.count;
+};
+
+var hasUnit = function (unit) {
+ return (
+ unit.indexOf('px') > 0 ||
+ unit.indexOf('rpx') > 0 ||
+ unit.indexOf('em') > 0 ||
+ unit.indexOf('rem') > 0 ||
+ unit.indexOf('%') > 0 ||
+ unit.indexOf('vh') > 0 ||
+ unit.indexOf('vm') > 0
+ );
+};
+
+var getBadgeStyles = function (props) {
+ var styleStr = '';
+ if (props.color) {
+ styleStr += 'background:' + props.color + ';';
+ }
+ if (props.offset[0]) {
+ styleStr += 'right:' + (hasUnit(props.offset[0].toString()) ? props.offset[0] : props.offset[0] + 'px') + ';';
+ }
+ if (props.offset[1]) {
+ styleStr += 'top:' + (hasUnit(props.offset[1].toString()) ? props.offset[1] : props.offset[1] + 'px') + ';';
+ }
+ return styleStr;
+};
+
+var getBadgeOuterClass = function (props) {
+ var baseClass = 't-badge';
+ var classNames = [baseClass, props.shape === 'ribbon' ? baseClass + '__ribbon-outer' : ''];
+ return classNames.join(' ');
+};
+
+var getBadgeInnerClass = function (props) {
+ var baseClass = 't-badge';
+ var classNames = [
+ baseClass + '--basic',
+ props.dot ? baseClass + '--dot' : '',
+ baseClass + '--' + props.size,
+ baseClass + '--' + props.shape,
+ !props.dot && props.count ? baseClass + '--count' : '',
+ ];
+ return classNames.join(' ');
+};
+
+var isShowBadge = function (props) {
+ if (props.dot) {
+ return true;
+ }
+ if (!props.showZero && !isNaN(props.count) && parseInt(props.count) === 0) {
+ return false;
+ }
+ if (props.count == null) return false;
+ return true;
+};
+
+module.exports.getBadgeValue = getBadgeValue;
+module.exports.getBadgeStyles = getBadgeStyles;
+module.exports.getBadgeOuterClass = getBadgeOuterClass;
+module.exports.getBadgeInnerClass = getBadgeInnerClass;
+module.exports.isShowBadge = isShowBadge;
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/badge.wxss b/miniprogram_npm/tdesign-miniprogram/badge/badge.wxss
new file mode 100644
index 0000000..66de8a0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/badge.wxss
@@ -0,0 +1,108 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-badge {
+ position: relative;
+ display: inline-block;
+ vertical-align: top;
+}
+.t-badge--basic {
+ z-index: 100;
+ padding: 0 var(--td-badge-basic-padding, 8rpx);
+ font-size: var(--td-badge-font-size, var(--td-font-size-xs, var(--td-font-size, 20rpx)));
+ color: var(--td-badge-text-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-badge-bg-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ text-align: center;
+ height: var(--td-badge-basic-height, 32rpx);
+ line-height: var(--td-badge-basic-height, 32rpx);
+ font-weight: var(--td-badge-font-weight, 600);
+ border-radius: var(--td-badge-border-radius, 4rpx);
+}
+.t-badge--dot {
+ height: var(--td-badge-dot-size, 16rpx);
+ border-radius: 50%;
+ min-width: var(--td-badge-dot-size, 16rpx);
+ padding: 0;
+}
+.t-badge--count {
+ min-width: var(--td-badge-basic-width, 32rpx);
+ white-space: nowrap;
+ box-sizing: border-box;
+}
+.t-badge--circle {
+ border-radius: calc(var(--td-badge-basic-height, 32rpx) / 2);
+}
+.t-badge__ribbon-outer {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+.t-badge__ribbon--before,
+.t-badge__ribbon--after {
+ content: '';
+ position: absolute;
+ width: 0;
+ height: 0;
+ bottom: 0;
+ border-bottom: var(--td-badge-basic-height, 32rpx) solid var(--td-badge-bg-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-badge__ribbon--before {
+ left: calc(-1 * var(--td-badge-basic-height, 32rpx) + 1rpx);
+ border-left: var(--td-badge-basic-height, 32rpx) solid transparent;
+}
+.t-badge__ribbon--after {
+ right: calc(-1 * var(--td-badge-basic-height, 32rpx) + 1rpx);
+ border-right: var(--td-badge-basic-height, 32rpx) solid transparent;
+}
+.t-badge--ribbon {
+ display: inline-block;
+ transform: rotate(45deg);
+ border-radius: 0;
+}
+.t-badge--bubble {
+ border-radius: var(--td-badge-bubble-border-radius, 20rpx 20rpx 20rpx 1px);
+}
+.t-badge--large {
+ font-size: var(--td-badge-large-font-size, var(--td-font-size-s, 24rpx));
+ height: var(--td-badge-large-height, 40rpx);
+ min-width: var(--td-badge-large-height, 40rpx);
+ line-height: var(--td-badge-large-height, 40rpx);
+ padding: 0 var(--td-badge-large-padding, 10rpx);
+}
+.t-badge--large.t-badge--circle {
+ border-radius: calc(var(--td-badge-large-height, 40rpx) / 2);
+}
+.t-badge__content:not(:empty) + .t-has-count {
+ transform: translate(50%, -50%);
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.t-badge__content-text {
+ display: block;
+ line-height: 48rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/index.d.ts b/miniprogram_npm/tdesign-miniprogram/badge/index.d.ts
new file mode 100644
index 0000000..85b119a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './badge';
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/index.js b/miniprogram_npm/tdesign-miniprogram/badge/index.js
new file mode 100644
index 0000000..85b119a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './badge';
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/props.d.ts b/miniprogram_npm/tdesign-miniprogram/badge/props.d.ts
new file mode 100644
index 0000000..e1702ff
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/props.d.ts
@@ -0,0 +1,3 @@
+import { TdBadgeProps } from './type';
+declare const props: TdBadgeProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/props.js b/miniprogram_npm/tdesign-miniprogram/badge/props.js
new file mode 100644
index 0000000..095f798
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/props.js
@@ -0,0 +1,41 @@
+const props = {
+ color: {
+ type: String,
+ value: '',
+ },
+ content: {
+ type: String,
+ value: '',
+ },
+ count: {
+ type: null,
+ value: 0,
+ },
+ dot: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ maxCount: {
+ type: Number,
+ value: 99,
+ },
+ offset: {
+ type: Array,
+ },
+ shape: {
+ type: String,
+ value: 'circle',
+ },
+ showZero: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/type.d.ts b/miniprogram_npm/tdesign-miniprogram/badge/type.d.ts
new file mode 100644
index 0000000..30f00d0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/type.d.ts
@@ -0,0 +1,46 @@
+export interface TdBadgeProps {
+ color?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ count?: {
+ type: null;
+ value?: string | number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ dot?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-count'];
+ };
+ maxCount?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ offset?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'circle' | 'round' | 'ribbon' | 'bubble';
+ };
+ showZero?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'small' | 'medium';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/badge/type.js b/miniprogram_npm/tdesign-miniprogram/badge/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/badge/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/button/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/button/README.en-US.md
new file mode 100644
index 0000000..ee2b1d7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/README.en-US.md
@@ -0,0 +1,46 @@
+:: BASE_DOC ::
+
+## API
+### Button Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+block | Boolean | false | make button to be a block-level element | N
+content | String / Slot | - | button's children elements | N
+custom-dataset | Object | - | Typescript:`any` | N
+disabled | Boolean | false | disable the button, make it can not be clicked | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-loading']` | N
+ghost | Boolean | false | make background-color to be transparent | N
+icon | String / Object | - | icon name | N
+loading | Boolean | false | set button to be loading state | N
+loading-props | Object | - | Typescript:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/button/type.ts) | N
+shape | String | rectangle | button shape。options:rectangle/square/round/circle | N
+size | String | medium | a button has three size。options:small/medium/large。Typescript:`SizeEnum` | N
+suffix | Slot | - | \- | N
+theme | String | default | button theme。options:default/primary/danger | N
+type | String | - | type of button element, same as formType of Miniprogram。options:submit/reset | N
+variant | String | base | button variant。options:base/outline/text | N
+open-type | String | - | options:contact/share/getPhoneNumber/getUserInfo/launchApp/openSetting/feedback/chooseAvatar | N
+hover-stop-propagation | Boolean | false | \- | N
+hover-start-time | Number | 20 | \- | N
+hover-stay-time | Number | 70 | \- | N
+lang | String | en | options:en/zh_CN/zh_TW | N
+session-from | String | - | \- | N
+send-message-title | String | 当前标题 | \- | N
+send-message-path | String | 当前分享路径 | \- | N
+send-message-img | String | 截图 | \- | N
+app-parameter | String | - | \- | N
+show-message-card | Boolean | false | \- | N
+bindgetuserinfo | Eventhandle | - | \- | N
+bindcontact | Eventhandle | - | \- | N
+bindgetphonenumber | Eventhandle | - | \- | N
+binderror | Eventhandle | - | \- | N
+bindopensetting | Eventhandle | - | \- | N
+bindlaunchapp | Eventhandle | - | \- | N
+bindchooseavatar | Eventhandle | - | \- | N
+
+### Button Events
+
+name | params | description
+-- | -- | --
+tap | `(e: MouseEvent)` | trigger on click
diff --git a/miniprogram_npm/tdesign-miniprogram/button/README.md b/miniprogram_npm/tdesign-miniprogram/button/README.md
new file mode 100644
index 0000000..937e340
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/README.md
@@ -0,0 +1,107 @@
+---
+title: Button 按钮
+description: 用于开启一个闭环的操作任务,如“删除”对象、“购买”商品等。
+spline: base
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-button": "tdesign-miniprogram/button/button"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础按钮
+
+{{ base }}
+
+图标按钮
+
+{{ icon-btn }}
+
+幽灵按钮
+
+{{ ghost-btn }}
+
+组合按钮
+
+{{ group-btn }}
+
+通栏按钮
+
+{{ block-btn }}
+
+### 02 组件状态
+
+按钮禁用态
+
+{{ disabled }}
+
+### 03 组件样式
+
+按钮尺寸
+
+{{ size }}
+
+按钮形状
+
+{{ shape }}
+
+按钮主题
+
+{{ theme }}
+
+## API
+### Button Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+block | Boolean | false | 是否为块级元素 | N
+content | String / Slot | - | 按钮内容 | N
+custom-dataset | Object | - | 自定义 dataset,可通过 event.currentTarget.dataset.custom 获取。TS 类型:`any` | N
+disabled | Boolean | false | 禁用状态 | N
+external-classes | Array | - | 组件类名。`['t-class', 't-class-icon', 't-class-loading']` | N
+ghost | Boolean | false | 是否为幽灵按钮(镂空按钮) | N
+icon | String / Object | - | 图标名称。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+loading | Boolean | false | 是否显示为加载状态 | N
+loading-props | Object | - | 透传至 Loading 组件。TS 类型:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/button/type.ts) | N
+shape | String | rectangle | 按钮形状,有 4 种:长方形、正方形、圆角长方形、圆形。可选项:rectangle/square/round/circle | N
+size | String | medium | 组件尺寸。可选项:extra-small/small/medium/large。TS 类型:`SizeEnum` | N
+suffix | Slot | - | 右侧内容,可用于定义右侧图标 | N
+theme | String | default | 组件风格,依次为品牌色、危险色。可选项:default/primary/danger/light | N
+type | String | - | 同小程序的 formType。可选项:submit/reset | N
+variant | String | base | 按钮形式,基础、线框、文字。可选项:base/outline/dashed/text | N
+open-type | String | - | 微信开放能力。
具体释义:
`contact` 打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息,具体说明 (*小程序插件中不能使用*);
`share` 触发用户转发,使用前建议先阅读使用指引;
`getPhoneNumber` 获取用户手机号,可以从 bindgetphonenumber 回调中获取到用户信息,具体说明 (*小程序插件中不能使用*);
`getUserInfo` 获取用户信息,可以从 bindgetuserinfo 回调中获取到用户信息 (*小程序插件中不能使用*);
`launchApp` 打开APP,可以通过 app-parameter 属性设定向 APP 传的参数具体说明;
`openSetting` 打开授权设置页;
`feedback` 打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容;
`chooseAvatar` 获取用户头像,可以从 bindchooseavatar 回调中获取到头像信息。
[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/button.html)。可选项:contact/share/getPhoneNumber/getUserInfo/launchApp/openSetting/feedback/chooseAvatar | N
+hover-class | String | '' | 指定按钮按下去的样式类,按钮不为加载或禁用状态时有效。当 `hover-class="none"` 时,没有点击态效果 | N
+hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态 | N
+hover-start-time | Number | 20 | 按住后多久出现点击态,单位毫秒 | N
+hover-stay-time | Number | 70 | 手指松开后点击态保留时间,单位毫秒 | N
+lang | String | en | 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。。
具体释义:
`en` 英文;
`zh_CN` 简体中文;
`zh_TW` 繁体中文。
[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/button.html)。可选项:en/zh_CN/zh_TW | N
+session-from | String | - | 会话来源,open-type="contact"时有效 | N
+send-message-title | String | 当前标题 | 会话内消息卡片标题,open-type="contact"时有效 | N
+send-message-path | String | 当前分享路径 | 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 | N
+send-message-img | String | 截图 | 会话内消息卡片图片,open-type="contact"时有效 | N
+app-parameter | String | - | 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 | N
+show-message-card | Boolean | false | 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效 | N
+bindgetuserinfo | Eventhandle | - | 用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与wx.getUserInfo返回的一致,open-type="getUserInfo"时有效 | N
+bindcontact | Eventhandle | - | 客服消息回调,open-type="contact"时有效 | N
+bindgetphonenumber | Eventhandle | - | 获取用户手机号回调,open-type=getPhoneNumber时有效 | N
+binderror | Eventhandle | - | 当使用开放能力时,发生错误的回调,open-type=launchApp时有效 | N
+bindopensetting | Eventhandle | - | 在打开授权设置页后回调,open-type=openSetting时有效 | N
+bindlaunchapp | Eventhandle | - | 打开 APP 成功的回调,open-type=launchApp时有效 | N
+bindchooseavatar | Eventhandle | - | 获取用户头像回调,open-type=chooseAvatar时有效 | N
+
+### Button Events
+
+名称 | 参数 | 描述
+-- | -- | --
+tap | `event` | 点击按钮,当按钮不为加载或禁用状态时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/button/button.d.ts b/miniprogram_npm/tdesign-miniprogram/button/button.d.ts
new file mode 100644
index 0000000..64c6cbe
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/button.d.ts
@@ -0,0 +1,35 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdButtonProps } from './type';
+export interface ButtonProps extends TdButtonProps {
+}
+export default class Button extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ properties: TdButtonProps;
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ className: string;
+ classPrefix: string;
+ };
+ observers: {
+ 'theme, size, plain, block, shape, disabled, loading'(): void;
+ icon(icon: any): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ setClass(): void;
+ getuserinfo(e: any): void;
+ contact(e: any): void;
+ getphonenumber(e: any): void;
+ error(e: any): void;
+ opensetting(e: any): void;
+ launchapp(e: any): void;
+ chooseavatar(e: any): void;
+ handleTap(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/button/button.js b/miniprogram_npm/tdesign-miniprogram/button/button.js
new file mode 100644
index 0000000..c33131a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/button.js
@@ -0,0 +1,97 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { canIUseFormFieldButton } from '../common/version';
+import { setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-button`;
+let Button = class Button extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-icon`, `${prefix}-class-loading`];
+ this.behaviors = canIUseFormFieldButton() ? ['wx://form-field-button'] : [];
+ this.properties = props;
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ className: '',
+ classPrefix: name,
+ };
+ this.observers = {
+ 'theme, size, plain, block, shape, disabled, loading'() {
+ this.setClass();
+ },
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ };
+ this.methods = {
+ setClass() {
+ const classList = [
+ name,
+ `${prefix}-class`,
+ `${name}--${this.data.variant || 'base'}`,
+ `${name}--${this.data.theme || 'default'}`,
+ `${name}--${this.data.shape || 'rectangle'}`,
+ `${name}--size-${this.data.size || 'medium'}`,
+ ];
+ if (this.data.block) {
+ classList.push(`${name}--block`);
+ }
+ if (this.data.disabled) {
+ classList.push(`${name}--disabled`);
+ }
+ if (this.data.ghost) {
+ classList.push(`${name}--ghost`);
+ }
+ this.setData({
+ className: classList.join(' '),
+ });
+ },
+ getuserinfo(e) {
+ this.triggerEvent('getuserinfo', e.detail);
+ },
+ contact(e) {
+ this.triggerEvent('contact', e.detail);
+ },
+ getphonenumber(e) {
+ this.triggerEvent('getphonenumber', e.detail);
+ },
+ error(e) {
+ this.triggerEvent('error', e.detail);
+ },
+ opensetting(e) {
+ this.triggerEvent('opensetting', e.detail);
+ },
+ launchapp(e) {
+ this.triggerEvent('launchapp', e.detail);
+ },
+ chooseavatar(e) {
+ this.triggerEvent('chooseavatar', e.detail);
+ },
+ handleTap(e) {
+ if (this.data.disabled || this.data.loading)
+ return;
+ this.triggerEvent('tap', e);
+ },
+ };
+ }
+};
+Button = __decorate([
+ wxComponent()
+], Button);
+export default Button;
diff --git a/miniprogram_npm/tdesign-miniprogram/button/button.json b/miniprogram_npm/tdesign-miniprogram/button/button.json
new file mode 100644
index 0000000..708bd1b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/button.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-loading": "../loading/loading"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/button/button.wxml b/miniprogram_npm/tdesign-miniprogram/button/button.wxml
new file mode 100644
index 0000000..eefa0f3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/button.wxml
@@ -0,0 +1,59 @@
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/button/button.wxss b/miniprogram_npm/tdesign-miniprogram/button/button.wxss
new file mode 100644
index 0000000..3628ff8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/button.wxss
@@ -0,0 +1,451 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-button--size-extra-small {
+ font-size: var(--td-button-extra-small-font-size, var(--td-font-size-base, 28rpx));
+ padding-left: var(--td-button-extra-small-padding-horizontal, 16rpx);
+ padding-right: var(--td-button-extra-small-padding-horizontal, 16rpx);
+ height: var(--td-button-extra-small-height, 56rpx);
+ line-height: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--size-extra-small .t-button__icon {
+ font-size: var(--td-button-extra-small-icon-font-size, 36rpx);
+}
+.t-button--size-small {
+ font-size: var(--td-button-small-font-size, var(--td-font-size-base, 28rpx));
+ padding-left: var(--td-button-small-padding-horizontal, 24rpx);
+ padding-right: var(--td-button-small-padding-horizontal, 24rpx);
+ height: var(--td-button-small-height, 64rpx);
+ line-height: var(--td-button-small-height, 64rpx);
+}
+.t-button--size-small .t-button__icon {
+ font-size: var(--td-button-small-icon-font-size, 36rpx);
+}
+.t-button--size-medium {
+ font-size: var(--td-button-medium-font-size, var(--td-font-size-m, 32rpx));
+ padding-left: var(--td-button-medium-padding-horizontal, 32rpx);
+ padding-right: var(--td-button-medium-padding-horizontal, 32rpx);
+ height: var(--td-button-medium-height, 80rpx);
+ line-height: var(--td-button-medium-height, 80rpx);
+}
+.t-button--size-medium .t-button__icon {
+ font-size: var(--td-button-medium-icon-font-size, 40rpx);
+}
+.t-button--size-large {
+ font-size: var(--td-button-large-font-size, var(--td-font-size-m, 32rpx));
+ padding-left: var(--td-button-large-padding-horizontal, 40rpx);
+ padding-right: var(--td-button-large-padding-horizontal, 40rpx);
+ height: var(--td-button-large-height, 96rpx);
+ line-height: var(--td-button-large-height, 96rpx);
+}
+.t-button--size-large .t-button__icon {
+ font-size: var(--td-button-large-icon-font-size, 48rpx);
+}
+.t-button--default {
+ color: var(--td-button-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background-color: var(--td-button-default-bg-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--default::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-default-border-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--default.t-button--hover {
+ z-index: 0;
+}
+.t-button--default.t-button--hover::after {
+ background-color: var(--td-button-default-active-bg-color, var(--td-bg-color-component-active, var(--td-gray-color-6, #a6a6a6)));
+ border-color: var(--td-button-default-active-border-color, var(--td-bg-color-component-active, var(--td-gray-color-6, #a6a6a6)));
+}
+.t-button--default.t-button--disabled {
+ color: var(--td-button-default-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-button-default-disabled-bg, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-button--default.t-button--disabled::after {
+ border-color: var(--td-button-default-disabled-border-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-button--primary {
+ color: var(--td-button-primary-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-primary-bg-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--primary::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-primary-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--primary.t-button--hover {
+ z-index: 0;
+}
+.t-button--primary.t-button--hover::after {
+ background-color: var(--td-button-primary-active-bg-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+ border-color: var(--td-button-primary-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--primary.t-button--disabled {
+ color: var(--td-button-primary-disabled-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-primary-disabled-bg, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--primary.t-button--disabled::after {
+ border-color: var(--td-button-primary-disabled-border-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--light {
+ color: var(--td-button-light-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-button-light-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--light::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-light-border-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--light.t-button--hover {
+ z-index: 0;
+}
+.t-button--light.t-button--hover::after {
+ background-color: var(--td-button-light-active-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ border-color: var(--td-button-light-active-border-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+}
+.t-button--light.t-button--disabled {
+ color: var(--td-button-light-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+ background-color: var(--td-button-light-disabled-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--light.t-button--disabled::after {
+ border-color: var(--td-button-light-disabled-border-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--danger {
+ color: var(--td-button-danger-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-danger-bg-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--danger::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-danger-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--danger.t-button--hover {
+ z-index: 0;
+}
+.t-button--danger.t-button--hover::after {
+ background-color: var(--td-button-danger-active-bg-color, var(--td-error-color-7, #ad352f));
+ border-color: var(--td-button-danger-active-border-color, var(--td-error-color-7, #ad352f));
+}
+.t-button--danger.t-button--disabled {
+ color: var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-danger-disabled-bg, var(--td-error-color-3, #ffb9b0));
+}
+.t-button--danger.t-button--disabled::after {
+ border-color: var(--td-button-danger-disabled-border-color, var(--td-error-color-3, #ffb9b0));
+}
+.t-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ white-space: nowrap;
+ text-align: center;
+ background-image: none;
+ transition: all 0.3s;
+ touch-action: manipulation;
+ border-radius: var(--td-button-border-radius, var(--td-radius-default, 12rpx));
+ outline: none;
+ font-family: PingFang SC, Microsoft YaHei, Arial Regular;
+ font-weight: var(--td-button-font-weight, 600);
+ vertical-align: top;
+ cursor: pointer;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-user-select: none;
+ user-select: none;
+ /* stylelint-disable-next-line */
+ -webkit-appearance: none;
+}
+.t-button::after {
+ border-radius: calc(var(--td-button-border-radius, var(--td-radius-default, 12rpx)) * 2);
+}
+.t-button--text {
+ color: var(--td-button-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background: none;
+}
+.t-button--text::after {
+ border: 0;
+}
+.t-button--text.t-button--hover::after {
+ background-color: var(--td-button-default-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--primary {
+ color: var(--td-button-primary-text-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background: none;
+}
+.t-button--text.t-button--primary.t-button--hover::after {
+ background-color: var(--td-button-primary-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--primary.t-button--disabled {
+ color: var(--td-button-primary-text-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+ background: none;
+}
+.t-button--text.t-button--danger {
+ color: var(--td-button-danger-text-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background: none;
+}
+.t-button--text.t-button--danger.t-button--hover::after {
+ background-color: var(--td-button-danger-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--danger.t-button--disabled {
+ color: var(--td-button-danger-text-disabled-color, var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff)));
+ background: none;
+}
+.t-button--text.t-button--light {
+ color: var(--td-button-light-text-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background: none;
+}
+.t-button--text.t-button--light.t-button--hover::after {
+ background-color: var(--td-button-light-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--disabled {
+ color: var(--td-button-default-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-button--ghost {
+ background-color: transparent;
+ color: var(--td-button-ghost-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-button--ghost::after {
+ border-color: var(--td-button-ghost-border-color, var(--td-button-ghost-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff))));
+}
+.t-button--ghost.t-button--hover::after {
+ background: none;
+}
+.t-button--ghost.t-button--primary {
+ color: var(--td-button-ghost-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--ghost.t-button--primary::after {
+ border-color: var(--td-button-ghost-primary-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--ghost.t-button--danger {
+ color: var(--td-button-ghost-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--ghost.t-button--danger::after {
+ border-color: var(--td-button-ghost-danger-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--ghost.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-ghost-disabled-color, rgba(255, 255, 255, 0.35));
+}
+.t-button--ghost.t-button--disabled::after {
+ border-color: var(--td-button-ghost-disabled-color, rgba(255, 255, 255, 0.35));
+}
+.t-button--outline {
+ color: var(--td-button-default-outline-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background-color: transparent;
+}
+.t-button--outline::after {
+ border-color: var(--td-button-default-outline-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--hover::after {
+ background-color: var(--td-button-default-outline-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-button-default-outline-active-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--disabled {
+ color: var(--td-button-default-outline-disabled-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--disabled::after {
+ border-color: var(--td-button-default-outline-disabled-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--primary {
+ color: var(--td-button-primary-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--outline.t-button--primary::after {
+ border-color: var(--td-button-primary-outline-border-color, var(--td-button-primary-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-button--outline.t-button--primary.t-button--hover {
+ color: var(--td-button-primary-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--primary.t-button--hover::after {
+ background-color: var(--td-button-primary-outline-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-button-primary-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--primary.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-primary-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--outline.t-button--primary.t-button--disabled::after {
+ border-color: var(--td-button-primary-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--outline.t-button--danger {
+ color: var(--td-button-danger-outline-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--outline.t-button--danger::after {
+ border-color: var(--td-button-danger-outline-border-color, var(--td-button-danger-outline-color, var(--td-error-color, var(--td-error-color-6, #d54941))));
+}
+.t-button--outline.t-button--danger.t-button--hover {
+ color: var(--td-button-danger-outline-active-border-color, var(--td-error-color-7, #ad352f));
+}
+.t-button--outline.t-button--danger.t-button--hover::after {
+ background-color: var(--td-button-danger-outline-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-button-danger-outline-active-border-color, var(--td-error-color-7, #ad352f));
+}
+.t-button--outline.t-button--danger.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-danger-outline-disabled-color, var(--td-error-color-3, #ffb9b0));
+}
+.t-button--outline.t-button--danger.t-button--disabled::after {
+ border-color: var(--td-button-danger-outline-disabled-color, var(--td-error-color-3, #ffb9b0));
+}
+.t-button--outline.t-button--light {
+ color: var(--td-button-light-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-button-light-outline-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--outline.t-button--light::after {
+ border-color: var(--td-button-light-outline-border-color, var(--td-button-light-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-button--outline.t-button--light.t-button--hover {
+ color: var(--td-button-light-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--light.t-button--hover::after {
+ background-color: var(--td-button-light-outline-active-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ border-color: var(--td-button-light-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--light.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-light-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--outline.t-button--light.t-button--disabled::after {
+ border-color: var(--td-button-light-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--dashed {
+ background-color: transparent;
+ border-style: dashed;
+}
+.t-button--dashed.t-button--primary {
+ color: var(--td-button-primary-dashed-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--dashed.t-button--primary::after {
+ border-color: var(--td-button-primary-dashed-border-color, var(--td-button-primary-dashed-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-button--dashed.t-button--primary.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-primary-dashed-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--dashed.t-button--primary.t-button--disabled::after {
+ border-color: var(--td-button-primary-dashed-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--dashed.t-button--danger {
+ color: var(--td-button-danger-dashed-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--dashed.t-button--danger::after {
+ border-color: var(--td-button-danger-dashed-border-color, var(--td-button-danger-dashed-color, var(--td-error-color, var(--td-error-color-6, #d54941))));
+}
+.t-button--dashed.t-button--danger.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-danger-dashed-disabled-color, var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff)));
+}
+.t-button--dashed.t-button--danger.t-button--disabled::after {
+ border-color: var(--td-button-danger-dashed-disabled-color, var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff)));
+}
+.t-button__loading + .t-button__content:not(:empty),
+.t-button__icon + .t-button__content:not(:empty) {
+ margin-left: 8rpx;
+}
+.t-button__icon {
+ border-radius: var(--td-button-icon-border-radius, 8rpx);
+}
+.t-button--round.t-button--size-large {
+ border-radius: calc(var(--td-button-large-height, 96rpx) / 2);
+}
+.t-button--round.t-button--size-large::after {
+ border-radius: var(--td-button-large-height, 96rpx);
+}
+.t-button--round.t-button--size-medium {
+ border-radius: calc(var(--td-button-medium-height, 80rpx) / 2);
+}
+.t-button--round.t-button--size-medium::after {
+ border-radius: var(--td-button-medium-height, 80rpx);
+}
+.t-button--round.t-button--size-small {
+ border-radius: calc(var(--td-button-small-height, 64rpx) / 2);
+}
+.t-button--round.t-button--size-small::after {
+ border-radius: var(--td-button-small-height, 64rpx);
+}
+.t-button--round.t-button--size-extra-small {
+ border-radius: calc(var(--td-button-extra-small-height, 56rpx) / 2);
+}
+.t-button--round.t-button--size-extra-small::after {
+ border-radius: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--square {
+ padding: 0;
+}
+.t-button--square.t-button--size-large {
+ width: var(--td-button-large-height, 96rpx);
+}
+.t-button--square.t-button--size-medium {
+ width: var(--td-button-medium-height, 80rpx);
+}
+.t-button--square.t-button--size-small {
+ width: var(--td-button-small-height, 64rpx);
+}
+.t-button--square.t-button--size-extra-small {
+ width: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--circle {
+ padding: 0;
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-large {
+ width: var(--td-button-large-height, 96rpx);
+}
+.t-button--circle.t-button--size-large::after {
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-medium {
+ width: var(--td-button-medium-height, 80rpx);
+}
+.t-button--circle.t-button--size-medium::after {
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-small {
+ width: var(--td-button-small-height, 64rpx);
+}
+.t-button--circle.t-button--size-small::after {
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-extra-small {
+ width: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--circle.t-button--size-extra-small::after {
+ border-radius: 50%;
+}
+.t-button--block {
+ display: flex;
+ width: 100%;
+}
+.t-button--disabled {
+ cursor: not-allowed;
+}
+.t-button__loading--wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-button__loading--indicator {
+ color: var(--td-font-white-1, #ffffff);
+}
+.t-button.t-button--hover::after {
+ z-index: -1;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/button/index.d.ts b/miniprogram_npm/tdesign-miniprogram/button/index.d.ts
new file mode 100644
index 0000000..beb0ad5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/index.d.ts
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './button';
diff --git a/miniprogram_npm/tdesign-miniprogram/button/index.js b/miniprogram_npm/tdesign-miniprogram/button/index.js
new file mode 100644
index 0000000..beb0ad5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/index.js
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './button';
diff --git a/miniprogram_npm/tdesign-miniprogram/button/props.d.ts b/miniprogram_npm/tdesign-miniprogram/button/props.d.ts
new file mode 100644
index 0000000..00dc5fb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/props.d.ts
@@ -0,0 +1,3 @@
+import { TdButtonProps } from './type';
+declare const props: TdButtonProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/button/props.js b/miniprogram_npm/tdesign-miniprogram/button/props.js
new file mode 100644
index 0000000..211af35
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/props.js
@@ -0,0 +1,100 @@
+const props = {
+ block: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ customDataset: {
+ type: null,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ ghost: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ loading: {
+ type: Boolean,
+ value: false,
+ },
+ loadingProps: {
+ type: Object,
+ },
+ shape: {
+ type: String,
+ value: 'rectangle',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ type: {
+ type: String,
+ },
+ variant: {
+ type: String,
+ value: 'base',
+ },
+ openType: {
+ type: String,
+ },
+ hoverClass: {
+ type: String,
+ value: '',
+ },
+ hoverStopPropagation: {
+ type: Boolean,
+ value: false,
+ },
+ hoverStartTime: {
+ type: Number,
+ value: 20,
+ },
+ hoverStayTime: {
+ type: Number,
+ value: 70,
+ },
+ lang: {
+ type: String,
+ value: 'en',
+ },
+ sessionFrom: {
+ type: String,
+ value: '',
+ },
+ sendMessageTitle: {
+ type: String,
+ value: '',
+ },
+ sendMessagePath: {
+ type: String,
+ value: '',
+ },
+ sendMessageImg: {
+ type: String,
+ value: '',
+ },
+ appParameter: {
+ type: String,
+ value: '',
+ },
+ showMessageCard: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/button/type.d.ts b/miniprogram_npm/tdesign-miniprogram/button/type.d.ts
new file mode 100644
index 0000000..884b01f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/type.d.ts
@@ -0,0 +1,108 @@
+import { LoadingProps } from '../loading/index';
+import { SizeEnum } from '../common/common';
+export interface TdButtonProps {
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ customDataset?: {
+ type: ObjectConstructor;
+ value?: any;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-loading'];
+ };
+ ghost?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ loadingProps?: {
+ type: ObjectConstructor;
+ value?: LoadingProps;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'rectangle' | 'square' | 'round' | 'circle';
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'primary' | 'danger';
+ };
+ type?: {
+ type: StringConstructor;
+ value?: 'submit' | 'reset';
+ };
+ variant?: {
+ type: StringConstructor;
+ value?: 'base' | 'outline' | 'text';
+ };
+ openType?: {
+ type: StringConstructor;
+ value?: 'contact' | 'share' | 'getPhoneNumber' | 'getUserInfo' | 'launchApp' | 'openSetting' | 'feedback' | 'chooseAvatar';
+ };
+ hoverClass?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ hoverStopPropagation?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ hoverStartTime?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ hoverStayTime?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ lang?: {
+ type: StringConstructor;
+ value?: 'en' | 'zh_CN' | 'zh_TW';
+ };
+ sessionFrom?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ sendMessageTitle?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ sendMessagePath?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ sendMessageImg?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ appParameter?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ showMessageCard?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/button/type.js b/miniprogram_npm/tdesign-miniprogram/button/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/button/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/calendar/README.en-US.md
new file mode 100644
index 0000000..243946c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/README.en-US.md
@@ -0,0 +1,28 @@
+:: BASE_DOC ::
+
+## API
+### Calendar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+auto-close | Boolean | true | `0.34.0` | N
+confirm-btn | String / Object / Slot | '' | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+first-day-of-week | Number | 0 | \- | N
+format | Function | - | Typescript:`CalendarFormatType ` `type CalendarFormatType = (day: TDate) => TDate` `type TDateType = 'selected' \| 'disabled' \| 'start' \| 'centre' \| 'end' \| ''` `interface TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string;}`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+max-date | Number | - | \- | N
+min-date | Number | - | \- | N
+title | String / Slot | - | \- | N
+type | String | single | options:single/multiple/range | N
+use-popup | Boolean | true | `0.32.0` | N
+value | Number / Array | - | Typescript:`number \| number[]` | N
+default-value | Number / Array | undefined | uncontrolled property。Typescript:`number \| number[]` | N
+visible | Boolean | false | \- | N
+
+### Calendar Events
+
+name | params | description
+-- | -- | --
+change | `(value: timestamp)` | `0.28.0`
+close | `(trigger: CalendarTrigger)` | `0.34.0`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts)。
`type CalendarTrigger = 'close-btn' \| 'confirm-btn' \| 'overlay'`
+confirm | `(value: timestamp)` | \-
+select | `(value: timestamp)` | `0.28.0`
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/README.md b/miniprogram_npm/tdesign-miniprogram/calendar/README.md
new file mode 100644
index 0000000..bd1bf40
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/README.md
@@ -0,0 +1,80 @@
+---
+title: Calendar 日历
+description: 按照日历形式展示数据或日期的容器。
+spline: form
+isComponent: true
+---
+


+
+
+
+ 该组件于 0.22.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-calendar": "tdesign-miniprogram/calendar/calendar"
+}
+```
+
+## 代码演示
+
+### 组件类型
+#### 单个选择日期
+
+{{ base }}
+
+#### 多个选择日期
+
+{{ multiple }}
+
+#### 区间选择日期
+
+{{ range }}
+
+### 组件样式
+
+#### 自定义文案
+
+{{ custom-text }}
+
+#### 自定义区间
+
+{{ custom-range }}
+
+#### 不使用 Popup
+
+{{ without-popup }}
+
+## API
+### Calendar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+auto-close | Boolean | true | `0.34.0`。自动关闭;在点击关闭按钮、确认按钮、遮罩层时自动关闭,不需要手动设置 visible | N
+confirm-btn | String / Object / Slot | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+first-day-of-week | Number | 0 | 第一天从星期几开始,默认 0 = 周日 | N
+format | Function | - | 用于格式化日期的函数。TS 类型:`CalendarFormatType ` `type CalendarFormatType = (day: TDate) => TDate` `type TDateType = 'selected' \| 'disabled' \| 'start' \| 'centre' \| 'end' \| ''` `interface TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string;}`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+max-date | Number | - | 最大可选的日期,不传则默认半年后 | N
+min-date | Number | - | 最小可选的日期,不传则默认今天 | N
+title | String / Slot | - | 标题,不传默认为“请选择日期” | N
+type | String | single | 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择。可选项:single/multiple/range | N
+use-popup | Boolean | true | `0.32.0`。是否使用弹出层包裹日历 | N
+value | Number / Array | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。TS 类型:`number \| number[]` | N
+default-value | Number / Array | undefined | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。非受控属性。TS 类型:`number \| number[]` | N
+visible | Boolean | false | 是否显示日历;`usePopup` 为 true 时有效 | N
+
+### Calendar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: timestamp)` | `0.28.0`。不显示 confirm-btn 时,完成选择时触发(暂不支持 type = multiple)
+close | `(trigger: CalendarTrigger)` | `0.34.0`。关闭按钮时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts)。
`type CalendarTrigger = 'close-btn' \| 'confirm-btn' \| 'overlay'`
+confirm | `(value: timestamp)` | 点击确认按钮时触发
+select | `(value: timestamp)` | `0.28.0`。点击日期时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/calendar.d.ts b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.d.ts
new file mode 100644
index 0000000..8e97fad
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.d.ts
@@ -0,0 +1,44 @@
+///
+import { SuperComponent } from '../common/src/index';
+import { TdCalendarProps } from './type';
+export interface CalendarProps extends TdCalendarProps {
+}
+export default class Calendar extends SuperComponent {
+ externalClasses: string[];
+ options: WechatMiniprogram.Component.ComponentOptions;
+ properties: TdCalendarProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ months: any[];
+ scrollIntoView: string;
+ innerConfirmBtn: {
+ content: string;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ lifetimes: {
+ ready(): void;
+ };
+ observers: {
+ confirmBtn(v: any): void;
+ 'firstDayOfWeek,minDate,maxDate'(firstDayOfWeek: any, minDate: any, maxDate: any): void;
+ value(v: any): void;
+ visible(v: any): void;
+ format(v: any): void;
+ };
+ methods: {
+ initialValue(): void;
+ scrollIntoView(): void;
+ calcMonths(): void;
+ close(trigger: any): void;
+ onVisibleChange(): void;
+ handleClose(): void;
+ handleSelect(e: any): void;
+ onTplButtonTap(): void;
+ toTime(val: any): any;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/calendar.js b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.js
new file mode 100644
index 0000000..56c4ce4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.js
@@ -0,0 +1,165 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import TCalendar from '../common/shared/calendar/index';
+const { prefix } = config;
+const name = `${prefix}-calendar`;
+let Calendar = class Calendar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ styleIsolation: 'apply-shared',
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ months: [],
+ scrollIntoView: '',
+ innerConfirmBtn: { content: '确定' },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'confirm',
+ },
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.lifetimes = {
+ ready() {
+ this.base = new TCalendar(this.properties);
+ this.initialValue();
+ this.setData({
+ days: this.base.getDays(),
+ });
+ this.calcMonths();
+ },
+ };
+ this.observers = {
+ confirmBtn(v) {
+ if (typeof v === 'string') {
+ this.setData({ innerConfirmBtn: v === 'slot' ? 'slot' : { content: v } });
+ }
+ else if (typeof v === 'object') {
+ this.setData({ innerConfirmBtn: v });
+ }
+ },
+ 'firstDayOfWeek,minDate,maxDate'(firstDayOfWeek, minDate, maxDate) {
+ if (this.base) {
+ this.base.firstDayOfWeek = firstDayOfWeek;
+ this.base.minDate = minDate;
+ this.base.maxDate = maxDate;
+ this.calcMonths();
+ }
+ },
+ value(v) {
+ if (this.base) {
+ this.base.value = v;
+ }
+ },
+ visible(v) {
+ if (v) {
+ this.scrollIntoView();
+ if (this.base) {
+ this.base.value = this.data.value;
+ this.calcMonths();
+ }
+ }
+ },
+ format(v) {
+ this.base.format = v;
+ if (this.base && !this.data.usePopup) {
+ this.calcMonths();
+ }
+ },
+ };
+ this.methods = {
+ initialValue() {
+ const { value, type, minDate } = this.data;
+ if (!value) {
+ const today = new Date();
+ const now = minDate || new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime();
+ const initialValue = type === 'single' ? now : [now];
+ if (type === 'range') {
+ initialValue[1] = now + 24 * 3600 * 1000;
+ }
+ this.setData({
+ value: initialValue,
+ });
+ this.base.value = initialValue;
+ }
+ },
+ scrollIntoView() {
+ const { value } = this.data;
+ if (!value)
+ return;
+ const date = new Date(Array.isArray(value) ? value[0] : value);
+ if (date) {
+ this.setData({
+ scrollIntoView: `year_${date.getFullYear()}_month_${date.getMonth()}`,
+ });
+ }
+ },
+ calcMonths() {
+ const months = this.base.getMonths();
+ this.setData({
+ months,
+ });
+ },
+ close(trigger) {
+ if (this.data.autoClose) {
+ this.setData({ visible: false });
+ }
+ this.triggerEvent('close', { trigger });
+ },
+ onVisibleChange() {
+ this.close('overlay');
+ },
+ handleClose() {
+ this.close('close-btn');
+ },
+ handleSelect(e) {
+ const { date, year, month } = e.currentTarget.dataset;
+ if (date.type === 'disabled')
+ return;
+ const rawValue = this.base.select({ cellType: date.type, year, month, date: date.day });
+ const value = this.toTime(rawValue);
+ this.calcMonths();
+ if (this.data.confirmBtn == null) {
+ if (this.data.type === 'single' || rawValue.length === 2) {
+ this.setData({ visible: false });
+ this._trigger('change', { value });
+ }
+ }
+ this.triggerEvent('select', { value });
+ },
+ onTplButtonTap() {
+ const rawValue = this.base.getTrimValue();
+ const value = this.toTime(rawValue);
+ this.close('confirm-btn');
+ this._trigger('confirm', { value });
+ },
+ toTime(val) {
+ if (Array.isArray(val)) {
+ return val.map((item) => item.getTime());
+ }
+ return val.getTime();
+ },
+ };
+ }
+};
+Calendar = __decorate([
+ wxComponent()
+], Calendar);
+export default Calendar;
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/calendar.json b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.json
new file mode 100644
index 0000000..5f417b9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup",
+ "t-button": "../button/button",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxml b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxml
new file mode 100644
index 0000000..135766a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxs b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxs
new file mode 100644
index 0000000..8541482
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxs
@@ -0,0 +1,30 @@
+function getDateLabel(monthItem, dateItem) {
+ var weekdayText = ['日', '一', '二', '三', '四', '五', '六'];
+ var weekday = (monthItem.weekdayOfFirstDay + dateItem.day - 1) % 7;
+ var label = monthItem.month + 1 + '月' + dateItem.day + '日, 星期' + weekdayText[weekday];
+ if (dateItem.type === 'start') {
+ label = '开始日期:' + label;
+ }
+ if (dateItem.type === 'end') {
+ label = '结束日期:' + label;
+ }
+ if (isDateSelected(dateItem)) {
+ label = '已选中, ' + label;
+ }
+ if (dateItem.prefix) {
+ label += ', ' + dateItem.prefix;
+ }
+ if (dateItem.suffix) {
+ label += ', ' + dateItem.suffix;
+ }
+ return label;
+}
+
+function isDateSelected(dateItem) {
+ return ['start', 'end', 'selected', 'centre'].indexOf(dateItem.type) >= 0;
+}
+
+module.exports = {
+ getDateLabel: getDateLabel,
+ isDateSelected: isDateSelected,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxss b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxss
new file mode 100644
index 0000000..e0d2271
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/calendar.wxss
@@ -0,0 +1,187 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-calendar {
+ position: relative;
+ z-index: 9999;
+ background: var(--td-calendar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ overflow-x: hidden;
+}
+.t-calendar--popup {
+ border-top-left-radius: var(--td-calendar-radius, 24rpx);
+ border-top-right-radius: var(--td-calendar-radius, 24rpx);
+}
+.t-calendar__title {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: var(--td-calendar-title-font-size, 18px);
+ font-weight: 600;
+ color: var(--td-calendar-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ height: 52rpx;
+ padding: 32rpx;
+}
+.t-calendar__title:focus {
+ outline: 0;
+}
+.t-calendar__close-btn {
+ position: absolute;
+ top: 32rpx;
+ right: 32rpx;
+ margin: -24rpx;
+ padding: 24rpx;
+}
+.t-calendar__days {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ grid-column-gap: 8rpx;
+ padding: 0 32rpx;
+ text-align: center;
+ line-height: 92rpx;
+}
+.t-calendar__days-item {
+ height: 92rpx;
+ font-size: 28rpx;
+ color: var(--td-calendar-days-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-calendar__content {
+ min-height: 400rpx;
+ display: flex;
+ flex-direction: column;
+}
+.t-calendar__month {
+ font-size: 28rpx;
+ color: var(--td-calendar-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: 600;
+ padding: 32rpx 0 0;
+}
+.t-calendar__months {
+ height: 60vh;
+ padding: 0 32rpx 32rpx;
+ box-sizing: border-box;
+}
+.t-calendar__months::-webkit-scrollbar {
+ display: none;
+}
+.t-calendar__dates {
+ flex: 1;
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ grid-column-gap: 8rpx;
+}
+.t-calendar__dates-item {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 32rpx;
+ border-radius: 16rpx;
+ height: 120rpx;
+ line-height: 48rpx;
+ font-weight: 600;
+ margin-top: 16rpx;
+ cursor: pointer;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-user-select: none;
+ user-select: none;
+}
+.t-calendar__dates-item-prefix,
+.t-calendar__dates-item-suffix {
+ position: absolute;
+ font-size: 20rpx;
+ line-height: 32rpx;
+ width: 100%;
+ text-align: center;
+ font-weight: 400;
+}
+.t-calendar__dates-item-prefix {
+ top: 8rpx;
+}
+.t-calendar__dates-item-suffix {
+ bottom: 8rpx;
+ color: var(--td-calendar-item-suffix-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-calendar__dates-item-suffix--selected,
+.t-calendar__dates-item-suffix--start,
+.t-calendar__dates-item-suffix--end {
+ color: var(--td-calendar-selected-color, var(--td-font-white-1, #ffffff));
+}
+.t-calendar__dates-item-suffix--disabled {
+ color: var(--td-calendar-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-calendar__dates-item--selected,
+.t-calendar__dates-item--start,
+.t-calendar__dates-item--end {
+ background: var(--td-calendar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ color: var(--td-calendar-selected-color, var(--td-font-white-1, #ffffff));
+ border-radius: 8rpx;
+}
+.t-calendar__dates-item--start {
+ border-radius: 8rpx 0 0 8rpx;
+}
+.t-calendar__dates-item--end {
+ border-radius: 0 8rpx 8rpx 0;
+}
+.t-calendar__dates-item--start + .t-calendar__dates-item--end::before {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ width: 8rpx;
+ height: 100%;
+ background: var(--td-calendar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-calendar__dates-item--start + .t-calendar__dates-item--end:before {
+ left: -8rpx;
+}
+.t-calendar__dates-item--centre {
+ border-radius: 0;
+ background-color: var(--td-calendar-item-centre-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-calendar__dates-item--centre::before,
+.t-calendar__dates-item--centre::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ width: 8rpx;
+ height: 100%;
+ background-color: var(--td-calendar-item-centre-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-calendar__dates-item--centre:before {
+ left: -8rpx;
+}
+.t-calendar__dates-item--centre:after {
+ right: -8rpx;
+}
+.t-calendar__dates-item--disabled {
+ color: var(--td-calendar-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ cursor: default;
+}
+.t-calendar__footer {
+ padding: 32rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/index.d.ts b/miniprogram_npm/tdesign-miniprogram/calendar/index.d.ts
new file mode 100644
index 0000000..cf0e3b8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/index.d.ts
@@ -0,0 +1,2 @@
+export * from './type';
+export * from './calendar';
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/index.js b/miniprogram_npm/tdesign-miniprogram/calendar/index.js
new file mode 100644
index 0000000..cf0e3b8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/index.js
@@ -0,0 +1,2 @@
+export * from './type';
+export * from './calendar';
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/props.d.ts b/miniprogram_npm/tdesign-miniprogram/calendar/props.d.ts
new file mode 100644
index 0000000..a42879c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCalendarProps } from './type';
+declare const props: TdCalendarProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/props.js b/miniprogram_npm/tdesign-miniprogram/calendar/props.js
new file mode 100644
index 0000000..7856249
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/props.js
@@ -0,0 +1,50 @@
+const props = {
+ autoClose: {
+ type: Boolean,
+ value: true,
+ },
+ confirmBtn: {
+ type: null,
+ value: '',
+ },
+ style: {
+ type: String,
+ value: '',
+ },
+ firstDayOfWeek: {
+ type: Number,
+ value: 0,
+ },
+ format: {
+ type: null,
+ },
+ maxDate: {
+ type: Number,
+ },
+ minDate: {
+ type: Number,
+ },
+ title: {
+ type: String,
+ },
+ type: {
+ type: String,
+ value: 'single',
+ },
+ usePopup: {
+ type: Boolean,
+ value: true,
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/template.wxml b/miniprogram_npm/tdesign-miniprogram/calendar/template.wxml
new file mode 100644
index 0000000..81eeb91
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/template.wxml
@@ -0,0 +1,71 @@
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/calendar/type.d.ts
new file mode 100644
index 0000000..a751960
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/type.d.ts
@@ -0,0 +1,65 @@
+import { ButtonProps } from '../button/index';
+export interface TdCalendarProps {
+ autoClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmBtn?: {
+ type: null;
+ value?: string | ButtonProps | null;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ firstDayOfWeek?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ format?: {
+ type: undefined;
+ value?: CalendarFormatType;
+ };
+ maxDate?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ minDate?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ type?: {
+ type: StringConstructor;
+ value?: 'single' | 'multiple' | 'range';
+ };
+ usePopup?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ value?: {
+ type: null;
+ value?: number | number[];
+ };
+ defaultValue?: {
+ type: null;
+ value?: number | number[];
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export declare type CalendarFormatType = (day: TDate) => TDate;
+export declare type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | '';
+export interface TDate {
+ date: Date;
+ day: number;
+ type: TDateType;
+ className?: string;
+ prefix?: string;
+ suffix?: string;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/calendar/type.js b/miniprogram_npm/tdesign-miniprogram/calendar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/calendar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/cascader/README.en-US.md
new file mode 100644
index 0000000..45c9106
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### Cascader Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | true | \- | N
+keys | Object | - | Typescript:`KeysType` | N
+options | Array | [] | Typescript:`Array` | N
+sub-titles | Array | [] | Typescript:`Array` | N
+theme | String | step | options:step/tab | N
+title | String / Slot | - | \- | N
+value | String / Number | null | \- | N
+default-value | String / Number | undefined | uncontrolled property | N
+visible | Boolean | false | \- | N
+
+### Cascader Events
+
+name | params | description
+-- | -- | --
+change | `(value: string \| number, selectedOptions: string[])` | `1.0.1`
+close | `(trigger: TriggerSource)` | `1.0.1`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/cascader/type.ts)。
`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`
+pick | `(value: string \| number, index: number)` | `1.0.1`
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/README.md b/miniprogram_npm/tdesign-miniprogram/cascader/README.md
new file mode 100644
index 0000000..a5f543a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/README.md
@@ -0,0 +1,70 @@
+---
+title: Cascader 级联选择器
+description: 级联选择器适用于有清晰层级结构的数据集合,用户可以通过逐级查看并选择。
+spline: form
+isComponent: true
+---
+
+
+
+ 该组件于 0.23.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-cascader": "tdesign-miniprogram/cascader/cascader"
+}
+```
+
+## 代码演示
+
+### 基础用法
+
+{{ base }}
+
+### 选项卡风格
+
+{{ theme-tab }}
+
+### 进阶
+
+#### 带初始值
+
+{{ with-value }}
+
+#### 自定义 keys
+
+{{ keys }}
+
+#### 使用次级标题
+
+{{ with-title }}
+
+## API
+### Cascader Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | true | 关闭按钮 | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+options | Array | [] | 可选项数据源。TS 类型:`Array` | N
+sub-titles | Array | [] | 每级展示的次标题。TS 类型:`Array` | N
+theme | String | step | 展示风格。可选项:step/tab | N
+title | String / Slot | - | 标题 | N
+value | String / Number | null | 选项值 | N
+default-value | String / Number | undefined | 选项值。非受控属性 | N
+visible | Boolean | false | 是否展示 | N
+
+### Cascader Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: string \| number, selectedOptions: string[])` | `1.0.1`。值发生变更时触发
+close | `(trigger: TriggerSource)` | `1.0.1`。关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/cascader/type.ts)。
`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`
+pick | `(value: string \| number, index: number)` | `1.0.1`。选择后触发
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/cascader.d.ts b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.d.ts
new file mode 100644
index 0000000..de3b6d5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.d.ts
@@ -0,0 +1,40 @@
+///
+import { SuperComponent } from '../common/src/index';
+import { TdCascaderProps } from './type';
+export interface CascaderProps extends TdCascaderProps {
+}
+export default class Cascader extends SuperComponent {
+ externalClasses: string[];
+ options: WechatMiniprogram.Component.ComponentOptions;
+ properties: TdCascaderProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ name: string;
+ stepIndex: number;
+ selectedIndexes: any[];
+ selectedValue: any[];
+ defaultOptionLabel: string;
+ scrollTopList: any[];
+ steps: string[];
+ };
+ observers: {
+ visible(v: any): void;
+ 'selectedIndexes, options'(): void;
+ stepIndex(): Promise;
+ };
+ methods: {
+ initWithValue(): void;
+ getIndexesByValue(options: import("../common/common").TreeOptionData[], value: any): any[];
+ updateScrollTop(): void;
+ hide(trigger: any): void;
+ onVisibleChange(): void;
+ onClose(): void;
+ onStepClick(e: any): void;
+ onTabChange(e: any): void;
+ handleSelect(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/cascader.js b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.js
new file mode 100644
index 0000000..0bc55d8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.js
@@ -0,0 +1,186 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-cascader`;
+const defaultOptionLabel = '选择选项';
+let Cascader = class Cascader extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ name,
+ stepIndex: 0,
+ selectedIndexes: [],
+ selectedValue: [],
+ defaultOptionLabel,
+ scrollTopList: [],
+ steps: [defaultOptionLabel],
+ };
+ this.observers = {
+ visible(v) {
+ if (v) {
+ const $tabs = this.selectComponent('#tabs');
+ $tabs === null || $tabs === void 0 ? void 0 : $tabs.setTrack();
+ this.updateScrollTop();
+ this.initWithValue();
+ }
+ },
+ 'selectedIndexes, options'() {
+ var _a, _b, _c, _d;
+ const { options, selectedIndexes, keys } = this.data;
+ const selectedValue = [];
+ const steps = [];
+ const items = [options];
+ if (options.length > 0) {
+ for (let i = 0, size = selectedIndexes.length; i < size; i += 1) {
+ const index = selectedIndexes[i];
+ const next = items[i][index];
+ selectedValue.push(next[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value']);
+ steps.push(next[(_b = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _b !== void 0 ? _b : 'label']);
+ if (next[(_c = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _c !== void 0 ? _c : 'children']) {
+ items.push(next[(_d = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _d !== void 0 ? _d : 'children']);
+ }
+ }
+ }
+ if (steps.length < items.length) {
+ steps.push(defaultOptionLabel);
+ }
+ this.setData({
+ steps,
+ items,
+ selectedValue,
+ stepIndex: items.length - 1,
+ });
+ },
+ stepIndex() {
+ return __awaiter(this, void 0, void 0, function* () {
+ const { visible } = this.data;
+ if (visible) {
+ this.updateScrollTop();
+ }
+ });
+ },
+ };
+ this.methods = {
+ initWithValue() {
+ if (this.data.value != null && this.data.value !== '') {
+ const selectedIndexes = this.getIndexesByValue(this.data.options, this.data.value);
+ if (selectedIndexes) {
+ this.setData({ selectedIndexes });
+ }
+ }
+ else {
+ this.setData({ selectedIndexes: [] });
+ }
+ },
+ getIndexesByValue(options, value) {
+ var _a, _b, _c;
+ const { keys } = this.data;
+ for (let i = 0, size = options.length; i < size; i += 1) {
+ const opt = options[i];
+ if (opt[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'] === value) {
+ return [i];
+ }
+ if (opt[(_b = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _b !== void 0 ? _b : 'children']) {
+ const res = this.getIndexesByValue(opt[(_c = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _c !== void 0 ? _c : 'children'], value);
+ if (res) {
+ return [i, ...res];
+ }
+ }
+ }
+ },
+ updateScrollTop() {
+ const { visible, items, selectedIndexes, stepIndex } = this.data;
+ if (visible) {
+ getRect(this, '.cascader-radio-group-0').then((rect) => {
+ var _a;
+ const eachRadioHeight = rect.height / ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.length);
+ this.setData({
+ [`scrollTopList[${stepIndex}]`]: eachRadioHeight * selectedIndexes[stepIndex],
+ });
+ });
+ }
+ },
+ hide(trigger) {
+ this.setData({ visible: false });
+ this.triggerEvent('close', { trigger: trigger });
+ },
+ onVisibleChange() {
+ this.hide('overlay');
+ },
+ onClose() {
+ this.hide('close-btn');
+ },
+ onStepClick(e) {
+ const { index } = e.currentTarget.dataset;
+ this.setData({ stepIndex: index });
+ },
+ onTabChange(e) {
+ const { value } = e.detail;
+ this.setData({
+ stepIndex: value,
+ });
+ },
+ handleSelect(e) {
+ var _a, _b, _c;
+ const { level } = e.target.dataset;
+ const { value } = e.detail;
+ const { selectedIndexes, items, keys } = this.data;
+ const index = items[level].findIndex((item) => { var _a; return item[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'] === value; });
+ const item = items[level][index];
+ if (item.disabled) {
+ return;
+ }
+ selectedIndexes[level] = index;
+ selectedIndexes.length = level + 1;
+ this.triggerEvent('pick', { value: item[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'], index, level });
+ if ((_c = item === null || item === void 0 ? void 0 : item[(_b = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _b !== void 0 ? _b : 'children']) === null || _c === void 0 ? void 0 : _c.length) {
+ this.setData({ selectedIndexes });
+ }
+ else {
+ this.setData({ selectedIndexes }, () => {
+ var _a;
+ const { items } = this.data;
+ this._trigger('change', {
+ value: item[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'],
+ selectedOptions: items.map((item, index) => item[selectedIndexes[index]]),
+ });
+ });
+ this.hide('finish');
+ }
+ },
+ };
+ }
+};
+Cascader = __decorate([
+ wxComponent()
+], Cascader);
+export default Cascader;
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/cascader.json b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.json
new file mode 100644
index 0000000..9fb1ae8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-popup": "../popup/popup",
+ "t-tabs": "../tabs/tabs",
+ "t-tab-panel": "../tab-panel/tab-panel",
+ "t-radio-group": "../radio-group/radio-group"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/cascader.wxml b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.wxml
new file mode 100644
index 0000000..af1d0a4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.wxml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+
+ {{subTitles[stepIndex]}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/cascader.wxss b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.wxss
new file mode 100644
index 0000000..72a758b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/cascader.wxss
@@ -0,0 +1,136 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-cascader {
+ display: flex;
+ flex-direction: column;
+ background-color: #fff;
+ color: var(--td-cascader-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-radius: 24rpx 24rpx 0 0;
+ --td-radio-icon-checked-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ --td-tab-item-active-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ --td-tab-track-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-cascader__close-btn {
+ right: 16px;
+ top: 12px;
+ position: absolute;
+}
+.t-cascader__title {
+ position: relative;
+ font-weight: 700;
+ text-align: center;
+ line-height: 48px;
+ font-size: var(--td-cascder-title-font-size, 36rpx);
+}
+.t-cascader__content {
+ width: 100%;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+.t-cascader__options {
+ width: 100vw;
+ height: var(--td-cascader-options-height, 640rpx);
+}
+.t-cascader__options-title {
+ margin-top: 40rpx;
+ color: var(--td-cascader-options-title-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: 28rpx;
+ line-height: 44rpx;
+ padding-left: 16px;
+}
+.t-cascader__options-content {
+ flex: 1;
+ height: 100%;
+ overflow: auto;
+ padding-left: 16px;
+}
+.t-cascader__options-container {
+ display: flex;
+ transition: all ease 0.3s;
+}
+.t-cascader__step {
+ display: flex;
+ align-items: center;
+ height: var(--td-cascader-step-height, 88rpx);
+}
+.t-cascader__steps {
+ padding: 0 32rpx 10rpx;
+ position: relative;
+}
+.t-cascader__steps::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-cascader-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-cascader__steps::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-cascader__step-dot {
+ position: relative;
+ width: var(--td-cascader-step-dot-size, 16rpx);
+ height: var(--td-cascader-step-dot-size, 16rpx);
+ border-radius: 50%;
+ border: 1px solid var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ box-sizing: border-box;
+}
+.t-cascader__step-dot:not(.t-cascader__step-dot--last)::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 50%;
+ top: calc(var(--td-cascader-step-dot-size, 16rpx) + 14rpx);
+ height: 36rpx;
+ width: 1px;
+ background: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ transform: translateX(-50%);
+}
+.t-cascader__step-dot--active {
+ background: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-cascader__step-label {
+ padding-left: 16px;
+ font-size: 16px;
+}
+.t-cascader__step-label--active {
+ color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: 600;
+}
+.t-cascader__step-arrow {
+ color: var(--td-cascader-step-arrow-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ margin-left: auto;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/props.d.ts b/miniprogram_npm/tdesign-miniprogram/cascader/props.d.ts
new file mode 100644
index 0000000..9009f89
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCascaderProps } from './type';
+declare const props: TdCascaderProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/props.js b/miniprogram_npm/tdesign-miniprogram/cascader/props.js
new file mode 100644
index 0000000..d2f12b9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/props.js
@@ -0,0 +1,37 @@
+const props = {
+ closeBtn: {
+ type: Boolean,
+ value: true,
+ },
+ keys: {
+ type: Object,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ subTitles: {
+ type: Array,
+ value: [],
+ },
+ theme: {
+ type: String,
+ value: 'step',
+ },
+ title: {
+ type: String,
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: null,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/type.d.ts b/miniprogram_npm/tdesign-miniprogram/cascader/type.d.ts
new file mode 100644
index 0000000..624c2c5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/type.d.ts
@@ -0,0 +1,39 @@
+import { TreeOptionData, KeysType } from '../common/common';
+export interface TdCascaderProps {
+ closeBtn?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ subTitles?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'step' | 'tab';
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: null;
+ value?: string | number;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cascader/type.js b/miniprogram_npm/tdesign-miniprogram/cascader/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cascader/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.d.ts b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.d.ts
new file mode 100644
index 0000000..0cba376
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.d.ts
@@ -0,0 +1,16 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class CellGroup extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ options: {
+ addGlobalClass: boolean;
+ };
+ properties: import("./type").TdCellGroupProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ methods: {
+ updateLastChid(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.js b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.js
new file mode 100644
index 0000000..ef3afc1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.js
@@ -0,0 +1,43 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-cell-group`;
+let CellGroup = class CellGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-title`];
+ this.relations = {
+ '../cell/cell': {
+ type: 'child',
+ linked() {
+ this.updateLastChid();
+ },
+ },
+ };
+ this.options = {
+ addGlobalClass: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.methods = {
+ updateLastChid() {
+ const items = this.$children;
+ items.forEach((child, index) => child.setData({ isLastChild: index === items.length - 1 }));
+ },
+ };
+ }
+};
+CellGroup = __decorate([
+ wxComponent()
+], CellGroup);
+export default CellGroup;
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.json b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.wxml b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.wxml
new file mode 100644
index 0000000..7f19c00
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.wxml
@@ -0,0 +1,9 @@
+
+
+ {{ title }}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.wxss b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.wxss
new file mode 100644
index 0000000..f9fc0cc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/cell-group.wxss
@@ -0,0 +1,68 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-cell-group {
+ position: relative;
+}
+.t-cell-group__title {
+ font-family: PingFangSC-Regular;
+ font-size: var(--td-cell-group-title-font-size, 28rpx);
+ color: var(--td-cell-group-title-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ text-align: left;
+ line-height: var(--td-cell-group-title-line-height, 90rpx);
+ background-color: var(--td-cell-group-title-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ padding-left: var(--td-cell-group-title-padding-left, 32rpx);
+}
+.t-cell-group--bordered::before {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ top: 0;
+ border-top: 1px solid var(--td-cell-group-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+ z-index: 1;
+}
+.t-cell-group--bordered::after {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ border-bottom: 1px solid var(--td-cell-group-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+ z-index: 1;
+}
+.t-cell-group--card {
+ margin: 0 32rpx;
+ border-radius: var(--td-radius-large, 18rpx);
+ overflow: hidden;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/props.d.ts b/miniprogram_npm/tdesign-miniprogram/cell-group/props.d.ts
new file mode 100644
index 0000000..4c4a9d0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCellGroupProps } from './type';
+declare const props: TdCellGroupProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/props.js b/miniprogram_npm/tdesign-miniprogram/cell-group/props.js
new file mode 100644
index 0000000..c8d887e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/props.js
@@ -0,0 +1,17 @@
+const props = {
+ bordered: {
+ type: Boolean,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/type.d.ts b/miniprogram_npm/tdesign-miniprogram/cell-group/type.d.ts
new file mode 100644
index 0000000..4c111da
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/type.d.ts
@@ -0,0 +1,22 @@
+export interface TdCellGroupProps {
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'card';
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell-group/type.js b/miniprogram_npm/tdesign-miniprogram/cell-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/cell/README.en-US.md
new file mode 100644
index 0000000..ed037d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/README.en-US.md
@@ -0,0 +1,27 @@
+:: BASE_DOC ::
+
+## API
+### Cell Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | middle | options:top/middle/bottom | N
+arrow | Boolean | false | \- | N
+bordered | Boolean | true | \- | N
+description | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-title', 't-class-note', 't-class-description', 't-class-thumb', 't-class-hover', 't-class-left', 't-class-right']` | N
+hover | Boolean | - | \- | N
+image | String / Slot | - | \- | N
+jump-type | String | navigateTo | options:switchTab/reLaunch/redirectTo/navigateTo | N
+left-icon | String / Slot | - | \- | N
+note | String / Slot | - | \- | N
+required | Boolean | false | \- | N
+right-icon | String / Slot | - | \- | N
+title | String / Slot | - | \- | N
+url | String | - | \- | N
+
+### Cell Events
+
+name | params | description
+-- | -- | --
+click | - | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/README.md b/miniprogram_npm/tdesign-miniprogram/cell/README.md
new file mode 100644
index 0000000..fda3de0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/README.md
@@ -0,0 +1,74 @@
+---
+title: Cell 单元格
+description: 用于各个类别行的信息展示。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-cell": "tdesign-miniprogram/cell/cell"
+}
+```
+
+## 代码演示
+
+### 类型
+
+单行单元格
+
+
+
+{{ base }}
+
+多行单元格
+
+
+
+{{ multiple }}
+
+### 样式
+
+卡片单元格
+
+{{ theme }}
+
+## API
+### Cell Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | middle | 内容的对齐方式,默认居中对齐。可选项:top/middle/bottom | N
+arrow | Boolean | false | 是否显示右侧箭头 | N
+bordered | Boolean | true | 是否显示下边框 | N
+description | String / Slot | - | 下方内容描述 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、标题类名、下方描述内容类名、右侧说明文字类名、激活态类名、图片类名、左侧内容、左侧图标类名、右侧内容、右侧图标类名 等。`['t-class', 't-class-title', 't-class-description', 't-class-note', 't-class-hover', 't-class-image', 't-class-left', 't-class-left-icon', 't-class-right', 't-class-right-icon']` | N
+hover | Boolean | - | 是否开启点击反馈 | N
+image | String / Slot | - | 主图 | N
+jump-type | String | navigateTo | 链接跳转类型。可选项:switchTab/reLaunch/redirectTo/navigateTo | N
+left-icon | String / Slot | - | 左侧图标,出现在单元格标题的左侧 | N
+note | String / Slot | - | 和标题同行的说明文字 | N
+required | Boolean | false | 是否显示表单必填星号 | N
+right-icon | String / Slot | - | 最右侧图标 | N
+title | String / Slot | - | 标题 | N
+url | String | - | 点击后跳转链接地址。如果值为空,则表示不需要跳转 | N
+
+### Cell Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | - | 右侧内容
+
+### CellGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+bordered | Boolean | - | 是否显示组边框 | N
+external-classes | Array | - | 组件类名。`['t-class']` | N
+theme | String | default | 单元格风格。可选项:default/card | N
+title | String | - | 单元格组标题 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/cell.d.ts b/miniprogram_npm/tdesign-miniprogram/cell/cell.d.ts
new file mode 100644
index 0000000..192b303
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/cell.d.ts
@@ -0,0 +1,16 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Cell extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdCellProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ isLastChild: boolean;
+ };
+ onClick(e: any): void;
+ jumpLink(urlKey?: string, link?: string): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/cell.js b/miniprogram_npm/tdesign-miniprogram/cell/cell.js
new file mode 100644
index 0000000..940b3d2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/cell.js
@@ -0,0 +1,57 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-cell`;
+let Cell = class Cell extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-title`,
+ `${prefix}-class-description`,
+ `${prefix}-class-note`,
+ `${prefix}-class-hover`,
+ `${prefix}-class-image`,
+ `${prefix}-class-left`,
+ `${prefix}-class-left-icon`,
+ `${prefix}-class-right`,
+ `${prefix}-class-right-icon`,
+ ];
+ this.relations = {
+ '../cell-group/cell-group': {
+ type: 'parent',
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ isLastChild: false,
+ };
+ }
+ onClick(e) {
+ this.triggerEvent('click', e.detail);
+ this.jumpLink();
+ }
+ jumpLink(urlKey = 'url', link = 'jumpType') {
+ const url = this.data[urlKey];
+ const jumpType = this.data[link];
+ if (url) {
+ wx[jumpType]({ url });
+ }
+ }
+};
+Cell = __decorate([
+ wxComponent()
+], Cell);
+export default Cell;
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/cell.json b/miniprogram_npm/tdesign-miniprogram/cell/cell.json
new file mode 100644
index 0000000..9a40e60
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/cell.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/cell.wxml b/miniprogram_npm/tdesign-miniprogram/cell/cell.wxml
new file mode 100644
index 0000000..e154869
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/cell.wxml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ title}}
+
+
+ *
+
+
+
+
+ {{description}}
+
+
+
+
+
+ {{note}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss b/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss
new file mode 100644
index 0000000..c094df7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/cell.wxss
@@ -0,0 +1,122 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-cell {
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ width: 100%;
+ overflow: hidden;
+ padding: var(--td-cell-vertical-padding, 32rpx) var(--td-cell-horizontal-padding, 32rpx);
+ line-height: var(--td-cell-line-height, 48rpx);
+ height: var(--td-cell-height, auto);
+ background-color: var(--td-cell-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-cell::after {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ border-bottom: 1px solid var(--td-cell-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+ left: var(--td-border-left-space, var(--td-cell-horizontal-padding, 32rpx));
+ right: var(--td-border-right-space, 0);
+}
+.t-cell--borderless::after {
+ display: none;
+}
+.t-cell__description {
+ font-size: var(--td-cell-description-font-size, var(--td-font-size-base, 28rpx));
+ line-height: var(--td-cell-description-line-height, 44rpx);
+ color: var(--td-cell-description-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-cell__description-text {
+ margin-top: calc(var(--td-spacer, 16rpx) / 2);
+}
+.t-cell__note {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ color: var(--td-cell-note-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-cell-note-font-size, var(--td-font-size-m, 32rpx));
+}
+.t-cell__title,
+.t-cell__note {
+ flex: 1 1 auto;
+}
+.t-cell__title:empty,
+.t-cell__note:empty {
+ display: none;
+}
+.t-cell__title-text {
+ display: flex;
+ font-size: var(--td-cell-title-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-cell-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: 400;
+}
+.t-cell__left,
+.t-cell__right {
+ display: flex;
+ align-items: center;
+}
+.t-cell__left:not(:empty) {
+ margin-right: var(--td-spacer, 16rpx);
+}
+.t-cell__left-icon {
+ color: var(--td-cell-left-icon-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-size: var(--td-cell-left-icon-font-size, 48rpx);
+}
+.t-cell__left-image {
+ height: var(--td-cell-image-height, 96rpx);
+ width: var(--td-cell-image-width, 96rpx);
+}
+.t-cell__right {
+ margin-left: calc(var(--td-spacer, 16rpx) / 2);
+}
+.t-cell__right-icon {
+ color: var(--td-cell-right-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-cell-right-icon-font-size, 48rpx);
+}
+.t-cell--hover {
+ background-color: var(--td-cell-hover-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-cell--required {
+ font-size: var(--td-cell-required-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-cell-required-color, var(--td-error-color-6, #d54941));
+}
+.t-cell--middle {
+ align-items: center;
+}
+.t-cell--top {
+ align-items: flex-start;
+}
+.t-cell--bottom {
+ align-items: flex-end;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/props.d.ts b/miniprogram_npm/tdesign-miniprogram/cell/props.d.ts
new file mode 100644
index 0000000..ad657e5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCellProps } from './type';
+declare const props: TdCellProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/props.js b/miniprogram_npm/tdesign-miniprogram/cell/props.js
new file mode 100644
index 0000000..8e741e8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/props.js
@@ -0,0 +1,51 @@
+const props = {
+ align: {
+ type: String,
+ value: 'middle',
+ },
+ arrow: {
+ type: Boolean,
+ value: false,
+ },
+ bordered: {
+ type: Boolean,
+ value: true,
+ },
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ hover: {
+ type: Boolean,
+ },
+ image: {
+ type: String,
+ },
+ jumpType: {
+ type: String,
+ value: 'navigateTo',
+ },
+ leftIcon: {
+ type: String,
+ },
+ note: {
+ type: String,
+ },
+ required: {
+ type: Boolean,
+ value: false,
+ },
+ rightIcon: {
+ type: String,
+ },
+ title: {
+ type: String,
+ },
+ url: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/type.d.ts b/miniprogram_npm/tdesign-miniprogram/cell/type.d.ts
new file mode 100644
index 0000000..4dccb9d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/type.d.ts
@@ -0,0 +1,71 @@
+export interface TdCellProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'top' | 'middle' | 'bottom';
+ };
+ arrow?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: [
+ 't-class',
+ 't-class-title',
+ 't-class-note',
+ 't-class-description',
+ 't-class-thumb',
+ 't-class-hover',
+ 't-class-left',
+ 't-class-right'
+ ];
+ };
+ hover?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ jumpType?: {
+ type: StringConstructor;
+ value?: 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo';
+ };
+ leftIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ note?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ required?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ rightIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ url?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/cell/type.js b/miniprogram_npm/tdesign-miniprogram/cell/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/cell/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.d.ts b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.d.ts
new file mode 100644
index 0000000..44ab827
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent } from '../common/src/index';
+export default class CheckTag extends SuperComponent {
+ data: {
+ prefix: string;
+ classPrefix: string;
+ className: string;
+ };
+ properties: import("./type").TdCheckTagProps;
+ externalClasses: string[];
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ options: {
+ multipleSlots: boolean;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ observers: {
+ 'size, disabled, checked'(): void;
+ icon(v: any): void;
+ };
+ methods: {
+ setClass(): void;
+ onClick(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.js b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.js
new file mode 100644
index 0000000..c79bc9f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.js
@@ -0,0 +1,78 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { classNames, calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-tag`;
+let CheckTag = class CheckTag extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ className: '',
+ };
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`];
+ this.controlledProps = [
+ {
+ key: 'checked',
+ event: 'change',
+ },
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ };
+ this.observers = {
+ 'size, disabled, checked'() {
+ this.setClass();
+ },
+ icon(v) {
+ this.setData({
+ _icon: calcIcon(v),
+ });
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { classPrefix } = this.data;
+ const { size, variant, disabled, checked } = this.properties;
+ const tagClass = [
+ classPrefix,
+ `${classPrefix}--checkable`,
+ disabled ? `${classPrefix}--disabled` : '',
+ checked ? `${classPrefix}--checked` : '',
+ `${classPrefix}--${checked ? 'primary' : 'default'}`,
+ `${classPrefix}--${size}`,
+ `${classPrefix}--${variant}`,
+ ];
+ const className = classNames(tagClass);
+ this.setData({
+ className,
+ });
+ },
+ onClick() {
+ if (this.data.disabled)
+ return;
+ const { checked } = this.data;
+ this._trigger('click');
+ this._trigger('change', { checked: !checked });
+ },
+ };
+ }
+};
+CheckTag = __decorate([
+ wxComponent()
+], CheckTag);
+export default CheckTag;
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.json b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.wxml b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.wxml
new file mode 100644
index 0000000..6b67173
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.wxml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{checked ? content[0] : content[1]}}
+ {{content}}
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.wxss b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.wxss
new file mode 100644
index 0000000..c4080e7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/check-tag.wxss
@@ -0,0 +1,224 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tag {
+ display: inline-flex;
+ align-items: center;
+ border: 2rpx solid transparent;
+ box-sizing: border-box;
+ border-radius: var(--td-tag-square-border-radius, 8rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+ user-select: none;
+ vertical-align: middle;
+}
+.t-tag__text {
+ word-wrap: normal;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.t-tag__icon {
+ display: flex;
+ align-items: center;
+}
+.t-tag__icon:not(:empty) + .t-tag__text:not(:empty) {
+ margin-left: 8rpx;
+}
+.t-tag--small {
+ height: var(--td-tag-small-height, 40rpx);
+ line-height: var(--td-tag-small-height, 40rpx);
+ padding: 0 var(--td-tag-small-padding, 11rpx);
+ font-size: var(--td-tag-small-font-size, var(--td-font-size, 20rpx));
+}
+.t-tag--small .t-icon,
+.t-tag--small .t-icon-close {
+ font-size: var(--td-tag-small-icon-size, 24rpx);
+}
+.t-tag--medium {
+ height: var(--td-tag-medium-height, 48rpx);
+ line-height: var(--td-tag-medium-height, 48rpx);
+ padding: 0 var(--td-tag-medium-padding, 15rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-tag--medium .t-icon,
+.t-tag--medium .t-icon-close {
+ font-size: var(--td-tag-medium-icon-size, 28rpx);
+}
+.t-tag--large {
+ height: var(--td-tag-large-height, 56rpx);
+ line-height: var(--td-tag-large-height, 56rpx);
+ padding: 0 var(--td-tag-large-padding, 15rpx);
+ font-size: var(--td-tag-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag--large .t-icon,
+.t-tag--large .t-icon-close {
+ font-size: var(--td-tag-large-icon-size, 32rpx);
+}
+.t-tag--extra-large {
+ height: var(--td-tag-extra-large-height, 80rpx);
+ line-height: var(--td-tag-extra-large-height, 80rpx);
+ padding: 0 var(--td-tag-extra-large-padding, 31rpx);
+ font-size: var(--td-tag-extra-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag--extra-large .t-icon,
+.t-tag--extra-large .t-icon-close {
+ font-size: var(--td-tag-extra-large-icon-size, 32rpx);
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-tag--dark.t-tag--primary {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tag--dark.t-tag--success {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-tag--dark.t-tag--warning {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-tag--dark.t-tag--danger {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--primary {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--success {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--warning {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--danger {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light-outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light-outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light-outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light-outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-tag.t-tag--closable.t-tag--disabled {
+ cursor: not-allowed;
+ color: var(--td-tag-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-tag-disabled-background-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+ border-color: var(--td-tag-disabled-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/props.d.ts b/miniprogram_npm/tdesign-miniprogram/check-tag/props.d.ts
new file mode 100644
index 0000000..57c816f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCheckTagProps } from './type';
+declare const props: TdCheckTagProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/props.js b/miniprogram_npm/tdesign-miniprogram/check-tag/props.js
new file mode 100644
index 0000000..e87cc38
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/props.js
@@ -0,0 +1,44 @@
+const props = {
+ checked: {
+ type: null,
+ value: undefined,
+ },
+ defaultChecked: {
+ type: null,
+ value: undefined,
+ },
+ closable: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: null,
+ },
+ style: {
+ type: String,
+ value: '',
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ variant: {
+ type: String,
+ value: 'dark',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/type.d.ts b/miniprogram_npm/tdesign-miniprogram/check-tag/type.d.ts
new file mode 100644
index 0000000..efc82b8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/type.d.ts
@@ -0,0 +1,47 @@
+import { SizeEnum } from '../common/common';
+export interface TdCheckTagProps {
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ closable?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: null;
+ value?: string | number | string[];
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'square' | 'round' | 'mark';
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ variant?: {
+ type: StringConstructor;
+ value?: 'dark' | 'light' | 'outline' | 'light-outline';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/check-tag/type.js b/miniprogram_npm/tdesign-miniprogram/check-tag/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/check-tag/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.d.ts b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.d.ts
new file mode 100644
index 0000000..ab803a6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.d.ts
@@ -0,0 +1,69 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class CheckBoxGroup extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ checkboxOptions: any[];
+ };
+ properties: {
+ borderless: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: import("./type").CheckboxOption[];
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: import("./type").CheckboxGroupValue;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: import("./type").CheckboxGroupValue;
+ };
+ };
+ observers: {
+ value(): void;
+ options(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ $checkAll: any;
+ methods: {
+ getChilds(): any;
+ updateChildren(): void;
+ updateValue({ value, checked, checkAll, indeterminate }: {
+ value: any;
+ checked: any;
+ checkAll: any;
+ indeterminate: any;
+ }): void;
+ initWithOptions(): void;
+ handleInnerChildChange(e: any): void;
+ setCheckall(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.js b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.js
new file mode 100644
index 0000000..9d76a0c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.js
@@ -0,0 +1,154 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-checkbox-group`;
+let CheckBoxGroup = class CheckBoxGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.relations = {
+ '../checkbox/checkbox': {
+ type: 'descendant',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ checkboxOptions: [],
+ };
+ this.properties = Object.assign(Object.assign({}, props), { borderless: {
+ type: Boolean,
+ value: false,
+ } });
+ this.observers = {
+ value() {
+ this.updateChildren();
+ },
+ options() {
+ this.initWithOptions();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.setCheckall();
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.$checkAll = null;
+ this.methods = {
+ getChilds() {
+ let items = this.$children;
+ if (!items.length) {
+ items = this.selectAllComponents(`.${prefix}-checkbox-option`);
+ }
+ return items || [];
+ },
+ updateChildren() {
+ const items = this.getChilds();
+ const { value } = this.data;
+ if (items.length > 0) {
+ items.forEach((item) => {
+ !item.data.checkAll &&
+ item.setData({
+ checked: value === null || value === void 0 ? void 0 : value.includes(item.data.value),
+ });
+ });
+ if (items.some((item) => item.data.checkAll)) {
+ this.setCheckall();
+ }
+ }
+ },
+ updateValue({ value, checked, checkAll, indeterminate }) {
+ let { value: newValue } = this.data;
+ const { max } = this.data;
+ const keySet = new Set(this.getChilds().map((item) => item.data.value));
+ newValue = newValue.filter((value) => keySet.has(value));
+ if (max && checked && newValue.length === max)
+ return;
+ if (checkAll) {
+ const items = this.getChilds();
+ newValue =
+ !checked && indeterminate
+ ? items
+ .filter(({ data }) => !(data.disabled && !newValue.includes(data.value)))
+ .map((item) => item.data.value)
+ : items
+ .filter(({ data }) => {
+ if (data.disabled) {
+ return newValue.includes(data.value);
+ }
+ return checked && !data.checkAll;
+ })
+ .map(({ data }) => data.value);
+ }
+ else if (checked) {
+ newValue = newValue.concat(value);
+ }
+ else {
+ const index = newValue.findIndex((v) => v === value);
+ newValue.splice(index, 1);
+ }
+ this._trigger('change', { value: newValue });
+ },
+ initWithOptions() {
+ const { options, value } = this.data;
+ if (!(options === null || options === void 0 ? void 0 : options.length) || !Array.isArray(options))
+ return;
+ const checkboxOptions = options.map((item) => {
+ const isLabel = ['number', 'string'].includes(typeof item);
+ return isLabel
+ ? {
+ label: `${item}`,
+ value: item,
+ checked: value === null || value === void 0 ? void 0 : value.includes(item),
+ }
+ : Object.assign(Object.assign({}, item), { checked: value === null || value === void 0 ? void 0 : value.includes(item.value) });
+ });
+ this.setData({
+ checkboxOptions,
+ });
+ },
+ handleInnerChildChange(e) {
+ var _a;
+ const { item } = e.target.dataset;
+ const { checked } = e.detail;
+ const rect = {};
+ if (item.checkAll) {
+ rect.indeterminate = (_a = this.$checkAll) === null || _a === void 0 ? void 0 : _a.data.indeterminate;
+ }
+ this.updateValue(Object.assign(Object.assign(Object.assign({}, item), { checked }), rect));
+ },
+ setCheckall() {
+ const items = this.getChilds();
+ if (!this.$checkAll) {
+ this.$checkAll = items.find((item) => item.data.checkAll);
+ }
+ if (!this.$checkAll)
+ return;
+ const { value } = this.data;
+ const valueSet = new Set(value.filter((val) => val !== this.$checkAll.data.value));
+ const isCheckall = items.every((item) => (item.data.checkAll ? true : valueSet.has(item.data.value)));
+ this.$checkAll.setData({
+ checked: valueSet.size > 0,
+ indeterminate: !isCheckall,
+ });
+ },
+ };
+ }
+};
+CheckBoxGroup = __decorate([
+ wxComponent()
+], CheckBoxGroup);
+export default CheckBoxGroup;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.json b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.json
new file mode 100644
index 0000000..dc01ceb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-checkbox": "../checkbox/checkbox"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.wxml b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.wxml
new file mode 100644
index 0000000..cf9aae8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.wxml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.wxss b/miniprogram_npm/tdesign-miniprogram/checkbox-group/checkbox-group.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/props.d.ts b/miniprogram_npm/tdesign-miniprogram/checkbox-group/props.d.ts
new file mode 100644
index 0000000..f6e5bf5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCheckboxGroupProps } from './type';
+declare const props: TdCheckboxGroupProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/props.js b/miniprogram_npm/tdesign-miniprogram/checkbox-group/props.js
new file mode 100644
index 0000000..9092042
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/props.js
@@ -0,0 +1,31 @@
+const props = {
+ style: {
+ type: String,
+ value: '',
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ max: {
+ type: Number,
+ value: undefined,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ value: {
+ type: Array,
+ value: null,
+ },
+ defaultValue: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/type.d.ts b/miniprogram_npm/tdesign-miniprogram/checkbox-group/type.d.ts
new file mode 100644
index 0000000..641deb5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdCheckboxGroupProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: CheckboxGroupValue;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: CheckboxGroupValue;
+ };
+}
+export declare type CheckboxOption = string | number | CheckboxOptionObj;
+export interface CheckboxOptionObj {
+ label?: string;
+ value?: string | number;
+ disabled?: boolean;
+ checkAll?: true;
+}
+export declare type CheckboxGroupValue = Array;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox-group/type.js b/miniprogram_npm/tdesign-miniprogram/checkbox-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/checkbox/README.en-US.md
new file mode 100644
index 0000000..9f79403
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/README.en-US.md
@@ -0,0 +1,47 @@
+:: BASE_DOC ::
+
+## API
+### Checkbox Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+placement | String | left | options:left/right | N
+block | Boolean | true | \- | N
+check-all | Boolean | false | \- | N
+checked | Boolean | false | \- | N
+default-checked | Boolean | undefined | uncontrolled property | N
+content | String / Slot | - | \- | N
+content-disabled | Boolean | - | \- | N
+disabled | Boolean | undefined | \- | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array | 'circle' | Typescript:`'circle' \| 'line' \| 'rectangle' \| string[]` | N
+indeterminate | Boolean | false | \- | N
+label | String / Slot | - | \- | N
+max-content-row | Number | 5 | \- | N
+max-label-row | Number | 3 | \- | N
+name | String | - | \- | N
+readonly | Boolean | false | \- | N
+value | String / Number | - | Typescript:`string \| number \| boolean` | N
+
+### Checkbox Events
+
+name | params | description
+-- | -- | --
+change | `(checked: boolean)` | \-
+
+### CheckboxGroup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disabled | Boolean | false | \- | N
+max | Number | undefined | \- | N
+name | String | - | \- | N
+options | Array | [] | Typescript:`Array` `type CheckboxOption = string \| number \| CheckboxOptionObj` `interface CheckboxOptionObj { label?: string; value?: string \| number; disabled?: boolean; checkAll?: true }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+value | Array | [] | Typescript:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+default-value | Array | undefined | uncontrolled property。Typescript:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+
+### CheckboxGroup Events
+
+name | params | description
+-- | -- | --
+change | `(value: CheckboxGroupValue, context: CheckboxGroupChangeContext)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts)。
`interface CheckboxGroupChangeContext { e: Event; current: string \| number; option: CheckboxOption \| TdCheckboxProps; type: 'check' \| 'uncheck' }`
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/README.md b/miniprogram_npm/tdesign-miniprogram/checkbox/README.md
new file mode 100644
index 0000000..b046eec
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/README.md
@@ -0,0 +1,106 @@
+---
+title: Checkbox 多选框
+description: 用于预设的一组选项中执行多项选择,并呈现选择结果。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-checkbox": "tdesign-miniprogram/checkbox/checkbox",
+ "t-checkbox-group": "tdesign-miniprogram/checkbox-group/checkbox-group"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+纵向多选框
+
+{{ base }}
+
+横向多选框
+
+{{ horizontal }}
+
+带全选多选框
+
+{{ all }}
+
+### 组件状态
+
+多选框状态
+
+{{ status }}
+
+### 组件样式
+
+勾选样式
+
+{{ type }}
+
+勾选显示位置
+
+{{ right }}
+
+非通栏多选样式
+
+{{ card }}
+
+### 组件规格
+
+多选框尺寸规格
+
+{{ special }}
+
+## API
+### Checkbox Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+placement | String | left | 多选框和内容相对位置。可选项:left/right | N
+block | Boolean | true | 是否为块级元素 | N
+check-all | Boolean | false | 用于标识是否为「全选选项」。单独使用无效,需在 CheckboxGroup 中使用 | N
+checked | Boolean | false | 是否选中 | N
+default-checked | Boolean | undefined | 是否选中。非受控属性 | N
+content | String / Slot | - | 多选框内容 | N
+content-disabled | Boolean | - | 是否禁用组件内容(content)触发选中 | N
+disabled | Boolean | undefined | 是否禁用组件 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层、多选框图标、主文案、内容 等元素类名。`['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array | 'circle' | 自定义选中图标和非选中图标。使用 Array 时表示:`[选中态图标,非选中态图标]`。使用 String 时,值为 circle 表示填充圆形图标、值为 line 表示描边型图标、值为 rectangle 表示填充矩形图标。TS 类型:`'circle' \| 'line' \| 'rectangle' \| string[]` | N
+indeterminate | Boolean | false | 是否为半选 | N
+label | String / Slot | - | 主文案 | N
+max-content-row | Number | 5 | 内容最大行数限制 | N
+max-label-row | Number | 3 | 主文案最大行数限制 | N
+name | String | - | HTML 元素原生属性 | N
+readonly | Boolean | false | 只读状态 | N
+value | String / Number | - | 多选框的值。TS 类型:`string \| number` | N
+
+### Checkbox Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(checked: boolean)` | 值变化时触发
+
+### CheckboxGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disabled | Boolean | false | 是否禁用组件 | N
+max | Number | undefined | 支持最多选中的数量 | N
+name | String | - | 统一设置内部复选框 HTML 属性 | N
+options | Array | [] | 以配置形式设置子元素。示例1:`['北京', '上海']` ,示例2: `[{ label: '全选', checkAll: true }, { label: '上海', value: 'shanghai' }]`。checkAll 值为 true 表示当前选项为「全选选项」。TS 类型:`Array` `type CheckboxOption = string \| number \| CheckboxOptionObj` `interface CheckboxOptionObj { label?: string; value?: string \| number; disabled?: boolean; checkAll?: true }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+value | Array | [] | 选中值。TS 类型:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+default-value | Array | undefined | 选中值。非受控属性。TS 类型:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+
+### CheckboxGroup Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: CheckboxGroupValue, context: CheckboxGroupChangeContext)` | 值变化时触发。`context.current` 表示当前变化的数据项,如果是全选则为空;`context.type` 表示引起选中数据变化的是选中或是取消选中,`context.option` 表示当前变化的数据项。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts)。
`interface CheckboxGroupChangeContext { e: Event; current: string \| number; option: CheckboxOption \| TdCheckboxProps; type: 'check' \| 'uncheck' }`
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.d.ts b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.d.ts
new file mode 100644
index 0000000..8f41b2b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.d.ts
@@ -0,0 +1,100 @@
+import { SuperComponent, ComponentsOptionsType, RelationsOptions } from '../common/src/index';
+export default class CheckBox extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ relations: RelationsOptions;
+ options: ComponentsOptionsType;
+ properties: {
+ theme: {
+ type: StringConstructor;
+ value: string;
+ };
+ borderless: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: "left" | "right";
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checkAll?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"];
+ };
+ icon?: {
+ type: null;
+ value?: string[] | "circle" | "rectangle" | "line";
+ };
+ indeterminate?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ value?: {
+ type: null;
+ value?: string | number | boolean;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ methods: {
+ onChange(e: WechatMiniprogram.TouchEvent): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js
new file mode 100644
index 0000000..0494989
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js
@@ -0,0 +1,88 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import Props from './props';
+const { prefix } = config;
+const name = `${prefix}-checkbox`;
+let CheckBox = class CheckBox extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-label`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-content`,
+ `${prefix}-class-border`,
+ ];
+ this.behaviors = ['wx://form-field'];
+ this.relations = {
+ '../checkbox-group/checkbox-group': {
+ type: 'ancestor',
+ linked(parent) {
+ const { value, disabled, borderless } = parent.data;
+ const valueSet = new Set(value);
+ const data = {
+ disabled: disabled || this.data.disabled,
+ };
+ if (borderless) {
+ data.borderless = true;
+ }
+ data.checked = valueSet.has(this.data.value);
+ if (this.data.checkAll) {
+ data.checked = valueSet.size > 0;
+ }
+ this.setData(data);
+ },
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = Object.assign(Object.assign({}, Props), { theme: {
+ type: String,
+ value: 'default',
+ }, borderless: {
+ type: Boolean,
+ value: false,
+ } });
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.controlledProps = [
+ {
+ key: 'checked',
+ event: 'change',
+ },
+ ];
+ this.methods = {
+ onChange(e) {
+ const { disabled, readonly } = this.data;
+ if (disabled || readonly)
+ return;
+ const { target } = e.currentTarget.dataset;
+ const { contentDisabled } = this.data;
+ if (target === 'text' && contentDisabled) {
+ return;
+ }
+ const checked = !this.data.checked;
+ const parent = this.$parent;
+ if (parent) {
+ parent.updateValue(Object.assign(Object.assign({}, this.data), { checked }));
+ }
+ else {
+ this._trigger('change', { checked });
+ }
+ },
+ };
+ }
+};
+CheckBox = __decorate([
+ wxComponent()
+], CheckBox);
+export default CheckBox;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.json b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.json
new file mode 100644
index 0000000..dfd59ed
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.wxml b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.wxml
new file mode 100644
index 0000000..9feb113
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.wxml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
+
+
+ {{content}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.wxss b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.wxss
new file mode 100644
index 0000000..c57eb8e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.wxss
@@ -0,0 +1,202 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-checkbox {
+ display: inline-flex;
+ vertical-align: middle;
+ position: relative;
+ font-size: var(--td-checkbox-font-size, 32rpx);
+ background: var(--td-checkbox-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-checkbox:focus {
+ outline: 0;
+}
+.t-checkbox--block {
+ display: flex;
+ padding: var(--td-checkbox-vertical-padding, 32rpx);
+}
+.t-checkbox--right {
+ flex-direction: row-reverse;
+}
+.t-checkbox .limit-title-row {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.t-checkbox .image-center {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-checkbox__icon-left {
+ margin-right: 20rpx;
+ width: 40rpx;
+}
+.t-checkbox__icon-right {
+ right: 0px;
+ display: contents;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-checkbox__icon-image {
+ width: var(--td-checkbox-icon-size, 48rpx);
+ height: var(--td-checkbox-icon-size, 48rpx);
+ vertical-align: top;
+}
+.t-checkbox__icon {
+ position: relative;
+ display: block;
+ width: var(--td-checkbox-icon-size, 48rpx);
+ height: var(--td-checkbox-icon-size, 48rpx);
+ color: var(--td-checkbox-icon-color, var(--td-gray-color-4, #dcdcdc));
+ font-size: var(--td-checkbox-icon-size, 48rpx);
+}
+.t-checkbox__icon:empty {
+ display: none;
+}
+.t-checkbox__icon--checked {
+ color: var(--td-checkbox-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-checkbox__icon--disabled {
+ cursor: not-allowed;
+ color: var(--td-checkbox-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-checkbox__icon--left {
+ margin-right: 16rpx;
+}
+.t-checkbox__icon-circle {
+ width: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx) * 2);
+ height: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx) * 2);
+ border: 6rpx solid var(--td-checkbox-icon-color, var(--td-gray-color-4, #dcdcdc));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+}
+.t-checkbox__icon-circle--disabled {
+ background: var(--td-checkbox-icon-disabled-bg-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-checkbox__icon-rectangle {
+ width: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx * 2) * 2);
+ height: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx * 2) * 2);
+ border: 6rpx solid var(--td-checkbox-icon-color, var(--td-gray-color-4, #dcdcdc));
+ border-radius: 4rpx;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+}
+.t-checkbox__icon-rectangle--disabled {
+ background: var(--td-checkbox-icon-disabled-bg-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-checkbox__icon-line:before,
+.t-checkbox__icon-line:after {
+ content: '';
+ display: block;
+ position: absolute;
+ width: 5rpx;
+ border-radius: 2rpx;
+ background: var(--td-checkbox-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ transform-origin: top center;
+}
+.t-checkbox__icon-line:before {
+ height: 16rpx;
+ left: 8rpx;
+ top: 22rpx;
+ transform: rotate(-45deg);
+}
+.t-checkbox__icon-line::after {
+ height: 26rpx;
+ right: 8rpx;
+ top: 14rpx;
+ transform: rotate(45deg);
+}
+.t-checkbox__icon-line--disabled::before,
+.t-checkbox__icon-line--disabled::after {
+ background: var(--td-checkbox-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-checkbox__content {
+ flex: 1;
+}
+.t-checkbox__title {
+ color: var(--td-checkbox-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: var(--td-checkbox-title-line-height, 48rpx);
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.t-checkbox__title--disabled {
+ color: var(--td-checkbox-title-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-checkbox__description {
+ color: var(--td-checkbox-description-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ font-size: 28rpx;
+ line-height: var(--td-checkbox-description-line-height, 44rpx);
+}
+.t-checkbox__description--disabled {
+ color: var(--td-checkbox-description-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-checkbox__title + .t-checkbox__description:not(:empty) {
+ margin-top: 8rpx;
+}
+.t-checkbox__border {
+ position: absolute;
+ bottom: 0;
+ left: 96rpx;
+ right: 0;
+ height: 1px;
+ background: var(--td-checkbox-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+}
+.t-checkbox__border--right {
+ left: 32rpx;
+}
+.t-checkbox--tag {
+ font-size: 28rpx;
+ padding-top: 16rpx;
+ padding-bottom: 16rpx;
+ text-align: center;
+ background-color: #f3f3f3;
+ border-radius: 12rpx;
+}
+.t-checkbox--tag.t-checkbox--checked {
+ color: var(--td-checkbox-tag-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-checkbox-tag-active-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-checkbox--tag .t-checkbox__title--checked {
+ color: var(--td-checkbox-tag-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-checkbox--tag .t-checkbox__content {
+ margin-right: 0;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/props.d.ts b/miniprogram_npm/tdesign-miniprogram/checkbox/props.d.ts
new file mode 100644
index 0000000..81c619e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCheckboxProps } from './type';
+declare const props: TdCheckboxProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/props.js b/miniprogram_npm/tdesign-miniprogram/checkbox/props.js
new file mode 100644
index 0000000..79c2ada
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/props.js
@@ -0,0 +1,66 @@
+const props = {
+ placement: {
+ type: String,
+ value: 'left',
+ },
+ block: {
+ type: Boolean,
+ value: true,
+ },
+ checkAll: {
+ type: Boolean,
+ value: false,
+ },
+ checked: {
+ type: Boolean,
+ value: null,
+ },
+ defaultChecked: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ contentDisabled: {
+ type: Boolean,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: 'circle',
+ },
+ indeterminate: {
+ type: Boolean,
+ value: false,
+ },
+ label: {
+ type: String,
+ },
+ maxContentRow: {
+ type: Number,
+ value: 5,
+ },
+ maxLabelRow: {
+ type: Number,
+ value: 3,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/type.d.ts b/miniprogram_npm/tdesign-miniprogram/checkbox/type.d.ts
new file mode 100644
index 0000000..c795c54
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/type.d.ts
@@ -0,0 +1,74 @@
+export interface TdCheckboxProps {
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checkAll?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border'];
+ };
+ icon?: {
+ type: null;
+ value?: 'circle' | 'line' | 'rectangle' | string[];
+ };
+ indeterminate?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ value?: {
+ type: null;
+ value?: string | number | boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/type.js b/miniprogram_npm/tdesign-miniprogram/checkbox/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/col/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/col/README.en-US.md
new file mode 100644
index 0000000..a3d6150
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/README.en-US.md
@@ -0,0 +1,15 @@
+:: BASE_DOC ::
+
+## API
+### Col Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+offset | String / Number | - | \- | N
+span | String / Number | - | \- | N
+
+### Row Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+gutter | String / Number | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/col/README.md b/miniprogram_npm/tdesign-miniprogram/col/README.md
new file mode 100644
index 0000000..234d6e0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/README.md
@@ -0,0 +1,46 @@
+---
+title: Layout 布局
+description: 以规则的网格阵列来指导和规范页面中的版面布局以及信息分布,提高界面内布局的一致性,节约成本。
+spline: base
+isComponent: true
+---
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-row": "tdesign-miniprogram/row/row",
+ "t-col": "tdesign-miniprogram/col/col"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础
+
+{{ base }}
+
+
+增加间距
+
+{{ offset }}
+
+
+
+## API
+### Col Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+offset | String / Number | - | 列的偏移量(默认单位px) | N
+span | String / Number | - | 列的宽度(默认单位px) | N
+
+### Row Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+gutter | String / Number | - | 列之间的间距(默认单位px) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/col/col.d.ts b/miniprogram_npm/tdesign-miniprogram/col/col.d.ts
new file mode 100644
index 0000000..ecebf64
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/col.d.ts
@@ -0,0 +1,10 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Col extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdColProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ relations: RelationsOptions;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/col/col.js b/miniprogram_npm/tdesign-miniprogram/col/col.js
new file mode 100644
index 0000000..cbaecdd
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/col.js
@@ -0,0 +1,31 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-col`;
+let Col = class Col extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.relations = {
+ '../row/row': {
+ type: 'parent',
+ },
+ };
+ }
+};
+Col = __decorate([
+ wxComponent()
+], Col);
+export default Col;
diff --git a/miniprogram_npm/tdesign-miniprogram/col/col.json b/miniprogram_npm/tdesign-miniprogram/col/col.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/col.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/col/col.wxml b/miniprogram_npm/tdesign-miniprogram/col/col.wxml
new file mode 100644
index 0000000..4301cec
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/col.wxml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/col/col.wxs b/miniprogram_npm/tdesign-miniprogram/col/col.wxs
new file mode 100644
index 0000000..0cca491
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/col.wxs
@@ -0,0 +1,16 @@
+var utils = require('../common/utils.wxs');
+
+function getColStyles(data) {
+ if (!data.gutter) {
+ return '';
+ }
+
+ return utils._style({
+ 'padding-right': utils.addUnit(data.gutter / 2),
+ 'padding-left': utils.addUnit(data.gutter / 2),
+ });
+}
+
+module.exports = {
+ getColStyles: getColStyles,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/col/col.wxss b/miniprogram_npm/tdesign-miniprogram/col/col.wxss
new file mode 100644
index 0000000..cc24ffa
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/col.wxss
@@ -0,0 +1,175 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-col {
+ box-sizing: border-box;
+ float: left;
+}
+.t-col--1 {
+ width: 4.16666667%;
+}
+.t-col--offset-1 {
+ margin-left: 4.16666667%;
+}
+.t-col--2 {
+ width: 8.33333333%;
+}
+.t-col--offset-2 {
+ margin-left: 8.33333333%;
+}
+.t-col--3 {
+ width: 12.5%;
+}
+.t-col--offset-3 {
+ margin-left: 12.5%;
+}
+.t-col--4 {
+ width: 16.66666667%;
+}
+.t-col--offset-4 {
+ margin-left: 16.66666667%;
+}
+.t-col--5 {
+ width: 20.83333333%;
+}
+.t-col--offset-5 {
+ margin-left: 20.83333333%;
+}
+.t-col--6 {
+ width: 25%;
+}
+.t-col--offset-6 {
+ margin-left: 25%;
+}
+.t-col--7 {
+ width: 29.16666667%;
+}
+.t-col--offset-7 {
+ margin-left: 29.16666667%;
+}
+.t-col--8 {
+ width: 33.33333333%;
+}
+.t-col--offset-8 {
+ margin-left: 33.33333333%;
+}
+.t-col--9 {
+ width: 37.5%;
+}
+.t-col--offset-9 {
+ margin-left: 37.5%;
+}
+.t-col--10 {
+ width: 41.66666667%;
+}
+.t-col--offset-10 {
+ margin-left: 41.66666667%;
+}
+.t-col--11 {
+ width: 45.83333333%;
+}
+.t-col--offset-11 {
+ margin-left: 45.83333333%;
+}
+.t-col--12 {
+ width: 50%;
+}
+.t-col--offset-12 {
+ margin-left: 50%;
+}
+.t-col--13 {
+ width: 54.16666667%;
+}
+.t-col--offset-13 {
+ margin-left: 54.16666667%;
+}
+.t-col--14 {
+ width: 58.33333333%;
+}
+.t-col--offset-14 {
+ margin-left: 58.33333333%;
+}
+.t-col--15 {
+ width: 62.5%;
+}
+.t-col--offset-15 {
+ margin-left: 62.5%;
+}
+.t-col--16 {
+ width: 66.66666667%;
+}
+.t-col--offset-16 {
+ margin-left: 66.66666667%;
+}
+.t-col--17 {
+ width: 70.83333333%;
+}
+.t-col--offset-17 {
+ margin-left: 70.83333333%;
+}
+.t-col--18 {
+ width: 75%;
+}
+.t-col--offset-18 {
+ margin-left: 75%;
+}
+.t-col--19 {
+ width: 79.16666667%;
+}
+.t-col--offset-19 {
+ margin-left: 79.16666667%;
+}
+.t-col--20 {
+ width: 83.33333333%;
+}
+.t-col--offset-20 {
+ margin-left: 83.33333333%;
+}
+.t-col--21 {
+ width: 87.5%;
+}
+.t-col--offset-21 {
+ margin-left: 87.5%;
+}
+.t-col--22 {
+ width: 91.66666667%;
+}
+.t-col--offset-22 {
+ margin-left: 91.66666667%;
+}
+.t-col--23 {
+ width: 95.83333333%;
+}
+.t-col--offset-23 {
+ margin-left: 95.83333333%;
+}
+.t-col--24 {
+ width: 100%;
+}
+.t-col--offset-24 {
+ margin-left: 100%;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/col/props.d.ts b/miniprogram_npm/tdesign-miniprogram/col/props.d.ts
new file mode 100644
index 0000000..15de965
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/props.d.ts
@@ -0,0 +1,3 @@
+import { TdColProps } from './type';
+declare const props: TdColProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/col/props.js b/miniprogram_npm/tdesign-miniprogram/col/props.js
new file mode 100644
index 0000000..05857f3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/props.js
@@ -0,0 +1,9 @@
+const props = {
+ offset: {
+ type: null,
+ },
+ span: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/col/type.d.ts b/miniprogram_npm/tdesign-miniprogram/col/type.d.ts
new file mode 100644
index 0000000..af55fa4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/type.d.ts
@@ -0,0 +1,10 @@
+export interface TdColProps {
+ offset?: {
+ type: null;
+ value?: string | number;
+ };
+ span?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/col/type.js b/miniprogram_npm/tdesign-miniprogram/col/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/col/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.d.ts
new file mode 100644
index 0000000..5301e80
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.d.ts
@@ -0,0 +1,26 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import type { TdCollapsePanelProps } from './type';
+export interface CollapsePanelProps extends TdCollapsePanelProps {
+}
+export default class CollapsePanel extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ properties: TdCollapsePanelProps;
+ data: {
+ prefix: string;
+ expanded: boolean;
+ classPrefix: string;
+ classBasePrefix: string;
+ ultimateExpandIcon: boolean;
+ ultimateDisabled: boolean;
+ };
+ methods: {
+ set(data: Record): Promise;
+ updateExpanded(activeValues: any): void;
+ updateStyle(expanded: boolean): Promise;
+ onClick(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.js b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.js
new file mode 100644
index 0000000..04d9611
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.js
@@ -0,0 +1,90 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-collapse-panel`;
+let CollapsePanel = class CollapsePanel extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`, `${prefix}-class-header`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../collapse/collapse': {
+ type: 'ancestor',
+ linked(target) {
+ this.parent = target;
+ const { value, defaultExpandAll, expandMutex, expandIcon, disabled } = target.properties;
+ const activeValues = defaultExpandAll && !expandMutex ? [this.properties.value] : value;
+ this.setData({
+ ultimateExpandIcon: expandIcon || this.properties.expandIcon,
+ ultimateDisabled: this.properties.disabled == null ? disabled : this.properties.disabled,
+ });
+ this.updateExpanded(activeValues);
+ },
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ expanded: false,
+ classPrefix: name,
+ classBasePrefix: prefix,
+ ultimateExpandIcon: false,
+ ultimateDisabled: false,
+ };
+ this.methods = {
+ set(data) {
+ this.setData(data);
+ return new Promise((resolve) => wx.nextTick(resolve));
+ },
+ updateExpanded(activeValues) {
+ if (!this.parent) {
+ return;
+ }
+ const { value } = this.properties;
+ const expanded = activeValues.includes(value);
+ if (expanded === this.properties.expanded)
+ return;
+ this.setData({ expanded });
+ this.updateStyle(expanded);
+ },
+ updateStyle(expanded) {
+ return getRect(this, `.${name}__content`)
+ .then((rect) => rect.height)
+ .then((height) => {
+ const animation = wx.createAnimation({
+ duration: 0,
+ timingFunction: 'ease-in-out',
+ });
+ if (expanded) {
+ animation.height(height).top(0).step({ duration: 300 }).height('auto').step();
+ }
+ else {
+ animation.height(height).top(1).step({ duration: 1 }).height(0).step({ duration: 300 });
+ }
+ this.setData({ animation: animation.export() });
+ });
+ },
+ onClick() {
+ const { ultimateDisabled } = this.data;
+ const { value } = this.properties;
+ if (ultimateDisabled)
+ return;
+ this.parent.switch(value);
+ },
+ };
+ }
+};
+CollapsePanel = __decorate([
+ wxComponent()
+], CollapsePanel);
+export default CollapsePanel;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.json b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.json
new file mode 100644
index 0000000..5160a95
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.wxml b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.wxml
new file mode 100644
index 0000000..370e7a9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.wxml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.wxss b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.wxss
new file mode 100644
index 0000000..5405c83
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/collapse-panel.wxss
@@ -0,0 +1,171 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-collapse-panel {
+ position: relative;
+ background-color: var(--td-collapse-panel-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-collapse-panel::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel--disabled {
+ pointer-events: none;
+}
+.t-collapse-panel--disabled .t-collapse-panel__content,
+.t-collapse-panel--disabled .t-collapse-panel__header {
+ opacity: 0.3;
+}
+.t-collapse-panel--top {
+ display: flex;
+ flex-direction: column-reverse;
+}
+.t-collapse-panel__header {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-left: var(--td-collapse-horizontal-padding, 32rpx);
+ height: var(--td-collapse-header-height, 96rpx);
+ color: var(--td-collapse-header-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-collapse-panel__header--top {
+ position: relative;
+}
+.t-collapse-panel__header--top::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ bottom: unset;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel__header--top::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel__header--bottom {
+ position: relative;
+}
+.t-collapse-panel__header--bottom::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel__header--bottom::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel__header:after {
+ display: none;
+ left: 32rpx;
+}
+.t-collapse-panel__header--expanded:after {
+ display: block;
+}
+.t-collapse-panel__header-right {
+ display: inline-flex;
+ align-items: center;
+ height: 100%;
+}
+.t-collapse-panel__header-icon {
+ height: 100%;
+ padding-left: 8px;
+ width: 44px;
+ padding-right: 8px;
+ color: var(--td-collapse-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-collapse-panel__extra {
+ font-size: var(--td-collapse-extra-font-size, var(--td-font-size-m, 32rpx));
+}
+.t-collapse-panel__body {
+ position: relative;
+}
+.t-collapse-panel__body::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel__body::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel__wrapper {
+ height: 0;
+ overflow: hidden;
+}
+.t-collapse-panel__content {
+ color: var(--td-collapse-content-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-collapse-content-font-size, var(--td-font-size-base, 28rpx));
+ padding: var(--td-collapse-content-padding, 32rpx);
+ line-height: var(--td-collapse-content-line-height, 1.5);
+}
+.t-collapse-panel__arrow--top {
+ transform: rotate(180deg);
+}
+.class-title {
+ font-size: var(--td-collapse-title-font-size, var(--td-font-size-m, 32rpx));
+}
+.class-title--disabled {
+ color: var(--td-font-gray-4, rgba(0, 0, 0, 0.26));
+}
+.class-note--disabled {
+ color: var(--td-font-gray-4, rgba(0, 0, 0, 0.26));
+}
+.class-right-icon--disabled {
+ color: var(--td-font-gray-4, rgba(0, 0, 0, 0.26));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/props.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse-panel/props.d.ts
new file mode 100644
index 0000000..829dbea
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCollapsePanelProps } from './type';
+declare const props: TdCollapsePanelProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/props.js b/miniprogram_npm/tdesign-miniprogram/collapse-panel/props.js
new file mode 100644
index 0000000..894f32a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/props.js
@@ -0,0 +1,30 @@
+const props = {
+ content: {
+ type: String,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ expandIcon: {
+ type: Boolean,
+ value: undefined,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ header: {
+ type: String,
+ },
+ headerRightContent: {
+ type: String,
+ },
+ placement: {
+ type: String,
+ value: 'bottom',
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/type.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse-panel/type.d.ts
new file mode 100644
index 0000000..315131a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdCollapsePanelProps {
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ expandIcon?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-header', 't-class-content'];
+ };
+ header?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ headerRightContent?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'bottom' | 'top';
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse-panel/type.js b/miniprogram_npm/tdesign-miniprogram/collapse-panel/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse-panel/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/collapse/README.en-US.md
new file mode 100644
index 0000000..2e6fc25
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/README.en-US.md
@@ -0,0 +1,33 @@
+:: BASE_DOC ::
+
+## API
+### Collapse Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+default-expand-all | Boolean | false | \- | N
+disabled | Boolean | - | \- | N
+expand-icon | Boolean / Slot | true | \- | N
+expand-mutex | Boolean | false | \- | N
+theme | String | default | options:default/card | N
+value | Array | [] | Typescript:`CollapseValue` `type CollapseValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+default-value | Array | undefined | uncontrolled property。Typescript:`CollapseValue` `type CollapseValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+
+### Collapse Events
+
+name | params | description
+-- | -- | --
+change | `(value: CollapseValue)` | \-
+
+### CollapsePanel Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Slot | - | \- | N
+disabled | Boolean | undefined | \- | N
+expand-icon | Boolean / Slot | undefined | \- | N
+external-classes | Array | - | `['t-class', 't-class-header', 't-class-content']` | N
+header | String / Slot | - | \- | N
+header-right-content | String / Slot | - | \- | N
+placement | String | bottom | `0.34.0`。options:bottom/top | N
+value | String / Number | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/README.md b/miniprogram_npm/tdesign-miniprogram/collapse/README.md
new file mode 100644
index 0000000..84e1212
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/README.md
@@ -0,0 +1,81 @@
+---
+title: Collapse 折叠面板
+description: 用于对复杂区域进行分组和隐藏 常用于订单信息展示等
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.3 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-collapse": "tdesign-miniprogram/collapse/collapse",
+ "t-collapse-panel": "tdesign-miniprogram/collapse-panel/collapse-panel"
+}
+```
+
+## 代码演示
+
+### 类型
+
+基础折叠面板
+
+{{ base }}
+
+
+带操作说明
+
+{{ action }}
+
+手风琴模式
+
+{{ accordion }}
+
+### 样式
+
+卡片折叠面板
+
+{{ theme }}
+
+## API
+### Collapse Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+default-expand-all | Boolean | false | 默认是否展开全部 | N
+disabled | Boolean | - | 是否禁用面板展开/收起操作 | N
+expand-icon | Boolean | true | 展开图标。值为 undefined 或 false 则不显示展开图标;值为 true 显示默认图标 | N
+expand-mutex | Boolean | false | 每个面板互斥展开,每次只展开一个面板 | N
+theme | String | default | 折叠面板风格。可选项:default/card | N
+value | Array | [] | 展开的面板集合。TS 类型:`CollapseValue` `type CollapseValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+default-value | Array | undefined | 展开的面板集合。非受控属性。TS 类型:`CollapseValue` `type CollapseValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+
+### Collapse Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: CollapseValue)` | 切换面板时触发,返回变化的值
+
+### CollapsePanel Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Slot | - | 折叠面板内容 | N
+disabled | Boolean | undefined | 禁止当前面板展开,优先级大于 Collapse 的同名属性 | N
+expand-icon | Boolean / Slot | undefined | 当前折叠面板展开图标,优先级大于 Collapse 的同名属性 | N
+external-classes | Array | - | 组件类名,用于组件外层元素、标题、内容。`['t-class', 't-class-header', 't-class-content']` | N
+header | String / Slot | - | 面板头内容 | N
+header-right-content | String / Slot | - | 面板头的右侧区域,一般用于呈现面板操作 | N
+placement | String | bottom | `0.34.0`。选项卡内容的位置。可选项:bottom/top | N
+value | String / Number | - | 当前面板唯一标识,如果值为空则取当前面下标兜底作为唯一标识 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/collapse.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.d.ts
new file mode 100644
index 0000000..426459f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import type { CollapseValue, TdCollapseProps } from './type';
+export interface CollapseProps extends TdCollapseProps {
+}
+export default class Collapse extends SuperComponent {
+ options: {
+ addGlobalClass: boolean;
+ };
+ externalClasses: string[];
+ relations: RelationsOptions;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ properties: TdCollapseProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ 'value, expandMutex '(): void;
+ };
+ methods: {
+ updateExpanded(): void;
+ switch(panelValue: CollapseValue): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/collapse.js b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.js
new file mode 100644
index 0000000..b7b26eb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.js
@@ -0,0 +1,67 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-collapse`;
+let Collapse = class Collapse extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ addGlobalClass: true,
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.relations = {
+ '../collapse-panel/collapse-panel': {
+ type: 'descendant',
+ linked() {
+ this.updateExpanded();
+ },
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ 'value, expandMutex '() {
+ this.updateExpanded();
+ },
+ };
+ this.methods = {
+ updateExpanded() {
+ this.$children.forEach((child) => {
+ child.updateExpanded(this.properties.value);
+ });
+ },
+ switch(panelValue) {
+ const { expandMutex, value: activeValues } = this.properties;
+ let value = [];
+ const hit = activeValues.indexOf(panelValue);
+ if (hit > -1) {
+ value = activeValues.filter((item) => item !== panelValue);
+ }
+ else {
+ value = expandMutex ? [panelValue] : activeValues.concat(panelValue);
+ }
+ this._trigger('change', { value });
+ },
+ };
+ }
+};
+Collapse = __decorate([
+ wxComponent()
+], Collapse);
+export default Collapse;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/collapse.json b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/collapse.wxml b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.wxml
new file mode 100644
index 0000000..24b8770
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.wxml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/collapse.wxss b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.wxss
new file mode 100644
index 0000000..62a6a01
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/collapse.wxss
@@ -0,0 +1,32 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-collapse--card {
+ margin: 0 32rpx;
+ border-radius: var(--td-radius-large, 18rpx);
+ overflow: hidden;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/index.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse/index.d.ts
new file mode 100644
index 0000000..69a68c1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/index.d.ts
@@ -0,0 +1,4 @@
+export { default as Collapse } from './collapse';
+export * from './type';
+export * from './props';
+export { CollapseProps } from './collapse';
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/index.js b/miniprogram_npm/tdesign-miniprogram/collapse/index.js
new file mode 100644
index 0000000..53d3447
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/index.js
@@ -0,0 +1,3 @@
+export { default as Collapse } from './collapse';
+export * from './type';
+export * from './props';
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/props.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse/props.d.ts
new file mode 100644
index 0000000..8ab2059
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCollapseProps } from './type';
+declare const props: TdCollapseProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/props.js b/miniprogram_npm/tdesign-miniprogram/collapse/props.js
new file mode 100644
index 0000000..3dfb242
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/props.js
@@ -0,0 +1,30 @@
+const props = {
+ defaultExpandAll: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ },
+ expandIcon: {
+ type: Boolean,
+ value: true,
+ },
+ expandMutex: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ value: {
+ type: Array,
+ value: null,
+ },
+ defaultValue: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/type.d.ts b/miniprogram_npm/tdesign-miniprogram/collapse/type.d.ts
new file mode 100644
index 0000000..b9cff85
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/type.d.ts
@@ -0,0 +1,35 @@
+export interface TdCollapseProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ defaultExpandAll?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ expandIcon?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ expandMutex?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'card';
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: CollapseValue;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: CollapseValue;
+ };
+}
+export declare type CollapseValue = Array;
diff --git a/miniprogram_npm/tdesign-miniprogram/collapse/type.js b/miniprogram_npm/tdesign-miniprogram/collapse/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/collapse/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/bus.d.ts b/miniprogram_npm/tdesign-miniprogram/common/bus.d.ts
new file mode 100644
index 0000000..0ed92bb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/bus.d.ts
@@ -0,0 +1,6 @@
+export default class Bus {
+ listeners: Map;
+ constructor();
+ on(evtName: string, listener: any): void;
+ emit(evtName: string): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/bus.js b/miniprogram_npm/tdesign-miniprogram/common/bus.js
new file mode 100644
index 0000000..5626d27
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/bus.js
@@ -0,0 +1,16 @@
+export default class Bus {
+ constructor() {
+ this.listeners = new Map();
+ }
+ on(evtName, listener) {
+ const target = this.listeners.get(evtName) || [];
+ target.push(listener);
+ this.listeners.set(evtName, target);
+ }
+ emit(evtName) {
+ const listeners = this.listeners.get(evtName);
+ if (listeners) {
+ listeners.forEach((func) => func());
+ }
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/common.d.ts b/miniprogram_npm/tdesign-miniprogram/common/common.d.ts
new file mode 100644
index 0000000..44a4e72
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/common.d.ts
@@ -0,0 +1,35 @@
+export declare type Classes = Array;
+export interface Styles {
+ [css: string]: string | number;
+}
+export declare type OptionData = {
+ label?: string;
+ value?: string | number;
+} & {
+ [key: string]: any;
+};
+export declare type TreeOptionData = {
+ children?: Array;
+} & OptionData;
+export declare type SizeEnum = 'small' | 'medium' | 'large';
+export declare type HorizontalAlignEnum = 'left' | 'center' | 'right';
+export declare type VerticalAlignEnum = 'top' | 'middle' | 'bottom';
+export declare type ClassName = {
+ [className: string]: any;
+} | ClassName[] | string;
+export declare type CSSSelector = string;
+export interface KeysType {
+ value?: string;
+ label?: string;
+}
+export interface HTMLElementAttributes {
+ [css: string]: string;
+}
+export interface InfinityScroll {
+ bufferSize?: number;
+ isFixedRowHeight?: boolean;
+ rowHeight?: number;
+ threshold?: number;
+ type: 'lazy' | 'virtual';
+}
+export declare type TScroll = InfinityScroll;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/common.js b/miniprogram_npm/tdesign-miniprogram/common/common.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/common.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/component.d.ts b/miniprogram_npm/tdesign-miniprogram/common/component.d.ts
new file mode 100644
index 0000000..a8d86ae
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/component.d.ts
@@ -0,0 +1,3 @@
+///
+declare const TComponent: typeof Component;
+export default TComponent;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/component.js b/miniprogram_npm/tdesign-miniprogram/common/component.js
new file mode 100644
index 0000000..4e01a69
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/component.js
@@ -0,0 +1,5 @@
+const TComponent = (options) => {
+ options.options = Object.assign({ multipleSlots: true, addGlobalClass: true }, options.options);
+ return Component(options);
+};
+export default TComponent;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/config.d.ts b/miniprogram_npm/tdesign-miniprogram/common/config.d.ts
new file mode 100644
index 0000000..68879b4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/config.d.ts
@@ -0,0 +1,5 @@
+declare const _default: {
+ prefix: string;
+};
+export default _default;
+export declare const prefix = "t";
diff --git a/miniprogram_npm/tdesign-miniprogram/common/config.js b/miniprogram_npm/tdesign-miniprogram/common/config.js
new file mode 100644
index 0000000..c0dfab2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/config.js
@@ -0,0 +1,4 @@
+export default {
+ prefix: "t",
+};
+export const prefix = "t";
diff --git a/miniprogram_npm/tdesign-miniprogram/common/index.wxss b/miniprogram_npm/tdesign-miniprogram/common/index.wxss
new file mode 100644
index 0000000..1d532d2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/index.wxss
@@ -0,0 +1,27 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/index.d.ts b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/index.d.ts
new file mode 100644
index 0000000..2a119d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/index.d.ts
@@ -0,0 +1,19 @@
+import type { TDate, TCalendarType, TCalendarValue } from './type';
+export default class TCalendar {
+ firstDayOfWeek: number;
+ value: TCalendarValue | TCalendarValue[];
+ type: TCalendarType;
+ minDate: Date;
+ maxDate: Date;
+ format: (day: TDate) => TDate;
+ constructor(options: any);
+ getTrimValue(): Date | Date[];
+ getDays(): any[];
+ getMonths(): any[];
+ select({ cellType, year, month, date }: {
+ cellType: any;
+ year: any;
+ month: any;
+ date: any;
+ }): Date | TCalendarValue[];
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/index.js b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/index.js
new file mode 100644
index 0000000..9de8d65
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/index.js
@@ -0,0 +1,128 @@
+import { getDateRect, isSameDate, getMonthDateRect, isValidDate, getDate } from '../date';
+export default class TCalendar {
+ constructor(options) {
+ this.type = 'single';
+ Object.assign(this, options);
+ if (!this.minDate)
+ this.minDate = getDate();
+ if (!this.maxDate)
+ this.maxDate = getDate(6);
+ }
+ getTrimValue() {
+ const { value, type } = this;
+ const format = (val) => {
+ if (val instanceof Date)
+ return val;
+ if (typeof val === 'number')
+ return new Date(val);
+ return new Date();
+ };
+ if (type === 'single' && isValidDate(value))
+ return format(value);
+ if (type === 'multiple' || type === 'range') {
+ if (Array.isArray(value)) {
+ const isValid = value.every((item) => isValidDate(item));
+ return isValid ? value.map((item) => format(item)) : [];
+ }
+ return [];
+ }
+ }
+ getDays() {
+ const raw = '日一二三四五六';
+ const ans = [];
+ let i = this.firstDayOfWeek % 7;
+ while (ans.length < 7) {
+ ans.push(raw[i]);
+ i = (i + 1) % 7;
+ }
+ return ans;
+ }
+ getMonths() {
+ const ans = [];
+ const selectedDate = this.getTrimValue();
+ const { minDate, maxDate, type, format } = this;
+ let { year: minYear, month: minMonth, time: minTime } = getDateRect(minDate);
+ const { year: maxYear, month: maxMonth, time: maxTime } = getDateRect(maxDate);
+ const calcType = (year, month, date) => {
+ const curDate = new Date(year, month, date, 23, 59, 59);
+ if (type === 'single' && selectedDate) {
+ if (isSameDate({ year, month, date }, selectedDate))
+ return 'selected';
+ }
+ if (type === 'multiple' && selectedDate) {
+ const hit = selectedDate.some((item) => isSameDate({ year, month, date }, item));
+ if (hit) {
+ return 'selected';
+ }
+ }
+ if (type === 'range' && selectedDate) {
+ if (Array.isArray(selectedDate)) {
+ const [startDate, endDate] = selectedDate;
+ if (startDate && isSameDate({ year, month, date }, startDate))
+ return 'start';
+ if (endDate && isSameDate({ year, month, date }, endDate))
+ return 'end';
+ if (startDate && endDate && curDate.getTime() > startDate.getTime() && curDate.getTime() < endDate.getTime())
+ return 'centre';
+ }
+ }
+ const minCurDate = new Date(year, month, date, 0, 0, 0);
+ if (curDate.getTime() < minTime || minCurDate.getTime() > maxTime) {
+ return 'disabled';
+ }
+ return '';
+ };
+ while (minYear < maxYear || (minYear === maxYear && minMonth <= maxMonth)) {
+ const target = getMonthDateRect(new Date(minYear, minMonth, 1));
+ const months = [];
+ for (let i = 1; i <= 31; i++) {
+ if (i > target.lastDate)
+ break;
+ const dateObj = {
+ date: new Date(minYear, minMonth, i),
+ day: i,
+ type: calcType(minYear, minMonth, i),
+ };
+ months.push(format ? format(dateObj) : dateObj);
+ }
+ ans.push({
+ year: minYear,
+ month: minMonth,
+ months,
+ weekdayOfFirstDay: target.weekdayOfFirstDay,
+ });
+ const curDate = getDateRect(new Date(minYear, minMonth + 1, 1));
+ minYear = curDate.year;
+ minMonth = curDate.month;
+ }
+ return ans;
+ }
+ select({ cellType, year, month, date }) {
+ const { type } = this;
+ const selectedDate = this.getTrimValue();
+ if (cellType === 'disabled')
+ return;
+ const selected = new Date(year, month, date);
+ this.value = selected;
+ if (type === 'range' && Array.isArray(selectedDate)) {
+ if (selectedDate.length === 1 && selected > selectedDate[0]) {
+ this.value = [selectedDate[0], selected];
+ }
+ else {
+ this.value = [selected];
+ }
+ }
+ else if (type === 'multiple' && Array.isArray(selectedDate)) {
+ const newVal = [...selectedDate];
+ const index = selectedDate.findIndex((item) => isSameDate(item, selected));
+ if (index > -1) {
+ newVal.splice(index, 1);
+ }
+ else {
+ newVal.push(selected);
+ }
+ this.value = newVal;
+ }
+ return this.value;
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/type.d.ts
new file mode 100644
index 0000000..621b949
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/type.d.ts
@@ -0,0 +1,11 @@
+export interface TDate {
+ date: Date;
+ day: number;
+ type: TDateType;
+ className?: string;
+ prefix?: string;
+ suffix?: string;
+}
+export declare type TCalendarValue = number | Date;
+export declare type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | '';
+export declare type TCalendarType = 'single' | 'multiple' | 'range';
diff --git a/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/type.js b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/shared/calendar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/shared/date.d.ts b/miniprogram_npm/tdesign-miniprogram/common/shared/date.d.ts
new file mode 100644
index 0000000..e123831
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/shared/date.d.ts
@@ -0,0 +1,21 @@
+export declare type CompareDate = Date | number | {
+ year: number;
+ month: number;
+ date: number;
+};
+export declare const getDateRect: (date: Date | number) => {
+ year: number;
+ month: number;
+ date: number;
+ day: number;
+ time: number;
+};
+export declare const isSameDate: (date1: CompareDate, date2: CompareDate) => boolean;
+export declare const getMonthDateRect: (date: Date | number) => {
+ year: number;
+ month: number;
+ weekdayOfFirstDay: number;
+ lastDate: number;
+};
+export declare const isValidDate: (val: any) => boolean;
+export declare const getDate: (...args: any[]) => any;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/shared/date.js b/miniprogram_npm/tdesign-miniprogram/common/shared/date.js
new file mode 100644
index 0000000..3ac46b3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/shared/date.js
@@ -0,0 +1,41 @@
+export const getDateRect = (date) => {
+ const _date = new Date(date);
+ return {
+ year: _date.getFullYear(),
+ month: _date.getMonth(),
+ date: _date.getDate(),
+ day: _date.getDay(),
+ time: _date.getTime(),
+ };
+};
+export const isSameDate = (date1, date2) => {
+ if (date1 instanceof Date || typeof date1 === 'number')
+ date1 = getDateRect(date1);
+ if (date2 instanceof Date || typeof date2 === 'number')
+ date2 = getDateRect(date2);
+ const keys = ['year', 'month', 'date'];
+ return keys.every((key) => date1[key] === date2[key]);
+};
+export const getMonthDateRect = (date) => {
+ const { year, month } = getDateRect(date);
+ const firstDay = new Date(year, month, 1);
+ const weekdayOfFirstDay = firstDay.getDay();
+ const lastDate = new Date(+new Date(year, month + 1, 1) - 24 * 3600 * 1000).getDate();
+ return {
+ year,
+ month,
+ weekdayOfFirstDay,
+ lastDate,
+ };
+};
+export const isValidDate = (val) => typeof val === 'number' || val instanceof Date;
+export const getDate = (...args) => {
+ const now = new Date();
+ if (args.length === 0)
+ return now;
+ if (args.length === 1 && args[0] <= 1000) {
+ const { year, month, date } = getDateRect(now);
+ return new Date(year, month + args[0], date);
+ }
+ return Date.apply(null, args);
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/control.d.ts b/miniprogram_npm/tdesign-miniprogram/common/src/control.d.ts
new file mode 100644
index 0000000..ed3f4a0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/control.d.ts
@@ -0,0 +1,15 @@
+declare type ControlInstance = {
+ controlled: boolean;
+ initValue: any;
+ set(newVal: any, extObj?: Object, fn?: any): void;
+ get(): any;
+ change(newVal: any, customChangeData?: any, customUpdateFn?: any): void;
+};
+declare type ControlOption = {
+ valueKey?: string;
+ defaultValueKey?: string;
+ changeEventName?: string;
+ strict?: boolean;
+};
+declare function useControl(this: any, option?: ControlOption): ControlInstance;
+export { ControlOption, ControlInstance, useControl };
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/control.js b/miniprogram_npm/tdesign-miniprogram/common/src/control.js
new file mode 100644
index 0000000..03c9e77
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/control.js
@@ -0,0 +1,40 @@
+const defaultOption = {
+ valueKey: 'value',
+ defaultValueKey: 'defaultValue',
+ changeEventName: 'change',
+ strict: true,
+};
+function useControl(option = {}) {
+ const { valueKey, defaultValueKey, changeEventName, strict } = Object.assign(Object.assign({}, defaultOption), option);
+ const props = this.properties || {};
+ const value = props[valueKey];
+ const defaultValue = props[strict ? defaultValueKey : valueKey];
+ let controlled = false;
+ if (strict && typeof value !== 'undefined' && value !== null) {
+ controlled = true;
+ }
+ const set = (newVal, extObj, fn) => {
+ this.setData(Object.assign({ [`_${valueKey}`]: newVal }, extObj), fn);
+ };
+ return {
+ controlled,
+ initValue: controlled ? value : defaultValue,
+ set,
+ get: () => {
+ return this.data[`_${valueKey}`];
+ },
+ change: (newVal, customChangeData, customUpdateFn) => {
+ this.triggerEvent(changeEventName, typeof customChangeData !== 'undefined' ? customChangeData : newVal);
+ if (controlled) {
+ return;
+ }
+ if (typeof customUpdateFn === 'function') {
+ customUpdateFn();
+ }
+ else {
+ set(newVal);
+ }
+ },
+ };
+}
+export { useControl };
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/flatTool.d.ts b/miniprogram_npm/tdesign-miniprogram/common/src/flatTool.d.ts
new file mode 100644
index 0000000..4183d79
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/flatTool.d.ts
@@ -0,0 +1,15 @@
+export declare const getPrototypeOf: (obj: any) => any;
+export declare const isObject: (something: any) => boolean;
+export declare const iterateInheritedPrototype: (callback: (proto: Record) => boolean | void, fromCtor: any, toCtor: any, includeToCtor?: boolean) => void;
+export interface ClassInstanceToObjectOptions {
+ bindTo?: any;
+ excludes?: string[];
+ till?: any;
+ enumerable?: 0 | boolean;
+ configurable?: 0 | boolean;
+ writable?: 0 | boolean;
+}
+export declare const toObject: (something: any, options?: ClassInstanceToObjectOptions) => {
+ [key: string]: any;
+};
+export declare const isPlainObject: (something: any) => boolean;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/flatTool.js b/miniprogram_npm/tdesign-miniprogram/common/src/flatTool.js
new file mode 100644
index 0000000..045abd7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/flatTool.js
@@ -0,0 +1,57 @@
+export const getPrototypeOf = function (obj) {
+ return Object.getPrototypeOf ? Object.getPrototypeOf(obj) : obj.__proto__;
+};
+export const isObject = function isObject(something) {
+ const type = typeof something;
+ return something !== null && (type === 'function' || type === 'object');
+};
+export const iterateInheritedPrototype = function iterateInheritedPrototype(callback, fromCtor, toCtor, includeToCtor = true) {
+ let proto = fromCtor.prototype || fromCtor;
+ const toProto = toCtor.prototype || toCtor;
+ while (proto) {
+ if (!includeToCtor && proto === toProto)
+ break;
+ if (callback(proto) === false)
+ break;
+ if (proto === toProto)
+ break;
+ proto = getPrototypeOf(proto);
+ }
+};
+export const toObject = function toObject(something, options = {}) {
+ const obj = {};
+ if (!isObject(something))
+ return obj;
+ const excludes = options.excludes || ['constructor'];
+ const { enumerable = true, configurable = 0, writable = 0 } = options;
+ const defaultDesc = {};
+ if (enumerable !== 0)
+ defaultDesc.enumerable = enumerable;
+ if (configurable !== 0)
+ defaultDesc.configurable = configurable;
+ if (writable !== 0)
+ defaultDesc.writable = writable;
+ iterateInheritedPrototype((proto) => {
+ Object.getOwnPropertyNames(proto).forEach((key) => {
+ if (excludes.indexOf(key) >= 0)
+ return;
+ if (Object.prototype.hasOwnProperty.call(obj, key))
+ return;
+ const desc = Object.getOwnPropertyDescriptor(proto, key);
+ const fnKeys = ['get', 'set', 'value'];
+ fnKeys.forEach((k) => {
+ if (typeof desc[k] === 'function') {
+ const oldFn = desc[k];
+ desc[k] = function (...args) {
+ return oldFn.apply(Object.prototype.hasOwnProperty.call(options, 'bindTo') ? options.bindTo : this, args);
+ };
+ }
+ });
+ Object.defineProperty(obj, key, Object.assign(Object.assign({}, desc), defaultDesc));
+ });
+ }, something, options.till || Object, false);
+ return obj;
+};
+export const isPlainObject = function isPlainObject(something) {
+ return Object.prototype.toString.call(something) === '[object Object]';
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/index.d.ts b/miniprogram_npm/tdesign-miniprogram/common/src/index.d.ts
new file mode 100644
index 0000000..94e7ce1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/index.d.ts
@@ -0,0 +1,4 @@
+export * from './superComponent';
+export * from './flatTool';
+export * from './instantiationDecorator';
+export * from './control';
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/index.js b/miniprogram_npm/tdesign-miniprogram/common/src/index.js
new file mode 100644
index 0000000..94e7ce1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/index.js
@@ -0,0 +1,4 @@
+export * from './superComponent';
+export * from './flatTool';
+export * from './instantiationDecorator';
+export * from './control';
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.d.ts b/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.d.ts
new file mode 100644
index 0000000..3a06f2c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.d.ts
@@ -0,0 +1,3 @@
+import { SuperComponent } from './superComponent';
+export declare const toComponent: (options: Record) => Record;
+export declare const wxComponent: () => (constructor: new () => SuperComponent) => void;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js b/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js
new file mode 100644
index 0000000..0e5c3d3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/instantiationDecorator.js
@@ -0,0 +1,142 @@
+import { isPlainObject, toObject } from './flatTool';
+import { canUseVirtualHost } from '../version';
+const RawLifeCycles = ['Created', 'Attached', 'Ready', 'Moved', 'Detached', 'Error'];
+const NativeLifeCycles = RawLifeCycles.map((k) => k.toLowerCase());
+const ComponentNativeProps = [
+ 'properties',
+ 'data',
+ 'observers',
+ 'methods',
+ 'behaviors',
+ ...NativeLifeCycles,
+ 'relations',
+ 'externalClasses',
+ 'options',
+ 'lifetimes',
+ 'pageLifeTimes',
+ 'definitionFilter',
+];
+export const toComponent = function toComponent(options) {
+ const { relations, behaviors = [], properties, externalClasses = [] } = options;
+ if (options.properties) {
+ Object.keys(options.properties).forEach((k) => {
+ let opt = options.properties[k];
+ if (!isPlainObject(opt)) {
+ opt = { type: opt };
+ }
+ options.properties[k] = opt;
+ });
+ const ariaProps = [
+ { key: 'ariaHidden', type: Boolean },
+ { key: 'ariaRole', type: String },
+ { key: 'ariaLabel', type: String },
+ { key: 'ariaLabelledby', type: String },
+ { key: 'ariaDescribedby', type: String },
+ { key: 'ariaBusy', type: Boolean },
+ ];
+ ariaProps.forEach(({ key, type }) => {
+ options.properties[key] = {
+ type,
+ };
+ });
+ options.properties.style = { type: String, value: '' };
+ options.properties.customStyle = { type: String, value: '' };
+ }
+ if (!options.methods)
+ options.methods = {};
+ if (!options.lifetimes)
+ options.lifetimes = {};
+ const inits = {};
+ if (relations) {
+ const getRelations = (relation, path) => Behavior({
+ created() {
+ Object.defineProperty(this, `$${relation}`, {
+ get: () => {
+ const nodes = this.getRelationNodes(path) || [];
+ return relation === 'parent' ? nodes[0] : nodes;
+ },
+ });
+ },
+ });
+ const map = {};
+ Object.keys(relations).forEach((path) => {
+ const comp = relations[path];
+ const relation = ['parent', 'ancestor'].includes(comp.type) ? 'parent' : 'children';
+ const mixin = getRelations(relation, path);
+ map[relation] = mixin;
+ });
+ behaviors.push(...Object.keys(map).map((key) => map[key]));
+ }
+ options.behaviors = [...behaviors];
+ options.externalClasses = ['class', ...externalClasses];
+ Object.getOwnPropertyNames(options).forEach((k) => {
+ const desc = Object.getOwnPropertyDescriptor(options, k);
+ if (!desc)
+ return;
+ if (NativeLifeCycles.indexOf(k) < 0 && typeof desc.value === 'function') {
+ Object.defineProperty(options.methods, k, desc);
+ delete options[k];
+ }
+ else if (ComponentNativeProps.indexOf(k) < 0) {
+ inits[k] = desc;
+ }
+ else if (NativeLifeCycles.indexOf(k) >= 0) {
+ options.lifetimes[k] = options[k];
+ }
+ });
+ if (Object.keys(inits).length) {
+ const oldCreated = options.lifetimes.created;
+ const oldAttached = options.lifetimes.attached;
+ const { controlledProps = [] } = options;
+ options.lifetimes.created = function (...args) {
+ Object.defineProperties(this, inits);
+ if (oldCreated)
+ oldCreated.apply(this, args);
+ };
+ options.lifetimes.attached = function (...args) {
+ if (oldAttached)
+ oldAttached.apply(this, args);
+ controlledProps.forEach(({ key }) => {
+ const defaultKey = `default${key.replace(/^(\w)/, (m, m1) => m1.toUpperCase())}`;
+ const props = this.properties;
+ if (props[key] == null) {
+ this._selfControlled = true;
+ }
+ if (props[key] == null && props[defaultKey] != null) {
+ this.setData({
+ [key]: props[defaultKey],
+ });
+ }
+ });
+ };
+ options.methods._trigger = function (evtName, detail, opts) {
+ const target = controlledProps.find((item) => item.event == evtName);
+ if (target) {
+ const { key } = target;
+ if (this._selfControlled) {
+ this.setData({
+ [key]: detail[key],
+ });
+ }
+ }
+ this.triggerEvent(evtName, detail, opts);
+ };
+ }
+ return options;
+};
+export const wxComponent = function wxComponent() {
+ return function (constructor) {
+ class WxComponent extends constructor {
+ }
+ const current = new WxComponent();
+ current.options = current.options || {};
+ if (current.options.addGlobalClass === undefined) {
+ current.options.addGlobalClass = true;
+ }
+ if (canUseVirtualHost()) {
+ current.options.virtualHost = true;
+ }
+ const obj = toComponent(toObject(current));
+ Component(obj);
+ };
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/superComponent.d.ts b/miniprogram_npm/tdesign-miniprogram/common/src/superComponent.d.ts
new file mode 100644
index 0000000..4455e19
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/superComponent.d.ts
@@ -0,0 +1,19 @@
+///
+export interface ComponentsOptionsType extends WechatMiniprogram.Component.ComponentOptions {
+ styleIsolation?: 'isolated' | 'apply-shared' | 'shared' | 'page-isolated' | 'page-apply-shared' | 'page-shared';
+}
+export interface RelationsOptions {
+ [componentName: string]: WechatMiniprogram.Component.RelationOption;
+}
+export interface SuperComponent extends WechatMiniprogram.Component.Lifetimes, WechatMiniprogram.Component.OtherOption, WechatMiniprogram.Component.InstanceMethods {
+ properties: P;
+ data: D;
+ options: ComponentsOptionsType;
+ methods: M | Record any>;
+ $global: Function;
+ [x: string]: any;
+}
+export declare class SuperComponent {
+ readonly app: any;
+ constructor();
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/src/superComponent.js b/miniprogram_npm/tdesign-miniprogram/common/src/superComponent.js
new file mode 100644
index 0000000..3cb17dc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/src/superComponent.js
@@ -0,0 +1,5 @@
+export class SuperComponent {
+ constructor() {
+ this.app = getApp();
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/_variables.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/_variables.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/base.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/base.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/index.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/index.wxss
new file mode 100644
index 0000000..1d532d2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/style/index.wxss
@@ -0,0 +1,27 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_clearfix.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_clearfix.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_cursor.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_cursor.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_ellipsis.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_ellipsis.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_hairline.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_hairline.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_index.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/mixins/_index.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/theme/_index.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/theme/_index.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_animation.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_animation.wxss
new file mode 100644
index 0000000..a04e7c5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_animation.wxss
@@ -0,0 +1,8 @@
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_float.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_float.wxss
new file mode 100644
index 0000000..e88ef0e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_float.wxss
@@ -0,0 +1,6 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_index.wxss b/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_index.wxss
new file mode 100644
index 0000000..1d532d2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/style/utilities/_index.wxss
@@ -0,0 +1,27 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/common/template/badge.wxml b/miniprogram_npm/tdesign-miniprogram/common/template/badge.wxml
new file mode 100644
index 0000000..df8c717
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/template/badge.wxml
@@ -0,0 +1,16 @@
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/common/template/button.wxml b/miniprogram_npm/tdesign-miniprogram/common/template/button.wxml
new file mode 100644
index 0000000..173e8bb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/template/button.wxml
@@ -0,0 +1,37 @@
+
+ {{content}}
+
diff --git a/miniprogram_npm/tdesign-miniprogram/common/template/icon.wxml b/miniprogram_npm/tdesign-miniprogram/common/template/icon.wxml
new file mode 100644
index 0000000..0fafa2c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/template/icon.wxml
@@ -0,0 +1,15 @@
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/common/template/image.wxml b/miniprogram_npm/tdesign-miniprogram/common/template/image.wxml
new file mode 100644
index 0000000..7c78c4a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/template/image.wxml
@@ -0,0 +1,21 @@
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/common/utils.d.ts b/miniprogram_npm/tdesign-miniprogram/common/utils.d.ts
new file mode 100644
index 0000000..ebab160
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/utils.d.ts
@@ -0,0 +1,30 @@
+///
+///
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+export declare const debounce: (func: any, wait?: number) => (...rest: any[]) => void;
+export declare const throttle: (func: any, wait?: number, options?: any) => (...args: any[]) => void;
+export declare const classNames: (...args: any[]) => string;
+export declare const styles: (styleObj: any) => string;
+export declare const getAnimationFrame: (context: any, cb: Function) => WechatMiniprogram.NodesRef;
+export declare const getRect: (context: any, selector: string, needAll?: boolean) => Promise;
+export declare const isNumber: (value: any) => boolean;
+export declare const addUnit: (value?: string | number) => string | undefined;
+export declare const getCharacterLength: (type: string, str: string, max?: number) => {
+ length: number;
+ characters: string;
+};
+export declare const chunk: (arr: any[], size: number) => any[][];
+export declare const getInstance: (context?: Context, selector?: string) => WechatMiniprogram.Component.TrivialInstance;
+export declare const unitConvert: (value: number | string) => number;
+export declare const setIcon: (iconName: any, icon: any, defaultIcon: any) => {
+ [x: string]: any;
+};
+export declare const isBool: (val: any) => boolean;
+export declare const isObject: (val: any) => boolean;
+export declare const isString: (val: any) => boolean;
+export declare const toCamel: (str: any) => any;
+export declare const getCurrentPage: () => T & WechatMiniprogram.OptionalInterface & WechatMiniprogram.Page.InstanceProperties & WechatMiniprogram.Page.InstanceMethods & WechatMiniprogram.Page.Data & WechatMiniprogram.IAnyObject;
+export declare const uniqueFactory: (compName: any) => () => string;
+export declare const calcIcon: (icon: string | Record, defaultIcon?: string) => string | Record;
+export declare const isOverSize: (size: any, sizeLimit: any) => boolean;
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/utils.js b/miniprogram_npm/tdesign-miniprogram/common/utils.js
new file mode 100644
index 0000000..2d6daef
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/utils.js
@@ -0,0 +1,233 @@
+import { prefix } from './config';
+const systemInfo = wx.getSystemInfoSync();
+export const debounce = function (func, wait = 500) {
+ let timerId;
+ return function (...rest) {
+ if (timerId) {
+ clearTimeout(timerId);
+ }
+ timerId = setTimeout(() => {
+ func.apply(this, rest);
+ }, wait);
+ };
+};
+export const throttle = (func, wait = 100, options = null) => {
+ let previous = 0;
+ let timerid = null;
+ if (!options) {
+ options = {
+ leading: true,
+ };
+ }
+ return function (...args) {
+ const now = Date.now();
+ if (!previous && !options.leading)
+ previous = now;
+ const remaining = wait - (now - previous);
+ const context = this;
+ if (remaining <= 0) {
+ if (timerid) {
+ clearTimeout(timerid);
+ timerid = null;
+ }
+ previous = now;
+ func.apply(context, args);
+ }
+ };
+};
+export const classNames = function (...args) {
+ const hasOwn = {}.hasOwnProperty;
+ const classes = [];
+ args.forEach((arg) => {
+ if (!arg)
+ return;
+ const argType = typeof arg;
+ if (argType === 'string' || argType === 'number') {
+ classes.push(arg);
+ }
+ else if (Array.isArray(arg) && arg.length) {
+ const inner = classNames(...arg);
+ if (inner) {
+ classes.push(inner);
+ }
+ }
+ else if (argType === 'object') {
+ for (const key in arg) {
+ if (hasOwn.call(arg, key) && arg[key]) {
+ classes.push(key);
+ }
+ }
+ }
+ });
+ return classes.join(' ');
+};
+export const styles = function (styleObj) {
+ return Object.keys(styleObj)
+ .map((styleKey) => `${styleKey}: ${styleObj[styleKey]}`)
+ .join('; ');
+};
+export const getAnimationFrame = function (context, cb) {
+ return wx
+ .createSelectorQuery()
+ .in(context)
+ .selectViewport()
+ .boundingClientRect()
+ .exec(() => {
+ cb();
+ });
+};
+export const getRect = function (context, selector, needAll = false) {
+ return new Promise((resolve, reject) => {
+ wx.createSelectorQuery()
+ .in(context)[needAll ? 'selectAll' : 'select'](selector)
+ .boundingClientRect((rect) => {
+ if (rect) {
+ resolve(rect);
+ }
+ else {
+ reject(rect);
+ }
+ })
+ .exec();
+ });
+};
+const isDef = function (value) {
+ return value !== undefined && value !== null;
+};
+export const isNumber = function (value) {
+ return /^\d+(\.\d+)?$/.test(value);
+};
+export const addUnit = function (value) {
+ if (!isDef(value)) {
+ return undefined;
+ }
+ value = String(value);
+ return isNumber(value) ? `${value}px` : value;
+};
+export const getCharacterLength = (type, str, max) => {
+ if (!str || str.length === 0) {
+ return {
+ length: 0,
+ characters: '',
+ };
+ }
+ if (type === 'maxcharacter') {
+ let len = 0;
+ for (let i = 0; i < str.length; i += 1) {
+ let currentStringLength = 0;
+ if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
+ currentStringLength = 2;
+ }
+ else {
+ currentStringLength = 1;
+ }
+ if (len + currentStringLength > max) {
+ return {
+ length: len,
+ characters: str.slice(0, i),
+ };
+ }
+ len += currentStringLength;
+ }
+ return {
+ length: len,
+ characters: str,
+ };
+ }
+ else if (type === 'maxlength') {
+ const length = str.length > max ? max : str.length;
+ return {
+ length,
+ characters: str.slice(0, length),
+ };
+ }
+ return {
+ length: str.length,
+ characters: str,
+ };
+};
+export const chunk = (arr, size) => Array.from({ length: Math.ceil(arr.length / size) }, (v, i) => arr.slice(i * size, i * size + size));
+export const getInstance = function (context, selector) {
+ if (!context) {
+ const pages = getCurrentPages();
+ const page = pages[pages.length - 1];
+ context = page.$$basePage || page;
+ }
+ const instance = context ? context.selectComponent(selector) : null;
+ if (!instance) {
+ console.warn('未找到组件,请检查selector是否正确');
+ return null;
+ }
+ return instance;
+};
+export const unitConvert = (value) => {
+ var _a;
+ if (typeof value === 'string') {
+ if (value.includes('rpx')) {
+ return (parseInt(value, 10) * ((_a = systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.screenWidth) !== null && _a !== void 0 ? _a : 750)) / 750;
+ }
+ return parseInt(value, 10);
+ }
+ return value;
+};
+export const setIcon = (iconName, icon, defaultIcon) => {
+ if (icon) {
+ if (typeof icon === 'string') {
+ return {
+ [`${iconName}Name`]: icon,
+ [`${iconName}Data`]: {},
+ };
+ }
+ else if (typeof icon === 'object') {
+ return {
+ [`${iconName}Name`]: '',
+ [`${iconName}Data`]: icon,
+ };
+ }
+ else {
+ return {
+ [`${iconName}Name`]: defaultIcon,
+ [`${iconName}Data`]: {},
+ };
+ }
+ }
+ return {
+ [`${iconName}Name`]: '',
+ [`${iconName}Data`]: {},
+ };
+};
+export const isBool = (val) => typeof val === 'boolean';
+export const isObject = (val) => typeof val === 'object' && val != null;
+export const isString = (val) => typeof val === 'string';
+export const toCamel = (str) => str.replace(/-(\w)/g, (match, m1) => m1.toUpperCase());
+export const getCurrentPage = function () {
+ const pages = getCurrentPages();
+ return pages[pages.length - 1];
+};
+export const uniqueFactory = (compName) => {
+ let number = 0;
+ return () => `${prefix}_${compName}_${number++}`;
+};
+export const calcIcon = (icon, defaultIcon) => {
+ if ((isBool(icon) && icon && defaultIcon) || isString(icon)) {
+ return { name: isBool(icon) ? defaultIcon : icon };
+ }
+ if (isObject(icon)) {
+ return icon;
+ }
+ return null;
+};
+export const isOverSize = (size, sizeLimit) => {
+ var _a;
+ if (!sizeLimit)
+ return false;
+ const base = 1000;
+ const unitMap = {
+ B: 1,
+ KB: base,
+ MB: base * base,
+ GB: base * base * base,
+ };
+ const computedSize = typeof sizeLimit === 'number' ? sizeLimit * base : (sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.size) * unitMap[(_a = sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.unit) !== null && _a !== void 0 ? _a : 'KB'];
+ return size > computedSize;
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/utils.wxs b/miniprogram_npm/tdesign-miniprogram/common/utils.wxs
new file mode 100644
index 0000000..be97e3d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/utils.wxs
@@ -0,0 +1,137 @@
+/* utils */
+
+/**
+ * addUnit */
+// 为 css 添加单位
+function addUnit(value) {
+ var REGEXP = getRegExp('^-?\d+(.\d+)?$');
+ if (value == null) {
+ return undefined;
+ }
+ return REGEXP.test('' + value) ? value + 'px' : value;
+}
+
+function isString(string) {
+ return string && string.constructor === 'String';
+}
+
+function isArray(array) {
+ return array && array.constructor === 'Array';
+}
+
+function isObject(obj) {
+ return obj && obj.constructor === 'Object';
+}
+
+var isNoEmptyObj = function (obj) {
+ return isObject(obj) && JSON.stringify(obj) !== '{}';
+};
+
+function includes(arr, value) {
+ if (!arr || !isArray(arr)) return false;
+
+ var i = 0;
+ var len = arr.length;
+
+ for (; i < len; i++) {
+ if (arr[i] === value) return true;
+ }
+ return false;
+}
+
+function cls(base, arr) {
+ var res = [base];
+ var i = 0;
+ for (size = arr.length; i < size; i++) {
+ var item = arr[i];
+
+ if (item && item.constructor === 'Array') {
+ var key = arr[i][0];
+ var value = arr[i][1];
+
+ if (value) {
+ res.push(base + '--' + key);
+ }
+ } else if (typeof item === 'string' || typeof item === 'number') {
+ if (item) {
+ res.push(base + '--' + item);
+ }
+ }
+ }
+ return res.join(' ');
+}
+
+function getBadgeAriaLabel(options) {
+ var maxCount = options.maxCount || 99;
+ if (options.dot) {
+ return '有新的消息';
+ }
+ if (options.count === '...') {
+ return '有很多消息';
+ }
+ if (isNaN(options.count)) {
+ return options.count;
+ }
+ var str1 = '有' + maxCount + '+条消息';
+ var str2 = '有' + options.count + '条消息';
+ return Number(options.count) > maxCount ? str1 : str2;
+}
+
+function endsWith(str, endStr) {
+ return str.slice(-endStr.length) === endStr ? str : str + endStr;
+}
+
+function keys(obj) {
+ return JSON.stringify(obj)
+ .replace(getRegExp('{|}|"', 'g'), '')
+ .split(',')
+ .map(function (item) {
+ return item.split(':')[0];
+ });
+}
+
+function kebabCase(str) {
+ return str
+ .replace(getRegExp('[A-Z]', 'g'), function (ele) {
+ return '-' + ele;
+ })
+ .toLowerCase();
+}
+
+function _style(styles) {
+ if (isArray(styles)) {
+ return styles
+ .filter(function (item) {
+ return item != null && item !== '';
+ })
+ .map(function (item) {
+ return isArray(item) ? style(item) : endsWith(item, ';');
+ })
+ .join(' ');
+ }
+
+ if (isObject(styles)) {
+ return keys(styles)
+ .filter(function (key) {
+ return styles[key] != null && styles[key] !== '';
+ })
+ .map(function (key) {
+ return [kebabCase(key), [styles[key]]].join(':');
+ })
+ .join(';');
+ }
+
+ return styles;
+}
+
+module.exports = {
+ addUnit: addUnit,
+ isString: isString,
+ isArray: isArray,
+ isObject: isObject,
+ isNoEmptyObj: isNoEmptyObj,
+ includes: includes,
+ cls: cls,
+ getBadgeAriaLabel: getBadgeAriaLabel,
+ _style: _style,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/common/version.d.ts b/miniprogram_npm/tdesign-miniprogram/common/version.d.ts
new file mode 100644
index 0000000..a492558
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/version.d.ts
@@ -0,0 +1,2 @@
+export declare function canIUseFormFieldButton(): boolean;
+export declare function canUseVirtualHost(): boolean;
diff --git a/miniprogram_npm/tdesign-miniprogram/common/version.js b/miniprogram_npm/tdesign-miniprogram/common/version.js
new file mode 100644
index 0000000..a4e7619
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/common/version.js
@@ -0,0 +1,40 @@
+let systemInfo;
+function getSystemInfo() {
+ if (systemInfo == null) {
+ systemInfo = wx.getSystemInfoSync();
+ }
+ return systemInfo;
+}
+function compareVersion(v1, v2) {
+ v1 = v1.split('.');
+ v2 = v2.split('.');
+ const len = Math.max(v1.length, v2.length);
+ while (v1.length < len) {
+ v1.push('0');
+ }
+ while (v2.length < len) {
+ v2.push('0');
+ }
+ for (let i = 0; i < len; i++) {
+ const num1 = parseInt(v1[i]);
+ const num2 = parseInt(v2[i]);
+ if (num1 > num2) {
+ return 1;
+ }
+ else if (num1 < num2) {
+ return -1;
+ }
+ }
+ return 0;
+}
+function judgeByVersion(version) {
+ const currentSDKVersion = getSystemInfo().SDKVersion;
+ return compareVersion(currentSDKVersion, version) >= 0;
+}
+export function canIUseFormFieldButton() {
+ const version = '2.10.3';
+ return judgeByVersion(version);
+}
+export function canUseVirtualHost() {
+ return judgeByVersion('2.19.2');
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/count-down/README.en-US.md
new file mode 100644
index 0000000..44bca3e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/README.en-US.md
@@ -0,0 +1,23 @@
+:: BASE_DOC ::
+
+## API
+
+### CountDown Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+auto-start | Boolean | true | \- | N
+content | String / Slot | 'default' | \- | N
+format | String | HH:mm:ss | \- | N
+millisecond | Boolean | false | \- | N
+size | String `v0.5.1` | 'small' | options:small/medium/large | N
+split-with-unit `v0.5.1` | Boolean | false | \- | N
+theme | String `v0.5.1` | 'default' | options:default/round/square | N
+time | Number | - | required | Y
+
+### CountDown Events
+
+name | params | description
+-- | -- | --
+change | `(time: TimeData)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/count-down/type.ts)。
`interface TimeData { days: number; hours: number; minutes: number; seconds: number; milliseconds: number }`
+finish | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/README.md b/miniprogram_npm/tdesign-miniprogram/count-down/README.md
new file mode 100644
index 0000000..12cd224
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/README.md
@@ -0,0 +1,49 @@
+---
+title: CountDown 倒计时
+description: 用于实时展示倒计时数值。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-count-down": "tdesign-miniprogram/count-down/count-down"
+}
+```
+
+## 代码演示
+
+### 基础倒计时
+
+{{ base }}
+
+### 调整尺寸
+
+{{ size }}
+
+## API
+### CountDown Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+auto-start | Boolean | true | 是否自动开始倒计时 | N
+content | String / Slot | 'default' | 最终倒计时的展示内容,值为'default'时使用默认的格式,否则使用自定义样式插槽 | N
+format | String | HH:mm:ss | 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 | N
+millisecond | Boolean | false | 是否开启毫秒级渲染 | N
+size | String `v0.5.1` | 'medium' | 倒计时尺寸。可选项:small/medium/large | N
+split-with-unit `v0.5.1` | Boolean | false | 使用时间单位分割 | N
+theme | String `v0.5.1` | 'default' | 倒计时风格。可选项:default/round/square | N
+time | Number | - | 必需。倒计时时长,单位毫秒 | Y
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、计时器类型、分隔线类名 等。`['t-class', 't-class-count', 't-class-split']` | N
+
+### CountDown Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(time: TimeData)` | 时间变化时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/count-down/type.ts)。
`interface TimeData { days: number; hours: number; minutes: number; seconds: number; milliseconds: number }`
+finish | \- | 倒计时结束时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/count-down.d.ts b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.d.ts
new file mode 100644
index 0000000..60bd7f2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.d.ts
@@ -0,0 +1,33 @@
+import { SuperComponent } from '../common/src/index';
+export default class CountDown extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdCountDownProps;
+ observers: {
+ time(): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ timeDataUnit: {
+ DD: string;
+ HH: string;
+ mm: string;
+ ss: string;
+ SSS: string;
+ };
+ timeData: import("./utils").TimeData;
+ formattedTime: string;
+ };
+ timeoutId: null | number;
+ lifetimes: {
+ detached(): void;
+ };
+ methods: {
+ start(): void;
+ pause(): void;
+ reset(): void;
+ getTime(): number;
+ updateTime(remain: number): void;
+ doCount(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/count-down.js b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.js
new file mode 100644
index 0000000..3582cb4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.js
@@ -0,0 +1,100 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { isSameSecond, parseFormat, parseTimeData, TimeDataUnit } from './utils';
+const { prefix } = config;
+const name = `${prefix}-count-down`;
+let CountDown = class CountDown extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-count`, `${prefix}-class-split`];
+ this.properties = props;
+ this.observers = {
+ time() {
+ this.reset();
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ timeDataUnit: TimeDataUnit,
+ timeData: parseTimeData(0),
+ formattedTime: '0',
+ };
+ this.timeoutId = null;
+ this.lifetimes = {
+ detached() {
+ if (this.timeoutId) {
+ clearTimeout(this.timeoutId);
+ this.timeoutId = null;
+ }
+ },
+ };
+ this.methods = {
+ start() {
+ if (this.counting) {
+ return;
+ }
+ this.counting = true;
+ this.endTime = Date.now() + this.remain;
+ this.doCount();
+ },
+ pause() {
+ this.counting = false;
+ this.timeoutId && clearTimeout(this.timeoutId);
+ },
+ reset() {
+ this.pause();
+ this.remain = this.properties.time;
+ this.updateTime(this.remain);
+ if (this.properties.autoStart) {
+ this.start();
+ }
+ },
+ getTime() {
+ return Math.max(this.endTime - Date.now(), 0);
+ },
+ updateTime(remain) {
+ const { format } = this.properties;
+ this.remain = remain;
+ const timeData = parseTimeData(remain);
+ this.triggerEvent('change', timeData);
+ const { timeText } = parseFormat(remain, format);
+ const timeRange = format.split(':');
+ this.setData({
+ timeRange,
+ timeData,
+ formattedTime: timeText.replace(/:/g, ' : '),
+ });
+ if (remain === 0) {
+ this.pause();
+ this.triggerEvent('finish');
+ }
+ },
+ doCount() {
+ this.timeoutId = setTimeout(() => {
+ const time = this.getTime();
+ if (this.properties.millisecond) {
+ this.updateTime(time);
+ }
+ else if (!isSameSecond(time, this.remain) || time === 0) {
+ this.updateTime(time);
+ }
+ if (time !== 0) {
+ this.doCount();
+ }
+ }, 33);
+ },
+ };
+ }
+};
+CountDown = __decorate([
+ wxComponent()
+], CountDown);
+export default CountDown;
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/count-down.json b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/count-down.wxml b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.wxml
new file mode 100644
index 0000000..7add47e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.wxml
@@ -0,0 +1,22 @@
+
+ module.exports.format = function(num) { return num < 10 ? '0' + num : num; }
+
+
+
+
+ {{formattedTime}}
+
+
+ {{this.format(timeData[timeRange[index]])}}
+ {{splitWithUnit ? timeDataUnit[timeRange[index]] : ':'}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/count-down.wxss b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.wxss
new file mode 100644
index 0000000..6ed1bb9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/count-down.wxss
@@ -0,0 +1,136 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-count-down--small.t-count-down--default {
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down--small.t-count-down--round > .t-count-down__item {
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-count-down--small.t-count-down--square > .t-count-down__item {
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-count-down--small.t-count-down--round > .t-count-down__item,
+.t-count-down--small.t-count-down--square > .t-count-down__item {
+ width: 40rpx;
+ height: 40rpx;
+}
+.t-count-down--small.t-count-down--round > .t-count-down__split--dot,
+.t-count-down--small.t-count-down--square > .t-count-down__split--dot {
+ margin: 0 4rpx;
+ font-size: var(--td-font-size-base, 28rpx);
+ font-weight: 700;
+}
+.t-count-down--small.t-count-down--round > .t-count-down__split--text,
+.t-count-down--small.t-count-down--square > .t-count-down__split--text {
+ margin: 0 8rpx;
+ font-size: var(--td-font-size, 20rpx);
+}
+.t-count-down--medium.t-count-down--default {
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__item {
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down--medium.t-count-down--square > .t-count-down__item {
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__item,
+.t-count-down--medium.t-count-down--square > .t-count-down__item {
+ width: 48rpx;
+ height: 48rpx;
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__split--dot,
+.t-count-down--medium.t-count-down--square > .t-count-down__split--dot {
+ margin: 0 6rpx;
+ font-size: var(--td-font-size-m, 32rpx);
+ font-weight: 700;
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__split--text,
+.t-count-down--medium.t-count-down--square > .t-count-down__split--text {
+ margin: 0 10rpx;
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-count-down--large.t-count-down--default {
+ font-size: 36rpx;
+}
+.t-count-down--large.t-count-down--round > .t-count-down__item {
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-count-down--large.t-count-down--square > .t-count-down__item {
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-count-down--large.t-count-down--round > .t-count-down__item,
+.t-count-down--large.t-count-down--square > .t-count-down__item {
+ width: 56rpx;
+ height: 56rpx;
+}
+.t-count-down--large.t-count-down--round > .t-count-down__split--dot,
+.t-count-down--large.t-count-down--square > .t-count-down__split--dot {
+ margin: 0 12rpx;
+ font-size: 36rpx;
+ font-weight: 700;
+}
+.t-count-down--large.t-count-down--round > .t-count-down__split--text,
+.t-count-down--large.t-count-down--square > .t-count-down__split--text {
+ margin: 0 12rpx;
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down {
+ font-family: 'DIN Alternate', 'Courier New', Courier, monospace;
+}
+.t-count-down .t-count-down__item,
+.t-count-down .t-count-down__split {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-count-down--square > .t-count-down__split--dot,
+.t-count-down--round > .t-count-down__split--dot {
+ color: var(--td-error-color-6, #d54941);
+}
+.t-count-down--square > .t-count-down__split--text,
+.t-count-down--round > .t-count-down__split--text {
+ color: var(--td-font-gray-1, rgba(0, 0, 0, 0.9));
+}
+.t-count-down--default {
+ color: var(--td-countdown-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-count-down--square {
+ color: var(--td-countdown-round-color, var(--td-font-white-1, #ffffff));
+}
+.t-count-down--square > .t-count-down__item {
+ border-radius: var(--td-countdown-square-border-radius, var(--td-radius-small, 6rpx));
+ background: var(--td-countdown-bg-color, var(--td-error-color-6, #d54941));
+}
+.t-count-down--round {
+ color: var(--td-countdown-round-color, var(--td-font-white-1, #ffffff));
+}
+.t-count-down--round > .t-count-down__item {
+ border-radius: var(--td-countdown-round-border-radius, var(--td-radius-circle, 50%));
+ background: var(--td-countdown-bg-color, var(--td-error-color-6, #d54941));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/props.d.ts b/miniprogram_npm/tdesign-miniprogram/count-down/props.d.ts
new file mode 100644
index 0000000..8cab4af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCountDownProps } from './type';
+declare const props: TdCountDownProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/props.js b/miniprogram_npm/tdesign-miniprogram/count-down/props.js
new file mode 100644
index 0000000..fe871f8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/props.js
@@ -0,0 +1,34 @@
+const props = {
+ autoStart: {
+ type: Boolean,
+ value: true,
+ },
+ content: {
+ type: String,
+ value: 'default',
+ },
+ format: {
+ type: String,
+ value: 'HH:mm:ss',
+ },
+ millisecond: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ splitWithUnit: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ time: {
+ type: Number,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/type.d.ts b/miniprogram_npm/tdesign-miniprogram/count-down/type.d.ts
new file mode 100644
index 0000000..84007d2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdCountDownProps {
+ autoStart?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ format?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ millisecond?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'small' | 'medium' | 'large';
+ };
+ splitWithUnit?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'round' | 'square';
+ };
+ time: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/type.js b/miniprogram_npm/tdesign-miniprogram/count-down/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/utils.d.ts b/miniprogram_npm/tdesign-miniprogram/count-down/utils.d.ts
new file mode 100644
index 0000000..18c1fac
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/utils.d.ts
@@ -0,0 +1,25 @@
+export interface TimeData {
+ DD: number;
+ HH: number;
+ mm: number;
+ ss: number;
+ SSS: number;
+}
+export declare const TimeDataUnit: {
+ DD: string;
+ HH: string;
+ mm: string;
+ ss: string;
+ SSS: string;
+};
+export declare const parseTimeData: (time: number) => TimeData;
+export declare const isSameSecond: (time1: number, time2: number) => boolean;
+export declare type TTimeList = {
+ digit: string;
+ unit: string;
+ match: string;
+}[];
+export declare const parseFormat: (time: number, format: string) => {
+ timeText: string;
+ timeList: TTimeList;
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/count-down/utils.js b/miniprogram_npm/tdesign-miniprogram/count-down/utils.js
new file mode 100644
index 0000000..4aa6dc3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/count-down/utils.js
@@ -0,0 +1,61 @@
+export const TimeDataUnit = {
+ DD: '天',
+ HH: '时',
+ mm: '分',
+ ss: '秒',
+ SSS: '毫秒',
+};
+const SECOND = 1000;
+const MINUTE = 60 * SECOND;
+const HOUR = 60 * MINUTE;
+const DAY = 24 * HOUR;
+export const parseTimeData = function (time) {
+ const days = Math.floor(time / DAY);
+ const hours = Math.floor((time % DAY) / HOUR);
+ const minutes = Math.floor((time % HOUR) / MINUTE);
+ const seconds = Math.floor((time % MINUTE) / SECOND);
+ const milliseconds = Math.floor(time % SECOND);
+ return {
+ DD: days,
+ HH: hours,
+ mm: minutes,
+ ss: seconds,
+ SSS: milliseconds,
+ };
+};
+export const isSameSecond = function (time1, time2) {
+ return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);
+};
+export const parseFormat = function (time, format) {
+ const obj = {
+ 'D+': Math.floor(time / 86400000),
+ 'H+': Math.floor((time % 86400000) / 3600000),
+ 'm+': Math.floor((time % 3600000) / 60000),
+ 's+': Math.floor((time % 60000) / 1000),
+ 'S+': Math.floor(time % 1000),
+ };
+ const timeList = [];
+ let timeText = format;
+ Object.keys(obj).forEach((prop) => {
+ if (new RegExp(`(${prop})`).test(timeText)) {
+ timeText = timeText.replace(RegExp.$1, (match, offset, source) => {
+ const v = `${obj[prop]}`;
+ let digit = v;
+ if (match.length > 1) {
+ digit = (match.replace(new RegExp(match[0], 'g'), '0') + v).substr(v.length);
+ }
+ const unit = source.substr(offset + match.length);
+ const last = timeList[timeList.length - 1];
+ if (last) {
+ const index = last.unit.indexOf(match);
+ if (index !== -1) {
+ last.unit = last.unit.substr(0, index);
+ }
+ }
+ timeList.push({ digit, unit, match });
+ return digit;
+ });
+ }
+ });
+ return { timeText, timeList };
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/date-time-picker/README.en-US.md
new file mode 100644
index 0000000..7f31cb2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/README.en-US.md
@@ -0,0 +1,31 @@
+:: BASE_DOC ::
+
+## API
+### DateTimePicker Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+cancel-btn | String | 取消 | \- | N
+confirm-btn | String | - | \- | N
+end | String / Number | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-confirm', 't-class-cancel', 't-class-title']` | N
+footer | Slot | true | `deprecated` | N
+format | String | 'YYYY-MM-DD HH:mm:ss' | \- | N
+header | Boolean / Slot | true | \- | N
+mode | String / Array | 'date' | Typescript:`DateTimePickerMode` `type DateTimePickerMode = TimeModeValues \| Array ` `type TimeModeValues = 'year' \| 'month' \| 'date' \| 'hour' \| 'minute' \| 'second'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+show-week | Boolean | false | \- | N
+start | String / Number | - | \- | N
+title | String | - | title of picker | N
+value | String / Number | - | Typescript:`DateValue` `type DateValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+default-value | String / Number | undefined | uncontrolled property。Typescript:`DateValue` `type DateValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+visible | Boolean | false | \- | N
+
+### DateTimePicker Events
+
+name | params | description
+-- | -- | --
+cancel | \- | \-
+change | `(value: DateValue)` | \-
+close | `(trigger: TriggerSource)` | `1.0.1`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: DateValue)` | `1.0.1`
+pick | `(value: DateValue)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/README.md b/miniprogram_npm/tdesign-miniprogram/date-time-picker/README.md
new file mode 100644
index 0000000..f201642
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/README.md
@@ -0,0 +1,69 @@
+---
+title: DateTimePicker 时间选择器
+description: 用于选择一个时间点或者一个时间段。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-date-time-picker": "tdesign-miniprogram/date-time-picker/date-time-picker"
+}
+```
+
+## 代码演示
+
+### 日期选择器
+
+#### 年月日选择器
+
+{{ year-month-date }}
+
+#### 年月选择器
+
+{{ year-month }}
+
+### 时间选择器器
+
+包括:`时分秒`、`时分`两个示例
+
+{{ time }}
+
+#### 年月日时分秒选择器
+
+{{ date-all }}
+
+## API
+### DateTimePicker Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+cancel-btn | String | 取消 | 取消按钮文字 | N
+confirm-btn | String | - | 确定按钮文字 | N
+end | String / Number | - | 选择器的最大可选时间,默认为当前时间+10年 | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、确认按钮、取消按钮、标题等元素类名。`['t-class', 't-class-confirm', 't-class-cancel', 't-class-title']` | N
+footer | Slot | true | 已废弃。底部内容 | N
+format | String | 'YYYY-MM-DD HH:mm:ss' | 用于pick、change、confirm事件参数格式化[详细文档](https://day.js.org/docs/en/display/format) | N
+header | Boolean / Slot | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容 | N
+mode | String / Array | 'date' | year = 年;month = 年月;date = 年月日;hour = 年月日时; minute = 年月日时分;当类型为数组时,第一个值控制年月日,第二个值控制时分秒,示例:['null', 'second']或['date', 'minute']。TS 类型:`DateTimePickerMode` `type DateTimePickerMode = TimeModeValues \| Array ` `type TimeModeValues = 'year' \| 'month' \| 'date' \| 'hour' \| 'minute' \| 'second'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+show-week | Boolean | false | 【开发中】是否在日期旁边显示周几(如周一,周二,周日等) | N
+start | String / Number | - | 选择器的最小可选时间,默认为当前时间-10年 | N
+title | String | - | 标题 | N
+value | String / Number | - | 选中值。TS 类型:`DateValue` `type DateValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+default-value | String / Number | undefined | 选中值。非受控属性。TS 类型:`DateValue` `type DateValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+visible | Boolean | false | 是否显示 | N
+
+### DateTimePicker Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | \- | 取消按钮点击时触发
+change | `(value: DateValue)` | 确认按钮点击时触发
+close | `(trigger: TriggerSource)` | `1.0.1`。关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: DateValue)` | `1.0.1`。确认按钮点击时触发
+pick | `(value: DateValue)` | 选中值发生变化时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.d.ts b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.d.ts
new file mode 100644
index 0000000..7ee1e1d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.d.ts
@@ -0,0 +1,84 @@
+import type { Dayjs } from 'dayjs';
+import { SuperComponent } from '../common/src/index';
+declare enum ModeItem {
+ YEAR = "year",
+ MONTH = "month",
+ DATE = "date",
+ HOUR = "hour",
+ MINUTE = "minute",
+ SECOND = "second"
+}
+interface ColumnItemValue {
+ value: string | number;
+ label: string | number;
+}
+export default class DateTimePicker extends SuperComponent {
+ properties: import("./type").TdDateTimePickerProps;
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ observers: {
+ 'start, end, value': () => void;
+ mode(m: any): void;
+ };
+ date: any;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ columns: any[];
+ columnsValue: any[];
+ fullModes: any[];
+ locale: {
+ year: string;
+ month: string;
+ date: string;
+ hour: string;
+ minute: string;
+ second: string;
+ am: string;
+ pm: string;
+ confirm: string;
+ cancel: string;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ methods: {
+ updateColumns(): void;
+ getParseDate(): Dayjs;
+ getMinDate(): Dayjs;
+ getMaxDate(): Dayjs;
+ getDateRect(type?: string): any[];
+ getDate(): Dayjs;
+ clipDate(date: Dayjs): Dayjs;
+ setYear(date: Dayjs, year: number): Dayjs;
+ setMonth(date: Dayjs, month: number): Dayjs;
+ getColumnOptions(): any[];
+ getOptionByType(type: any): ColumnItemValue[];
+ getYearOptions(dateParams: any): ColumnItemValue[];
+ getOptionEdge(minOrMax: 'min' | 'max', type: any): any;
+ getMonthOptions(): ColumnItemValue[];
+ getDayOptions(): ColumnItemValue[];
+ getHourOptions(): ColumnItemValue[];
+ getMinuteOptions(): ColumnItemValue[];
+ getValueCols(this: DateTimePicker): {
+ columns: any;
+ columnsValue: any;
+ };
+ getColumnsValue(): string[];
+ getNewDate(value: number, type: ModeItem): Dayjs;
+ onColumnChange(e: WechatMiniprogram.CustomEvent): void;
+ onConfirm(): void;
+ onCancel(): void;
+ onVisibleChange(e: any): void;
+ onClose(e: any): void;
+ resetColumns(): void;
+ };
+ getFullModeArray(mode: any): any;
+ getFullModeByModeString(modeString: any, matchModes: any): any;
+ isTimeMode(): boolean;
+}
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.js b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.js
new file mode 100644
index 0000000..24b7a63
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.js
@@ -0,0 +1,348 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import dayjs from 'dayjs';
+import config from '../common/config';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import defaultLocale from './locale/zh';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-date-time-picker`;
+var ModeItem;
+(function (ModeItem) {
+ ModeItem["YEAR"] = "year";
+ ModeItem["MONTH"] = "month";
+ ModeItem["DATE"] = "date";
+ ModeItem["HOUR"] = "hour";
+ ModeItem["MINUTE"] = "minute";
+ ModeItem["SECOND"] = "second";
+})(ModeItem || (ModeItem = {}));
+const DATE_MODES = ['year', 'month', 'date'];
+const TIME_MODES = ['hour', 'minute', 'second'];
+const FULL_MODES = [...DATE_MODES, ...TIME_MODES];
+const DEFAULT_MIN_DATE = dayjs('2000-01-01 00:00:00');
+const DEFAULT_MAX_DATE = dayjs('2030-12-31 23:59:59');
+let DateTimePicker = class DateTimePicker extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-confirm`, `${prefix}-class-cancel`, `${prefix}-class-title`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.observers = {
+ 'start, end, value': function () {
+ this.updateColumns();
+ },
+ mode(m) {
+ const fullModes = this.getFullModeArray(m);
+ this.setData({
+ fullModes,
+ });
+ this.updateColumns();
+ },
+ };
+ this.date = null;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ columns: [],
+ columnsValue: [],
+ fullModes: [],
+ locale: defaultLocale,
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.methods = {
+ updateColumns() {
+ this.date = this.getParseDate();
+ const { columns, columnsValue } = this.getValueCols();
+ this.setData({
+ columns,
+ columnsValue,
+ });
+ },
+ getParseDate() {
+ const { value, defaultValue } = this.properties;
+ const minDate = this.getMinDate();
+ const isTimeMode = this.isTimeMode();
+ let currentValue = value || defaultValue;
+ if (isTimeMode) {
+ const dateStr = dayjs(minDate).format('YYYY-MM-DD');
+ currentValue = dayjs(`${dateStr} ${currentValue}`);
+ }
+ const parseDate = dayjs(currentValue || minDate);
+ const isDateValid = parseDate.isValid();
+ return isDateValid ? parseDate : minDate;
+ },
+ getMinDate() {
+ const { start } = this.properties;
+ return start ? dayjs(start) : DEFAULT_MIN_DATE;
+ },
+ getMaxDate() {
+ const { end } = this.properties;
+ return end ? dayjs(end) : DEFAULT_MAX_DATE;
+ },
+ getDateRect(type = 'default') {
+ const map = {
+ min: 'getMinDate',
+ max: 'getMaxDate',
+ default: 'getDate',
+ };
+ const date = this[map[type]]();
+ const keys = ['year', 'month', 'date', 'hour', 'minute', 'second'];
+ return keys.map((k) => { var _a; return (_a = date[k]) === null || _a === void 0 ? void 0 : _a.call(date); });
+ },
+ getDate() {
+ return this.clipDate((this === null || this === void 0 ? void 0 : this.date) || DEFAULT_MIN_DATE);
+ },
+ clipDate(date) {
+ const minDate = this.getMinDate();
+ const maxDate = this.getMaxDate();
+ return dayjs(Math.min(Math.max(minDate.valueOf(), date.valueOf()), maxDate.valueOf()));
+ },
+ setYear(date, year) {
+ const beforeMonthDays = date.date();
+ const afterMonthDays = date.year(year).daysInMonth();
+ const tempDate = date.date(Math.min(beforeMonthDays.valueOf(), afterMonthDays.valueOf()));
+ return tempDate.year(year);
+ },
+ setMonth(date, month) {
+ const beforeMonthDays = date.date();
+ const afterMonthDays = date.month(month).daysInMonth();
+ const tempDate = date.date(Math.min(beforeMonthDays.valueOf(), afterMonthDays.valueOf()));
+ return tempDate.month(month);
+ },
+ getColumnOptions() {
+ const { fullModes } = this.data;
+ const columnOptions = [];
+ fullModes === null || fullModes === void 0 ? void 0 : fullModes.forEach((mode) => {
+ const columnOption = this.getOptionByType(mode);
+ columnOptions.push(columnOption);
+ });
+ return columnOptions;
+ },
+ getOptionByType(type) {
+ const { locale } = this.data;
+ const options = [];
+ const minEdge = this.getOptionEdge('min', type);
+ const maxEdge = this.getOptionEdge('max', type);
+ for (let i = minEdge; i <= maxEdge; i += 1) {
+ const label = type === 'month' ? i + 1 : i;
+ options.push({
+ value: `${i}`,
+ label: `${label + locale[type]}`,
+ });
+ }
+ return options;
+ },
+ getYearOptions(dateParams) {
+ const { locale } = this.data;
+ const { minDateYear, maxDateYear } = dateParams;
+ const years = [];
+ for (let i = minDateYear; i <= maxDateYear; i += 1) {
+ years.push({
+ value: `${i}`,
+ label: `${i + locale.year}`,
+ });
+ }
+ return years;
+ },
+ getOptionEdge(minOrMax, type) {
+ const selDateArray = this.getDateRect();
+ const compareArray = this.getDateRect(minOrMax);
+ const edge = {
+ month: [0, 11],
+ date: [1, this.getDate().daysInMonth()],
+ hour: [0, 23],
+ minute: [0, 59],
+ second: [0, 59],
+ };
+ const types = ['year', 'month', 'date', 'hour', 'minute', 'second'];
+ for (let i = 0, size = selDateArray.length; i < size; i += 1) {
+ if (types[i] === type)
+ return compareArray[i];
+ if (compareArray[i] !== selDateArray[i])
+ return edge[type][minOrMax === 'min' ? 0 : 1];
+ }
+ return edge[type][minOrMax === 'min' ? 0 : 1];
+ },
+ getMonthOptions() {
+ const { locale } = this.data;
+ const months = [];
+ const minMonth = this.getOptionEdge('min', 'month');
+ const maxMonth = this.getOptionEdge('max', 'month');
+ for (let i = minMonth; i <= maxMonth; i += 1) {
+ months.push({
+ value: `${i}`,
+ label: `${i + 1 + locale.month}`,
+ });
+ }
+ return months;
+ },
+ getDayOptions() {
+ const { locale } = this.data;
+ const days = [];
+ const minDay = this.getOptionEdge('min', 'date');
+ const maxDay = this.getOptionEdge('max', 'date');
+ for (let i = minDay; i <= maxDay; i += 1) {
+ days.push({
+ value: `${i}`,
+ label: `${i + locale.day}`,
+ });
+ }
+ return days;
+ },
+ getHourOptions() {
+ const { locale } = this.data;
+ const hours = [];
+ const minHour = this.getOptionEdge('min', 'hour');
+ const maxHour = this.getOptionEdge('max', 'hour');
+ for (let i = minHour; i <= maxHour; i += 1) {
+ hours.push({
+ value: `${i}`,
+ label: `${i + locale.hour}`,
+ });
+ }
+ return hours;
+ },
+ getMinuteOptions() {
+ const { locale } = this.data;
+ const minutes = [];
+ const minMinute = this.getOptionEdge('min', 'minute');
+ const maxMinute = this.getOptionEdge('max', 'minute');
+ for (let i = minMinute; i <= maxMinute; i += 1) {
+ minutes.push({
+ value: `${i}`,
+ label: `${i + locale.minute}`,
+ });
+ }
+ return minutes;
+ },
+ getValueCols() {
+ return {
+ columns: this.getColumnOptions(),
+ columnsValue: this.getColumnsValue(),
+ };
+ },
+ getColumnsValue() {
+ const { fullModes } = this.data;
+ const date = this.getDate();
+ const columnsValue = [];
+ fullModes === null || fullModes === void 0 ? void 0 : fullModes.forEach((mode) => {
+ columnsValue.push(`${date[mode]()}`);
+ });
+ return columnsValue;
+ },
+ getNewDate(value, type) {
+ let newValue = this.getDate();
+ switch (type) {
+ case ModeItem.YEAR:
+ newValue = this.setYear(newValue, value);
+ break;
+ case ModeItem.MONTH:
+ newValue = this.setMonth(newValue, value);
+ break;
+ case ModeItem.DATE:
+ newValue = newValue.date(value);
+ break;
+ case ModeItem.HOUR:
+ newValue = newValue.hour(value);
+ break;
+ case ModeItem.MINUTE:
+ newValue = newValue.minute(value);
+ break;
+ case ModeItem.SECOND:
+ newValue = newValue.second(value);
+ break;
+ default:
+ break;
+ }
+ return this.clipDate(newValue);
+ },
+ onColumnChange(e) {
+ const { value, column } = e === null || e === void 0 ? void 0 : e.detail;
+ const { fullModes, format } = this.data;
+ const columnValue = value === null || value === void 0 ? void 0 : value[column];
+ const columnType = fullModes === null || fullModes === void 0 ? void 0 : fullModes[column];
+ const newValue = this.getNewDate(parseInt(columnValue, 10), columnType);
+ this.date = newValue;
+ const { columns, columnsValue } = this.getValueCols();
+ this.setData({
+ columns,
+ columnsValue,
+ });
+ const date = this.getDate();
+ const pickValue = format ? date.format(format) : date.valueOf();
+ this.triggerEvent('pick', { value: pickValue });
+ },
+ onConfirm() {
+ const { format } = this.properties;
+ const date = this.getDate();
+ const value = format ? date.format(format) : date.valueOf();
+ this._trigger('change', { value });
+ this.triggerEvent('confirm', { value });
+ this.resetColumns();
+ },
+ onCancel() {
+ this.resetColumns();
+ this.triggerEvent('cancel');
+ },
+ onVisibleChange(e) {
+ if (!e.detail.visible) {
+ this.resetColumns();
+ }
+ },
+ onClose(e) {
+ const { trigger } = e.detail;
+ this.triggerEvent('close', { trigger });
+ },
+ resetColumns() {
+ const parseDate = this.getParseDate();
+ this.date = parseDate;
+ const { columns, columnsValue } = this.getValueCols();
+ this.setData({
+ columns,
+ columnsValue,
+ });
+ },
+ };
+ }
+ getFullModeArray(mode) {
+ if (typeof mode === 'string' || mode instanceof String) {
+ return this.getFullModeByModeString(mode, FULL_MODES);
+ }
+ if (Array.isArray(mode)) {
+ if ((mode === null || mode === void 0 ? void 0 : mode.length) === 1) {
+ return this.getFullModeByModeString(mode[0], FULL_MODES);
+ }
+ if ((mode === null || mode === void 0 ? void 0 : mode.length) === 2) {
+ const dateModes = this.getFullModeByModeString(mode[0], DATE_MODES);
+ const timeModes = this.getFullModeByModeString(mode[1], TIME_MODES);
+ return [...dateModes, ...timeModes];
+ }
+ }
+ }
+ getFullModeByModeString(modeString, matchModes) {
+ if (!modeString) {
+ return [];
+ }
+ const endIndex = matchModes === null || matchModes === void 0 ? void 0 : matchModes.findIndex((mode) => modeString === mode);
+ return matchModes === null || matchModes === void 0 ? void 0 : matchModes.slice(0, endIndex + 1);
+ }
+ isTimeMode() {
+ const { fullModes } = this.data;
+ return fullModes[0] === ModeItem.HOUR;
+ }
+};
+DateTimePicker = __decorate([
+ wxComponent()
+], DateTimePicker);
+export default DateTimePicker;
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.json b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.json
new file mode 100644
index 0000000..460dcd6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-picker": "../picker/picker",
+ "t-picker-item": "../picker-item/picker-item"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.wxml b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.wxml
new file mode 100644
index 0000000..c8a4ad5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.wxml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.wxss b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.wxss
new file mode 100644
index 0000000..6c89e6e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/date-time-picker.wxss
@@ -0,0 +1,31 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-date-time-picker__item--roomly {
+ width: var(--td-data-time-picker-year-width, 128rpx);
+ flex: 0 0 var(--td-data-time-picker-year-width, 128rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/en.d.ts b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/en.d.ts
new file mode 100644
index 0000000..9665c2e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/en.d.ts
@@ -0,0 +1,13 @@
+declare const _default: {
+ year: string;
+ month: string;
+ date: string;
+ hour: string;
+ minute: string;
+ second: string;
+ am: string;
+ pm: string;
+ confirm: string;
+ cancel: string;
+};
+export default _default;
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/en.js b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/en.js
new file mode 100644
index 0000000..fc53887
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/en.js
@@ -0,0 +1,12 @@
+export default {
+ year: '',
+ month: '',
+ date: '',
+ hour: '',
+ minute: '',
+ second: '',
+ am: 'AM',
+ pm: 'PM',
+ confirm: 'confirm',
+ cancel: 'cancel',
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/zh.d.ts b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/zh.d.ts
new file mode 100644
index 0000000..9665c2e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/zh.d.ts
@@ -0,0 +1,13 @@
+declare const _default: {
+ year: string;
+ month: string;
+ date: string;
+ hour: string;
+ minute: string;
+ second: string;
+ am: string;
+ pm: string;
+ confirm: string;
+ cancel: string;
+};
+export default _default;
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/zh.js b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/zh.js
new file mode 100644
index 0000000..8c808d2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/locale/zh.js
@@ -0,0 +1,12 @@
+export default {
+ year: '年',
+ month: '月',
+ date: '日',
+ hour: '时',
+ minute: '分',
+ second: '秒',
+ am: '上午',
+ pm: '下午',
+ confirm: '确定',
+ cancel: '取消',
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/props.d.ts b/miniprogram_npm/tdesign-miniprogram/date-time-picker/props.d.ts
new file mode 100644
index 0000000..8837a6a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDateTimePickerProps } from './type';
+declare const props: TdDateTimePickerProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/props.js b/miniprogram_npm/tdesign-miniprogram/date-time-picker/props.js
new file mode 100644
index 0000000..d911d56
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/props.js
@@ -0,0 +1,51 @@
+const props = {
+ cancelBtn: {
+ type: String,
+ value: '',
+ },
+ confirmBtn: {
+ type: String,
+ value: '',
+ },
+ end: {
+ type: null,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ format: {
+ type: String,
+ value: '',
+ },
+ header: {
+ type: Boolean,
+ value: true,
+ },
+ mode: {
+ type: null,
+ value: 'date',
+ },
+ showWeek: {
+ type: Boolean,
+ value: false,
+ },
+ start: {
+ type: null,
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/type.d.ts b/miniprogram_npm/tdesign-miniprogram/date-time-picker/type.d.ts
new file mode 100644
index 0000000..ac95634
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/type.d.ts
@@ -0,0 +1,57 @@
+export interface TdDateTimePickerProps {
+ cancelBtn?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ confirmBtn?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ end?: {
+ type: null;
+ value?: string | number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-confirm', 't-class-cancel', 't-class-title'];
+ };
+ format?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ header?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ mode?: {
+ type: null;
+ value?: DateTimePickerMode;
+ };
+ showWeek?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ start?: {
+ type: null;
+ value?: string | number;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: DateValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: DateValue;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export declare type DateTimePickerMode = TimeModeValues | Array;
+export declare type TimeModeValues = 'year' | 'month' | 'date' | 'hour' | 'minute' | 'second';
+export declare type DateValue = string | number;
diff --git a/miniprogram_npm/tdesign-miniprogram/date-time-picker/type.js b/miniprogram_npm/tdesign-miniprogram/date-time-picker/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/date-time-picker/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/dialog/README.en-US.md
new file mode 100644
index 0000000..2afa1bf
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/README.en-US.md
@@ -0,0 +1,30 @@
+:: BASE_DOC ::
+
+## API
+### Dialog Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+actions | Array / Slot | - | Typescript:`Array`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+button-layout | String | horizontal | options:horizontal/vertical | N
+cancel-btn | String / Object / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+close-btn | Boolean / Object | false | `0.31.0` | N
+close-on-overlay-click | Boolean | undefined | \- | N
+confirm-btn | String / Object / Slot | - | \- | N
+content | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-confirm', 't-class-cancel']` | N
+overlay-props | Object | {} | \- | N
+prevent-scroll-through | Boolean | true | \- | N
+show-overlay | Boolean | true | \- | N
+title | String / Slot | - | \- | N
+visible | Boolean | - | \- | N
+z-index | Number | 11500 | \- | N
+
+### Dialog Events
+
+name | params | description
+-- | -- | --
+cancel | - | \-
+close | `(trigger: DialogEventSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts)。
`type DialogEventSource = 'cancel' \| 'overlay' \| 'close-btn'`
+confirm | - | \-
+overlay-click | - | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/README.md b/miniprogram_npm/tdesign-miniprogram/dialog/README.md
new file mode 100644
index 0000000..f0192d4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/README.md
@@ -0,0 +1,84 @@
+---
+title: Dialog 对话框
+description: 用于显示重要提示或请求用户进行重要操作,一种打断当前操作的模态视图。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-dialog": "tdesign-miniprogram/dialog/dialog"
+}
+```
+
+## 代码演示
+
+按钮的样式,默认使用 `variant = text`,如果任意按钮改变了 `variant`,那么全部按钮都改变成这个。
+
+### 组件类型
+#### 反馈类对话框
+
+{{ base }}
+
+> 使用这种方式,对话框的 `visible` 是受控的,需要手动设置额 `visible` 为 `false` 才会关闭对话框。
+
+#### 确认类对话框
+
+{{ confirm }}
+
+#### 输入类对话框
+
+{{ with-input }}
+
+#### 带图片对话框
+
+{{ with-image }}
+
+### 组件状态
+
+{{ status }}
+
+### 组件用法
+#### 命令调用
+
+{{ command }}
+
+#### 开发能力按钮
+
+当传入的按钮类型为对象时,整个对象都将透传至 `t-button`,因此按钮可以直接使用开放能力
+
+{{ button }}
+
+## API
+### Dialog Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+actions | Array / Slot | - | 操作栏。TS 类型:`Array`,[Button API Documents](./button?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+button-layout | String | horizontal | 多按钮排列方式。可选项:horizontal/vertical | N
+cancel-btn | String / Object / Slot | - | 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 Slot 自定义按钮时,需自行控制取消事件。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+close-btn | Boolean / Object | false | `0.31.0`。是否展示关闭按钮,值为 `true` 显示默认关闭按钮;值为 `false` 则不显示关闭按钮;使用 Object 时透传至图标组件 | N
+close-on-overlay-click | Boolean | undefined | 点击蒙层时是否触发关闭事件 | N
+confirm-btn | String / Object / Slot | - | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 Slot 自定义按钮时,需自行控制确认事件 | N
+content | String / Slot | - | 内容 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、组件内容部分、确认按钮、取消按钮 等元素类名。`['t-class', 't-class-content', 't-class-confirm', 't-class-cancel']` | N
+overlay-props | Object | {} | 透传至 Overlay 组件 | N
+prevent-scroll-through | Boolean | true | 防止滚动穿透 | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+title | String / Slot | - | 标题 | N
+visible | Boolean | - | 控制对话框是否显示 | N
+z-index | Number | 11500 | 对话框层级,Web 侧样式默认为 2500,移动端样式默认 2500,小程序样式默认为 11500 | N
+
+### Dialog Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | - | 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件
+close | `(trigger: DialogEventSource)` | 关闭事件,点击 取消按钮 或 点击蒙层 时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts)。
`type DialogEventSource = 'cancel' \| 'overlay' \| 'close-btn'`
+confirm | - | 如果“确认”按钮存在,则点击“确认”按钮时触发
+overlay-click | - | 如果蒙层存在,点击蒙层时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/dialog.d.ts b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.d.ts
new file mode 100644
index 0000000..b2771b4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent } from '../common/src/index';
+export default class Dialog extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ addGlobalClass: boolean;
+ };
+ externalClasses: string[];
+ properties: import("./type").TdDialogProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ buttonVariant: string;
+ };
+ observers: {
+ 'confirmBtn, cancelBtn'(confirm: any, cancel: any): void;
+ };
+ methods: {
+ onTplButtonTap(e: any): void;
+ onConfirm(): void;
+ onCancel(): void;
+ onClose(): void;
+ close(): void;
+ overlayClick(): void;
+ onActionTap(index: number): void;
+ openValueCBHandle(e: any): void;
+ openValueErrCBHandle(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/dialog.js b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.js
new file mode 100644
index 0000000..367ceb5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.js
@@ -0,0 +1,143 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { isObject, toCamel } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-dialog`;
+let Dialog = class Dialog extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ addGlobalClass: true,
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-confirm`,
+ `${prefix}-class-cancel`,
+ `${prefix}-class-action`,
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ buttonVariant: 'text',
+ };
+ this.observers = {
+ 'confirmBtn, cancelBtn'(confirm, cancel) {
+ const { prefix, classPrefix, buttonLayout } = this.data;
+ const rect = { buttonVariant: 'text' };
+ const useBaseVariant = [confirm, cancel].some((item) => isObject(item) && item.variant && item.variant !== 'text');
+ const buttonMap = { confirm, cancel };
+ const cls = [`${classPrefix}__button`];
+ const externalCls = [];
+ if (useBaseVariant) {
+ rect.buttonVariant = 'base';
+ cls.push(`${classPrefix}__button--${buttonLayout}`);
+ }
+ else {
+ cls.push(`${classPrefix}__button--text`);
+ externalCls.push(`${classPrefix}-button`);
+ }
+ Object.keys(buttonMap).forEach((key) => {
+ const btn = buttonMap[key];
+ const base = {
+ block: true,
+ class: [...cls, `${classPrefix}__button--${key}`],
+ externalClass: [...externalCls, `${prefix}-class-${key}`],
+ variant: rect.buttonVariant,
+ };
+ if (key === 'cancel' && rect.buttonVariant === 'base') {
+ base.theme = 'light';
+ }
+ if (typeof btn === 'string') {
+ rect[`_${key}`] = Object.assign(Object.assign({}, base), { content: btn });
+ }
+ else if (btn && typeof btn === 'object') {
+ rect[`_${key}`] = Object.assign(Object.assign({}, base), btn);
+ }
+ });
+ this.setData(Object.assign({}, rect));
+ },
+ };
+ this.methods = {
+ onTplButtonTap(e) {
+ var _a, _b;
+ const evtType = e.type;
+ const { type, extra } = e.target.dataset;
+ const button = this.data[`_${type}`];
+ const cbName = `bind${evtType}`;
+ if (type === 'action') {
+ this.onActionTap(extra);
+ return;
+ }
+ if (typeof button[cbName] === 'function') {
+ const closeFlag = button[cbName](e);
+ if (closeFlag) {
+ this.close();
+ }
+ }
+ const hasOpenType = 'openType' in button;
+ if (!hasOpenType && ['confirm', 'cancel'].includes(type)) {
+ (_a = this[toCamel(`on-${type}`)]) === null || _a === void 0 ? void 0 : _a.call(this, type);
+ }
+ if (evtType !== 'tap') {
+ const success = ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.errMsg.indexOf('ok')) > -1;
+ this.triggerEvent(success ? 'open-type-event' : 'open-type-error-event', e.detail);
+ }
+ },
+ onConfirm() {
+ this.triggerEvent('confirm');
+ if (this._onConfirm) {
+ this._onConfirm();
+ this.close();
+ }
+ },
+ onCancel() {
+ this.triggerEvent('close', { trigger: 'cancel' });
+ this.triggerEvent('cancel');
+ if (this._onCancel) {
+ this._onCancel();
+ this.close();
+ }
+ },
+ onClose() {
+ this.triggerEvent('close', { trigger: 'close-btn' });
+ this.close();
+ },
+ close() {
+ this.setData({ visible: false });
+ },
+ overlayClick() {
+ if (this.properties.closeOnOverlayClick) {
+ this.triggerEvent('close', { trigger: 'overlay' });
+ }
+ this.triggerEvent('overlay-click');
+ },
+ onActionTap(index) {
+ this.triggerEvent('action', { index });
+ if (this._onAction) {
+ this._onAction({ index });
+ this.close();
+ }
+ },
+ openValueCBHandle(e) {
+ this.triggerEvent('open-type-event', e.detail);
+ },
+ openValueErrCBHandle(e) {
+ this.triggerEvent('open-type-error-event', e.detail);
+ },
+ };
+ }
+};
+Dialog = __decorate([
+ wxComponent()
+], Dialog);
+export default Dialog;
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/dialog.json b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.json
new file mode 100644
index 0000000..5cfe889
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup",
+ "t-icon": "../icon/icon",
+ "t-button": "../button/button"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxml b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxml
new file mode 100644
index 0000000..5609dde
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxs b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxs
new file mode 100644
index 0000000..8f70e47
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxs
@@ -0,0 +1,13 @@
+module.exports.getTypeof = function (obj) {
+ return typeof obj;
+};
+
+module.exports.getActionClass = function (prefix, buttonLayout) {
+ var cls = [prefix + '__button', prefix + '__button--action'];
+
+ if (buttonLayout) {
+ cls.push(prefix + '__button--' + buttonLayout);
+ }
+
+ return cls.join(' ');
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxss b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxss
new file mode 100644
index 0000000..b38380d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/dialog.wxss
@@ -0,0 +1,121 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-dialog {
+ overflow: hidden;
+ width: var(--td-dialog-width, 622rpx);
+ border-radius: var(--td-radius-default, 12rpx);
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+}
+.t-dialog__close-btn {
+ position: absolute;
+ top: 16rpx;
+ right: 16rpx;
+ color: var(--td-dialog-close-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-dialog__content {
+ padding: var(--td-spacer-4, 64rpx) var(--td-spacer-3, 48rpx) 0;
+ max-height: var(--td-dialog-body-max-height, 912rpx);
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-dialog__header {
+ text-align: center;
+ font-weight: bold;
+ font-size: var(--td-dialog-title-font-size, 36rpx);
+ line-height: var(--td-dialog-title-line-height, 52rpx);
+ color: var(--td-dialog-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-dialog__header + .t-dialog__body {
+ margin-top: 16rpx;
+}
+.t-dialog__body {
+ overflow-y: scroll;
+ text-align: center;
+ -webkit-overflow-scrolling: touch;
+ font-size: var(--td-dialog-content-font-size, 32rpx);
+ color: var(--td-dialog-content-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ line-height: var(--td-dialog-content-line-height, 48rpx);
+}
+.t-dialog__body-text {
+ word-wrap: break-word;
+}
+.t-dialog__body--left {
+ text-align: left;
+}
+.t-dialog__body--right {
+ text-align: right;
+}
+.t-dialog__footer {
+ display: flex;
+ padding: 48rpx;
+}
+.t-dialog__footer--column {
+ flex-flow: column-reverse;
+}
+.t-dialog__footer--column .t-dialog__button {
+ width: 100%;
+}
+.t-dialog__footer--full {
+ padding: 64rpx 0 0;
+}
+.t-dialog__button {
+ position: relative;
+ flex: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.t-dialog__button--horizontal + .t-dialog__button--horizontal {
+ margin-left: 24rpx;
+}
+.t-dialog__button--vertical + .t-dialog__button--vertical {
+ margin-bottom: 24rpx;
+}
+.t-dialog__button--text {
+ flex: 1;
+ --td-button-border-radius: 0;
+ --td-button-medium-height: 112rpx;
+ border-radius: 0;
+}
+.t-dialog__button--text:before {
+ content: ' ';
+ position: absolute;
+ box-sizing: border-box;
+ top: 0;
+ left: 0;
+ border-top: 1px solid var(--td-border-color, var(--td-gray-color-3, #e7e7e7));
+ border-left: 1px solid var(--td-border-color, var(--td-gray-color-3, #e7e7e7));
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ width: 200%;
+ height: 200%;
+ border-radius: 0;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/index.d.ts b/miniprogram_npm/tdesign-miniprogram/dialog/index.d.ts
new file mode 100644
index 0000000..f0bacf1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/index.d.ts
@@ -0,0 +1,41 @@
+///
+///
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+interface DialogAlertOptionsType {
+ context?: Context;
+ selector?: string;
+ title?: string;
+ content: string;
+ zIndex?: number;
+ asyncClose?: boolean;
+ confirmButtonText?: string;
+ textAlign?: string;
+ cancelBtn?: string | object;
+ confirmBtn?: string | object;
+}
+interface DialogConfirmOptionsType extends DialogAlertOptionsType {
+ cancelButtonText?: string;
+}
+interface Action {
+ content: string;
+ theme?: 'default' | 'primary' | 'danger' | 'light';
+}
+interface DialogActionOptionsType {
+ context?: Context;
+ selector?: string;
+ title?: string;
+ content: string;
+ zIndex?: number;
+ asyncClose?: boolean;
+ actions?: Action[];
+ buttonLayout?: 'vertical' | 'horizontal';
+}
+declare const _default: {
+ alert(options: DialogAlertOptionsType): Promise;
+ confirm(options: DialogConfirmOptionsType): Promise;
+ close(options: DialogConfirmOptionsType): Promise;
+ action(options: DialogActionOptionsType): Promise<{
+ index: number;
+ }>;
+};
+export default _default;
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/index.js b/miniprogram_npm/tdesign-miniprogram/dialog/index.js
new file mode 100644
index 0000000..36ccf63
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/index.js
@@ -0,0 +1,72 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import props from './props';
+import { getInstance } from '../common/utils';
+const defaultOptions = {
+ actions: false,
+ buttonLayout: props.buttonLayout.value,
+ cancelBtn: props.cancelBtn.value,
+ closeOnOverlayClick: props.closeOnOverlayClick.value,
+ confirmBtn: props.confirmBtn.value,
+ content: '',
+ preventScrollThrough: props.preventScrollThrough.value,
+ showOverlay: props.showOverlay.value,
+ title: '',
+ visible: props.visible.value,
+};
+export default {
+ alert(options) {
+ const _a = Object.assign(Object.assign({}, defaultOptions), options), { context, selector = '#t-dialog' } = _a, otherOptions = __rest(_a, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (!instance)
+ return Promise.reject();
+ return new Promise((resolve) => {
+ instance.setData(Object.assign(Object.assign({ cancelBtn: '' }, otherOptions), { visible: true }));
+ instance._onConfirm = resolve;
+ });
+ },
+ confirm(options) {
+ const _a = Object.assign(Object.assign({}, defaultOptions), options), { context, selector = '#t-dialog' } = _a, otherOptions = __rest(_a, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (!instance)
+ return Promise.reject();
+ return new Promise((resolve, reject) => {
+ instance.setData(Object.assign(Object.assign({}, otherOptions), { visible: true }));
+ instance._onConfirm = resolve;
+ instance._onCancel = reject;
+ });
+ },
+ close(options) {
+ const { context, selector = '#t-dialog' } = Object.assign({}, options);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.close();
+ return Promise.resolve();
+ }
+ return Promise.reject();
+ },
+ action(options) {
+ const _a = Object.assign(Object.assign({}, defaultOptions), options), { context, selector = '#t-dialog', actions } = _a, otherOptions = __rest(_a, ["context", "selector", "actions"]);
+ const instance = getInstance(context, selector);
+ if (!instance)
+ return Promise.reject();
+ const { buttonLayout = 'vertical' } = options;
+ const maxLengthSuggestion = buttonLayout === 'vertical' ? 7 : 3;
+ if (!actions || (typeof actions === 'object' && (actions.length === 0 || actions.length > maxLengthSuggestion))) {
+ console.warn(`action 数量建议控制在1至${maxLengthSuggestion}个`);
+ }
+ return new Promise((resolve) => {
+ instance.setData(Object.assign(Object.assign({ actions }, otherOptions), { buttonLayout, visible: true }));
+ instance._onAction = resolve;
+ });
+ },
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/props.d.ts b/miniprogram_npm/tdesign-miniprogram/dialog/props.d.ts
new file mode 100644
index 0000000..15d9d87
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDialogProps } from './type';
+declare const props: TdDialogProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/props.js b/miniprogram_npm/tdesign-miniprogram/dialog/props.js
new file mode 100644
index 0000000..656bbad
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/props.js
@@ -0,0 +1,52 @@
+const props = {
+ actions: {
+ type: Array,
+ },
+ buttonLayout: {
+ type: String,
+ value: 'horizontal',
+ },
+ cancelBtn: {
+ type: null,
+ },
+ closeBtn: {
+ type: null,
+ value: false,
+ },
+ closeOnOverlayClick: {
+ type: Boolean,
+ value: undefined,
+ },
+ confirmBtn: {
+ type: null,
+ },
+ content: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ overlayProps: {
+ type: Object,
+ value: {},
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: true,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ title: {
+ type: String,
+ },
+ visible: {
+ type: Boolean,
+ },
+ zIndex: {
+ type: Number,
+ value: 11500,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/type.d.ts b/miniprogram_npm/tdesign-miniprogram/dialog/type.d.ts
new file mode 100644
index 0000000..cb8107f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/type.d.ts
@@ -0,0 +1,63 @@
+import { ButtonProps } from '../button/index';
+export interface TdDialogProps {
+ actions?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ buttonLayout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ cancelBtn?: {
+ type: null;
+ value?: string | ButtonProps | null;
+ };
+ closeBtn?: {
+ type: null;
+ value?: boolean | object;
+ };
+ closeOnOverlayClick?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmBtn?: {
+ type: null;
+ value?: string | ButtonProps | null;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-confirm', 't-class-cancel'];
+ };
+ overlayProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ preventScrollThrough?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dialog/type.js b/miniprogram_npm/tdesign-miniprogram/dialog/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dialog/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/divider/README.en-US.md
new file mode 100644
index 0000000..51ac50e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/README.en-US.md
@@ -0,0 +1,12 @@
+:: BASE_DOC ::
+
+## API
+### Divider Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | center | options:left/right/center | N
+content | String / Slot | - | \- | N
+dashed | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-line', 't-class-content']` | N
+layout | String | horizontal | options:horizontal/vertical | N
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/README.md b/miniprogram_npm/tdesign-miniprogram/divider/README.md
new file mode 100644
index 0000000..a67dece
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/README.md
@@ -0,0 +1,40 @@
+---
+title: Divider 分割线
+description: 用于分割、组织、细化有一定逻辑的组织元素内容和页面结构。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-divider": "tdesign-miniprogram/divider/divider"
+}
+```
+
+## 代码演示
+
+### 基础分割符
+
+分割符主要是由直线和文字组成,通过`slot`传入分割线文案或者其他自定义内容,通过`layout`控制分隔符是垂直还是横向
+
+{{ base }}
+
+### 虚线样式
+
+{{ theme }}
+
+## API
+### Divider Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | center | 文本位置(仅在水平分割线有效)。可选项:left/right/center | N
+content | String / Slot | - | 子元素 | N
+dashed | Boolean | false | 是否虚线(仅在水平分割线有效) | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、分隔线类名 等。`['t-class', 't-class-line', 't-class-content']` | N
+layout | String | horizontal | 分隔线类型有两种:水平和垂直。可选项:horizontal/vertical | N
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/divider.d.ts b/miniprogram_npm/tdesign-miniprogram/divider/divider.d.ts
new file mode 100644
index 0000000..d7b8209
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/divider.d.ts
@@ -0,0 +1,19 @@
+import { SuperComponent } from '../common/src/index';
+export default class Divider extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ addGlobalClass: boolean;
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdDividerProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ lineColor(): void;
+ };
+ methods: {
+ setStyle(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/divider.js b/miniprogram_npm/tdesign-miniprogram/divider/divider.js
new file mode 100644
index 0000000..bedaafb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/divider.js
@@ -0,0 +1,44 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-divider`;
+let Divider = class Divider extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`];
+ this.options = {
+ addGlobalClass: true,
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ lineColor() {
+ this.setStyle();
+ },
+ };
+ this.methods = {
+ setStyle() {
+ const { lineColor } = this.properties;
+ const dividerStyle = `${lineColor ? `border-color: ${lineColor};` : ''}`;
+ this.setData({
+ dividerStyle,
+ });
+ },
+ };
+ }
+};
+Divider = __decorate([
+ wxComponent()
+], Divider);
+export default Divider;
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/divider.json b/miniprogram_npm/tdesign-miniprogram/divider/divider.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/divider.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/divider.wxml b/miniprogram_npm/tdesign-miniprogram/divider/divider.wxml
new file mode 100644
index 0000000..5f1fa88
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/divider.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ {{content}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/divider.wxss b/miniprogram_npm/tdesign-miniprogram/divider/divider.wxss
new file mode 100644
index 0000000..abfddca
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/divider.wxss
@@ -0,0 +1,83 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-divider {
+ display: flex;
+ color: var(--td-divider-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-divider-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-style: solid;
+ border-width: 0;
+}
+.t-divider::before,
+.t-divider::after {
+ content: '';
+ display: block;
+ flex: 1;
+ box-sizing: border-box;
+ border: inherit;
+ border-color: inherit;
+ border-style: inherit;
+}
+.t-divider--horizontal {
+ align-items: center;
+ margin-top: 20rpx;
+ margin-bottom: 20rpx;
+}
+.t-divider--horizontal::before,
+.t-divider--horizontal::after {
+ border-top-width: 1px;
+ transform: scaleY(0.5);
+}
+.t-divider--horizontal .t-divider__content:not(:empty) {
+ margin: 0 24rpx;
+}
+.t-divider--vertical {
+ flex-direction: column;
+ height: 1em;
+ margin: 0 16rpx;
+}
+.t-divider--vertical::before,
+.t-divider--vertical::after {
+ border-left-width: 1px;
+ transform: scaleX(0.5);
+}
+.t-divider--vertical-center {
+ align-items: center;
+ height: 100%;
+}
+.t-divider--dashed {
+ border-style: dashed;
+}
+.t-divider__content {
+ font-size: var(--td-divider-content-font-size, 24rpx);
+ line-height: var(--td-divider-content-line-height, 40rpx);
+ color: var(--td-divider-content-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-divider--left::before,
+.t-divider--right::after {
+ max-width: 60rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/props.d.ts b/miniprogram_npm/tdesign-miniprogram/divider/props.d.ts
new file mode 100644
index 0000000..806aab2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDividerProps } from './type';
+declare const props: TdDividerProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/props.js b/miniprogram_npm/tdesign-miniprogram/divider/props.js
new file mode 100644
index 0000000..e8d8a73
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/props.js
@@ -0,0 +1,25 @@
+const props = {
+ align: {
+ type: String,
+ value: 'center',
+ },
+ content: {
+ type: String,
+ },
+ style: {
+ type: String,
+ value: '',
+ },
+ dashed: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/type.d.ts b/miniprogram_npm/tdesign-miniprogram/divider/type.d.ts
new file mode 100644
index 0000000..faed054
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdDividerProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'left' | 'right' | 'center';
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ dashed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-line', 't-class-content'];
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/divider/type.js b/miniprogram_npm/tdesign-miniprogram/divider/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/divider/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/drawer/README.en-US.md
new file mode 100644
index 0000000..555fff0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### Drawer Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-on-overlay-click | Boolean | undefined | \- | N
+destroy-on-close | Boolean | false | \- | N
+footer | Slot | - | `0.29.0` | N
+items | Array | - | Typescript:`DrawerItem[] ` `interface DrawerItem { title: string; icon: string; }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts) | N
+placement | String | right | options:left/right | N
+show-overlay | Boolean | true | \- | N
+title | String / Slot | - | `0.29.0` | N
+visible | Boolean | false | \- | N
+z-index | Number | 11500 | \- | N
+
+### Drawer Events
+
+name | params | description
+-- | -- | --
+close | `(trigger: TriggerSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts)。
`type TriggerSource = 'overlay'`
+item-click | `(index: number; item: DrawerItem)` | \-
+overlay-click | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/README.md b/miniprogram_npm/tdesign-miniprogram/drawer/README.md
new file mode 100644
index 0000000..2c04c10
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/README.md
@@ -0,0 +1,60 @@
+---
+title: Drawer 抽屉
+description: 用作一组平行关系页面/内容的切换器,相较于Tab,同屏可展示更多的选项数量。。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.2 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-drawer": "tdesign-miniprogram/drawer/drawer"
+}
+```
+
+## 代码演示
+
+### 基础抽屉
+{{ base }}
+
+### 带图标的抽屉
+{{ icon-drawer }}
+
+>Drawer的 `visible` 是受控的,需要手动设置 `visible` 为 `true` 才会开启抽屉
+
+
+
+## API
+### Drawer Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-on-overlay-click | Boolean | true | 点击蒙层时是否触发抽屉关闭事件 | N
+destroy-on-close | Boolean | false | 抽屉关闭时是否销毁节点 | N
+footer | Slot | - | `0.29.0`。抽屉的底部 | N
+items | Array | - | 抽屉里的列表项。TS 类型:`DrawerItem[] ` `interface DrawerItem { title: string; icon: string; }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts) | N
+placement | String | right | 抽屉方向。可选项:left/right | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+title | String / Slot | - | `0.29.0`。抽屉的标题 | N
+visible | Boolean | false | 组件是否可见 | N
+z-index | Number | 11500 | 抽屉层级,样式默认为 11500 | N
+
+### Drawer Events
+
+名称 | 参数 | 描述
+-- | -- | --
+close | `(trigger: TriggerSource)` | 关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts)。
`type TriggerSource = 'overlay'`
+item-click | `(index: number; item: DrawerItem)` | 点击抽屉里的列表项
+overlay-click | \- | 如果蒙层存在,点击蒙层时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/drawer.d.ts b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.d.ts
new file mode 100644
index 0000000..fd81c85
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.d.ts
@@ -0,0 +1,15 @@
+import { ComponentsOptionsType, SuperComponent } from '../common/src/index';
+export default class Drawer extends SuperComponent {
+ externalClasses: any[];
+ options: ComponentsOptionsType;
+ properties: import("./type").TdDrawerProps;
+ data: {
+ classPrefix: string;
+ };
+ methods: {
+ visibleChange({ detail }: {
+ detail: any;
+ }): void;
+ itemClick(detail: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/drawer.js b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.js
new file mode 100644
index 0000000..98b0f93
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.js
@@ -0,0 +1,49 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-drawer`;
+let Drawer = class Drawer extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ classPrefix: name,
+ };
+ this.methods = {
+ visibleChange({ detail }) {
+ const { visible } = detail;
+ const { showOverlay } = this.data;
+ this.setData({
+ visible,
+ });
+ if (!visible) {
+ this.triggerEvent('close', { trigger: 'overlay' });
+ }
+ if (showOverlay) {
+ this.triggerEvent('overlay-click', { visible: visible });
+ }
+ },
+ itemClick(detail) {
+ const { index, item } = detail.currentTarget.dataset;
+ this.triggerEvent('item-click', {
+ sibarItem: { index: index, item: item },
+ });
+ },
+ };
+ }
+};
+Drawer = __decorate([
+ wxComponent()
+], Drawer);
+export default Drawer;
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/drawer.json b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.json
new file mode 100644
index 0000000..95a2238
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/drawer.wxml b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.wxml
new file mode 100644
index 0000000..3d67c0f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.wxml
@@ -0,0 +1,44 @@
+
+
+
+
+
+ {{title}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/drawer.wxss b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.wxss
new file mode 100644
index 0000000..a57bf9c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/drawer.wxss
@@ -0,0 +1,86 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-drawer {
+ background: var(--td-drawer-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ height: 100vh;
+ width: var(--td-drawer-width, 560rpx);
+ display: flex;
+ flex-direction: column;
+}
+.t-drawer--hover {
+ background-color: var(--td-drawer-hover-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-drawer__title {
+ font-weight: 600;
+ font-size: var(--td-drawer-title-font-size, 36rpx);
+ padding: 48rpx 32rpx 16rpx;
+}
+.t-drawer__sidebar {
+ height: var(--td-drawer-sidebar-height, 70vh);
+}
+.t-drawer__sidebar-item {
+ display: flex;
+ align-items: center;
+ position: relative;
+ padding: var(--td-drawer-item-padding, 32rpx) 0 var(--td-drawer-item-padding, 32rpx) var(--td-drawer-item-padding, 32rpx);
+ line-height: var(--td-drawer-item-height, 48rpx);
+}
+.t-drawer__sidebar-item::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-drawer-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-drawer__sidebar-item::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-drawer__sidebar-item::after {
+ left: var(--td-drawer-item-padding, 32rpx);
+}
+.t-drawer__sidebar-item-title {
+ flex: 1;
+ color: var(--td-drawer-title-color);
+}
+.t-drawer__sidebar-item-icon {
+ padding-right: 16rpx;
+ color: var(--td-drawer-title-color, var(--td-drawer-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9))));
+ font-size: var(--td-drawer-item-icon-size, 48rpx);
+}
+.t-drawer__footer {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ padding-bottom: var(--td-drawer-footer-padding-bottom, 40rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/props.d.ts b/miniprogram_npm/tdesign-miniprogram/drawer/props.d.ts
new file mode 100644
index 0000000..dbb379d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDrawerProps } from './type';
+declare const props: TdDrawerProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/props.js b/miniprogram_npm/tdesign-miniprogram/drawer/props.js
new file mode 100644
index 0000000..5101669
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/props.js
@@ -0,0 +1,33 @@
+const props = {
+ closeOnOverlayClick: {
+ type: Boolean,
+ value: true,
+ },
+ destroyOnClose: {
+ type: Boolean,
+ value: false,
+ },
+ items: {
+ type: Array,
+ },
+ placement: {
+ type: String,
+ value: 'right',
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ title: {
+ type: String,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+ zIndex: {
+ type: Number,
+ value: 11500,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/type.d.ts b/miniprogram_npm/tdesign-miniprogram/drawer/type.d.ts
new file mode 100644
index 0000000..d60c26b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdDrawerProps {
+ closeOnOverlayClick?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ destroyOnClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ items?: {
+ type: ArrayConstructor;
+ value?: DrawerItem[];
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
+export interface DrawerItem {
+ title: string;
+ icon: string;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/drawer/type.js b/miniprogram_npm/tdesign-miniprogram/drawer/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/drawer/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.d.ts
new file mode 100644
index 0000000..ed173be
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.d.ts
@@ -0,0 +1,89 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+import type { TdDropdownItemProps } from './type';
+export interface DropdownItemProps extends TdDropdownItemProps {
+}
+export default class DropdownMenuItem extends SuperComponent {
+ externalClasses: string[];
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-content", "t-class-column", "t-class-column-item", "t-class-column-item-label", "t-class-footer"];
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: import("../common/common").KeysType;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ multiple?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: import("./type").DropdownOption[];
+ };
+ optionsColumns?: {
+ type: null;
+ value?: string | number;
+ };
+ optionsLayout?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: import("./type").DropdownValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: import("./type").DropdownValue;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ show: boolean;
+ top: number;
+ maskHeight: number;
+ initValue: any;
+ hasChanged: boolean;
+ duration: string | number;
+ zIndex: number;
+ overlay: boolean;
+ labelAlias: string;
+ valueAlias: string;
+ computedLabel: string;
+ };
+ relations: RelationsOptions;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ keys(obj: any): void;
+ value(v: any): void;
+ 'label, computedLabel'(): void;
+ show(visible: any): void;
+ };
+ methods: {
+ closeDropdown(): void;
+ getParentBottom(cb: any): void;
+ handleTreeClick(e: any): void;
+ handleRadioChange(e: any): void;
+ handleMaskClick(): void;
+ handleReset(): void;
+ handleConfirm(): void;
+ onLeaved(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.js b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.js
new file mode 100644
index 0000000..a239be4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.js
@@ -0,0 +1,146 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import menuProps from '../dropdown-menu/props';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-dropdown-item`;
+let DropdownMenuItem = class DropdownMenuItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-column`,
+ `${prefix}-class-column-item`,
+ `${prefix}-class-column-item-label`,
+ `${prefix}-class-footer`,
+ ];
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ show: false,
+ top: 0,
+ maskHeight: 0,
+ initValue: null,
+ hasChanged: false,
+ duration: menuProps.duration.value,
+ zIndex: menuProps.zIndex.value,
+ overlay: menuProps.showOverlay.value,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ computedLabel: '',
+ };
+ this.relations = {
+ '../dropdown-menu/dropdown-menu': {
+ type: 'parent',
+ linked(target) {
+ const { zIndex, duration, showOverlay } = target.properties;
+ this.setData({
+ zIndex,
+ duration,
+ showOverlay,
+ });
+ },
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ keys(obj) {
+ this.setData({
+ labelAlias: obj.label || 'label',
+ valueAlias: obj.value || 'value',
+ });
+ },
+ value(v) {
+ const { options, labelAlias, valueAlias } = this.data;
+ if (this.data.multiple) {
+ if (!Array.isArray(v))
+ throw TypeError('应传入数组类型的 value');
+ }
+ const target = options.find((item) => item[valueAlias] === v);
+ if (target) {
+ this.setData({
+ computedLabel: target[labelAlias],
+ });
+ }
+ },
+ 'label, computedLabel'() {
+ var _a;
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.getAllItems();
+ },
+ show(visible) {
+ if (visible) {
+ this.getParentBottom(() => {
+ this.setData({ wrapperVisible: true });
+ });
+ }
+ },
+ };
+ this.methods = {
+ closeDropdown() {
+ var _a;
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.setData({
+ activeIdx: -1,
+ });
+ this.setData({
+ show: false,
+ });
+ },
+ getParentBottom(cb) {
+ getRect(this.$parent, `#${prefix}-bar`).then((rect) => {
+ this.setData({
+ top: rect.bottom,
+ maskHeight: rect.top,
+ }, cb);
+ });
+ },
+ handleTreeClick(e) {
+ const { level, value: itemValue } = e.currentTarget.dataset;
+ const { value } = this.data;
+ value[level] = itemValue;
+ this._trigger('change', { value });
+ },
+ handleRadioChange(e) {
+ const { value } = e.detail;
+ this._trigger('change', { value });
+ if (!this.data.multiple) {
+ this.closeDropdown();
+ }
+ },
+ handleMaskClick() {
+ var _a;
+ if ((_a = this.$parent) === null || _a === void 0 ? void 0 : _a.properties.closeOnClickOverlay) {
+ this.closeDropdown();
+ }
+ },
+ handleReset() {
+ this._trigger('change', { value: [] });
+ this._trigger('reset');
+ },
+ handleConfirm() {
+ this._trigger('confirm', { value: this.data.value });
+ this.closeDropdown();
+ },
+ onLeaved() {
+ this.setData({ wrapperVisible: false });
+ },
+ };
+ }
+};
+DropdownMenuItem = __decorate([
+ wxComponent()
+], DropdownMenuItem);
+export default DropdownMenuItem;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.json b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.json
new file mode 100644
index 0000000..a07137b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.json
@@ -0,0 +1,11 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-button": "../button/button",
+ "t-radio": "../radio/radio",
+ "t-radio-group": "../radio-group/radio-group",
+ "t-checkbox": "../checkbox/checkbox",
+ "t-checkbox-group": "../checkbox-group/checkbox-group",
+ "t-popup": "../popup/popup"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.wxml b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.wxml
new file mode 100644
index 0000000..1d0f52c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.wxml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.wxss b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.wxss
new file mode 100644
index 0000000..fea0f0e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/dropdown-item.wxss
@@ -0,0 +1,115 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+/** dropdown-item */
+.t-dropdown-item {
+ position: fixed;
+ right: 0;
+ left: 0;
+ top: 0;
+ overflow: hidden;
+ bottom: 0;
+ /** 树形结构 */
+}
+.t-dropdown-item__content {
+ display: flex;
+ flex-direction: column;
+ z-index: 11600;
+ overflow: hidden;
+}
+.t-dropdown-item__popup-host {
+ display: block;
+ width: 100%;
+ height: max-content;
+ overflow: hidden;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.t-dropdown-item__body {
+ flex: 1;
+ background: var(--td-dropdown-menu-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ overflow: auto;
+ max-height: var(--td-dropdown-body-max-height, 560rpx);
+}
+.t-dropdown-item__body--tree {
+ display: flex;
+ overflow: hidden;
+}
+.t-dropdown-item__body--multi {
+ padding-top: var(--td-spacer, 16rpx);
+ padding-bottom: var(--td-spacer, 16rpx);
+ overflow-y: auto;
+}
+.t-dropdown-item__footer {
+ display: flex;
+ background: var(--td-dropdown-menu-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ padding: 32rpx;
+ position: relative;
+}
+.t-dropdown-item__footer::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ bottom: unset;
+ left: unset;
+ right: unset;
+ background-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-dropdown-item__footer::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-dropdown-item__footer-btn {
+ flex: 1;
+}
+.t-dropdown-item__footer-btn + .t-dropdown-item__footer-btn {
+ margin-left: 32rpx;
+}
+.t-dropdown-item__radio,
+.t-dropdown-item__checkbox {
+ width: 100%;
+ overflow: scroll;
+ box-sizing: border-box;
+}
+.t-dropdown-item__checkbox-group {
+ display: grid;
+ padding: 32rpx;
+ grid-gap: 24rpx;
+}
+.t-dropdown-item__tree-item {
+ height: var(--td-tree-item-height, 96rpx);
+ line-height: var(--td-tree-item-height, 96rpx);
+ font-size: var(--td-tree-item-font-size, 32rpx);
+ padding-left: 32rpx;
+}
+.t-dropdown-item__tree-item--active {
+ color: var(--td-tree-item-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/index.wxs b/miniprogram_npm/tdesign-miniprogram/dropdown-item/index.wxs
new file mode 100644
index 0000000..e774f06
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/index.wxs
@@ -0,0 +1,9 @@
+var getStyles = function (top, zIndex) {
+ var topStyle = top ? 'top:' + top + 'px;' : '';
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return topStyle + zIndexStyle;
+};
+
+module.exports = {
+ getStyles: getStyles,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/props.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-item/props.d.ts
new file mode 100644
index 0000000..aa95de6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDropdownItemProps } from './type';
+declare const props: TdDropdownItemProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/props.js b/miniprogram_npm/tdesign-miniprogram/dropdown-item/props.js
new file mode 100644
index 0000000..e8be8e6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/props.js
@@ -0,0 +1,41 @@
+const props = {
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ keys: {
+ type: Object,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ multiple: {
+ type: Boolean,
+ value: false,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ optionsColumns: {
+ type: null,
+ value: 1,
+ },
+ optionsLayout: {
+ type: String,
+ value: 'columns',
+ },
+ value: {
+ type: null,
+ value: undefined,
+ },
+ defaultValue: {
+ type: null,
+ value: undefined,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/type.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-item/type.d.ts
new file mode 100644
index 0000000..3858490
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/type.d.ts
@@ -0,0 +1,60 @@
+import { KeysType } from '../common/common';
+export interface TdDropdownItemProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: [
+ 't-class',
+ 't-class-content',
+ 't-class-column',
+ 't-class-column-item',
+ 't-class-column-item-label',
+ 't-class-footer'
+ ];
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ multiple?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ optionsColumns?: {
+ type: null;
+ value?: string | number;
+ };
+ optionsLayout?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: DropdownValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: DropdownValue;
+ };
+}
+export interface DropdownOption {
+ label: string;
+ disabled: boolean;
+ value: DropdownValue;
+}
+export declare type DropdownValue = string | number | Array;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-item/type.js b/miniprogram_npm/tdesign-miniprogram/dropdown-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/README.en-US.md
new file mode 100644
index 0000000..eb73f94
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/README.en-US.md
@@ -0,0 +1,35 @@
+:: BASE_DOC ::
+
+## API
+### DropdownMenu Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-on-click-overlay | Boolean | true | \- | N
+duration | String / Number | 200 | \- | N
+external-classes | Array | - | `['t-class', 't-class-item', 't-class-label', 't-class-icon']` | N
+show-overlay | Boolean | true | \- | N
+z-index | Number | 11600 | \- | N
+
+### DropdownItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class','t-class-content', 't-class-column', 't-class-column-item', 't-class-column-item-label', 't-class-footer']` | N
+keys | Object | - | Typescript:`KeysType` | N
+label | String | - | \- | N
+multiple | Boolean | false | \- | N
+options | Array | [] | Typescript:`Array` `interface DropdownOption { label: string; disabled: boolean; value: DropdownValue; }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+options-columns | String / Number | 1 | \- | N
+options-layout | String | columns | `deprecated` | N
+value | String / Number / Array | undefined | Typescript:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+default-value | String / Number / Array | undefined | uncontrolled property。Typescript:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+
+### DropdownItem Events
+
+name | params | description
+-- | -- | --
+change | `(value: DropdownValue)` | \-
+confirm | `(value: DropdownValue)` | \-
+reset | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/README.md b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/README.md
new file mode 100644
index 0000000..0d7b731
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/README.md
@@ -0,0 +1,76 @@
+---
+title: DropdownMenu 下拉菜单
+description: 菜单呈现数个并列的选项类目,用于整个页面的内容筛选,由菜单面板和菜单选项组成。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.8.0 版本上线,请留意版本。
+
+
+## 引入
+
+### 引入组件
+
+在 `app.json` 或 `page.json` 中引入组件:
+
+```json
+"usingComponents": {
+ "t-dropdown-menu": "tdesign-miniprogram/dropdown-menu/dropdown-menu",
+ "t-dropdown-item": "tdesign-miniprogram/dropdown-item/dropdown-item"
+}
+```
+
+## 用法
+
+### 单选下拉菜单
+
+{{ single }}
+
+### 多列下拉菜单
+
+{{ multi }}
+
+### 树形下拉菜单
+
+{{ tree }}
+
+## API
+### DropdownMenu Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-on-click-overlay | Boolean | true | 是否在点击遮罩层后关闭菜单 | N
+duration | String / Number | 200 | 动画时长 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、菜单标签、菜单图标类名 等。`['t-class', 't-class-item', 't-class-label', 't-class-icon']` | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+z-index | Number | 11600 | 菜单栏 z-index 层级 | N
+
+### DropdownItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disabled | Boolean | false | 是否禁用 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、菜单列、菜单列选项、菜单列选项标签、树形菜单、树形菜单列等类名。`['t-class','t-class-content', 't-class-column', 't-class-column-item', 't-class-column-item-label', 't-class-footer']` | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+label | String | - | 标题 | N
+multiple | Boolean | false | 是否多选 | N
+options | Array | [] | 选项数据。TS 类型:`Array` `interface DropdownOption { label: string; disabled: boolean; value: DropdownValue; }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+options-columns | String / Number | 1 | 选项分栏(1-3) | N
+options-layout | String | columns | 已废弃。选项排列;不再支持 tree 布局,可与 treeSelect 配合使用 | N
+value | String / Number / Array | undefined | 选中值。TS 类型:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+default-value | String / Number / Array | undefined | 选中值。非受控属性。TS 类型:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+
+### DropdownItem Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: DropdownValue)` | 值改变时触发
+confirm | `(value: DropdownValue)` | 点击确认时触发
+reset | - | 点击重置时触发
\ No newline at end of file
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.d.ts
new file mode 100644
index 0000000..3496011
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.d.ts
@@ -0,0 +1,25 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+import type { TdDropdownMenuProps } from './type';
+export interface DropdownMenuProps extends TdDropdownMenuProps {
+}
+export default class DropdownMenu extends SuperComponent {
+ externalClasses: string[];
+ properties: TdDropdownMenuProps;
+ nodes: any;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ menus: any;
+ activeIdx: number;
+ bottom: number;
+ };
+ relations: RelationsOptions;
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ toggle(index: number): void;
+ getAllItems(): void;
+ handleToggle(e: WechatMiniprogram.BaseEvent): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.js b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.js
new file mode 100644
index 0000000..7b28044
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.js
@@ -0,0 +1,90 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-dropdown-menu`;
+let DropdownMenu = class DropdownMenu extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-item`, `${prefix}-class-label`, `${prefix}-class-icon`];
+ this.properties = props;
+ this.nodes = null;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ menus: null,
+ activeIdx: -1,
+ bottom: 0,
+ };
+ this.relations = {
+ '../dropdown-item/dropdown-item': {
+ type: 'child',
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.getAllItems();
+ },
+ };
+ this.methods = {
+ toggle(index) {
+ const { activeIdx, duration } = this.data;
+ const prevItem = this.$children[activeIdx];
+ const currItem = this.$children[index];
+ if (currItem === null || currItem === void 0 ? void 0 : currItem.data.disabled)
+ return;
+ if (activeIdx !== -1) {
+ prevItem.triggerEvent('close');
+ prevItem.setData({
+ show: false,
+ }, () => {
+ setTimeout(() => {
+ prevItem.triggerEvent('closed');
+ }, duration);
+ });
+ }
+ if (index == null || activeIdx === index) {
+ this.setData({
+ activeIdx: -1,
+ });
+ }
+ else {
+ currItem.triggerEvent('open');
+ this.setData({
+ activeIdx: index,
+ });
+ currItem.setData({
+ show: true,
+ }, () => {
+ setTimeout(() => {
+ currItem.triggerEvent('opened');
+ }, duration);
+ });
+ }
+ },
+ getAllItems() {
+ const menus = this.$children.map(({ data }) => ({
+ label: data.label || data.computedLabel,
+ disabled: data.disabled,
+ }));
+ this.setData({
+ menus,
+ });
+ },
+ handleToggle(e) {
+ const { index } = e.currentTarget.dataset;
+ this.toggle(index);
+ },
+ };
+ }
+};
+DropdownMenu = __decorate([
+ wxComponent()
+], DropdownMenu);
+export default DropdownMenu;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.json b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.wxml b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.wxml
new file mode 100644
index 0000000..eac2ed6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.wxml
@@ -0,0 +1,23 @@
+
+
+
+
+ {{item.label}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.wxss b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.wxss
new file mode 100644
index 0000000..d9a1082
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/dropdown-menu.wxss
@@ -0,0 +1,78 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-dropdown-menu {
+ display: flex;
+ height: 48px;
+ background: var(--td-dropdown-menu-bg-colorm, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ position: relative;
+}
+.t-dropdown-menu::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-dropdown-menu::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-dropdown-menu__item {
+ display: flex;
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ padding: 0 var(--td-spacer, 16rpx);
+ position: relative;
+ overflow: hidden;
+ color: var(--td-dropdown-menu-colorm, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-dropdown-menu__item--active {
+ color: var(--td-dropdown-menu-active-colorm, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-dropdown-menu__item--disabled {
+ color: var(--td-dropdown-menu-disabled-colorm, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-dropdown-menu__icon {
+ font-size: var(--td-dropdown-menu-icon-sizem, 48rpx);
+ transition: transform 240ms ease;
+}
+.t-dropdown-menu__icon--active {
+ transform: rotate(180deg);
+}
+.t-dropdown-menu__title {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ font-size: var(--td-dropdown-menu-font-sizem, 28rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/index.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/index.d.ts
new file mode 100644
index 0000000..dea9f1d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './dropdown-menu';
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/index.js b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/index.js
new file mode 100644
index 0000000..dea9f1d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './dropdown-menu';
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/props.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/props.d.ts
new file mode 100644
index 0000000..b662f85
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDropdownMenuProps } from './type';
+declare const props: TdDropdownMenuProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/props.js b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/props.js
new file mode 100644
index 0000000..f879602
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/props.js
@@ -0,0 +1,22 @@
+const props = {
+ closeOnClickOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ duration: {
+ type: null,
+ value: 200,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ zIndex: {
+ type: Number,
+ value: 11600,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/type.d.ts b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/type.d.ts
new file mode 100644
index 0000000..9e549d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdDropdownMenuProps {
+ closeOnClickOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ duration?: {
+ type: null;
+ value?: string | number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-item', 't-class-label', 't-class-icon'];
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/dropdown-menu/type.js b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/dropdown-menu/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/empty/README.en-US.md
new file mode 100644
index 0000000..ef93552
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/README.en-US.md
@@ -0,0 +1,13 @@
+:: BASE_DOC ::
+
+## API
+
+### Empty Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+action | Slot | - | \- | N
+description | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-description', 't-class-image', 't-class-actions']` | N
+icon | String | - | \- | N
+image | String / Slot | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/README.md b/miniprogram_npm/tdesign-miniprogram/empty/README.md
new file mode 100644
index 0000000..ba1c06f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/README.md
@@ -0,0 +1,46 @@
+---
+title: Empty 空状态
+description: 用于空状态时的占位提示。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-empty": "tdesign-miniprogram/empty/empty"
+}
+```
+
+## 代码演示
+
+### 类型
+
+图标空状态
+
+{{ base }}
+
+自定义图片空状态
+
+{{ imageEmpty }}
+
+带操作空状态
+
+{{ buttonEmpty }}
+
+
+
+## API
+### Empty Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+action | Slot | - | 操作按钮 | N
+description | String / Slot | - | 描述文字 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、文本描述类名、图片类名、操作按钮类名。`['t-class', 't-class-description', 't-class-image', 't-class-actions']` | N
+icon | String / Object | - | 图标名称。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+image | String / Slot | - | 图片地址 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/empty.d.ts b/miniprogram_npm/tdesign-miniprogram/empty/empty.d.ts
new file mode 100644
index 0000000..cd582e0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/empty.d.ts
@@ -0,0 +1,15 @@
+import { SuperComponent } from '../common/src/index';
+export default class extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ properties: import("./type").TdEmptyProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ icon(icon: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/empty.js b/miniprogram_npm/tdesign-miniprogram/empty/empty.js
new file mode 100644
index 0000000..7d99bf9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/empty.js
@@ -0,0 +1,36 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import { setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-empty`;
+let default_1 = class extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-description`, `${prefix}-class-image`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ }
+};
+default_1 = __decorate([
+ wxComponent()
+], default_1);
+export default default_1;
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/empty.json b/miniprogram_npm/tdesign-miniprogram/empty/empty.json
new file mode 100644
index 0000000..9a40e60
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/empty.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/empty.wxml b/miniprogram_npm/tdesign-miniprogram/empty/empty.wxml
new file mode 100644
index 0000000..8750072
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/empty.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/empty.wxs b/miniprogram_npm/tdesign-miniprogram/empty/empty.wxs
new file mode 100644
index 0000000..88305a6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/empty.wxs
@@ -0,0 +1,12 @@
+var REGEXP = getRegExp('^\d+(\.\d+)?$');
+
+function addUnit(value) {
+ if (value == null) {
+ return undefined;
+ }
+ return REGEXP.test('' + value) ? value + 'px' : value;
+}
+
+module.exports = {
+ addUnit: addUnit,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/empty.wxss b/miniprogram_npm/tdesign-miniprogram/empty/empty.wxss
new file mode 100644
index 0000000..b12ab62
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/empty.wxss
@@ -0,0 +1,48 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-empty {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+.t-empty__icon {
+ font-size: 192rpx;
+ color: var(--td-empty-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-empty__thumb + .t-empty__description:not(:empty) {
+ margin-top: var(--td-empty-description-margin-top, var(--td-spacer-2, 32rpx));
+}
+.t-empty__description {
+ text-align: center;
+ color: var(--td-empty-description-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-empty-description-font-size, var(--td-font-size-base, 28rpx));
+ line-height: var(--td-empty-description-line-height, 44rpx);
+}
+.t-empty__description + .t-empty__actions:not(:empty) {
+ margin-top: var(--td-empty-action-margin-top, var(--td-spacer-4, 64rpx));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/props.d.ts b/miniprogram_npm/tdesign-miniprogram/empty/props.d.ts
new file mode 100644
index 0000000..6f04c79
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/props.d.ts
@@ -0,0 +1,3 @@
+import { TdEmptyProps } from './type';
+declare const props: TdEmptyProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/props.js b/miniprogram_npm/tdesign-miniprogram/empty/props.js
new file mode 100644
index 0000000..aa55217
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/props.js
@@ -0,0 +1,15 @@
+const props = {
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ image: {
+ type: String,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/type.d.ts b/miniprogram_npm/tdesign-miniprogram/empty/type.d.ts
new file mode 100644
index 0000000..c222ac2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/type.d.ts
@@ -0,0 +1,22 @@
+export interface TdEmptyProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-description', 't-class-image', 't-class-actions'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/empty/type.js b/miniprogram_npm/tdesign-miniprogram/empty/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/empty/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/fab/README.en-US.md
new file mode 100644
index 0000000..d2b3aa7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/README.en-US.md
@@ -0,0 +1,17 @@
+:: BASE_DOC ::
+
+## API
+### Fab Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+button-props | Object | - | \- | N
+icon | String | - | \- | N
+style | String | right: 16px; bottom: 32px; | \- | N
+text | String | - | \- | N
+
+### Fab Events
+
+name | params | description
+-- | -- | --
+click | `(detail: {e: MouseEvent})` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/README.md b/miniprogram_npm/tdesign-miniprogram/fab/README.md
new file mode 100644
index 0000000..57b1860
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/README.md
@@ -0,0 +1,52 @@
+---
+title: Fab 悬浮按钮
+description: 当功能使用图标即可表意清楚时,可使用纯图标悬浮按钮,例如:添加、发布。
+spline: form
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.2 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+
+```json
+"usingComponents": {
+ "t-fab": "tdesign-miniprogram/fab/fab"
+}
+```
+
+## 代码演示
+
+### 基础使用
+
+{{ base }}
+
+### 进阶使用
+
+{{ advance }}
+
+## API
+### Fab Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+button-props | Object | - | 透传至 Button 组件 | N
+icon | String | - | 图标 | N
+style | String | right: 16px; bottom: 32px; | 悬浮按钮的样式,常用于调整位置(即将废弃,建议使用 `style`) | N
+text | String | - | 文本内容 | N
+
+### Fab Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `({e: Event})` | 悬浮按钮点击事件
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/fab.d.ts b/miniprogram_npm/tdesign-miniprogram/fab/fab.d.ts
new file mode 100644
index 0000000..00e06b5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/fab.d.ts
@@ -0,0 +1,20 @@
+import { SuperComponent } from '../common/src/index';
+export default class Fab extends SuperComponent {
+ properties: import("./type").TdFabProps;
+ externalClasses: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ baseButtonProps: {
+ size: string;
+ shape: string;
+ theme: string;
+ };
+ };
+ observers: {
+ text(val: any): void;
+ };
+ methods: {
+ onTplButtonTap(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/fab.js b/miniprogram_npm/tdesign-miniprogram/fab/fab.js
new file mode 100644
index 0000000..9bb7655
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/fab.js
@@ -0,0 +1,47 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-fab`;
+let Fab = class Fab extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = props;
+ this.externalClasses = [`class`, `${prefix}-class`, `${prefix}-class-button`];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ baseButtonProps: {
+ size: 'large',
+ shape: 'circle',
+ theme: 'primary',
+ },
+ };
+ this.observers = {
+ text(val) {
+ if (val) {
+ this.setData({
+ baseButtonProps: {
+ shape: 'round',
+ },
+ });
+ }
+ },
+ };
+ this.methods = {
+ onTplButtonTap(e) {
+ this.triggerEvent('click', e);
+ },
+ };
+ }
+};
+Fab = __decorate([
+ wxComponent()
+], Fab);
+export default Fab;
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/fab.json b/miniprogram_npm/tdesign-miniprogram/fab/fab.json
new file mode 100644
index 0000000..e73f3ad
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/fab.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-button": "../button/button"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/fab.wxml b/miniprogram_npm/tdesign-miniprogram/fab/fab.wxml
new file mode 100644
index 0000000..1bca71c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/fab.wxml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/fab.wxss b/miniprogram_npm/tdesign-miniprogram/fab/fab.wxss
new file mode 100644
index 0000000..49942a6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/fab.wxss
@@ -0,0 +1,33 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-fab {
+ position: fixed;
+}
+.t-fab__button {
+ box-shadow: var(--td-fab-shadow, var(--td-shadow-2, 0 3px 14px 2px rgba(0, 0, 0, 0.05), 0 8px 10px 1px rgba(0, 0, 0, 0.06), 0 5px 5px -3px rgba(0, 0, 0, 0.1)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/props.d.ts b/miniprogram_npm/tdesign-miniprogram/fab/props.d.ts
new file mode 100644
index 0000000..2cf4647
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/props.d.ts
@@ -0,0 +1,3 @@
+import { TdFabProps } from './type';
+declare const props: TdFabProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/props.js b/miniprogram_npm/tdesign-miniprogram/fab/props.js
new file mode 100644
index 0000000..4cf58a2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/props.js
@@ -0,0 +1,14 @@
+const props = {
+ buttonProps: {
+ type: Object,
+ },
+ icon: {
+ type: String,
+ value: '',
+ },
+ text: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/type.d.ts b/miniprogram_npm/tdesign-miniprogram/fab/type.d.ts
new file mode 100644
index 0000000..76d4ed8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/type.d.ts
@@ -0,0 +1,18 @@
+export interface TdFabProps {
+ buttonProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ icon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/fab/type.js b/miniprogram_npm/tdesign-miniprogram/fab/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/fab/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/footer/README.en-US.md
new file mode 100644
index 0000000..8063c22
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/README.en-US.md
@@ -0,0 +1,13 @@
+:: BASE_DOC ::
+
+## API
+### Footer Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+copyright | String | '' | \- | N
+text | String | '' | \- | N
+logo | Object | - | Typescript:`FooterLogo` `interface FooterLogo { icon: string; title?: string; titleUrl?: string }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+text-link-list | Array | [] | Typescript:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+links | Array | [] | Typescript:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+theme | String | 'text' | options:text/logo | N
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/README.md b/miniprogram_npm/tdesign-miniprogram/footer/README.md
new file mode 100644
index 0000000..d2e7c37
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/README.md
@@ -0,0 +1,48 @@
+---
+title: Footer 页脚
+description: 用于基础列表展示,可附带文字、品牌 logo、操作,常用商详、个人中心、设置等页面。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-footer": "tdesign-miniprogram/footer/footer"
+}
+```
+
+## 代码演示
+
+
+
+
+### 类型
+
+基础页脚
+
+{{ base }}
+
+基础加链接页脚
+
+{{ link }}
+
+品牌页脚
+
+{{ logo }}
+
+## API
+### Footer Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+copyright | String | '' | 已废弃。版权信息,type 为`text`生效 | N
+text | String | '' | `1.0.0` 版权信息。 | N
+logo | Object | - | 图标配置。`logo.icon` 表示图标链接地址,`logo.title` 表示标题文本,`logo.url` 表示链接跳转地址。TS 类型:`FooterLogo` `interface FooterLogo { icon: string; title?: string; titleUrl?: string }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+text-link-list | Array | [] | 已废弃。链接列表,type 为`text`生效。name 表示链接名称, url 表示链接 page 路径,目前只支持小程序内部跳转,openType 表示跳转方式。TS 类型:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+links| Array | [] | `1.0.0` 链接列表。name 表示链接名称, url 表示链接 page 路径,目前只支持小程序内部跳转,openType 表示跳转方式。TS 类型:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+theme | String | 'text' | 已废弃。页脚展示类型。可选项:text/logo | N
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/footer.d.ts b/miniprogram_npm/tdesign-miniprogram/footer/footer.d.ts
new file mode 100644
index 0000000..6ffe46b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/footer.d.ts
@@ -0,0 +1,9 @@
+import { SuperComponent } from '../common/src/index';
+export default class Footer extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdFooterProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/footer.js b/miniprogram_npm/tdesign-miniprogram/footer/footer.js
new file mode 100644
index 0000000..a640f75
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/footer.js
@@ -0,0 +1,26 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-footer`;
+let Footer = class Footer extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ }
+};
+Footer = __decorate([
+ wxComponent()
+], Footer);
+export default Footer;
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/footer.json b/miniprogram_npm/tdesign-miniprogram/footer/footer.json
new file mode 100644
index 0000000..f705aee
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/footer.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/footer.wxml b/miniprogram_npm/tdesign-miniprogram/footer/footer.wxml
new file mode 100644
index 0000000..56e8d99
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/footer.wxml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ {{logo.title}}
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+ |
+
+
+ {{text}}
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/footer.wxss b/miniprogram_npm/tdesign-miniprogram/footer/footer.wxss
new file mode 100644
index 0000000..9352f98
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/footer.wxss
@@ -0,0 +1,77 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-footer {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-start;
+}
+.t-footer__text {
+ font-size: var(--td-footer-text-font-size, var(--td-font-size-s, 24rpx));
+ line-height: var(--td-footer-text-line-height, 40rpx);
+ color: var(--td-footer-text-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-footer__link-list + .t-footer__text:not(:empty) {
+ margin-top: var(--td-footer-text-margin-top, 8rpx);
+}
+.t-footer__link-list {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.t-footer__link-item {
+ color: var(--td-footer-link-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-size: var(--td-footer-link-font-size, var(--td-font-size-s, 24rpx));
+ line-height: var(--td-footer-link-line-height, 40rpx);
+ text-decoration: underline;
+}
+.t-footer__link-line {
+ font-size: 24rpx;
+ color: var(--td-footer-link-dividing-line-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ display: inline-block;
+ padding: 0 var(--td-footer-link-dividing-line-padding, var(--td-spacer-1, 24rpx));
+}
+.t-footer__logo {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.t-footer__icon {
+ width: var(--td-footer-logo-icon-width, 48rpx);
+ height: var(--td-footer-logo-icon-height, 48rpx);
+ margin-right: var(--td-footer-logo-icon-margin-right, var(--td-spacer, 16rpx));
+}
+.t-footer__title {
+ font-weight: bold;
+ font-size: var(--td-footer-logo-title-font-size, var(--td-font-size-m, 32rpx));
+ line-height: var(--td-footer-logo-title-line-height, 48rpx);
+ font-style: italic;
+}
+.t-footer__title-url {
+ width: var(--td-footer-logo-title-url-width, 256rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/props.d.ts b/miniprogram_npm/tdesign-miniprogram/footer/props.d.ts
new file mode 100644
index 0000000..f9a5618
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/props.d.ts
@@ -0,0 +1,3 @@
+import { TdFooterProps } from './type';
+declare const props: TdFooterProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/props.js b/miniprogram_npm/tdesign-miniprogram/footer/props.js
new file mode 100644
index 0000000..8281291
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/props.js
@@ -0,0 +1,14 @@
+const props = {
+ text: {
+ type: String,
+ value: '',
+ },
+ logo: {
+ type: Object,
+ },
+ links: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/type.d.ts b/miniprogram_npm/tdesign-miniprogram/footer/type.d.ts
new file mode 100644
index 0000000..7e4a8ff
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/type.d.ts
@@ -0,0 +1,24 @@
+export interface TdFooterProps {
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ logo?: {
+ type: ObjectConstructor;
+ value?: FooterLogo;
+ };
+ links?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+}
+export interface FooterLogo {
+ icon: string;
+ title?: string;
+ titleUrl?: string;
+}
+export interface LinkObj {
+ name: string;
+ url?: string;
+ openType?: 'navigate' | 'redirect' | 'relaunch' | 'switchTab' | 'navigateBack';
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/footer/type.js b/miniprogram_npm/tdesign-miniprogram/footer/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/footer/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.d.ts b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.d.ts
new file mode 100644
index 0000000..4c43196
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.d.ts
@@ -0,0 +1,31 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class GridItem extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ properties: import("./type").TdGridItemProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ gridItemStyle: string;
+ gridItemWrapperStyle: string;
+ gridItemContentStyle: string;
+ align: string;
+ column: number;
+ describedbyID: string;
+ };
+ observers: {
+ icon(icon: any): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ updateStyle(): void;
+ getWidthStyle(): string;
+ getPaddingStyle(): string;
+ getBorderStyle(): string;
+ onClick(e: any): void;
+ jumpLink(): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.js b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.js
new file mode 100644
index 0000000..33397e9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.js
@@ -0,0 +1,130 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent, isObject } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { uniqueFactory, setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-grid-item`;
+const getUniqueID = uniqueFactory('grid_item');
+var LinkTypes;
+(function (LinkTypes) {
+ LinkTypes["redirect-to"] = "redirectTo";
+ LinkTypes["switch-tab"] = "switchTab";
+ LinkTypes["relaunch"] = "reLaunch";
+ LinkTypes["navigate-to"] = "navigateTo";
+})(LinkTypes || (LinkTypes = {}));
+let GridItem = class GridItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-image`,
+ `${prefix}-class-text`,
+ `${prefix}-class-description`,
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../grid/grid': {
+ type: 'ancestor',
+ linked(target) {
+ this.parent = target;
+ this.updateStyle();
+ this.setData({
+ column: target.data.column,
+ });
+ },
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ gridItemStyle: '',
+ gridItemWrapperStyle: '',
+ gridItemContentStyle: '',
+ align: 'center',
+ column: 0,
+ describedbyID: '',
+ };
+ this.observers = {
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.setData({
+ describedbyID: getUniqueID(),
+ });
+ },
+ };
+ }
+ updateStyle() {
+ const { hover, align } = this.parent.properties;
+ const gridItemStyles = [];
+ const gridItemWrapperStyles = [];
+ const gridItemContentStyles = [];
+ const widthStyle = this.getWidthStyle();
+ const paddingStyle = this.getPaddingStyle();
+ const borderStyle = this.getBorderStyle();
+ widthStyle && gridItemStyles.push(widthStyle);
+ paddingStyle && gridItemWrapperStyles.push(paddingStyle);
+ borderStyle && gridItemContentStyles.push(borderStyle);
+ this.setData({
+ gridItemStyle: `${gridItemStyles.join(';')}`,
+ gridItemWrapperStyle: gridItemWrapperStyles.join(';'),
+ gridItemContentStyle: gridItemContentStyles.join(';'),
+ hover,
+ layout: this.properties.layout,
+ align: align,
+ });
+ }
+ getWidthStyle() {
+ const { column } = this.parent.properties;
+ return column > 0 ? `width:${(1 / column) * 100}%` : '';
+ }
+ getPaddingStyle() {
+ const { gutter } = this.parent.properties;
+ if (gutter)
+ return `padding-left:${gutter}rpx;padding-top:${gutter}rpx`;
+ return '';
+ }
+ getBorderStyle() {
+ const { gutter } = this.parent.properties;
+ let { border } = this.parent.properties;
+ if (!border)
+ return '';
+ if (!isObject(border))
+ border = {};
+ const { color = '#266FE8', width = 2, style = 'solid' } = border;
+ if (gutter)
+ return `border:${width}rpx ${style} ${color}`;
+ return `border-top:${width}rpx ${style} ${color};border-left:${width}rpx ${style} ${color}`;
+ }
+ onClick(e) {
+ const { item } = e.currentTarget.dataset;
+ this.triggerEvent('click', item);
+ this.jumpLink();
+ }
+ jumpLink() {
+ const { url, jumpType } = this.properties;
+ if (url && jumpType) {
+ if (LinkTypes[jumpType]) {
+ wx[LinkTypes[jumpType]]({ url });
+ }
+ }
+ }
+};
+GridItem = __decorate([
+ wxComponent()
+], GridItem);
+export default GridItem;
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.json b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.json
new file mode 100644
index 0000000..26991b4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-image": "../image/image",
+ "t-icon": "../icon/icon",
+ "t-badge": "../badge/badge"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.wxml b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.wxml
new file mode 100644
index 0000000..e0bb953
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.wxml
@@ -0,0 +1,79 @@
+
+
+
+ module.exports.getImageSize = function(column) { if (column >= 5) return 'small'; if (column == 4) return 'middle';
+ return 'large'; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{text}}
+
+
+
+ {{description}}
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.wxss b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.wxss
new file mode 100644
index 0000000..13d8392
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/grid-item.wxss
@@ -0,0 +1,124 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-grid-item {
+ box-sizing: border-box;
+ height: 100%;
+ display: inline-block;
+ vertical-align: top;
+}
+.t-grid-item--hover {
+ background-color: var(--td-grid-item-hover-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-grid-item--auto-size {
+ width: 168rpx;
+}
+.t-grid-item__content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ overflow: hidden;
+ position: relative;
+ padding: var(--td-grid-item-padding, 32rpx) 0 24rpx;
+}
+.t-grid-item__content--horizontal {
+ flex-direction: row;
+ padding-left: var(--td-grid-item-padding, 32rpx);
+}
+.t-grid-item__words {
+ width: 100%;
+ text-align: center;
+ position: relative;
+ flex-direction: column;
+ display: flex;
+ flex: 1;
+ justify-content: center;
+ align-items: center;
+}
+.t-grid-item__words--horizontal {
+ margin-left: 24rpx;
+}
+.t-grid-item__words:empty {
+ display: none;
+}
+.t-grid-item__image:not(:empty) {
+ width: var(--td-grid-item-image-width, 96rpx);
+ height: var(--td-grid-item-image-width, 96rpx);
+}
+.t-grid-item__image:not(:empty).t-grid-item__image--small {
+ width: 64rpx;
+ height: 64rpx;
+}
+.t-grid-item__image:not(:empty).t-grid-item__image--middle {
+ width: 80rpx;
+ height: 80rpx;
+}
+.t-grid-item__image:not(:empty) .t-grid__image {
+ width: 100%;
+ height: 100%;
+}
+.t-grid-item__image--icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+ border-radius: var(--td-radius-default, 12rpx);
+}
+.t-grid-item--left {
+ justify-self: flex-start;
+ align-items: flex-start;
+}
+.t-grid-item--left .t-grid-item__words {
+ text-align: left;
+}
+.t-grid-item__text {
+ width: inherit;
+ color: var(--td-grid-item-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-grid-item-text-font-size, 28rpx);
+ line-height: var(--td-grid-item-text-line-height, 44rpx);
+ padding-top: var(--td-grid-item-text-padding-top, 16rpx);
+}
+.t-grid-item__text--small,
+.t-grid-item__text--middle {
+ font-size: 24rpx;
+}
+.t-grid-item__text--horizontal {
+ padding-top: 0;
+ text-align: left;
+}
+.t-grid-item__description {
+ width: inherit;
+ color: var(--td-grid-item-description-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-grid-item-description-font-size, 24rpx);
+ line-height: var(--td-grid-item-description-line-height, 40rpx);
+}
+.t-grid-item__description--horizontal {
+ text-align-last: left;
+}
+.t-grid-item__icon {
+ font-size: 48rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/props.d.ts b/miniprogram_npm/tdesign-miniprogram/grid-item/props.d.ts
new file mode 100644
index 0000000..bd6c2fb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdGridItemProps } from './type';
+declare const props: TdGridItemProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/props.js b/miniprogram_npm/tdesign-miniprogram/grid-item/props.js
new file mode 100644
index 0000000..df49d24
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/props.js
@@ -0,0 +1,37 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ value: null,
+ },
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ image: {
+ type: String,
+ },
+ imageProps: {
+ type: Object,
+ },
+ jumpType: {
+ type: String,
+ value: 'navigate-to',
+ },
+ layout: {
+ type: String,
+ value: 'vertical',
+ },
+ text: {
+ type: String,
+ },
+ url: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/type.d.ts b/miniprogram_npm/tdesign-miniprogram/grid-item/type.d.ts
new file mode 100644
index 0000000..c75363b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/type.d.ts
@@ -0,0 +1,47 @@
+import { BadgeProps } from '../badge/index';
+export interface TdGridItemProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: BadgeProps;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-image', 't-class-text', 't-class-description'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ jumpType?: {
+ type: StringConstructor;
+ value?: 'redirect-to' | 'switch-tab' | 'relaunch' | 'navigate-to';
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'vertical' | 'horizontal';
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ url?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid-item/type.js b/miniprogram_npm/tdesign-miniprogram/grid-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/grid/README.en-US.md
new file mode 100644
index 0000000..9ea1966
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/README.en-US.md
@@ -0,0 +1,29 @@
+:: BASE_DOC ::
+
+## API
+### Grid Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | center | options:left/center | N
+border | Boolean / Object | false | Typescript:`boolean \| { color?: string; width?: string; style?: 'solid' \| 'dashed' \| 'dotted' \| 'double' \| 'groove' \| 'inset' \| 'outset' }` | N
+column | Number | 4 | \- | N
+external-classes | Array | - | `['t-class']` | N
+gutter | Number | - | \- | N
+hover | Boolean | false | \- | N
+theme | String | default | options:default/card | N
+
+### GridItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | null | Typescript:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/grid-item/type.ts) | N
+description | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-image', 't-class-text', 't-class-description']` | N
+icon | String / Object | - | \- | N
+image | String / Slot | - | \- | N
+image-props | Object | - | \- | N
+jump-type | String | navigate-to | options:redirect-to/switch-tab/relaunch/navigate-to | N
+layout | String | vertical | options:vertical/horizontal | N
+text | String / Slot | - | \- | N
+url | String | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/README.md b/miniprogram_npm/tdesign-miniprogram/grid/README.md
new file mode 100644
index 0000000..355a0eb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/README.md
@@ -0,0 +1,84 @@
+---
+title: Grid 宫格
+description: 用于功能入口布局,将页面或特定区域切分成若干等大的区块,形成若干功能入口。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-grid": "tdesign-miniprogram/grid/grid",
+ "t-grid-item": "tdesign-miniprogram/grid-item/grid-item"
+}
+```
+
+## 代码演示
+
+### 组件类型
+基础宫格
+
+{{ base }}
+
+带说明的宫格
+
+{{ description }}
+
+带边框的宫格
+
+{{ border }}
+
+带徽章的宫格
+
+{{ badge }}
+
+可滑动的宫格
+
+{{ scroll }}
+
+### 组件样式
+
+可传图标的宫格
+
+{{ icon-grid }}
+
+多行宫格
+
+{{ multiple }}
+
+卡片宫格
+
+{{ card }}
+
+
+## API
+### Grid Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | center | 内容对齐方式。可选项:left/center | N
+border | Boolean / Object | false | 边框,默认不显示。值为 true 则显示默认边框,值类型为 object 则表示自定义边框样式。TS 类型:`boolean \| { color?: string; width?: string; style?: 'solid' \| 'dashed' \| 'dotted' \| 'double' \| 'groove' \| 'inset' \| 'outset' }` | N
+column | Number | 4 | 每一行的列数量;为 0 时等于固定大小 | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class']` | N
+gutter | Number | - | 间隔大小 | N
+hover | Boolean | false | 是否开启点击反馈 | N
+theme | String | default | 宫格的风格。可选项:default/card | N
+
+### GridItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | null | 透传至 Badge 属性。TS 类型:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/grid-item/type.ts) | N
+description | String / Slot | - | 文本以外的更多描述,辅助信息。可以通过 Props 传入文本,也可以自定义标题节点 | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、图片、文本、描述等元素类名。`['t-class', 't-class-image', 't-class-text', 't-class-description']` | N
+icon | String / Object | - | 图标名称。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon` | N
+image | String / Slot | - | 图片,可以是图片地址,也可以自定义图片节点,值为 slot 的时候才能使用插槽 | N
+image-props | Object | - | 透传至 Image 组件 | N
+jump-type | String | navigate-to | 链接跳转类型。可选项:redirect-to/switch-tab/relaunch/navigate-to | N
+layout | String | vertical | 内容布局方式。可选项:vertical/horizontal | N
+text | String / Slot | - | 文本,可以通过 Props 传入文本,也可以自定义标题节点 | N
+url | String | - | 点击后的跳转链接 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/grid.d.ts b/miniprogram_npm/tdesign-miniprogram/grid/grid.d.ts
new file mode 100644
index 0000000..298f660
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/grid.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Grid extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ properties: import("./type").TdGridProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ contentStyle: string;
+ };
+ observers: {
+ 'column,hover,align'(): void;
+ 'gutter,border'(): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ doForChild(action: (item: WechatMiniprogram.Component.TrivialInstance) => void): void;
+ updateContentStyle(): void;
+ getContentMargin(): string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/grid.js b/miniprogram_npm/tdesign-miniprogram/grid/grid.js
new file mode 100644
index 0000000..042b7a5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/grid.js
@@ -0,0 +1,69 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { isObject, SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-grid`;
+let Grid = class Grid extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = ['t-class'];
+ this.relations = {
+ '../grid-item/grid-item': {
+ type: 'descendant',
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ contentStyle: '',
+ };
+ this.observers = {
+ 'column,hover,align'() {
+ this.updateContentStyle();
+ },
+ 'gutter,border'() {
+ this.updateContentStyle();
+ this.doForChild((child) => child.updateStyle());
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.updateContentStyle();
+ },
+ };
+ this.methods = {
+ doForChild(action) {
+ this.$children.forEach(action);
+ },
+ updateContentStyle() {
+ const contentStyles = [];
+ const marginStyle = this.getContentMargin();
+ marginStyle && contentStyles.push(marginStyle);
+ this.setData({
+ contentStyle: contentStyles.join(';'),
+ });
+ },
+ getContentMargin() {
+ const { gutter } = this.properties;
+ let { border } = this.properties;
+ if (!border)
+ return `margin-left:-${gutter}rpx; margin-top:-${gutter}rpx`;
+ if (!isObject(border))
+ border = {};
+ const { width = 2 } = border;
+ return `margin-left:-${width}rpx; margin-top:-${width}rpx`;
+ },
+ };
+ }
+};
+Grid = __decorate([
+ wxComponent()
+], Grid);
+export default Grid;
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/grid.json b/miniprogram_npm/tdesign-miniprogram/grid/grid.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/grid.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/grid.wxml b/miniprogram_npm/tdesign-miniprogram/grid/grid.wxml
new file mode 100644
index 0000000..d497d7c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/grid.wxml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/grid.wxss b/miniprogram_npm/tdesign-miniprogram/grid/grid.wxss
new file mode 100644
index 0000000..a3ae3c3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/grid.wxss
@@ -0,0 +1,40 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-grid {
+ position: relative;
+ overflow: hidden;
+ background-color: var(--td-grid-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-grid__content {
+ width: auto;
+}
+.t-grid--card {
+ margin: 0 32rpx;
+ border-radius: var(--td-grid-card-radius, var(--td-radius-large, 18rpx));
+ overflow: hidden;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/props.d.ts b/miniprogram_npm/tdesign-miniprogram/grid/props.d.ts
new file mode 100644
index 0000000..f8f2feb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/props.d.ts
@@ -0,0 +1,3 @@
+import { TdGridProps } from './type';
+declare const props: TdGridProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/props.js b/miniprogram_npm/tdesign-miniprogram/grid/props.js
new file mode 100644
index 0000000..3285984
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/props.js
@@ -0,0 +1,29 @@
+const props = {
+ align: {
+ type: String,
+ value: 'center',
+ },
+ border: {
+ type: null,
+ value: false,
+ },
+ column: {
+ type: Number,
+ value: 4,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ gutter: {
+ type: Number,
+ },
+ hover: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/type.d.ts b/miniprogram_npm/tdesign-miniprogram/grid/type.d.ts
new file mode 100644
index 0000000..7bd826c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdGridProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'left' | 'center';
+ };
+ border?: {
+ type: null;
+ value?: boolean | {
+ color?: string;
+ width?: string;
+ style?: 'solid' | 'dashed' | 'dotted' | 'double' | 'groove' | 'inset' | 'outset';
+ };
+ };
+ column?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ gutter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ hover?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'card';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/grid/type.js b/miniprogram_npm/tdesign-miniprogram/grid/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/grid/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/README.md b/miniprogram_npm/tdesign-miniprogram/icon/README.md
new file mode 100644
index 0000000..1a77bf7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/README.md
@@ -0,0 +1,101 @@
+---
+title: Icon 图标
+description: 图标。
+spline: base
+isComponent: true
+---
+
+


+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-icon": "tdesign-miniprogram/icon/icon"
+}
+```
+
+## 常见问题
+
+
+
+ 控制台告警:Faild to load font
+ 👇
+
+
+ 告警属于开发者工具的 bug,可以忽略,具体可以看 官网文档
+
+
+
+## 代码演示
+
+### 基础组件图标
+
+{{ base }}
+
+### 自定义组件图标
+
+{{ custom }}
+
+自定义图标用法,下面以 `iconfont` 为例
+
+#### 准备图标文件
+
+文件后缀应为`.wxss`,如下方代码块所示:
+
+```css
+@font-face {
+ font-family: 'icon'; // 使用自定义的字体名称
+ ···
+}
+
+.icon {
+ font-family: 'icon' !important; // 字体名称
+ ···
+}
+
+.icon-a-0:before { // icon 图标。注意 FontClass 前缀与 font-family 保持一致
+ content: '\e64d';
+}
+```
+- 添加所需图标,下载图标。图标库一般会提供 **在线链接** 或者 **下载至本地** 等使用方式。**在线链接** 方式会指向一个 `.css` 文件,可以下载或复制其内容,将其修改成后缀名为 `.wxss` 的文件
+- 将 `.wxss` 文件中的 `FontClass/Symbol前缀` 与 `Font Family` 两项内容保持一致,如: `FontClass/Symbol` 前缀为 `icon-`,则 `Font Family` 为 `icon`。
+
+> 注:若是采用 `下载至本地` 方式,需关注 `.css` 和 `.ttf` 文件。由于微信小程序不支持处理 `ttf、woff、eot` 等文件,但支持 `base64`,所以需要将 `.ttf` 文件转换为 `base64` (可借助转换工具,如 [transfonter.org](https://transfonter.org/),会得到一个 `stylesheet.css` 文件),然后将 `.css` 文件中的 `@font-face {}` 内容替换为 `stylesheet.css` 中的 `base64` 内容,最后将 `.css` 文件修改后缀为 `.wxss`
+
+#### 引入自定义图标
+
+- 全局引入:在项目 `app.wxss`,使用 `@import` 引入上述的 `.wxss` 文件
+- 局部引入:在 `page` 对应的 `.wxss` 中,使用 `@import` 引入上述的 `.wxss` 文件
+
+#### 自定义图标的使用
+
+ `` 组件中的 `prefix` 属性值与前面设置的 `Font Family` 保持一致,即 `prefix="icon"`,`name` 属性值为自定义图标名称,如图标的 `className` 为 `icon-a-1h`,则 `name="a-1h"`。
+
+### 图片链接
+
+{{ iconImage }}
+
+### 全部图标
+
+
+
+## API
+
+#### Props
+
+| 属性 | 值类型 | 默认值 | 必传 | 说明 |
+| ----------- | -------- | ---------- | ---- |----------------------------------------------------------------- |
+| name | String | - | Y | 图标名称或图片链接 |
+| size | String | - | N | 图标大小, 如 `20`, `20px`, `48rpx`, 默认单位是 `px` |
+| color | String | - | N | 图标颜色 |
+| prefix | String | - | N | 自定义图标前缀 |
+| external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、图片图标、基础图标等元素类名。`['t-class']` | N
+
+#### Events
+
+| 事件 | 参数 | 说明 |
+| ---------- | ------------ | -------------- |
+| click | \- | 点击图标时触发 |
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/icon.d.ts b/miniprogram_npm/tdesign-miniprogram/icon/icon.d.ts
new file mode 100644
index 0000000..b70696a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/icon.d.ts
@@ -0,0 +1,18 @@
+import { SuperComponent } from '../common/src/index';
+export default class Icon extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdIconProps;
+ data: {
+ componentPrefix: string;
+ classPrefix: string;
+ isImage: boolean;
+ iconStyle: any;
+ };
+ observers: {
+ 'name, color, size, style'(): void;
+ };
+ methods: {
+ onTap(event: any): void;
+ setIconStyle(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/icon.js b/miniprogram_npm/tdesign-miniprogram/icon/icon.js
new file mode 100644
index 0000000..45f782c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/icon.js
@@ -0,0 +1,51 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { styles, addUnit } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-icon`;
+let Icon = class Icon extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ componentPrefix: prefix,
+ classPrefix: name,
+ isImage: false,
+ iconStyle: undefined,
+ };
+ this.observers = {
+ 'name, color, size, style'() {
+ this.setIconStyle();
+ },
+ };
+ this.methods = {
+ onTap(event) {
+ this.triggerEvent('click', event.detail);
+ },
+ setIconStyle() {
+ const { name, color, size } = this.properties;
+ const isImage = name.indexOf('/') !== -1;
+ const sizeValue = addUnit(size);
+ const sizeStyle = isImage ? { width: sizeValue, height: sizeValue } : {};
+ const colorStyle = color ? { color: color } : {};
+ const fontStyle = size ? { 'font-size': sizeValue } : {};
+ this.setData({
+ isImage,
+ iconStyle: `${styles(Object.assign(Object.assign(Object.assign({}, colorStyle), fontStyle), sizeStyle))}`,
+ });
+ },
+ };
+ }
+};
+Icon = __decorate([
+ wxComponent()
+], Icon);
+export default Icon;
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/icon.json b/miniprogram_npm/tdesign-miniprogram/icon/icon.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/icon.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/icon.wxml b/miniprogram_npm/tdesign-miniprogram/icon/icon.wxml
new file mode 100644
index 0000000..9146939
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/icon.wxml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/icon.wxss b/miniprogram_npm/tdesign-miniprogram/icon/icon.wxss
new file mode 100644
index 0000000..9b6c865
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/icon.wxss
@@ -0,0 +1,770 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+@font-face {
+ font-family: t;
+ src: url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.eot'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.eot?#iefix') format('ded-opentype'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.woff') format('woff'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.ttf') format('truetype'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.svg') format('svg');
+ /* iOS 4.1- */
+ font-weight: normal;
+ font-style: normal;
+}
+.t-icon--image {
+ width: 1em;
+ height: 1em;
+}
+.t-icon__image {
+ vertical-align: top;
+ width: 100%;
+ height: 100%;
+}
+.t-icon-base {
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ text-align: center;
+ display: block;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.t-icon {
+ /* stylelint-disable-next-line declaration-no-important */
+ font-family: t !important;
+ /* prevent issues with browser extensions that change fonts */
+}
+.t-icon-add-circle:before {
+ content: '\E001';
+}
+.t-icon-add-rectangle:before {
+ content: '\E002';
+}
+.t-icon-add:before {
+ content: '\E003';
+}
+.t-icon-app:before {
+ content: '\E004';
+}
+.t-icon-arrow-down-rectangle:before {
+ content: '\E005';
+}
+.t-icon-arrow-down:before {
+ content: '\E006';
+}
+.t-icon-arrow-left:before {
+ content: '\E007';
+}
+.t-icon-arrow-right:before {
+ content: '\E008';
+}
+.t-icon-arrow-up:before {
+ content: '\E009';
+}
+.t-icon-attach:before {
+ content: '\E00A';
+}
+.t-icon-backtop-rectangle:before {
+ content: '\E00B';
+}
+.t-icon-backtop:before {
+ content: '\E00C';
+}
+.t-icon-backward:before {
+ content: '\E00D';
+}
+.t-icon-barcode:before {
+ content: '\E00E';
+}
+.t-icon-books:before {
+ content: '\E00F';
+}
+.t-icon-browse-off:before {
+ content: '\E010';
+}
+.t-icon-browse:before {
+ content: '\E011';
+}
+.t-icon-bulletpoint:before {
+ content: '\E012';
+}
+.t-icon-calendar:before {
+ content: '\E013';
+}
+.t-icon-call:before {
+ content: '\E014';
+}
+.t-icon-caret-down-small:before {
+ content: '\E015';
+}
+.t-icon-caret-down:before {
+ content: '\E016';
+}
+.t-icon-caret-left-small:before {
+ content: '\E017';
+}
+.t-icon-caret-left:before {
+ content: '\E018';
+}
+.t-icon-caret-right-small:before {
+ content: '\E019';
+}
+.t-icon-caret-right:before {
+ content: '\E01A';
+}
+.t-icon-caret-up-small:before {
+ content: '\E01B';
+}
+.t-icon-caret-up:before {
+ content: '\E01C';
+}
+.t-icon-cart:before {
+ content: '\E01D';
+}
+.t-icon-chart-bar:before {
+ content: '\E01E';
+}
+.t-icon-chart-bubble:before {
+ content: '\E01F';
+}
+.t-icon-chart-pie:before {
+ content: '\E020';
+}
+.t-icon-chart:before {
+ content: '\E021';
+}
+.t-icon-chat:before {
+ content: '\E022';
+}
+.t-icon-check-circle-filled:before {
+ content: '\E023';
+}
+.t-icon-check-circle:before {
+ content: '\E024';
+}
+.t-icon-check-rectangle-filled:before {
+ content: '\E025';
+}
+.t-icon-check-rectangle:before {
+ content: '\E026';
+}
+.t-icon-check:before {
+ content: '\E027';
+}
+.t-icon-chevron-down-circle:before {
+ content: '\E028';
+}
+.t-icon-chevron-down-rectangle:before {
+ content: '\E029';
+}
+.t-icon-chevron-down:before {
+ content: '\E02A';
+}
+.t-icon-chevron-left-circle:before {
+ content: '\E02B';
+}
+.t-icon-chevron-left-double:before {
+ content: '\E02C';
+}
+.t-icon-chevron-left-rectangle:before {
+ content: '\E02D';
+}
+.t-icon-chevron-left:before {
+ content: '\E02E';
+}
+.t-icon-chevron-right-circle:before {
+ content: '\E02F';
+}
+.t-icon-chevron-right-double:before {
+ content: '\E030';
+}
+.t-icon-chevron-right-rectangle:before {
+ content: '\E031';
+}
+.t-icon-chevron-right:before {
+ content: '\E032';
+}
+.t-icon-chevron-up-circle:before {
+ content: '\E033';
+}
+.t-icon-chevron-up-rectangle:before {
+ content: '\E034';
+}
+.t-icon-chevron-up:before {
+ content: '\E035';
+}
+.t-icon-circle:before {
+ content: '\E036';
+}
+.t-icon-clear:before {
+ content: '\E037';
+}
+.t-icon-close-circle-filled:before {
+ content: '\E038';
+}
+.t-icon-close-circle:before {
+ content: '\E039';
+}
+.t-icon-close-rectangle:before {
+ content: '\E03A';
+}
+.t-icon-close:before {
+ content: '\E03B';
+}
+.t-icon-cloud-download:before {
+ content: '\E03C';
+}
+.t-icon-cloud-upload:before {
+ content: '\E03D';
+}
+.t-icon-cloud:before {
+ content: '\E03E';
+}
+.t-icon-code:before {
+ content: '\E03F';
+}
+.t-icon-control-platform:before {
+ content: '\E040';
+}
+.t-icon-creditcard:before {
+ content: '\E041';
+}
+.t-icon-dashboard:before {
+ content: '\E042';
+}
+.t-icon-delete:before {
+ content: '\E043';
+}
+.t-icon-desktop:before {
+ content: '\E044';
+}
+.t-icon-discount-filled:before {
+ content: '\E045';
+}
+.t-icon-discount:before {
+ content: '\E046';
+}
+.t-icon-download:before {
+ content: '\E047';
+}
+.t-icon-edit-1:before {
+ content: '\E048';
+}
+.t-icon-edit:before {
+ content: '\E049';
+}
+.t-icon-ellipsis:before {
+ content: '\E04A';
+}
+.t-icon-enter:before {
+ content: '\E04B';
+}
+.t-icon-error-circle-filled:before {
+ content: '\E04C';
+}
+.t-icon-error-circle:before {
+ content: '\E04D';
+}
+.t-icon-error:before {
+ content: '\E04E';
+}
+.t-icon-file-add:before {
+ content: '\E04F';
+}
+.t-icon-file-copy:before {
+ content: '\E050';
+}
+.t-icon-file-excel:before {
+ content: '\E051';
+}
+.t-icon-file-icon:before {
+ content: '\E052';
+}
+.t-icon-file-image:before {
+ content: '\E053';
+}
+.t-icon-file-paste:before {
+ content: '\E054';
+}
+.t-icon-file-pdf:before {
+ content: '\E055';
+}
+.t-icon-file-powerpoint:before {
+ content: '\E056';
+}
+.t-icon-file-unknown:before {
+ content: '\E057';
+}
+.t-icon-file-word:before {
+ content: '\E058';
+}
+.t-icon-file:before {
+ content: '\E059';
+}
+.t-icon-filter-clear:before {
+ content: '\E05A';
+}
+.t-icon-filter:before {
+ content: '\E05B';
+}
+.t-icon-flag:before {
+ content: '\E05C';
+}
+.t-icon-folder-add:before {
+ content: '\E05D';
+}
+.t-icon-folder-open:before {
+ content: '\E05E';
+}
+.t-icon-folder:before {
+ content: '\E05F';
+}
+.t-icon-fork:before {
+ content: '\E060';
+}
+.t-icon-format-horizontal-align-bottom:before {
+ content: '\E061';
+}
+.t-icon-format-horizontal-align-center:before {
+ content: '\E062';
+}
+.t-icon-format-horizontal-align-top:before {
+ content: '\E063';
+}
+.t-icon-format-vertical-align-center:before {
+ content: '\E064';
+}
+.t-icon-format-vertical-align-left:before {
+ content: '\E065';
+}
+.t-icon-format-vertical-align-right:before {
+ content: '\E066';
+}
+.t-icon-forward:before {
+ content: '\E067';
+}
+.t-icon-fullscreen-exit:before {
+ content: '\E068';
+}
+.t-icon-fullscreen:before {
+ content: '\E069';
+}
+.t-icon-gender-female:before {
+ content: '\E06A';
+}
+.t-icon-gender-male:before {
+ content: '\E06B';
+}
+.t-icon-gift:before {
+ content: '\E06C';
+}
+.t-icon-heart-filled:before {
+ content: '\E06D';
+}
+.t-icon-heart:before {
+ content: '\E06E';
+}
+.t-icon-help-circle-filled:before {
+ content: '\E06F';
+}
+.t-icon-help-circle:before {
+ content: '\E070';
+}
+.t-icon-help:before {
+ content: '\E071';
+}
+.t-icon-history:before {
+ content: '\E072';
+}
+.t-icon-home:before {
+ content: '\E073';
+}
+.t-icon-hourglass:before {
+ content: '\E074';
+}
+.t-icon-image-error:before {
+ content: '\E075';
+}
+.t-icon-image:before {
+ content: '\E076';
+}
+.t-icon-info-circle-filled:before {
+ content: '\E077';
+}
+.t-icon-info-circle:before {
+ content: '\E078';
+}
+.t-icon-internet:before {
+ content: '\E079';
+}
+.t-icon-jump:before {
+ content: '\E07A';
+}
+.t-icon-laptop:before {
+ content: '\E07B';
+}
+.t-icon-layers:before {
+ content: '\E07C';
+}
+.t-icon-link-unlink:before {
+ content: '\E07D';
+}
+.t-icon-link:before {
+ content: '\E07E';
+}
+.t-icon-loading:before {
+ content: '\E07F';
+}
+.t-icon-location:before {
+ content: '\E080';
+}
+.t-icon-lock-off:before {
+ content: '\E081';
+}
+.t-icon-lock-on:before {
+ content: '\E082';
+}
+.t-icon-login:before {
+ content: '\E083';
+}
+.t-icon-logo-android:before {
+ content: '\E084';
+}
+.t-icon-logo-apple-filled:before {
+ content: '\E085';
+}
+.t-icon-logo-apple:before {
+ content: '\E086';
+}
+.t-icon-logo-chrome-filled:before {
+ content: '\E087';
+}
+.t-icon-logo-chrome:before {
+ content: '\E088';
+}
+.t-icon-logo-codepen:before {
+ content: '\E089';
+}
+.t-icon-logo-github-filled:before {
+ content: '\E08A';
+}
+.t-icon-logo-github:before {
+ content: '\E08B';
+}
+.t-icon-logo-ie-filled:before {
+ content: '\E08C';
+}
+.t-icon-logo-ie:before {
+ content: '\E08D';
+}
+.t-icon-logo-qq:before {
+ content: '\E08E';
+}
+.t-icon-logo-wechat:before {
+ content: '\E08F';
+}
+.t-icon-logo-wecom:before {
+ content: '\E090';
+}
+.t-icon-logo-windows-filled:before {
+ content: '\E091';
+}
+.t-icon-logo-windows:before {
+ content: '\E092';
+}
+.t-icon-logout:before {
+ content: '\E093';
+}
+.t-icon-mail:before {
+ content: '\E094';
+}
+.t-icon-menu-fold:before {
+ content: '\E095';
+}
+.t-icon-menu-unfold:before {
+ content: '\E096';
+}
+.t-icon-minus-circle-filled:before {
+ content: '\E097';
+}
+.t-icon-minus-circle:before {
+ content: '\E098';
+}
+.t-icon-minus-rectangle:before {
+ content: '\E099';
+}
+.t-icon-mirror:before {
+ content: '\E09A';
+}
+.t-icon-mobile-vibrate:before {
+ content: '\E09B';
+}
+.t-icon-mobile:before {
+ content: '\E09C';
+}
+.t-icon-money-circle:before {
+ content: '\E09D';
+}
+.t-icon-more:before {
+ content: '\E09E';
+}
+.t-icon-move:before {
+ content: '\E09F';
+}
+.t-icon-next:before {
+ content: '\E0A0';
+}
+.t-icon-notification-filled:before {
+ content: '\E0A1';
+}
+.t-icon-notification:before {
+ content: '\E0A2';
+}
+.t-icon-order-adjustment-column:before {
+ content: '\E0A3';
+}
+.t-icon-order-ascending:before {
+ content: '\E0A4';
+}
+.t-icon-order-descending:before {
+ content: '\E0A5';
+}
+.t-icon-page-first:before {
+ content: '\E0A6';
+}
+.t-icon-page-last:before {
+ content: '\E0A7';
+}
+.t-icon-pause-circle-filled:before {
+ content: '\E0A8';
+}
+.t-icon-photo:before {
+ content: '\E0A9';
+}
+.t-icon-pin-filled:before {
+ content: '\E0AA';
+}
+.t-icon-pin:before {
+ content: '\E0AB';
+}
+.t-icon-play-circle-filled:before {
+ content: '\E0AC';
+}
+.t-icon-play-circle-stroke:before {
+ content: '\E0AD';
+}
+.t-icon-play-circle:before {
+ content: '\E0AE';
+}
+.t-icon-play:before {
+ content: '\E0AF';
+}
+.t-icon-poweroff:before {
+ content: '\E0B0';
+}
+.t-icon-precise-monitor:before {
+ content: '\E0B1';
+}
+.t-icon-previous:before {
+ content: '\E0B2';
+}
+.t-icon-print:before {
+ content: '\E0B3';
+}
+.t-icon-qrcode:before {
+ content: '\E0B4';
+}
+.t-icon-queue:before {
+ content: '\E0B5';
+}
+.t-icon-rectangle:before {
+ content: '\E0B6';
+}
+.t-icon-refresh:before {
+ content: '\E0B7';
+}
+.t-icon-relativity:before {
+ content: '\E0B8';
+}
+.t-icon-remove:before {
+ content: '\E0B9';
+}
+.t-icon-rollback:before {
+ content: '\E0BA';
+}
+.t-icon-rollfront:before {
+ content: '\E0BB';
+}
+.t-icon-root-list:before {
+ content: '\E0BC';
+}
+.t-icon-rotation:before {
+ content: '\E0BD';
+}
+.t-icon-round:before {
+ content: '\E0BE';
+}
+.t-icon-save:before {
+ content: '\E0BF';
+}
+.t-icon-scan:before {
+ content: '\E0C0';
+}
+.t-icon-search:before {
+ content: '\E0C1';
+}
+.t-icon-secured:before {
+ content: '\E0C2';
+}
+.t-icon-server:before {
+ content: '\E0C3';
+}
+.t-icon-service:before {
+ content: '\E0C4';
+}
+.t-icon-setting:before {
+ content: '\E0C5';
+}
+.t-icon-share:before {
+ content: '\E0C6';
+}
+.t-icon-shop:before {
+ content: '\E0C7';
+}
+.t-icon-slash:before {
+ content: '\E0C8';
+}
+.t-icon-sound:before {
+ content: '\E0C9';
+}
+.t-icon-star-filled:before {
+ content: '\E0CA';
+}
+.t-icon-star:before {
+ content: '\E0CB';
+}
+.t-icon-stop-circle-1:before {
+ content: '\E0CC';
+}
+.t-icon-stop-circle-filled:before {
+ content: '\E0CD';
+}
+.t-icon-stop-circle:before {
+ content: '\E0CE';
+}
+.t-icon-stop:before {
+ content: '\E0CF';
+}
+.t-icon-swap-left:before {
+ content: '\E0D0';
+}
+.t-icon-swap-right:before {
+ content: '\E0D1';
+}
+.t-icon-swap:before {
+ content: '\E0D2';
+}
+.t-icon-thumb-down:before {
+ content: '\E0D3';
+}
+.t-icon-thumb-up:before {
+ content: '\E0D4';
+}
+.t-icon-time-filled:before {
+ content: '\E0D5';
+}
+.t-icon-time:before {
+ content: '\E0D6';
+}
+.t-icon-tips:before {
+ content: '\E0D7';
+}
+.t-icon-tools:before {
+ content: '\E0D8';
+}
+.t-icon-unfold-less:before {
+ content: '\E0D9';
+}
+.t-icon-unfold-more:before {
+ content: '\E0DA';
+}
+.t-icon-upload:before {
+ content: '\E0DB';
+}
+.t-icon-usb:before {
+ content: '\E0DC';
+}
+.t-icon-user-add:before {
+ content: '\E0DD';
+}
+.t-icon-user-avatar:before {
+ content: '\E0DE';
+}
+.t-icon-user-circle:before {
+ content: '\E0DF';
+}
+.t-icon-user-clear:before {
+ content: '\E0E0';
+}
+.t-icon-user-talk:before {
+ content: '\E0E1';
+}
+.t-icon-user:before {
+ content: '\E0E2';
+}
+.t-icon-usergroup-add:before {
+ content: '\E0E3';
+}
+.t-icon-usergroup-clear:before {
+ content: '\E0E4';
+}
+.t-icon-usergroup:before {
+ content: '\E0E5';
+}
+.t-icon-video:before {
+ content: '\E0E6';
+}
+.t-icon-view-column:before {
+ content: '\E0E7';
+}
+.t-icon-view-list:before {
+ content: '\E0E8';
+}
+.t-icon-view-module:before {
+ content: '\E0E9';
+}
+.t-icon-wallet:before {
+ content: '\E0EA';
+}
+.t-icon-wifi:before {
+ content: '\E0EB';
+}
+.t-icon-zoom-in:before {
+ content: '\E0EC';
+}
+.t-icon-zoom-out:before {
+ content: '\E0ED';
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/props.d.ts b/miniprogram_npm/tdesign-miniprogram/icon/props.d.ts
new file mode 100644
index 0000000..a472c01
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/props.d.ts
@@ -0,0 +1,3 @@
+import { TdIconProps } from './type';
+declare const props: TdIconProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/props.js b/miniprogram_npm/tdesign-miniprogram/icon/props.js
new file mode 100644
index 0000000..51a5fd6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/props.js
@@ -0,0 +1,20 @@
+const props = {
+ color: {
+ type: String,
+ value: '',
+ },
+ name: {
+ type: String,
+ value: '',
+ required: true,
+ },
+ size: {
+ type: String,
+ value: '',
+ },
+ prefix: {
+ type: String,
+ value: undefined,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/type.d.ts b/miniprogram_npm/tdesign-miniprogram/icon/type.d.ts
new file mode 100644
index 0000000..5b7da04
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/type.d.ts
@@ -0,0 +1,27 @@
+export interface TdIconProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ color?: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ name: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ prefix?: {
+ type: StringConstructor;
+ value?: string;
+ reuqired?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/icon/type.js b/miniprogram_npm/tdesign-miniprogram/icon/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/icon/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/README.md b/miniprogram_npm/tdesign-miniprogram/image-viewer/README.md
new file mode 100644
index 0000000..44a10a9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/README.md
@@ -0,0 +1,63 @@
+---
+title: ImageViewer 图片预览
+description: 图片全屏放大预览效果,包含全屏背景色、页码位置样式、增加操作等规范。
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.10.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-image-viewer": "tdesign-miniprogram/image-viewer/image-viewer",
+}
+```
+
+## 代码演示
+
+### 类型
+
+基础图片预览
+
+{{ base }}
+
+带操作图片预览
+
+{{ delete }}
+
+
+## API
+
+### ImageViewer Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+background-color | String / Number | rgba(0, 0, 0, 1) | 遮罩的背景颜色 | N
+images | Array | [] | 图片数组。TS 类型:`Array` | N
+initial-index | Number | 0 | 默认展示第几项 | N
+show-index | Boolean | false | 是否显示页码 | N
+delete-btn | Boolean / String / Object / Slot | false | 是否显示删除操作,前提需要开启页码。值为字符串表示图标名称,值为 `true` 表示使用默认图标 `delete`,值为 `Object` 类型,表示透传至 `icon`,不传表示不显示图标。 | N
+close-btn | Boolean / String / Object / Slot | false | 是否显示关闭操作,前提需要开启页码。值为字符串表示图标名称,值为 `true` 表示使用默认图标 `close`,值为 `Object` 类型,表示透传至 `icon` ,不传表示不显示图标。 | N
+visible | Boolean | false | 隐藏/显示预览 | N
+default-visible | Boolean | undefined | 隐藏/显示预览。非受控属性 | N
+
+
+### ImageViewer Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(index: Number)` | 翻页时回调
+close | `(trigger: 'overlay' \| 'button' , visible: Boolean, index: Number)` | 点击操作按钮button或者overlay时触发
+delete | `(index: Number)` | 点击删除操作按钮时触发
+
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.d.ts b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.d.ts
new file mode 100644
index 0000000..9d2b00d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.d.ts
@@ -0,0 +1,87 @@
+import { SuperComponent } from '../common/src/index';
+export default class ImageViewer extends SuperComponent {
+ externalClasses: string[];
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ backgroundColor?: {
+ type: StringConstructor;
+ optionalTypes: NumberConstructor[];
+ value?: string | number;
+ };
+ images?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ initialIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ showIndex?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ deleteBtn?: {
+ type: null;
+ value?: string | boolean | object;
+ };
+ closeBtn?: {
+ type: null;
+ value?: string | boolean | object;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ currentSwiperIndex: number;
+ windowHeight: number;
+ windowWidth: number;
+ swiperStyle: {};
+ imagesStyle: {};
+ };
+ options: {
+ multipleSlots: boolean;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ ready(): void;
+ observers: {
+ visible(value: any): void;
+ closeBtn(v: any): void;
+ deleteBtn(v: any): void;
+ };
+ methods: {
+ saveScreenSize(): void;
+ calcImageDisplayStyle(imageWidth: any, imageHeight: any): {
+ styleObj: {
+ width: string;
+ height: string;
+ left: string;
+ transform: string;
+ };
+ } | {
+ styleObj: {
+ width: string;
+ height: string;
+ left?: undefined;
+ transform?: undefined;
+ };
+ };
+ onImageLoadSuccess(e: WechatMiniprogram.TouchEvent): void;
+ onSwiperChange(e: WechatMiniprogram.TouchEvent): void;
+ onClose(e: any): void;
+ onDelete(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.js b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.js
new file mode 100644
index 0000000..dacb880
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.js
@@ -0,0 +1,129 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { styles, calcIcon } from '../common/utils';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-image-viewer`;
+let ImageViewer = class ImageViewer extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ currentSwiperIndex: 0,
+ windowHeight: 0,
+ windowWidth: 0,
+ swiperStyle: {},
+ imagesStyle: {},
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.controlledProps = [
+ {
+ key: 'visible',
+ event: 'close',
+ },
+ ];
+ this.observers = {
+ visible(value) {
+ this.setData({
+ currentSwiperIndex: value ? this.properties.initialIndex : 0,
+ });
+ },
+ closeBtn(v) {
+ this.setData({
+ _closeBtn: calcIcon(v, 'close'),
+ });
+ },
+ deleteBtn(v) {
+ this.setData({
+ _deleteBtn: calcIcon(v, 'delete'),
+ });
+ },
+ };
+ this.methods = {
+ saveScreenSize() {
+ const { windowHeight, windowWidth } = wx.getSystemInfoSync();
+ this.setData({
+ windowHeight,
+ windowWidth,
+ });
+ },
+ calcImageDisplayStyle(imageWidth, imageHeight) {
+ const { windowWidth, windowHeight } = this.data;
+ const ratio = imageWidth / imageHeight;
+ if (imageWidth < windowWidth && imageHeight < windowHeight) {
+ return {
+ styleObj: {
+ width: `${imageWidth * 2}rpx`,
+ height: `${imageHeight * 2}rpx`,
+ left: '50%',
+ transform: 'translate(-50%, -50%)',
+ },
+ };
+ }
+ if (ratio >= 1) {
+ return {
+ styleObj: {
+ width: '100vw',
+ height: `${(windowWidth / ratio) * 2}rpx`,
+ },
+ };
+ }
+ return {
+ styleObj: {
+ width: `${ratio * windowHeight * 2}rpx`,
+ height: '100vh',
+ left: '50%',
+ transform: 'translate(-50%, -50%)',
+ },
+ };
+ },
+ onImageLoadSuccess(e) {
+ const { detail: { width, height }, currentTarget: { dataset: { index }, }, } = e;
+ const { mode, styleObj } = this.calcImageDisplayStyle(width, height);
+ const originImagesStyle = this.data.imagesStyle;
+ const originSwiperStyle = this.data.swiperStyle;
+ this.setData({
+ swiperStyle: Object.assign(Object.assign({}, originSwiperStyle), { [index]: {
+ style: `height: ${styleObj.height}`,
+ } }),
+ imagesStyle: Object.assign(Object.assign({}, originImagesStyle), { [index]: {
+ mode,
+ style: styles(Object.assign({}, styleObj)),
+ } }),
+ });
+ },
+ onSwiperChange(e) {
+ const { detail: { current }, } = e;
+ this.setData({
+ currentSwiperIndex: current,
+ });
+ this._trigger('change', { index: current });
+ },
+ onClose(e) {
+ const { source } = e.currentTarget.dataset;
+ this._trigger('close', { visible: false, trigger: source || 'button', index: this.data.currentSwiperIndex });
+ },
+ onDelete() {
+ this._trigger('delete', { index: this.data.currentSwiperIndex });
+ },
+ };
+ }
+ ready() {
+ this.saveScreenSize();
+ }
+};
+ImageViewer = __decorate([
+ wxComponent()
+], ImageViewer);
+export default ImageViewer;
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.json b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.json
new file mode 100644
index 0000000..6fb7873
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-image": "../image/image",
+ "t-icon": "../icon/icon",
+ "t-swiper": "../swiper/swiper"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.wxml b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.wxml
new file mode 100644
index 0000000..4379fd5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.wxml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{currentSwiperIndex + 1}}/{{images.length}}
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.wxss b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.wxss
new file mode 100644
index 0000000..dc2aef8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/image-viewer.wxss
@@ -0,0 +1,99 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-image-viewer {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ z-index: 1001;
+ height: 100%;
+ transform: translateZ(0);
+ overflow: hidden;
+}
+.t-image-viewer__mask {
+ position: fixed;
+ z-index: 1000;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+.t-image-viewer__content {
+ width: 100vw;
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 1005;
+}
+.t-image-viewer__image {
+ width: 100%;
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-image-viewer .t-image--external {
+ width: inherit;
+ height: inherit;
+ display: block;
+}
+.t-image-viewer__nav {
+ width: 100%;
+ position: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: var(--td-image-viewer-nav-height, 96rpx);
+ background-color: var(--td-image-viewer-nav-bg-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ left: 0;
+ color: var(--td-image-viewer-nav-color, var(--td-font-white-1, #ffffff));
+ z-index: 1005;
+}
+.t-image-viewer__nav-close {
+ margin-left: var(--td-image-viewer-close-margin-left, var(--td-spacer-1, 24rpx));
+}
+.t-image-viewer__nav-close:empty {
+ display: none;
+}
+.t-image-viewer__nav-delete {
+ margin-right: var(--td-image-viewer-delete-margin-right, var(--td-spacer-1, 24rpx));
+}
+.t-image-viewer__nav-delete:empty {
+ display: none;
+}
+.t-image-viewer__nav-close,
+.t-image-viewer__nav-delete {
+ font-size: 48rpx;
+}
+.t-image-viewer__nav-index {
+ flex: 1;
+ font-size: var(--td-image-viewer-nav-index-font-size, var(--td-font-size-base, 28rpx));
+ text-align: center;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/props.d.ts b/miniprogram_npm/tdesign-miniprogram/image-viewer/props.d.ts
new file mode 100644
index 0000000..9fec1e1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/props.d.ts
@@ -0,0 +1,3 @@
+import { TdImageViewerProps } from './type';
+declare const props: TdImageViewerProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/props.js b/miniprogram_npm/tdesign-miniprogram/image-viewer/props.js
new file mode 100644
index 0000000..a1dbeb9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/props.js
@@ -0,0 +1,36 @@
+const props = {
+ backgroundColor: {
+ type: String,
+ optionalTypes: [Number],
+ value: 'rgba(0, 0, 0, 1)',
+ },
+ images: {
+ type: Array,
+ value: [],
+ },
+ initialIndex: {
+ type: Number,
+ value: 0,
+ },
+ showIndex: {
+ type: Boolean,
+ value: false,
+ },
+ deleteBtn: {
+ type: null,
+ value: false,
+ },
+ closeBtn: {
+ type: null,
+ value: false,
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/type.d.ts b/miniprogram_npm/tdesign-miniprogram/image-viewer/type.d.ts
new file mode 100644
index 0000000..35244b3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/type.d.ts
@@ -0,0 +1,39 @@
+export interface TdImageViewerProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ backgroundColor?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ images?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ initialIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ showIndex?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ deleteBtn?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ closeBtn?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image-viewer/type.js b/miniprogram_npm/tdesign-miniprogram/image-viewer/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image-viewer/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/image/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/image/README.en-US.md
new file mode 100644
index 0000000..599ccba
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Image Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+error | String / Slot | 'default' | \- | N
+external-classes | Array | - | `['t-class', 't-class-load']` | N
+height | String / Number | - | \- | N
+lazy | Boolean | false | \- | N
+loading | String / Slot | 'default' | \- | N
+mode | String | scaleToFill | options:scaleToFill/aspectFit/aspectFill/widthFix/heightFix/top/bottom/center/left/right/top left/top right/bottom left/bottom right | N
+shape | String | square | options:circle/round/square | N
+show-menu-by-longpress | Boolean | false | \- | N
+src | String | - | \- | N
+webp | Boolean | false | \- | N
+width | String / Number | - | \- | N
+
+### Image Events
+
+name | params | description
+-- | -- | --
+error | \- | \-
+load | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/image/README.md b/miniprogram_npm/tdesign-miniprogram/image/README.md
new file mode 100644
index 0000000..659dbb5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/README.md
@@ -0,0 +1,65 @@
+---
+title: Image 图片
+description: 用于展示效果,主要为上下左右居中裁切、拉伸、平铺等方式。
+spline: base
+isComponent: true
+---
+
+


+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-image": "tdesign-miniprogram/image/image"
+}
+```
+
+## 代码演示
+
+### 裁切样式
+
+{{ base }}
+
+### 加载状态
+
+{{ status }}
+
+## 常见问题
+
+
+
+ 本地图片无法正确引用?
+ 👇
+
+
+ 建议使用绝对路径,而不是相对路径。绝对路径以 app.json 所在位置为基准。
+
+
+
+
+## API
+### Image Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+error | String / Slot | 'default' | 加载失败时显示的内容。值为 `default` 则表示使用默认加载失败风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `error`;值为其他则表示普通文本内容,如“加载失败” | N
+external-classes | Array | - | 组件类名,分别用于设置加载组件外层元素,中间内容等元素类名。`['t-class', 't-class-load']` | N
+height | String / Number | - | 高度,默认单位为`px` | N
+lazy | Boolean | false | 是否开启图片懒加载 | N
+loading | String / Slot | 'default' | 加载态内容。值为 `default` 则表示使用默认加载中风格;值为其他则表示普通文本内容,如“加载中” | N
+mode | String | scaleToFill | 图片裁剪、缩放的模式;[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/image.html)。可选项:scaleToFill/aspectFit/aspectFill/widthFix/heightFix/top/bottom/center/left/right/top left/top right/bottom left/bottom right | N
+shape | String | square | 图片圆角类型。可选项:circle/round/square | N
+show-menu-by-longpress | Boolean | false | 长按图片显示发送给朋友、收藏、保存图片、搜一搜、打开名片/前往群聊/打开小程序(若图片中包含对应二维码或小程序码)的菜单。 | N
+src | String | - | 图片链接 | N
+webp | Boolean | false | 默认不解析 webP 格式,只支持网络资源 | N
+width | String / Number | - | 宽度,默认单位为`px` | N
+
+### Image Events
+
+名称 | 参数 | 描述
+-- | -- | --
+error | \- | 图片加载失败时触发
+load | \- | 图片加载完成时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/image/image-info.json b/miniprogram_npm/tdesign-miniprogram/image/image-info.json
new file mode 100644
index 0000000..7157c4c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/image-info.json
@@ -0,0 +1,75 @@
+{
+ "key": "Image",
+ "label": "图片",
+ "icon": "",
+ "properties": [
+ {
+ "key": "error",
+ "type": ["String", "TNode"],
+ "defaultValue": "'default'",
+ "desc": "加载失败时显示的内容。值为 `default` 则表示使用默认加载失败风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `error`;值为其他则表示普通文本内容,如“加载失败”",
+ "label": ""
+ },
+ {
+ "key": "externalClasses",
+ "type": ["Array"],
+ "defaultValue": "",
+ "desc": "组件类名,分别用于设置加载组件外层元素,中间内容等元素类名",
+ "label": ""
+ },
+ {
+ "key": "lazy",
+ "type": ["Boolean"],
+ "defaultValue": "false",
+ "desc": "是否开启图片懒加载",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["String", "TNode"],
+ "defaultValue": "'default'",
+ "desc": "加载态内容。值为 `default` 则表示使用默认加载中风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `loading`;值为其他则表示普通文本内容,如“加载中”",
+ "label": ""
+ },
+ {
+ "key": "MP_EXCLUDE_PROPS",
+ "type": ["String"],
+ "defaultValue": "",
+ "desc": "为避免重复或冲突,需要过滤掉的小程序原生属性",
+ "label": ""
+ },
+ {
+ "key": "MP_PROPS",
+ "type": ["String"],
+ "defaultValue": "",
+ "desc": "[小程序原生属性](https://developers.weixin.qq.com/miniprogram/dev/component/image.html)",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "defaultValue": "square",
+ "desc": "图片圆角类型",
+ "label": ""
+ },
+ {
+ "key": "src",
+ "type": ["String"],
+ "defaultValue": "",
+ "desc": "图片链接",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "error",
+ "desc": "图片加载失败时触发",
+ "label": ""
+ },
+ {
+ "key": "load",
+ "desc": "图片加载完成时触发",
+ "label": ""
+ }
+ ]
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image/image.d.ts b/miniprogram_npm/tdesign-miniprogram/image/image.d.ts
new file mode 100644
index 0000000..e86224a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/image.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent } from '../common/src/index';
+export default class Image extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdImageProps;
+ data: {
+ prefix: string;
+ isLoading: boolean;
+ isFailed: boolean;
+ innerStyle: string;
+ classPrefix: string;
+ };
+ preSrc: string;
+ lifetimes: {
+ attached(): void;
+ };
+ observers: {
+ src(): void;
+ };
+ methods: {
+ onLoaded(e: any): void;
+ onLoadError(e: any): void;
+ update(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image/image.js b/miniprogram_npm/tdesign-miniprogram/image/image.js
new file mode 100644
index 0000000..d832d1e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/image.js
@@ -0,0 +1,100 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import ImageProps from './props';
+import config from '../common/config';
+import { addUnit, getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-image`;
+let Image = class Image extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-load`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = ImageProps;
+ this.data = {
+ prefix,
+ isLoading: true,
+ isFailed: false,
+ innerStyle: '',
+ classPrefix: name,
+ };
+ this.preSrc = '';
+ this.lifetimes = {
+ attached() {
+ const { width, height } = this.data;
+ let innerStyle = '';
+ this.update();
+ if (width) {
+ innerStyle += `width: ${addUnit(width)};`;
+ }
+ if (height) {
+ innerStyle += `height: ${addUnit(height)};`;
+ }
+ this.setData({
+ innerStyle,
+ });
+ },
+ };
+ this.observers = {
+ src() {
+ if (this.preSrc === this.properties.src)
+ return;
+ this.update();
+ },
+ };
+ this.methods = {
+ onLoaded(e) {
+ const sdkVersion = wx.getSystemInfoSync().SDKVersion;
+ const versionArray = sdkVersion.split('.').map((v) => parseInt(v, 10));
+ const { mode } = this.properties;
+ const isInCompatible = versionArray[0] < 2 ||
+ (versionArray[0] === 2 && versionArray[1] < 10) ||
+ (versionArray[0] === 2 && versionArray[1] === 10 && versionArray[2] < 3);
+ if (mode === 'heightFix' && isInCompatible) {
+ const { height: picHeight, width: picWidth } = e.detail;
+ getRect(this, '#image').then((rect) => {
+ const { height } = rect;
+ const resultWidth = ((height / picHeight) * picWidth).toFixed(2);
+ this.setData({ innerStyle: `height: ${addUnit(height)}; width: ${resultWidth}px;` });
+ });
+ }
+ this.setData({
+ isLoading: false,
+ isFailed: false,
+ });
+ this.triggerEvent('load', e.detail);
+ },
+ onLoadError(e) {
+ this.setData({
+ isLoading: false,
+ isFailed: true,
+ });
+ this.triggerEvent('error', e.detail);
+ },
+ update() {
+ const { src } = this.properties;
+ this.preSrc = src;
+ if (!src) {
+ this.onLoadError({ errMsg: '图片链接为空' });
+ }
+ else {
+ this.setData({
+ isLoading: true,
+ isFailed: false,
+ });
+ }
+ },
+ };
+ }
+};
+Image = __decorate([
+ wxComponent()
+], Image);
+export default Image;
diff --git a/miniprogram_npm/tdesign-miniprogram/image/image.json b/miniprogram_npm/tdesign-miniprogram/image/image.json
new file mode 100644
index 0000000..5de7a66
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/image.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-loading": "../loading/loading",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image/image.wxml b/miniprogram_npm/tdesign-miniprogram/image/image.wxml
new file mode 100644
index 0000000..bde7038
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/image.wxml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ {{loading}}
+
+
+
+
+
+
+
+
+ {{error}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/image/image.wxss b/miniprogram_npm/tdesign-miniprogram/image/image.wxss
new file mode 100644
index 0000000..1a3c3e1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/image.wxss
@@ -0,0 +1,58 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-image {
+ color: var(--td-image-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ vertical-align: top;
+}
+.t-image__mask {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: var(--td-image-loading-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ color: var(--td-image-loading-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-image--loading-text {
+ width: 0;
+ height: 0;
+}
+.t-image__common {
+ width: 100%;
+ height: 100%;
+}
+.t-image--shape-circle {
+ border-radius: 50%;
+ overflow: hidden;
+}
+.t-image--shape-round {
+ border-radius: var(--td-image-round-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-image--shape-square {
+ border-radius: 0;
+ overflow: hidden;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image/index.d.ts b/miniprogram_npm/tdesign-miniprogram/image/index.d.ts
new file mode 100644
index 0000000..0f85c43
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/index.d.ts
@@ -0,0 +1,4 @@
+import { TdImageProps } from './type';
+export declare type ImageProps = TdImageProps;
+export * from './props';
+export * from './image';
diff --git a/miniprogram_npm/tdesign-miniprogram/image/index.js b/miniprogram_npm/tdesign-miniprogram/image/index.js
new file mode 100644
index 0000000..4fd3953
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/index.js
@@ -0,0 +1,2 @@
+export * from './props';
+export * from './image';
diff --git a/miniprogram_npm/tdesign-miniprogram/image/props.d.ts b/miniprogram_npm/tdesign-miniprogram/image/props.d.ts
new file mode 100644
index 0000000..0ab571b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/props.d.ts
@@ -0,0 +1,3 @@
+import { TdImageProps } from './type';
+declare const props: TdImageProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/image/props.js b/miniprogram_npm/tdesign-miniprogram/image/props.js
new file mode 100644
index 0000000..595db41
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/props.js
@@ -0,0 +1,44 @@
+const props = {
+ error: {
+ type: String,
+ value: 'default',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ height: {
+ type: null,
+ },
+ lazy: {
+ type: Boolean,
+ value: false,
+ },
+ loading: {
+ type: String,
+ value: 'default',
+ },
+ mode: {
+ type: String,
+ value: 'scaleToFill',
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ showMenuByLongpress: {
+ type: Boolean,
+ value: false,
+ },
+ src: {
+ type: String,
+ value: '',
+ },
+ webp: {
+ type: Boolean,
+ value: false,
+ },
+ width: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/image/type.d.ts b/miniprogram_npm/tdesign-miniprogram/image/type.d.ts
new file mode 100644
index 0000000..09a454f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/type.d.ts
@@ -0,0 +1,50 @@
+export interface TdImageProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ error?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-load'];
+ };
+ height?: {
+ type: null;
+ value?: string | number;
+ };
+ lazy?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ loading?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ mode?: {
+ type: StringConstructor;
+ value?: 'scaleToFill' | 'aspectFit' | 'aspectFill' | 'widthFix' | 'heightFix' | 'top' | 'bottom' | 'center' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right';
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'circle' | 'round' | 'square';
+ };
+ showMenuByLongpress?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ src?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ webp?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ width?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/image/type.js b/miniprogram_npm/tdesign-miniprogram/image/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/image/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/README.en-US.md
new file mode 100644
index 0000000..6cac63c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/README.en-US.md
@@ -0,0 +1,9 @@
+:: BASE_DOC ::
+
+## API
+### IndexesAnchor Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class']` | N
+index | String / Number | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/README.md b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/README.md
new file mode 100644
index 0000000..dd0003e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/README.md
@@ -0,0 +1,9 @@
+:: BASE_DOC ::
+
+## API
+### IndexesAnchor Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class']` | N
+index | String / Number | - | 索引字符 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.d.ts b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.d.ts
new file mode 100644
index 0000000..62d07a1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.d.ts
@@ -0,0 +1,13 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+export default class IndexesAnchor extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdIndexesAnchorProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ anchorStyle: string;
+ sticky: boolean;
+ active: boolean;
+ };
+ relations: RelationsOptions;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.js b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.js
new file mode 100644
index 0000000..704f5cb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.js
@@ -0,0 +1,34 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-indexes-anchor`;
+let IndexesAnchor = class IndexesAnchor extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ anchorStyle: '',
+ sticky: false,
+ active: false,
+ };
+ this.relations = {
+ '../indexes/indexes': {
+ type: 'parent',
+ },
+ };
+ }
+};
+IndexesAnchor = __decorate([
+ wxComponent()
+], IndexesAnchor);
+export default IndexesAnchor;
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.json b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.wxml b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.wxml
new file mode 100644
index 0000000..bbe6d8e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.wxml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.wxss b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.wxss
new file mode 100644
index 0000000..0addf13
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/indexes-anchor.wxss
@@ -0,0 +1,77 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-indexes-anchor {
+ color: var(--td-indexes-anchor-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-indexes-anchor-font-size, 28rpx);
+ line-height: var(--td-indexes-anchor-line-height, 44rpx);
+}
+.t-indexes-anchor__header {
+ display: none;
+ padding: 8rpx 32rpx;
+ background-color: var(--td-indexes-anchor-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-indexes-anchor__header--active {
+ background-color: var(--td-indexes-anchor-active-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ position: relative;
+}
+.t-indexes-anchor__header--active::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-indexes-anchor__header--active::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-indexes-anchor__slot {
+ overflow: hidden;
+}
+.t-indexes-anchor__slot:empty + .t-indexes-anchor__header {
+ display: block;
+}
+.t-indexes-anchor__wrapper {
+ will-change: transform;
+}
+.t-indexes-anchor__wrapper--sticky {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 1;
+}
+.t-indexes-anchor__wrapper--active {
+ color: var(--td-indexes-anchor-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: var(--td-indexes-anchor-active-font-weight, 600);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/props.d.ts b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/props.d.ts
new file mode 100644
index 0000000..7b52adf
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/props.d.ts
@@ -0,0 +1,3 @@
+import { TdIndexesAnchorProps } from './type';
+declare const props: TdIndexesAnchorProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/props.js b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/props.js
new file mode 100644
index 0000000..47fc176
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/props.js
@@ -0,0 +1,9 @@
+const props = {
+ externalClasses: {
+ type: Array,
+ },
+ index: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/type.d.ts b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/type.d.ts
new file mode 100644
index 0000000..acdd553
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/type.d.ts
@@ -0,0 +1,14 @@
+export interface TdIndexesAnchorProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ index?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes-anchor/type.js b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes-anchor/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/indexes/README.en-US.md
new file mode 100644
index 0000000..08ceb79
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Indexes Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+index-list | Array | - | `0.32.0`。Typescript:`string [] \| number[]` | N
+list | Array | [] | `deprecated`。Typescript:`ListItem[] ` `interface ListItem { title: string; index: string; children: { title: string; [key: string]: any} [] }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/indexes/type.ts) | N
+sticky | Boolean | true | Typescript:`Boolean` | N
+sticky-offset | Number | 0 | `1.0.0` | N
+
+### Indexes Events
+
+name | params | description
+-- | -- | --
+change | `(index: string \| number)` | `0.34.0`
+select | `(index: string \| number)` | \-
+
+### IndexesAnchor Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class']` | N
+index | String / Number | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/README.md b/miniprogram_npm/tdesign-miniprogram/indexes/README.md
new file mode 100644
index 0000000..0bd7b41
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/README.md
@@ -0,0 +1,62 @@
+---
+title: Indexes 索引
+description: 用于页面中信息快速检索,可以根据目录中的页码快速找到所需的内容。
+spline: navigation
+isComponent: true
+---
+
+


+
+
+
+ IndexesAnchor 索引锚点组件于 0.32.0 版本上线,请留意版本。
+
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-indexes": "tdesign-miniprogram/indexes/indexes",
+ "t-indexes-anchor": "tdesign-miniprogram/indexes-anchor/indexes-anchor"
+}
+```
+
+## 代码演示
+
+### 基础索引
+
+
+{{ base }}
+
+### 自定义索引
+
+{{ custom }}
+
+### API
+### Indexes Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+index-list | Array | - | `0.32.0`。索引字符列表。不传默认 `A-Z`。TS 类型:`string [] \| number[]` | N
+list | Array | [] | 已废弃。索引列表的列表数据。每个元素包含三个子元素,index(string):索引值,例如1,2,3,...或A,B,C等;title(string): 索引标题,可不填将默认设为索引值;children(Array<{title: string}>): 子元素列表,title为子元素的展示文案。。TS 类型:`ListItem[] ` `interface ListItem { title: string; index: string; children: { title: string; [key: string]: any} [] }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/indexes/type.ts) | N
+sticky | Boolean | true | 索引是否吸顶,默认为true。TS 类型:`Boolean` | N
+sticky-offset | Number | 0 | `1.0.0`。锚点吸顶时与顶部的距离 | N
+
+### Indexes Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(index: string \| number)` | `0.34.0`。索引发生变更时触发事件
+select | `(index: string \| number)` | 点击侧边栏时触发事件
+
+### IndexesAnchor Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class']` | N
+index | String / Number | - | 索引字符 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/indexes.d.ts b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.d.ts
new file mode 100644
index 0000000..900550a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.d.ts
@@ -0,0 +1,44 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+export default class Indexes extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdIndexesProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ _height: number;
+ _indexList: any[];
+ scrollTop: number;
+ activeAnchor: any;
+ showTips: boolean;
+ };
+ relations: RelationsOptions;
+ behaviors: string[];
+ timer: any;
+ groupTop: any[];
+ sidebar: any;
+ observers: {
+ indexList(v: any): void;
+ height(v: any): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ setHeight(height: string | number): void;
+ setIndexList(list: any): void;
+ getAllRect(): void;
+ getAnchorsRect(): Promise;
+ getSidebarRect(): void;
+ toggleTips(flag: boolean): void;
+ setAnchorByIndex(index: any): void;
+ onClick(e: any): void;
+ onTouchMove(e: any): void;
+ onTouchCancel(): void;
+ onTouchEnd(e: any): void;
+ onAnchorTouch: (...args: any[]) => void;
+ setAnchorOnScroll(scrollTop: number): void;
+ onScroll({ scrollTop }: {
+ scrollTop: any;
+ }): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/indexes.js b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.js
new file mode 100644
index 0000000..0e07ea5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.js
@@ -0,0 +1,228 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect, throttle } from '../common/utils';
+import pageScrollMixin from '../mixins/page-scroll';
+const { prefix } = config;
+const name = `${prefix}-indexes`;
+let Indexes = class Indexes extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-sidebar`, `${prefix}-class-sidebar-item`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ _height: 0,
+ _indexList: [],
+ scrollTop: 0,
+ activeAnchor: null,
+ showTips: false,
+ };
+ this.relations = {
+ '../indexes-anchor/indexes-anchor': {
+ type: 'child',
+ },
+ };
+ this.behaviors = [
+ pageScrollMixin(function (event) {
+ this.onScroll(event);
+ }),
+ ];
+ this.timer = null;
+ this.groupTop = [];
+ this.sidebar = null;
+ this.observers = {
+ indexList(v) {
+ this.setIndexList(v);
+ },
+ height(v) {
+ this.setHeight(v);
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ var _a;
+ if (this.data._height === 0) {
+ this.setHeight();
+ }
+ if (((_a = this.data._indexList) === null || _a === void 0 ? void 0 : _a.length) === 0) {
+ this.setIndexList();
+ }
+ },
+ };
+ this.methods = {
+ setHeight(height) {
+ if (!height) {
+ const { windowHeight } = wx.getSystemInfoSync();
+ height = windowHeight;
+ }
+ this.setData({
+ _height: height,
+ }, () => {
+ this.getAllRect();
+ });
+ },
+ setIndexList(list) {
+ if (!list) {
+ const start = 'A'.charCodeAt(0);
+ const alphabet = [];
+ for (let i = start, end = start + 26; i < end; i += 1) {
+ alphabet.push(String.fromCharCode(i));
+ }
+ this.setData({ _indexList: alphabet });
+ }
+ else {
+ this.setData({ _indexList: list });
+ }
+ },
+ getAllRect() {
+ this.getAnchorsRect().then(() => {
+ this.groupTop.forEach((item, index) => {
+ const next = this.groupTop[index + 1];
+ item.totalHeight = ((next === null || next === void 0 ? void 0 : next.top) || Infinity) - item.top;
+ });
+ this.setAnchorOnScroll(0);
+ });
+ this.getSidebarRect();
+ },
+ getAnchorsRect() {
+ return Promise.all(this.$children.map((child) => getRect(child, `.${name}-anchor`).then((rect) => {
+ this.groupTop.push({
+ height: rect.height,
+ top: rect.top,
+ anchor: child.data.index,
+ });
+ })));
+ },
+ getSidebarRect() {
+ getRect(this, `#id-${name}__bar`).then((rect) => {
+ const { top, height } = rect;
+ const { length } = this.data._indexList;
+ this.sidebar = {
+ top,
+ height,
+ itemHeight: (height - (length - 1) * 2) / length,
+ };
+ });
+ },
+ toggleTips(flag) {
+ if (!flag) {
+ clearInterval(this.timer);
+ this.timer = setTimeout(() => {
+ this.setData({
+ showTips: false,
+ });
+ }, 300);
+ }
+ else {
+ this.setData({
+ showTips: true,
+ });
+ }
+ },
+ setAnchorByIndex(index) {
+ if (this.preIndex != null && this.preIndex === index)
+ return;
+ const { _indexList } = this.data;
+ const activeAnchor = _indexList[index];
+ const target = this.groupTop.find((item) => item.anchor === activeAnchor);
+ if (target) {
+ wx.pageScrollTo({
+ scrollTop: target.top,
+ duration: 0,
+ });
+ }
+ this.preIndex = index;
+ this.toggleTips(true);
+ this.triggerEvent('select', { index: activeAnchor });
+ if (activeAnchor !== this.data.activeAnchor) {
+ this.triggerEvent('change', { index: activeAnchor });
+ }
+ },
+ onClick(e) {
+ const { index } = e.currentTarget.dataset;
+ this.setAnchorByIndex(index);
+ },
+ onTouchMove(e) {
+ this.onAnchorTouch(e);
+ },
+ onTouchCancel() {
+ this.toggleTips(false);
+ },
+ onTouchEnd(e) {
+ this.toggleTips(false);
+ this.onAnchorTouch(e);
+ },
+ onAnchorTouch: throttle(function (e) {
+ const getAnchorIndex = (clientY) => {
+ const offsetY = clientY - this.sidebar.top;
+ if (offsetY <= 0) {
+ return 0;
+ }
+ if (offsetY > this.sidebar.height) {
+ return this.data._indexList.length - 1;
+ }
+ return Math.floor(offsetY / this.sidebar.itemHeight);
+ };
+ const index = getAnchorIndex(e.changedTouches[0].clientY);
+ this.setAnchorByIndex(index);
+ }, 1000 / 30),
+ setAnchorOnScroll(scrollTop) {
+ if (!this.groupTop) {
+ return;
+ }
+ const { sticky, stickyOffset } = this.data;
+ scrollTop += stickyOffset;
+ const curIndex = this.groupTop.findIndex((group) => scrollTop >= group.top - group.height && scrollTop <= group.top + group.totalHeight - group.height);
+ if (curIndex === -1)
+ return;
+ const curGroup = this.groupTop[curIndex];
+ if (this.data.activeAnchor !== curGroup.anchor) {
+ this.triggerEvent('change', { index: curGroup.anchor });
+ }
+ this.setData({
+ activeAnchor: curGroup.anchor,
+ });
+ if (sticky) {
+ const offset = curGroup.top - scrollTop;
+ const betwixt = offset < curGroup.height && offset > 0 && scrollTop > stickyOffset;
+ this.$children.forEach((child, index) => {
+ if (index === curIndex) {
+ child.setData({
+ sticky: scrollTop > stickyOffset,
+ active: true,
+ style: `height: ${curGroup.height}px`,
+ anchorStyle: `transform: translate3d(0, ${betwixt ? offset : 0}px, 0); top: ${stickyOffset}px`,
+ });
+ }
+ else if (index + 1 === curIndex) {
+ child.setData({
+ sticky: true,
+ active: true,
+ style: `height: ${curGroup.height}px`,
+ anchorStyle: `transform: translate3d(0, ${betwixt ? offset - curGroup.height : 0}px, 0); top: ${stickyOffset}px`,
+ });
+ }
+ else {
+ child.setData({ active: false, sticky: false, anchorStyle: '' });
+ }
+ });
+ }
+ },
+ onScroll({ scrollTop }) {
+ this.setAnchorOnScroll(scrollTop);
+ },
+ };
+ }
+};
+Indexes = __decorate([
+ wxComponent()
+], Indexes);
+export default Indexes;
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/indexes.json b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.json
new file mode 100644
index 0000000..49bfc1b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-cell": "../cell/cell",
+ "t-cell-group": "../cell-group/cell-group"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/indexes.wxml b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.wxml
new file mode 100644
index 0000000..0969d41
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/indexes.wxss b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.wxss
new file mode 100644
index 0000000..7142382
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/indexes.wxss
@@ -0,0 +1,72 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-indexes {
+ position: relative;
+ height: 100vh;
+}
+.t-indexes__sidebar {
+ position: fixed;
+ right: var(--td-indexes-sidebar-right, 16rpx);
+ width: var(--td-indexes-sidebar-item-size, 40rpx);
+ color: var(--td-indexes-sidebar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-indexes-sidebar-font-size, 24rpx);
+ line-height: var(--td-indexes-sidebar-line-height, 40rpx);
+ display: flex;
+ flex-flow: column nowrap;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 1;
+}
+.t-indexes__sidebar-item {
+ border-radius: 50%;
+ position: relative;
+ text-align: center;
+}
+.t-indexes__sidebar-item--active {
+ background-color: var(--td-indexes-sidebar-active-bg-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ color: var(--td-indexes-sidebar-active-color, var(--td-font-white-1, #ffffff));
+}
+.t-indexes__sidebar-item + .t-indexes__sidebar-item {
+ margin-top: 4rpx;
+}
+.t-indexes__sidebar-tips {
+ width: var(--td-indexes-sidebar-tips-size, 96rpx);
+ height: var(--td-indexes-sidebar-tips-size, 96rpx);
+ line-height: var(--td-indexes-sidebar-tips-size, 96rpx);
+ text-align: center;
+ font-size: var(--td-indexes-sidebar-tips-font-size, 40rpx);
+ font-weight: 700;
+ color: var(--td-indexes-sidebar-tips-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-indexes-sidebar-tips-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ bottom: 0;
+ transform: translateY(-50%);
+ right: var(--td-indexes-sidebar-tips-right, 76rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/props.d.ts b/miniprogram_npm/tdesign-miniprogram/indexes/props.d.ts
new file mode 100644
index 0000000..a3e1619
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/props.d.ts
@@ -0,0 +1,3 @@
+import { TdIndexesProps } from './type';
+declare const props: TdIndexesProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/props.js b/miniprogram_npm/tdesign-miniprogram/indexes/props.js
new file mode 100644
index 0000000..18e29a4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/props.js
@@ -0,0 +1,18 @@
+const props = {
+ indexList: {
+ type: Array,
+ },
+ list: {
+ type: Array,
+ value: [],
+ },
+ sticky: {
+ type: Boolean,
+ value: true,
+ },
+ stickyOffset: {
+ type: Number,
+ value: 0,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/type.d.ts b/miniprogram_npm/tdesign-miniprogram/indexes/type.d.ts
new file mode 100644
index 0000000..bcfb5d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/type.d.ts
@@ -0,0 +1,30 @@
+export interface TdIndexesProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ indexList?: {
+ type: ArrayConstructor;
+ value?: string[] | number[];
+ };
+ list?: {
+ type: ArrayConstructor;
+ value?: ListItem[];
+ };
+ sticky?: {
+ type: BooleanConstructor;
+ value?: Boolean;
+ };
+ stickyOffset?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
+export interface ListItem {
+ title: string;
+ index: string;
+ children: {
+ title: string;
+ [key: string]: any;
+ }[];
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/indexes/type.js b/miniprogram_npm/tdesign-miniprogram/indexes/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/indexes/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/input/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/input/README.en-US.md
new file mode 100644
index 0000000..ba2161f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/README.en-US.md
@@ -0,0 +1,60 @@
+:: BASE_DOC ::
+
+## API
+
+### Input Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | left | options:left/center/right | N
+layout | String | horizontal | options:vertical/horizontal | N
+borderless | Boolean | true | \- | N
+clearable | Boolean | false | \- | N
+disabled | Boolean | - | \- | N
+error-message | String | - | `deprecated` | N
+external-classes | Array | - | `['t-class', 't-class-input', 't-class-placeholder', 't-class-error-msg']` | N
+format | Function | - | Typescript:`InputFormatType` `type InputFormatType = (value: InputValue) => string`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+label | String / Slot | - | \- | N
+maxcharacter | Number | - | \- | N
+maxlength | Number | - | \- | N
+placeholder | String | undefined | \- | N
+prefix-icon | String / Slot | - | \- | N
+readonly | Boolean | false | \- | N
+size | String | small | options:small/medium。Typescript:`'medium' \| 'small'` | N
+status | String | default | options:default/success/warning/error | N
+suffix | String / Slot | - | \- | N
+suffix-icon | String / Slot | - | \- | N
+tips | String / Slot | - | \- | N
+value | String / Number | - | Typescript:`InputValue` `type InputValue = string`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+default-value | String / Number | undefined | uncontrolled property。Typescript:`InputValue` `type InputValue = string`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+type | String | text | options:text/number/idcard/digit/safe-password/nickname | N
+password | Boolean | false | \- | N
+placeholder-style | String | - | required | Y
+placeholder-class | String | input-placeholder | \- | N
+cursor-spacing | Number | 0 | \- | N
+auto-focus | Boolean | false | \- | N
+focus | Boolean | false | \- | N
+confirm-type | String | done | options:send/search/next/go/done | N
+always-embed | Boolean | false | \- | N
+confirm-hold | Boolean | false | \- | N
+cursor | Number | - | required | Y
+selection-start | Number | -1 | \- | N
+selection-end | Number | -1 | \- | N
+adjust-position | Boolean | true | \- | N
+hold-keyboard | Boolean | false | \- | N
+safe-password-cert-path | String | - | \- | N
+safe-password-length | Number | - | \- | N
+safe-password-time-stamp | Number | - | \- | N
+safe-password-nonce | String | - | \- | N
+safe-password-salt | String | - | \- | N
+safe-password-custom-hash | String | - | \- | N
+### Input Events
+
+name | params | description
+-- | -- | --
+blur | `(value: InputValue)` | \-
+change | `(value: InputValue, cursor: number, keyCode: number)` | \-
+clear | \- | \-
+enter | `(value: InputValue)` | \-
+focus | `(value: InputValue)` | \-
+keyboardheightchange | `(height: number, duration: number)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/input/README.md b/miniprogram_npm/tdesign-miniprogram/input/README.md
new file mode 100644
index 0000000..c91ade1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/README.md
@@ -0,0 +1,135 @@
+---
+title: Input 输入框
+description: 用于单行文本信息输入。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-input": "tdesign-miniprogram/input/input"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础输入框
+
+{{ base }}
+
+带字数限制输入框
+
+{{ maxlength }}
+
+带操作输入框
+
+{{ suffix }}
+
+带图标输入框
+
+{{ prefix }}
+
+特定类型输入框
+
+{{ special }}
+
+### 02 组件状态
+
+输入框状态
+
+{{ status }}
+
+信息超长状态
+
+{{ label }}
+
+### 03 组件样式
+
+内容位置
+
+{{ align }}
+
+竖排样式
+
+{{ layout }}
+
+非通栏样式
+
+{{ banner }}
+
+标签外置样式
+
+{{ bordered }}
+
+自定义样式文本框
+
+{{ custom }}
+
+
+## API
+### Input Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | left | 文本内容位置,居左/居中/居右。可选项:left/center/right | N
+layout | String | horizontal | 标题输入框布局方式。可选项:vertical/horizontal | N
+borderless | Boolean | false | 是否开启无边框模式 | N
+clearable | Boolean / Object | false | 是否可清空,默认不启动。值为 `true` 表示使用默认清除空按钮,值为 `Object` 表示透传至 `icon` | N
+disabled | Boolean | false | 是否禁用输入框 | N
+error-message | String | - | 已废弃。错误提示文本,值为空不显示(废弃属性,如果需要,请更为使用 status 和 tips) | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素、输入框、占位符、错误信息等元素类名。`['t-class','t-class-prefix-icon', 't-class-label', 't-class-input', 't-class-clearable', 't-class-suffix', 't-class-suffix-icon', 't-class-tips']` | N
+format | Function | - | 【开发中】指定输入框展示值的格式。TS 类型:`InputFormatType` `type InputFormatType = (value: InputValue) => number | string`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+label | String / Slot | - | 左侧文本。 | N
+maxcharacter | Number | - | 用户最多可以输入的字符个数,一个中文汉字表示两个字符长度。`maxcharacter` 和 `maxlength` 二选一使用 | N
+maxlength | Number | -1 | 用户最多可以输入的文本长度,一个中文等于一个计数长度。默认为 -1,不限制输入长度。`maxcharacter` 和 `maxlength` 二选一使用 | N
+placeholder | String | undefined | 占位符 | N
+prefix-icon | String / Object / Slot | - | 组件前置图标。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+readonly | Boolean | false | 【开发中】只读状态 | N
+size | String | medium | 【已废弃】输入框尺寸。可选项:small/medium。TS 类型:`'medium' \| 'small'` | N
+status | String | - | 输入框状态。可选项:success/warning/error | N
+suffix | String / Slot | - | 后置图标前的后置内容 | N
+suffix-icon | String / Object / Slot | - | 后置文本内容。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+tips | String / Slot | - | 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式 | N
+type | String | text | 输入框类型。可选项:text/number/idcard/digit/safe-password/password/nickname | N
+value | String / Number | - | 输入框的值。TS 类型:`InputValue` `type InputValue = string | number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+default-value | String / Number | undefined | 输入框的值。非受控属性。TS 类型:`InputValue` `type InputValue = string | number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+password | Boolean | false | 是否是密码类型(已废弃,请更为使用 type 指定输入框类型) | N
+placeholder-style | String | - | 必需。指定 placeholder 的样式 | Y
+placeholder-class | String | input-placeholder | 指定 placeholder 的样式类 | N
+cursor-spacing | Number | 0 | 指定光标与键盘的距离,取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 | N
+auto-focus | Boolean | false | (即将废弃,请直接使用 focus )自动聚焦,拉起键盘 | N
+focus | Boolean | false | 获取焦点 | N
+confirm-type | String | done | 设置键盘右下角按钮的文字,仅在type='text'时生效。
具体释义:
`send` 右下角按钮为“发送”;
`search` 右下角按钮为“搜索”;
`next` 右下角按钮为“下一个”;
`go` 右下角按钮为“前往”;
`done` 右下角按钮为“完成”。
[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/input.html)。可选项:send/search/next/go/done | N
+always-embed | Boolean | false | 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) | N
+confirm-hold | Boolean | false | 点击键盘右下角按钮时是否保持键盘不收起 | N
+cursor | Number | - | 必需。指定 focus 时的光标位置 | Y
+selection-start | Number | -1 | 光标起始位置,自动聚集时有效,需与 selection-end 搭配使用 | N
+selection-end | Number | -1 | 光标结束位置,自动聚集时有效,需与 selection-start 搭配使用 | N
+adjust-position | Boolean | true | 键盘弹起时,是否自动上推页面 | N
+hold-keyboard | Boolean | false | focus时,点击页面的时候不收起键盘 | N
+safe-password-cert-path | String | - | 安全键盘加密公钥的路径,只支持包内路径 | N
+safe-password-length | Number | - | 安全键盘输入密码长度 | N
+safe-password-time-stamp | Number | - | 安全键盘加密时间戳 | N
+safe-password-nonce | String | - | 安全键盘加密盐值 | N
+safe-password-salt | String | - | 安全键盘计算 hash 盐值,若指定custom-hash 则无效 | N
+safe-password-custom-hash | String | - | 安全键盘计算 hash 的算法表达式,如 `md5(sha1('foo' + sha256(sm3(password + 'bar'))))` | N
+
+### Input Events
+
+名称 | 参数 | 描述
+-- | -- | --
+blur | `(value: InputValue)` | 失去焦点时触发
+change | `(value: InputValue, cursor: number, keyCode: number)` | 输入框值发生变化时触发;cursor 为光标位置;
+clear | \- | 清空按钮点击时触发
+enter | `(value: InputValue)` | 回车键按下时触发
+focus | `(value: InputValue)` | 获得焦点时触发
+keyboardheightchange | `(height: number, duration: number)` | 键盘高度发生变化的时候触发此事件
+nicknamereview | `(pass: boolean, timeout: boolean)`| 用户昵称审核完毕后触发,仅在 type 为 "nickname" 时有效
+click `v0.32.0`| `(trigger: InputTrigger)` | 点击事件。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts)。
`type InputTrigger = 'suffix' \| 'suffix-icon';`
diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.d.ts b/miniprogram_npm/tdesign-miniprogram/input/input.d.ts
new file mode 100644
index 0000000..810afef
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/input.d.ts
@@ -0,0 +1,34 @@
+import { SuperComponent } from '../common/src/index';
+export default class Input extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ behaviors: string[];
+ properties: import("./type").TdInputProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ classBasePrefix: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ observers: {
+ prefixIcon(v: any): void;
+ suffixIcon(v: any): void;
+ clearable(v: any): void;
+ };
+ methods: {
+ updateValue(value: any): void;
+ onInput(e: any): void;
+ onFocus(e: any): void;
+ onBlur(e: any): void;
+ onConfirm(e: any): void;
+ onSuffixClick(): void;
+ onSuffixIconClick(): void;
+ clearInput(e: any): void;
+ onKeyboardHeightChange(e: any): void;
+ onNickNameReview(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.js b/miniprogram_npm/tdesign-miniprogram/input/input.js
new file mode 100644
index 0000000..c926018
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/input.js
@@ -0,0 +1,119 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getCharacterLength, calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-input`;
+let Input = class Input extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-prefix-icon`,
+ `${prefix}-class-label`,
+ `${prefix}-class-input`,
+ `${prefix}-class-clearable`,
+ `${prefix}-class-suffix`,
+ `${prefix}-class-suffix-icon`,
+ `${prefix}-class-tips`,
+ ];
+ this.behaviors = ['wx://form-field'];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ classBasePrefix: prefix,
+ };
+ this.lifetimes = {
+ ready() {
+ const { value } = this.properties;
+ this.updateValue(value == null ? '' : value);
+ },
+ };
+ this.observers = {
+ prefixIcon(v) {
+ this.setData({
+ _prefixIcon: calcIcon(v),
+ });
+ },
+ suffixIcon(v) {
+ this.setData({
+ _suffixIcon: calcIcon(v),
+ });
+ },
+ clearable(v) {
+ this.setData({
+ _clearIcon: calcIcon(v, 'close-circle-filled'),
+ });
+ },
+ };
+ this.methods = {
+ updateValue(value) {
+ const { maxcharacter, maxlength } = this.properties;
+ if (maxcharacter && maxcharacter > 0 && !Number.isNaN(maxcharacter)) {
+ const { length, characters } = getCharacterLength('maxcharacter', value, maxcharacter);
+ this.setData({
+ value: characters,
+ count: length,
+ });
+ }
+ else if (maxlength > 0 && !Number.isNaN(maxlength)) {
+ const { length, characters } = getCharacterLength('maxlength', value, maxlength);
+ this.setData({
+ value: characters,
+ count: length,
+ });
+ }
+ else {
+ this.setData({
+ value,
+ count: value ? String(value).length : 0,
+ });
+ }
+ },
+ onInput(e) {
+ const { value, cursor, keyCode } = e.detail;
+ this.updateValue(value);
+ this.triggerEvent('change', { value: this.data.value, cursor, keyCode });
+ },
+ onFocus(e) {
+ this.triggerEvent('focus', e.detail);
+ },
+ onBlur(e) {
+ this.triggerEvent('blur', e.detail);
+ },
+ onConfirm(e) {
+ this.triggerEvent('enter', e.detail);
+ },
+ onSuffixClick() {
+ this.triggerEvent('click', { trigger: 'suffix' });
+ },
+ onSuffixIconClick() {
+ this.triggerEvent('click', { trigger: 'suffix-icon' });
+ },
+ clearInput(e) {
+ this.triggerEvent('clear', e.detail);
+ this.setData({ value: '' });
+ },
+ onKeyboardHeightChange(e) {
+ this.triggerEvent('keyboardheightchange', e.detail);
+ },
+ onNickNameReview(e) {
+ this.triggerEvent('nicknamereview', e.detail);
+ },
+ };
+ }
+};
+Input = __decorate([
+ wxComponent()
+], Input);
+export default Input;
diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.json b/miniprogram_npm/tdesign-miniprogram/input/input.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/input.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.wxml b/miniprogram_npm/tdesign-miniprogram/input/input.wxml
new file mode 100644
index 0000000..3a50ba4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/input.wxml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
+
+
+
+
+
+
+
+
+
+
+ {{suffix}}
+
+
+
+
+
+
+
+ {{tips}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.wxs b/miniprogram_npm/tdesign-miniprogram/input/input.wxs
new file mode 100644
index 0000000..ee9eb11
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/input.wxs
@@ -0,0 +1,16 @@
+function getInputClass(classPrefix, suffix, align, disabled) {
+ var className = [classPrefix + '__control'];
+
+ if (align) {
+ className.push(classPrefix + '--' + align);
+ }
+
+ if (disabled) {
+ className.push(classPrefix + '__control--disabled');
+ }
+ return className.join(' ');
+}
+
+module.exports = {
+ getInputClass: getInputClass,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/input/input.wxss b/miniprogram_npm/tdesign-miniprogram/input/input.wxss
new file mode 100644
index 0000000..d6b5154
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/input.wxss
@@ -0,0 +1,183 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-input {
+ background-color: var(--td-input-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ display: flex;
+ align-items: center;
+ flex: 1;
+ padding: var(--td-input-vertical-padding, 32rpx);
+}
+.t-input--border {
+ position: relative;
+}
+.t-input--border::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-input-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-input--border::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-input--border:after {
+ left: var(--td-input-border-left-space, 32rpx);
+ right: var(--td-input-border-right-space, 0);
+}
+.t-input--layout-vertical {
+ flex-direction: column;
+}
+.t-input__wrap--prefix {
+ display: flex;
+}
+.t-input__icon--prefix {
+ font-size: 48rpx;
+ color: var(--td-input-prefix-icon-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-input__label:not(:empty) {
+ min-width: 2em;
+ max-width: 5em;
+ font-size: var(--td-font-size-m, 32rpx);
+ line-height: 48rpx;
+ color: var(--td-input-label-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ margin-right: var(--td-spacer-2, 32rpx);
+}
+.t-input--layout-vertical .t-input__label:not(:empty) {
+ font-size: var(--td-font-size-base, 28rpx);
+ padding-bottom: 8rpx;
+}
+.t-input__icon--prefix:not(:empty) + .t-input__label:not(:empty) {
+ padding-left: 8rpx;
+}
+.t-input__label:not(:empty) + .t-input__wrap {
+ margin-left: var(--td-spacer-2, 32rpx);
+}
+.t-input__icon--prefix:not(:empty) + .t-input__label:empty {
+ margin-right: var(--td-spacer-2, 32rpx);
+}
+.t-input__wrap {
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: center;
+ flex-shrink: 1;
+ flex: 1;
+}
+.t-input__wrap .t-input__content {
+ display: flex;
+ align-items: center;
+ line-height: 48rpx;
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-input__wrap--clearable-icon,
+.t-input__wrap--suffix-icon,
+.t-input__wrap--suffix {
+ flex: 0 0 auto;
+ padding-left: var(--td-spacer-1, 24rpx);
+}
+.t-input__wrap--clearable-icon:empty,
+.t-input__wrap--suffix-icon:empty,
+.t-input__wrap--suffix:empty {
+ display: none;
+}
+.t-input__wrap--clearable-icon,
+.t-input__wrap--suffix-icon {
+ font-size: 48rpx;
+ color: var(--td-input-suffix-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-input__wrap--suffix {
+ font-size: var(--td-font-size-m, 32rpx);
+ color: var(--td-input-suffix-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-input__icon--prefix:empty,
+.t-input__tips:empty,
+.t-input__wrap--clearable-icon:empty,
+.t-input__wrap--suffix-icon:empty,
+.t-input__wrap--suffix:empty {
+ display: none;
+}
+.t-input__control {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ min-width: 0;
+ min-height: 48rpx;
+ margin: 0;
+ padding: 0;
+ color: var(--td-input-default-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: inherit;
+ background-color: transparent;
+ border: 0;
+ resize: none;
+ font-size: inherit;
+}
+.t-input__control--disabled {
+ color: var(--td-input-disabled-text-color, var(--td-text-color-disabled, var(--td-font-gray-4, rgba(0, 0, 0, 0.26))));
+ cursor: not-allowed;
+ opacity: 1;
+ -webkit-text-fill-color: currentColor;
+}
+.t-input__control--read-only {
+ cursor: default;
+}
+.t-input--left {
+ text-align: left;
+}
+.t-input--right {
+ text-align: right;
+}
+.t-input--center {
+ text-align: center;
+}
+.t-input__placeholder {
+ color: var(--td-input-placeholder-text-color, var(--td-text-color-placeholder, var(--td-font-gray-3, rgba(0, 0, 0, 0.4))));
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-input__tips {
+ font-size: var(--td-font-size-s, 24rpx);
+ line-height: 40rpx;
+ padding-top: 8rpx;
+}
+.t-input--default + .t-input__tips {
+ color: var(--td-input-default-tips-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-input--success + .t-input__tips {
+ color: var(--td-input-success-tips-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-input--warning + .t-input__tips {
+ color: var(--td-input-warning-tips-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-input--error + .t-input__tips {
+ color: var(--td-input-error-tips-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/input/props.d.ts b/miniprogram_npm/tdesign-miniprogram/input/props.d.ts
new file mode 100644
index 0000000..1bd2f9a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/props.d.ts
@@ -0,0 +1,3 @@
+import { TdInputProps } from './type';
+declare const props: TdInputProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/input/props.js b/miniprogram_npm/tdesign-miniprogram/input/props.js
new file mode 100644
index 0000000..5b7cea3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/props.js
@@ -0,0 +1,159 @@
+const props = {
+ align: {
+ type: String,
+ value: 'left',
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+ borderless: {
+ type: Boolean,
+ value: false,
+ },
+ clearable: {
+ type: null,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ errorMessage: {
+ type: String,
+ value: '',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ format: {
+ type: null,
+ },
+ label: {
+ type: String,
+ },
+ maxcharacter: {
+ type: Number,
+ },
+ maxlength: {
+ type: Number,
+ value: -1,
+ },
+ placeholder: {
+ type: String,
+ value: undefined,
+ },
+ prefixIcon: {
+ type: null,
+ value: null,
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ status: {
+ type: String,
+ value: 'default',
+ },
+ suffix: {
+ type: String,
+ },
+ suffixIcon: {
+ type: null,
+ value: null,
+ },
+ tips: {
+ type: String,
+ },
+ value: {
+ type: String,
+ optionalTypes: [Number],
+ value: null,
+ },
+ defaultValue: {
+ type: String,
+ optionalTypes: [Number],
+ },
+ type: {
+ type: String,
+ value: 'text',
+ },
+ placeholderStyle: {
+ type: String,
+ value: '',
+ },
+ placeholderClass: {
+ type: String,
+ value: 'input-placeholder',
+ },
+ cursorSpacing: {
+ type: Number,
+ value: 0,
+ },
+ autoFocus: {
+ type: Boolean,
+ value: false,
+ },
+ focus: {
+ type: Boolean,
+ value: false,
+ },
+ confirmType: {
+ type: String,
+ value: 'done',
+ },
+ alwaysEmbed: {
+ type: Boolean,
+ value: false,
+ },
+ confirmHold: {
+ type: Boolean,
+ value: false,
+ },
+ cursor: {
+ type: Number,
+ },
+ selectionStart: {
+ type: Number,
+ value: -1,
+ },
+ selectionEnd: {
+ type: Number,
+ value: -1,
+ },
+ adjustPosition: {
+ type: Boolean,
+ value: true,
+ },
+ holdKeyboard: {
+ type: Boolean,
+ value: false,
+ },
+ safePasswordCertPath: {
+ type: String,
+ value: '',
+ },
+ safePasswordLength: {
+ type: Number,
+ },
+ safePasswordTimeStamp: {
+ type: Number,
+ },
+ safePasswordNonce: {
+ type: String,
+ value: '',
+ },
+ safePasswordSalt: {
+ type: String,
+ value: '',
+ },
+ safePasswordCustomHash: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/input/type.d.ts b/miniprogram_npm/tdesign-miniprogram/input/type.d.ts
new file mode 100644
index 0000000..451da4a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/type.d.ts
@@ -0,0 +1,174 @@
+export interface TdInputProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'left' | 'center' | 'right';
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ borderless?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ clearable?: {
+ type: null;
+ value?: boolean | object;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ errorMessage?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-input', 't-class-placeholder', 't-class-error-msg'];
+ };
+ format?: {
+ type: null;
+ value?: InputFormatType;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxcharacter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxlength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ placeholder?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ prefixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'medium' | 'small';
+ };
+ status?: {
+ type: StringConstructor;
+ value?: 'default' | 'success' | 'warning' | 'error';
+ };
+ suffix?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ suffixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ tips?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ type?: {
+ type: StringConstructor;
+ value?: 'text' | 'number' | 'idcard' | 'digit' | 'safe-password' | 'password' | 'nickname';
+ };
+ value?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: InputValue;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: InputValue;
+ };
+ placeholderStyle: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placeholderClass?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ cursorSpacing?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ autoFocus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ focus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmType?: {
+ type: StringConstructor;
+ value?: 'send' | 'search' | 'next' | 'go' | 'done';
+ };
+ alwaysEmbed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmHold?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ cursor: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ selectionStart?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ selectionEnd?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ adjustPosition?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ holdKeyboard?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ safePasswordCertPath?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ safePasswordLength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ safePasswordTimeStamp?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ safePasswordNonce?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ safePasswordSalt?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ safePasswordCustomHash?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type InputFormatType = (value: InputValue) => number | string;
+export declare type InputValue = string | number;
diff --git a/miniprogram_npm/tdesign-miniprogram/input/type.js b/miniprogram_npm/tdesign-miniprogram/input/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/input/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/link/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/link/README.en-US.md
new file mode 100644
index 0000000..3b01055
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Link Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Slot | - | \- | N
+navigator-props | Object | - | \- | N
+prefix-icon | String / Object / Slot | - | \- | N
+size | String | medium | options:small/medium/large。Typescript:`SizeEnum` | N
+status | String | normal | options:normal/active/disabled | N
+disabled | Boolean | false | \- | N
+hover | Boolean | - | \- | N
+suffix-icon | String / Object / Slot | - | \- | N
+theme | String | default | options:default/primary/danger/warning/success | N
+underline | Boolean | - | \- | N
+
+### Link Events
+
+name | params | description
+-- | -- | --
+complete | \- | \-
+fail | \- | \-
+success | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/link/README.md b/miniprogram_npm/tdesign-miniprogram/link/README.md
new file mode 100644
index 0000000..0a279a7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/README.md
@@ -0,0 +1,83 @@
+---
+title: Link 链接
+description: 文字超链接用于跳转一个新页面,如当前项目跳转,友情链接等。
+spline: navigation
+isComponent: true
+---
+
+
+
+ 该组件于 0.32.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-link": "tdesign-miniprogram/link/link",
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础文字链接
+
+{{ content }}
+
+下划线文字链接
+
+{{ underline }}
+
+前置图标文字链接
+
+{{ prefix }}
+
+后置图标文字链接
+
+{{ suffix }}
+
+### 组件状态
+
+不同主题
+
+{{ theme }}
+
+禁用状态
+
+{{ disabled }}
+
+### 组件样式
+
+链接尺寸
+
+{{ size }}
+
+## API
+### Link Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Slot | - | 链接内容 | N
+navigator-props | Object | - | 与 navigator 原生组件属性保持一致,具体使用参考:https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html。 | N
+prefix-icon | String / Object / Slot | - | 前置图标 | N
+size | String | medium | 尺寸。可选项:small/medium/large。TS 类型:`SizeEnum` | N
+status | String | normal | 已废弃。组件状态。可选项:normal/active/disabled | N
+disabled | Boolean | false | 是否为禁用态 | N
+hover | Boolean | - | 是否开启点击反馈 | N
+suffix-icon | String / Object / Slot | - | 前置图标 | N
+theme | String | default | 组件风格,依次为默认色、品牌色、危险色、警告色、成功色。可选项:default/primary/danger/warning/success | N
+underline | Boolean | - | 是否显示链接下划线 | N
+external-classes | Array | - | 样式类名。`['t-class', 't-class-hover', 't-class-prefix-icon', 't-class-content', 't-class-suffix-icon']` | N
+### Link Events
+
+名称 | 参数 | 描述
+-- | -- | --
+complete | \- | 页面链接执行完成后触发(失败或成功均会触发)
+fail | \- | 页面链接跳转失败后触发
+success | \- | 页面链接跳转成功后触发
diff --git a/miniprogram_npm/tdesign-miniprogram/link/link.d.ts b/miniprogram_npm/tdesign-miniprogram/link/link.d.ts
new file mode 100644
index 0000000..ad1b82f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/link.d.ts
@@ -0,0 +1,26 @@
+import { SuperComponent } from '../common/src/index';
+export default class Link extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdLinkProps;
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ 'theme, status, size, underline, navigatorProps'(): void;
+ prefixIcon(v: any): void;
+ suffixIcon(v: any): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ setClass(): void;
+ onSuccess(e: any): void;
+ onFail(e: any): void;
+ onComplete(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/link/link.js b/miniprogram_npm/tdesign-miniprogram/link/link.js
new file mode 100644
index 0000000..c28b1af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/link.js
@@ -0,0 +1,80 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-link`;
+let Link = class Link extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-hover`,
+ `${prefix}-class-prefix-icon`,
+ `${prefix}-class-content`,
+ `${prefix}-class-suffix-icon`,
+ ];
+ this.properties = props;
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ 'theme, status, size, underline, navigatorProps'() {
+ this.setClass();
+ },
+ prefixIcon(v) {
+ this.setData({
+ _prefixIcon: calcIcon(v),
+ });
+ },
+ suffixIcon(v) {
+ this.setData({
+ _suffixIcon: calcIcon(v),
+ });
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { theme, size, underline, navigatorProps, disabled } = this.properties;
+ const classList = [name, `${name}--${theme}`, `${name}--${size}`];
+ if (underline) {
+ classList.push(`${name}--underline`);
+ }
+ if ((navigatorProps && !navigatorProps.url) || disabled) {
+ classList.push(`${name}--disabled`);
+ }
+ this.setData({
+ className: classList.join(' '),
+ });
+ },
+ onSuccess(e) {
+ this.triggerEvent('success', e);
+ },
+ onFail(e) {
+ this.triggerEvent('fail', e);
+ },
+ onComplete(e) {
+ this.triggerEvent('complete', e);
+ },
+ };
+ }
+};
+Link = __decorate([
+ wxComponent()
+], Link);
+export default Link;
diff --git a/miniprogram_npm/tdesign-miniprogram/link/link.json b/miniprogram_npm/tdesign-miniprogram/link/link.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/link.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/link/link.wxml b/miniprogram_npm/tdesign-miniprogram/link/link.wxml
new file mode 100644
index 0000000..94acf77
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/link.wxml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/link/link.wxss b/miniprogram_npm/tdesign-miniprogram/link/link.wxss
new file mode 100644
index 0000000..1cae7ee
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/link.wxss
@@ -0,0 +1,148 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-link--small .t-link__content {
+ font-size: 24rpx;
+ line-height: 40rpx;
+}
+.t-link--small .t-link__prefix-icon,
+.t-link--small .t-link__suffix-icon {
+ font-size: 28rpx;
+}
+.t-link--medium .t-link__content {
+ font-size: 28rpx;
+ line-height: 44rpx;
+}
+.t-link--medium .t-link__prefix-icon,
+.t-link--medium .t-link__suffix-icon {
+ font-size: 32rpx;
+}
+.t-link--large .t-link__content {
+ font-size: 32rpx;
+ line-height: 48rpx;
+}
+.t-link--large .t-link__prefix-icon,
+.t-link--large .t-link__suffix-icon {
+ font-size: 36rpx;
+}
+.t-link--primary {
+ color: var(--td-link-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-link--primary.t-link--underline::after {
+ border-color: var(--td-link-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-link--primary.t-link--disabled {
+ color: var(--td-link-primary-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-link--primary.t-link--hover {
+ color: var(--td-link-primary-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--primary.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-primary-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--success {
+ color: var(--td-link-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-link--success.t-link--underline::after {
+ border-color: var(--td-link-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-link--success.t-link--disabled {
+ color: var(--td-link-success-disabled-color, var(--td-success-color-disabled, var(--td-success-color-3, #92dab2)));
+}
+.t-link--success.t-link--hover {
+ color: var(--td-link-success-active-color, var(--td-success-color-active, var(--td-success-color-6, #008858)));
+}
+.t-link--success.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-success-active-color, var(--td-success-color-active, var(--td-success-color-6, #008858)));
+}
+.t-link--warning {
+ color: var(--td-link-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-link--warning.t-link--underline::after {
+ border-color: var(--td-link-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-link--warning.t-link--disabled {
+ color: var(--td-link-warning-disabled-color, var(--td-warning-color-disabled, var(--td-warning-color-3, #ffb98c)));
+}
+.t-link--warning.t-link--hover {
+ color: var(--td-link-warning-active-color, var(--td-warning-color-active, var(--td-warning-color-6, #be5a00)));
+}
+.t-link--warning.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-warning-active-color, var(--td-warning-color-active, var(--td-warning-color-6, #be5a00)));
+}
+.t-link--default {
+ color: var(--td-link-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-link--default.t-link--underline::after {
+ border-color: var(--td-link-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-link--default.t-link--disabled {
+ color: var(--td-link-default-disabled-color, var(--td-text-color-disabled, var(--td-font-gray-4, rgba(0, 0, 0, 0.26))));
+}
+.t-link--default.t-link--hover {
+ color: var(--td-link-default-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--default.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-default-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--danger {
+ color: var(--td-link-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-link--danger.t-link--underline::after {
+ border-color: var(--td-link-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-link--danger.t-link--disabled {
+ color: var(--td-link-danger-disabled-color, var(--td-error-color-disabled, var(--td-error-color-3, #ffb9b0)));
+}
+.t-link--danger.t-link--hover {
+ color: var(--td-link-danger-active-color, var(--td-error-color-active, var(--td-error-color-7, #ad352f)));
+}
+.t-link--danger.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-danger-active-color, var(--td-error-color-active, var(--td-error-color-7, #ad352f)));
+}
+.t-link {
+ position: relative;
+ display: flex;
+ align-items: center;
+ box-sizing: content-box;
+}
+.t-link--underline::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ right: 0;
+ height: 0;
+ bottom: 0;
+ opacity: 1;
+ border-bottom: 2rpx solid #cd0be7;
+}
+.t-link__prefix-icon:not(:empty) + .t-link__content:not(:empty) {
+ padding-left: 8rpx;
+}
+.t-link__content:not(:empty) + .t-link__suffix-icon:not(:empty) {
+ padding-left: 8rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/link/props.d.ts b/miniprogram_npm/tdesign-miniprogram/link/props.d.ts
new file mode 100644
index 0000000..bbdacae
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/props.d.ts
@@ -0,0 +1,3 @@
+import { TdLinkProps } from './type';
+declare const props: TdLinkProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/link/props.js b/miniprogram_npm/tdesign-miniprogram/link/props.js
new file mode 100644
index 0000000..6e189d8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/props.js
@@ -0,0 +1,38 @@
+const props = {
+ content: {
+ type: String,
+ },
+ navigatorProps: {
+ type: Object,
+ },
+ prefixIcon: {
+ type: null,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ status: {
+ type: String,
+ value: 'normal',
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ hover: {
+ type: Boolean,
+ value: false,
+ },
+ suffixIcon: {
+ type: null,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ underline: {
+ type: Boolean,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/link/type.d.ts b/miniprogram_npm/tdesign-miniprogram/link/type.d.ts
new file mode 100644
index 0000000..6615084
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/type.d.ts
@@ -0,0 +1,43 @@
+import { SizeEnum } from '../common/common';
+export interface TdLinkProps {
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ navigatorProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ prefixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ status?: {
+ type: StringConstructor;
+ value?: 'normal' | 'active' | 'disabled';
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ hover?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ suffixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'primary' | 'danger' | 'warning' | 'success';
+ };
+ underline?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/link/type.js b/miniprogram_npm/tdesign-miniprogram/link/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/link/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/loading/README.en-US.md
new file mode 100644
index 0000000..1969d2e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/README.en-US.md
@@ -0,0 +1,21 @@
+:: BASE_DOC ::
+
+## API
+
+### Loading Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+delay | Number | 0 | \- | N
+duration | Number | 800 | \- | N
+external-classes | Array | - | `['t-class', 't-class-text', 't-class-indicator']` | N
+indicator | Boolean | true | \- | N
+inherit-color | Boolean | false | \- | N
+layout | String | horizontal | options:horizontal/vertical | N
+loading | Boolean | true | \- | N
+pause | Boolean | false | \- | N
+progress | Number | - | \- | N
+reverse | Boolean | - | \- | N
+size | String | '40rpx' | \- | N
+text | String / Slot | - | \- | N
+theme | String | circular | options:circular/spinner/dots | N
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/README.md b/miniprogram_npm/tdesign-miniprogram/loading/README.md
new file mode 100644
index 0000000..9ca1917
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/README.md
@@ -0,0 +1,70 @@
+---
+title: Loading 加载
+description: 用于表示页面或操作的加载状态,给予用户反馈的同时减缓等待的焦虑感,由一个或一组反馈动效组成。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-loading": "tdesign-miniprogram/loading/loading"
+}
+```
+
+## 代码演示
+
+### 纯icon
+
+{{ base }}
+
+### icon加文字横向
+
+{{ horizontal }}
+
+### icon加文字竖向
+
+{{ vertical }}
+
+### 纯文字
+
+{{ text }}
+
+### 加载失败
+
+{{ error }}
+
+### 状态
+
+{{ status }}
+
+### 加载速度
+
+{{ duration }}
+
+### 规格
+
+{{ size }}
+
+## API
+### Loading Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+delay | Number | 0 | 延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒 | N
+duration | Number | 800 | 加载动画执行完成一次的时间,单位:毫秒 | N
+external-classes | Array | - | 组件类名,分别用于设置加载组件外层元素,加载组件文本,加载组件指示符,加载指示符内侧同心圆等元素类名。`['t-class', 't-class-text', 't-class-indicator']` | N
+indicator | Boolean | true | 是否显示加载指示符 | N
+inherit-color | Boolean | false | 是否继承父元素颜色 | N
+layout | String | horizontal | 对齐方式。可选项:horizontal/vertical | N
+loading | Boolean | true | 是否处于加载状态 | N
+pause | Boolean | false | 是否暂停动画 | N
+progress | Number | - | 加载进度 | N
+reverse | Boolean | - | 加载动画是否反向 | N
+size | String | '40rpx' | 尺寸,示例:40rpx/20px | N
+text | String / Slot | - | 加载提示文案 | N
+theme | String | circular | 加载组件类型。可选项:circular/spinner/dots | N
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/index.d.ts b/miniprogram_npm/tdesign-miniprogram/loading/index.d.ts
new file mode 100644
index 0000000..2806bd6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/index.d.ts
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './loading';
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/index.js b/miniprogram_npm/tdesign-miniprogram/loading/index.js
new file mode 100644
index 0000000..2806bd6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/index.js
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './loading';
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/loading.d.ts b/miniprogram_npm/tdesign-miniprogram/loading/loading.d.ts
new file mode 100644
index 0000000..512396e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/loading.d.ts
@@ -0,0 +1,81 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdLoadingProps } from './type';
+export interface LoadingProps extends TdLoadingProps {
+}
+export default class Loading extends SuperComponent {
+ externalClasses: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ show: boolean;
+ };
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delay?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-text", "t-class-indicator"];
+ };
+ indicator?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ inheritColor?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: "horizontal" | "vertical";
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ pause?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ progress?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ reverse?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: "error" | "circular" | "spinner" | "bar" | "dots";
+ };
+ };
+ timer: any;
+ observers: {
+ loading(this: any, cur: any): void;
+ };
+ lifetimes: {
+ detached(): void;
+ };
+ refreshPage(): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/loading.js b/miniprogram_npm/tdesign-miniprogram/loading/loading.js
new file mode 100644
index 0000000..f59a423
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/loading.js
@@ -0,0 +1,61 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-loading`;
+let Loading = class Loading extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-text`, `${prefix}-class-indicator`];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ show: true,
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = Object.assign({}, props);
+ this.timer = null;
+ this.observers = {
+ loading(cur) {
+ const { delay } = this.properties;
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ if (cur) {
+ if (delay) {
+ this.timer = setTimeout(() => {
+ this.setData({ show: cur });
+ this.timer = null;
+ }, delay);
+ }
+ else {
+ this.setData({ show: cur });
+ }
+ }
+ else {
+ this.setData({ show: cur });
+ }
+ },
+ };
+ this.lifetimes = {
+ detached() {
+ clearTimeout(this.timer);
+ },
+ };
+ }
+ refreshPage() {
+ this.triggerEvent('reload');
+ }
+};
+Loading = __decorate([
+ wxComponent()
+], Loading);
+export default Loading;
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/loading.json b/miniprogram_npm/tdesign-miniprogram/loading/loading.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/loading.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/loading.wxml b/miniprogram_npm/tdesign-miniprogram/loading/loading.wxml
new file mode 100644
index 0000000..a619f46
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/loading.wxml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{text}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/loading.wxss b/miniprogram_npm/tdesign-miniprogram/loading/loading.wxss
new file mode 100644
index 0000000..155e4d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/loading.wxss
@@ -0,0 +1,218 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-loading {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 24rpx;
+}
+.t-loading__spinner {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+ max-width: 100%;
+ max-height: 100%;
+ animation: rotate 0.8s linear infinite;
+ color: var(--td-loading-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-loading__spinner.reverse {
+ animation-name: rotateReverse;
+}
+.t-loading__spinner--spinner {
+ animation-timing-function: steps(12);
+ color: var(--td-font-gray-1, rgba(0, 0, 0, 0.9));
+}
+.t-loading__spinner--spinner .t-loading__dot {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.t-loading__spinner--spinner .t-loading__dot::before {
+ display: block;
+ width: 5rpx;
+ height: 25%;
+ margin: 0 auto;
+ background-color: currentColor;
+ border-radius: 40%;
+ content: ' ';
+}
+.t-loading__spinner--circular .t-loading__circular {
+ border-radius: 100%;
+ width: 100%;
+ height: 100%;
+ background: conic-gradient(from 180deg at 50% 50%, rgba(255, 255, 255, 0) 0deg, rgba(255, 255, 255, 0) 60deg, currentColor 330deg, rgba(255, 255, 255, 0) 360deg);
+ mask: radial-gradient(transparent calc(50% - 1rpx), #fff 50%);
+ /* stylelint-disable-next-line */
+ -webkit-mask: radial-gradient(transparent calc(50% - 1rpx), #fff 50%);
+}
+.t-loading__spinner--dots {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ animation: none;
+}
+.t-loading__spinner--dots .t-loading__dot {
+ width: 20%;
+ height: 20%;
+ border-radius: 50%;
+ background-color: currentColor;
+ animation-duration: 1.8s;
+ animation-name: dotting;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-fill-mode: both;
+}
+.t-loading__text {
+ font-size: var(--td-loading-text-font-size, 24rpx);
+ line-height: var(--td-loading-text-line-height, 40rpx);
+}
+.t-loading__text--vertical:not(:first-child):not(:empty) {
+ margin-top: 12rpx;
+}
+.t-loading__text--horizontal:not(:first-child):not(:empty) {
+ margin-left: 16rpx;
+}
+.t-loading--vertical {
+ flex-direction: column;
+}
+.t-loading--horizontal {
+ flex-direction: row;
+ vertical-align: top;
+}
+@keyframes t-bar {
+ 0% {
+ width: 0;
+ }
+ 50% {
+ width: 70%;
+ }
+ 100% {
+ width: 80%;
+ }
+}
+@keyframes t-bar-loaded {
+ 0% {
+ height: 6rpx;
+ opacity: 1;
+ width: 90%;
+ }
+ 50% {
+ height: 6rpx;
+ opacity: 1;
+ width: 100%;
+ }
+ 100% {
+ height: 0;
+ opacity: 0;
+ width: 100%;
+ }
+}
+.t-loading__dot:nth-of-type(1) {
+ transform: rotate(30deg);
+ opacity: 0;
+}
+.t-loading__dot:nth-of-type(2) {
+ transform: rotate(60deg);
+ opacity: 0.08333333;
+}
+.t-loading__dot:nth-of-type(3) {
+ transform: rotate(90deg);
+ opacity: 0.16666667;
+}
+.t-loading__dot:nth-of-type(4) {
+ transform: rotate(120deg);
+ opacity: 0.25;
+}
+.t-loading__dot:nth-of-type(5) {
+ transform: rotate(150deg);
+ opacity: 0.33333333;
+}
+.t-loading__dot:nth-of-type(6) {
+ transform: rotate(180deg);
+ opacity: 0.41666667;
+}
+.t-loading__dot:nth-of-type(7) {
+ transform: rotate(210deg);
+ opacity: 0.5;
+}
+.t-loading__dot:nth-of-type(8) {
+ transform: rotate(240deg);
+ opacity: 0.58333333;
+}
+.t-loading__dot:nth-of-type(9) {
+ transform: rotate(270deg);
+ opacity: 0.66666667;
+}
+.t-loading__dot:nth-of-type(10) {
+ transform: rotate(300deg);
+ opacity: 0.75;
+}
+.t-loading__dot:nth-of-type(11) {
+ transform: rotate(330deg);
+ opacity: 0.83333333;
+}
+.t-loading__dot:nth-of-type(12) {
+ transform: rotate(360deg);
+ opacity: 0.91666667;
+}
+@keyframes rotate {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+@keyframes rotateReverse {
+ from {
+ transform: rotate(360deg);
+ }
+ to {
+ transform: rotate(0deg);
+ }
+}
+@keyframes dotting {
+ 0% {
+ opacity: 0.15;
+ }
+ 1% {
+ opacity: 0.8;
+ }
+ 33% {
+ opacity: 0.8;
+ }
+ 34% {
+ opacity: 0.15;
+ }
+ 100% {
+ opacity: 0.15;
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/props.d.ts b/miniprogram_npm/tdesign-miniprogram/loading/props.d.ts
new file mode 100644
index 0000000..a05a659
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/props.d.ts
@@ -0,0 +1,3 @@
+import { TdLoadingProps } from './type';
+declare const props: TdLoadingProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/props.js b/miniprogram_npm/tdesign-miniprogram/loading/props.js
new file mode 100644
index 0000000..d86ae7a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/props.js
@@ -0,0 +1,51 @@
+const props = {
+ delay: {
+ type: Number,
+ value: 0,
+ },
+ duration: {
+ type: Number,
+ value: 800,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ indicator: {
+ type: Boolean,
+ value: true,
+ },
+ inheritColor: {
+ type: Boolean,
+ value: false,
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+ loading: {
+ type: Boolean,
+ value: true,
+ },
+ pause: {
+ type: Boolean,
+ value: false,
+ },
+ progress: {
+ type: Number,
+ },
+ reverse: {
+ type: Boolean,
+ },
+ size: {
+ type: String,
+ value: '40rpx',
+ },
+ text: {
+ type: String,
+ },
+ theme: {
+ type: String,
+ value: 'circular',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/type.d.ts b/miniprogram_npm/tdesign-miniprogram/loading/type.d.ts
new file mode 100644
index 0000000..5b3aa71
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/type.d.ts
@@ -0,0 +1,58 @@
+export interface TdLoadingProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delay?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-text', 't-class-indicator'];
+ };
+ indicator?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ inheritColor?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ pause?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ progress?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ reverse?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'circular' | 'spinner' | 'bar' | 'error' | 'dots';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/loading/type.js b/miniprogram_npm/tdesign-miniprogram/loading/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/loading/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/message/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/message/README.en-US.md
new file mode 100644
index 0000000..dd3225a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/README.en-US.md
@@ -0,0 +1,29 @@
+:: BASE_DOC ::
+
+## API
+### Message Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+action | String / Slot | - | operation | N
+align | String | left | options:left/center。Typescript:`MessageAlignType` `type MessageAlignType = 'left' \| 'center'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+close-btn | String / Boolean / Object / Slot | false | \- | N
+content | String / Slot | - | \- | N
+duration | Number | 3000 | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-icon', 't-class-link', 't-class-close-btn']` | N
+icon | String / Boolean / Object/ Slot | true | Typescript:`boolean \| 'info' \| 'bell'` | N
+marquee | Boolean / Object | false | Typescript:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+offset | Array | - | Typescript:`Array` | N
+theme | String | info | options:info/success/warning/error。Typescript:`MessageThemeList` `type MessageThemeList = 'info' \| 'success' \| 'warning' \| 'error'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+visible | Boolean | false | \- | N
+default-visible | Boolean | false | uncontrolled property | N
+z-index | Number | 15000 | \- | N
+
+### Message Events
+
+name | params | description
+-- | -- | --
+action-btn-click | - | \-
+close-btn-click | - | \-
+duration-end | \- | \-
+link-click | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/message/README.md b/miniprogram_npm/tdesign-miniprogram/message/README.md
new file mode 100644
index 0000000..4660f7a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/README.md
@@ -0,0 +1,69 @@
+---
+title: Message 消息通知
+description: 用于轻量级反馈或提示,不会打断用户操作。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-message": "tdesign-miniprogram/message/message"
+}
+```
+
+### 引入 API
+
+若以 API 形式调用 Message,则需在页面 `page.js` 中引入组件 API:
+
+```js
+import Message from 'tdesign-miniprogram/message/index';
+```
+
+## 代码演示
+
+### 组件类型
+
+弹窗内容为纯文本、标题和副标题、带输入框,用 API `Message.info` 方法调用反馈类对话框。
+
+
+{{ base }}
+
+
+### 组件状态
+
+消息通知类型为普通(info)、警示(warning)、成功(success)、错误(error)
+
+{{ theme }}
+
+## API
+### Message Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+action | String / Slot | - | 已废弃。操作 | N
+align | String | left | 文本对齐方式。可选项:left/center。TS 类型:`MessageAlignType` `type MessageAlignType = 'left' \| 'center'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+close-btn | String / Boolean / Object / Slot | false | 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string ,如:'user',则显示组件内置图标。值类型为 object ,则会透传至 icon 组件。| N
+content | String / Slot | - | 用于自定义消息弹出内容 | N
+duration | Number | 3000 | 消息内置计时器,计时到达时会触发 duration-end 事件。单位:毫秒。值为 0 则表示没有计时器。 | N
+external-classes | Array | - | 样式类名,分别用于设置 组件外层、消息内容、左侧图标、操作按钮、关闭按钮等元素类名。`['t-class', 't-class-content', 't-class-icon', 't-class-link', 't-class-close-btn']` | N
+icon | String / Boolean / Object / Slot | true | 消息提醒前面的图标,可以自定义。值为 true 则根据 theme 显示对应的图标,值为 false 则不显示图标。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string ,如:'info',则显示组件内置图标。值类型为 object ,则会透传至 icon 组件。| N
+marquee | Boolean / Object | false | 跑马灯效果。speed 指速度控制;loop 指循环播放次数,值为 -1 表示循环播放,值为 0 表示不循环播放;delay 表示延迟多久开始播放。TS 类型:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+offset | Array | - | 相对于 placement 的偏移量,默认单位 rpx。示例:[-10, 20] 或 ['10rpx', '8rpx']。TS 类型:`Array` | N
+theme | String | info | 消息组件风格。可选项:info/success/warning/error。TS 类型:`MessageThemeList` `type MessageThemeList = 'info' \| 'success' \| 'warning' \| 'error'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+visible | Boolean | false | 是否显示,隐藏时默认销毁组件 | N
+default-visible | Boolean | false | 是否显示,隐藏时默认销毁组件。非受控属性 | N
+z-index | Number | 15000 | 元素层级,样式默认为 15000 | N
+link | String / Object / Slot | - | 链接名称。值为字符串表示链接名称,值为 `Object` 类型,表示透传至 `Link`。 | N
+### Message Events
+
+名称 | 参数 | 描述
+-- | -- | --
+action-btn-click | - | 已废弃。当操作按钮存在时,用户点击操作按钮时触发
+close-btn-click | - | 当关闭按钮存在时,用户点击关闭按钮触发
+duration-end | \- | 计时结束后触发
+link-click | - | 当`link`链接存在时,点击链接文本时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/message/index.d.ts b/miniprogram_npm/tdesign-miniprogram/message/index.d.ts
new file mode 100644
index 0000000..a8cf1e3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/index.d.ts
@@ -0,0 +1,17 @@
+///
+///
+///
+import { MessageProps } from './message.interface';
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+interface MessageActionOptionsType extends Optional {
+ context?: Context;
+ selector?: string;
+}
+declare const _default: {
+ info(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ success(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ warning(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ error(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ hide(options: MessageActionOptionsType): void;
+};
+export default _default;
diff --git a/miniprogram_npm/tdesign-miniprogram/message/index.js b/miniprogram_npm/tdesign-miniprogram/message/index.js
new file mode 100644
index 0000000..02b775a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/index.js
@@ -0,0 +1,46 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { MessageType } from './message.interface';
+import { getInstance } from '../common/utils';
+const showMessage = function (options, theme = MessageType.info) {
+ const { context, selector = '#t-message' } = options, otherOptions = __rest(options, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.resetData(() => {
+ instance.setData(Object.assign({ theme }, otherOptions), instance.show.bind(instance));
+ });
+ return instance;
+ }
+ console.error('未找到组件,请确认 selector && context 是否正确');
+};
+export default {
+ info(options) {
+ return showMessage(options, MessageType.info);
+ },
+ success(options) {
+ return showMessage(options, MessageType.success);
+ },
+ warning(options) {
+ return showMessage(options, MessageType.warning);
+ },
+ error(options) {
+ return showMessage(options, MessageType.error);
+ },
+ hide(options) {
+ const { context, selector = '#t-message' } = Object.assign({}, options);
+ const instance = getInstance(context, selector);
+ if (!instance) {
+ return;
+ }
+ instance.hide();
+ },
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.d.ts b/miniprogram_npm/tdesign-miniprogram/message/message.d.ts
new file mode 100644
index 0000000..0f0ef12
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.d.ts
@@ -0,0 +1,36 @@
+///
+import { SuperComponent, ComponentsOptionsType } from '../common/src/index';
+import { MessageProps } from './message.interface';
+export default class Message extends SuperComponent {
+ externalClasses: string[];
+ options: ComponentsOptionsType;
+ properties: MessageProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ loop: number;
+ animation: any[];
+ showAnimation: any[];
+ wrapTop: number;
+ };
+ observers: {
+ marquee(val: any): void;
+ 'icon, theme'(icon: any, theme: any): void;
+ link(v: any): void;
+ closeBtn(v: any): void;
+ };
+ closeTimeoutContext: number;
+ nextAnimationContext: number;
+ resetAnimation: WechatMiniprogram.Animation;
+ ready(): void;
+ memoInitalData(): void;
+ resetData(cb: () => void): void;
+ detached(): void;
+ checkAnimation(): void;
+ clearMessageAnimation(): void;
+ show(): void;
+ hide(): void;
+ reset(): void;
+ handleClose(): void;
+ handleLinkClick(): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.interface.d.ts b/miniprogram_npm/tdesign-miniprogram/message/message.interface.d.ts
new file mode 100644
index 0000000..9dce180
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.interface.d.ts
@@ -0,0 +1,24 @@
+export declare enum MessageType {
+ info = "info",
+ success = "success",
+ warning = "warning",
+ error = "error"
+}
+export interface MessageMarquee {
+ speed?: number;
+ loop?: number;
+ delay?: number;
+}
+export interface MessageProps {
+ visible?: boolean;
+ content: string;
+ align?: string;
+ theme?: MessageType;
+ icon?: boolean | string;
+ closeBtn?: boolean;
+ action?: string;
+ marquee?: MessageMarquee;
+ offset?: object;
+ duration?: number;
+ zIndex?: number;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.interface.js b/miniprogram_npm/tdesign-miniprogram/message/message.interface.js
new file mode 100644
index 0000000..b345007
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.interface.js
@@ -0,0 +1,7 @@
+export var MessageType;
+(function (MessageType) {
+ MessageType["info"] = "info";
+ MessageType["success"] = "success";
+ MessageType["warning"] = "warning";
+ MessageType["error"] = "error";
+})(MessageType || (MessageType = {}));
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.js b/miniprogram_npm/tdesign-miniprogram/message/message.js
new file mode 100644
index 0000000..73b5a65
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.js
@@ -0,0 +1,185 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect, unitConvert, calcIcon, isObject } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-message`;
+const SHOW_DURATION = 500;
+const THEME_ICON = {
+ info: 'info-circle-filled',
+ success: 'check-circle-filled',
+ warning: 'info-circle-filled',
+ error: 'error-circle-filled',
+};
+let Message = class Message extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-link`,
+ `${prefix}-class-close-btn`,
+ ];
+ this.options = {
+ styleIsolation: 'apply-shared',
+ multipleSlots: true,
+ };
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ loop: -1,
+ animation: [],
+ showAnimation: [],
+ wrapTop: -999,
+ };
+ this.observers = {
+ marquee(val) {
+ if (JSON.stringify(val) === '{}' || JSON.stringify(val) === 'true') {
+ this.setData({
+ marquee: {
+ speed: 50,
+ loop: -1,
+ delay: 0,
+ },
+ });
+ }
+ },
+ 'icon, theme'(icon, theme) {
+ this.setData({
+ _icon: calcIcon(icon, THEME_ICON[theme]),
+ });
+ },
+ link(v) {
+ const _link = isObject(v) ? Object.assign({}, v) : { content: v };
+ this.setData({ _link });
+ },
+ closeBtn(v) {
+ this.setData({
+ _closeBtn: calcIcon(v, 'close'),
+ });
+ },
+ };
+ this.closeTimeoutContext = 0;
+ this.nextAnimationContext = 0;
+ this.resetAnimation = wx.createAnimation({
+ duration: 0,
+ timingFunction: 'linear',
+ });
+ }
+ ready() {
+ this.memoInitalData();
+ }
+ memoInitalData() {
+ this.initalData = Object.assign(Object.assign({}, this.properties), this.data);
+ }
+ resetData(cb) {
+ this.setData(Object.assign({}, this.initalData), cb);
+ }
+ detached() {
+ this.clearMessageAnimation();
+ }
+ checkAnimation() {
+ const { marquee } = this.properties;
+ if (!marquee || marquee.loop === 0) {
+ return;
+ }
+ const speeding = marquee.speed;
+ if (this.data.loop > 0) {
+ this.data.loop -= 1;
+ }
+ else if (this.data.loop === 0) {
+ this.setData({ animation: this.resetAnimation.translateX(0).step().export() });
+ return;
+ }
+ if (this.nextAnimationContext) {
+ this.clearMessageAnimation();
+ }
+ const warpID = `#${name}__text-wrap`;
+ const nodeID = `#${name}__text`;
+ Promise.all([getRect(this, nodeID), getRect(this, warpID)]).then(([nodeRect, wrapRect]) => {
+ this.setData({
+ animation: this.resetAnimation.translateX(wrapRect.width).step().export(),
+ }, () => {
+ const durationTime = ((nodeRect.width + wrapRect.width) / speeding) * 1000;
+ const nextAnimation = wx
+ .createAnimation({
+ duration: durationTime,
+ })
+ .translateX(-nodeRect.width)
+ .step()
+ .export();
+ setTimeout(() => {
+ this.nextAnimationContext = setTimeout(this.checkAnimation.bind(this), durationTime);
+ this.setData({ animation: nextAnimation });
+ }, 20);
+ });
+ });
+ }
+ clearMessageAnimation() {
+ clearTimeout(this.nextAnimationContext);
+ this.nextAnimationContext = 0;
+ }
+ show() {
+ const { duration, marquee, offset } = this.properties;
+ this.setData({ visible: true, loop: marquee.loop || this.data.loop });
+ this.reset();
+ this.checkAnimation();
+ if (duration && duration > 0) {
+ this.closeTimeoutContext = setTimeout(() => {
+ this.hide();
+ this.triggerEvent('duration-end', { self: this });
+ }, duration);
+ }
+ const wrapID = `#${name}`;
+ getRect(this, wrapID).then((wrapRect) => {
+ this.setData({ wrapTop: -wrapRect.height }, () => {
+ this.setData({
+ showAnimation: wx
+ .createAnimation({ duration: SHOW_DURATION, timingFunction: 'ease' })
+ .translateY(wrapRect.height + unitConvert(offset[0]))
+ .step()
+ .export(),
+ });
+ });
+ });
+ }
+ hide() {
+ this.reset();
+ this.setData({
+ showAnimation: wx
+ .createAnimation({ duration: SHOW_DURATION, timingFunction: 'ease' })
+ .translateY(this.data.wrapTop)
+ .step()
+ .export(),
+ });
+ setTimeout(() => {
+ this.setData({ visible: false, animation: [] });
+ }, SHOW_DURATION);
+ }
+ reset() {
+ if (this.nextAnimationContext) {
+ this.clearMessageAnimation();
+ }
+ clearTimeout(this.closeTimeoutContext);
+ this.closeTimeoutContext = 0;
+ }
+ handleClose() {
+ this.hide();
+ this.triggerEvent('close-btn-click');
+ }
+ handleLinkClick() {
+ this.triggerEvent('link-click');
+ }
+};
+Message = __decorate([
+ wxComponent()
+], Message);
+export default Message;
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.json b/miniprogram_npm/tdesign-miniprogram/message/message.json
new file mode 100644
index 0000000..75c11ff
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-link": "../link/link"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.wxml b/miniprogram_npm/tdesign-miniprogram/message/message.wxml
new file mode 100644
index 0000000..0972625
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.wxml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.wxs b/miniprogram_npm/tdesign-miniprogram/message/message.wxs
new file mode 100644
index 0000000..73d503c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.wxs
@@ -0,0 +1,24 @@
+var isEmptyObj = function (obj) {
+ return JSON.stringify(obj) === '{}';
+};
+
+var changeNumToStr = function (arr) {
+ return arr.map(function (item) {
+ return typeof item === 'number' ? item + 'rpx' : item;
+ });
+};
+
+var getMessageStyles = function (zIndex, offset, wrapTop) {
+ var arr = changeNumToStr(offset);
+ var styleOffset = '';
+ styleOffset += 'top:' + changeNumToStr([wrapTop * 2]) + ';';
+ styleOffset += 'right:' + arr[1] + ';';
+ styleOffset += 'left:' + arr[1] + ';';
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return zIndexStyle + styleOffset;
+};
+
+module.exports = {
+ getMessageStyles: getMessageStyles,
+ isEmptyObj: isEmptyObj,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/message/message.wxss b/miniprogram_npm/tdesign-miniprogram/message/message.wxss
new file mode 100644
index 0000000..c782833
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/message.wxss
@@ -0,0 +1,86 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-message {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ display: flex;
+ justify-content: flex-start;
+ height: 96rpx;
+ align-items: center;
+ z-index: 15000;
+ padding: 0 32rpx;
+ box-sizing: border-box;
+ border-radius: var(--td-message-border-radius, var(--td-radius-default, 12rpx));
+ line-height: 1;
+ background-color: var(--td-message-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ box-shadow: var(--td-message-box-shadow, var(--td-shadow-4, 0 2px 8px 0 rgba(0, 0, 0, 0.06)));
+}
+.t-message__text {
+ display: inline-block;
+ color: var(--td-message-content-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-font-size-base, 28rpx);
+ line-height: 44rpx;
+}
+.t-message__text-wrap {
+ flex: 1 1 auto;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+.t-message__text-nowrap {
+ word-break: keep-all;
+ white-space: nowrap;
+}
+.t-message--info {
+ color: var(--td-message-info-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-message--success {
+ color: var(--td-message-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-message--warning {
+ color: var(--td-message-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-message--error {
+ color: var(--td-message-error-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-message__icon--left,
+.t-message__icon--right {
+ font-size: 44rpx;
+}
+.t-message__icon--left:not(:empty) {
+ margin-right: var(--td-spacer, 16rpx);
+}
+.t-message__icon--right {
+ color: var(--td-message-close-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-message__icon--right:not(:empty),
+.t-message__link {
+ flex: 0 0 auto;
+ margin-left: var(--td-spacer, 16rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/message/props.d.ts b/miniprogram_npm/tdesign-miniprogram/message/props.d.ts
new file mode 100644
index 0000000..c5a8f65
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/props.d.ts
@@ -0,0 +1,3 @@
+import { TdMessageProps } from './type';
+declare const props: TdMessageProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/message/props.js b/miniprogram_npm/tdesign-miniprogram/message/props.js
new file mode 100644
index 0000000..8a1188a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/props.js
@@ -0,0 +1,54 @@
+const props = {
+ action: {
+ type: String,
+ },
+ align: {
+ type: String,
+ value: 'left',
+ },
+ closeBtn: {
+ type: null,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ duration: {
+ type: Number,
+ value: 3000,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: true,
+ },
+ marquee: {
+ type: null,
+ value: false,
+ },
+ offset: {
+ type: Array,
+ },
+ theme: {
+ type: String,
+ value: 'info',
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+ zIndex: {
+ type: Number,
+ value: 15000,
+ },
+ link: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/message/type.d.ts b/miniprogram_npm/tdesign-miniprogram/message/type.d.ts
new file mode 100644
index 0000000..10c7570
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/type.d.ts
@@ -0,0 +1,69 @@
+export interface TdMessageProps {
+ action?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ align?: {
+ type: StringConstructor;
+ value?: MessageAlignType;
+ };
+ closeBtn?: {
+ type: null;
+ value?: string | boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-icon', 't-class-action', 't-class-close-btn'];
+ };
+ icon?: {
+ type: null;
+ value?: boolean | 'info' | 'bell';
+ };
+ marquee?: {
+ type: null;
+ value?: boolean | DrawMarquee;
+ };
+ offset?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: MessageThemeList;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ link?: {
+ type: null;
+ value?: string | object;
+ };
+}
+export declare type MessageAlignType = 'left' | 'center';
+export interface DrawMarquee {
+ speed?: number;
+ loop?: number;
+ delay?: number;
+}
+export declare type MessageThemeList = 'info' | 'success' | 'warning' | 'error';
diff --git a/miniprogram_npm/tdesign-miniprogram/message/type.js b/miniprogram_npm/tdesign-miniprogram/message/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/message/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/miniprogram_npm/dayjs/index.js b/miniprogram_npm/tdesign-miniprogram/miniprogram_npm/dayjs/index.js
new file mode 100644
index 0000000..ba16e65
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/miniprogram_npm/dayjs/index.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)
+///
+declare type IPageScrollOption = WechatMiniprogram.Page.IPageScrollOption;
+declare type Scroller = (this: WechatMiniprogram.Component.TrivialInstance, event?: IPageScrollOption) => void;
+declare const _default: (scroller: Scroller) => string;
+export default _default;
diff --git a/miniprogram_npm/tdesign-miniprogram/mixins/page-scroll.js b/miniprogram_npm/tdesign-miniprogram/mixins/page-scroll.js
new file mode 100644
index 0000000..b9f1345
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/mixins/page-scroll.js
@@ -0,0 +1,37 @@
+import { getCurrentPage } from '../common/utils';
+const onPageScroll = function (event) {
+ const page = getCurrentPage();
+ if (!page)
+ return;
+ const { pageScroller } = page;
+ pageScroller.forEach((scroller) => {
+ if (typeof scroller === 'function') {
+ scroller(event);
+ }
+ });
+};
+export default (scroller) => {
+ return Behavior({
+ attached() {
+ const page = getCurrentPage();
+ if (!page)
+ return;
+ const bindScroller = scroller.bind(this);
+ if (Array.isArray(page.pageScroller)) {
+ page.pageScroller.push(bindScroller);
+ }
+ else {
+ page.pageScroller =
+ typeof page.onPageScroll === 'function' ? [page.onPageScroll.bind(page), bindScroller] : [bindScroller];
+ }
+ page.onPageScroll = onPageScroll;
+ },
+ detached() {
+ var _a;
+ const page = getCurrentPage();
+ if (!page)
+ return;
+ page.pageScroller = ((_a = page.pageScroller) === null || _a === void 0 ? void 0 : _a.filter((item) => item !== scroller)) || [];
+ },
+ });
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/mixins/touch.d.ts b/miniprogram_npm/tdesign-miniprogram/mixins/touch.d.ts
new file mode 100644
index 0000000..ae80eca
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/mixins/touch.d.ts
@@ -0,0 +1,2 @@
+declare const _default: string;
+export default _default;
diff --git a/miniprogram_npm/tdesign-miniprogram/mixins/touch.js b/miniprogram_npm/tdesign-miniprogram/mixins/touch.js
new file mode 100644
index 0000000..cbabccc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/mixins/touch.js
@@ -0,0 +1,35 @@
+const MinDistance = 10;
+const getDirection = (x, y) => {
+ if (x > y && x > MinDistance) {
+ return 'horizontal';
+ }
+ if (y > x && y > MinDistance) {
+ return 'vertical';
+ }
+ return '';
+};
+export default Behavior({
+ methods: {
+ resetTouchStatus() {
+ this.direction = '';
+ this.deltaX = 0;
+ this.deltaY = 0;
+ this.offsetX = 0;
+ this.offsetY = 0;
+ },
+ touchStart(event) {
+ this.resetTouchStatus();
+ const [touch] = event.touches;
+ this.startX = touch.clientX;
+ this.startY = touch.clientY;
+ },
+ touchMove(event) {
+ const [touch] = event.touches;
+ this.deltaX = touch.clientX - this.startX;
+ this.deltaY = touch.clientY - this.startY;
+ this.offsetX = Math.abs(this.deltaX);
+ this.offsetY = Math.abs(this.deltaY);
+ this.direction = getDirection(this.offsetX, this.offsetY);
+ },
+ },
+});
diff --git a/miniprogram_npm/tdesign-miniprogram/mixins/transition.d.ts b/miniprogram_npm/tdesign-miniprogram/mixins/transition.d.ts
new file mode 100644
index 0000000..8c23e35
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/mixins/transition.d.ts
@@ -0,0 +1 @@
+export default function transition(): string;
diff --git a/miniprogram_npm/tdesign-miniprogram/mixins/transition.js b/miniprogram_npm/tdesign-miniprogram/mixins/transition.js
new file mode 100644
index 0000000..ee5215a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/mixins/transition.js
@@ -0,0 +1,123 @@
+import config from '../common/config';
+const { prefix } = config;
+export default function transition() {
+ return Behavior({
+ properties: {
+ visible: {
+ type: Boolean,
+ value: null,
+ observer: 'watchVisible',
+ },
+ appear: Boolean,
+ name: {
+ type: String,
+ value: 'fade',
+ },
+ durations: {
+ type: Number,
+ optionalTypes: [Array],
+ },
+ },
+ data: {
+ transitionClass: '',
+ transitionDurations: 300,
+ className: '',
+ realVisible: false,
+ },
+ created() {
+ this.status = '';
+ this.transitionT = 0;
+ },
+ attached() {
+ this.durations = this.getDurations();
+ if (this.data.visible) {
+ this.enter();
+ }
+ this.inited = true;
+ },
+ detached() {
+ clearTimeout(this.transitionT);
+ },
+ methods: {
+ watchVisible(curr, prev) {
+ if (this.inited && curr !== prev) {
+ curr ? this.enter() : this.leave();
+ }
+ },
+ getDurations() {
+ const { durations } = this.data;
+ if (Array.isArray(durations)) {
+ return durations.map((item) => Number(item));
+ }
+ return [Number(durations), Number(durations)];
+ },
+ enter() {
+ const { name } = this.data;
+ const [duration] = this.durations;
+ this.status = 'entering';
+ this.setData({
+ realVisible: true,
+ transitionClass: `${prefix}-${name}-enter ${prefix}-${name}-enter-active`,
+ });
+ setTimeout(() => {
+ this.setData({
+ transitionClass: `${prefix}-${name}-enter-active ${prefix}-${name}-enter-to`,
+ });
+ }, 30);
+ if (typeof duration === 'number' && duration > 0) {
+ this.transitionT = setTimeout(this.entered.bind(this), duration + 30);
+ }
+ },
+ entered() {
+ this.customDuration = false;
+ clearTimeout(this.transitionT);
+ this.status = 'entered';
+ this.setData({
+ transitionClass: '',
+ });
+ },
+ leave() {
+ const { name } = this.data;
+ const [, duration] = this.durations;
+ this.status = 'leaving';
+ this.setData({
+ transitionClass: `${prefix}-${name}-leave ${prefix}-${name}-leave-active`,
+ });
+ clearTimeout(this.transitionT);
+ setTimeout(() => {
+ this.setData({
+ transitionClass: `${prefix}-${name}-leave-active ${prefix}-${name}-leave-to`,
+ });
+ }, 30);
+ if (typeof duration === 'number' && duration > 0) {
+ this.customDuration = true;
+ this.transitionT = setTimeout(this.leaved.bind(this), duration + 30);
+ }
+ },
+ leaved() {
+ this.customDuration = false;
+ this.triggerEvent('leaved');
+ clearTimeout(this.transitionT);
+ this.status = 'leaved';
+ this.setData({
+ transitionClass: '',
+ });
+ },
+ onTransitionEnd() {
+ if (this.customDuration) {
+ return;
+ }
+ clearTimeout(this.transitionT);
+ if (this.status === 'entering' && this.data.visible) {
+ this.entered();
+ }
+ else if (this.status === 'leaving' && !this.data.visible) {
+ this.leaved();
+ this.setData({
+ realVisible: false,
+ });
+ }
+ },
+ },
+ });
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/navbar/README.en-US.md
new file mode 100644
index 0000000..dccf25e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+### Navbar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+animation | Boolean | true | \- | N
+capsule | Slot | - | \- | N
+delta | Number | 1 | \- | N
+external-classes | Array | - | `['t-class', 't-class-title', 't-class-left', 't-class-center', 't-class-capsule']` | N
+fixed | Boolean | true | \- | N
+left | Slot | - | `0.26.0` | N
+left-arrow | Boolean | false | `0.26.0` | N
+title | String / Slot | - | page title | N
+title-max-length | Number | - | \- | N
+visible | Boolean | true | \- | N
+
+### Navbar Events
+
+name | params | description
+-- | -- | --
+complete | \- | \-
+fail | \- | \-
+go-back | \- | \-
+success | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/README.md b/miniprogram_npm/tdesign-miniprogram/navbar/README.md
new file mode 100644
index 0000000..793fae0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/README.md
@@ -0,0 +1,68 @@
+---
+title: Navbar 导航栏
+description: 用于不同页面之间切换或者跳转,位于内容区的上方,系统状态栏的下方。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-navbar": "tdesign-miniprogram/navbar/navbar",
+}
+```
+
+## 代码演示
+
+### 基础导航栏
+
+{{ base }}
+
+### 胶囊样式导航栏
+
+{{ back-home }}
+
+### 带搜索导航栏
+
+{{ search }}
+
+### 带图片导航栏
+
+{{ img }}
+
+### 组件样式
+
+{{ left-title }}
+
+### 自定义颜色
+
+{{ custom-color }}
+
+## API
+### Navbar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+animation | Boolean | true | 是否添加动画效果 | N
+capsule | Slot | - | 左侧胶囊区域 | N
+delta | Number | 1 | 后退按钮后退层数,含义参考 [wx.navigateBack](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html),特殊的,传入 0 不会发生执行 wx.navigateBack | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、标题、左侧图标、首页图标、胶囊等元素类名。`['t-class', 't-class-title', 't-class-left', 't-class-center', 't-class-capsule']` | N
+fixed | Boolean | true | 是否固定在顶部 | N
+left | Slot | - | `0.26.0`。左侧内容区域 | N
+left-arrow | Boolean | false | `0.26.0`。是否展示左侧箭头 | N
+title | String / Slot | - | 页面标题 | N
+title-max-length | Number | - | 标题文字最大长度,超出的范围使用 `...` 表示 | N
+visible | Boolean | true | 是否显示 | N
+
+### Navbar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+complete | \- | navigateBack 执行完成后触发(失败或成功均会触发)
+fail | \- | navigateBack 执行失败后触发
+go-back | \- | 点击左侧箭头时触发
+success | \- | navigateBack 执行成功后触发
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/navbar.d.ts b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.d.ts
new file mode 100644
index 0000000..dd7a94d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent } from '../common/src/index';
+export default class Navbar extends SuperComponent {
+ externalClasses: string[];
+ timer: any;
+ options: {
+ addGlobalClass: boolean;
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdNavbarProps;
+ observers: {
+ visible(this: Navbar, visible: any): void;
+ 'title,titleMaxLength'(this: any): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ boxStyle: string;
+ showTitle: string;
+ };
+ attached(): void;
+ methods: {
+ goBack(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/navbar.js b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.js
new file mode 100644
index 0000000..b222517
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.js
@@ -0,0 +1,118 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-navbar`;
+let Navbar = class Navbar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-title`,
+ `${prefix}-class-left`,
+ `${prefix}-class-center`,
+ `${prefix}-class-left-icon`,
+ `${prefix}-class-home-icon`,
+ `${prefix}-class-capsule`,
+ `${prefix}-class-nav-btn`,
+ ];
+ this.timer = null;
+ this.options = {
+ addGlobalClass: true,
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.observers = {
+ visible(visible) {
+ const { animation } = this.properties;
+ const visibleClass = `${name}${visible ? '--visible' : '--hide'}`;
+ this.setData({
+ visibleClass: `${visibleClass}${animation ? '-animation' : ''}`,
+ });
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ if (animation) {
+ this.timer = setTimeout(() => {
+ this.setData({
+ visibleClass,
+ });
+ }, 300);
+ }
+ },
+ 'title,titleMaxLength'() {
+ const { title } = this.properties;
+ const titleMaxLength = this.properties.titleMaxLength || Number.MAX_SAFE_INTEGER;
+ let temp = title.slice(0, titleMaxLength);
+ if (titleMaxLength < title.length)
+ temp += '...';
+ this.setData({
+ showTitle: temp,
+ });
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ boxStyle: '',
+ showTitle: '',
+ };
+ this.methods = {
+ goBack() {
+ const { delta } = this.data;
+ const that = this;
+ this.triggerEvent('go-back');
+ if (delta > 0) {
+ wx.navigateBack({
+ delta,
+ fail(e) {
+ that.triggerEvent('fail', e);
+ },
+ complete(e) {
+ that.triggerEvent('complete', e);
+ },
+ success(e) {
+ that.triggerEvent('success', e);
+ },
+ });
+ }
+ },
+ };
+ }
+ attached() {
+ let rect = null;
+ if (wx.getMenuButtonBoundingClientRect) {
+ rect = wx.getMenuButtonBoundingClientRect();
+ }
+ if (!rect)
+ return;
+ wx.getSystemInfo({
+ success: (res) => {
+ const boxStyleList = [];
+ const { statusBarHeight } = wx.getSystemInfoSync();
+ boxStyleList.push(`--td-navbar-padding-top:${statusBarHeight}px`);
+ if (rect && (res === null || res === void 0 ? void 0 : res.windowWidth)) {
+ boxStyleList.push(`--td-navbar-right:${res.windowWidth - rect.left}px`);
+ }
+ boxStyleList.push(`--td-navbar-capsule-height: ${rect.height}px`);
+ boxStyleList.push(`--td-navbar-capsule-width:${rect.width}px`);
+ this.setData({
+ boxStyle: `${boxStyleList.join('; ')}`,
+ });
+ },
+ fail: (err) => {
+ console.error('navbar 获取系统信息失败', err);
+ },
+ });
+ }
+};
+Navbar = __decorate([
+ wxComponent()
+], Navbar);
+export default Navbar;
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/navbar.json b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/navbar.wxml b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.wxml
new file mode 100644
index 0000000..588039a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{showTitle}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/navbar.wxss b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.wxss
new file mode 100644
index 0000000..cbaed3a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/navbar.wxss
@@ -0,0 +1,122 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-navbar--fixed .t-navbar__content {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 5001;
+}
+.t-navbar--visible {
+ display: '';
+}
+.t-navbar--visible-animation {
+ opacity: 1;
+ transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.t-navbar--hide-animation {
+ opacity: 0;
+ transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.t-navbar--hide {
+ display: none;
+}
+.t-navbar__placeholder {
+ height: var(--td-navbar-height, 96rpx);
+ padding-top: var(--td-navbar-padding-top, 40rpx);
+ position: relative;
+ visibility: hidden;
+}
+.t-navbar__content {
+ position: relative;
+ z-index: 1;
+ height: var(--td-navbar-height, 96rpx);
+ width: calc(100% - var(--td-navbar-right, 190rpx));
+ padding-right: var(--td-navbar-right, 190rpx);
+ padding-top: var(--td-navbar-padding-top, 40rpx);
+ color: var(--td-navbar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background-color: var(--td-navbar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ display: flex;
+ align-items: center;
+}
+.t-navbar__left {
+ position: relative;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ margin-left: var(--td-spacer-1, 24rpx);
+}
+.t-navbar__left-arrow {
+ font-size: var(--td-navbar-left-arrow-size, 48rpx);
+}
+.t-navbar__capsule {
+ box-sizing: border-box;
+ width: var(--td-navbar-capsule-width, 176rpx);
+ height: var(--td-navbar-capsule-height, 64rpx);
+ display: flex;
+ align-items: center;
+}
+.t-navbar__capsule::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ box-sizing: border-box;
+ border-radius: calc(var(--td-navbar-capsule-border-radius, 32rpx) * 2);
+ border: 2rpx solid var(--td-navbar-capsule-border-color, #e3e6ea);
+}
+.t-navbar__capsule:empty {
+ display: none;
+}
+.t-navbar__center {
+ font-size: 36rpx;
+ text-align: center;
+ position: absolute;
+ left: var(--td-navbar-right, 190rpx);
+ width: calc(100% - var(--td-navbar-right, 190rpx) * 2);
+ height: var(--td-navbar-height, 96rpx);
+ line-height: var(--td-navbar-height, 96rpx);
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+}
+.t-navbar__center:empty {
+ display: none;
+}
+.t-navbar__center-title {
+ font-size: var(--td-navbar-title-font-size, 36rpx);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ font-weight: var(--td-navbar-title-font-weight, 600);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/props.d.ts b/miniprogram_npm/tdesign-miniprogram/navbar/props.d.ts
new file mode 100644
index 0000000..168bee2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdNavbarProps } from './type';
+declare const props: TdNavbarProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/props.js b/miniprogram_npm/tdesign-miniprogram/navbar/props.js
new file mode 100644
index 0000000..17e637c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/props.js
@@ -0,0 +1,32 @@
+const props = {
+ animation: {
+ type: Boolean,
+ value: true,
+ },
+ delta: {
+ type: Number,
+ value: 1,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ fixed: {
+ type: Boolean,
+ value: true,
+ },
+ leftArrow: {
+ type: Boolean,
+ value: false,
+ },
+ title: {
+ type: String,
+ },
+ titleMaxLength: {
+ type: Number,
+ },
+ visible: {
+ type: Boolean,
+ value: true,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/navbar/type.d.ts
new file mode 100644
index 0000000..5034319
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdNavbarProps {
+ animation?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delta?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-title', 't-class-left-icon', 't-class-home-icon', 't-class-capsule'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ leftArrow?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ titleMaxLength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/navbar/type.js b/miniprogram_npm/tdesign-miniprogram/navbar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/navbar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/notice-bar/README.en-US.md
new file mode 100644
index 0000000..6d98c4a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/README.en-US.md
@@ -0,0 +1,23 @@
+:: BASE_DOC ::
+
+## API
+### NoticeBar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Array / Slot | - | \- | N
+direction | String | horizontal | options:horizontal/vertical | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-prefix-icon', 't-class-operation', 't-class-suffix-icon']` | N
+operation | String / Slot | - | \- | N
+marquee | Boolean / Object | false | Typescript:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts) | N
+prefix-icon | String / Boolean/ Object / Slot | - | \- | N
+suffix-icon | String / Boolean / Object / Slot | - | \- | N
+theme | String | info | options:info/success/warning/error | N
+visible | Boolean | false | \- | N
+default-visible | Boolean | false | uncontrolled property | N
+
+### NoticeBar Events
+
+name | params | description
+-- | -- | --
+click | `(trigger: NoticeBarTrigger)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts)。
`type NoticeBarTrigger = 'prefix-icon' \| 'content' \| 'operation' \| 'suffix-icon';`
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/README.md b/miniprogram_npm/tdesign-miniprogram/notice-bar/README.md
new file mode 100644
index 0000000..d236cec
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/README.md
@@ -0,0 +1,88 @@
+---
+title: NoticeBar 公告栏
+description: 在导航栏下方,用于给用户显示提示消息。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.9.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-notice-bar": "tdesign-miniprogram/notice-bar/notice-bar"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+纯文字的公告栏
+
+{{ base }}
+
+带图标的公告栏
+
+{{ iconDemo }}
+
+带关闭的公告栏
+
+{{ suffixIcon }}
+
+带入口的公告栏
+
+{{ event }}
+
+自定义样式的公告栏
+
+{{ custom }}
+
+自定义内容的公告栏
+
+{{ customization }}
+
+### 02 组件状态
+
+公告栏类型有普通(info)、警示(warning)、成功(success)、错误(error)
+
+{{ theme }}
+
+### 03 可滚动公告栏
+
+可滚动公告栏有水平(horizontal)和垂直(vertical)
+
+{{ scrolling }}
+
+
+## API
+### NoticeBar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Array / Slot | - | 文本内容 | N
+direction | String | horizontal | 滚动方向。可选项:horizontal/vertical | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、文本内容、前缀图标、右侧额外信息、后缀图标 等元素类名。。`['t-class', 't-class-content', 't-class-prefix-icon', 't-class-operation', 't-class-suffix-icon']` | N
+operation | String / Slot | - | 右侧额外信息 | N
+marquee | Boolean / Object | false | 跑马灯效果。speed 指速度控制;loop 指循环播放次数,值为 -1 表示循环播放,值为 0 表示不循环播放;delay 表示延迟多久开始播放【仅在 direction='horizontal' 有效】。TS 类型:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts) | N
+prefix-icon | String / Boolean / Object / Slot | - | 前缀图标。值为字符串表示图标名称,值为 `false` 表示不显示前缀图标,值为 `Object` 类型,表示透传至 `icon`,不传表示使用主题图标。| N
+suffix-icon | String / Object / Slot | - | 后缀图标。值为字符串表示图标名称。值为 `Object` 类型,表示透传至 `icon`,不传表示不显示后缀图标。 | N
+theme | String | info | 内置主题。可选项:info/success/warning/error | N
+visible | Boolean | false | 显示/隐藏 | N
+default-visible | Boolean | false | 显示/隐藏。非受控属性 | N
+
+### NoticeBar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `(trigger: NoticeBarTrigger)` | 点击事件。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts)。
`type NoticeBarTrigger = 'prefix-icon' \| 'content' \| 'operation' \| 'suffix-icon';`
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.d.ts b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.d.ts
new file mode 100644
index 0000000..f408942
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.d.ts
@@ -0,0 +1,34 @@
+import { SuperComponent, ComponentsOptionsType } from '../common/src/index';
+export default class NoticeBar extends SuperComponent {
+ externalClasses: string[];
+ options: ComponentsOptionsType;
+ properties: import("./type").TdNoticeBarProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ loop: number;
+ };
+ observers: {
+ marquee(val: any): void;
+ visible(visible: any): void;
+ prefixIcon(prefixIcon: any): void;
+ suffixIcon(v: any): void;
+ content(): void;
+ };
+ lifetimes: {
+ created(): void;
+ detached(): void;
+ ready(): void;
+ };
+ methods: {
+ initAnimation(): void;
+ startScrollAnimation(isFirstScroll?: boolean): void;
+ show(): void;
+ clearNoticeBarAnimation(): void;
+ setPrefixIcon(v: any): void;
+ clickPrefixIcon(): void;
+ clickContent(): void;
+ clickSuffixIcon(): void;
+ clickOperation(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.js b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.js
new file mode 100644
index 0000000..dbd43c7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.js
@@ -0,0 +1,180 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import { getRect, getAnimationFrame, calcIcon } from '../common/utils';
+import props from './props';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-notice-bar`;
+const THEME_ICON = {
+ info: 'info-circle-filled',
+ success: 'check-circle-filled',
+ warning: 'info-circle-filled',
+ error: 'error-circle-filled',
+};
+let NoticeBar = class NoticeBar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-prefix-icon`,
+ `${prefix}-class-operation`,
+ `${prefix}-class-suffix-icon`,
+ ];
+ this.options = {
+ styleIsolation: 'apply-shared',
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ loop: -1,
+ };
+ this.observers = {
+ marquee(val) {
+ if (JSON.stringify(val) === '{}' || JSON.stringify(val) === 'true') {
+ this.setData({
+ marquee: {
+ speed: 50,
+ loop: -1,
+ delay: 0,
+ },
+ });
+ }
+ },
+ visible(visible) {
+ if (visible) {
+ this.show();
+ }
+ else {
+ this.clearNoticeBarAnimation();
+ }
+ },
+ prefixIcon(prefixIcon) {
+ this.setPrefixIcon(prefixIcon);
+ },
+ suffixIcon(v) {
+ this.setData({
+ _suffixIcon: calcIcon(v),
+ });
+ },
+ content() {
+ this.clearNoticeBarAnimation();
+ this.initAnimation();
+ },
+ };
+ this.lifetimes = {
+ created() {
+ this.resetAnimation = wx.createAnimation({
+ duration: 0,
+ timingFunction: 'linear',
+ });
+ },
+ detached() {
+ this.clearNoticeBarAnimation();
+ },
+ ready() {
+ this.show();
+ },
+ };
+ this.methods = {
+ initAnimation() {
+ const warpID = `.${name}__content-wrap`;
+ const nodeID = `.${name}__content`;
+ getAnimationFrame(this, () => {
+ Promise.all([getRect(this, nodeID), getRect(this, warpID)]).then(([nodeRect, wrapRect]) => {
+ const { marquee } = this.properties;
+ if (nodeRect == null || wrapRect == null || !nodeRect.width || !wrapRect.width) {
+ return;
+ }
+ if (marquee || wrapRect.width < nodeRect.width) {
+ const speeding = marquee.speed || 50;
+ const delaying = marquee.delay || 0;
+ const animationDuration = ((wrapRect.width + nodeRect.width) / speeding) * 1000;
+ const firstAnimationDuration = (nodeRect.width / speeding) * 1000;
+ this.setData({
+ wrapWidth: Number(wrapRect.width),
+ nodeWidth: Number(nodeRect.width),
+ animationDuration: animationDuration,
+ delay: delaying,
+ loop: marquee.loop - 1,
+ firstAnimationDuration: firstAnimationDuration,
+ });
+ marquee.loop !== 0 && this.startScrollAnimation(true);
+ }
+ });
+ });
+ },
+ startScrollAnimation(isFirstScroll = false) {
+ this.clearNoticeBarAnimation();
+ const { wrapWidth, nodeWidth, firstAnimationDuration, animationDuration, delay } = this.data;
+ const delayTime = isFirstScroll ? delay : 0;
+ const durationTime = isFirstScroll ? firstAnimationDuration : animationDuration;
+ this.setData({
+ animationData: this.resetAnimation
+ .translateX(isFirstScroll ? 0 : wrapWidth)
+ .step()
+ .export(),
+ });
+ getAnimationFrame(this, () => {
+ this.setData({
+ animationData: wx
+ .createAnimation({ duration: durationTime, timingFunction: 'linear', delay: delayTime })
+ .translateX(-nodeWidth)
+ .step()
+ .export(),
+ });
+ });
+ this.nextAnimationContext = setTimeout(() => {
+ if (this.data.loop > 0) {
+ this.data.loop -= 1;
+ this.startScrollAnimation();
+ }
+ else if (this.data.loop === 0) {
+ this.setData({ animationData: this.resetAnimation.translateX(0).step().export() });
+ }
+ else if (this.data.loop < 0) {
+ this.startScrollAnimation();
+ }
+ }, durationTime + delayTime);
+ },
+ show() {
+ this.clearNoticeBarAnimation();
+ this.setPrefixIcon(this.properties.prefixIcon);
+ this.initAnimation();
+ },
+ clearNoticeBarAnimation() {
+ this.nextAnimationContext && clearTimeout(this.nextAnimationContext);
+ this.nextAnimationContext = null;
+ },
+ setPrefixIcon(v) {
+ const { theme } = this.properties;
+ this.setData({
+ _prefixIcon: calcIcon(v, THEME_ICON[theme]),
+ });
+ },
+ clickPrefixIcon() {
+ this.triggerEvent('click', { trigger: 'prefix-icon' });
+ },
+ clickContent() {
+ this.triggerEvent('click', { trigger: 'content' });
+ },
+ clickSuffixIcon() {
+ this.triggerEvent('click', { trigger: 'suffix-icon' });
+ },
+ clickOperation() {
+ this.triggerEvent('click', { trigger: 'operation' });
+ },
+ };
+ }
+};
+NoticeBar = __decorate([
+ wxComponent()
+], NoticeBar);
+export default NoticeBar;
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.json b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.json
new file mode 100644
index 0000000..ef9e100
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-button": "../button/button"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.wxml b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.wxml
new file mode 100644
index 0000000..5986e43
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.wxml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+ {{content}}
+
+
+ {{operation}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.wxss b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.wxss
new file mode 100644
index 0000000..ac596ad
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/notice-bar.wxss
@@ -0,0 +1,93 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-notice-bar {
+ display: flex;
+ align-items: flex-start;
+ padding: 26rpx 32rpx;
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-notice-bar__content-wrap {
+ flex: 1;
+ overflow-x: hidden;
+ line-height: 44rpx;
+ color: var(--td-notice-bar-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-notice-bar__content {
+ display: inline-block;
+ white-space: nowrap;
+}
+.t-notice-bar__content-wrapable {
+ white-space: normal;
+}
+.t-notice-bar__content--vertical {
+ height: 44rpx;
+ line-height: 44rpx;
+}
+.t-notice-bar__content--vertical-item {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.t-notice-bar__prefix-icon {
+ color: inherit;
+}
+.t-notice-bar__prefix-icon:not(:empty) {
+ padding-right: var(--td-spacer, 16rpx);
+}
+.t-notice-bar__suffix-icon {
+ color: var(--td-notice-bar-suffix-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-notice-bar__prefix-icon,
+.t-notice-bar__suffix-icon {
+ font-size: 44rpx;
+}
+.t-notice-bar__operation {
+ display: inline-flex;
+ vertical-align: top;
+ color: var(--td-notice-bar-operation-font-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: 700;
+}
+.t-notice-bar__suffix-icon:not(:empty) {
+ padding-left: var(--td-spacer, 16rpx);
+}
+.t-notice-bar--info {
+ color: var(--td-notice-bar-info-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-notice-bar-info-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-notice-bar--success {
+ color: var(--td-notice-bar-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-notice-bar-success-bg-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-notice-bar--warning {
+ color: var(--td-notice-bar-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-notice-bar-warning-bg-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-notice-bar--error {
+ color: var(--td-notice-bar-error-color, var(--td-error-color-6, #d54941));
+ background-color: var(--td-notice-bar-error-bg-color, var(--td-error-color-1, #fff0ed));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/props.d.ts b/miniprogram_npm/tdesign-miniprogram/notice-bar/props.d.ts
new file mode 100644
index 0000000..5fe19dc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdNoticeBarProps } from './type';
+declare const props: TdNoticeBarProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/props.js b/miniprogram_npm/tdesign-miniprogram/notice-bar/props.js
new file mode 100644
index 0000000..57db91a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/props.js
@@ -0,0 +1,40 @@
+const props = {
+ content: {
+ type: null,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ operation: {
+ type: String,
+ },
+ marquee: {
+ type: null,
+ value: false,
+ },
+ prefixIcon: {
+ type: null,
+ value: true,
+ },
+ suffixIcon: {
+ type: null,
+ value: null,
+ },
+ theme: {
+ type: String,
+ value: 'info',
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/notice-bar/type.d.ts
new file mode 100644
index 0000000..5e11cd1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/type.d.ts
@@ -0,0 +1,51 @@
+export interface TdNoticeBarProps {
+ content?: {
+ type: null;
+ value?: null;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-prefix-icon', 't-class-operation', 't-class-suffix-icon'];
+ };
+ operation?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ marquee?: {
+ type: null;
+ value?: boolean | DrawMarquee;
+ };
+ prefixIcon?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ suffixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'info' | 'success' | 'warning' | 'error';
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export interface DrawMarquee {
+ speed?: number;
+ loop?: number;
+ delay?: number;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/notice-bar/type.js b/miniprogram_npm/tdesign-miniprogram/notice-bar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/notice-bar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/overlay/README.md b/miniprogram_npm/tdesign-miniprogram/overlay/README.md
new file mode 100644
index 0000000..8170e5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/overlay/README.md
@@ -0,0 +1,49 @@
+---
+title: Overlay 遮罩层
+description: 通过遮罩层,可以强调部分内容
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.10.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-overlay": "tdesign-miniprogram/overlay/overlay"
+}
+```
+
+## 代码演示
+
+### 基础使用
+
+{{ base }}
+
+## API
+
+### Overlay Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+visible | Boolean | false | 是否展示 | N
+zIndex | Number | 11000 | 遮罩层及 | N
+duration | Number | 300 | (暂不支持)背景色过渡时间,单位毫秒 | N
+backgroundColor | String | - | 遮罩层的背景色 | N
+preventScrollThrough | Boolean | true | 防止滚动穿透,即不允许点击和滚动 | N
+
+### Overlay Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `({ visible: boolean })` | 点击遮罩时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/overlay/overlay.d.ts b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.d.ts
new file mode 100644
index 0000000..ea9b296
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.d.ts
@@ -0,0 +1,36 @@
+import { SuperComponent } from '../common/src/index';
+export default class Overlay extends SuperComponent {
+ properties: {
+ zIndex: {
+ type: NumberConstructor;
+ value: number;
+ };
+ duration: {
+ type: NumberConstructor;
+ value: number;
+ };
+ backgroundColor: {
+ type: StringConstructor;
+ value: string;
+ };
+ preventScrollThrough: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ };
+ behaviors: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ computedStyle: string;
+ _zIndex: number;
+ };
+ observers: {
+ backgroundColor(v: any): void;
+ zIndex(v: any): void;
+ };
+ methods: {
+ handleClick(): void;
+ noop(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/overlay/overlay.js b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.js
new file mode 100644
index 0000000..6f98fdc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.js
@@ -0,0 +1,65 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import transition from '../mixins/transition';
+const { prefix } = config;
+const name = `${prefix}-overlay`;
+let Overlay = class Overlay extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = {
+ zIndex: {
+ type: Number,
+ value: 11000,
+ },
+ duration: {
+ type: Number,
+ value: 300,
+ },
+ backgroundColor: {
+ type: String,
+ value: '',
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: true,
+ },
+ };
+ this.behaviors = [transition()];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ computedStyle: '',
+ _zIndex: 11000,
+ };
+ this.observers = {
+ backgroundColor(v) {
+ this.setData({
+ computedStyle: `background-color: ${v};`,
+ });
+ },
+ zIndex(v) {
+ if (v !== 0) {
+ this.setData({
+ _zIndex: v,
+ });
+ }
+ },
+ };
+ this.methods = {
+ handleClick() {
+ this.triggerEvent('click', { visible: !this.properties.visible });
+ },
+ noop() { },
+ };
+ }
+};
+Overlay = __decorate([
+ wxComponent()
+], Overlay);
+export default Overlay;
diff --git a/miniprogram_npm/tdesign-miniprogram/overlay/overlay.json b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/overlay/overlay.wxml b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.wxml
new file mode 100644
index 0000000..55750dd
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/overlay/overlay.wxss b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.wxss
new file mode 100644
index 0000000..c84c213
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/overlay/overlay.wxss
@@ -0,0 +1,42 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ bottom: 0;
+ background-color: var(--td-overlay-bg-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ transition: opacity var(--td-overlay-transition-duration, 300ms) ease;
+}
+.t-fade-enter {
+ opacity: 0;
+}
+.t-fade-leave-to {
+ opacity: 0;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.d.ts b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.d.ts
new file mode 100644
index 0000000..5973ac6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.d.ts
@@ -0,0 +1,29 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class PickerItem extends SuperComponent {
+ relations: RelationsOptions;
+ externalClasses: string[];
+ properties: import("./type").TdPickerItemProps;
+ observers: {
+ options(this: PickerItem): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ offset: number;
+ duration: number;
+ value: string;
+ curIndex: number;
+ labelAlias: string;
+ valueAlias: string;
+ };
+ methods: {
+ onTouchStart(event: any): void;
+ onTouchMove(event: any): void;
+ onTouchEnd(): void;
+ update(): void;
+ resetOrigin(): void;
+ getCount(): any;
+ };
+ calculateViewDeltaY(touchDeltaY: number): number;
+ created(): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.js b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.js
new file mode 100644
index 0000000..584e520
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.js
@@ -0,0 +1,127 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-picker-item`;
+const itemHeight = 80;
+const DefaultDuration = 240;
+const { windowWidth } = wx.getSystemInfoSync();
+const rpx2px = (rpx) => Math.floor((windowWidth * rpx) / 750);
+const range = function (num, min, max) {
+ return Math.min(Math.max(num, min), max);
+};
+let PickerItem = class PickerItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.relations = {
+ '../picker/picker': {
+ type: 'parent',
+ linked(parent) {
+ if ('keys' in parent.data) {
+ const { keys } = parent.data;
+ this.setData({
+ labelAlias: (keys === null || keys === void 0 ? void 0 : keys.label) || 'label',
+ valueAlias: (keys === null || keys === void 0 ? void 0 : keys.value) || 'value',
+ });
+ }
+ },
+ },
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.observers = {
+ options() {
+ this.update();
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ offset: 0,
+ duration: 0,
+ value: '',
+ curIndex: 0,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ };
+ this.methods = {
+ onTouchStart(event) {
+ this.StartY = event.touches[0].clientY;
+ this.StartOffset = this.data.offset;
+ this.setData({ duration: 0 });
+ },
+ onTouchMove(event) {
+ const { StartY, StartOffset, itemHeight } = this;
+ const touchDeltaY = event.touches[0].clientY - StartY;
+ const deltaY = this.calculateViewDeltaY(touchDeltaY);
+ this.setData({
+ offset: range(StartOffset + deltaY, -(this.getCount() * itemHeight), 0),
+ duration: DefaultDuration,
+ });
+ },
+ onTouchEnd() {
+ const { offset, labelAlias, valueAlias } = this.data;
+ const { options } = this.properties;
+ if (offset === this.StartOffset) {
+ return;
+ }
+ const index = range(Math.round(-offset / this.itemHeight), 0, this.getCount() - 1);
+ this.setData({
+ curIndex: index,
+ offset: -index * this.itemHeight,
+ });
+ if (index === this._selectedIndex) {
+ return;
+ }
+ wx.nextTick(() => {
+ var _a, _b, _c;
+ this._selectedIndex = index;
+ this._selectedValue = (_a = options[index]) === null || _a === void 0 ? void 0 : _a[valueAlias];
+ this._selectedLabel = (_b = options[index]) === null || _b === void 0 ? void 0 : _b[labelAlias];
+ (_c = this.$parent) === null || _c === void 0 ? void 0 : _c.triggerColumnChange({
+ index,
+ column: this.columnIndex || 0,
+ });
+ });
+ },
+ update() {
+ var _a, _b;
+ const { options, value, labelAlias, valueAlias } = this.data;
+ const index = options.findIndex((item) => item[valueAlias] === value);
+ const selectedIndex = index > 0 ? index : 0;
+ this.setData({
+ offset: -selectedIndex * this.itemHeight,
+ curIndex: selectedIndex,
+ });
+ this._selectedIndex = selectedIndex;
+ this._selectedValue = (_a = options[selectedIndex]) === null || _a === void 0 ? void 0 : _a[valueAlias];
+ this._selectedLabel = (_b = options[selectedIndex]) === null || _b === void 0 ? void 0 : _b[labelAlias];
+ },
+ resetOrigin() {
+ this.update();
+ },
+ getCount() {
+ var _a, _b;
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length;
+ },
+ };
+ }
+ calculateViewDeltaY(touchDeltaY) {
+ return Math.abs(touchDeltaY) > itemHeight ? 1.2 * touchDeltaY : touchDeltaY;
+ }
+ created() {
+ this.StartY = 0;
+ this.StartOffset = 0;
+ this.itemHeight = rpx2px(itemHeight);
+ }
+};
+PickerItem = __decorate([
+ wxComponent()
+], PickerItem);
+export default PickerItem;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.json b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.wxml b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.wxml
new file mode 100644
index 0000000..d89affa
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+ {{option[labelAlias]}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.wxss b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.wxss
new file mode 100644
index 0000000..daee0e8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/picker-item.wxss
@@ -0,0 +1,52 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+:host {
+ display: flex;
+}
+.t-picker-item__group {
+ height: var(--td-picker-group-height, 400rpx);
+ overflow: hidden;
+ flex: 1;
+ z-index: 1;
+}
+.t-picker-item__wrapper {
+ padding: 144rpx 0;
+}
+.t-picker-item__item {
+ text-align: center;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ height: var(--td-picker-item-height, 80rpx);
+ line-height: var(--td-picker-item-height, 80rpx);
+ color: var(--td-picker-item-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-picker-item__item--active {
+ color: var(--td-picker-item-active-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: 600;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/props.d.ts b/miniprogram_npm/tdesign-miniprogram/picker-item/props.d.ts
new file mode 100644
index 0000000..1140c78
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPickerItemProps } from './type';
+declare const props: TdPickerItemProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/props.js b/miniprogram_npm/tdesign-miniprogram/picker-item/props.js
new file mode 100644
index 0000000..a55e0af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/props.js
@@ -0,0 +1,10 @@
+const props = {
+ format: {
+ type: null,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/type.d.ts b/miniprogram_npm/tdesign-miniprogram/picker-item/type.d.ts
new file mode 100644
index 0000000..295060f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/type.d.ts
@@ -0,0 +1,14 @@
+export interface TdPickerItemProps {
+ format?: {
+ type: undefined;
+ value?: (option: PickerItemOption) => string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: PickerItemOption[];
+ };
+}
+export interface PickerItemOption {
+ label: string;
+ value: string | number;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker-item/type.js b/miniprogram_npm/tdesign-miniprogram/picker-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/picker/README.en-US.md
new file mode 100644
index 0000000..417a175
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/README.en-US.md
@@ -0,0 +1,34 @@
+:: BASE_DOC ::
+
+## API
+### Picker Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+auto-close | Boolean | true | \- | N
+cancel-btn | String / Boolean / Object | true | Typescript:`boolean \| string \| ButtonProps` | N
+confirm-btn | String / Boolean / Object | true | Typescript:`boolean \| string \| ButtonProps`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+footer | Slot | - | `deprecated` | N
+header | Boolean / Slot | true | \- | N
+keys | Object | - | Typescript:`KeysType` | N
+title | String | '' | \- | N
+value | Array | - | Typescript:`Array` `type PickerValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+default-value | Array | undefined | uncontrolled property。Typescript:`Array` `type PickerValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+visible | Boolean | false | \- | N
+
+### Picker Events
+
+name | params | description
+-- | -- | --
+cancel | - | \-
+change | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | \-
+close | `(trigger: TriggerSource)` | `1.0.1`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | \-
+pick | `(value: Array, label: string, column: number, index: number)` | \-
+
+### PickerItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+format | Function | - | Typescript:`(option: PickerItemOption) => string` | N
+options | Array | [] | Typescript:`PickerItemOption[]` `interface PickerItemOption { label: string; value: string \| number }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker-item/type.ts) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/README.md b/miniprogram_npm/tdesign-miniprogram/picker/README.md
new file mode 100644
index 0000000..4b4c556
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/README.md
@@ -0,0 +1,72 @@
+---
+title: Picker 选择器
+description: 用于一组预设数据中的选择。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-picker": "tdesign-miniprogram/picker/picker",
+ "t-picker-item": "tdesign-miniprogram/picker-item/picker-item",
+}
+```
+
+## 代码演示
+
+### 组件类型
+#### 基础选择器
+
+单项和多选选择
+
+{{ base }}
+
+#### 地区选择器
+
+支持省市区切换,支持数据联动
+
+{{ area }}
+
+### 组件状态
+
+是否带标题
+
+{{ with-title }}
+
+## API
+### Picker Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+auto-close | Boolean | true | 自动关闭;在确认、取消、点击遮罩层自动关闭,不需要手动设置 visible | N
+cancel-btn | String / Boolean / Object | true | 取消按钮文字。TS 类型:`boolean \| string \| ButtonProps` | N
+confirm-btn | String / Boolean / Object | true | 确定按钮文字。TS 类型:`boolean \| string \| ButtonProps`,[Button API Documents](./button?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+footer | Slot | - | 已废弃。底部内容 | N
+header | Boolean / Slot | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容 | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+title | String | '' | 标题 | N
+value | Array | - | 选中值。TS 类型:`Array` `type PickerValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+default-value | Array | undefined | 选中值。非受控属性。TS 类型:`Array` `type PickerValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+visible | Boolean | false | 是否显示 | N
+
+### Picker Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | - | 点击取消按钮时触发
+change | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | 选中变化时候触发,即确认变化时触发
+close | `(trigger: TriggerSource)` | `1.0.1`。关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | 点击确认按钮时触发
+pick | `(value: Array, label: string, column: number, index: number)` | 任何一列选中都会触发,不同的列参数不同。`column` 表示第几列变化,`index` 表示变化那一列的选中项下标
+
+### PickerItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+format | Function | - | 格式化标签。TS 类型:`(option: PickerItemOption) => string` | N
+options | Array | [] | 数据源。TS 类型:`PickerItemOption[]` `interface PickerItemOption { label: string; value: string \| number }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker-item/type.ts) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/picker.d.ts b/miniprogram_npm/tdesign-miniprogram/picker/picker.d.ts
new file mode 100644
index 0000000..0ef9969
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/picker.d.ts
@@ -0,0 +1,33 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Picker extends SuperComponent {
+ properties: import("./type").TdPickerProps;
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ observers: {
+ value(): void;
+ keys(obj: any): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ labelAlias: string;
+ valueAlias: string;
+ };
+ methods: {
+ updateChildren(): void;
+ getSelectedValue(): any[];
+ getColumnIndexes(): any;
+ onConfirm(): void;
+ triggerColumnChange({ column, index }: {
+ column: any;
+ index: any;
+ }): void;
+ onCancel(): void;
+ onPopupChange(e: any): void;
+ close(trigger: any): void;
+ };
+ ready(): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/picker.js b/miniprogram_npm/tdesign-miniprogram/picker/picker.js
new file mode 100644
index 0000000..2d232bb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/picker.js
@@ -0,0 +1,104 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-picker`;
+let Picker = class Picker extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-confirm`, `${prefix}-class-cancel`, `${prefix}-class-title`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../picker-item/picker-item': {
+ type: 'child',
+ linked() {
+ this.updateChildren();
+ },
+ },
+ };
+ this.observers = {
+ value() {
+ this.updateChildren();
+ },
+ keys(obj) {
+ this.setData({
+ labelAlias: obj.label || 'label',
+ valueAlias: obj.value || 'value',
+ });
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ };
+ this.methods = {
+ updateChildren() {
+ const { value } = this.properties;
+ this.$children.forEach((child, index) => {
+ child.setData({
+ value: (value === null || value === void 0 ? void 0 : value[index]) || '',
+ });
+ child.update();
+ });
+ },
+ getSelectedValue() {
+ const value = this.$children.map((item) => item._selectedValue);
+ const label = this.$children.map((item) => item._selectedLabel);
+ return [value, label];
+ },
+ getColumnIndexes() {
+ const columns = this.$children.map((pickerColumn, columnIndex) => {
+ return {
+ column: columnIndex,
+ index: pickerColumn._selectedIndex,
+ };
+ });
+ return columns;
+ },
+ onConfirm() {
+ const [value, label] = this.getSelectedValue();
+ const columns = this.getColumnIndexes();
+ this.close('confirm-btn');
+ this.triggerEvent('change', { value, label, columns });
+ this.triggerEvent('confirm', { value, label, columns });
+ },
+ triggerColumnChange({ column, index }) {
+ const [value, label] = this.getSelectedValue();
+ this.triggerEvent('pick', { value, label, column, index });
+ },
+ onCancel() {
+ this.close('cancel-btn');
+ this.triggerEvent('cancel');
+ },
+ onPopupChange(e) {
+ const { visible } = e.detail;
+ this.close('overlay');
+ this.triggerEvent('visible-change', { visible });
+ },
+ close(trigger) {
+ if (this.data.autoClose) {
+ this.setData({ visible: false });
+ }
+ this.triggerEvent('close', { trigger });
+ },
+ };
+ }
+ ready() {
+ this.$children.map((column, index) => (column.columnIndex = index));
+ }
+};
+Picker = __decorate([
+ wxComponent()
+], Picker);
+export default Picker;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/picker.json b/miniprogram_npm/tdesign-miniprogram/picker/picker.json
new file mode 100644
index 0000000..b93d975
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/picker.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/picker.wxml b/miniprogram_npm/tdesign-miniprogram/picker/picker.wxml
new file mode 100644
index 0000000..86e71d8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/picker.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ {{cancelBtn}}
+ {{title}}
+ {{confirmBtn}}
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/picker.wxss b/miniprogram_npm/tdesign-miniprogram/picker/picker.wxss
new file mode 100644
index 0000000..fed2ec0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/picker.wxss
@@ -0,0 +1,102 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-picker {
+ position: relative;
+ background-color: var(--td-picker-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ border-top-left-radius: var(--td-picker-border-radius, 24rpx);
+ border-top-right-radius: var(--td-picker-border-radius, 24rpx);
+}
+.t-picker__toolbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ overflow: hidden;
+ height: var(--td-picker-toolbar-height, 116rpx);
+}
+.t-picker__title {
+ flex: 1;
+ text-align: center;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--td-picker-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: var(--td-picker-title-line-height, 52rpx);
+ font-weight: var(--td-picker-title-font-weight, 600);
+ font-size: var(--td-picker-title-font-size, 36rpx);
+}
+.t-picker__cancel,
+.t-picker__confirm {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ user-select: none;
+ font-size: var(--td-picker-button-font-size, 32rpx);
+ height: 100%;
+ padding: 0 32rpx;
+}
+.t-picker__cancel {
+ color: var(--td-picker-cancel-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-picker__confirm {
+ color: var(--td-picker-confirm-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-picker__main {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ padding-left: 64rpx;
+ padding-right: 64rpx;
+}
+.t-picker__mask {
+ position: absolute;
+ left: 0;
+ right: 0;
+ z-index: 3;
+ backface-visibility: hidden;
+ pointer-events: none;
+ height: 96rpx;
+}
+.t-picker__mask--top {
+ top: 0;
+ background: linear-gradient(180deg, #fff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.t-picker__mask--bottom {
+ bottom: 0;
+ background: linear-gradient(180deg, #fff 0%, rgba(255, 255, 255, 0) 100%);
+ transform: matrix(1, 0, 0, -1, 0, 0);
+}
+.t-picker__indicator {
+ height: var(--td-picker-item-height, 80rpx);
+ position: absolute;
+ left: 32rpx;
+ right: 32rpx;
+ top: 144rpx;
+ pointer-events: none;
+ background-color: var(--td-picker-indicator-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ border-radius: var(--td-picker-indicator-border-radius, 12rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/props.d.ts b/miniprogram_npm/tdesign-miniprogram/picker/props.d.ts
new file mode 100644
index 0000000..d673411
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPickerProps } from './type';
+declare const props: TdPickerProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/props.js b/miniprogram_npm/tdesign-miniprogram/picker/props.js
new file mode 100644
index 0000000..7390cb8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/props.js
@@ -0,0 +1,37 @@
+const props = {
+ autoClose: {
+ type: Boolean,
+ value: true,
+ },
+ cancelBtn: {
+ type: null,
+ value: true,
+ },
+ confirmBtn: {
+ type: null,
+ value: true,
+ },
+ header: {
+ type: Boolean,
+ value: true,
+ },
+ keys: {
+ type: Object,
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: Array,
+ value: null,
+ },
+ defaultValue: {
+ type: Array,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/type.d.ts b/miniprogram_npm/tdesign-miniprogram/picker/type.d.ts
new file mode 100644
index 0000000..cc51c33
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/type.d.ts
@@ -0,0 +1,46 @@
+import { ButtonProps } from '../button/index';
+import { KeysType } from '../common/common';
+export interface TdPickerProps {
+ autoClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ cancelBtn?: {
+ type: null;
+ value?: boolean | string | ButtonProps;
+ };
+ confirmBtn?: {
+ type: null;
+ value?: boolean | string | ButtonProps;
+ };
+ header?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export declare type PickerColumn = PickerColumnItem[];
+export interface PickerColumnItem {
+ label: string;
+ value: string;
+}
+export declare type PickerValue = string | number;
diff --git a/miniprogram_npm/tdesign-miniprogram/picker/type.js b/miniprogram_npm/tdesign-miniprogram/picker/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/picker/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/popup/README.en-US.md
new file mode 100644
index 0000000..3aa395d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Popup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | - | \- | N
+close-on-overlay-click | Boolean | true | \- | N
+content | String / Slot | - | \- | N
+duration | Number | 240 | \- | N
+external-classes | Array | - | `['t-class', 't-class-overlay', 't-class-content']` | N
+overlay-props | Object | {} | \- | N
+placement | String | top | options:top/left/right/bottom/center | N
+prevent-scroll-through | Boolean | true | \- | N
+show-overlay | Boolean | true | \- | N
+visible | Boolean | false | Typescript:`boolean` | N
+default-visible | Boolean | undefined | uncontrolled property。Typescript:`boolean` | N
+z-index | Number | 11500 | \- | N
+
+### Popup Events
+
+name | params | description
+-- | -- | --
+visible-change | `(visible: boolean, trigger: PopupSource) ` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/popup/type.ts)。
`type PopupSource = 'close-btn' \| 'overlay'`
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/README.md b/miniprogram_npm/tdesign-miniprogram/popup/README.md
new file mode 100644
index 0000000..620c7f7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/README.md
@@ -0,0 +1,57 @@
+---
+title: Popup 弹出层
+description: 由其他控件触发,屏幕滑出或弹出一块自定义内容区域。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-popup": "tdesign-miniprogram/popup/popup"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础弹出层
+
+{{ base }}
+
+### 组件示例
+
+应用示例
+
+{{ with-title }}
+
+{{ custom-close }}
+
+## API
+### Popup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | - | 关闭按钮,值类型为 Boolean 时表示是否显示关闭按钮。也可以自定义关闭按钮 | N
+close-on-overlay-click | Boolean | true | 点击遮罩层是否关闭 | N
+content | String / Slot | - | 浮层里面的内容 | N
+duration | Number | 240 | 动画过渡时间 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、遮罩层、浮层内容 等元素类名。`['t-class', 't-class-overlay', 't-class-content']` | N
+overlay-props | Object | {} | 遮罩层的属性,透传至 overlay | N
+placement | String | top | 浮层出现位置。可选项:top/left/right/bottom/center | N
+prevent-scroll-through | Boolean | true | 防止滚动穿透 | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+visible | Boolean | false | 是否显示浮层。TS 类型:`boolean` | N
+default-visible | Boolean | undefined | 是否显示浮层。非受控属性。TS 类型:`boolean` | N
+z-index | Number | 11500 | 组件层级,Web 侧样式默认为 5500,移动端样式默认为 1500,小程序样式默认为11500 | N
+
+### Popup Events
+
+名称 | 参数 | 描述
+-- | -- | --
+visible-change | `(visible: boolean, trigger: PopupSource) ` | 当浮层隐藏或显示时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/popup/type.ts)。
`type PopupSource = 'close-btn' \| 'overlay'`
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/popup.d.ts b/miniprogram_npm/tdesign-miniprogram/popup/popup.d.ts
new file mode 100644
index 0000000..543d354
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/popup.d.ts
@@ -0,0 +1,20 @@
+import { TdPopupProps } from './type';
+import { SuperComponent } from '../common/src/index';
+export declare type PopupProps = TdPopupProps;
+export default class Popup extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: TdPopupProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ methods: {
+ onStopPropagation(): void;
+ handleOverlayClick(): void;
+ handleClose(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/popup.js b/miniprogram_npm/tdesign-miniprogram/popup/popup.js
new file mode 100644
index 0000000..b38ba13
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/popup.js
@@ -0,0 +1,44 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import transition from '../mixins/transition';
+delete props.visible;
+const { prefix } = config;
+const name = `${prefix}-popup`;
+let Popup = class Popup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`];
+ this.behaviors = [transition()];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.methods = {
+ onStopPropagation() { },
+ handleOverlayClick() {
+ const { closeOnOverlayClick } = this.properties;
+ if (closeOnOverlayClick) {
+ this.triggerEvent('visible-change', { visible: false });
+ }
+ },
+ handleClose() {
+ this.triggerEvent('visible-change', { visible: false });
+ },
+ };
+ }
+};
+Popup = __decorate([
+ wxComponent()
+], Popup);
+export default Popup;
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/popup.json b/miniprogram_npm/tdesign-miniprogram/popup/popup.json
new file mode 100644
index 0000000..870a7b6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/popup.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-overlay": "../overlay/overlay",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/popup.wxml b/miniprogram_npm/tdesign-miniprogram/popup/popup.wxml
new file mode 100644
index 0000000..ae440c4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/popup.wxml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/popup.wxs b/miniprogram_npm/tdesign-miniprogram/popup/popup.wxs
new file mode 100644
index 0000000..a2da0d0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/popup.wxs
@@ -0,0 +1,8 @@
+function getPopupStyles(zIndex) {
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return zIndexStyle;
+}
+
+module.exports = {
+ getPopupStyles: getPopupStyles,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/popup.wxss b/miniprogram_npm/tdesign-miniprogram/popup/popup.wxss
new file mode 100644
index 0000000..3dab153
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/popup.wxss
@@ -0,0 +1,104 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-popup {
+ position: fixed;
+ z-index: 11500;
+ max-height: 100vh;
+ transition: all 300ms ease;
+ background-color: var(--td-popup-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-popup__content {
+ position: relative;
+ z-index: 1;
+}
+.t-popup__close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 20rpx;
+ line-height: 1;
+}
+.t-popup--top {
+ top: 0;
+ left: 0;
+ width: 100%;
+ border-bottom-left-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+ border-bottom-right-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+}
+.t-popup--bottom {
+ bottom: 0;
+ left: 0;
+ width: 100vw;
+ border-top-left-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+ border-top-right-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+}
+.t-popup--left {
+ top: 0;
+ left: 0;
+ height: 100vh;
+}
+.t-popup--right {
+ top: 0;
+ right: 0;
+ height: 100vh;
+}
+.t-popup--center {
+ top: 50%;
+ left: 50%;
+ transform: scale(1) translate3d(-50%, -50%, 0);
+ transform-origin: 0% 0%;
+ border-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+}
+.t-popup.t-fade-enter.t-popup--top,
+.t-popup.t-fade-leave-to.t-popup--top {
+ transform: translateY(-100%);
+}
+.t-popup.t-fade-enter.t-popup--bottom,
+.t-popup.t-fade-leave-to.t-popup--bottom {
+ transform: translateY(100%);
+}
+.t-popup.t-fade-enter.t-popup--left,
+.t-popup.t-fade-leave-to.t-popup--left {
+ transform: translateX(-100%);
+}
+.t-popup.t-fade-enter.t-popup--right,
+.t-popup.t-fade-leave-to.t-popup--right {
+ transform: translateX(100%);
+}
+.t-popup.t-fade-enter.t-popup--center,
+.t-popup.t-fade-leave-to.t-popup--center {
+ transform: scale(0.6) translate3d(-50%, -50%, 0);
+ opacity: 0;
+}
+.t-popup.t-dialog-enter.t-popup--center,
+.t-popup.t-dialog-leave-to.t-popup--center {
+ transform: scale(0.6) translate3d(-50%, -50%, 0);
+ opacity: 0;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/props.d.ts b/miniprogram_npm/tdesign-miniprogram/popup/props.d.ts
new file mode 100644
index 0000000..e23cd6c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPopupProps } from './type';
+declare const props: TdPopupProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/props.js b/miniprogram_npm/tdesign-miniprogram/popup/props.js
new file mode 100644
index 0000000..dd31f2c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/props.js
@@ -0,0 +1,51 @@
+const props = {
+ closeBtn: {
+ type: Boolean,
+ },
+ closeOnOverlayClick: {
+ type: Boolean,
+ value: true,
+ },
+ content: {
+ type: String,
+ },
+ duration: {
+ type: Number,
+ value: 240,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ overlayProps: {
+ type: Object,
+ value: {},
+ },
+ placement: {
+ type: String,
+ value: 'top',
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: true,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ transitionProps: {
+ type: Object,
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+ zIndex: {
+ type: Number,
+ value: 11500,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/type.d.ts b/miniprogram_npm/tdesign-miniprogram/popup/type.d.ts
new file mode 100644
index 0000000..fa09661
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/type.d.ts
@@ -0,0 +1,62 @@
+import { TdTransitionProps } from '../transition/index';
+export interface TdPopupProps {
+ closeBtn?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ closeOnOverlayClick?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-overlay', 't-class-content'];
+ };
+ overlayProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'top' | 'left' | 'right' | 'bottom' | 'center';
+ };
+ preventScrollThrough?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ transitionProps?: {
+ type: ObjectConstructor;
+ value?: TdTransitionProps;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
+export interface PopupVisibleChangeContext {
+ trigger: 'close-btn' | 'overlay';
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/popup/type.js b/miniprogram_npm/tdesign-miniprogram/popup/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/popup/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/progress/README.en-US.md
new file mode 100644
index 0000000..c4b14b8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/README.en-US.md
@@ -0,0 +1,15 @@
+:: BASE_DOC ::
+
+## API
+### Progress Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+color | String / Object / Array | '' | Typescript:`string \| Array \| Record` | N
+external-classes `v0.25.0` | Array | - | `['t-class', 't-class-bar', 't-class-label']` | N
+label | String / Boolean / Slot | true | \- | N
+percentage | Number | 0 | \- | N
+status | String | - | options:success/error/warning/active。Typescript:`StatusEnum` `type StatusEnum = 'success' \| 'error' \| 'warning' \| 'active'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+stroke-width | String / Number | - | \- | N
+theme | String | line | options:line/plump/circle。Typescript:`ThemeEnum` `type ThemeEnum = 'line' \| 'plump' \| 'circle'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+track-color | String | '' | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/README.md b/miniprogram_npm/tdesign-miniprogram/progress/README.md
new file mode 100644
index 0000000..a95554d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/README.md
@@ -0,0 +1,71 @@
+---
+title: Progress 进度条
+description: 用于展示任务当前的进度。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.3 版本上线,请留意版本。
+
+
+## 引入
+
+### 引入组件
+
+在 `app.json` 或 `page.json` 中引入组件:
+
+```json
+"usingComponents": {
+ "t-progress": "tdesign-miniprogram/progress/progress"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础进度条
+
+{{ base }}
+
+过渡样式
+
+{{ transition }}
+
+自定义颜色/圆角
+
+{{ custom }}
+
+### 02 组件状态
+
+线性进度条
+
+{{ line }}
+
+百分比内显进度条
+
+{{ plump }}
+
+环形进度条
+
+{{ circle }}
+
+## API
+### Progress Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+color | String / Object / Array | '' | 进度条颜色。示例:'#ED7B2F' 或 'orange' 或 `['#f00', '#0ff', '#f0f']` 或 `{ '0%': '#f00', '100%': '#0ff' }` 或 `{ from: '#000', to: '#000' }` 等。TS 类型:`string \| Array \| Record` | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层、进度文字等元素类名。。`['t-class', 't-class-bar', 't-class-label']` | N
+label | String / Boolean / Slot | true | 进度百分比,可自定义 | N
+percentage | Number | 0 | 进度条百分比 | N
+status | String | - | 进度条状态。可选项:success/error/warning/active。TS 类型:`StatusEnum` `type StatusEnum = 'success' \| 'error' \| 'warning' \| 'active'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+stroke-width | String / Number | - | 进度条线宽,默认单位 `px`。| N
+theme | String | line | 进度条风格。值为 line,标签(label)显示在进度条右侧;值为 plump,标签(label)显示在进度条里面;值为 circle,标签(label)显示在进度条正中间。可选项:line/plump/circle。TS 类型:`ThemeEnum` `type ThemeEnum = 'line' \| 'plump' \| 'circle'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+track-color | String | '' | 进度条未完成部分颜色 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/progress.d.ts b/miniprogram_npm/tdesign-miniprogram/progress/progress.d.ts
new file mode 100644
index 0000000..c627dc5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/progress.d.ts
@@ -0,0 +1,26 @@
+import { SuperComponent } from '../common/src/index';
+export default class Progress extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdProgressProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ colorBar: string;
+ heightBar: string;
+ computedStatus: string;
+ computedProgress: number;
+ };
+ observers: {
+ percentage(percentage: any): void;
+ color(color: any): void;
+ strokeWidth(strokeWidth: any): string;
+ theme(theme: any): void;
+ trackColor(trackColor: any): void;
+ };
+ methods: {
+ getInnerDiameter(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/progress.js b/miniprogram_npm/tdesign-miniprogram/progress/progress.js
new file mode 100644
index 0000000..4f91512
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/progress.js
@@ -0,0 +1,81 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getBackgroundColor } from './utils';
+import { unitConvert, getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-progress`;
+let Progress = class Progress extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-bar`, `${prefix}-class-label`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ colorBar: '',
+ heightBar: '',
+ computedStatus: '',
+ computedProgress: 0,
+ };
+ this.observers = {
+ percentage(percentage) {
+ percentage = Math.max(0, Math.min(percentage, 100));
+ this.setData({
+ computedStatus: percentage === 100 ? 'success' : '',
+ computedProgress: percentage,
+ });
+ },
+ color(color) {
+ this.setData({
+ colorBar: getBackgroundColor(color),
+ colorCircle: typeof color === 'object' ? '' : color,
+ });
+ },
+ strokeWidth(strokeWidth) {
+ if (!strokeWidth) {
+ return '';
+ }
+ this.setData({
+ heightBar: unitConvert(strokeWidth),
+ });
+ },
+ theme(theme) {
+ if (theme === 'circle') {
+ this.getInnerDiameter();
+ }
+ },
+ trackColor(trackColor) {
+ this.setData({
+ bgColorBar: trackColor,
+ });
+ },
+ };
+ this.methods = {
+ getInnerDiameter() {
+ const { strokeWidth } = this.properties;
+ const wrapID = `.${name}__canvas--circle`;
+ if (strokeWidth) {
+ getRect(this, wrapID).then((wrapRect) => {
+ this.setData({
+ innerDiameter: wrapRect.width - unitConvert(strokeWidth) * 2,
+ });
+ });
+ }
+ },
+ };
+ }
+};
+Progress = __decorate([
+ wxComponent()
+], Progress);
+export default Progress;
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/progress.json b/miniprogram_npm/tdesign-miniprogram/progress/progress.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/progress.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/progress.wxml b/miniprogram_npm/tdesign-miniprogram/progress/progress.wxml
new file mode 100644
index 0000000..f531829
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/progress.wxml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/progress.wxs b/miniprogram_npm/tdesign-miniprogram/progress/progress.wxs
new file mode 100644
index 0000000..04d10f4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/progress.wxs
@@ -0,0 +1,44 @@
+var STATUS = ['success', 'error', 'warning'];
+var STATUS_TEXT = ['success', 'error', 'warning', 'active'];
+
+var PRO_THEME = {
+ LINE: 'line',
+ PLUMP: 'plump',
+ CIRCLE: 'circle',
+};
+
+var STATUS_COLOR = {
+ success: '#00a870',
+ error: '#e34d59',
+ warning: '#ed7b2f',
+};
+var LINE_STATUS_ICON = {
+ success: 'check-circle-filled',
+ error: 'error-circle-filled',
+ warning: 'error-circle-filled',
+};
+var CIRCLE_STATUS_ICON = {
+ success: 'check',
+ error: 'close',
+ warning: 'error',
+};
+
+var getAriaLabel = function (status) {
+ if (status === 'error') {
+ return '进度失败';
+ }
+ if (status === 'warning') {
+ return '进度异常';
+ }
+ return '';
+};
+
+module.exports = {
+ STATUS: STATUS,
+ STATUS_TEXT: STATUS_TEXT,
+ PRO_THEME: PRO_THEME,
+ STATUS_COLOR: STATUS_COLOR,
+ LINE_STATUS_ICON: LINE_STATUS_ICON,
+ CIRCLE_STATUS_ICON: CIRCLE_STATUS_ICON,
+ getAriaLabel: getAriaLabel,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/progress.wxss b/miniprogram_npm/tdesign-miniprogram/progress/progress.wxss
new file mode 100644
index 0000000..8d684f4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/progress.wxss
@@ -0,0 +1,156 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-progress__inner {
+ position: relative;
+ height: 100%;
+ background: var(--td-progress-inner-bg-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: var(--td-radius-round, 999px);
+ transition: all var(--td-anim-duration-base, 0.2s) var(--td-anim-time-fn-easing, cubic-bezier(0.38, 0, 0.24, 1));
+}
+.t-progress__bar {
+ width: 100%;
+ height: 12rpx;
+ overflow: hidden;
+ background: var(--td-progress-track-bg-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-radius: var(--td-radius-round, 999px);
+}
+.t-progress__info {
+ margin-left: var(--td-spacer, 16rpx);
+ color: var(--td-progress-info-dark-color, var(--td-text-color-primary, var(--td-font-gray-1, rgba(0, 0, 0, 0.9))));
+ white-space: nowrap;
+ display: inline-flex;
+}
+.t-progress--thin {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.t-progress--thin .t-progress__icon {
+ font-size: calc(var(--td-font-size-base, 28rpx) + 2px);
+}
+.t-progress--plump {
+ height: 40rpx;
+ border-radius: calc(40rpx / 2);
+ display: flex;
+ align-items: center;
+}
+.t-progress--plump .t-progress__info {
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-progress--over-ten .t-progress__info {
+ position: absolute;
+ top: 50%;
+ right: var(--td-spacer, 16rpx);
+ color: var(--td-progress-info-light-color, var(--td-font-white-1, #ffffff));
+ transform: translateY(-50%);
+}
+.t-progress--under-ten .t-progress__info,
+.t-progress--under-ten .t-progress__inner {
+ display: inline-block;
+}
+.t-progress--under-ten .t-progress__info {
+ vertical-align: top;
+}
+.t-progress__canvas--circle {
+ position: relative;
+ width: 224rpx;
+ height: 224rpx;
+ border-radius: var(--td-radius-circle, 50%);
+}
+.t-progress__canvas--circle .t-progress__canvas--inner {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ width: calc(100% - 12rpx*2);
+ height: calc(100% - 12rpx*2);
+ border-radius: var(--td-radius-circle, 50%);
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ background-color: var(--td-progress-circle-inner-bg-color, var(--td-font-white-1, #ffffff));
+}
+.t-progress__canvas--circle .t-progress__info {
+ margin: 0;
+ font-size: 40rpx;
+ font-weight: 700;
+ line-height: 56rpx;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+.t-progress__canvas--circle .t-progress__icon {
+ font-size: 96rpx;
+}
+.t-progress--status--active .t-progress__inner::before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: '';
+ animation: progress-active-animation 2s cubic-bezier(0.23, 0.99, 0.86, 0.2) infinite;
+ background: var(--td-progress-inner-bg-color-active, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ opacity: 0.2;
+}
+.t-progress--status--success .t-progress__inner {
+ background: var(--td-progress-inner-bg-color-success, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-progress--status--success .t-progress__icon {
+ color: var(--td-success-color, var(--td-success-color-5, #2ba471));
+}
+.t-progress--status--warning .t-progress__inner {
+ background: var(--td-progress-inner-bg-color-warning, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-progress--status--warning .t-progress__icon {
+ color: var(--td-warning-color, var(--td-warning-color-5, #e37318));
+}
+.t-progress--status--error .t-progress__inner {
+ background: var(--td-progress-inner-bg-color-error, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-progress--status--error .t-progress__icon {
+ color: var(--td-error-color, var(--td-error-color-6, #d54941));
+}
+@keyframes progress-active-animation {
+ 0% {
+ width: 0;
+ opacity: 0.1;
+ }
+ 35% {
+ width: 50%;
+ opacity: 0.4;
+ }
+ 100% {
+ width: 100%;
+ opacity: 0;
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/props.d.ts b/miniprogram_npm/tdesign-miniprogram/progress/props.d.ts
new file mode 100644
index 0000000..214f11a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/props.d.ts
@@ -0,0 +1,3 @@
+import { TdProgressProps } from './type';
+declare const props: TdProgressProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/props.js b/miniprogram_npm/tdesign-miniprogram/progress/props.js
new file mode 100644
index 0000000..d203455
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/props.js
@@ -0,0 +1,32 @@
+const props = {
+ color: {
+ type: null,
+ value: '',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ label: {
+ type: null,
+ value: true,
+ },
+ percentage: {
+ type: Number,
+ value: 0,
+ },
+ status: {
+ type: String,
+ },
+ strokeWidth: {
+ type: null,
+ },
+ theme: {
+ type: String,
+ value: 'line',
+ },
+ trackColor: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/type.d.ts b/miniprogram_npm/tdesign-miniprogram/progress/type.d.ts
new file mode 100644
index 0000000..d0e3d07
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/type.d.ts
@@ -0,0 +1,40 @@
+export interface TdProgressProps {
+ color?: {
+ type: null;
+ value?: string | Array | Record;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-bar', 't-class-label'];
+ };
+ label?: {
+ type: null;
+ value?: string | boolean;
+ };
+ percentage?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ status?: {
+ type: StringConstructor;
+ value?: StatusEnum;
+ };
+ strokeWidth?: {
+ type: null;
+ value?: string | number;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: ThemeEnum;
+ };
+ trackColor?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type StatusEnum = 'success' | 'error' | 'warning' | 'active';
+export declare type ThemeEnum = 'line' | 'plump' | 'circle';
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/type.js b/miniprogram_npm/tdesign-miniprogram/progress/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/utils.d.ts b/miniprogram_npm/tdesign-miniprogram/progress/utils.d.ts
new file mode 100644
index 0000000..84b7889
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/utils.d.ts
@@ -0,0 +1,11 @@
+export declare type Gradients = {
+ [percent: string]: string;
+};
+export declare type FromTo = {
+ from: string;
+ to: string;
+};
+export declare type LinearGradient = {
+ direction?: string;
+} & (Gradients | FromTo);
+export declare function getBackgroundColor(color: string | string[] | LinearGradient): string;
diff --git a/miniprogram_npm/tdesign-miniprogram/progress/utils.js b/miniprogram_npm/tdesign-miniprogram/progress/utils.js
new file mode 100644
index 0000000..455982c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/progress/utils.js
@@ -0,0 +1,30 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+export function getBackgroundColor(color) {
+ if (typeof color === 'string') {
+ return color;
+ }
+ if (Array.isArray(color)) {
+ if (color[0] && color[0][0] === '#') {
+ color.unshift('90deg');
+ }
+ return `linear-gradient( ${color.join(',')} )`;
+ }
+ const { from, to, direction = 'to right' } = color, rest = __rest(color, ["from", "to", "direction"]);
+ let keys = Object.keys(rest);
+ if (keys.length) {
+ keys = keys.sort((a, b) => parseFloat(a.substr(0, a.length - 1)) - parseFloat(b.substr(0, b.length - 1)));
+ const tempArr = keys.map((key) => `${rest[key]} ${key}`);
+ return `linear-gradient(${direction}, ${tempArr.join(',')})`;
+ }
+ return `linear-gradient(${direction}, ${from}, ${to})`;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/README.en-US.md
new file mode 100644
index 0000000..e4cc94c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### PullDownRefresh Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class', 't-class-loading','t-class-text', 't-class-indicator']` | N
+loading-bar-height | String / Number | 50 | \- | N
+loading-props | Object | - | Typescript:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/pull-down-refresh/type.ts) | N
+loading-texts | Array | [] | Typescript:`string[]` | N
+max-bar-height | String / Number | 80 | \- | N
+refresh-timeout | Number | 3000 | \- | N
+value | Boolean | false | \- | N
+default-value | Boolean | false | uncontrolled property | N
+
+### PullDownRefresh Events
+
+name | params | description
+-- | -- | --
+change | `(value: boolean)` | \-
+refresh | \- | \-
+scrolltolower | \- | \-
+timeout | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/README.md b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/README.md
new file mode 100644
index 0000000..afb61c9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/README.md
@@ -0,0 +1,52 @@
+---
+title: PullDownRefresh 下拉刷新
+description: 用于快速刷新页面信息,刷新可以是整页刷新也可以是页面的局部刷新。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh"
+}
+```
+
+## 代码演示
+
+### 顶部下拉刷新
+
+由于组件内无法监听页面滚动,需要由页面获取组件实例,并将页面滚动事件传递到组件。
+
+{{ base }}
+
+
+
+> 在使用 pull-down-refresh 组件的页面,建议开启 `disableScroll: true`
+
+## API
+### PullDownRefresh Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 加载loading样式。`['t-class', 't-class-loading','t-class-text', 't-class-indicator']` | N
+loading-bar-height | String / Number | 50 | 加载中下拉高度,如果值为数字则单位是:'px' | N
+loading-props | Object | - | 加载loading样式。TS 类型:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/pull-down-refresh/type.ts) | N
+loading-texts | Array | [] | 提示语,组件内部默认值为 ['下拉刷新', '松手刷新', '正在刷新', '刷新完成']。TS 类型:`string[]` | N
+max-bar-height | String / Number | 80 | 最大下拉高度,如果值为数字则单位是:'px' | N
+refresh-timeout | Number | 3000 | 刷新超时时间 | N
+value | Boolean | false | 组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态 | N
+default-value | Boolean | false | 组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态。非受控属性 | N
+
+### PullDownRefresh Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: boolean)` | 下拉或收起时触发,用户手势往下滑动触发下拉状态,手势松开触发收起状态
+refresh | \- | 结束下拉时触发
+scrolltolower | \- | 滚动到页面底部时触发
+timeout | \- | 刷新超时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/props.d.ts b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/props.d.ts
new file mode 100644
index 0000000..b7cb543
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPullDownRefreshProps } from './type';
+declare const props: TdPullDownRefreshProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/props.js b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/props.js
new file mode 100644
index 0000000..7921dec
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/props.js
@@ -0,0 +1,35 @@
+const props = {
+ externalClasses: {
+ type: Array,
+ },
+ loadingBarHeight: {
+ type: String,
+ optionalTypes: [Number],
+ value: 50,
+ },
+ loadingProps: {
+ type: Object,
+ },
+ loadingTexts: {
+ type: Array,
+ value: [],
+ },
+ maxBarHeight: {
+ type: String,
+ optionalTypes: [Number],
+ value: 80,
+ },
+ refreshTimeout: {
+ type: Number,
+ value: 3000,
+ },
+ value: {
+ type: Boolean,
+ value: null,
+ },
+ defaultValue: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.d.ts b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.d.ts
new file mode 100644
index 0000000..7e34668
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.d.ts
@@ -0,0 +1,51 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class PullDownRefresh extends SuperComponent {
+ pixelRatio: number;
+ startPoint: {
+ pageX: number;
+ pageY: number;
+ } | null;
+ isPulling: boolean;
+ maxBarHeight: number;
+ loadingBarHeight: number;
+ maxRefreshAnimateTimeFlag: number;
+ closingAnimateTimeFlag: number;
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ properties: import("./type").TdPullDownRefreshProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ barHeight: number;
+ refreshStatus: number;
+ loosing: boolean;
+ enableToRefresh: boolean;
+ scrollTop: number;
+ };
+ lifetimes: {
+ attached(): void;
+ detached(): void;
+ };
+ observers: {
+ value(val: any): void;
+ maxBarHeight(val: any): void;
+ loadingBarHeight(val: any): void;
+ };
+ methods: {
+ onScrollToBottom(): void;
+ onScrollToTop(): void;
+ onScroll(e: any): void;
+ onTouchStart(e: WechatMiniprogram.Component.TrivialInstance): void;
+ onTouchMove(e: WechatMiniprogram.Component.TrivialInstance): void;
+ onTouchEnd(e: WechatMiniprogram.Component.TrivialInstance): void;
+ toRpx(v: number | string): number;
+ toPx(v: number): number;
+ setRefreshBarHeight(barHeight: number): Promise;
+ close(): void;
+ setScrollTop(scrollTop: number): void;
+ scrollToTop(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.js b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.js
new file mode 100644
index 0000000..b41a94f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.js
@@ -0,0 +1,200 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-pull-down-refresh`;
+let PullDownRefresh = class PullDownRefresh extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.pixelRatio = 1;
+ this.startPoint = null;
+ this.isPulling = false;
+ this.maxBarHeight = 0;
+ this.loadingBarHeight = 200;
+ this.maxRefreshAnimateTimeFlag = 0;
+ this.closingAnimateTimeFlag = 0;
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-loading`, `${prefix}-class-text`, `${prefix}-class-indicator`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../back-top/back-top': {
+ type: 'descendant',
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ barHeight: 0,
+ refreshStatus: -1,
+ loosing: false,
+ enableToRefresh: true,
+ scrollTop: 0,
+ };
+ this.lifetimes = {
+ attached() {
+ const { screenWidth } = wx.getSystemInfoSync();
+ const { maxBarHeight, loadingBarHeight, loadingTexts } = this.properties;
+ this.setData({
+ loadingTexts: Array.isArray(loadingTexts) && loadingTexts.length >= 4
+ ? loadingTexts
+ : ['下拉刷新', '松手刷新', '正在刷新', '刷新完成'],
+ });
+ this.pixelRatio = 750 / screenWidth;
+ if (maxBarHeight) {
+ this.maxBarHeight = this.toRpx(maxBarHeight);
+ }
+ if (loadingBarHeight) {
+ this.setData({
+ computedLoadingBarHeight: this.toRpx(loadingBarHeight),
+ });
+ this.loadingBarHeight = this.toRpx(loadingBarHeight);
+ }
+ },
+ detached() {
+ clearTimeout(this.maxRefreshAnimateTimeFlag);
+ clearTimeout(this.closingAnimateTimeFlag);
+ },
+ };
+ this.observers = {
+ value(val) {
+ if (!val) {
+ clearTimeout(this.maxRefreshAnimateTimeFlag);
+ this.setData({ refreshStatus: 3 });
+ this.close();
+ }
+ },
+ maxBarHeight(val) {
+ this.maxBarHeight = this.toRpx(val);
+ },
+ loadingBarHeight(val) {
+ this.setData({
+ computedLoadingBarHeight: this.toRpx(val),
+ });
+ this.loadingBarHeight = this.toRpx(val);
+ },
+ };
+ this.methods = {
+ onScrollToBottom() {
+ this.triggerEvent('scrolltolower');
+ },
+ onScrollToTop() {
+ this.setData({
+ enableToRefresh: true,
+ });
+ },
+ onScroll(e) {
+ const { scrollTop } = e.detail;
+ this.setData({
+ enableToRefresh: scrollTop === 0,
+ });
+ this.triggerEvent('scroll', { scrollTop });
+ },
+ onTouchStart(e) {
+ if (this.isPulling || !this.data.enableToRefresh)
+ return;
+ const { touches } = e;
+ if (touches.length !== 1)
+ return;
+ const { pageX, pageY } = touches[0];
+ this.setData({ loosing: false });
+ this.startPoint = { pageX, pageY };
+ this.isPulling = true;
+ },
+ onTouchMove(e) {
+ if (!this.startPoint)
+ return;
+ const { touches } = e;
+ if (touches.length !== 1)
+ return;
+ const { pageY } = touches[0];
+ const offset = pageY - this.startPoint.pageY;
+ const barHeight = this.toRpx(offset);
+ if (barHeight > 0) {
+ if (barHeight > this.maxBarHeight) {
+ this.setRefreshBarHeight(this.maxBarHeight);
+ }
+ else {
+ this.setRefreshBarHeight(barHeight);
+ }
+ }
+ },
+ onTouchEnd(e) {
+ if (!this.startPoint)
+ return;
+ const { changedTouches } = e;
+ if (changedTouches.length !== 1)
+ return;
+ const { pageY } = changedTouches[0];
+ const barHeight = this.toRpx(pageY - this.startPoint.pageY);
+ this.startPoint = null;
+ this.setData({ loosing: true });
+ if (barHeight > this.loadingBarHeight) {
+ this.setData({
+ barHeight: this.loadingBarHeight,
+ refreshStatus: 2,
+ });
+ this.triggerEvent('change', { value: true });
+ this.triggerEvent('refresh');
+ this.maxRefreshAnimateTimeFlag = setTimeout(() => {
+ this.maxRefreshAnimateTimeFlag = null;
+ if (this.data.refreshStatus === 2) {
+ this.triggerEvent('timeout');
+ this.close();
+ }
+ }, this.properties.refreshTimeout);
+ }
+ else {
+ this.close();
+ }
+ },
+ toRpx(v) {
+ if (typeof v === 'number')
+ return v * this.pixelRatio;
+ return parseInt(v, 10);
+ },
+ toPx(v) {
+ return v / this.pixelRatio;
+ },
+ setRefreshBarHeight(barHeight) {
+ const data = { barHeight };
+ if (barHeight >= this.loadingBarHeight) {
+ data.refreshStatus = 1;
+ }
+ else {
+ data.refreshStatus = 0;
+ }
+ return new Promise((resolve) => {
+ this.setData(data, () => resolve(barHeight));
+ });
+ },
+ close() {
+ const animationDuration = 240;
+ this.setData({ barHeight: 0 });
+ this.triggerEvent('change', { value: false });
+ this.closingAnimateTimeFlag = setTimeout(() => {
+ this.closingAnimateTimeFlag = null;
+ this.setData({ refreshStatus: -1 });
+ this.isPulling = false;
+ }, animationDuration);
+ },
+ setScrollTop(scrollTop) {
+ this.setData({ scrollTop });
+ },
+ scrollToTop() {
+ this.setScrollTop(0);
+ },
+ };
+ }
+};
+PullDownRefresh = __decorate([
+ wxComponent()
+], PullDownRefresh);
+export default PullDownRefresh;
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.json b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.json
new file mode 100644
index 0000000..e570665
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-loading": "../loading/loading"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.wxml b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.wxml
new file mode 100644
index 0000000..a40ada1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.wxml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ {{loadingTexts[refreshStatus]}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.wxss b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.wxss
new file mode 100644
index 0000000..a97581e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/pull-down-refresh.wxss
@@ -0,0 +1,57 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-pull-down-refresh {
+ overflow: hidden;
+ max-height: 100vh;
+ height: 100%;
+}
+.t-pull-down-refresh__track {
+ position: relative;
+}
+.t-pull-down-refresh__track--loosing {
+ transition: transform ease 0.24s;
+}
+.t-pull-down-refresh__tips {
+ position: absolute;
+ color: var(--td-pull-down-refresh-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: 24rpx;
+ top: 0;
+ width: 100%;
+ transform: translateY(-100%);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ overflow: hidden;
+}
+.t-pull-down-refresh__text {
+ margin: 16rpx 0 0;
+}
+.t-pull-down-refresh__wrap {
+ position: relative;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/type.d.ts b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/type.d.ts
new file mode 100644
index 0000000..c012bda
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/type.d.ts
@@ -0,0 +1,41 @@
+import { LoadingProps } from '../loading/index';
+export interface TdPullDownRefreshProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-loading', 't-class-text', 't-class-indicator'];
+ };
+ loadingBarHeight?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ loadingProps?: {
+ type: ObjectConstructor;
+ value?: LoadingProps;
+ };
+ loadingTexts?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ maxBarHeight?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ refreshTimeout?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ value?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultValue?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/type.js b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/pull-down-refresh/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/props.d.ts b/miniprogram_npm/tdesign-miniprogram/radio-group/props.d.ts
new file mode 100644
index 0000000..40dcb03
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRadioGroupProps } from './type';
+declare const props: TdRadioGroupProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/props.js b/miniprogram_npm/tdesign-miniprogram/radio-group/props.js
new file mode 100644
index 0000000..44c4054
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/props.js
@@ -0,0 +1,36 @@
+const props = {
+ placement: {
+ type: String,
+ value: 'left',
+ },
+ borderless: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ icon: {
+ type: null,
+ value: 'circle',
+ },
+ keys: {
+ type: Object,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ options: {
+ type: Array,
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.d.ts b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.d.ts
new file mode 100644
index 0000000..25c81f2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.d.ts
@@ -0,0 +1,25 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class RadioGroup extends SuperComponent {
+ externalClasses: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ radioOptions: any[];
+ };
+ relations: RelationsOptions;
+ properties: import("./type").TdRadioGroupProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(v: any): void;
+ options(): void;
+ };
+ methods: {
+ getChilds(): any;
+ updateValue(value: any): void;
+ handleRadioChange(e: any): void;
+ initWithOptions(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.js b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.js
new file mode 100644
index 0000000..a943c70
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import config from '../common/config';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-radio-group`;
+let RadioGroup = class RadioGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ radioOptions: [],
+ };
+ this.relations = {
+ '../radio/radio': {
+ type: 'descendant',
+ linked(target) {
+ const { value, disabled } = this.data;
+ target.setData({
+ checked: value === target.data.value,
+ });
+ target.setDisabled(disabled);
+ },
+ },
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(v) {
+ this.getChilds().forEach((item) => {
+ item.setData({
+ checked: v === item.data.value,
+ });
+ });
+ },
+ options() {
+ this.initWithOptions();
+ },
+ };
+ this.methods = {
+ getChilds() {
+ let items = this.$children;
+ if (!(items === null || items === void 0 ? void 0 : items.length)) {
+ items = this.selectAllComponents(`.${prefix}-radio-option`);
+ }
+ return items;
+ },
+ updateValue(value) {
+ this._trigger('change', { value });
+ },
+ handleRadioChange(e) {
+ const { value, index } = e.target.dataset;
+ this._trigger('change', { value, index });
+ },
+ initWithOptions() {
+ const { options, value, keys } = this.data;
+ if (!(options === null || options === void 0 ? void 0 : options.length) || !Array.isArray(options)) {
+ this.setData({
+ radioOptions: [],
+ });
+ return;
+ }
+ const optionsValue = [];
+ try {
+ options.forEach((element) => {
+ var _a, _b, _c;
+ const typeName = typeof element;
+ if (typeName === 'number' || typeName === 'string') {
+ optionsValue.push({
+ label: `${element}`,
+ value: element,
+ checked: value === element,
+ });
+ }
+ else if (typeName === 'object') {
+ optionsValue.push(Object.assign(Object.assign({}, element), { label: element[(_a = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _a !== void 0 ? _a : 'label'], value: element[(_b = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _b !== void 0 ? _b : 'value'], checked: value === element[(_c = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _c !== void 0 ? _c : 'value'] }));
+ }
+ });
+ this.setData({
+ radioOptions: optionsValue,
+ });
+ }
+ catch (error) {
+ console.error('error', error);
+ }
+ },
+ };
+ }
+};
+RadioGroup = __decorate([
+ wxComponent()
+], RadioGroup);
+export default RadioGroup;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.json b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.json
new file mode 100644
index 0000000..7994804
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-radio": "../radio/radio"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.wxml b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.wxml
new file mode 100644
index 0000000..d245948
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.wxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.wxss b/miniprogram_npm/tdesign-miniprogram/radio-group/radio-group.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/type.d.ts b/miniprogram_npm/tdesign-miniprogram/radio-group/type.d.ts
new file mode 100644
index 0000000..6e9e0fc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/type.d.ts
@@ -0,0 +1,50 @@
+import { RadioValue } from '../radio/type';
+import { KeysType } from '../common/common';
+export interface TdRadioGroupProps {
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ borderless?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: 'circle' | 'line' | 'dot' | Array;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: null;
+ value?: T;
+ };
+ defaultValue?: {
+ type: null;
+ value?: T;
+ };
+}
+export declare type RadioOption = string | number | RadioOptionObj;
+export interface RadioOptionObj {
+ label?: string;
+ value?: string | number;
+ disabled?: boolean;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/radio-group/type.js b/miniprogram_npm/tdesign-miniprogram/radio-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/radio/README.en-US.md
new file mode 100644
index 0000000..c3cb732
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/README.en-US.md
@@ -0,0 +1,48 @@
+:: BASE_DOC ::
+
+## API
+### Radio Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+placement | String | left | options:left/right | N
+allow-uncheck | Boolean | false | \- | N
+block | Boolean | true | \- | N
+checked | Boolean | false | \- | N
+default-checked | Boolean | undefined | uncontrolled property | N
+content | String / Slot | - | \- | N
+content-disabled | Boolean | false | \- | N
+disabled | Boolean | undefined | \- | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array | 'circle' | Typescript:`'circle' \| 'line' \| Array` | N
+label | String / Slot | - | \- | N
+max-content-row | Number | 5 | \- | N
+max-label-row | Number | 3 | \- | N
+name | String | - | \- | N
+value | String / Number / Boolean | false | Typescript:`T` | N
+
+### Radio Events
+
+name | params | description
+-- | -- | --
+change | `(checked: boolean)` | \-
+
+### RadioGroup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+placement | String | left | options:left/right | N
+borderless | Boolean | false | \- | N
+disabled | Boolean | undefined | \- | N
+icon | String / Array | 'circle' | Typescript:`'circle' | 'line' | Array` | N
+keys | Object | - | Typescript:`KeysType` | N
+name | String | - | \- | N
+options | Array | - | Typescript:`Array` `type RadioOption = string \| number \| RadioOptionObj` `interface RadioOptionObj { label?: string; value?: string \| number; disabled?: boolean }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/radio-group/type.ts) | N
+value | String / Number / Boolean | - | Typescript:`T` | N
+default-value | String / Number / Boolean | undefined | uncontrolled property。Typescript:`T` | N
+
+### RadioGroup Events
+
+name | params | description
+-- | -- | --
+change | `(value: T)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/README.md b/miniprogram_npm/tdesign-miniprogram/radio/README.md
new file mode 100644
index 0000000..b2690f0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/README.md
@@ -0,0 +1,95 @@
+---
+title: Radio 单选框
+description: 用于在预设的一组选项中执行单项选择,并呈现选择结果。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-radio": "tdesign-miniprogram/radio/radio",
+ "t-radio-group": "tdesign-miniprogram/radio-group/radio-group"
+}
+```
+
+## 代码演示
+
+### 纵向单选框
+
+{{ base }}
+
+### 横向单选框
+
+{{ horizontal }}
+
+### 单选框状态
+
+{{ status }}
+
+### 勾选样式
+
+{{ theme }}
+
+### 勾选显示位置
+
+{{ align }}
+
+### 非通栏单选样式
+
+{{ card }}
+
+### 特殊样式
+
+{{ special }}
+
+## API
+### Radio Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+placement | String | left | 复选框和内容相对位置。可选项:left/right | N
+allow-uncheck | Boolean | false | 【开发中】是否允许取消选中 | N
+block | Boolean | true | 是否为块级元素 | N
+checked | Boolean | false | 是否选中 | N
+default-checked | Boolean | undefined | 是否选中。非受控属性 | N
+content | String / Slot | - | 单选内容 | N
+content-disabled | Boolean | false | 是否禁用组件内容(content)触发选中 | N
+disabled | Boolean | undefined | 是否为禁用态 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层、单选图标、主文案、内容 等元素类名。`['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array / Slot | 'circle' | 自定义选中图标和非选中图标。使用 Array 时表示:`[选中态图标,非选中态图标]`。使用 String 时,值为 circle 表示填充型图标、值为 line 表示描边型图标、值为 dot 表示圆点图标,值为 slot 时使用插槽。TS 类型:`'circle' \| 'line' \| 'dot' \| Array` | N
+label | String / Slot | - | 主文案 | N
+max-content-row | Number | 5 | 内容最大行数限制 | N
+max-label-row | Number | 3 | 主文案最大行数限制 | N
+name | String | - | HTML 元素原生属性 | N
+value | String / Number / Boolean | false | 单选按钮的值。TS 类型:`RadioValue` `type RadioValue = string | number | boolean`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/radio/type.ts) | N
+
+### Radio Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(checked: boolean)` | 值变化时触发
+
+### RadioGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+placement | String | 'left' | 复选框和内容相对位置;仅在使用 options 时生效。可选项:left/right | N
+borderless | Boolean | false | 是否开启无边框模式 | N
+disabled | Boolean | undefined | 是否禁用全部子单选框 | N
+icon | String / Array | 'circle' | 自定义选中图标和非选中图标。示例:[选中态图标,非选中态图标]。使用 String 时,值为 circle 表示填充型图标、值为 line 表示描边型图标、值为 dot 表示圆点图标;仅在使用 options 时生效。TS 类型:`'circle' | 'line' | 'dot' | Array` | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+name | String | - | HTML 元素原生属性 | N
+options | Array | - | 单选组件按钮形式。RadioOption 数据类型为 string 或 number 时,表示 label 和 value 值相同。TS 类型:`Array` `type RadioOption = string \| number \| RadioOptionObj` `interface RadioOptionObj { label?: string; value?: string \| number; disabled?: boolean }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/radio-group/type.ts) | N
+value | String / Number / Boolean | false | 选中的值。TS 类型:`RadioValue` | N
+default-value | String / Number / Boolean | undefined | 选中的值。非受控属性。TS 类型:`RadioValue` | N
+
+### RadioGroup Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: RadioValue)` | 选中值发生变化时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/props.d.ts b/miniprogram_npm/tdesign-miniprogram/radio/props.d.ts
new file mode 100644
index 0000000..c59a8d0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRadioProps } from './type';
+declare const props: TdRadioProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/props.js b/miniprogram_npm/tdesign-miniprogram/radio/props.js
new file mode 100644
index 0000000..c4ef137
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/props.js
@@ -0,0 +1,60 @@
+const props = {
+ placement: {
+ type: String,
+ value: null,
+ },
+ allowUncheck: {
+ type: Boolean,
+ value: false,
+ },
+ block: {
+ type: Boolean,
+ value: true,
+ },
+ checked: {
+ type: Boolean,
+ value: null,
+ },
+ defaultChecked: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ contentDisabled: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: 'circle',
+ },
+ label: {
+ type: String,
+ },
+ maxContentRow: {
+ type: Number,
+ value: 5,
+ },
+ maxLabelRow: {
+ type: Number,
+ value: 3,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: null,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/radio.d.ts b/miniprogram_npm/tdesign-miniprogram/radio/radio.d.ts
new file mode 100644
index 0000000..ed39797
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/radio.d.ts
@@ -0,0 +1,102 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Radio extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ lifetimes: {
+ attached(): void;
+ ready(): void;
+ };
+ properties: {
+ borderless: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: "left" | "right";
+ };
+ allowUncheck?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"];
+ };
+ icon?: {
+ type: null;
+ value?: string[] | "circle" | "line";
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: import("./type").RadioValue;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ customIcon: boolean;
+ slotIcon: boolean;
+ optionLinked: boolean;
+ iconVal: any[];
+ _placement: string;
+ };
+ methods: {
+ handleTap(e: any): void;
+ doChange(): void;
+ initStatus(): void;
+ setDisabled(disabled: Boolean): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/radio.js b/miniprogram_npm/tdesign-miniprogram/radio/radio.js
new file mode 100644
index 0000000..38f9c0a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/radio.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import config from '../common/config';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import Props from './props';
+const { prefix } = config;
+const name = `${prefix}-radio`;
+let Radio = class Radio extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-label`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-content`,
+ `${prefix}-class-border`,
+ ];
+ this.behaviors = ['wx://form-field'];
+ this.relations = {
+ '../radio-group/radio-group': {
+ type: 'ancestor',
+ linked(parent) {
+ if (parent.data.borderless) {
+ this.setData({ borderless: true });
+ }
+ },
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.lifetimes = {
+ attached() {
+ this.initStatus();
+ },
+ ready() {
+ var _a, _b, _c, _d;
+ this.setData({
+ _placement: (_d = (_a = this.data.placement) !== null && _a !== void 0 ? _a : (_c = (_b = this.$parent) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.placement) !== null && _d !== void 0 ? _d : 'left',
+ });
+ },
+ };
+ this.properties = Object.assign(Object.assign({}, Props), { borderless: {
+ type: Boolean,
+ value: false,
+ } });
+ this.controlledProps = [
+ {
+ key: 'checked',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ customIcon: false,
+ slotIcon: false,
+ optionLinked: false,
+ iconVal: [],
+ _placement: '',
+ };
+ this.methods = {
+ handleTap(e) {
+ if (this.data.disabled)
+ return;
+ const { target } = e.currentTarget.dataset;
+ if (target === 'text' && this.data.contentDisabled)
+ return;
+ this.doChange();
+ },
+ doChange() {
+ const { value, checked } = this.data;
+ if (this.$parent) {
+ this.$parent.updateValue(value);
+ }
+ else {
+ this._trigger('change', { checked: !checked });
+ }
+ },
+ initStatus() {
+ var _a, _b;
+ const { icon } = this.data;
+ const isIdArr = Array.isArray(((_a = this.$parent) === null || _a === void 0 ? void 0 : _a.icon) || icon);
+ this.setData({
+ customIcon: isIdArr,
+ slotIcon: icon === 'slot',
+ iconVal: isIdArr ? ((_b = this.$parent) === null || _b === void 0 ? void 0 : _b.icon) || icon : [],
+ });
+ },
+ setDisabled(disabled) {
+ this.setData({
+ disabled: this.data.disabled || disabled,
+ });
+ },
+ };
+ }
+};
+Radio = __decorate([
+ wxComponent()
+], Radio);
+export default Radio;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/radio.json b/miniprogram_npm/tdesign-miniprogram/radio/radio.json
new file mode 100644
index 0000000..dfd59ed
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/radio.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/radio.wxml b/miniprogram_npm/tdesign-miniprogram/radio/radio.wxml
new file mode 100644
index 0000000..e4c96d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/radio.wxml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/radio.wxss b/miniprogram_npm/tdesign-miniprogram/radio/radio.wxss
new file mode 100644
index 0000000..33eec37
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/radio.wxss
@@ -0,0 +1,193 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.limit-title-row {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.t-radio {
+ display: inline-flex;
+ vertical-align: middle;
+ font-size: var(--td-radio-font-size, 32rpx);
+ background: var(--td-radio-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ position: relative;
+}
+.t-radio:focus {
+ outline: 0;
+}
+.t-radio--block {
+ display: flex;
+ padding: var(--td-radio-vertical-padding, 32rpx);
+}
+.t-radio--right {
+ flex-direction: row-reverse;
+}
+.t-radio__icon {
+ position: relative;
+ width: var(--td-radio-icon-size, 48rpx);
+ height: var(--td-radio-icon-size, 48rpx);
+ font-size: var(--td-radio-icon-size, 48rpx);
+ color: var(--td-radio-icon-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ overflow: hidden;
+}
+.t-radio__icon:empty {
+ display: none;
+}
+.t-radio__icon--left {
+ margin-right: 16rpx;
+}
+.t-radio__icon--checked {
+ color: var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-radio__icon--disabled {
+ cursor: not-allowed;
+ color: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__icon-circle {
+ width: 84rpx;
+ height: 84rpx;
+ border: 3px solid var(--td-radio-icon-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+}
+.t-radio__icon-circle--disabled {
+ background: var(--td-radio-icon-disabled-bg-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-radio__icon-line:before,
+.t-radio__icon-line:after {
+ content: '';
+ display: block;
+ position: absolute;
+ width: 5rpx;
+ border-radius: 2rpx;
+ background: var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ transform-origin: top center;
+}
+.t-radio__icon-line:before {
+ height: 16rpx;
+ left: 8rpx;
+ top: 22rpx;
+ transform: rotate(-45deg);
+}
+.t-radio__icon-line::after {
+ height: 26rpx;
+ right: 8rpx;
+ top: 14rpx;
+ transform: rotate(45deg);
+}
+.t-radio__icon-line--disabled::before,
+.t-radio__icon-line--disabled::after {
+ background: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__icon-dot {
+ width: 84rpx;
+ height: 84rpx;
+ border: 3px solid var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-radio__icon-dot:after {
+ content: '';
+ display: block;
+ width: 48rpx;
+ height: 48rpx;
+ background: var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: 50%;
+}
+.t-radio__icon-dot--disabled {
+ border-color: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__icon-dot--disabled::after {
+ background: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__image {
+ line-height: var(--td-radio-icon-size, 48rpx);
+}
+.t-radio-icon__image {
+ height: var(--td-radio-icon-size, 48rpx);
+ width: var(--td-radio-icon-size, 48rpx);
+ vertical-align: sub;
+}
+.t-radio__content {
+ flex: 1;
+}
+.t-radio__content:empty {
+ display: none;
+}
+.t-radio__title {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ color: var(--td-radio-label-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: var(--td-radio-label-line-height, 48rpx);
+}
+.t-radio__title--disabled {
+ cursor: not-allowed;
+ color: var(--td-radio-label-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-radio__description {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ color: var(--td-radio-content-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ font-size: 28rpx;
+ line-height: var(--td-radio-content-line-height, 44rpx);
+}
+.t-radio__description--disabled {
+ cursor: not-allowed;
+ color: var(--td-radio-content-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-radio__description:empty {
+ display: none;
+}
+.t-radio__title + .t-radio__description {
+ margin-top: 8rpx;
+}
+.t-radio__border {
+ position: absolute;
+ bottom: 0;
+ height: 1px;
+ background: var(--td-radio-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+ left: 96rpx;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-radio__border--right {
+ left: 32rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/type.d.ts b/miniprogram_npm/tdesign-miniprogram/radio/type.d.ts
new file mode 100644
index 0000000..9a202ac
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/type.d.ts
@@ -0,0 +1,67 @@
+export interface TdRadioProps {
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ allowUncheck?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border'];
+ };
+ icon?: {
+ type: null;
+ value?: 'circle' | 'line' | Array;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: T;
+ };
+}
+export declare type RadioValue = string | number | boolean;
diff --git a/miniprogram_npm/tdesign-miniprogram/radio/type.js b/miniprogram_npm/tdesign-miniprogram/radio/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/radio/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/rate/README.en-US.md
new file mode 100644
index 0000000..0753221
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+### Rate Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+allow-half | Boolean | false | \- | N
+color | String / Array | '#ED7B2F' | `0.30.0`。Typescript:`string \| Array` | N
+count | Number | 5 | \- | N
+disabled | Boolean | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-text']` | N
+gap | String / Number | 8 | \- | N
+icon | String / Array | - | Typescript:`string \| string[]` | N
+show-text | Boolean | false | \- | N
+size | String | 24px | \- | N
+texts | Array | [] | Typescript:`Array` | N
+value | Number | 0 | \- | N
+default-value | Number | undefined | uncontrolled property | N
+variant | String | outline | options:outline/filled | N
+
+### Rate Events
+
+name | params | description
+-- | -- | --
+change | `(value: number)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/README.md b/miniprogram_npm/tdesign-miniprogram/rate/README.md
new file mode 100644
index 0000000..de4e72d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/README.md
@@ -0,0 +1,85 @@
+---
+title: Rate 评分
+description: 用于对某行为/事物进行打分。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+{
+ "usingComponents": {
+ "t-rate": "tdesign-miniprogram/rate/rate"
+ }
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+实心评分
+
+{{ base }}
+
+自定义评分
+
+{{ custom }}
+
+自定义评分数量
+
+{{ count }}
+
+带描述评分
+
+{{ show-text }}
+
+### 组件状态
+
+{{ action }}
+
+### 组件样式
+
+评分大小
+
+{{ size }}
+
+设置评分颜色
+
+{{ color }}
+
+### 特殊样式
+
+竖向带描述评分
+
+{{ special }}
+
+
+## API
+### Rate Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+allow-half | Boolean | false | 是否允许半选 | N
+color | String / Array | '#ED7B2F' | `0.30.0`。评分图标的颜色,样式中默认为 #ED7B2F。一个值表示设置选中高亮的五角星颜色,示例:[选中颜色]。数组则表示分别设置 选中高亮的五角星颜色 和 未选中暗灰的五角星颜色,[选中颜色,未选中颜色]。示例:['#ED7B2F', '#E3E6EB']。TS 类型:`string \| Array` | N
+count | Number | 5 | 评分的数量 | N
+disabled | Boolean | - | 是否禁用评分 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、评分图标类名、辅助文字类名。`['t-class', 't-class-icon', 't-class-text']` | N
+gap | Number | 8 | 评分图标的间距 | N
+icon | String / Array | - | `0.30.0`。自定义评分图标,[选中图标,未选中图标]。TS 类型:`string \| string[]` | N
+show-text | Boolean | false | 是否显示对应的辅助文字 | N
+size | String | 24px | 评分图标的大小 | N
+texts | Array | [] | 评分等级对应的辅助文字。组件内置默认值为:['极差', '失望', '一般', '满意', '惊喜']。自定义值示例:['1分', '2分', '3分', '4分', '5分']。TS 类型:`Array` | N
+value | Number | 0 | 选择评分的值 | N
+default-value | Number | undefined | 选择评分的值。非受控属性 | N
+variant | String | outline | 废弃。形状类型,有描边类型和填充类型两种。可选项:outline/filled | N
+
+### Rate Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: number)` | 评分数改变时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/props.d.ts b/miniprogram_npm/tdesign-miniprogram/rate/props.d.ts
new file mode 100644
index 0000000..f908fa5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRateProps } from './type';
+declare const props: TdRateProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/props.js b/miniprogram_npm/tdesign-miniprogram/rate/props.js
new file mode 100644
index 0000000..f5daf59
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/props.js
@@ -0,0 +1,48 @@
+const props = {
+ allowHalf: {
+ type: Boolean,
+ value: false,
+ },
+ color: {
+ type: null,
+ value: '#ED7B2F',
+ },
+ count: {
+ type: Number,
+ value: 5,
+ },
+ disabled: {
+ type: Boolean,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ gap: {
+ type: null,
+ value: 8,
+ },
+ icon: {
+ type: null,
+ },
+ showText: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: '24px',
+ },
+ texts: {
+ type: Array,
+ value: [],
+ },
+ value: {
+ type: Number,
+ value: null,
+ },
+ defaultValue: {
+ type: Number,
+ value: 0,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/rate.d.ts b/miniprogram_npm/tdesign-miniprogram/rate/rate.d.ts
new file mode 100644
index 0000000..3aad047
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/rate.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent } from '../common/src/index';
+export default class Rate extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdRateProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ defaultTexts: string[];
+ tipsVisible: boolean;
+ tipsLeft: number;
+ actionType: string;
+ scaleIndex: number;
+ };
+ methods: {
+ onTouch(e: WechatMiniprogram.TouchEvent, eventType: 'tap' | 'move'): void;
+ onTap(e: WechatMiniprogram.TouchEvent): void;
+ onTouchStart(): void;
+ onTouchMove(e: WechatMiniprogram.TouchEvent): void;
+ onTouchEnd(): void;
+ hideTips(): void;
+ onSelect(e: WechatMiniprogram.TouchEvent): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/rate.js b/miniprogram_npm/tdesign-miniprogram/rate/rate.js
new file mode 100644
index 0000000..a6774a5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/rate.js
@@ -0,0 +1,101 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { unitConvert, getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-rate`;
+let Rate = class Rate extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-icon`, `${prefix}-class-text`];
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ defaultTexts: ['极差', '失望', '一般', '满意', '惊喜'],
+ tipsVisible: false,
+ tipsLeft: 0,
+ actionType: '',
+ scaleIndex: -1,
+ };
+ this.methods = {
+ onTouch(e, eventType) {
+ const { count, allowHalf, gap, value: currentValue, size } = this.properties;
+ const [touch] = e.touches;
+ const margin = unitConvert(gap);
+ getRect(this, `.${name}__wrapper`).then((rect) => {
+ const { width, left } = rect;
+ const starWidth = (width - (count - 1) * margin) / count;
+ const offsetX = touch.pageX - left;
+ const num = (offsetX + margin) / (starWidth + margin);
+ const remainder = num % 1;
+ const integral = num - remainder;
+ let value = remainder <= 0.5 && allowHalf ? integral + 0.5 : integral + 1;
+ if (value > count) {
+ value = count;
+ }
+ else if (value < 0) {
+ value = 0;
+ }
+ if (eventType === 'move' || (eventType === 'tap' && allowHalf)) {
+ const left = Math.ceil(value - 1) * (unitConvert(gap) + unitConvert(size)) + unitConvert(size) * 0.5;
+ this.setData({
+ tipsVisible: true,
+ actionType: eventType,
+ scaleIndex: Math.ceil(value),
+ tipsLeft: Math.max(left, 0),
+ });
+ }
+ if (value !== currentValue) {
+ this._trigger('change', { value });
+ }
+ if (this.touchEnd) {
+ this.hideTips();
+ }
+ });
+ },
+ onTap(e) {
+ this.onTouch(e, 'tap');
+ },
+ onTouchStart() {
+ this.touchEnd = false;
+ },
+ onTouchMove(e) {
+ this.onTouch(e, 'move');
+ },
+ onTouchEnd() {
+ this.touchEnd = true;
+ this.hideTips();
+ },
+ hideTips() {
+ if (this.data.actionType === 'move') {
+ this.setData({ tipsVisible: false, scaleIndex: -1 });
+ }
+ },
+ onSelect(e) {
+ const { value } = e.currentTarget.dataset;
+ const { actionType } = this.data;
+ if (actionType === 'move')
+ return;
+ this._trigger('change', { value });
+ setTimeout(() => this.setData({ tipsVisible: false, scaleIndex: -1 }), 300);
+ },
+ };
+ }
+};
+Rate = __decorate([
+ wxComponent()
+], Rate);
+export default Rate;
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/rate.json b/miniprogram_npm/tdesign-miniprogram/rate/rate.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/rate.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/rate.wxml b/miniprogram_npm/tdesign-miniprogram/rate/rate.wxml
new file mode 100644
index 0000000..4d8cefa
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/rate.wxml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ {{utils.getText(texts,value,defaultTexts)}}
+
+
+
+
+ {{utils.ceil(value) - 0.5}}
+
+
+
+ {{utils.ceil(value)}}
+
+
+
+
+ {{value}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/rate.wxs b/miniprogram_npm/tdesign-miniprogram/rate/rate.wxs
new file mode 100644
index 0000000..d799da4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/rate.wxs
@@ -0,0 +1,65 @@
+module.exports = {
+ getText: function (texts, val, defaultTexts) {
+ if (!texts.length) {
+ texts = defaultTexts;
+ }
+ var curVal = Math.floor(val - 1);
+ return texts[curVal] || '未评分';
+ },
+
+ getIconName: function (defaultValue, value, index, icon) {
+ var curVal = value ? value : defaultValue;
+ var name = ['star-filled', 'star-filled'];
+
+ if (icon) {
+ name = icon.constructor == 'Array' ? icon : [icon, icon];
+ }
+
+ return name[curVal >= index + 1 ? 0 : 1];
+ },
+
+ getIconClass: function (classPrefix, defaultValue, value, index, allowHalf, disabled, scaleIndex) {
+ var curVal = value ? value : defaultValue;
+ var className = [];
+ if (curVal >= index + 1) {
+ className.push(classPrefix + '--selected');
+ if (disabled) {
+ className.push(classPrefix + '--disabled');
+ }
+ if (scaleIndex === index + 1) {
+ className.push(classPrefix + '--current');
+ }
+ } else if (allowHalf && curVal - index > 0) {
+ className.push(classPrefix + '--selected-half');
+ if (scaleIndex === index + 1) {
+ className.push(classPrefix + '--current');
+ }
+ if (disabled) {
+ className.push(classPrefix + '--disabled-half');
+ }
+ } else {
+ className.push(classPrefix + '--unselected');
+ }
+ return className.join(' ');
+ },
+
+ ceil: function (value) {
+ return Math.ceil(value);
+ },
+
+ getColor: function (color) {
+ if (color.constructor === 'Array' && color.length === 2) {
+ return ';--td-rate-selected-color: ' + color[0] + '; --td-rate-unselected-color: ' + color[1];
+ }
+
+ if (typeof color === 'string') {
+ return ';--td-rate-selected-color: ' + color;
+ }
+
+ return '';
+ },
+
+ regSize: function (val) {
+ return val.indexOf('px') ? val : val + 'px';
+ },
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/rate.wxss b/miniprogram_npm/tdesign-miniprogram/rate/rate.wxss
new file mode 100644
index 0000000..99274b2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/rate.wxss
@@ -0,0 +1,94 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-rate {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+}
+.t-rate__wrapper {
+ line-height: 1em;
+ display: inline-flex;
+}
+.t-rate__icon {
+ display: block;
+ line-height: 1em;
+ width: 1em;
+ transition: transform 0.3s ease;
+}
+.t-rate__icon--current {
+ transform: scale(var(--td-rate-icon-scale, 1.33));
+}
+.t-rate__icon--selected {
+ color: var(--td-rate-selected-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-rate__icon--selected-half {
+ color: transparent;
+ background: linear-gradient(to right, var(--td-rate-selected-color, var(--td-warning-color, var(--td-warning-color-5, #e37318))) 0%, var(--td-rate-selected-color, var(--td-warning-color, var(--td-warning-color-5, #e37318))) 50%, var(--td-rate-unselected-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc))) 51%, var(--td-rate-unselected-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc))) 100%);
+ -webkit-background-clip: text;
+ background-clip: text;
+}
+.t-rate__icon--unselected {
+ color: var(--td-rate-unselected-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-rate__text {
+ font-size: var(--td-rate-text-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-rate-text-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ margin-left: 32rpx;
+ vertical-align: middle;
+}
+.t-rate__text--active {
+ color: var(--td-rate-text-active-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: var(--td-rate-text-active-font-weight, 600);
+}
+.t-rate__tips {
+ position: absolute;
+ display: flex;
+ align-items: center;
+ bottom: calc(100% + 16rpx);
+ padding: 8rpx;
+ border-radius: 12rpx;
+ box-shadow: var(--td-shadow-1, 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.12));
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ transform: translateX(-50%);
+}
+.t-rate__tips-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 64rpx;
+ border-radius: 6rpx;
+}
+.t-rate__tips-item--active {
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+}
+.t-rate__tips-text {
+ text-align: center;
+ font-size: 24rpx;
+ line-height: 40rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/type.d.ts b/miniprogram_npm/tdesign-miniprogram/rate/type.d.ts
new file mode 100644
index 0000000..8965510
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/type.d.ts
@@ -0,0 +1,54 @@
+export interface TdRateProps {
+ allowHalf?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ color?: {
+ type: null;
+ value?: string | Array;
+ };
+ count?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-text'];
+ };
+ gap?: {
+ type: null;
+ value?: string | number;
+ };
+ icon?: {
+ type: null;
+ value?: string | string[];
+ };
+ showText?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ texts?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ defaultValue?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/rate/type.js b/miniprogram_npm/tdesign-miniprogram/rate/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/rate/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/result/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/result/README.en-US.md
new file mode 100644
index 0000000..813f4d1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/README.en-US.md
@@ -0,0 +1,14 @@
+:: BASE_DOC ::
+
+## API
+
+### Result Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+description | String / Slot | - | \- | N
+external-classes | Array | - | \- | N
+icon | String | - | \- | N
+image | String / Slot | - | \- | N
+theme | String | default | \- | N
+title | String / Slot | '' | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/result/README.md b/miniprogram_npm/tdesign-miniprogram/result/README.md
new file mode 100644
index 0000000..e590f1b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/README.md
@@ -0,0 +1,65 @@
+---
+title: Result 结果
+description: 反馈结果状态。
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.16.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-result": "tdesign-miniprogram/result/result"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础结果
+
+{{ theme }}
+
+带描述的结果
+
+{{ description }}
+
+自定义结果
+
+{{ custom }}
+
+## 常见问题
+
+
+
+ 本地图片无法正确引用?
+ 👇
+
+
+ 建议使用绝对路径,而不是相对路径。绝对路径以 app.json 所在位置为基准。
+
+
+
+## API
+### Result Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+description | String / Slot | - | 描述文字 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、文本描述类名、图片类名、操作按钮类名。`['t-class', 't-class-image', 't-class-title', 't-class-description']` | N
+icon | String / Boolean / Object | true | 图标名称。值为字符串表示图标名称,值为 `false` 表示不显示图标,值为 `Object` 类型,表示透传至 `icon`,不传表示使用主题图标。 | N
+image | String / Slot | - | 图片地址 | N
+theme | String | default | 内置主题。可选项:default/success/warning/error | N
+title | String / Slot | '' | 标题 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/result/index.d.ts b/miniprogram_npm/tdesign-miniprogram/result/index.d.ts
new file mode 100644
index 0000000..74469ef
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './result';
diff --git a/miniprogram_npm/tdesign-miniprogram/result/index.js b/miniprogram_npm/tdesign-miniprogram/result/index.js
new file mode 100644
index 0000000..74469ef
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './result';
diff --git a/miniprogram_npm/tdesign-miniprogram/result/props.d.ts b/miniprogram_npm/tdesign-miniprogram/result/props.d.ts
new file mode 100644
index 0000000..7336c63
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/props.d.ts
@@ -0,0 +1,3 @@
+import { TdResultProps } from './type';
+declare const props: TdResultProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/result/props.js b/miniprogram_npm/tdesign-miniprogram/result/props.js
new file mode 100644
index 0000000..613f4af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/props.js
@@ -0,0 +1,24 @@
+const props = {
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: true,
+ },
+ image: {
+ type: String,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/result/result.d.ts b/miniprogram_npm/tdesign-miniprogram/result/result.d.ts
new file mode 100644
index 0000000..9dfa5ff
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/result.d.ts
@@ -0,0 +1,21 @@
+import { SuperComponent } from '../common/src/index';
+export default class extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ properties: import("./type").TdResultProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ observers: {
+ 'icon, theme'(): void;
+ };
+ methods: {
+ initIcon(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/result/result.js b/miniprogram_npm/tdesign-miniprogram/result/result.js
new file mode 100644
index 0000000..d70e77b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/result.js
@@ -0,0 +1,59 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-result`;
+const THEME_ICON = {
+ default: 'error-circle',
+ success: 'check-circle',
+ warning: 'error-circle',
+ error: 'close-circle',
+};
+let default_1 = class extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-image`,
+ `${prefix}-class-title`,
+ `${prefix}-class-description`,
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.lifetimes = {
+ ready() {
+ this.initIcon();
+ },
+ };
+ this.observers = {
+ 'icon, theme'() {
+ this.initIcon();
+ },
+ };
+ this.methods = {
+ initIcon() {
+ const { icon, theme } = this.properties;
+ this.setData({
+ _icon: calcIcon(icon, THEME_ICON[theme]),
+ });
+ },
+ };
+ }
+};
+default_1 = __decorate([
+ wxComponent()
+], default_1);
+export default default_1;
diff --git a/miniprogram_npm/tdesign-miniprogram/result/result.json b/miniprogram_npm/tdesign-miniprogram/result/result.json
new file mode 100644
index 0000000..9a40e60
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/result.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/result/result.wxml b/miniprogram_npm/tdesign-miniprogram/result/result.wxml
new file mode 100644
index 0000000..875bdb5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/result.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+ {{description}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/result/result.wxss b/miniprogram_npm/tdesign-miniprogram/result/result.wxss
new file mode 100644
index 0000000..746332d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/result.wxss
@@ -0,0 +1,65 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-result {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+.t-result__icon {
+ font-size: 160rpx;
+}
+.t-result__title {
+ line-height: var(--td-result-title-line-height, 56rpx);
+ font-size: var(--td-result-title-font-size, var(--td-font-size-l, 40rpx));
+ font-weight: 700;
+ color: var(--td-result-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-result__thumb:not(:empty) + .t-result__title:not(:empty) {
+ margin-top: var(--td-result-title-margin-top, var(--td-spacer-1, 24rpx));
+}
+.t-result__description {
+ text-align: center;
+ color: var(--td-result-description-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ font-size: var(--td-result-description-font-size, var(--td-font-size-base, 28rpx));
+ line-height: var(--td-result-description-line-height, 44rpx);
+}
+.t-result__title + .t-result__description:not(:empty) {
+ margin-top: var(--td-result-description-margin-top, var(--td-spacer, 16rpx));
+}
+.t-result--theme-default {
+ color: var(--td-result-icon-default-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-result--theme-success {
+ color: var(--td-result-icon-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-result--theme-warning {
+ color: var(--td-result-icon-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-result--theme-error {
+ color: var(--td-result-icon-error-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/result/type.d.ts b/miniprogram_npm/tdesign-miniprogram/result/type.d.ts
new file mode 100644
index 0000000..bcd1e81
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/type.d.ts
@@ -0,0 +1,30 @@
+export interface TdResultProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-description', 't-class-image'];
+ };
+ icon?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'success' | 'warning' | 'error';
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/result/type.js b/miniprogram_npm/tdesign-miniprogram/result/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/result/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/row/README.md b/miniprogram_npm/tdesign-miniprogram/row/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/miniprogram_npm/tdesign-miniprogram/row/props.d.ts b/miniprogram_npm/tdesign-miniprogram/row/props.d.ts
new file mode 100644
index 0000000..34bd697
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRowProps } from './type';
+declare const props: TdRowProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/row/props.js b/miniprogram_npm/tdesign-miniprogram/row/props.js
new file mode 100644
index 0000000..2faa498
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/props.js
@@ -0,0 +1,6 @@
+const props = {
+ gutter: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/row/row.d.ts b/miniprogram_npm/tdesign-miniprogram/row/row.d.ts
new file mode 100644
index 0000000..136e65c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/row.d.ts
@@ -0,0 +1,15 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Row extends SuperComponent {
+ externalClasses: any[];
+ properties: import("./type").TdRowProps;
+ data: {
+ prefix: string;
+ };
+ relations: RelationsOptions;
+ observers: {
+ gutter(): void;
+ };
+ methods: {
+ setGutter(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/row/row.js b/miniprogram_npm/tdesign-miniprogram/row/row.js
new file mode 100644
index 0000000..a82c5c8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/row.js
@@ -0,0 +1,49 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+let Row = class Row extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [];
+ this.properties = props;
+ this.data = {
+ prefix,
+ };
+ this.relations = {
+ '../col/col': {
+ type: 'child',
+ linked(target) {
+ const { gutter } = this.data;
+ if (gutter) {
+ target.setData({ gutter });
+ }
+ },
+ },
+ };
+ this.observers = {
+ gutter() {
+ this.setGutter();
+ },
+ };
+ this.methods = {
+ setGutter() {
+ const { gutter } = this.data;
+ const cols = this.$children;
+ cols.forEach((col) => {
+ col.setData({ gutter });
+ });
+ },
+ };
+ }
+};
+Row = __decorate([
+ wxComponent()
+], Row);
+export default Row;
diff --git a/miniprogram_npm/tdesign-miniprogram/row/row.json b/miniprogram_npm/tdesign-miniprogram/row/row.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/row.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/row/row.wxml b/miniprogram_npm/tdesign-miniprogram/row/row.wxml
new file mode 100644
index 0000000..e7f0bbe
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/row.wxml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/row/row.wxs b/miniprogram_npm/tdesign-miniprogram/row/row.wxs
new file mode 100644
index 0000000..d87ced5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/row.wxs
@@ -0,0 +1,16 @@
+var utils = require('../common/utils.wxs');
+
+function getRowStyles(data) {
+ if (!data.gutter) {
+ return '';
+ }
+
+ return utils._style({
+ 'margin-right': utils.addUnit(-data.gutter / 2),
+ 'margin-left': utils.addUnit(-data.gutter / 2),
+ });
+}
+
+module.exports = {
+ getRowStyles: getRowStyles,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/row/row.wxss b/miniprogram_npm/tdesign-miniprogram/row/row.wxss
new file mode 100644
index 0000000..c206b7c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/row.wxss
@@ -0,0 +1,5 @@
+.t-row:after {
+ clear: both;
+ content: '';
+ display: table;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/row/type.d.ts b/miniprogram_npm/tdesign-miniprogram/row/type.d.ts
new file mode 100644
index 0000000..f151c1c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/type.d.ts
@@ -0,0 +1,6 @@
+export interface TdRowProps {
+ gutter?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/row/type.js b/miniprogram_npm/tdesign-miniprogram/row/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/row/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/search/README.md b/miniprogram_npm/tdesign-miniprogram/search/README.md
new file mode 100644
index 0000000..c1d1afa
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/README.md
@@ -0,0 +1,71 @@
+---
+title: Search 搜索框
+description: 用于用户输入搜索信息,并进行页面内容搜索。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-search": "tdesign-miniprogram/search/search"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础搜索框
+
+{{ base }}
+
+获取焦点后显示取消按钮
+
+{{ action }}
+
+### 02 组件样式
+
+搜索框形状
+
+{{ shape }}
+
+### 03 组件状态
+
+默认状态其他对齐方式
+
+{{ other }}
+
+## API
+### Search Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+action | String / Slot | '' | 自定义右侧操作按钮文字 | N
+center | Boolean | false | 是否居中 | N
+disabled | Boolean | false | 是否禁用 | N
+external-classes | Array | - | 组件外部样式类名,分别用于设置组件外层类名、输入框类名、输入框容器类名、右侧 cancel 文本类名、左侧图标类名、右侧图标类型。`['t-class', 't-class-input', 't-class-input-container', 't-class-action','t-class-left','t-class-clear']` | N
+focus | Boolean | false | 是否聚焦 | N
+label | String | '' | 已废弃。左侧文本 | N
+left-icon | String / Slot | 'search' | 左侧图标 | N
+placeholder | String | '' | 占位符 | N
+right-icon | String / Slot | 'close-circle-filled' | 已废弃。右侧图标 | N
+clearable | Boolean | true | 是否启用清除控件 | N
+shape | String | 'square' | 搜索框形状。可选项:square/round | N
+value | String | '' | 值 | N
+type | String | 'text' | 拉起键盘的类型,可选项:text/number/idcard/digit/nickname | N
+
+### Search Events
+
+名称 | 参数 | 描述
+-- | -- | --
+action-click | `({})` | 点击右侧操作按钮文字时触发
+blur | `({ value: string })` | 失去焦点时触发
+change | `({ value: string })` | 值发生变化时触发
+clear | `({ value: string })` | 点击清除时触发
+focus | `({ value: string })` | 聚焦时触发
+submit | `({ value: string })` | 提交时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/search/props.d.ts b/miniprogram_npm/tdesign-miniprogram/search/props.d.ts
new file mode 100644
index 0000000..81c5bff
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSearchProps } from './type';
+declare const props: TdSearchProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/search/props.js b/miniprogram_npm/tdesign-miniprogram/search/props.js
new file mode 100644
index 0000000..15a02c1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/props.js
@@ -0,0 +1,54 @@
+const props = {
+ action: {
+ type: String,
+ value: '',
+ },
+ center: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ focus: {
+ type: Boolean,
+ value: false,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ leftIcon: {
+ type: String,
+ value: 'search',
+ },
+ placeholder: {
+ type: String,
+ value: '',
+ },
+ rightIcon: {
+ type: String,
+ value: 'close-circle-filled',
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ value: {
+ type: String,
+ value: '',
+ },
+ clearable: {
+ type: Boolean,
+ value: true,
+ },
+ type: {
+ type: String,
+ value: 'text',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/search/search.d.ts b/miniprogram_npm/tdesign-miniprogram/search/search.d.ts
new file mode 100644
index 0000000..61c1cdb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/search.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent } from '../common/src/index';
+export default class Search extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdSearchProps;
+ observers: {
+ focus(this: Search, nextValue: boolean): void;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ localValue: {
+ focus: boolean;
+ };
+ };
+ onInput(e: any): void;
+ onFocus(e: any): void;
+ onBlur(e: any): void;
+ handleClear(): void;
+ onConfirm(e: any): void;
+ onActionClick(): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/search/search.js b/miniprogram_npm/tdesign-miniprogram/search/search.js
new file mode 100644
index 0000000..6560bb2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/search.js
@@ -0,0 +1,70 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-search`;
+let Search = class Search extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-input-container`,
+ `${prefix}-class-input`,
+ `${prefix}-class-action`,
+ `${prefix}-class-left`,
+ `${prefix}-class-clear`,
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.observers = {
+ focus(nextValue) {
+ this.setData({ 'localValue.focus': nextValue });
+ },
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ localValue: {
+ focus: false,
+ },
+ };
+ }
+ onInput(e) {
+ const { value } = e.detail;
+ this.setData({ value });
+ this.triggerEvent('change', { value });
+ }
+ onFocus(e) {
+ const { value } = e.detail;
+ this.setData({ 'localValue.focus': true });
+ this.triggerEvent('focus', { value });
+ }
+ onBlur(e) {
+ const { value } = e.detail;
+ this.setData({ 'localValue.focus': false });
+ this.triggerEvent('blur', { value });
+ }
+ handleClear() {
+ this.setData({ value: '' });
+ this.triggerEvent('clear', { value: '' });
+ }
+ onConfirm(e) {
+ const { value } = e.detail;
+ this.triggerEvent('submit', { value });
+ }
+ onActionClick() {
+ this.triggerEvent('action-click');
+ }
+};
+Search = __decorate([
+ wxComponent()
+], Search);
+export default Search;
diff --git a/miniprogram_npm/tdesign-miniprogram/search/search.json b/miniprogram_npm/tdesign-miniprogram/search/search.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/search.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/search/search.wxml b/miniprogram_npm/tdesign-miniprogram/search/search.wxml
new file mode 100644
index 0000000..85f9dac
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/search.wxml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{action}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/search/search.wxss b/miniprogram_npm/tdesign-miniprogram/search/search.wxss
new file mode 100644
index 0000000..95e9253
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/search.wxss
@@ -0,0 +1,97 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-search {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.t-search__label {
+ padding: 8rpx;
+ color: var(--search-label-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-search__input-box {
+ flex: 1;
+ box-sizing: border-box;
+ display: flex;
+ height: var(--td-search-height, 80rpx);
+ align-items: center;
+ border: 2rpx solid var(--td-search-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ background: var(--td-search-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ padding: var(--td-search-padding, 16rpx 24rpx);
+}
+.t-search__input-box.t-is-focused {
+ border-color: var(--td-search-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-search__input-box--round {
+ border-radius: calc(var(--td-search-height, 80rpx) / 2);
+}
+.t-search__input-box--square {
+ border-radius: var(--td-search-square-radius, var(--td-radius-default, 12rpx));
+}
+.t-search__input-box--center {
+ text-align: center;
+}
+.t-search__input-box .t-input__keyword {
+ display: inline-block;
+ flex: 1;
+ color: var(--td-search-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-search-font-size, var(--td-font-size-m, 32rpx));
+ padding-left: 10rpx;
+}
+.t-search__input-box .t-icon {
+ color: var(--td-search-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-search__clear {
+ position: relative;
+ margin-left: 10px;
+ color: var(--td-search-clear-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-search__clear.relative {
+ position: relative;
+}
+.t-search__clear::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-search__search-action {
+ margin-left: 30rpx;
+ font-size: var(--td-search-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-search-action-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-search__placeholder {
+ color: var(--td-search-placeholder-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-search__placeholder--center {
+ text-align: center;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/search/type.d.ts b/miniprogram_npm/tdesign-miniprogram/search/type.d.ts
new file mode 100644
index 0000000..718a13b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/type.d.ts
@@ -0,0 +1,58 @@
+export interface TdSearchProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ action?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ center?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-input', 't-class-input-container', 't-class-cancel', 't-class-left', 't-class-right'];
+ };
+ focus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ leftIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placeholder?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ rightIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'square' | 'round';
+ };
+ value?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ clearable: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ type: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/search/type.js b/miniprogram_npm/tdesign-miniprogram/search/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/search/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/props.d.ts b/miniprogram_npm/tdesign-miniprogram/side-bar-item/props.d.ts
new file mode 100644
index 0000000..cdda046
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSideBarItemProps } from './type';
+declare const props: TdSideBarItemProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/props.js b/miniprogram_npm/tdesign-miniprogram/side-bar-item/props.js
new file mode 100644
index 0000000..8ce799a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/props.js
@@ -0,0 +1,20 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.d.ts b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.d.ts
new file mode 100644
index 0000000..a0d8ffb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.d.ts
@@ -0,0 +1,20 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class SideBarItem extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdSideBarItemProps;
+ relations: RelationsOptions;
+ observers: {
+ icon(v: any): void;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ active: boolean;
+ isPre: boolean;
+ isNext: boolean;
+ };
+ methods: {
+ updateActive(value: any): void;
+ handleClick(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.js b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.js
new file mode 100644
index 0000000..0fa2495
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.js
@@ -0,0 +1,58 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-side-bar-item`;
+let SideBarItem = class SideBarItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.relations = {
+ '../side-bar/side-bar': {
+ type: 'parent',
+ linked(parent) {
+ this.parent = parent;
+ this.updateActive(parent.data.value);
+ },
+ },
+ };
+ this.observers = {
+ icon(v) {
+ this.setData({ _icon: typeof v === 'string' ? { name: v } : v });
+ },
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ active: false,
+ isPre: false,
+ isNext: false,
+ };
+ this.methods = {
+ updateActive(value) {
+ const active = value === this.data.value;
+ this.setData({
+ active,
+ });
+ },
+ handleClick() {
+ var _a;
+ if (this.data.disabled)
+ return;
+ const { value, label } = this.data;
+ (_a = this.parent) === null || _a === void 0 ? void 0 : _a.doChange({ value, label });
+ },
+ };
+ }
+};
+SideBarItem = __decorate([
+ wxComponent()
+], SideBarItem);
+export default SideBarItem;
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.json b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.json
new file mode 100644
index 0000000..2c00c37
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-badge": "../badge/badge",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.wxml b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.wxml
new file mode 100644
index 0000000..a95478e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.wxss b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.wxss
new file mode 100644
index 0000000..d5154f8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/side-bar-item.wxss
@@ -0,0 +1,92 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-side-bar-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ padding: 32rpx;
+ font-size: var(--td-side-bar-font-size, 32rpx);
+ color: var(--td-side-bar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background: var(--td-side-bar-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ min-height: var(--td-side-bar-item-height, 112rpx);
+ box-sizing: border-box;
+ white-space: wrap;
+ line-height: var(--td-side-bar-item-line-height, 48rpx);
+}
+.t-side-bar-item--active {
+ font-weight: 600;
+ background: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ color: var(--td-side-bar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-side-bar-item__icon {
+ font-size: var(--td-side-bar-icon-size, 40rpx);
+ margin-right: 4rpx;
+}
+.t-side-bar-item__prefix,
+.t-side-bar-item__suffix {
+ z-index: 1;
+ position: absolute;
+ right: 0;
+ width: calc(var(--td-side-bar-border-radius, 18rpx) * 2);
+ height: calc(var(--td-side-bar-border-radius, 18rpx) * 2);
+ background: #fff;
+}
+.t-side-bar-item__prefix::after,
+.t-side-bar-item__suffix::after {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 100%;
+ background-color: var(--td-side-bar-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-side-bar-item__prefix {
+ top: calc(var(--td-side-bar-border-radius, 18rpx) * -2);
+}
+.t-side-bar-item__prefix::after {
+ border-bottom-right-radius: var(--td-side-bar-border-radius, 18rpx);
+}
+.t-side-bar-item__suffix {
+ bottom: calc(var(--td-side-bar-border-radius, 18rpx) * -2);
+}
+.t-side-bar-item__suffix::after {
+ border-top-right-radius: var(--td-side-bar-border-radius, 18rpx);
+}
+.t-side-bar-item--disabled {
+ color: var(--td-side-bar-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-side-bar-item__line {
+ width: 6rpx;
+ height: 28rpx;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ background: var(--td-side-bar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: 8rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/type.d.ts b/miniprogram_npm/tdesign-miniprogram/side-bar-item/type.d.ts
new file mode 100644
index 0000000..e5ceead
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/type.d.ts
@@ -0,0 +1,21 @@
+export interface TdSideBarItemProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar-item/type.js b/miniprogram_npm/tdesign-miniprogram/side-bar-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/side-bar/README.en-US.md
new file mode 100644
index 0000000..46109c9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+### SideBar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+value | String / Number | - | \- | N
+default-value | String / Number | undefined | uncontrolled property | N
+
+### SideBar Events
+
+name | params | description
+-- | -- | --
+change | `(value: number \| string, label: string)` | \-
+click | `(value: number \| string, label: string)` | \-
+
+### SideBarItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | - | \- | N
+disabled | Boolean | false | \- | N
+icon | String / Object | - | `1.0.0-rc.1` | N
+label | String | - | \- | N
+value | String / Number | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/README.md b/miniprogram_npm/tdesign-miniprogram/side-bar/README.md
new file mode 100644
index 0000000..ef10681
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/README.md
@@ -0,0 +1,69 @@
+---
+title: SideBar 侧边栏
+description: 用于内容分类后的展示切换。
+spline: navigation
+isComponent: true
+---
+
+
+
+ 该组件于 0.25.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+{
+ "usingComponents": {
+ "t-side-bar": "tdesign-miniprogram/side-bar/side-bar",
+ "t-side-bar-item": "tdesign-miniprogram/side-bar-item/side-bar-item",
+ }
+}
+```
+
+## 代码演示
+
+### 锚点用法
+
+{{ base }}
+
+### 切页用法
+
+{{ switch }}
+
+### 带图标侧边导航
+
+{{ with-icon }}
+
+### 自定义样式
+
+{{ custom }}
+
+## API
+### SideBar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+value | String / Number | - | 选项值 | N
+default-value | String / Number | undefined | 选项值。非受控属性 | N
+
+### SideBar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: number \| string, label: string)` | 选项值发生变化时触发
+click | `(value: number \| string, label: string)` | 点击选项时触发
+
+### SideBarItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | - | 透传至 Badge 组件 | N
+disabled | Boolean | false | 是否禁用 | N
+icon | String / Object | - | `1.0.0-rc.1`。图标,传对象则透传至 Icon | N
+label | String | - | 展示的标签 | N
+value | String / Number | - | 当前选项的值 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/props.d.ts b/miniprogram_npm/tdesign-miniprogram/side-bar/props.d.ts
new file mode 100644
index 0000000..fcab408
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSideBarProps } from './type';
+declare const props: TdSideBarProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/props.js b/miniprogram_npm/tdesign-miniprogram/side-bar/props.js
new file mode 100644
index 0000000..a8aca64
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/props.js
@@ -0,0 +1,10 @@
+const props = {
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.d.ts b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.d.ts
new file mode 100644
index 0000000..2be2070
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class SideBar extends SuperComponent {
+ externalClasses: string[];
+ childs: any[];
+ relations: RelationsOptions;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ properties: import("./type").TdSideBarProps;
+ observers: {
+ value(v: any): void;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ };
+ methods: {
+ doChange({ value, label }: {
+ value: any;
+ label: any;
+ }): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.js b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.js
new file mode 100644
index 0000000..50458f6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.js
@@ -0,0 +1,58 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-side-bar`;
+const relationsPath = '../side-bar-item/side-bar-item';
+let SideBar = class SideBar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.childs = [];
+ this.relations = {
+ [relationsPath]: {
+ type: 'child',
+ linked(child) {
+ this.childs.push(child);
+ },
+ unlinked(child) {
+ const index = this.childs.findIndex((item) => item === child);
+ this.childs.splice(index, 1);
+ },
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.properties = props;
+ this.observers = {
+ value(v) {
+ this.$children.forEach((item) => {
+ item.updateActive(v);
+ });
+ },
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ };
+ this.methods = {
+ doChange({ value, label }) {
+ this._trigger('change', { value, label });
+ },
+ };
+ }
+};
+SideBar = __decorate([
+ wxComponent()
+], SideBar);
+export default SideBar;
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.json b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.json
new file mode 100644
index 0000000..a1c9d56
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-side-bar-item": "../side-bar-item/side-bar-item"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.wxml b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.wxml
new file mode 100644
index 0000000..b251c7f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.wxml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.wxss b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.wxss
new file mode 100644
index 0000000..b0a6893
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/side-bar.wxss
@@ -0,0 +1,38 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-side-bar {
+ display: flex;
+ flex-direction: column;
+ width: var(--td-side-bar-width, 206rpx);
+ height: var(--td-side-bar-height, 100%);
+ overflow-y: auto;
+}
+.t-side-bar__padding {
+ flex: 1;
+ background-color: var(--td-side-bar-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/side-bar/type.d.ts
new file mode 100644
index 0000000..39d8876
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/type.d.ts
@@ -0,0 +1,10 @@
+export interface TdSideBarProps {
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/side-bar/type.js b/miniprogram_npm/tdesign-miniprogram/side-bar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/side-bar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/skeleton/README.en-US.md
new file mode 100644
index 0000000..34a7592
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/README.en-US.md
@@ -0,0 +1,13 @@
+:: BASE_DOC ::
+
+## API
+### Skeleton Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+animation | String | none | options:gradient/flashed/none | N
+delay | Number | 0 | \- | N
+external-classes | Array | - | `['t-class', 't-class-avatar', 't-class-image', 't-class-text']` | N
+loading | Boolean | true | \- | N
+row-col | Array | [1, 1, 1, { width: '70%' }] | Typescript:`SkeletonRowCol` `type SkeletonRowCol = Array>` `interface SkeletonRowColObj { width?: string; size?: string;height?: string; marginRight?: string; marginLeft?: string; margin?: string; type?: 'rect' \| 'circle' \| 'text';}`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/skeleton/type.ts) | N
+theme | String | text | options:avatar/image/text/paragraph | N
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/README.md b/miniprogram_npm/tdesign-miniprogram/skeleton/README.md
new file mode 100644
index 0000000..e426de4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/README.md
@@ -0,0 +1,55 @@
+---
+title: Skeleton 骨架屏
+description: 用于等待加载内容所展示的占位图形组合,有动态效果加载效果,减少用户等待焦虑。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-skeleton": "tdesign-miniprogram/skeleton/skeleton"
+}
+```
+
+## 代码演示
+
+### 骨架屏类型
+
+基础骨架屏
+
+{{ theme }}
+
+单元格骨架屏
+
+{{ cell-group }}
+
+
+宫格骨架屏
+
+{{ grid }}
+
+图文组合骨架屏
+
+{{ image-group }}
+
+### 组件动效
+
+{{ animation }}
+
+
+## API
+### Skeleton Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+animation | String | none | 动画效果,有「渐变加载动画」和「闪烁加载动画」两种。值为 'none' 则表示没有动画。可选项:gradient/flashed/none | N
+delay | Number | 0 | 【开发中】延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒 | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、头像、图片、文本等元素类名。`['t-class', 't-class-avatar', 't-class-image', 't-class-text']` | N
+loading | Boolean | true | 是否为加载状态,如果是则显示骨架图,如果不是则显示加载完成的内容 | N
+row-col | Array | [1, 1, 1, { width: '70%' }] | 用于设置行列数量、宽度高度、间距等。【示例一】,`[1, 1, 2]` 表示输出三行骨架图,第一行一列,第二行一列,第三行两列。【示例二】,`[1, 1, { width: '100px' }]` 表示自定义第三行的宽度为 `100px`。【示例三】,`[1, 2, [{ width, height }, { width, height, marginLeft }]]` 表示第三行有两列,且自定义宽度、高度和间距。TS 类型:`SkeletonRowCol` `type SkeletonRowCol = Array>` `interface SkeletonRowColObj { width?: string; size?: string;height?: string; marginRight?: string; marginLeft?: string; margin?: string; type?: 'rect' \| 'circle' \| 'text';}`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/skeleton/type.ts) | N
+theme | String | text | 骨架图风格,有基础、头像组合等两大类。可选项:avatar/image/text/paragraph | N
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/props.d.ts b/miniprogram_npm/tdesign-miniprogram/skeleton/props.d.ts
new file mode 100644
index 0000000..2c8f4af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSkeletonProps } from './type';
+declare const props: TdSkeletonProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/props.js b/miniprogram_npm/tdesign-miniprogram/skeleton/props.js
new file mode 100644
index 0000000..b3e625f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/props.js
@@ -0,0 +1,25 @@
+const props = {
+ animation: {
+ type: String,
+ value: 'none',
+ },
+ delay: {
+ type: Number,
+ value: 0,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ loading: {
+ type: Boolean,
+ value: true,
+ },
+ rowCol: {
+ type: Array,
+ },
+ theme: {
+ type: String,
+ value: 'text',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.d.ts b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.d.ts
new file mode 100644
index 0000000..580711a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent } from '../common/src/index';
+import { SkeletonRowColObj } from './type';
+import { ClassName, Styles } from '../common/common';
+export default class Skeleton extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdSkeletonProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ parsedRowcols: any[];
+ };
+ observers: {
+ rowCol(): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ init(): void;
+ getColItemClass(obj: SkeletonRowColObj): ClassName;
+ getColItemStyle(obj: SkeletonRowColObj): Styles;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.js b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.js
new file mode 100644
index 0000000..3356e6c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.js
@@ -0,0 +1,117 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { isNumber, classNames } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-skeleton`;
+const ThemeMap = {
+ avatar: [{ type: 'circle', size: '96rpx' }],
+ image: [{ type: 'rect', size: '144rpx' }],
+ text: [
+ [
+ { width: '24%', height: '32rpx', marginRight: '32rpx' },
+ { width: '76%', height: '32rpx' },
+ ],
+ 1,
+ ],
+ paragraph: [1, 1, 1, { width: '55%' }],
+};
+let Skeleton = class Skeleton extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-col`, `${prefix}-class-row`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ parsedRowcols: [],
+ };
+ this.observers = {
+ rowCol() {
+ this.init();
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.init();
+ },
+ };
+ this.methods = {
+ init() {
+ const { theme, rowCol } = this.properties;
+ const rowCols = [];
+ if (rowCol.length) {
+ rowCols.push(...rowCol);
+ }
+ else {
+ rowCols.push(...ThemeMap[theme || 'text']);
+ }
+ const parsedRowcols = rowCols.map((item) => {
+ if (isNumber(item)) {
+ return [
+ {
+ class: this.getColItemClass({ type: 'text' }),
+ style: {},
+ },
+ ];
+ }
+ if (Array.isArray(item)) {
+ return item.map((col) => {
+ return Object.assign(Object.assign({}, col), { class: this.getColItemClass(col), style: this.getColItemStyle(col) });
+ });
+ }
+ const nItem = item;
+ return [
+ Object.assign(Object.assign({}, nItem), { class: this.getColItemClass(nItem), style: this.getColItemStyle(nItem) }),
+ ];
+ });
+ this.setData({
+ parsedRowcols,
+ });
+ },
+ getColItemClass(obj) {
+ return classNames([
+ `${name}__col`,
+ `${name}--type-${obj.type || 'text'}`,
+ `${name}--animation-${this.properties.animation}`,
+ ]);
+ },
+ getColItemStyle(obj) {
+ const styleName = [
+ 'width',
+ 'height',
+ 'marginRight',
+ 'marginLeft',
+ 'margin',
+ 'size',
+ 'background',
+ 'backgroundColor',
+ 'borderRadius',
+ ];
+ const style = {};
+ styleName.forEach((name) => {
+ if (name in obj) {
+ const px = isNumber(obj[name]) ? `${obj[name]}px` : obj[name];
+ if (name === 'size') {
+ [style.width, style.height] = [px, px];
+ }
+ else {
+ style[name] = px;
+ }
+ }
+ });
+ return style;
+ },
+ };
+ }
+};
+Skeleton = __decorate([
+ wxComponent()
+], Skeleton);
+export default Skeleton;
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.json b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.wxml b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.wxml
new file mode 100644
index 0000000..b5501c1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.wxss b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.wxss
new file mode 100644
index 0000000..b39b394
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/skeleton.wxss
@@ -0,0 +1,103 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-skeleton {
+ box-sizing: border-box;
+}
+.t-skeleton__row {
+ display: flex;
+ margin-bottom: var(--td-skeleton-row-spacing, var(--td-spacer-2, 32rpx));
+ align-items: center;
+ justify-content: space-between;
+}
+.t-skeleton__row:only-child,
+.t-skeleton__row:last-child {
+ margin-bottom: 0;
+}
+.t-skeleton__col {
+ background-color: var(--td-skeleton-bg-color, var(--td-bg-color-page, var(--td-gray-color-1, #f3f3f3)));
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-skeleton__col:first-child:last-child,
+.t-skeleton__col:last-child {
+ margin-right: 0;
+}
+.t-skeleton--type-text {
+ width: 100%;
+ height: var(--td-skeleton-text-height, 32rpx);
+ border-radius: var(--td-skeleton-text-border-radius, var(--td-radius-small, 6rpx));
+}
+.t-skeleton--type-rect {
+ width: 100%;
+ height: var(--td-skeleton-rect-height, 32rpx);
+ border-radius: var(--td-skeleton-rect-border-radius, var(--td-radius-default, 12rpx));
+}
+.t-skeleton--type-circle {
+ width: var(--td-skeleton-circle-height, 96rpx);
+ height: var(--td-skeleton-circle-height, 96rpx);
+ border-radius: var(--td-skeleton-circle-border-radius, var(--td-skeleton-circle-border-radius, var(--td-radius-circle, 50%)));
+ flex-shrink: 0;
+}
+.t-skeleton--animation-gradient {
+ position: relative;
+ overflow-x: hidden;
+}
+.t-skeleton--animation-gradient::after {
+ content: ' ';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 0;
+ background: linear-gradient(90deg, rgba(255, 255, 255, 0), var(--td-skeleton-animation-gradient, rgba(0, 0, 0, 0.04)), rgba(255, 255, 255, 0));
+ animation: t-skeleton--gradient 1.5s linear 2s infinite;
+}
+.t-skeleton--animation-flashed {
+ animation: t-skeleton--flashed 2s linear 2s infinite;
+}
+@keyframes t-skeleton--gradient {
+ 0% {
+ transform: translateX(-100%) skewX(-15deg);
+ }
+ 100% {
+ transform: translateX(100%) skewX(-15deg);
+ }
+}
+@keyframes t-skeleton--flashed {
+ 0% {
+ opacity: 1;
+ }
+ 50% {
+ background-color: var(--td-skeleton-animation-flashed, rgba(230, 230, 230, 0.3));
+ opacity: 0.3;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/type.d.ts b/miniprogram_npm/tdesign-miniprogram/skeleton/type.d.ts
new file mode 100644
index 0000000..50b0105
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/type.d.ts
@@ -0,0 +1,40 @@
+export interface TdSkeletonProps {
+ animation?: {
+ type: StringConstructor;
+ value?: 'gradient' | 'flashed' | 'none';
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delay?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-avatar', 't-class-image', 't-class-text'];
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ rowCol?: {
+ type: ArrayConstructor;
+ value?: SkeletonRowCol;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'avatar' | 'image' | 'text' | 'paragraph';
+ };
+}
+export declare type SkeletonRowCol = Array>;
+export interface SkeletonRowColObj {
+ width?: string;
+ size?: string;
+ height?: string;
+ marginRight?: string;
+ marginLeft?: string;
+ margin?: string;
+ type?: 'rect' | 'circle' | 'text';
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/skeleton/type.js b/miniprogram_npm/tdesign-miniprogram/skeleton/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/skeleton/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/slider/README.en-US.md
new file mode 100644
index 0000000..5723aee
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/README.en-US.md
@@ -0,0 +1,29 @@
+:: BASE_DOC ::
+
+## API
+### Slider Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+colors | Array | [] | Typescript:`Array` | N
+disabled | Boolean | false | \- | N
+disabled-color | Array | [] | Typescript:`Array` | N
+external-classes | Array | - | `['t-class', 't-class-bar', 't-class-bar-active', 't-class-bar-disabled', 't-class-cursor']` | N
+label | String / Boolean | false | Typescript:`string \| boolean` | N
+marks | Object / Array | {} | Typescript:`Record \| Array` | N
+max | Number | 100 | \- | N
+min | Number | 0 | \- | N
+range | Boolean | false | \- | N
+show-extreme-value | Boolean | false | \- | N
+step | Number | 1 | \- | N
+theme | String | default | `0.30.0`。options:default/capsule | N
+value | Number / Array | 0 | Typescript:`SliderValue` `type SliderValue = number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+default-value | Number / Array | undefined | uncontrolled property。Typescript:`SliderValue` `type SliderValue = number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+
+### Slider Events
+
+name | params | description
+-- | -- | --
+change | `(value: SliderValue)` | \-
+dragend | \- | \-
+dragstart | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/README.md b/miniprogram_npm/tdesign-miniprogram/slider/README.md
new file mode 100644
index 0000000..88aa79c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/README.md
@@ -0,0 +1,79 @@
+---
+title: Slider 滑动选择器
+description: 用于选择横轴上的数值、区间、档位。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-slider": "tdesign-miniprogram/slider/slider"
+}
+```
+
+## 代码演示
+
+
+
+### 组件类型
+
+单游标滑块
+
+{{ base }}
+
+双游标滑块
+
+{{ range }}
+
+带数值滑动选择器
+
+{{ label }}
+
+带刻度滑动选择器
+
+{{ step }}
+
+### 组件状态
+
+滑块禁用状态
+
+{{ disabled }}
+
+#### 特殊样式
+
+胶囊型滑块
+
+{{ capsule }}
+
+## API
+### Slider Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+colors | Array | [] | 废弃。颜色,[已选择, 未选择]。TS 类型:`Array` | N
+disabled | Boolean | false | 是否禁用组件 | N
+disabled-color | Array | [] | 废弃。禁用状态滑动条的颜色,[已选, 未选]。TS 类型:`Array` | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、滑道底部、滑道激活态、滑道禁用态、游标 等元素类名。`['t-class', 't-class-bar', 't-class-bar-active', 't-class-bar-disabled', 't-class-cursor']` | N
+label | String / Boolean | false | 滑块当前值文本。
值为 true 显示默认文案;值为 false 不显示滑块当前值文本;
值为 `${value}%` 则表示组件会根据占位符渲染文案;
值类型为函数时,参数 `value` 标识滑块值,参数 `position=start` 表示范围滑块的起始值,参数 `position=end` 表示范围滑块的终点值。TS 类型:`string \| boolean` | N
+marks | Object / Array | {} | 刻度标记,示例:`[0, 10, 40, 200]` 或者 `{ 5: '5¥', 10: '10%' }`。TS 类型:`Record \| Array` | N
+max | Number | 100 | 滑块范围最大值 | N
+min | Number | 0 | 滑块范围最小值 | N
+range | Boolean | false | 双游标滑块 | N
+show-extreme-value | Boolean | false | 是否边界值 | N
+step | Number | 1 | 步长 | N
+theme | String | default | `0.30.0`。滑块风格。可选项:default/capsule | N
+value | Number / Array | 0 | 滑块值。TS 类型:`SliderValue` `type SliderValue = number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+default-value | Number / Array | undefined | 滑块值。非受控属性。TS 类型:`SliderValue` `type SliderValue = number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+
+### Slider Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: SliderValue)` | 滑块值变化时触发
+dragend | \- | 结束拖动时触发
+dragstart | \- | 开始拖动时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/props.d.ts b/miniprogram_npm/tdesign-miniprogram/slider/props.d.ts
new file mode 100644
index 0000000..f6d03ac
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSliderProps } from './type';
+declare const props: TdSliderProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/props.js b/miniprogram_npm/tdesign-miniprogram/slider/props.js
new file mode 100644
index 0000000..9e327ba
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/props.js
@@ -0,0 +1,50 @@
+const props = {
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ label: {
+ type: null,
+ value: false,
+ },
+ marks: {
+ type: null,
+ value: {},
+ },
+ max: {
+ type: Number,
+ value: 100,
+ },
+ min: {
+ type: Number,
+ value: 0,
+ },
+ range: {
+ type: Boolean,
+ value: false,
+ },
+ showExtremeValue: {
+ type: Boolean,
+ value: false,
+ },
+ step: {
+ type: Number,
+ value: 1,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: 0,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/slider.d.ts b/miniprogram_npm/tdesign-miniprogram/slider/slider.d.ts
new file mode 100644
index 0000000..c331929
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/slider.d.ts
@@ -0,0 +1,55 @@
+///
+import { SuperComponent } from '../common/src/index';
+import type { SliderValue } from './type';
+declare type dataType = {
+ sliderStyles: string;
+ classPrefix: string;
+ initialLeft: number | null;
+ initialRight: number | null;
+ activeLeft: number;
+ activeRight: number;
+ maxRange: number;
+ lineLeft: number;
+ lineRight: number;
+ dotTopValue: number[];
+ blockSize: number;
+ isScale: boolean;
+ scaleArray: any[];
+ scaleTextArray: any[];
+ _value: SliderValue;
+ prefix: string;
+ isVisibleToScreenReader: boolean;
+};
+export default class Slider extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdSliderProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: dataType;
+ observers: {
+ value(newValue: SliderValue): void;
+ _value(newValue: SliderValue): void;
+ marks(val: any): void;
+ };
+ lifetimes: {
+ created(): void;
+ attached(): void;
+ };
+ triggerValue(value?: SliderValue): void;
+ handlePropsChange(newValue: SliderValue): void;
+ handleMask(marks: any): void;
+ setSingleBarWidth(value: number): void;
+ getInitialStyle(): Promise;
+ stepValue(value: number): number;
+ onSingleLineTap(e: WechatMiniprogram.TouchEvent): void;
+ getSingleChangeValue(e: WechatMiniprogram.TouchEvent): number;
+ convertPosToValue(posValue: number, dir: 0 | 1): number;
+ onLineTap(e: WechatMiniprogram.TouchEvent): void;
+ onTouchMoveLeft(e: WechatMiniprogram.TouchEvent): void;
+ onTouchMoveRight(e: WechatMiniprogram.TouchEvent): void;
+ setLineStyle(left: number, right: number): void;
+ onTouchEnd(): void;
+}
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/slider.js b/miniprogram_npm/tdesign-miniprogram/slider/slider.js
new file mode 100644
index 0000000..d75eee5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/slider.js
@@ -0,0 +1,301 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import { trimSingleValue, trimValue } from './tool';
+import props from './props';
+import { getRect } from '../common/utils';
+import Bus from '../common/bus';
+const { prefix } = config;
+const name = `${prefix}-slider`;
+let Slider = class Slider extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-bar`,
+ `${prefix}-class-bar-active`,
+ `${prefix}-class-bar-disabled`,
+ `${prefix}-class-cursor`,
+ ];
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ sliderStyles: '',
+ classPrefix: name,
+ initialLeft: null,
+ initialRight: null,
+ activeLeft: 0,
+ activeRight: 0,
+ maxRange: 0,
+ lineLeft: 0,
+ lineRight: 0,
+ dotTopValue: [0, 0],
+ _value: 0,
+ blockSize: 20,
+ isScale: false,
+ scaleArray: [],
+ scaleTextArray: [],
+ prefix,
+ isVisibleToScreenReader: false,
+ };
+ this.observers = {
+ value(newValue) {
+ this.handlePropsChange(newValue);
+ },
+ _value(newValue) {
+ const { min, max, range } = this.properties;
+ const { maxRange } = this.data;
+ if (range) {
+ const left = (maxRange * (newValue[0] - Number(min))) / (Number(max) - Number(min));
+ const right = (maxRange * (Number(max) - newValue[1])) / (Number(max) - Number(min));
+ this.setLineStyle(left, right);
+ }
+ else {
+ this.setSingleBarWidth(newValue);
+ }
+ this.setData({
+ isVisibleToScreenReader: true,
+ });
+ setTimeout(() => {
+ this.setData({
+ isVisibleToScreenReader: false,
+ });
+ }, 2e3);
+ },
+ marks(val) {
+ if (this.data.initialLeft != null) {
+ this.handleMask(val);
+ }
+ else {
+ this.bus.on('initial', () => this.handleMask(val));
+ }
+ },
+ };
+ this.lifetimes = {
+ created() {
+ this.bus = new Bus();
+ },
+ attached() {
+ const { value } = this.properties;
+ if (!value)
+ this.handlePropsChange(0);
+ this.getInitialStyle();
+ },
+ };
+ }
+ triggerValue(value) {
+ this._trigger('change', {
+ value: trimValue(value, this.properties),
+ });
+ }
+ handlePropsChange(newValue) {
+ const value = trimValue(newValue, this.properties);
+ const setValueAndTrigger = () => {
+ this.setData({
+ _value: value,
+ });
+ };
+ if (this.data.maxRange === 0) {
+ this.getInitialStyle().then(setValueAndTrigger);
+ return;
+ }
+ setValueAndTrigger();
+ }
+ handleMask(marks) {
+ const calcPos = (arr) => {
+ const { theme } = this.properties;
+ const { blockSize, maxRange } = this.data;
+ const margin = theme === 'capsule' ? blockSize / 2 : 0;
+ return arr.map((item) => ({
+ val: item,
+ left: Math.round((item / 100) * maxRange) + margin,
+ }));
+ };
+ if ((marks === null || marks === void 0 ? void 0 : marks.length) && Array.isArray(marks)) {
+ this.setData({
+ isScale: true,
+ scaleArray: calcPos(marks),
+ scaleTextArray: [],
+ });
+ }
+ if (Object.prototype.toString.call(marks) === '[object Object]') {
+ const scaleArray = Object.keys(marks).map((item) => Number(item));
+ const scaleTextArray = scaleArray.map((item) => marks[item]);
+ this.setData({
+ isScale: scaleArray.length > 0,
+ scaleArray: calcPos(scaleArray),
+ scaleTextArray,
+ });
+ }
+ }
+ setSingleBarWidth(value) {
+ const { max, min, theme } = this.properties;
+ const { maxRange, blockSize } = this.data;
+ const halfBlock = theme === 'capsule' ? Number(blockSize) / 2 : 0;
+ const percentage = (Number(value) - Number(min)) / (Number(max) - Number(min));
+ const width = percentage * maxRange + halfBlock;
+ this.setData({
+ lineBarWidth: `${width}px`,
+ });
+ }
+ getInitialStyle() {
+ return __awaiter(this, void 0, void 0, function* () {
+ const line = yield getRect(this, '#sliderLine');
+ const { blockSize } = this.data;
+ const { theme } = this.properties;
+ const halfBlock = Number(blockSize) / 2;
+ let maxRange = line.right - line.left;
+ let initialLeft = line.left;
+ let initialRight = line.right;
+ if (theme === 'capsule') {
+ maxRange = maxRange - Number(blockSize) - 6;
+ initialLeft -= halfBlock;
+ initialRight -= halfBlock;
+ }
+ this.setData({
+ maxRange,
+ initialLeft,
+ initialRight,
+ });
+ this.bus.emit('initial');
+ });
+ }
+ stepValue(value) {
+ const { step, min, max } = this.properties;
+ if (Number(step) < 1 || Number(step) > Number(max) - Number(min))
+ return value;
+ const closestStep = trimSingleValue(Math.round(value / Number(step)) * Number(step), Number(min), Number(max));
+ return closestStep;
+ }
+ onSingleLineTap(e) {
+ const { disabled } = this.properties;
+ if (disabled)
+ return;
+ const value = this.getSingleChangeValue(e);
+ this.triggerValue(value);
+ }
+ getSingleChangeValue(e) {
+ const { min, max } = this.properties;
+ const { initialLeft, maxRange } = this.data;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const currentLeft = pageX - initialLeft;
+ let value = 0;
+ if (currentLeft <= 0) {
+ value = Number(min);
+ }
+ else if (currentLeft >= maxRange) {
+ value = Number(max);
+ }
+ else {
+ value = Math.round((currentLeft / maxRange) * (Number(max) - Number(min)) + Number(min));
+ }
+ return this.stepValue(value);
+ }
+ convertPosToValue(posValue, dir) {
+ const { maxRange } = this.data;
+ const { max, min } = this.properties;
+ return dir === 0
+ ? (posValue / maxRange) * (Number(max) - Number(min)) + Number(min)
+ : Number(max) - (posValue / maxRange) * (Number(max) - Number(min));
+ }
+ onLineTap(e) {
+ const { disabled, theme } = this.properties;
+ const { initialLeft, initialRight, maxRange, blockSize } = this.data;
+ if (disabled)
+ return;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const halfBlock = theme === 'capsule' ? Number(blockSize) / 2 : 0;
+ const currentLeft = pageX - initialLeft;
+ if (currentLeft < 0 || currentLeft > maxRange + Number(blockSize))
+ return;
+ Promise.all([getRect(this, '#leftDot'), getRect(this, '#rightDot')]).then(([leftDot, rightDot]) => {
+ const distanceLeft = Math.abs(pageX - leftDot.left - halfBlock);
+ const distanceRight = Math.abs(rightDot.left - pageX + halfBlock);
+ const isMoveLeft = distanceLeft < distanceRight;
+ if (isMoveLeft) {
+ const left = pageX - initialLeft;
+ const leftValue = this.convertPosToValue(left, 0);
+ this.triggerValue([this.stepValue(leftValue), this.data._value[1]]);
+ }
+ else {
+ const right = -(pageX - initialRight);
+ const rightValue = this.convertPosToValue(right, 1);
+ this.triggerValue([this.data._value[0], this.stepValue(rightValue)]);
+ }
+ });
+ }
+ onTouchMoveLeft(e) {
+ const { disabled } = this.properties;
+ const { initialLeft, _value } = this.data;
+ if (disabled)
+ return;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const currentLeft = pageX - initialLeft;
+ const newData = [..._value];
+ const leftValue = this.convertPosToValue(currentLeft, 0);
+ newData[0] = this.stepValue(leftValue);
+ this.triggerValue(newData);
+ }
+ onTouchMoveRight(e) {
+ const { disabled } = this.properties;
+ const { initialRight, _value } = this.data;
+ if (disabled)
+ return;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const currentRight = -(pageX - initialRight);
+ const newData = [..._value];
+ const rightValue = this.convertPosToValue(currentRight, 1);
+ newData[1] = this.stepValue(rightValue);
+ this.triggerValue(newData);
+ }
+ setLineStyle(left, right) {
+ const { theme } = this.properties;
+ const { blockSize, maxRange } = this.data;
+ const halfBlock = theme === 'capsule' ? Number(blockSize) / 2 : 0;
+ const [a, b] = this.data._value;
+ const cut = (v) => parseInt(v, 10);
+ this.setData({
+ dotTopValue: [a, b],
+ });
+ if (left + right <= maxRange) {
+ this.setData({
+ lineLeft: cut(left + halfBlock),
+ lineRight: cut(right + halfBlock),
+ });
+ }
+ else {
+ this.setData({
+ lineLeft: cut(maxRange + halfBlock - right),
+ lineRight: cut(maxRange - left + halfBlock * 1.5),
+ });
+ }
+ }
+ onTouchEnd() { }
+};
+Slider = __decorate([
+ wxComponent()
+], Slider);
+export default Slider;
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/slider.json b/miniprogram_npm/tdesign-miniprogram/slider/slider.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/slider.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/slider.wxml b/miniprogram_npm/tdesign-miniprogram/slider/slider.wxml
new file mode 100644
index 0000000..cd73127
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/slider.wxml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+ {{ label ? t.getValue(label, min) : min}}
+
+
+
+
+
+ {{scaleTextArray[index]}}
+
+
+
+
+
+
+ {{t.getValue(label, _value) || _value}}
+
+
+
+
+
+
+
+ {{ label ? t.getValue(label, max) : max}}
+
+
+
+
+
+ {{min}}
+
+
+
+
+ {{scaleTextArray[index]}}
+
+
+
+
+
+ {{t.getValue(label, dotTopValue[0]) || dotTopValue[0]}}
+
+
+
+
+
+ {{t.getValue(label, dotTopValue[1]) || dotTopValue[1]}}
+
+
+
+
+
+
+
+ {{max}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/slider.wxs b/miniprogram_npm/tdesign-miniprogram/slider/slider.wxs
new file mode 100644
index 0000000..b4be3ff
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/slider.wxs
@@ -0,0 +1,10 @@
+var REGEXP = getRegExp('[$][{value}]{7}');
+
+function getValue(label, value) {
+ if (label && label === 'true') return value;
+ if (REGEXP.test(label)) return label.replace(REGEXP, value);
+}
+
+module.exports = {
+ getValue: getValue,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/slider.wxss b/miniprogram_npm/tdesign-miniprogram/slider/slider.wxss
new file mode 100644
index 0000000..9735fae
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/slider.wxss
@@ -0,0 +1,195 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-slider {
+ font-size: 14px;
+ display: flex;
+ align-items: center;
+}
+.t-slider--disabled .t-slider__value,
+.t-slider--disabled .t-slider__range-extreme,
+.t-slider--disabled .t-slider__dot-value,
+.t-slider--disabled .t-slider__scale-desc {
+ color: var(--td-slider-disabled-text-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-slider--top {
+ padding-top: 40rpx;
+}
+.t-slider__line {
+ position: absolute;
+ top: 0;
+ height: var(--td-slider-bar-height, 8rpx);
+ border-radius: calc(var(--td-slider-bar-height, 8rpx) / 2);
+ background-color: var(--td-slider-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-slider__line--disabled {
+ background-color: var(--td-slider-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-slider__line--capsule {
+ height: var(--td-slider-capsule-line-heihgt, 36rpx);
+}
+.t-slider__line--capsule.t-slider__line--single {
+ border-top-left-radius: calc(var(--td-slider-capsule-line-heihgt, 36rpx) / 2);
+ border-bottom-left-radius: calc(var(--td-slider-capsule-line-heihgt, 36rpx) / 2);
+}
+.t-slider__dot {
+ border-radius: 50%;
+ border: 2rpx solid var(--td-slider-dot-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ position: absolute;
+ top: 50%;
+ right: 0;
+ transform: translate3d(50%, -50%, 0);
+ z-index: 2;
+ background-color: var(--td-slider-dot-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ width: var(--td-slider-dot-size, 40rpx);
+ height: var(--td-slider-dot-size, 40rpx);
+ box-shadow: var(--td-shadow-1, 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.12));
+ box-sizing: border-box;
+}
+.t-slider__dot--left {
+ left: 0;
+ transform: translate3d(-50%, -50%, 0);
+}
+.t-slider__dot-value {
+ position: relative;
+ left: 50%;
+ transform: translateX(-50%);
+ top: -52rpx;
+ text-align: center;
+ width: 96rpx;
+ height: 44rpx;
+ line-height: 44rpx;
+}
+.t-slider__value,
+.t-slider__range-extreme,
+.t-slider__dot-value {
+ color: rgba(0, 0, 0, 0.9);
+}
+.t-slider__value--sr-only,
+.t-slider__range-extreme--sr-only,
+.t-slider__dot-value--sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+}
+.t-slider__dot-slider {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.t-slider__value--min {
+ margin-left: 32rpx;
+}
+.t-slider__value--max {
+ margin-right: 32rpx;
+}
+.t-slider__value--right {
+ flex-basis: 80rpx;
+}
+.t-slider__value--right__value--text {
+ margin-right: 32rpx;
+ text-align: right;
+ display: block;
+}
+.t-slider__bar {
+ margin: 16rpx 32rpx;
+ flex: 10;
+ background-clip: content-box;
+ height: var(--td-slider-bar-height, 8rpx);
+ border-radius: calc(var(--td-slider-bar-height, 8rpx) / 2);
+ position: relative;
+ background-color: var(--td-slider-default-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-slider__bar--capsule {
+ height: var(--td-slider-capsule-bar-heihgt, 48rpx);
+ border-radius: calc(var(--td-slider-capsule-bar-heihgt, 48rpx) / 2);
+ background-color: var(--td-slider-capsule-bar-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border: 6rpx solid var(--td-slider-capsule-bar-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ box-sizing: border-box;
+}
+.t-slider__bar--marks {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-slider__bar--disabled {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-slider__range-extreme--min {
+ margin-left: 32rpx;
+ text-align: left;
+}
+.t-slider__range-extreme--max {
+ margin-right: 32rpx;
+ text-align: right;
+}
+.t-slider__scale-item {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+ width: var(--td-slider-bar-height, 8rpx);
+ height: 16rpx;
+ width: 16rpx;
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ margin-top: -8rpx;
+ z-index: 1;
+}
+.t-slider__scale-item--active {
+ background-color: var(--td-slider-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-slider__scale-item--disabled {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-slider__scale-item--active.t-slider__scale-item--disabled {
+ background-color: var(--td-slider-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-slider__scale-item--capsule {
+ height: var(--td-slider-capsule-line-heihgt, 36rpx);
+ width: 4rpx;
+ border-radius: 0;
+ background-color: var(--td-slider-capsule-bar-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ margin-top: calc(-0.5 * var(--td-slider-capsule-line-heihgt, 36rpx));
+}
+.t-slider__scale-item--hidden {
+ background-color: transparent;
+}
+.t-slider__scale-desc {
+ position: absolute;
+ left: 50%;
+ color: rgba(0, 0, 0, 0.9);
+ transform: translateX(-50%);
+ bottom: 32rpx;
+}
+.t-slider__scale-desc--capsule {
+ bottom: 46rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/tool.d.ts b/miniprogram_npm/tdesign-miniprogram/slider/tool.d.ts
new file mode 100644
index 0000000..b9383e6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/tool.d.ts
@@ -0,0 +1,2 @@
+export declare const trimSingleValue: (value: any, min: number, max: number) => number;
+export declare const trimValue: (value: number | number[], props: any) => number | number[];
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/tool.js b/miniprogram_npm/tdesign-miniprogram/slider/tool.js
new file mode 100644
index 0000000..84ca6fe
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/tool.js
@@ -0,0 +1,26 @@
+export const trimSingleValue = (value, min, max) => {
+ if (typeof value !== 'number') {
+ return min;
+ }
+ if (value < min) {
+ return min;
+ }
+ if (value > max) {
+ return max;
+ }
+ return value;
+};
+export const trimValue = (value, props) => {
+ const { min, max, range } = props;
+ if (range && Array.isArray(value)) {
+ value[0] = trimSingleValue(value[0], min, max);
+ value[1] = trimSingleValue(value[1], min, max);
+ return value[0] <= value[1] ? value : [value[1], value[0]];
+ }
+ if (range) {
+ return [min, max];
+ }
+ if (!range) {
+ return trimSingleValue(value, min, max);
+ }
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/type.d.ts b/miniprogram_npm/tdesign-miniprogram/slider/type.d.ts
new file mode 100644
index 0000000..2d7ef24
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/type.d.ts
@@ -0,0 +1,55 @@
+export interface TdSliderProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-bar', 't-class-bar-active', 't-class-bar-disabled', 't-class-cursor'];
+ };
+ label?: {
+ type: null;
+ value?: string | boolean;
+ };
+ marks?: {
+ type: null;
+ value?: Record | Array;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ min?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ range?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showExtremeValue?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ step?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'capsule';
+ };
+ value?: {
+ type: null;
+ value?: SliderValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: SliderValue;
+ };
+}
+export declare type SliderValue = number | Array;
diff --git a/miniprogram_npm/tdesign-miniprogram/slider/type.js b/miniprogram_npm/tdesign-miniprogram/slider/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/slider/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/props.d.ts b/miniprogram_npm/tdesign-miniprogram/step-item/props.d.ts
new file mode 100644
index 0000000..d941a41
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStepItemProps } from './type';
+declare const props: TdStepItemProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/props.js b/miniprogram_npm/tdesign-miniprogram/step-item/props.js
new file mode 100644
index 0000000..3308e91
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/props.js
@@ -0,0 +1,25 @@
+const props = {
+ content: {
+ type: String,
+ value: '',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: String,
+ },
+ status: {
+ type: String,
+ value: 'default',
+ },
+ subStepItems: {
+ type: Array,
+ value: [],
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/step-item.d.ts b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.d.ts
new file mode 100644
index 0000000..b1b81b7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.d.ts
@@ -0,0 +1,22 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class StepItem extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ externalClasses: string[];
+ properties: import("./type").TdStepItemProps;
+ data: {
+ classPrefix: string;
+ prefix: string;
+ index: number;
+ isDot: boolean;
+ curStatus: string;
+ layout: string;
+ isLastChild: boolean;
+ };
+ methods: {
+ updateStatus(current: any, currentStatus: any, index: any, theme: any, layout: any, steps: any): void;
+ onTap(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/step-item.js b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.js
new file mode 100644
index 0000000..54b0744
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.js
@@ -0,0 +1,69 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-steps-item`;
+let StepItem = class StepItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../steps/steps': {
+ type: 'parent',
+ },
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-title`,
+ `${prefix}-class-description`,
+ `${prefix}-class-extra`,
+ ];
+ this.properties = props;
+ this.data = {
+ classPrefix: name,
+ prefix,
+ index: 0,
+ isDot: false,
+ curStatus: '',
+ layout: 'vertical',
+ isLastChild: false,
+ };
+ this.methods = {
+ updateStatus(current, currentStatus, index, theme, layout, steps) {
+ let curStatus = this.data.status;
+ if (curStatus === 'default') {
+ if (index < Number(current)) {
+ curStatus = 'finish';
+ }
+ else if (index === Number(current)) {
+ curStatus = currentStatus;
+ }
+ }
+ this.setData({
+ curStatus,
+ index,
+ isDot: theme === 'dot',
+ layout,
+ theme,
+ isLastChild: steps.length - 1 === index,
+ });
+ },
+ onTap() {
+ this.$parent.handleClick(this.data.index);
+ },
+ };
+ }
+};
+StepItem = __decorate([
+ wxComponent()
+], StepItem);
+export default StepItem;
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/step-item.json b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxml b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxml
new file mode 100644
index 0000000..4472edc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{index + 1}}
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxs b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxs
new file mode 100644
index 0000000..491902c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxs
@@ -0,0 +1,7 @@
+function getAriaLabel(index, title, content) {
+ return '第' + (index + 1) + '步,' + title + ',' + content;
+}
+
+module.exports = {
+ getAriaLabel: getAriaLabel,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxss b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxss
new file mode 100644
index 0000000..eec5828
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/step-item.wxss
@@ -0,0 +1,211 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-steps-item {
+ flex: 1;
+ vertical-align: top;
+ position: relative;
+ display: flex;
+}
+.t-steps-item__circle--default {
+ color: var(--td-step-item-default-circle-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ background-color: var(--td-step-item-default-circle-bg, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-steps-item__title--default {
+ color: var(--td-step-item-default-title-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-steps-item__icon--default {
+ color: var(--td-step-item-default-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-steps-item__dot--default {
+ border-color: var(--td-step-item-default-dot-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-steps-item__circle--process {
+ color: var(--td-step-item-process-circle-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-step-item-process-circle-bg, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__title--process {
+ color: var(--td-step-item-process-title-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__icon--process {
+ color: var(--td-step-item-process-icon-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__dot--process {
+ border-color: var(--td-step-item-process-dot-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__circle--finish {
+ color: var(--td-step-item-finish-circle-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-step-item-finish-circle-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-steps-item__title--finish {
+ color: var(--td-step-item-finish-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-steps-item__icon--finish {
+ color: var(--td-step-item-finish-icon-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__dot--finish {
+ border-color: var(--td-step-item-finish-dot-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__circle--error {
+ color: var(--td-step-item-error-circle-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-step-item-error-circle-bg, var(--td-error-color-1, #fff0ed));
+}
+.t-steps-item__title--error {
+ color: var(--td-step-item-error-title-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item__icon--error {
+ color: var(--td-step-item-error-icon-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item__dot--error {
+ border-color: var(--td-step-item-error-dot-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item--horizontal {
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+.t-steps-item__anchor {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-steps-item__anchor--vertical {
+ width: var(--td-step-item-circle-size, 44rpx);
+ height: var(--td-step-item-circle-size, 44rpx);
+}
+.t-steps-item__circle {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: var(--td-step-item-circle-size, 44rpx);
+ height: var(--td-step-item-circle-size, 44rpx);
+ text-align: center;
+ border-radius: 50%;
+ font-size: var(--td-step-item-circle-font-size, 28rpx);
+}
+.t-steps-item__icon {
+ z-index: 1;
+ vertical-align: top;
+ font-size: var(--td-font-size-base, 28rpx);
+ position: relative;
+}
+.t-steps-item__icon--finsh,
+.t-steps-item__icon--process {
+ color: var(--td-brand-color, var(--td-primary-color-7, #0052d9));
+}
+.t-steps-item__dot {
+ width: var(--td-step-item-dot-size, 16rpx);
+ height: var(--td-step-item-dot-size, 16rpx);
+ border-radius: 50%;
+ border-width: 1px;
+ border-style: solid;
+ box-sizing: border-box;
+}
+.t-steps-item__dot--finish {
+ background-color: var(--td-step-item-process-dot-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__dot--error {
+ background-color: var(--td-step-item-error-dot-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item__content {
+ text-align: center;
+}
+.t-steps-item__content--horizontal {
+ max-width: 80px;
+ margin-top: 16rpx;
+}
+.t-steps-item__content--vertical {
+ margin-left: 16rpx;
+ flex: 1;
+ padding-bottom: 32rpx;
+}
+.t-steps-item__content--vertical.t-steps-item__content--last {
+ padding-bottom: 0;
+}
+.t-steps-item__title {
+ position: relative;
+ line-height: var(--td-step-item-circle-size, 44rpx);
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-steps-item__title--process {
+ font-weight: 600;
+}
+.t-steps-item__title--vertical {
+ text-align: left;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 8rpx;
+}
+.t-steps-item__description {
+ color: var(--td-step-item-descrition-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ line-height: 40rpx;
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-steps-item__description--vertical {
+ text-align: left;
+}
+.t-steps-item__extra:not(:empty) {
+ margin-top: 16rpx;
+}
+.t-steps-item__line {
+ background-color: var(--td-step-item-line-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ content: '';
+ display: block;
+ position: absolute;
+}
+.t-steps-item__line--horizontal {
+ height: 1px;
+ transform: translateY(-50%);
+ width: calc(100% - 32rpx - var(--td-step-item-circle-size, 44rpx));
+ top: calc(var(--td-step-item-circle-size, 44rpx) / 2 + 1px);
+ left: calc(50% + var(--td-step-item-circle-size, 44rpx) / 2 + 16rpx);
+}
+.t-steps-item__line--horizontal.t-steps-item__line--dot {
+ top: calc(var(--td-step-item-dot-size, 16rpx) / 2);
+}
+.t-steps-item__line--finish {
+ background-color: var(--td-step-item-finish-line-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__line--vertical {
+ height: calc(100% - 32rpx - var(--td-step-item-circle-size, 44rpx));
+ width: 1px;
+ transform: translateX(-50%);
+ left: calc(var(--td-step-item-circle-size, 44rpx) / 2);
+ top: calc(var(--td-step-item-circle-size, 44rpx) + 16rpx);
+}
+.t-steps-item__line--vertical.t-steps-item__line--dot {
+ top: var(--td-step-item-circle-size, 44rpx);
+ height: calc(100% - var(--td-step-item-circle-size, 44rpx));
+}
+:host {
+ flex: 1;
+ vertical-align: top;
+ position: relative;
+ align-self: flex-start;
+ width: inherit;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/type.d.ts b/miniprogram_npm/tdesign-miniprogram/step-item/type.d.ts
new file mode 100644
index 0000000..c9029fb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/type.d.ts
@@ -0,0 +1,35 @@
+export interface TdStepItemProps {
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-title', 't-class-description', 't-class-extra'];
+ };
+ icon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ status?: {
+ type: StringConstructor;
+ value?: StepStatus;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ subStepItems?: {
+ type: ArrayConstructor;
+ value?: SubStepItem[];
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type StepStatus = 'default' | 'process' | 'finish' | 'error';
+export interface SubStepItem {
+ status: StepStatus;
+ title: string;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/step-item/type.js b/miniprogram_npm/tdesign-miniprogram/step-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/step-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/stepper/README.en-US.md
new file mode 100644
index 0000000..1529485
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+
+### Stepper Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disable-input | Boolean | false | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-input', 't-class-add', 't-class-minus']` | N
+input-width | Number | - | \- | N
+max | Number | 100 | \- | N
+min | Number | 0 | \- | N
+step | Number | 1 | \- | N
+theme | String | normal | stylish。options:normal/grey | N
+value | String / Number | 0 | \- | N
+default-value | String / Number | undefined | uncontrolled property | N
+
+### Stepper Events
+
+name | params | description
+-- | -- | --
+blur | `({ type: string \| number })` | \-
+change | `({ value: string \| number })` | \-
+overlimit | `({type: 'minus' \| 'plus'})` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/README.md b/miniprogram_npm/tdesign-miniprogram/stepper/README.md
new file mode 100644
index 0000000..903d9c0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/README.md
@@ -0,0 +1,71 @@
+---
+title: Stepper 步进器
+description: 用于数量的增减。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-stepper": "tdesign-miniprogram/stepper/stepper"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础步进器
+
+{{ base }}
+
+### 组件状态
+
+最大最小状态
+
+{{ min-max }}
+
+禁用状态
+
+{{ status }}
+
+### 组件样式
+
+步进器样式
+
+{{ theme }}
+
+步进器尺寸
+
+{{ size }}
+
+
+## API
+### Stepper Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disable-input | Boolean | false | 禁用输入框 | N
+disabled | Boolean | false | 禁用全部操作 | N
+external-classes | Array | - | 组件类名,分别用于表示组件外层元素、输入框、右侧递增号、左侧递减号等元素类名。`['t-class', 't-class-input', 't-class-add', 't-class-minus']` | N
+input-width | Number | - | 输入框宽度,默认单位 `px` | N
+max | Number | 100 | 最大值 | N
+min | Number | 0 | 最小值 | N
+step | Number | 1 | 步长 | N
+size | String | medium | 组件尺寸。可选项:small/medium/large。TS 类型:`SizeEnum` | N
+theme | String | normal | 组件风格。可选项:normal/filled/outline | N
+value | String / Number | 0 | 值 | N
+default-value | String / Number | undefined | 值。非受控属性 | N
+
+### Stepper Events
+
+名称 | 参数 | 描述
+-- | -- | --
+blur | `({ type: string \| number })` | 输入框失去焦点时触发
+change | `({ value: string \| number })` | 数值发生变更时触发
+overlimit | `({type: 'minus' \| 'plus'})` | 数值超出限制时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/props.d.ts b/miniprogram_npm/tdesign-miniprogram/stepper/props.d.ts
new file mode 100644
index 0000000..7f9e104
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStepperProps } from './type';
+declare const props: TdStepperProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/props.js b/miniprogram_npm/tdesign-miniprogram/stepper/props.js
new file mode 100644
index 0000000..9a970fe
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/props.js
@@ -0,0 +1,47 @@
+const props = {
+ disableInput: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ inputWidth: {
+ type: Number,
+ },
+ max: {
+ type: Number,
+ value: 100,
+ },
+ min: {
+ type: Number,
+ value: 0,
+ },
+ step: {
+ type: Number,
+ value: 1,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ theme: {
+ type: String,
+ value: 'normal',
+ },
+ value: {
+ type: String,
+ optionalTypes: [Number],
+ value: null,
+ },
+ defaultValue: {
+ type: String,
+ optionalTypes: [Number],
+ value: 0,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/stepper.d.ts b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.d.ts
new file mode 100644
index 0000000..65aad00
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.d.ts
@@ -0,0 +1,81 @@
+import { SuperComponent } from '../common/src/index';
+export default class Stepper extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ addGlobalClass: boolean;
+ };
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disableInput?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-input", "t-class-add", "t-class-minus"];
+ };
+ inputWidth?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ min?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ step?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: "outline" | "normal" | "filled";
+ };
+ value?: {
+ type: StringConstructor;
+ optionalTypes: NumberConstructor[];
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ optionalTypes: NumberConstructor[];
+ value?: string | number;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(v: any): void;
+ };
+ data: {
+ currentValue: number;
+ classPrefix: string;
+ prefix: string;
+ };
+ attached(): void;
+ isDisabled(type: any): boolean;
+ format(value: any): number;
+ setValue(value: any): void;
+ minusValue(): boolean;
+ plusValue(): boolean;
+ changeValue(e: any): string | 0;
+ focusHandle(e: any): void;
+ inputHandle(e: any): void;
+ blurHandle(e: any): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/stepper.js b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.js
new file mode 100644
index 0000000..1c3c167
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-stepper`;
+let Stepper = class Stepper extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-input`, `${prefix}-class-minus`, `${prefix}-class-plus`];
+ this.options = {
+ addGlobalClass: true,
+ };
+ this.properties = Object.assign({}, props);
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(v) {
+ this.setData({
+ currentValue: Number(v),
+ });
+ },
+ };
+ this.data = {
+ currentValue: 0,
+ classPrefix: name,
+ prefix,
+ };
+ }
+ attached() {
+ const { value, min } = this.properties;
+ this.setData({
+ currentValue: value ? Number(value) : min,
+ });
+ }
+ isDisabled(type) {
+ const { min, max, disabled } = this.properties;
+ const { currentValue } = this.data;
+ if (disabled) {
+ return true;
+ }
+ if (type === 'minus' && currentValue <= min) {
+ return true;
+ }
+ if (type === 'plus' && currentValue >= max) {
+ return true;
+ }
+ return false;
+ }
+ format(value) {
+ const { min, max } = this.properties;
+ return Math.max(Math.min(max, value, Number.MAX_SAFE_INTEGER), min, Number.MIN_SAFE_INTEGER);
+ }
+ setValue(value) {
+ this._trigger('change', { value });
+ }
+ minusValue() {
+ if (this.isDisabled('minus')) {
+ this.triggerEvent('overlimit', { type: 'minus' });
+ return false;
+ }
+ const { currentValue, step } = this.data;
+ this.setValue(this.format(currentValue - step));
+ }
+ plusValue() {
+ if (this.isDisabled('plus')) {
+ this.triggerEvent('overlimit', { type: 'plus' });
+ return false;
+ }
+ const { currentValue, step } = this.data;
+ this.setValue(this.format(currentValue + step));
+ }
+ changeValue(e) {
+ const value = String(e.detail.value)
+ .split('.')[0]
+ .replace(/[^-0-9]/g, '') || 0;
+ this.setValue(this.format(Number(value)));
+ return value;
+ }
+ focusHandle(e) {
+ const value = this.changeValue(e);
+ this.triggerEvent('focus', { value });
+ }
+ inputHandle(e) {
+ const value = this.changeValue(e);
+ this.triggerEvent('input', { value });
+ }
+ blurHandle(e) {
+ const value = this.changeValue(e);
+ this.triggerEvent('blur', { value });
+ }
+};
+Stepper = __decorate([
+ wxComponent()
+], Stepper);
+export default Stepper;
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/stepper.json b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.json
new file mode 100644
index 0000000..dfd59ed
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/stepper.wxml b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.wxml
new file mode 100644
index 0000000..2e5dbfb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.wxml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/stepper.wxss b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.wxss
new file mode 100644
index 0000000..f9f70a5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/stepper.wxss
@@ -0,0 +1,128 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-stepper {
+ display: flex;
+ align-items: center;
+ color: var(--td-stepper-input-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-stepper__input {
+ margin: 0 8rpx;
+ text-align: center;
+ vertical-align: top;
+ height: inherit;
+ min-height: inherit;
+}
+.t-stepper__minus,
+.t-stepper__plus {
+ padding: 8rpx;
+ box-sizing: border-box;
+}
+.t-stepper__input,
+.t-stepper__minus-icon,
+.t-stepper__plus-icon {
+ color: inherit;
+}
+.t-stepper__input--normal,
+.t-stepper__input--filled,
+.t-stepper__input--outline {
+ height: inherit;
+ box-sizing: border-box;
+}
+.t-stepper--small {
+ height: 40rpx;
+ font-size: 20rpx;
+}
+.t-stepper--medium {
+ height: 48rpx;
+ font-size: 24rpx;
+}
+.t-stepper--large {
+ height: 56rpx;
+ font-size: 32rpx;
+}
+.t-stepper__input--small {
+ width: 68rpx;
+}
+.t-stepper__input--medium {
+ height: 48rpx;
+ width: 76rpx;
+}
+.t-stepper__input--large {
+ width: 90rpx;
+}
+.t-stepper__icon--small {
+ width: 40rpx;
+ height: 40rpx;
+ font-size: 24rpx;
+}
+.t-stepper__icon--medium {
+ width: 48rpx;
+ height: 48rpx;
+ font-size: 32rpx;
+}
+.t-stepper__icon--large {
+ width: 56rpx;
+ height: 56rpx;
+ font-size: 40rpx;
+}
+.t-stepper__minus--outline,
+.t-stepper__plus--outline {
+ border: 2rpx solid var(--td-stepper-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-stepper__input--outline {
+ border: none;
+ border-top: 2rpx solid var(--td-stepper-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ border-bottom: 2rpx solid var(--td-stepper-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-stepper__minus--outline,
+.t-stepper__minus--filled {
+ border-radius: var(--td-stepper-border-radius, var(--td-radius-small, 6rpx)) 0 0 var(--td-stepper-border-radius, var(--td-radius-small, 6rpx));
+}
+.t-stepper__plus--outline,
+.t-stepper__plus--filled {
+ border-radius: 0 var(--td-stepper-border-radius, var(--td-radius-small, 6rpx)) var(--td-stepper-border-radius, var(--td-radius-small, 6rpx)) 0;
+}
+.t-stepper__minus--filled,
+.t-stepper__plus--filled {
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+}
+.t-stepper__input--filled {
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+ margin: 0 8rpx;
+}
+.t-stepper__input--filled .t-stepper__input {
+ margin: 0;
+}
+.t-stepper--normal-disabled {
+ color: var(--td-stepper-input-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-stepper--filled-disabled,
+.t-stepper--outline-disabled {
+ color: var(--td-stepper-input-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-stepper-input-disabled-bg, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/type.d.ts b/miniprogram_npm/tdesign-miniprogram/stepper/type.d.ts
new file mode 100644
index 0000000..0dff895
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/type.d.ts
@@ -0,0 +1,52 @@
+export interface TdStepperProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disableInput?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-input', 't-class-add', 't-class-minus'];
+ };
+ inputWidth?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ min?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ step?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'normal' | 'filled' | 'outline';
+ };
+ value?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/stepper/type.js b/miniprogram_npm/tdesign-miniprogram/stepper/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/stepper/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/steps/README.en-US.md
new file mode 100644
index 0000000..197f123
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/README.en-US.md
@@ -0,0 +1,34 @@
+:: BASE_DOC ::
+
+## API
+### Steps Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+current | String / Number | - | \- | N
+default-current | String / Number | undefined | uncontrolled property | N
+current-status | String | process | options:default/process/finish/error | N
+external-classes | Array | - | `['t-class']` | N
+layout | String | horizontal | options:horizontal/vertical | N
+readonly | Boolean | false | \- | N
+separator | String | line | options:line/dashed/arrow | N
+style | String | - | \- | N
+theme | String | default | options:default/dot | N
+
+### Steps Events
+
+name | params | description
+-- | -- | --
+change | `({current: string \| number, previous: string \| number})` | \-
+
+### StepItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Slot | '' | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-title', 't-class-description', 't-class-extra']` | N
+icon | String / Slot | - | \- | N
+status | String | default | options:default/process/finish/error。Typescript:`StepStatus` `type StepStatus = 'default' \| 'process' \| 'finish' \| 'error'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/step-item/type.ts) | N
+style | String | - | \- | N
+sub-step-items | Array | [] | Typescript:`SubStepItem[]` `interface SubStepItem { status: StepStatus, title: string }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/step-item/type.ts) | N
+title | String / Slot | '' | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/README.md b/miniprogram_npm/tdesign-miniprogram/steps/README.md
new file mode 100644
index 0000000..9f852b8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/README.md
@@ -0,0 +1,88 @@
+---
+title: Steps 步骤条
+description: 用于任务步骤展示或任务进度展示。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-steps": "tdesign-miniprogram/steps/steps",
+ "t-step-item": "tdesign-miniprogram/step-item/step-item",
+}
+```
+
+## 代码演示
+
+步骤条,方向可以横向和纵向,可以自定义步骤条显示内容以及是否可写
+
+### 组件类型
+
+#### 水平步骤条
+
+支持三种类型:序号、图标、简略
+
+{{ horizontal }}
+
+#### 垂直步骤条
+
+支持三种类型:序号、图标、简略
+
+{{ vertical }}
+
+### 组件状态
+
+#### 选项卡状态
+
+共支持 4 种状态:未完成(default)、已完成(finish)、进行中(process)、错误(error)
+
+{{ status }}
+
+### 特殊类型
+
+通过已有特性,改造出两种常见类型:
+
+- 垂直自定义(在 Cascader 中使用)
+- 纯展示步骤条
+
+可以参考以下代码实现
+
+{{ special }}
+
+## API
+### Steps Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+current | String / Number | - | 当前步骤,即整个步骤条进度。默认根据步骤下标判断步骤的完成状态,当前步骤为进行中,当前步骤之前的步骤为已完成,当前步骤之后的步骤为未开始。如果每个步骤没有设置 value,current 值为步骤长度则表示所有步骤已完成。如果每个步骤设置了自定义 value,则 current = 'FINISH' 表示所有状态完成 | N
+default-current | String / Number | undefined | 当前步骤,即整个步骤条进度。默认根据步骤下标判断步骤的完成状态,当前步骤为进行中,当前步骤之前的步骤为已完成,当前步骤之后的步骤为未开始。如果每个步骤没有设置 value,current 值为步骤长度则表示所有步骤已完成。如果每个步骤设置了自定义 value,则 current = 'FINISH' 表示所有状态完成。非受控属性 | N
+current-status | String | process | 用于控制 current 指向的步骤条的状态。可选项:default/process/finish/error | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素元素类名。`['t-class']` | N
+layout | String | horizontal | 步骤条方向,有两种:横向和纵向。可选项:horizontal/vertical | N
+readonly | Boolean | false | 只读状态 | N
+separator | String | line | 步骤条分割符。可选项:line/dashed/arrow | N
+style | String | - | 自定义组件样式 | N
+theme | String | default | 步骤条风格。可选项:default/dot | N
+
+### Steps Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `({current: string \| number, previous: string \| number})` | 当前步骤发生变化时触发
+
+### StepItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Slot | '' | 步骤描述 | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素元素类名。`['t-class', 't-class-content', 't-class-title', 't-class-description', 't-class-extra']` | N
+icon | String / Slot | - | 图标。传入 slot 代表使用插槽,其他字符串代表使用内置图标 | N
+status | String | default | 当前步骤的状态:默认状态(未开始)、进行中状态、完成状态、错误状态。可选项:default/process/finish/error。TS 类型:`StepStatus` `type StepStatus = 'default' \| 'process' \| 'finish' \| 'error'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/step-item/type.ts) | N
+style | String | - | 自定义组件样式 | N
+sub-step-items | Array | [] | 废弃。子步骤条,仅支持 layout = 'vertical' 时 | N
+title | String / Slot | '' | 标题 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/props.d.ts b/miniprogram_npm/tdesign-miniprogram/steps/props.d.ts
new file mode 100644
index 0000000..fef4049
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStepsProps } from './type';
+declare const props: TdStepsProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/props.js b/miniprogram_npm/tdesign-miniprogram/steps/props.js
new file mode 100644
index 0000000..5b2a542
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/props.js
@@ -0,0 +1,33 @@
+const props = {
+ current: {
+ type: null,
+ value: null,
+ },
+ defaultCurrent: {
+ type: null,
+ },
+ currentStatus: {
+ type: String,
+ value: 'process',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ },
+ separator: {
+ type: String,
+ value: 'line',
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/steps.d.ts b/miniprogram_npm/tdesign-miniprogram/steps/steps.d.ts
new file mode 100644
index 0000000..140370f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/steps.d.ts
@@ -0,0 +1,22 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Steps extends SuperComponent {
+ relations: RelationsOptions;
+ externalClasses: string[];
+ properties: import("./type").TdStepsProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ current(): void;
+ };
+ methods: {
+ updateChildren(): void;
+ updateLastChid(): void;
+ handleClick(index: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/steps.js b/miniprogram_npm/tdesign-miniprogram/steps/steps.js
new file mode 100644
index 0000000..5584daf
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/steps.js
@@ -0,0 +1,74 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-steps`;
+let Steps = class Steps extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.relations = {
+ '../step-item/step-item': {
+ type: 'child',
+ linked(child) {
+ this.updateChildren();
+ const { readonly } = this.data;
+ child.setData({
+ readonly,
+ });
+ },
+ unlinked() {
+ this.updateLastChid();
+ },
+ },
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'current',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ current() {
+ this.updateChildren();
+ },
+ };
+ this.methods = {
+ updateChildren() {
+ const { current, currentStatus, readonly, theme, layout } = this.data;
+ const items = this.$children;
+ items.forEach((item, index) => {
+ item.updateStatus(current, currentStatus, index, theme, layout, items, readonly);
+ });
+ },
+ updateLastChid() {
+ const items = this.$children;
+ items.forEach((child, index) => child.setData({ isLastChild: index === items.length - 1 }));
+ },
+ handleClick(index) {
+ if (!this.data.readonly) {
+ const preIndex = this.data.current;
+ this._trigger('change', {
+ previous: preIndex,
+ current: index,
+ });
+ }
+ },
+ };
+ }
+};
+Steps = __decorate([
+ wxComponent()
+], Steps);
+export default Steps;
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/steps.json b/miniprogram_npm/tdesign-miniprogram/steps/steps.json
new file mode 100644
index 0000000..94bcc8b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/steps.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-step": "../step-item/step-item"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/steps.wxml b/miniprogram_npm/tdesign-miniprogram/steps/steps.wxml
new file mode 100644
index 0000000..b2c24b1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/steps.wxml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/steps.wxss b/miniprogram_npm/tdesign-miniprogram/steps/steps.wxss
new file mode 100644
index 0000000..d0a636c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/steps.wxss
@@ -0,0 +1,40 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+:host {
+ display: flex;
+}
+.t-step--vertical {
+ padding-right: 32rpx;
+}
+.t-steps {
+ display: flex;
+ width: 100%;
+}
+.t-steps--vertical {
+ flex-direction: column;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/type.d.ts b/miniprogram_npm/tdesign-miniprogram/steps/type.d.ts
new file mode 100644
index 0000000..df12f6f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdStepsProps {
+ current?: {
+ type: null;
+ value?: string | number;
+ };
+ defaultCurrent?: {
+ type: null;
+ value?: string | number;
+ };
+ currentStatus?: {
+ type: StringConstructor;
+ value?: 'default' | 'process' | 'finish' | 'error';
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ separator?: {
+ type: StringConstructor;
+ value?: 'line' | 'dashed' | 'arrow';
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'dot';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/steps/type.js b/miniprogram_npm/tdesign-miniprogram/steps/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/steps/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/sticky/README.en-US.md
new file mode 100644
index 0000000..4b36d15
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/README.en-US.md
@@ -0,0 +1,19 @@
+:: BASE_DOC ::
+
+## API
+
+### Sticky Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+container | Function | - | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class']` | N
+offset-top | String / Number | 0 | \- | N
+z-index | Number | 99 | \- | N
+
+### Sticky Events
+
+name | params | description
+-- | -- | --
+scroll | `(detail: { scrollTop: number, isFixed: boolean })` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/README.md b/miniprogram_npm/tdesign-miniprogram/sticky/README.md
new file mode 100644
index 0000000..aff6695
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/README.md
@@ -0,0 +1,55 @@
+---
+title: Sticky 吸顶
+description: 用于常驻页面顶部的信息、操作展示。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-sticky": "tdesign-miniprogram/sticky/sticky"
+}
+```
+
+## 代码演示
+
+将内容包裹在 `Sticky` 组件内
+
+
+
+### 基础吸顶
+
+{{ base }}
+
+
+### 吸顶距离
+
+{{ offset }}
+
+### 指定容器
+
+{{ container }}
+
+
+
+## API
+### Sticky Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+container | Function | - | 函数返回容器对应的 NodesRef 节点,将对应节点指定为组件的外部容器,滚动时组件会始终保持在容器范围内,当组件即将超出容器底部时,会返回原位置。 | N
+disabled | Boolean | false | 是否禁用组件 | N
+external-classes | Array | - | 根结点外部样式。`['t-class']` | N
+offset-top | String / Number | 0 | 吸顶时与顶部的距离,单位`px` | N
+z-index | Number | 99 | 吸顶时的 z-index | N
+
+### Sticky Events
+
+名称 | 参数 | 描述
+-- | -- | --
+scroll | `(detail: { scrollTop: number, isFixed: boolean })` | 滚动时触发,scrollTop: 距离顶部位置,isFixed: 是否吸顶
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/index.d.ts b/miniprogram_npm/tdesign-miniprogram/sticky/index.d.ts
new file mode 100644
index 0000000..a6df66d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/index.d.ts
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './sticky';
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/index.js b/miniprogram_npm/tdesign-miniprogram/sticky/index.js
new file mode 100644
index 0000000..a6df66d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/index.js
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './sticky';
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/props.d.ts b/miniprogram_npm/tdesign-miniprogram/sticky/props.d.ts
new file mode 100644
index 0000000..175af72
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStickyProps } from './type';
+declare const props: TdStickyProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/props.js b/miniprogram_npm/tdesign-miniprogram/sticky/props.js
new file mode 100644
index 0000000..7e5cb71
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/props.js
@@ -0,0 +1,21 @@
+const props = {
+ container: {
+ type: null,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ offsetTop: {
+ type: Number,
+ value: 0,
+ },
+ zIndex: {
+ type: Number,
+ value: 99,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/sticky.d.ts b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.d.ts
new file mode 100644
index 0000000..89ba546
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.d.ts
@@ -0,0 +1,30 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdStickyProps } from './type';
+export interface StickyProps extends TdStickyProps {
+}
+export default class Sticky extends SuperComponent {
+ externalClasses: string[];
+ properties: TdStickyProps;
+ behaviors: string[];
+ observers: {
+ 'offsetTop, disabled, container'(): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ containerStyle: string;
+ contentStyle: string;
+ };
+ ready(): void;
+ methods: {
+ onScroll(event?: {
+ scrollTop: number;
+ }): void;
+ setDataAfterDiff(data: {
+ isFixed: boolean;
+ height?: number;
+ transform?: number;
+ }): void;
+ getContainerRect(): Promise;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/sticky.js b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.js
new file mode 100644
index 0000000..9272792
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.js
@@ -0,0 +1,120 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import pageScrollMixin from '../mixins/page-scroll';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-sticky`;
+const ContainerClass = `.${name}`;
+let Sticky = class Sticky extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.behaviors = [
+ pageScrollMixin(function (event) {
+ this.onScroll(event);
+ }),
+ ];
+ this.observers = {
+ 'offsetTop, disabled, container'() {
+ this.onScroll();
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ containerStyle: '',
+ contentStyle: '',
+ };
+ this.methods = {
+ onScroll(event) {
+ const { scrollTop } = event || {};
+ const { container, offsetTop, disabled } = this.properties;
+ if (disabled) {
+ this.setDataAfterDiff({
+ isFixed: false,
+ transform: 0,
+ });
+ return;
+ }
+ this.scrollTop = scrollTop || this.scrollTop;
+ if (typeof container === 'function') {
+ Promise.all([getRect(this, ContainerClass), this.getContainerRect()]).then(([root, container]) => {
+ if (!root || !container)
+ return;
+ if (offsetTop + root.height > container.height + container.top) {
+ this.setDataAfterDiff({
+ isFixed: false,
+ transform: container.height - root.height,
+ });
+ }
+ else if (offsetTop >= root.top) {
+ this.setDataAfterDiff({
+ isFixed: true,
+ height: root.height,
+ transform: 0,
+ });
+ }
+ else {
+ this.setDataAfterDiff({ isFixed: false, transform: 0 });
+ }
+ });
+ return;
+ }
+ getRect(this, ContainerClass).then((root) => {
+ if (!root)
+ return;
+ if (offsetTop >= root.top) {
+ this.setDataAfterDiff({ isFixed: true, height: root.height });
+ this.transform = 0;
+ }
+ else {
+ this.setDataAfterDiff({ isFixed: false });
+ }
+ });
+ },
+ setDataAfterDiff(data) {
+ const { offsetTop } = this.properties;
+ const { containerStyle: prevContainerStyle, contentStyle: prevContentStyle } = this.data;
+ const { isFixed, height, transform } = data;
+ wx.nextTick(() => {
+ let containerStyle = '';
+ let contentStyle = '';
+ if (isFixed) {
+ containerStyle += `height:${height}px;`;
+ contentStyle += `position:fixed;top:${offsetTop}px;`;
+ }
+ if (transform) {
+ const translate = `translate3d(0, ${transform}px, 0)`;
+ contentStyle += `-webkit-transform:${translate};transform:${translate};`;
+ }
+ if (prevContainerStyle !== containerStyle || prevContentStyle !== contentStyle) {
+ this.setData({ containerStyle, contentStyle });
+ }
+ this.triggerEvent('scroll', {
+ scrollTop: this.scrollTop,
+ isFixed,
+ });
+ });
+ },
+ getContainerRect() {
+ const nodesRef = this.properties.container();
+ return new Promise((resolve) => nodesRef.boundingClientRect(resolve).exec());
+ },
+ };
+ }
+ ready() {
+ this.onScroll();
+ }
+};
+Sticky = __decorate([
+ wxComponent()
+], Sticky);
+export default Sticky;
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/sticky.json b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/sticky.wxml b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.wxml
new file mode 100644
index 0000000..8f0181c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.wxml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/sticky.wxss b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.wxss
new file mode 100644
index 0000000..730de8a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/sticky.wxss
@@ -0,0 +1,33 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-sticky {
+ position: relative;
+}
+.t-sticky__content {
+ width: 100%;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/type.d.ts b/miniprogram_npm/tdesign-miniprogram/sticky/type.d.ts
new file mode 100644
index 0000000..40a7712
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdStickyProps {
+ container?: {
+ type: undefined;
+ value?: null;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ offsetTop?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/sticky/type.js b/miniprogram_npm/tdesign-miniprogram/sticky/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/sticky/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/swipe-cell/README.en-US.md
new file mode 100644
index 0000000..584359b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/README.en-US.md
@@ -0,0 +1,18 @@
+:: BASE_DOC ::
+
+## API
+
+### SwipeCell Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disabled | Boolean | - | \- | N
+opened | Boolean / Array | false | \- | N
+left | Array / Slot | - | Typescript:`Array` | N
+right | Array / Slot | - | Typescript:`Array` `interface SwipeActionItem {text?: string; icon?: string | object; className?: string; style?: string; onClick?: () => void; [key: string]: any }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts) | N
+
+### SwipeCell Events
+
+name | params | description
+-- | -- | --
+click | `(action: SwipeActionItem, source: SwipeSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts)。
`type SwipeSource = 'left' \| 'right'`
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/README.md b/miniprogram_npm/tdesign-miniprogram/swipe-cell/README.md
new file mode 100644
index 0000000..b0c80d5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/README.md
@@ -0,0 +1,51 @@
+---
+title: SwipeCell 滑动操作
+description: 用于承载列表中的更多操作,通过左右滑动来展示,按钮的宽度固定高度根据列表高度而变化。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-swipe-cell": "tdesign-miniprogram/swipe-cell/swipe-cell"
+}
+```
+
+### 组件类型
+
+左滑单操作
+
+{{ left }}
+
+右滑单操作
+
+{{ right }}
+
+左右滑操作
+
+{{ double }}
+
+带图标的滑动操作
+
+{{ icon }}
+
+## API
+### SwipeCell Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disabled | Boolean | - | 是否禁用滑动 | N
+opened | Boolean / Array | false | 操作项是否呈现为打开态,值为数组时表示分别控制左右滑动的展开和收起状态。TS 类型:`boolean \| Array` | N |
+left | Array / Slot | - | 左侧滑动操作项。所有行为同 `right`。TS 类型:`Array` | N
+right | Array / Slot | - | 右侧滑动操作项。有两种定义方式,一种是使用数组,二种是使用插槽。`right.text` 表示操作文本,`right.className` 表示操作项类名,`right.style` 表示操作项样式,`right.onClick` 表示点击操作项后执行的回调函数。示例:`[{ text: '删除', icon: 'delete', style: 'background-color: red', onClick: () => {} }]`。TS 类型:`Array` `interface SwipeActionItem {text?: string; icon?: string \| object, className?: string; style?: string; onClick?: () => void; [key: string]: any }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts) | N
+
+### SwipeCell Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `(action: SwipeActionItem, source: SwipeSource)` | 操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts)。
`type SwipeSource = 'left' \| 'right'`
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/props.d.ts b/miniprogram_npm/tdesign-miniprogram/swipe-cell/props.d.ts
new file mode 100644
index 0000000..9a3159c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwipeCellProps } from './type';
+declare const props: TdSwipeCellProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/props.js b/miniprogram_npm/tdesign-miniprogram/swipe-cell/props.js
new file mode 100644
index 0000000..5298eef
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/props.js
@@ -0,0 +1,17 @@
+const props = {
+ disabled: {
+ type: Boolean,
+ },
+ left: {
+ type: Array,
+ },
+ opened: {
+ type: Boolean,
+ optionalTypes: [Array],
+ value: false,
+ },
+ right: {
+ type: Array,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.d.ts b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.d.ts
new file mode 100644
index 0000000..b1400ab
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent } from '../common/src/index';
+export default class SwiperCell extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdSwipeCellProps;
+ data: {
+ prefix: string;
+ wrapperStyle: string;
+ closed: boolean;
+ classPrefix: string;
+ };
+ attached(): void;
+ ready(): void;
+ setSwipeWidth(): void;
+ detached(): void;
+ open(): void;
+ close(): void;
+ closeOther(): void;
+ onTap(): void;
+ onActionTap(event: any): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.js b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.js
new file mode 100644
index 0000000..f785d95
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.js
@@ -0,0 +1,67 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect } from '../common/utils';
+let ARRAY = [];
+const { prefix } = config;
+const name = `${prefix}-swipe-cell`;
+const ContainerClass = `.${name}`;
+let SwiperCell = class SwiperCell extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ wrapperStyle: '',
+ closed: true,
+ classPrefix: name,
+ };
+ }
+ attached() {
+ ARRAY.push(this);
+ }
+ ready() {
+ this.setSwipeWidth();
+ }
+ setSwipeWidth() {
+ Promise.all([getRect(this, `${ContainerClass}__left`), getRect(this, `${ContainerClass}__right`)]).then(([leftRect, rightRect]) => {
+ this.setData({
+ leftWidth: leftRect.width,
+ rightWidth: rightRect.width,
+ });
+ });
+ }
+ detached() {
+ ARRAY = ARRAY.filter((item) => item !== this);
+ }
+ open() {
+ this.setData({ opened: true });
+ }
+ close() {
+ this.setData({ opened: false });
+ }
+ closeOther() {
+ ARRAY.filter((item) => item !== this).forEach((item) => item.close());
+ }
+ onTap() {
+ this.close();
+ }
+ onActionTap(event) {
+ const { currentTarget: { dataset: { action }, }, } = event;
+ this.triggerEvent('click', action);
+ }
+};
+SwiperCell = __decorate([
+ wxComponent()
+], SwiperCell);
+export default SwiperCell;
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.json b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxml b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxml
new file mode 100644
index 0000000..9b97d91
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxs b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxs
new file mode 100644
index 0000000..dbb7fec
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxs
@@ -0,0 +1,176 @@
+var THRESHOLD = 0.3;
+var MIN_DISTANCE = 10;
+var owner;
+var state;
+
+var getState = function (ownerInstance) {
+ owner = ownerInstance;
+ state = owner.getState();
+ state.leftWidth = state.leftWidth || 0;
+ state.rightWidth = state.rightWidth || 0;
+ state.offset = state.offset || 0;
+ state.startOffset = state.startOffset || 0;
+ state.opened = state.opened || false;
+};
+
+var initRightWidth = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ state.rightWidth = newVal;
+ initOpen(ownerInstance);
+};
+
+var initLeftWidth = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ state.leftWidth = newVal;
+ initOpen(ownerInstance);
+};
+
+var initOpen = function (ownerInstance) {
+ getState(ownerInstance);
+ if (state.opened.constructor === 'Boolean') {
+ // opened为boolen类型,判断默认打开
+ if (state.opened && state.rightWidth > 0) {
+ swipeMove(-state.rightWidth);
+ } else if (state.opened && state.leftWidth > 0) {
+ swipeMove(state.leftWidth);
+ }
+ }
+
+ if (state.opened.constructor === 'Array') {
+ // opened为array类型,判断默认打开,同时设定左右action时优先打开右边
+ if (state.opened[1] && state.rightWidth > 0) {
+ swipeMove(-state.rightWidth);
+ } else if (state.opened[0] && state.leftWidth > 0) {
+ swipeMove(state.leftWidth);
+ }
+ }
+};
+
+var resetTouchStatus = function () {
+ state.direction = '';
+ state.deltaX = 0;
+ state.deltaY = 0;
+ state.offsetX = 0;
+ state.offsetY = 0;
+};
+
+var touchMove = function (event) {
+ var touchPoint = event.touches[0];
+ state.deltaX = touchPoint.clientX - state.startX;
+ state.deltaY = touchPoint.clientY - state.startY;
+ state.offsetX = Math.abs(state.deltaX);
+ state.offsetY = Math.abs(state.deltaY);
+ state.direction = state.direction || getDirection(state.offsetX, state.offsetY);
+};
+
+var getDirection = function (x, y) {
+ if (x > y && x > MIN_DISTANCE) {
+ return 'horizontal';
+ }
+ if (y > x && y > MIN_DISTANCE) {
+ return 'vertical';
+ }
+ return '';
+};
+
+var range = function (num, min, max) {
+ return Math.min(Math.max(num, min), max);
+};
+
+var swipeMove = function (_offset) {
+ if (_offset === undefined) _offset = 0;
+ state.offset = range(_offset, -state.rightWidth, +state.leftWidth);
+ var transform = 'translate3d(' + state.offset + 'px, 0, 0)';
+ var transition = state.dragging ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)';
+ owner.selectComponent('#wrapper').setStyle({
+ '-webkit-transform': transform,
+ '-webkit-transition': transition,
+ transform: transform,
+ transition: transition,
+ });
+};
+
+var close = function () {
+ swipeMove(0);
+};
+
+var onCloseChange = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ if (newVal === oldVal) return;
+ if (newVal) {
+ close();
+ }
+};
+
+var onOpenedChange = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ state.opened = newVal;
+ if (newVal === oldVal) return;
+ if (!newVal) {
+ close();
+ }
+};
+
+var touchStart = function (event) {
+ resetTouchStatus();
+ state.startOffset = state.offset;
+ var touchPoint = event.touches[0];
+ state.startX = touchPoint.clientX;
+ state.startY = touchPoint.clientY;
+ owner.callMethod('closeOther');
+};
+
+var startDrag = function (event, ownerInstance) {
+ getState(ownerInstance);
+ touchStart(event);
+};
+
+var onDrag = function (event, ownerInstance) {
+ getState(ownerInstance);
+ touchMove(event);
+ if (state.direction !== 'horizontal') {
+ return;
+ }
+ state.dragging = true;
+ swipeMove(state.startOffset + state.deltaX);
+};
+
+var open = function (position) {
+ var _offset = position === 'left' ? +state.leftWidth : -state.rightWidth;
+ owner.callMethod('open', { position: position });
+ swipeMove(_offset);
+};
+
+var endDrag = function (event, ownerInstance) {
+ getState(ownerInstance);
+ state.dragging = false;
+ // 左/右侧有可滑动区域,且当前不是已open状态,且滑动幅度超过阈值时open左/右侧(滚动到该侧的最边上)
+ if (
+ +state.rightWidth > 0 &&
+ -state.startOffset < +state.rightWidth &&
+ -state.offset > +state.rightWidth * THRESHOLD
+ ) {
+ open('right');
+ } else if (
+ +state.leftWidth > 0 &&
+ state.startOffset < +state.leftWidth &&
+ state.offset > +state.leftWidth * THRESHOLD
+ ) {
+ open('left');
+ } else {
+ // 仅在有发生侧滑的情况下自动关闭(由js控制是否异步关闭)
+ if (state.startOffset !== state.offset) {
+ close();
+ }
+ }
+};
+
+module.exports = {
+ initLeftWidth: initLeftWidth,
+ initRightWidth: initRightWidth,
+ startDrag: startDrag,
+ onDrag: onDrag,
+ endDrag: endDrag,
+ onCloseChange: onCloseChange,
+ onOpenedChange: onOpenedChange,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxss b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxss
new file mode 100644
index 0000000..dd4086f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/swipe-cell.wxss
@@ -0,0 +1,59 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-swipe-cell {
+ position: relative;
+ overflow: hidden;
+}
+.t-swipe-cell__left,
+.t-swipe-cell__right {
+ position: absolute;
+ top: 0;
+ height: 100%;
+}
+.t-swipe-cell__left {
+ left: 0;
+ transform: translate3d(-100%, 0, 0);
+}
+.t-swipe-cell__right {
+ right: 0;
+ transform: translate3d(100%, 0, 0);
+}
+.t-swipe-cell__content {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 var(--td-spacer-2, 32rpx);
+}
+.t-swipe-cell__icon {
+ font-size: var(--td-font-size-l, 40rpx);
+}
+.t-swipe-cell__icon + .t-swipe-cell__text:not(:empty) {
+ margin-left: var(--td-spacer, 16rpx);
+ font-size: var(--td-font-size-base, 28rpx);
+ line-height: 44rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/type.d.ts b/miniprogram_npm/tdesign-miniprogram/swipe-cell/type.d.ts
new file mode 100644
index 0000000..43614d3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/type.d.ts
@@ -0,0 +1,31 @@
+export interface TdSwipeCellProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ left?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ opened?: {
+ type: BooleanConstructor;
+ optionalTypes: Array;
+ value?: boolean | Array;
+ required?: boolean;
+ };
+ right?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+}
+export interface SwipeActionItem {
+ text: string;
+ className?: string;
+ style?: string;
+ onClick?: () => void;
+ [key: string]: any;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swipe-cell/type.js b/miniprogram_npm/tdesign-miniprogram/swipe-cell/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swipe-cell/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/index.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper-nav/index.d.ts
new file mode 100644
index 0000000..5dcaf6b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './swiper-nav';
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/index.js b/miniprogram_npm/tdesign-miniprogram/swiper-nav/index.js
new file mode 100644
index 0000000..5dcaf6b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './swiper-nav';
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/props.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper-nav/props.d.ts
new file mode 100644
index 0000000..70971ea
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwiperNavProps } from './type';
+declare const props: TdSwiperNavProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/props.js b/miniprogram_npm/tdesign-miniprogram/swiper-nav/props.js
new file mode 100644
index 0000000..04f2f55
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/props.js
@@ -0,0 +1,31 @@
+const props = {
+ current: {
+ type: Number,
+ value: 0,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ minShowNum: {
+ type: Number,
+ value: 2,
+ },
+ paginationPosition: {
+ type: String,
+ value: 'bottom',
+ },
+ showControls: {
+ type: Boolean,
+ value: false,
+ },
+ total: {
+ type: Number,
+ value: 0,
+ },
+ type: {
+ type: String,
+ value: 'dots',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.d.ts
new file mode 100644
index 0000000..ce01166
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.d.ts
@@ -0,0 +1,45 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import { TdSwiperNavProps } from './type';
+export interface SwiperNavProps extends TdSwiperNavProps {
+}
+export default class SwiperNav extends SuperComponent {
+ externalClasses: string[];
+ properties: {
+ current: {
+ type: NumberConstructor;
+ value: number;
+ };
+ total: {
+ type: NumberConstructor;
+ value: number;
+ };
+ type: {
+ type: StringConstructor;
+ value: string;
+ };
+ minShowNum: {
+ type: NumberConstructor;
+ value: number;
+ };
+ showControls: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ direction: {
+ type: StringConstructor;
+ value: string;
+ };
+ paginationPosition: {
+ type: StringConstructor;
+ value: string;
+ };
+ };
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ methods: {
+ nav(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.js b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.js
new file mode 100644
index 0000000..991c5af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.js
@@ -0,0 +1,70 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-swiper-nav`;
+let SwiperNav = class SwiperNav extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = {
+ current: {
+ type: Number,
+ value: 0,
+ },
+ total: {
+ type: Number,
+ value: 0,
+ },
+ type: {
+ type: String,
+ value: 'dots',
+ },
+ minShowNum: {
+ type: Number,
+ value: 2,
+ },
+ showControls: {
+ type: Boolean,
+ value: false,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ paginationPosition: {
+ type: String,
+ value: 'bottom',
+ },
+ };
+ this.relations = {
+ '../swiper/swiper': {
+ type: 'parent',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.methods = {
+ nav(e) {
+ var _a;
+ const { dir } = e.target.dataset;
+ const source = 'nav';
+ this.triggerEvent('nav-btn-change', { dir, source });
+ if (this.$parent) {
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.doNavBtnChange(dir, source);
+ }
+ },
+ };
+ }
+};
+SwiperNav = __decorate([
+ wxComponent()
+], SwiperNav);
+export default SwiperNav;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.json b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.wxml b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.wxml
new file mode 100644
index 0000000..2067b05
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.wxss b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.wxss
new file mode 100644
index 0000000..1463dba
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/swiper-nav.wxss
@@ -0,0 +1,152 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-swiper-nav__dots,
+.t-swiper-nav__dots-bar {
+ display: flex;
+ flex-direction: row;
+}
+.t-swiper-nav__dots-item,
+.t-swiper-nav__dots-bar-item {
+ width: var(--td-swiper-nav-dot-size, 12rpx);
+ height: var(--td-swiper-nav-dot-size, 12rpx);
+ background: var(--td-swiper-nav-dot-color, var(--td-font-white-2, rgba(255, 255, 255, 0.55)));
+ border-radius: 50%;
+ margin: 0 10rpx;
+ transition: all 0.4s ease-in;
+}
+.t-swiper-nav__dots-item--vertical,
+.t-swiper-nav__dots-bar-item--vertical {
+ margin: 10rpx 0;
+}
+.t-swiper-nav__dots-item--active,
+.t-swiper-nav__dots-bar-item--active {
+ background-color: var(--td-swiper-nav-dot-active-color, var(--td-font-white-1, #ffffff));
+}
+.t-swiper-nav__dots-bar-item--vertical.t-swiper-nav__dots-bar-item--active {
+ width: var(--td-swiper-nav-dot-size, 12rpx);
+ height: var(--td-swiper-nav-dots-bar-active-width, 40rpx);
+}
+.t-swiper-nav__dots-bar-item--active {
+ width: var(--td-swiper-nav-dots-bar-active-width, 40rpx);
+ border-radius: calc(var(--td-swiper-nav-dot-size, 12rpx) / 2);
+ background-color: var(--td-swiper-nav-dot-active-color, var(--td-font-white-1, #ffffff));
+}
+.t-swiper-nav--left {
+ position: absolute;
+ left: 24rpx;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-swiper-nav--right {
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-swiper-nav--top-left {
+ position: absolute;
+ top: 24rpx;
+ left: 24rpx;
+}
+.t-swiper-nav--top {
+ position: absolute;
+ left: 50%;
+ top: 24rpx;
+ transform: translateX(-50%);
+}
+.t-swiper-nav--top-right {
+ position: absolute;
+ top: 24rpx;
+ right: 24rpx;
+}
+.t-swiper-nav--bottom-left {
+ position: absolute;
+ left: 24rpx;
+ bottom: 24rpx;
+}
+.t-swiper-nav--bottom {
+ position: absolute;
+ left: 50%;
+ bottom: 24rpx;
+ transform: translateX(-50%);
+}
+.t-swiper-nav--bottom-right {
+ position: absolute;
+ right: 24rpx;
+ bottom: 24rpx;
+}
+.t-swiper-nav--vertical {
+ flex-direction: column;
+}
+.t-swiper-nav__fraction {
+ padding: 0 16rpx;
+ height: var(--td-swiper-nav-fraction-height, 48rpx);
+ line-height: var(--td-swiper-nav-fraction-height, 48rpx);
+ border-radius: calc(var(--td-swiper-nav-fraction-height, 48rpx) / 2);
+ background: var(--td-swiper-nav-fraction-bg-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ color: var(--td-swiper-nav-fraction-color, var(--td-font-white-1, #ffffff));
+ font-size: var(--td-swiper-nav-fraction-font-size, 24rpx);
+}
+.t-swiper-nav__btn--prev,
+.t-swiper-nav__btn--next {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ width: var(--td-swiper-nav-btn-size, 48rpx);
+ height: var(--td-swiper-nav-btn-size, 48rpx);
+ border-radius: 50%;
+ background: var(--td-swiper-nav-btn-bg-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-swiper-nav__btn--prev::after,
+.t-swiper-nav__btn--next::after {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ display: block;
+ content: '';
+ width: 12rpx;
+ height: 12rpx;
+ border-color: var(--td-swiper-nav-btn-color, var(--td-font-white-1, #ffffff));
+ border-style: solid;
+}
+.t-swiper-nav__btn--prev {
+ left: 30rpx;
+}
+.t-swiper-nav__btn--prev::after {
+ margin-left: 4rpx;
+ border-width: 2rpx 0 0 2rpx;
+ transform: translate(-50%, -50%) rotateZ(-45deg);
+}
+.t-swiper-nav__btn--next {
+ right: 30rpx;
+}
+.t-swiper-nav__btn--next::after {
+ margin-left: -4rpx;
+ border-width: 2rpx 2rpx 0 0;
+ transform: translate(-50%, -50%) rotateZ(45deg);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/type.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper-nav/type.d.ts
new file mode 100644
index 0000000..2cc2a19
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/type.d.ts
@@ -0,0 +1,35 @@
+export interface TdSwiperNavProps {
+ current?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ minShowNum?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ paginationPosition?: {
+ type: StringConstructor;
+ value?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right';
+ };
+ showControls?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ total?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ type?: {
+ type: StringConstructor;
+ value?: SwiperNavigationType;
+ };
+}
+export declare type SwiperNavigationType = 'dots' | 'dots-bar' | 'fraction';
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper-nav/type.js b/miniprogram_npm/tdesign-miniprogram/swiper-nav/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper-nav/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/swiper/README.en-US.md
new file mode 100644
index 0000000..d827dbb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/README.en-US.md
@@ -0,0 +1,42 @@
+:: BASE_DOC ::
+
+## API
+### Swiper Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+autoplay | Boolean | true | \- | N
+current | Number | 0 | \- | N
+direction | String | horizontal | options:horizontal/vertical | N
+display-multiple-items | Number | 1 | `0.32.0` | N
+duration | Number | 300 | \- | N
+easing-function | String | default | `0.32.0`。options:default/linear/easeInCubic/easeOutCubic/easeInOutCubic | N
+height | String / Number | 192 | \- | N
+image-props | Object | - | `0.34.0` | N
+interval | Number | 5000 | \- | N
+list | Array | - | `0.32.0`。Typescript:`string[]` | N
+loop | Boolean | true | \- | N
+navigation | Boolean / Object / Slot | true | Typescript:`SwiperNavProps \| boolean`,[SwiperNav API Documents](./swiper-nav?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts) | N
+next-margin | String / Number | 0 | `0.32.0` | N
+pagination-position | String | bottom | options:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+previous-margin | String / Number | 0 | `0.32.0` | N
+snap-to-edge | Boolean | false | `0.32.0` | N
+
+### Swiper Events
+
+name | params | description
+-- | -- | --
+change | `(current: number, source: SwiperChangeSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts)。
`type SwiperChangeSource = 'autoplay' \| 'touch' \| 'nav'`
+click | `(index: number)` | `0.34.0`
+
+### SwiperNav Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+current | Number | 0 | `0.34.0` | N
+direction | String | horizontal | `0.34.0`。options:horizontal/vertical | N
+min-show-num | Number | 2 | \- | N
+pagination-position | String | bottom | `0.34.0`。options:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+show-controls | Boolean | false | `0.32.0` | N
+total | Number | 0 | `0.34.0` | N
+type | String | dots | Typescript:`SwiperNavigationType` `type SwiperNavigationType = 'dots' \| 'dots-bar' \| 'fraction'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper-nav/type.ts) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/README.md b/miniprogram_npm/tdesign-miniprogram/swiper/README.md
new file mode 100644
index 0000000..37bd573
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/README.md
@@ -0,0 +1,97 @@
+---
+title: Swiper 轮播图
+description: 用于循环轮播一组图片或内容,也可以滑动进行切换,轮播动效时间可以设置。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-swiper": "tdesign-miniprogram/swiper/swiper",
+ "t-swiper-nav": "tdesign-miniprogram/swiper-nav/swiper-nav",
+}
+```
+
+### 组件说明
+
+从 `0.32.0` 版本开始,依赖原生 `swiper` 组件实现,移除了 `swiper-item` 组件,新增了 `list` 属性;
+
+## 代码演示
+
+多种轮播样式,通过 `navigation` 设置导航样式,没有值则不显示,也可以自定义 `nav` 组件
+
+
+
+### 组件类型
+
+#### 点状(dots)轮播图
+
+{{ base }}
+
+#### 点条状(dots-bar)轮播图
+
+{{ custom }}
+
+#### 分式(fraction)导航器轮播图
+
+{{ fraction }}
+
+#### 切换按钮(controls)轮播图
+
+{{ nav-btn }}
+
+#### 卡片式(cards)轮播图
+
+{{ cards }}
+
+### 组件样式
+
+#### 垂直模式
+
+{{ vertical }}
+
+## API
+### Swiper Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+autoplay | Boolean | true | 是否自动播放 | N
+current | Number | 0 | 当前轮播在哪一项(下标) | N
+direction | String | horizontal | 轮播滑动方向,包括横向滑动和纵向滑动两个方向。可选项:horizontal/vertical | N
+display-multiple-items | Number | 1 | `0.32.0`。同时显示的滑块数量 | N
+duration | Number | 300 | 滑动动画时长 | N
+easing-function | String | default | `0.32.0`。指定 swiper 切换缓动动画类型。可选项:default/linear/easeInCubic/easeOutCubic/easeInOutCubic | N
+height | String / Number | 192 | 轮播的高度;默认单位 `px` | N
+image-props | Object | - | `0.34.0`。透传至 Image 组件 | N
+interval | Number | 5000 | 轮播间隔时间 | N
+list | Array | - | `0.32.0`。图片列表。TS 类型:`string[]` | N
+loop | Boolean | true | 是否循环播放 | N
+navigation | Boolean / Object / Slot | true | 导航器全部配置,true 的话使用默认配置。TS 类型:`SwiperNavProps \| boolean`,[SwiperNav API Documents](./swiper-nav?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts) | N
+next-margin | String / Number | 0 | `0.32.0`。后边距,可用于露出后一项的一小部分。默认单位 `px` | N
+pagination-position | String | bottom | 页码信息展示位置。可选项:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+previous-margin | String / Number | 0 | `0.32.0`。前边距,可用于露出前一项的一小部分。默认单位 `px` | N
+snap-to-edge | Boolean | false | `0.32.0`。当 swiper-item 的个数大于等于 2,关闭 circular 并且开启 previous-margin 或 next-margin 的时候,可以指定这个边距是否应用到第一个、最后一个元素 | N
+
+### Swiper Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(current: number, source: SwiperChangeSource)` | 轮播切换时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts)。
`type SwiperChangeSource = 'autoplay' \| 'touch' \| 'nav'`
+click | `(index: number)` | `0.34.0`。点击轮播项时触发
+
+### SwiperNav Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+current | Number | 0 | `0.34.0`。当前轮播在哪一项(下标) | N
+direction | String | horizontal | `0.34.0`。轮播滑动方向,包括横向滑动和纵向滑动两个方向。可选项:horizontal/vertical | N
+min-show-num | Number | 2 | 小于这个数字不会显示导航器 | N
+pagination-position | String | bottom | `0.34.0`。页码信息展示位置。可选项:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+show-controls | Boolean | false | `0.32.0`。是否显示两侧的控制按钮 | N
+total | Number | 0 | `0.34.0`。总共的项数 | N
+type | String | dots | 导航器类型,点状(dots)、点条状(dots-bar)、分式(fraction)等。TS 类型:`SwiperNavigationType` `type SwiperNavigationType = 'dots' \| 'dots-bar' \| 'fraction'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper-nav/type.ts) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/index.wxs b/miniprogram_npm/tdesign-miniprogram/swiper/index.wxs
new file mode 100644
index 0000000..b5206a6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/index.wxs
@@ -0,0 +1,25 @@
+function isPrev(current, index, list) {
+ return (current - 1 + list.length) % list.length === index;
+}
+
+function isNext(current, index, list) {
+ return (current + 1 + list.length) % list.length === index;
+}
+
+function getImageClass(prefix, current, index, list) {
+ var arr = [prefix + '-swiper__image', prefix + '-class-image'];
+
+ if (isPrev(current, index, list)) {
+ arr.push(prefix + '-class-prev-image')
+ }
+
+ if (isNext(current, index, list)) {
+ arr.push(prefix + '-class-next-image')
+ }
+
+ return arr.join(' ');
+}
+
+module.exports.isPrev = isPrev;
+module.exports.isNext = isNext;
+module.exports.getImageClass = getImageClass;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/props.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper/props.d.ts
new file mode 100644
index 0000000..399c9af
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwiperProps } from './type';
+declare const props: TdSwiperProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/props.js b/miniprogram_npm/tdesign-miniprogram/swiper/props.js
new file mode 100644
index 0000000..84d0499
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/props.js
@@ -0,0 +1,65 @@
+const props = {
+ autoplay: {
+ type: Boolean,
+ value: true,
+ },
+ current: {
+ type: Number,
+ value: 0,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ displayMultipleItems: {
+ type: Number,
+ value: 1,
+ },
+ duration: {
+ type: Number,
+ value: 300,
+ },
+ easingFunction: {
+ type: String,
+ value: 'default',
+ },
+ height: {
+ type: null,
+ value: 192,
+ },
+ imageProps: {
+ type: Object,
+ },
+ interval: {
+ type: Number,
+ value: 5000,
+ },
+ list: {
+ type: Array,
+ },
+ loop: {
+ type: Boolean,
+ value: true,
+ },
+ navigation: {
+ type: null,
+ value: true,
+ },
+ nextMargin: {
+ type: null,
+ value: 0,
+ },
+ paginationPosition: {
+ type: String,
+ value: 'bottom',
+ },
+ previousMargin: {
+ type: null,
+ value: 0,
+ },
+ snapToEdge: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/swiper.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.d.ts
new file mode 100644
index 0000000..03a5202
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Swiper extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdSwiperProps;
+ observers: {
+ navCurrent(v: any): void;
+ };
+ $nav: any;
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ updateNav(currentValue: any): void;
+ onTap(e: any): void;
+ onChange(e: any): void;
+ onNavBtnChange(e: any): void;
+ doNavBtnChange(dir: any, source: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/swiper.js b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.js
new file mode 100644
index 0000000..327c7f1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.js
@@ -0,0 +1,101 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-swiper`;
+let Swiper = class Swiper extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-nav`,
+ `${prefix}-class-image`,
+ `${prefix}-class-prev-image`,
+ `${prefix}-class-next-image`,
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.observers = {
+ navCurrent(v) {
+ this.updateNav(v);
+ },
+ };
+ this.$nav = null;
+ this.relations = {
+ '../swiper-nav/swiper-nav': {
+ type: 'child',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.lifetimes = {
+ ready() {
+ const { current } = this.properties;
+ this.setData({ navCurrent: current });
+ },
+ };
+ this.methods = {
+ updateNav(currentValue) {
+ var _a;
+ if (this.data.navigation)
+ return;
+ const $nav = (_a = this.getRelationNodes('./swiper-nav')) === null || _a === void 0 ? void 0 : _a[0];
+ if (!$nav)
+ return;
+ const { direction, paginationPosition, list } = this.properties;
+ $nav.setData({
+ current: currentValue,
+ total: list.length,
+ direction,
+ paginationPosition,
+ });
+ },
+ onTap(e) {
+ const { index } = e.currentTarget.dataset;
+ this.triggerEvent('click', { index });
+ },
+ onChange(e) {
+ const { current, source } = e.detail;
+ this.setData({
+ navCurrent: current,
+ });
+ this.triggerEvent('change', { current, source });
+ },
+ onNavBtnChange(e) {
+ const { dir, source } = e.detail;
+ this.doNavBtnChange(dir, source);
+ },
+ doNavBtnChange(dir, source) {
+ const { current, list, loop } = this.data;
+ const count = list.length;
+ let nextPos = dir === 'next' ? current + 1 : current - 1;
+ if (loop) {
+ nextPos = dir === 'next' ? (current + 1) % count : (current - 1 + count) % count;
+ }
+ else {
+ nextPos = nextPos < 0 || nextPos >= count ? current : nextPos;
+ }
+ if (nextPos === current)
+ return;
+ this.setData({
+ current: nextPos,
+ });
+ this.triggerEvent('change', { current: nextPos, source });
+ },
+ };
+ }
+};
+Swiper = __decorate([
+ wxComponent()
+], Swiper);
+export default Swiper;
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/swiper.json b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.json
new file mode 100644
index 0000000..e565961
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-swiper-nav": "../swiper-nav/swiper-nav",
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/swiper.wxml b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.wxml
new file mode 100644
index 0000000..22add26
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.wxml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/swiper.wxss b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.wxss
new file mode 100644
index 0000000..6509860
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/swiper.wxss
@@ -0,0 +1,49 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-swiper {
+ position: relative;
+}
+.t-swiper-host {
+ border-radius: var(--td-swiper-radius, var(--td-radius-large, 18rpx));
+ overflow: hidden;
+ transform: translateY(0);
+}
+.t-swiper__item {
+ display: flex;
+ align-items: center;
+ box-sizing: border-box;
+ padding: var(--td-swiper-item-padding, 0);
+}
+.t-swiper__image {
+ width: 100%;
+ transition: all 0.3s ease;
+}
+.t-swiper__image-host {
+ display: block;
+ width: 100%;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/type.d.ts b/miniprogram_npm/tdesign-miniprogram/swiper/type.d.ts
new file mode 100644
index 0000000..6b6eb8a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/type.d.ts
@@ -0,0 +1,71 @@
+import { SwiperNavProps } from '../swiper-nav/index';
+export interface TdSwiperProps {
+ autoplay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ current?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ displayMultipleItems?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ easingFunction?: {
+ type: StringConstructor;
+ value?: 'default' | 'linear' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic';
+ };
+ height?: {
+ type: null;
+ value?: string | number;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ interval?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ list?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ loop?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ navigation?: {
+ type: null;
+ value?: SwiperNavProps | boolean;
+ };
+ nextMargin?: {
+ type: null;
+ value?: string | number;
+ };
+ paginationPosition?: {
+ type: StringConstructor;
+ value?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right';
+ };
+ previousMargin?: {
+ type: null;
+ value?: string | number;
+ };
+ snapToEdge?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/swiper/type.js b/miniprogram_npm/tdesign-miniprogram/swiper/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/swiper/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/switch/README.en-US.md
new file mode 100644
index 0000000..5785a01
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/README.en-US.md
@@ -0,0 +1,22 @@
+:: BASE_DOC ::
+
+## API
+### Switch Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+custom-value | Array | [true, false] | Typescript:`Array` | N
+disabled | Boolean | false | \- | N
+icon | Array | [] | Typescript:`string[]` | N
+label | Array | [] | Typescript:`string[]` | N
+loading | Boolean | false | \- | N
+size | String | medium | options:small/medium/large | N
+style | String | - | \- | N
+value | String / Number / Boolean | null | Typescript:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+default-value | String / Number / Boolean | undefined | uncontrolled property。Typescript:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+
+### Switch Events
+
+name | params | description
+-- | -- | --
+change | `(value: SwitchValue)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/README.md b/miniprogram_npm/tdesign-miniprogram/switch/README.md
new file mode 100644
index 0000000..baa96b2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/README.md
@@ -0,0 +1,59 @@
+---
+title: Switch 开关
+description: 用于控制某个功能的开启和关闭。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-switch": "tdesign-miniprogram/switch/switch"
+}
+```
+
+## 代码演示
+
+### 基础开关
+
+{{ base }}
+
+### 带描述开关
+
+{{ label }}
+
+### 自定义颜色
+
+{{ color }}
+
+### 开关状态
+
+{{ status }}
+
+### 尺寸
+
+{{ size }}
+
+## API
+### Switch Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+custom-value | Array | [true, false] | 用于自定义开关的值,[打开时的值,关闭时的值]。默认为 [true, false]。示例:[1, 0]、['open', 'close']。TS 类型:`Array` | N
+disabled | Boolean | false | 是否禁用组件 | N
+icon `v0.27.0` | Array | [] | 开关的图标;[打开时的图标,关闭时的图标]。TS 类型:`string[]` | N
+label `v0.27.0` | Array | [] | 开关的标签;[打开时的标签,关闭时的标签]。TS 类型:`string[]` | N
+loading `v0.27.0` | Boolean | false | 是否处于加载中状态 | N
+size `v0.27.0` | String | medium | 开关尺寸。可选项:small/medium/large | N
+value | String / Number / Boolean | null | 开关值。TS 类型:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+default-value | String / Number / Boolean | undefined | 开关值。非受控属性。TS 类型:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+
+### Switch Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: SwitchValue)` | 数据发生变化时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/props.d.ts b/miniprogram_npm/tdesign-miniprogram/switch/props.d.ts
new file mode 100644
index 0000000..489f18a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwitchProps } from './type';
+declare const props: TdSwitchProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/props.js b/miniprogram_npm/tdesign-miniprogram/switch/props.js
new file mode 100644
index 0000000..eb61ffb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/props.js
@@ -0,0 +1,35 @@
+const props = {
+ customValue: {
+ type: Array,
+ value: [true, false],
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: Array,
+ value: [],
+ },
+ label: {
+ type: Array,
+ value: [],
+ },
+ loading: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/switch.d.ts b/miniprogram_npm/tdesign-miniprogram/switch/switch.d.ts
new file mode 100644
index 0000000..6e43804
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/switch.d.ts
@@ -0,0 +1,21 @@
+import { SuperComponent } from '../common/src/index';
+export default class Switch extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ properties: import("./type").TdSwitchProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ checked: boolean;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(val: any): void;
+ };
+ methods: {
+ handleSwitch(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/switch.js b/miniprogram_npm/tdesign-miniprogram/switch/switch.js
new file mode 100644
index 0000000..6702e2a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/switch.js
@@ -0,0 +1,53 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-switch`;
+let Switch = class Switch extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = ['t-class', 't-class-label', 't-class-body', 't-class-dot'];
+ this.behaviors = ['wx://form-field'];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ checked: false,
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(val) {
+ const [activeValue] = this.data.customValue;
+ this.setData({
+ checked: val === activeValue,
+ });
+ },
+ };
+ this.methods = {
+ handleSwitch() {
+ const { disabled, value, customValue } = this.data;
+ const [activeValue, inactiveValue] = customValue;
+ if (disabled)
+ return;
+ this._trigger('change', {
+ value: value === activeValue ? inactiveValue : activeValue,
+ });
+ },
+ };
+ }
+};
+Switch = __decorate([
+ wxComponent()
+], Switch);
+export default Switch;
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/switch.json b/miniprogram_npm/tdesign-miniprogram/switch/switch.json
new file mode 100644
index 0000000..708bd1b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/switch.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-loading": "../loading/loading"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/switch.wxml b/miniprogram_npm/tdesign-miniprogram/switch/switch.wxml
new file mode 100644
index 0000000..9aa2cd7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/switch.wxml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ {{checked ? label[0] : label[1]}}
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/switch.wxss b/miniprogram_npm/tdesign-miniprogram/switch/switch.wxss
new file mode 100644
index 0000000..f69c959
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/switch.wxss
@@ -0,0 +1,161 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-switch {
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+}
+.t-switch__label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: nowrap;
+ font-size: var(--td-swtich-label-font-size, 28rpx);
+ color: var(--td-switch-label-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ overflow: hidden;
+}
+.t-switch__label--checked {
+ color: var(--td-switch-label-checked-color, var(--td-switch-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-switch__label--disabled {
+ color: var(--td-switch-unchecked-disabled-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-switch__label--checked.t-switch__label--disabled {
+ color: var(--td-switch-checked-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-switch__label--large {
+ font-size: var(--td-swtich-label-font-size, 32rpx);
+}
+.t-switch__label--small {
+ font-size: var(--td-swtich-label-font-size, 24rpx);
+}
+.t-switch__label:empty {
+ display: none;
+}
+.t-switch__icon {
+ font-size: var(--td-switch-icon-size, 40rpx);
+}
+.t-switch__icon--large {
+ font-size: var(--td-switch-icon-large-size, 48rpx);
+}
+.t-switch__icon--small {
+ font-size: var(--td-switch-icon-small-size, 32rpx);
+}
+.t-switch__loading {
+ color: var(--td-switch-label-checked-color, var(--td-switch-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-switch__body {
+ vertical-align: middle;
+ width: var(--td-switch-width, 90rpx);
+ height: var(--td-switch-height, 56rpx);
+ border-radius: var(--td-switch-radius, calc(var(--td-switch-height, 56rpx) / 2));
+ background-color: var(--td-switch-unchecked-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ position: relative;
+ transition: all 0.3s ease;
+ overflow: hidden;
+}
+.t-switch__body--checked {
+ background-color: var(--td-switch-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-switch__body--disabled {
+ background-color: var(--td-switch-unchecked-disabled-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-switch__body--checked.t-switch__body--disabled {
+ background-color: var(--td-switch-checked-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-switch__body--large {
+ width: var(--td-switch-large-width, 104rpx);
+ height: var(--td-switch-large-height, 64rpx);
+ border-radius: var(--td-switch-large-radius, calc(var(--td-switch-large-height, 64rpx) / 2));
+}
+.t-switch__body--small {
+ width: var(--td-switch-small-width, 78rpx);
+ height: var(--td-switch-small-height, 48rpx);
+ border-radius: var(--td-switch-small-radius, calc(var(--td-switch-small-height, 48rpx) / 2));
+}
+.t-switch__dot {
+ position: absolute;
+ left: var(--td-switch-dot-horizontal-margin, 6rpx);
+ top: 50%;
+ width: var(--td-switch-dot-size, 44rpx);
+ height: var(--td-switch-dot-size, 44rpx);
+ border-radius: 50%;
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ transition: all 0.3s;
+ transform: translateY(-50%);
+ box-shadow: var(--td-switch-dot-shadow, var(--td-shadow-1, 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.12)));
+}
+.t-switch__dot:after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 200%;
+ height: 200%;
+ border: 1px solid var(--td-switch-dot-border-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ border-radius: 50%;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ box-sizing: border-box;
+}
+.t-switch__dot--large {
+ width: var(--td-switch-dot-large-size, 52rpx);
+ height: var(--td-switch-dot-large-size, 52rpx);
+}
+.t-switch__dot--small {
+ width: var(--td-switch-dot-small-size, 36rpx);
+ height: var(--td-switch-dot-small-size, 36rpx);
+}
+.t-switch__dot--checked {
+ left: calc(var(--td-switch-width, 90rpx) - var(--td-switch-dot-size, 44rpx) - var(--td-switch-dot-horizontal-margin, 6rpx));
+}
+.t-switch__dot--large.t-switch__dot--checked {
+ left: calc(var(--td-switch-large-width, 104rpx) - var(--td-switch-dot-large-size, 52rpx) - var(--td-switch-dot-horizontal-margin, 6rpx));
+}
+.t-switch__dot--small.t-switch__dot--checked {
+ left: calc(var(--td-switch-small-width, 78rpx) - var(--td-switch-dot-small-size, 36rpx) - var(--td-switch-dot-horizontal-margin, 6rpx));
+}
+.t-switch__dot--plain:not(.t-switch__dot--checked) {
+ width: var(--td-switch-dot-plain-size, 36rpx);
+ height: var(--td-switch-dot-plain-size, 36rpx);
+ left: var(--td-switch-dot-plain-horizontal-margin, 10rpx);
+}
+.t-switch__dot--large.t-switch__dot--plain:not(.t-switch__dot--checked) {
+ width: var(--td-switch-dot-plain-large-size, 44rpx);
+ height: var(--td-switch-dot-plain-large-size, 44rpx);
+}
+.t-switch__dot--small.t-switch__dot--plain:not(.t-switch__dot--checked) {
+ width: var(--td-switch-dot-plain-small-size, 28rpx);
+ height: var(--td-switch-dot-plain-small-size, 28rpx);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/type.d.ts b/miniprogram_npm/tdesign-miniprogram/switch/type.d.ts
new file mode 100644
index 0000000..8ca8e81
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/type.d.ts
@@ -0,0 +1,39 @@
+export interface TdSwitchProps {
+ customValue?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ label?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'small' | 'medium' | 'large';
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: SwitchValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: SwitchValue;
+ };
+}
+export declare type SwitchValue = string | number | boolean;
diff --git a/miniprogram_npm/tdesign-miniprogram/switch/type.js b/miniprogram_npm/tdesign-miniprogram/switch/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/switch/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/props.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/props.d.ts
new file mode 100644
index 0000000..026ee8b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabBarItemProps } from './type';
+declare const props: TdTabBarItemProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/props.js b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/props.js
new file mode 100644
index 0000000..5af83e4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/props.js
@@ -0,0 +1,15 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ },
+ icon: {
+ type: null,
+ },
+ subTabBar: {
+ type: Array,
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.d.ts
new file mode 100644
index 0000000..4efd9f7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.d.ts
@@ -0,0 +1,37 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class TabBarItem extends SuperComponent {
+ externalClasses: string[];
+ parent: any;
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ isSpread: boolean;
+ isChecked: boolean;
+ hasChildren: boolean;
+ currentName: string;
+ split: boolean;
+ iconOnly: boolean;
+ theme: string;
+ crowded: boolean;
+ shape: string;
+ };
+ properties: import("./type").TdTabBarItemProps;
+ observers: {
+ subTabBar(value: Record[]): void;
+ icon(v: any): void;
+ };
+ lifetimes: {
+ attached(): Promise;
+ };
+ methods: {
+ showSpread(): void;
+ toggle(): void;
+ selectChild(event: any): void;
+ checkActive(value: any): void;
+ closeSpread(): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.js b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.js
new file mode 100644
index 0000000..87752d0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.js
@@ -0,0 +1,120 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect, calcIcon } from '../common/utils';
+const { prefix } = config;
+const classPrefix = `${prefix}-tab-bar-item`;
+let TabBarItem = class TabBarItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.parent = null;
+ this.relations = {
+ '../tab-bar/tab-bar': {
+ type: 'ancestor',
+ linked(parent) {
+ const { theme, split, shape } = parent.data;
+ this.setData({
+ theme,
+ split,
+ shape,
+ currentName: this.properties.value ? this.properties.value : parent.initName(),
+ });
+ parent.updateChildren();
+ },
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ classPrefix,
+ isSpread: false,
+ isChecked: false,
+ hasChildren: false,
+ currentName: '',
+ split: true,
+ iconOnly: false,
+ theme: '',
+ crowded: false,
+ shape: 'normal',
+ };
+ this.properties = props;
+ this.observers = {
+ subTabBar(value) {
+ this.setData({
+ hasChildren: value.length > 0,
+ });
+ },
+ icon(v) {
+ this.setData({
+ _icon: calcIcon(v),
+ });
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ return __awaiter(this, void 0, void 0, function* () {
+ const res = yield getRect(this, `.${classPrefix}__text`);
+ this.setData({ iconOnly: res.height === 0 });
+ });
+ },
+ };
+ this.methods = {
+ showSpread() {
+ this.setData({
+ isSpread: true,
+ });
+ },
+ toggle() {
+ const { currentName, hasChildren, isSpread } = this.data;
+ if (hasChildren) {
+ this.setData({
+ isSpread: !isSpread,
+ });
+ }
+ this.$parent.updateValue(currentName);
+ this.$parent.changeOtherSpread(currentName);
+ },
+ selectChild(event) {
+ const { value } = event.target.dataset;
+ this.$parent.updateValue(value);
+ this.setData({
+ isSpread: false,
+ });
+ },
+ checkActive(value) {
+ const { currentName, subTabBar } = this.data;
+ const isChecked = (subTabBar === null || subTabBar === void 0 ? void 0 : subTabBar.some((item) => item.value === value)) || currentName === value;
+ this.setData({
+ isChecked,
+ });
+ },
+ closeSpread() {
+ this.setData({
+ isSpread: false,
+ });
+ },
+ };
+ }
+};
+TabBarItem = __decorate([
+ wxComponent()
+], TabBarItem);
+export default TabBarItem;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.json b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.json
new file mode 100644
index 0000000..69017ce
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-badge": "../badge/badge"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.wxml b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.wxml
new file mode 100644
index 0000000..8854807
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.wxml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ child.label }}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.wxss b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.wxss
new file mode 100644
index 0000000..1d86356
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/tab-bar-item.wxss
@@ -0,0 +1,141 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tab-bar-item {
+ flex: 1;
+ height: var(--td-tab-bar-height, 80rpx);
+ box-sizing: border-box;
+ user-select: none;
+ position: relative;
+ margin: 16rpx 0;
+ background-color: var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ padding: 0 24rpx;
+}
+.t-tab-bar-item--text-only {
+ font-size: 32rpx;
+}
+.t-tab-bar-item--split:before {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ border-left: 1px solid var(--td-tab-bar-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleX(0.5);
+ top: 16rpx;
+ bottom: 16rpx;
+}
+.t-tab-bar-item--crowded {
+ padding: 0 16rpx;
+}
+.t-tab-bar-item--round {
+ border-radius: 99px;
+}
+.t-tab-bar-item__content {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-radius: 16rpx;
+ color: var(--td-tab-bar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tab-bar-item__content--checked {
+ color: var(--td-tab-bar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: 600;
+}
+.t-tab-bar-item__content--tag {
+ border-radius: 99px;
+}
+.t-tab-bar-item__content--tag.t-tab-bar-item__content--checked {
+ background-color: var(--td-tab-bar-active-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tab-bar-item .t-badge-class {
+ transform: translate(50%, -10%) !important;
+}
+.t-tab-bar-item__text {
+ display: flex;
+ align-items: center;
+}
+.t-tab-bar-item__text--small {
+ font-size: 20rpx;
+ line-height: 32rpx;
+}
+.t-tab-bar-item__icon-menu {
+ margin-right: 8rpx;
+}
+.t-tab-bar-item__spread {
+ position: absolute;
+ top: 0;
+ left: 7%;
+ width: 86%;
+ background-color: var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ transform: translate3d(0, calc(-100% - 32rpx), 0);
+ z-index: 1;
+ border-radius: 12rpx;
+ color: var(--td-tab-bar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ box-shadow: var(--td-tab-bar-spread-shadow, var(--td-shadow-3, 0 6px 30px 5px rgba(0, 0, 0, 0.05), 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 8px 10px -5px rgba(0, 0, 0, 0.08)));
+}
+.t-tab-bar-item__spread::before {
+ display: block;
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ width: 0;
+ height: 0;
+ border: 16rpx solid transparent;
+ border-top: 16rpx solid var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ transform: translate3d(-50%, 32rpx, 0);
+}
+.t-tab-bar-item__spread-item {
+ width: 100%;
+ height: 96rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ position: relative;
+ flex-direction: column;
+}
+.t-tab-bar-item__spread-item--active {
+ background-color: var(--td-tab-bar-hover-bg-color, rgba(0, 0, 0, 0.05));
+}
+.t-tab-bar-item__spread-item-split {
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ background-color: var(--td-tab-bar-spread-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ width: 80%;
+ height: 1px;
+ transform: translateY(0.5);
+}
+.t-tab-bar-item__spread-item-text {
+ padding-top: 24rpx;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/type.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/type.d.ts
new file mode 100644
index 0000000..aa63763
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/type.d.ts
@@ -0,0 +1,27 @@
+import { BadgeProps } from '../badge/index';
+export interface TdTabBarItemProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: BadgeProps;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ icon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ subTabBar?: {
+ type: ArrayConstructor;
+ value?: SubTabBarItem[];
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+}
+export interface SubTabBarItem {
+ value: string;
+ label: string;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar-item/type.js b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/tab-bar/README.en-US.md
new file mode 100644
index 0000000..f97ee85
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/README.en-US.md
@@ -0,0 +1,31 @@
+:: BASE_DOC ::
+
+## API
+### TabBar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+bordered | Boolean | true | \- | N
+external-classes | Array | - | `['t-class']` | N
+fixed | Boolean | true | \- | N
+safe-area-inset-bottom | Boolean | true | \- | N
+shape | String | normal | options:normal/round | N
+split | Boolean | true | \- | N
+theme | String | normal | options:normal/tag | N
+value | String / Number / Array | null | Typescript:`string \| number \| Array` | N
+default-value | String / Number / Array | undefined | uncontrolled property。Typescript:`string \| number \| Array` | N
+
+### TabBar Events
+
+name | params | description
+-- | -- | --
+change | `(value: string \| number)` | \-
+
+### TabBarItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | - | Typescript:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+icon | String / Slot | - | \- | N
+sub-tab-bar | Array | - | Typescript:`SubTabBarItem[] ` `interface SubTabBarItem { value: string; label: string }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+value | String / Number | - | \- | N
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/README.md b/miniprogram_npm/tdesign-miniprogram/tab-bar/README.md
new file mode 100644
index 0000000..69aa9f3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/README.md
@@ -0,0 +1,81 @@
+---
+title: TabBar 标签栏
+description: 用于在不同功能模块之间进行快速切换,位于页面底部。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tab-bar": "tdesign-miniprogram/tab-bar/tab-bar",
+ "t-tab-bar-item": "tdesign-miniprogram/tab-bar-item/tab-bar-item"
+}
+```
+
+## 代码演示
+
+### 组件类型
+#### 纯文本标签栏
+
+{{ text-only }}
+
+#### 图标加文字标签栏
+
+{{ base }}
+
+#### 纯图标标签栏
+
+{{ text-only }}
+
+#### 双层级纯文本标签栏
+
+{{ sub }}
+
+### 组件样式
+
+#### 弱选中标签栏
+
+{{ badge }}
+
+#### 悬浮胶囊标签栏
+
+{{ round }}
+
+#### 自定义主题
+
+{{ custom }}
+
+## API
+### TabBar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+bordered | Boolean | true | 是否显示外边框 | N
+external-classes | Array | - | 组件类名,用于设置外层元素类名。`['t-class']` | N
+fixed | Boolean | true | 是否固定在底部 | N
+safe-area-inset-bottom | Boolean | true | 是否为 iPhoneX 留出底部安全距离 | N
+shape | String | normal | 标签栏的形状。可选项:normal/round | N
+split | Boolean | true | 是否需要分割线 | N
+theme | String | normal | 选项风格。可选项:normal/tag | N
+value | String / Number / Array | null | 当前选中标签的索引。TS 类型:`string \| number \| Array` | N
+default-value | String / Number / Array | undefined | 当前选中标签的索引。非受控属性。TS 类型:`string \| number \| Array` | N
+
+### TabBar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: string \| number)` | 选中标签切换时触发
+
+### TabBarItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | - | 图标右上角提示信息。TS 类型:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+icon | String / Object / Slot | - | 图标名称。传入对象时透传至 Icon 组件 | N
+sub-tab-bar | Array | - | 二级菜单。TS 类型:`SubTabBarItem[] ` `interface SubTabBarItem { value: string; label: string }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+value | String / Number | - | 标识符 | N
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/props.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-bar/props.d.ts
new file mode 100644
index 0000000..338c35e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabBarProps } from './type';
+declare const props: TdTabBarProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/props.js b/miniprogram_npm/tdesign-miniprogram/tab-bar/props.js
new file mode 100644
index 0000000..85d7f7f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/props.js
@@ -0,0 +1,38 @@
+const props = {
+ bordered: {
+ type: Boolean,
+ value: true,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ fixed: {
+ type: Boolean,
+ value: true,
+ },
+ safeAreaInsetBottom: {
+ type: Boolean,
+ value: true,
+ },
+ shape: {
+ type: String,
+ value: 'normal',
+ },
+ split: {
+ type: Boolean,
+ value: true,
+ },
+ theme: {
+ type: String,
+ value: 'normal',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.d.ts
new file mode 100644
index 0000000..13e2da6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Tabbar extends SuperComponent {
+ relations: RelationsOptions;
+ externalClasses: string[];
+ backupValue: number;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ properties: import("./type").TdTabBarProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ showChildren(): void;
+ updateChildren(): void;
+ updateValue(value: any): void;
+ changeOtherSpread(value: any): void;
+ initName(): any;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.js b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.js
new file mode 100644
index 0000000..0d449e2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.js
@@ -0,0 +1,78 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const classPrefix = `${prefix}-tab-bar`;
+let Tabbar = class Tabbar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.relations = {
+ '../tab-bar-item/tab-bar-item': {
+ type: 'descendant',
+ },
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.backupValue = -1;
+ this.data = {
+ prefix,
+ classPrefix,
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value() {
+ this.updateChildren();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.showChildren();
+ },
+ };
+ this.methods = {
+ showChildren() {
+ const { value } = this.data;
+ this.$children.forEach((child) => {
+ if (child.properties.value === value) {
+ child.showSpread();
+ child.setData({ crowded: this.$children > 3 });
+ }
+ });
+ },
+ updateChildren() {
+ const { value } = this.data;
+ this.$children.forEach((child) => {
+ child.checkActive(value);
+ });
+ },
+ updateValue(value) {
+ this._trigger('change', { value });
+ },
+ changeOtherSpread(value) {
+ this.$children.forEach((child) => {
+ if (child.properties.value !== value) {
+ child.closeSpread();
+ }
+ });
+ },
+ initName() {
+ return (this.backupValue += 1);
+ },
+ };
+ }
+};
+Tabbar = __decorate([
+ wxComponent()
+], Tabbar);
+export default Tabbar;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.json b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.wxml b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.wxml
new file mode 100644
index 0000000..64e2043
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.wxml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.wxss b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.wxss
new file mode 100644
index 0000000..4c44250
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/tab-bar.wxss
@@ -0,0 +1,72 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tab-bar {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+ position: relative;
+ font-size: 16px;
+ background-color: var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ box-sizing: border-box;
+}
+.t-tab-bar--normal.t-tab-bar--border::before {
+ z-index: 1;
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ top: 0;
+ border-top: 1px solid var(--td-tab-bar-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+}
+.t-tab-bar--fixed {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+.t-tab-bar--normal.t-tab-bar--safe {
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+}
+.t-tab-bar--round {
+ margin-left: 32rpx;
+ margin-right: 32rpx;
+ border-radius: 999px;
+ box-shadow: var(--td-tab-bar-round-shadow, var(--td-shadow-3, 0 6px 30px 5px rgba(0, 0, 0, 0.05), 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 8px 10px -5px rgba(0, 0, 0, 0.08)));
+}
+.t-tab-bar--fixed.t-tab-bar--round.t-tab-bar--safe {
+ bottom: constant(safe-area-inset-bottom);
+ bottom: env(safe-area-inset-bottom);
+}
+.t-tab-bar--fixed.t-tab-bar--round.t-tab-bar--safe {
+ bottom: constant(safe-area-inset-bottom);
+ bottom: env(safe-area-inset-bottom);
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/type.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-bar/type.d.ts
new file mode 100644
index 0000000..39e05ee
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/type.d.ts
@@ -0,0 +1,42 @@
+export interface TdTabBarProps {
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ safeAreaInsetBottom?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'normal' | 'round';
+ };
+ split?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'normal' | 'tag';
+ };
+ value?: {
+ type: null;
+ value?: string | number | Array;
+ };
+ defaultValue?: {
+ type: null;
+ value?: string | number | Array;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-bar/type.js b/miniprogram_npm/tdesign-miniprogram/tab-bar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-bar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/props.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-panel/props.d.ts
new file mode 100644
index 0000000..9329be0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabPanelProps } from './type';
+declare const props: TdTabPanelProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/props.js b/miniprogram_npm/tdesign-miniprogram/tab-panel/props.js
new file mode 100644
index 0000000..b9e29e0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/props.js
@@ -0,0 +1,28 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ value: null,
+ },
+ destroyOnHide: {
+ type: Boolean,
+ value: true,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ panel: {
+ type: String,
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.d.ts
new file mode 100644
index 0000000..789414c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class TabPanel extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdTabPanelProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ active: boolean;
+ hide: boolean;
+ id: string;
+ };
+ setId(id: any): void;
+ observers: {
+ 'label, badgeProps, disabled, icon, panel, value'(): void;
+ };
+ getComputedName(): string;
+ update(): void;
+ render(active: Boolean, parent: any): void;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.js b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.js
new file mode 100644
index 0000000..11bedd8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.js
@@ -0,0 +1,61 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-tab-panel`;
+let TabPanel = class TabPanel extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.relations = {
+ '../tabs/tabs': {
+ type: 'ancestor',
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ active: false,
+ hide: true,
+ id: '',
+ };
+ this.observers = {
+ 'label, badgeProps, disabled, icon, panel, value'() {
+ this.update();
+ },
+ };
+ }
+ setId(id) {
+ this.setData({ id });
+ }
+ getComputedName() {
+ if (this.properties.value != null) {
+ return `${this.properties.value}`;
+ }
+ return `${this.index}`;
+ }
+ update() {
+ var _a;
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.updateTabs();
+ }
+ render(active, parent) {
+ this.setData({
+ active,
+ hide: !parent.data.animation && !active,
+ });
+ }
+};
+TabPanel = __decorate([
+ wxComponent()
+], TabPanel);
+export default TabPanel;
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.json b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.wxml b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.wxml
new file mode 100644
index 0000000..7bcb902
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.wxml
@@ -0,0 +1,12 @@
+
+
+
+ {{panel}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.wxss b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.wxss
new file mode 100644
index 0000000..65ceb3e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/tab-panel.wxss
@@ -0,0 +1,33 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tab-panel {
+ flex-shrink: 0;
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/type.d.ts b/miniprogram_npm/tdesign-miniprogram/tab-panel/type.d.ts
new file mode 100644
index 0000000..cc98410
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/type.d.ts
@@ -0,0 +1,35 @@
+import { TabValue } from '../tabs/index';
+export interface TdTabPanelProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ destroyOnHide?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ panel?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: TabValue;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tab-panel/type.js b/miniprogram_npm/tdesign-miniprogram/tab-panel/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tab-panel/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/tabs/README.en-US.md
new file mode 100644
index 0000000..32aa3a4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/README.en-US.md
@@ -0,0 +1,37 @@
+:: BASE_DOC ::
+
+## API
+### Tabs Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+animation | Object | - | Typescript:`TabAnimation` `type TabAnimation = { duration: number } & Record`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+external-classes | Array | - | `['t-class', 't-class-item', 't-class-active', 't-class-track']` | N
+show-bottom-line | Boolean | true | \- | N
+space-evenly | Boolean | true | \- | N
+sticky | Boolean | false | \- | N
+sticky-props | Object | - | Typescript:`StickyProps`,[Sticky API Documents](./sticky?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+swipeable | Boolean | true | \- | N
+theme | String | line | options:line/tag/card | N
+value | String / Number | - | Typescript:`TabValue` `type TabValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+default-value | String / Number | undefined | uncontrolled property。Typescript:`TabValue` `type TabValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+
+### Tabs Events
+
+name | params | description
+-- | -- | --
+change | `(value: TabValue, label: string)` | \-
+click | `(value: TabValue, label: string)` | \-
+scroll | `(scrollTop: number, isFixed: boolean)` | \-
+
+### TabPanel Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | null | \- | N
+destroy-on-hide | Boolean | true | \- | N
+disabled | Boolean | false | \- | N
+icon | String / Object | - | `1.0.0-rc.1` | N
+label | String | - | \- | N
+panel | String / Slot | - | \- | N
+value | String / Number | - | Typescript:`TabValue`,[Tabs API Documents](./tabs?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-panel/type.ts) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/README.md b/miniprogram_npm/tdesign-miniprogram/tabs/README.md
new file mode 100644
index 0000000..6176aea
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/README.md
@@ -0,0 +1,144 @@
+---
+title: Tabs 选项卡
+description: 用于内容分类后的展示切换。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tabs": "tdesign-miniprogram/tabs/tabs",
+ "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
+}
+```
+
+## 代码演示
+
+### 基础选项卡
+
+{{ base }}
+
+### 等距选项卡
+
+{{ scroll }}
+
+### 带图标选项卡
+
+{{ with-icon }}
+
+### 带徽章选项卡
+
+{{ with-badge }}
+
+### 带内容区选项卡
+
+{{ with-content }}
+
+### 选项卡状态
+
+{{ status }}
+
+### 选项卡尺寸
+
+{{ size }}
+
+### 选项卡样式
+
+使用 theme 属性可以变换风格,支持 line = 线条(默认);tag = 标签;card = 卡片
+
+{{ theme }}
+
+
+
+
+
+
+### 受控用法
+
+```html
+
+ 标签一内容
+ 标签二内容
+
+```
+
+```js
+Page({
+ data: {
+ value: '0',
+ },
+ onTabsChange(e) {
+ this.setData({ value: e.detail.value })
+ },
+});
+```
+
+### 与 Popup 使用
+
+```html
+
+
+ 标签一内容
+ 标签二内容
+ 标签三内容
+
+
+```
+
+```js
+Page({
+ data: {
+ visible: false
+ },
+ showPopup() {
+ this.setData({
+ visible: true
+ }, () => {
+ const tabs = this.selectComponent('tabs');
+
+ tabs.setTrack(); // 这一步很重要,因为小程序的无法正确执行生命周期,所以需要手动设置下 tabs 的滑块
+ })
+ }
+})
+```
+
+## API
+### Tabs Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+animation | Object | - | 动画效果设置。其中 duration 表示动画时长。(单位秒)TS 类型:`TabAnimation` `type TabAnimation = { duration: number } & Record`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、选项卡单项、选项卡激活态、滚动条样式类名 等类名。`['t-class', 't-class-item', 't-class-active', 't-class-track']` | N
+show-bottom-line | Boolean | true | 是否展示底部激活线条 | N
+space-evenly | Boolean | true | 选项卡头部空间是否均分 | N
+sticky | Boolean | false | 是否开启粘性布局 | N
+sticky-props | Object | - | 透传至 Sticky 组件。TS 类型:`StickyProps`,[Sticky API Documents](./sticky?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+swipeable | Boolean | true | 是否可以滑动切换 | N
+theme | String | line | 标签的样式。可选项:line/tag/card | N
+value | String / Number | - | 激活的选项卡值。TS 类型:`TabValue` `type TabValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+default-value | String / Number | undefined | 激活的选项卡值。非受控属性。TS 类型:`TabValue` `type TabValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+
+### Tabs Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: TabValue, label: string)` | 激活的选项卡发生变化时触发
+click | `(value: TabValue, label: string)` | 点击选项卡时触发
+scroll | `(scrollTop: number, isFixed: boolean)` | 页面滚动时触发
+
+### TabPanel Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | null | 透传至 Badge 组件 | N
+destroy-on-hide | Boolean | true | 【实现有误,暂不支持】选项卡内容隐藏时是否销毁 | N
+disabled | Boolean | false | 是否禁用当前选项卡 | N
+icon | String / Object | - | `1.0.0-rc.1`。图标,传对象则透传至 Icon | N
+label | String | - | 选项卡名称 | N
+panel | String / Slot | - | 用于自定义选项卡面板内容 | N
+value | String / Number | - | 选项卡的值,唯一标识。TS 类型:`TabValue`,[Tabs API Documents](./tabs?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-panel/type.ts) | N
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/index.d.ts b/miniprogram_npm/tdesign-miniprogram/tabs/index.d.ts
new file mode 100644
index 0000000..2f91d15
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/index.d.ts
@@ -0,0 +1,3 @@
+export * from './tabs';
+export * from './type';
+export * from './props';
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/index.js b/miniprogram_npm/tdesign-miniprogram/tabs/index.js
new file mode 100644
index 0000000..2f91d15
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/index.js
@@ -0,0 +1,3 @@
+export * from './tabs';
+export * from './type';
+export * from './props';
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/props.d.ts b/miniprogram_npm/tdesign-miniprogram/tabs/props.d.ts
new file mode 100644
index 0000000..215fa49
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabsProps } from './type';
+declare const props: TdTabsProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/props.js b/miniprogram_npm/tdesign-miniprogram/tabs/props.js
new file mode 100644
index 0000000..9d515f7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/props.js
@@ -0,0 +1,39 @@
+const props = {
+ animation: {
+ type: Object,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ showBottomLine: {
+ type: Boolean,
+ value: true,
+ },
+ spaceEvenly: {
+ type: Boolean,
+ value: true,
+ },
+ sticky: {
+ type: Boolean,
+ value: false,
+ },
+ stickyProps: {
+ type: Object,
+ },
+ swipeable: {
+ type: Boolean,
+ value: true,
+ },
+ theme: {
+ type: String,
+ value: 'line',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.d.ts b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.d.ts
new file mode 100644
index 0000000..65f61ae
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.d.ts
@@ -0,0 +1,50 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import { TdTabsProps } from './type';
+export interface TabsProps extends TdTabsProps {
+}
+export default class Tabs extends SuperComponent {
+ behaviors: string[];
+ externalClasses: string[];
+ relations: RelationsOptions;
+ properties: TdTabsProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(name: any): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ tabs: any[];
+ currentIndex: number;
+ trackStyle: string;
+ isScrollX: boolean;
+ direction: string;
+ offset: number;
+ tabID: string;
+ placement: string;
+ };
+ lifetimes: {
+ created(): void;
+ attached(): void;
+ };
+ initChildId(): void;
+ methods: {
+ updateTabs(cb: any): void;
+ setCurrentIndexByName(name: any): void;
+ setCurrentIndex(index: number): void;
+ getCurrentName(): any;
+ calcScrollOffset(containerWidth: number, targetLeft: number, targetWidth: number, offset: number): number;
+ getTrackSize(): Promise;
+ setTrack(): Promise;
+ onTabTap(event: any): void;
+ onTouchStart(event: any): void;
+ onTouchMove(event: any): void;
+ onTouchEnd(): void;
+ onTouchScroll(event: WechatMiniprogram.CustomEvent): void;
+ changeIndex(index: any): void;
+ getAvailableTabIndex(deltaX: number): any;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js
new file mode 100644
index 0000000..76f51c9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.js
@@ -0,0 +1,260 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import touch from '../mixins/touch';
+import { getRect, uniqueFactory } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-tabs`;
+const getUniqueID = uniqueFactory('tabs');
+let Tabs = class Tabs extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.behaviors = [touch];
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-item`, `${prefix}-class-active`, `${prefix}-class-track`];
+ this.relations = {
+ '../tab-panel/tab-panel': {
+ type: 'descendant',
+ linked(target) {
+ this.children.push(target);
+ this.initChildId();
+ target.index = this.children.length - 1;
+ this.updateTabs();
+ },
+ unlinked(target) {
+ this.children = this.children.filter((item) => item.index !== target.index);
+ this.updateTabs(() => this.setTrack());
+ this.initChildId();
+ },
+ },
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(name) {
+ if (name !== this.getCurrentName()) {
+ this.setCurrentIndexByName(name);
+ }
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ tabs: [],
+ currentIndex: -1,
+ trackStyle: '',
+ isScrollX: true,
+ direction: 'X',
+ offset: 0,
+ tabID: '',
+ placement: 'top',
+ };
+ this.lifetimes = {
+ created() {
+ this.children = this.children || [];
+ },
+ attached() {
+ wx.nextTick(() => {
+ this.setTrack();
+ });
+ getRect(this, `.${name}`).then((rect) => {
+ this.containerWidth = rect.width;
+ });
+ this.setData({
+ tabID: getUniqueID(),
+ });
+ },
+ };
+ this.methods = {
+ updateTabs(cb) {
+ const { children } = this;
+ const tabs = children.map((child) => child.data);
+ tabs.forEach((item) => {
+ if (typeof item.icon === 'string') {
+ item.icon = { name: item.icon };
+ }
+ });
+ this.setData({ tabs }, cb);
+ this.setCurrentIndexByName(this.properties.value);
+ },
+ setCurrentIndexByName(name) {
+ const { children } = this;
+ const index = children.findIndex((child) => child.getComputedName() === `${name}`);
+ if (index > -1) {
+ this.setCurrentIndex(index);
+ }
+ },
+ setCurrentIndex(index) {
+ if (index <= -1 || index >= this.children.length)
+ return;
+ this.children.forEach((child, idx) => {
+ const isActive = index === idx;
+ if (isActive !== child.data.active) {
+ child.render(isActive, this);
+ }
+ });
+ if (this.data.currentIndex === index)
+ return;
+ this.setData({
+ currentIndex: index,
+ });
+ this.setTrack();
+ },
+ getCurrentName() {
+ if (this.children) {
+ const activeTab = this.children[this.data.currentIndex];
+ if (activeTab) {
+ return activeTab.getComputedName();
+ }
+ }
+ },
+ calcScrollOffset(containerWidth, targetLeft, targetWidth, offset) {
+ return offset + targetLeft - (1 / 2) * containerWidth + targetWidth / 2;
+ },
+ getTrackSize() {
+ return new Promise((resolve, reject) => {
+ if (this.trackWidth) {
+ resolve(this.trackWidth);
+ return;
+ }
+ getRect(this, `.${prefix}-tabs__track`)
+ .then((res) => {
+ if (res) {
+ this.trackWidth = res.width;
+ resolve(this.trackWidth);
+ }
+ })
+ .catch(reject);
+ });
+ },
+ setTrack() {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (!this.properties.showBottomLine)
+ return;
+ const { children } = this;
+ if (!children)
+ return;
+ const { currentIndex, isScrollX, direction } = this.data;
+ if (currentIndex <= -1)
+ return;
+ try {
+ const res = yield getRect(this, `.${prefix}-tabs__item`, true);
+ const rect = res[currentIndex];
+ if (!rect)
+ return;
+ let count = 0;
+ let distance = 0;
+ let totalSize = 0;
+ res.forEach((item) => {
+ if (count < currentIndex) {
+ distance += isScrollX ? item.width : item.height;
+ count += 1;
+ }
+ totalSize += isScrollX ? item.width : item.height;
+ });
+ if (this.containerWidth) {
+ const offset = this.calcScrollOffset(this.containerWidth, rect.left, rect.width, this.data.offset);
+ const maxOffset = totalSize - this.containerWidth;
+ this.setData({
+ offset: Math.min(Math.max(offset, 0), maxOffset),
+ });
+ }
+ if (isScrollX && this.data.theme === 'line') {
+ const trackLineWidth = yield this.getTrackSize();
+ distance += (rect.width - trackLineWidth) / 2;
+ }
+ let trackStyle = `-webkit-transform: translate${direction}(${distance}px);
+ transform: translate${direction}(${distance}px);
+ `;
+ if (!isScrollX) {
+ trackStyle += `height: ${rect.height}px;`;
+ }
+ this.setData({
+ trackStyle,
+ });
+ }
+ catch (err) {
+ this.triggerEvent('error', err);
+ }
+ });
+ },
+ onTabTap(event) {
+ const { index } = event.currentTarget.dataset;
+ this.changeIndex(index);
+ },
+ onTouchStart(event) {
+ if (!this.properties.swipeable)
+ return;
+ this.touchStart(event);
+ },
+ onTouchMove(event) {
+ if (!this.properties.swipeable)
+ return;
+ this.touchMove(event);
+ },
+ onTouchEnd() {
+ if (!this.properties.swipeable)
+ return;
+ const { direction, deltaX, offsetX } = this;
+ const minSwipeDistance = 50;
+ if (direction === 'horizontal' && offsetX >= minSwipeDistance) {
+ const index = this.getAvailableTabIndex(deltaX);
+ if (index !== -1) {
+ this.changeIndex(index);
+ }
+ }
+ },
+ onTouchScroll(event) {
+ this._trigger('scroll', event.detail);
+ },
+ changeIndex(index) {
+ const currentTab = this.data.tabs[index];
+ const { value, label } = currentTab;
+ if (!(currentTab === null || currentTab === void 0 ? void 0 : currentTab.disabled) && index !== this.data.currentIndex) {
+ this._trigger('change', { value, label });
+ }
+ this._trigger('click', { value, label });
+ },
+ getAvailableTabIndex(deltaX) {
+ const step = deltaX > 0 ? -1 : 1;
+ const { currentIndex, tabs } = this.data;
+ const len = tabs.length;
+ for (let i = step; currentIndex + step >= 0 && currentIndex + step < len; i += step) {
+ const newIndex = currentIndex + i;
+ if (newIndex >= 0 && newIndex < len && tabs[newIndex] && !tabs[newIndex].disabled) {
+ return newIndex;
+ }
+ }
+ return -1;
+ },
+ };
+ }
+ initChildId() {
+ this.children.forEach((item, index) => {
+ item.setId(`${this.data.tabID}_panel_${index}`);
+ });
+ }
+};
+Tabs = __decorate([
+ wxComponent()
+], Tabs);
+export default Tabs;
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.json b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.json
new file mode 100644
index 0000000..0570f9a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-sticky": "../sticky/sticky",
+ "t-badge": "../badge/badge",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxml b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxml
new file mode 100644
index 0000000..33479e2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxs b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxs
new file mode 100644
index 0000000..cb51149
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxs
@@ -0,0 +1,20 @@
+/* eslint-disable */
+
+function animate(options) {
+ var result = [];
+
+ if (options.duration) {
+ result.push('transition-duration: ' + options.duration + 's');
+ result.push(
+ options.direction === 'Y'
+ ? ';transform: translate3d( 0,' + -100 * options.currentIndex + '%, 0)'
+ : ';transform: translate3d( ' + -100 * options.currentIndex + '%,0, 0)',
+ );
+ }
+
+ return result.join(';');
+}
+
+module.exports = {
+ animate: animate,
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxss b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxss
new file mode 100644
index 0000000..61458e2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxss
@@ -0,0 +1,217 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tabs {
+ position: relative;
+ font-size: var(--tab-font-size, 28rpx);
+ background: var(--td-tab-nav-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tabs__wrapper {
+ display: flex;
+ overflow: hidden;
+ background: var(--td-tab-nav-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tabs__wrapper--card {
+ background: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+ --td-tab-border-color: transparent;
+}
+.t-tabs__item {
+ position: relative;
+ display: flex;
+ flex: none;
+ align-items: center;
+ justify-content: center;
+ font-weight: 400;
+ color: var(--td-tab-item-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ padding: 0 32rpx;
+ box-sizing: border-box;
+ white-space: nowrap;
+ overflow: hidden;
+}
+.t-tabs__item--active {
+ font-weight: 600;
+ color: var(--td-tab-item-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tabs__item--disabled {
+ color: var(--td-tab-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-tabs__item--evenly {
+ flex: 1;
+}
+.t-tabs__item--top,
+.t-tabs__item--bottom {
+ height: var(--td-tab-item-height, 96rpx);
+}
+.t-tabs__item-inner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-tabs__item-inner--tag {
+ width: 100%;
+ text-align: center;
+ padding: 0 32rpx;
+ line-height: var(--td-tab-item-tag-height, 64rpx);
+ border-radius: calc(var(--td-tab-item-tag-height, 64rpx) / 2);
+ background-color: var(--td-tab-item-tag-bg, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tabs__item-inner--active.t-tabs__item-inner--tag {
+ background-color: var(--td-tab-item-tag-active-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tabs__item--tag:not(.t-tabs__item--evenly) {
+ padding: 0 8rpx;
+}
+.t-tabs__item--tag:not(.t-tabs__item--evenly):first-child {
+ margin-left: 16rpx;
+}
+.t-tabs__item--tag:not(.t-tabs__item--evenly):last-child {
+ padding-right: 24rpx;
+}
+.t-tabs__item--tag {
+ padding: 0 16rpx;
+}
+.t-tabs__item--card.t-tabs__item--active {
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ border-radius: 18rpx 18rpx 0 0;
+}
+.t-tabs__item--card.t-tabs__item--active:first-child {
+ border-top-left-radius: 0;
+}
+.t-tabs__item--card.t-tabs__item--active:last-child {
+ border-top-right-radius: 0;
+}
+.t-tabs__item--card.t-tabs__item--pre {
+ border-bottom-right-radius: 18rpx;
+}
+.t-tabs__item-prefix,
+.t-tabs__item-suffix {
+ position: absolute;
+ bottom: 0;
+ width: 36rpx;
+ height: 36rpx;
+ background: #fff;
+}
+.t-tabs__item-prefix::after,
+.t-tabs__item-suffix::after {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 100%;
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+}
+.t-tabs__item-prefix {
+ right: 0;
+}
+.t-tabs__item-prefix::after {
+ border-bottom-right-radius: 18rpx;
+}
+.t-tabs__item-suffix {
+ left: 0;
+}
+.t-tabs__item-suffix::after {
+ border-bottom-left-radius: 18rpx;
+}
+.t-tabs__icon {
+ font-size: var(--td-tab-icon-size, 36rpx);
+ margin-right: 4rpx;
+}
+.t-tabs__content {
+ overflow: hidden;
+}
+.t-tabs__nav {
+ position: relative;
+ user-select: none;
+ width: 100%;
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+}
+.t-tabs__track {
+ position: absolute;
+ font-weight: 600;
+ z-index: 1;
+ transition-duration: 0.3s;
+ background-color: var(--td-tab-track-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tabs__track--top,
+.t-tabs__track--bottom {
+ left: 0;
+ bottom: 1rpx;
+ width: var(--td-tab-track-width, 32rpx);
+ height: var(--td-tab-track-thickness, 6rpx);
+ border-radius: var(--td-tab-track-radius, 8rpx);
+}
+.t-tabs__scroll::-webkit-scrollbar {
+ display: none;
+}
+.t-tabs__scroll--top,
+.t-tabs__scroll--bottom {
+ height: var(--td-tab-item-height, 96rpx);
+ position: relative;
+}
+.t-tabs__scroll--top {
+ position: relative;
+}
+.t-tabs__scroll--top::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-tab-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-tabs__scroll--top::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-tabs__content-inner {
+ display: block;
+}
+.t-tabs--top,
+.t-tabs--bottom {
+ flex-wrap: wrap;
+}
+.t-tabs--top .t-tabs__content,
+.t-tabs--bottom .t-tabs__content {
+ width: 100%;
+}
+.t-tabs--top .t-tabs__content--animated .t-tabs__content-inner,
+.t-tabs--bottom .t-tabs__content--animated .t-tabs__content-inner {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ will-change: left;
+ transition-property: transform;
+}
+.t-tabs--bottom {
+ flex-direction: column-reverse;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/type.d.ts b/miniprogram_npm/tdesign-miniprogram/tabs/type.d.ts
new file mode 100644
index 0000000..d3343bb
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/type.d.ts
@@ -0,0 +1,51 @@
+import { StickyProps } from '../sticky/index';
+export interface TdTabsProps {
+ animation?: {
+ type: ObjectConstructor;
+ value?: TabAnimation;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-item', 't-class-active', 't-class-track'];
+ };
+ showBottomLine?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ spaceEvenly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ sticky?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ stickyProps?: {
+ type: ObjectConstructor;
+ value?: StickyProps;
+ };
+ swipeable?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'line' | 'tag' | 'card';
+ };
+ value?: {
+ type: null;
+ value?: TabValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: TabValue;
+ };
+}
+export declare type TabAnimation = {
+ duration: number;
+} & Record;
+export declare type TabValue = string | number;
diff --git a/miniprogram_npm/tdesign-miniprogram/tabs/type.js b/miniprogram_npm/tdesign-miniprogram/tabs/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tabs/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/tag/README.en-US.md
new file mode 100644
index 0000000..99fa354
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/README.en-US.md
@@ -0,0 +1,45 @@
+:: BASE_DOC ::
+
+## API
+### Tag Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+closable | Boolean | false | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class']` | N
+icon | String / Object / Slot | - | \- | N
+max-width | String / Number | - | \- | N
+shape | String | square | options:square/round/mark | N
+size | String | medium | options:small/medium/large/extra-large。Typescript:`SizeEnum` | N
+theme | String | default | options:default/primary/warning/danger/success | N
+variant | String | dark | options:dark/light/outline/light-outline | N
+
+### Tag Events
+
+name | params | description
+-- | -- | --
+click | - | \-
+close | - | \-
+
+### CheckTag Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+checked | Boolean | undefined | \- | N
+default-checked | Boolean | undefined | uncontrolled property | N
+closable | Boolean | false | `deprecated` | N
+content | String / Number / Array / Slot | - | Typescript:`string \| number \| string[]` | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class']` | N
+icon | String / Object / Slot | - | \- | N
+shape | String | square | `deprecated`。options:square/round/mark | N
+size | String | medium | options:small/medium/large。Typescript:`SizeEnum` | N
+variant | String | dark | `0.26.0`。options:dark/light/outline/light-outline | N
+
+### CheckTag Events
+
+name | params | description
+-- | -- | --
+change | `(checked: boolean)` | \-
+click | - | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/README.md b/miniprogram_npm/tdesign-miniprogram/tag/README.md
new file mode 100644
index 0000000..fe426df
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/README.md
@@ -0,0 +1,87 @@
+---
+title: Tag 标签
+description: 用于表明主体的类目,属性或状态。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tag": "tdesign-miniprogram/tag/tag",
+ "t-check-tag": "tdesign-miniprogram/check-tag/check-tag"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+{{ type }}
+
+可关闭的标签
+
+{{ closable }}
+
+可点击的标签
+
+{{ checkable }}
+
+### 组件状态
+
+展示型标签
+
+{{ theme }}
+
+### 组件尺寸
+
+{{ size }}
+
+
+## API
+### Tag Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+closable | Boolean | false | 标签是否可关闭 | N
+disabled | Boolean | false | 标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态 | N
+external-classes | Array | - | 组件类名,用于设置 组件外层元素元素类名。`['t-class']` | N
+icon | String / Object / Slot | - | 标签中的图标,可自定义图标呈现 | N
+max-width | String / Number | - | 标签最大宽度,宽度超出后会出现省略号。示例:'50px' / 80 | N
+shape | String | square | 标签类型,有三种:方形、圆角方形、标记型。可选项:square/round/mark | N
+size | String | medium | 标签尺寸。可选项:small/medium/large/extra-large。TS 类型:`SizeEnum` | N
+theme | String | default | 组件风格,用于描述组件不同的应用场景。可选项:default/primary/warning/danger/success | N
+variant | String | dark | 标签风格变体。可选项:dark/light/outline/light-outline | N
+
+### Tag Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | - | 点击时触发
+close | - | 如果关闭按钮存在,点击关闭按钮时触发
+
+### CheckTag Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+checked | Boolean | undefined | 标签选中的状态,默认风格(theme=default)才有选中态 | N
+default-checked | Boolean | undefined | 标签选中的状态,默认风格(theme=default)才有选中态。非受控属性 | N
+closable | Boolean | false | 已废弃。标签是否可关闭 | N
+content | String / Number / Array / Slot | - | 组件子元素;传入数组时:[选中内容,非选中内容]。TS 类型:`string \| number \| string[]` | N
+disabled | Boolean | false | 标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态 | N
+external-classes | Array | - | 组件类名,用于设置 组件外层元素元素类名。`['t-class']` | N
+icon | String / Object / Slot | - | 标签图标 | N
+shape | String | square | 已废弃。标签类型,有三种:方形、圆角方形、标记型。可选项:square/round/mark | N
+size | String | medium | 标签尺寸。可选项:small/medium/large。TS 类型:`SizeEnum` | N
+variant | String | dark | `0.26.0`。标签风格变体。可选项:dark/light/outline/light-outline | N
+
+### CheckTag Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(checked: boolean)` | 状态切换时触发
+click | - | 点击标签时触发
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/props.d.ts b/miniprogram_npm/tdesign-miniprogram/tag/props.d.ts
new file mode 100644
index 0000000..8074655
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTagProps } from './type';
+declare const props: TdTagProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/props.js b/miniprogram_npm/tdesign-miniprogram/tag/props.js
new file mode 100644
index 0000000..39d5453
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/props.js
@@ -0,0 +1,36 @@
+const props = {
+ closable: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ maxWidth: {
+ type: null,
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ variant: {
+ type: String,
+ value: 'dark',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/tag.d.ts b/miniprogram_npm/tdesign-miniprogram/tag/tag.d.ts
new file mode 100644
index 0000000..ca813c5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/tag.d.ts
@@ -0,0 +1,27 @@
+///
+import { SuperComponent } from '../common/src/index';
+export default class Tag extends SuperComponent {
+ data: {
+ prefix: string;
+ classPrefix: string;
+ className: string;
+ tagStyle: string;
+ };
+ properties: import("./type").TdTagProps;
+ externalClasses: string[];
+ options: WechatMiniprogram.Component.ComponentOptions;
+ lifetimes: {
+ attached(): void;
+ };
+ observers: {
+ 'size, shape, theme, variant, closable, disabled'(): void;
+ maxWidth(): void;
+ icon(v: any): void;
+ };
+ methods: {
+ setClass(): void;
+ setTagStyle(): string;
+ handleClick(e: WechatMiniprogram.BaseEvent): void;
+ handleClose(e: WechatMiniprogram.BaseEvent): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/tag.js b/miniprogram_npm/tdesign-miniprogram/tag/tag.js
new file mode 100644
index 0000000..777a81c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/tag.js
@@ -0,0 +1,89 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { classNames, isNumber, calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-tag`;
+let Tag = class Tag extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ className: '',
+ tagStyle: '',
+ };
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ styleIsolation: 'apply-shared',
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ this.setTagStyle();
+ },
+ };
+ this.observers = {
+ 'size, shape, theme, variant, closable, disabled'() {
+ this.setClass();
+ },
+ maxWidth() {
+ this.setTagStyle();
+ },
+ icon(v) {
+ this.setData({
+ _icon: calcIcon(v),
+ });
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { prefix, classPrefix } = this.data;
+ const { size, shape, theme, variant, closable, disabled } = this.properties;
+ const tagClass = [
+ classPrefix,
+ `${classPrefix}--${theme || 'default'}`,
+ `${classPrefix}--${variant}`,
+ closable ? `${classPrefix}--closable ${prefix}-is-closable` : '',
+ disabled ? `${classPrefix}--disabled ${prefix}-is-disabled` : '',
+ `${classPrefix}--${size}`,
+ `${classPrefix}--${shape}`,
+ ];
+ const className = classNames(tagClass);
+ this.setData({
+ className,
+ });
+ },
+ setTagStyle() {
+ const { maxWidth } = this.properties;
+ if (!maxWidth) {
+ return '';
+ }
+ const width = isNumber(maxWidth) ? `${maxWidth}px` : maxWidth;
+ this.setData({ tagStyle: `max-width:${width};` });
+ },
+ handleClick(e) {
+ if (this.data.disabled)
+ return;
+ this.triggerEvent('click', e);
+ },
+ handleClose(e) {
+ if (this.data.disabled)
+ return;
+ this.triggerEvent('close', e);
+ },
+ };
+ }
+};
+Tag = __decorate([
+ wxComponent()
+], Tag);
+export default Tag;
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/tag.json b/miniprogram_npm/tdesign-miniprogram/tag/tag.json
new file mode 100644
index 0000000..fc075a1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/tag.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": ".././icon/icon"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/tag.wxml b/miniprogram_npm/tdesign-miniprogram/tag/tag.wxml
new file mode 100644
index 0000000..f107a8c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/tag.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/tag.wxss b/miniprogram_npm/tdesign-miniprogram/tag/tag.wxss
new file mode 100644
index 0000000..95e7e21
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/tag.wxss
@@ -0,0 +1,242 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tag {
+ display: inline-flex;
+ align-items: center;
+ border: 2rpx solid transparent;
+ box-sizing: border-box;
+ border-radius: var(--td-tag-square-border-radius, 8rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+ user-select: none;
+ vertical-align: middle;
+}
+.t-tag__text {
+ word-wrap: normal;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.t-tag__icon,
+.t-tag__icon-close {
+ display: flex;
+ align-items: center;
+}
+.t-tag__icon-close {
+ color: var(--td-tag-close-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-tag__icon:not(:empty) + .t-tag__text:not(:empty),
+.t-tag__text:not(:empty) + .t-tag__icon-close:not(:empty) {
+ margin-left: 8rpx;
+}
+.t-tag.t-tag--small {
+ height: var(--td-tag-small-height, 40rpx);
+ line-height: var(--td-tag-small-height, 40rpx);
+ padding: 0 var(--td-tag-small-padding, 11rpx);
+ font-size: var(--td-tag-small-font-size, var(--td-font-size, 20rpx));
+}
+.t-tag.t-tag--small .t-icon,
+.t-tag.t-tag--small .t-icon-close {
+ font-size: var(--td-tag-small-icon-size, 24rpx);
+}
+.t-tag.t-tag--small .t-tag__icon:not(:empty) + .t-tag__text:not(:empty),
+.t-tag.t-tag--small .t-tag__text:not(:empty) + .t-tag__icon-close:not(:empty) {
+ margin-left: 4rpx;
+}
+.t-tag.t-tag--medium {
+ height: var(--td-tag-medium-height, 48rpx);
+ line-height: var(--td-tag-medium-height, 48rpx);
+ padding: 0 var(--td-tag-medium-padding, 15rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-tag.t-tag--medium .t-icon,
+.t-tag.t-tag--medium .t-icon-close {
+ font-size: var(--td-tag-medium-icon-size, 28rpx);
+}
+.t-tag.t-tag--large {
+ height: var(--td-tag-large-height, 56rpx);
+ line-height: var(--td-tag-large-height, 56rpx);
+ padding: 0 var(--td-tag-large-padding, 15rpx);
+ font-size: var(--td-tag-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag.t-tag--large .t-icon,
+.t-tag.t-tag--large .t-icon-close {
+ font-size: var(--td-tag-large-icon-size, 32rpx);
+}
+.t-tag.t-tag--extra-large {
+ height: var(--td-tag-extra-large-height, 80rpx);
+ line-height: var(--td-tag-extra-large-height, 80rpx);
+ padding: 0 var(--td-tag-extra-large-padding, 31rpx);
+ font-size: var(--td-tag-extra-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag.t-tag--extra-large .t-icon,
+.t-tag.t-tag--extra-large .t-icon-close {
+ font-size: var(--td-tag-extra-large-icon-size, 32rpx);
+}
+.t-tag.t-tag--square {
+ border-radius: var(--td-tag-square-border-radius, 8rpx);
+}
+.t-tag.t-tag--round {
+ border-radius: var(--td-tag-round-border-radius, 999px);
+}
+.t-tag.t-tag--mark {
+ border-radius: 0 var(--td-tag-mark-border-radius, var(--td-tag-round-border-radius, 999px)) var(--td-tag-mark-border-radius, var(--td-tag-round-border-radius, 999px)) 0;
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-tag--dark.t-tag--primary {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tag--dark.t-tag--success {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-tag--dark.t-tag--warning {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-tag--dark.t-tag--danger {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--primary {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--success {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--warning {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--danger {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light-outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light-outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light-outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light-outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-tag.t-tag--closable.t-tag--disabled {
+ cursor: not-allowed;
+ color: var(--td-tag-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-tag-disabled-background-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+ border-color: var(--td-tag-disabled-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/type.d.ts b/miniprogram_npm/tdesign-miniprogram/tag/type.d.ts
new file mode 100644
index 0000000..c256e91
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/type.d.ts
@@ -0,0 +1,43 @@
+import { SizeEnum } from '../common/common';
+export interface TdTagProps {
+ closable?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ maxWidth?: {
+ type: null;
+ value?: string | number;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'square' | 'round' | 'mark';
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'primary' | 'warning' | 'danger' | 'success';
+ };
+ variant?: {
+ type: StringConstructor;
+ value?: 'dark' | 'light' | 'outline' | 'light-outline';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tag/type.js b/miniprogram_npm/tdesign-miniprogram/tag/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tag/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/textarea/README.en-US.md
new file mode 100644
index 0000000..2e6a5b7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/README.en-US.md
@@ -0,0 +1,32 @@
+:: BASE_DOC ::
+
+## API
+### Textarea Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+adjust-position | Boolean | true | \- | N
+autofocus | Boolean | false | \- | N
+autosize | Boolean | false | \- | N
+confirm-hold | Boolean | false | \- | N
+confirm-type | String | done | options:send/search/next/go/done。Typescript:`'send' \| 'search' \| 'next' \| 'go' \| 'done'` | N
+cursor-spacing | Number | 0 | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-textarea', 't-class-label']` | N
+focus | Boolean | false | \- | N
+label | String / Slot | - | \- | N
+maxcharacter | Number | - | \- | N
+maxlength | Number | - | \- | N
+placeholder | String | undefined | \- | N
+value | String | - | \- | N
+default-value | String | undefined | uncontrolled property | N
+
+### Textarea Events
+
+name | params | description
+-- | -- | --
+blur | `(value: TextareaValue)` | \-
+change | `(value: TextareaValue)` | \-
+enter | `(value: TextareaValue)` | \-
+focus | `(value: TextareaValue)` | \-
+line-change | `(value: TextareaValue)` | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/README.md b/miniprogram_npm/tdesign-miniprogram/textarea/README.md
new file mode 100644
index 0000000..74ad736
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/README.md
@@ -0,0 +1,99 @@
+---
+title: Textarea 多行文本框
+description: 用于多行文本信息输入。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-textarea": "tdesign-miniprogram/textarea/textarea"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础多行文本框
+
+{{ base }}
+
+带标题多行文本框
+
+{{ label }}
+
+自动增高多行文本框
+
+{{ autosize }}
+
+设置最大字符个数
+
+{{ maxlength }}
+
+设置最大字符个数,一个汉字表示两个字符
+
+{{ maxcharacter }}
+
+### 组件状态
+
+禁用多行文本框
+
+{{ disabled }}
+
+### 自定义组件样式
+
+标签外置输入框
+
+{{ custom }}
+
+## 提示
+
+- 如果需要在页面中调整 `textarea` 中 `placeholder` 样式,请使用名称为`t-textarea__placeholder`的Class选择器,直接覆盖组件内部样式(注意权重)。
+
+## API
+### Textarea Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+adjust-position | Boolean | true | 键盘弹起时,是否自动上推页面 | N
+autofocus | Boolean | false | 自动聚焦,拉起键盘 | N
+autosize | Boolean | false | 是否自动增高,值为 autosize 时,style.height 不生效 | N
+confirm-hold | Boolean | false | 点击键盘右下角按钮时是否保持键盘不收起点 | N
+confirm-type | String | done | 设置键盘右下角按钮的文字,仅在 type='text'时生效。可选项:send/search/next/go/done。TS 类型:`'return' \| 'send' \| 'search' \| 'next' \| 'go' \| 'done'` | N
+cursor-spacing | Number | 0 | 指定光标与键盘的距离。取textarea距离底部的距离和cursor-spacing指定的距离的最小值作为光标与键盘的距离 | N
+disabled | Boolean | false | 是否禁用文本框 | N
+external-classes | Array | - | 组件类名,分别用于表示组件外层元素、输入框、占位符、标签名等元素类名。`['t-class', 't-class-textarea', 't-class-label, 't-class-indicator]` | N
+focus | Boolean | false | 自动聚焦 | N
+label | String / Slot | - | 左侧文本 | N
+maxcharacter | Number | - | 用户最多可以输入的字符个数,一个中文汉字表示两个字符长度 | N
+maxlength | Number | -1 | 用户最多可以输入的字符个数。默认为 -1,不限制输入长度 | N
+indicator | Boolean | false | 显示文本计数器,如 0/140。当 `maxlength < 0 && maxcharacter < 0` 成立时, indicator无效 | N
+placeholder | String | undefined | 占位符 | N
+placeholderStyle | String | '' | 指定 placeholder 的样式,目前仅支持 color ,font-size和font-weight | N
+value | String | - | 文本框值 | N
+default-value | String | undefined | 文本框值。非受控属性 | N
+fixed | Boolean | false | 如果 textarea 是在一个 `position:fixed` 的区域,需要显示指定属性 fixed 为 true | N
+bordered | Boolean | false | 是否显示外边框 | N
+cursor | Number | -1 | 指定 focus 时的光标位置 | N
+disable-default-padding | Boolean | false | 是否去掉 iOS 下的默认内边距 | N
+show-confirm-bar | Boolean | true | 是否显示键盘上方带有”完成“按钮那一栏 | N
+selection-start | Number | -1 | 光标起始位置,自动聚集时有效,需与 selection-end 搭配使用 | N
+selection-end | Number | -1 | 光标结束位置,自动聚集时有效,需与 selection-start 搭配使用 | N
+hold-keyboard | Boolean | false | focus时,点击页面的时候不收起键盘 | N
+
+### Textarea Events
+
+名称 | 参数 | 描述
+-- | -- | --
+blur | `(value: TextareaValue)` | 失去焦点时触发
+change | `(value: TextareaValue)` | 输入内容变化时触发
+enter | `(value: TextareaValue)` | 点击完成时触发
+focus | `(value: TextareaValue)` | 获得焦点时触发
+line-change | `(value: TextareaValue)` | 行高发生变化时触发
+keyboardheightchange | `(height: number, duration: number)` | 键盘高度发生变化的时候触发此事件
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/props.d.ts b/miniprogram_npm/tdesign-miniprogram/textarea/props.d.ts
new file mode 100644
index 0000000..83213f6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTextareaProps } from './type';
+declare const props: TdTextareaProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/props.js b/miniprogram_npm/tdesign-miniprogram/textarea/props.js
new file mode 100644
index 0000000..448b8df
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/props.js
@@ -0,0 +1,100 @@
+const props = {
+ adjustPosition: {
+ type: Boolean,
+ value: true,
+ },
+ autofocus: {
+ type: Boolean,
+ value: false,
+ },
+ autosize: {
+ type: Boolean,
+ value: false,
+ },
+ confirmHold: {
+ type: Boolean,
+ value: false,
+ },
+ confirmType: {
+ type: String,
+ value: 'return',
+ },
+ cursorSpacing: {
+ type: Number,
+ value: 0,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ focus: {
+ type: Boolean,
+ value: false,
+ },
+ label: {
+ type: String,
+ },
+ fixed: {
+ type: Boolean,
+ value: false,
+ },
+ maxcharacter: {
+ type: Number,
+ },
+ maxlength: {
+ type: Number,
+ value: -1,
+ },
+ placeholder: {
+ type: String,
+ value: undefined,
+ },
+ placeholderStyle: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: String,
+ value: null,
+ },
+ defaultValue: {
+ type: String,
+ value: '',
+ },
+ bordered: {
+ type: Boolean,
+ value: false,
+ },
+ indicator: {
+ type: Boolean,
+ value: false,
+ },
+ cursor: {
+ type: Number,
+ value: -1,
+ },
+ showConfirmBar: {
+ type: Boolean,
+ value: true,
+ },
+ selectionStart: {
+ type: Number,
+ value: -1,
+ },
+ selectionEnd: {
+ type: Number,
+ value: -1,
+ },
+ disableDefaultPadding: {
+ type: Boolean,
+ value: false,
+ },
+ holdKeyboard: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/textarea.d.ts b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.d.ts
new file mode 100644
index 0000000..a3d8ec2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.d.ts
@@ -0,0 +1,34 @@
+import { SuperComponent } from '../common/src/index';
+export default class Textarea extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ behaviors: string[];
+ externalClasses: string[];
+ properties: import("./type").TdTextareaProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ count: number;
+ };
+ observers: {
+ value(val: any): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ updateCount(val: any): void;
+ updateValue(val: any): void;
+ calculateValue(value: any, maxcharacter: any, maxlength: any): {
+ value: any;
+ count: number;
+ };
+ onInput(event: any): void;
+ onFocus(event: any): void;
+ onBlur(event: any): void;
+ onConfirm(event: any): void;
+ onLineChange(event: any): void;
+ onKeyboardHeightChange(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/textarea.js b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.js
new file mode 100644
index 0000000..6dc87dc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getCharacterLength } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-textarea`;
+let Textarea = class Textarea extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.behaviors = ['wx://form-field'];
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-textarea`,
+ `${prefix}-class-label`,
+ `${prefix}-class-indicator`,
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ count: 0,
+ };
+ this.observers = {
+ value(val) {
+ this.updateCount(val);
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ const { value } = this.properties;
+ this.updateValue(value == null ? '' : value);
+ },
+ };
+ this.methods = {
+ updateCount(val) {
+ const { maxcharacter, maxlength } = this.properties;
+ const { count } = this.calculateValue(val, maxcharacter, maxlength);
+ this.setData({
+ count,
+ });
+ },
+ updateValue(val) {
+ const { maxcharacter, maxlength } = this.properties;
+ const { value, count } = this.calculateValue(val, maxcharacter, maxlength);
+ this.setData({
+ value,
+ count,
+ });
+ },
+ calculateValue(value, maxcharacter, maxlength) {
+ if (maxcharacter > 0 && !Number.isNaN(maxcharacter)) {
+ const { length, characters } = getCharacterLength('maxcharacter', value, maxcharacter);
+ return {
+ value: characters,
+ count: length,
+ };
+ }
+ if (maxlength > 0 && !Number.isNaN(maxlength)) {
+ const { length, characters } = getCharacterLength('maxlength', value, maxlength);
+ return {
+ value: characters,
+ count: length,
+ };
+ }
+ return {
+ value,
+ count: value ? String(value).length : 0,
+ };
+ },
+ onInput(event) {
+ const { value } = event.detail;
+ this.updateValue(value);
+ this.triggerEvent('change', { value: this.data.value });
+ },
+ onFocus(event) {
+ this.triggerEvent('focus', Object.assign({}, event.detail));
+ },
+ onBlur(event) {
+ this.triggerEvent('blur', Object.assign({}, event.detail));
+ },
+ onConfirm(event) {
+ this.triggerEvent('enter', Object.assign({}, event.detail));
+ },
+ onLineChange(event) {
+ this.triggerEvent('line-change', Object.assign({}, event.detail));
+ },
+ onKeyboardHeightChange(e) {
+ this.triggerEvent('keyboardheightchange', e.detail);
+ },
+ };
+ }
+};
+Textarea = __decorate([
+ wxComponent()
+], Textarea);
+export default Textarea;
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/textarea.json b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/textarea.wxml b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.wxml
new file mode 100644
index 0000000..1403b3c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.wxml
@@ -0,0 +1,48 @@
+
+
+
+
+ {{ label }}
+
+
+
+
+
+ {{count}} / {{maxcharacter || maxlength}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/textarea.wxss b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.wxss
new file mode 100644
index 0000000..f76799d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/textarea.wxss
@@ -0,0 +1,85 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-textarea {
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ padding: 32rpx 32rpx;
+ background-color: var(--td-textarea-background-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-textarea__label:not(:empty) {
+ font-size: var(--td-font-size-base, 28rpx);
+ color: var(--td-textarea-label-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ flex-shrink: 0;
+ line-height: 44rpx;
+ padding-bottom: var(--td-spacer, 16rpx);
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.t-textarea__wrapper {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ flex: 1 1 auto;
+ overflow: hidden;
+}
+.t-textarea__wrapper-inner {
+ flex: 1 1 auto;
+ box-sizing: border-box;
+ width: inherit;
+ min-width: 0;
+ min-height: 20px;
+ margin: 0;
+ padding: 0;
+ text-align: left;
+ background-color: transparent;
+ border: 0;
+ resize: none;
+ font-size: var(--td-font-size-m, 32rpx);
+ color: var(--td-textarea-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: 48rpx;
+}
+.t-textarea__placeholder {
+ color: var(--td-textarea-placeholder-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-textarea__indicator:not(:empty) {
+ color: var(--td-textarea-indicator-text-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-spacer-1, 24rpx);
+ text-align: right;
+ line-height: 40rpx;
+ padding-top: var(--td-spacer, 16rpx);
+}
+.t-textarea--border {
+ border-radius: var(--td-textarea-border-radius, var(--td-radius-default, 12rpx));
+ border: 2rpx solid var(--td-textarea-border-color, #dcdcdc);
+}
+.t-textarea .t-is-disabled {
+ color: var(--td-textarea-disabled-text-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/type.d.ts b/miniprogram_npm/tdesign-miniprogram/textarea/type.d.ts
new file mode 100644
index 0000000..3678ee4
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/type.d.ts
@@ -0,0 +1,106 @@
+export interface TdTextareaProps {
+ adjustPosition?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ autofocus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ autosize?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmHold?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmType?: {
+ type: StringConstructor;
+ value?: 'return' | 'send' | 'search' | 'next' | 'go' | 'done';
+ };
+ cursorSpacing?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-textarea', 't-class-label'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ focus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxcharacter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxlength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ placeholder?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placeholderStyle: {
+ type: StringConstructor;
+ value: string;
+ };
+ value?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ indicator?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ cursor: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ showConfirmBar: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ selectionStart?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ selectionEnd?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ disableDefaultPadding?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ holdKeyboard?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/textarea/type.js b/miniprogram_npm/tdesign-miniprogram/textarea/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/textarea/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/toast/README.en-US.md
new file mode 100644
index 0000000..a3f5848
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### Toast Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+direction | String | row | options:row/column | N
+duration | Number | 2000 | \- | N
+external-classes | Array | - | `['t-class']` | N
+icon | String | - | \- | N
+message | String / Slot | - | \- | N
+overlay-props | Object | {} | \- | N
+placement | String | middle | options: top/middle/bottom | N
+prevent-scroll-through | Boolean | false | \- | N
+show-overlay | Boolean | false | \- | N
+theme | String | - | options:loading/success/error | N
+
+### Toast Events
+
+name | params | description
+-- | -- | --
+close | \- | \-
+destory | \- | \-
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/README.md b/miniprogram_npm/tdesign-miniprogram/toast/README.md
new file mode 100644
index 0000000..4fc7cd7
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/README.md
@@ -0,0 +1,55 @@
+---
+title: Toast 轻提示
+description: 用于轻量级反馈或提示,不会打断用户操作。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-toast": "tdesign-miniprogram/toast/toast"
+}
+```
+
+## 代码演示
+
+### 基础提示
+
+{{ base }}
+
+### 组件状态
+
+{{ theme }}
+
+### 显示遮罩
+{{ cover }}
+
+### 手动关闭
+{{ close }}
+## API
+### Toast Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+direction | String | row | 图标排列方式。可选项:row/column | N
+duration | Number | 2000 | 弹窗显示毫秒数 | N
+external-classes | Array | - | 组件类名。`['t-class']` | N
+icon | String / Object / Slot | - | 自定义图标。传入对象则透传至 Icon 组件 | N
+message | String / Slot | - | 弹窗显示文字 | N
+overlay-props | Object | {} | 遮罩层属性,透传至 Overlay | N
+placement | String | middle | 弹窗展示位置。可选项: top/middle/bottom | N
+prevent-scroll-through | Boolean | false | 防止滚动穿透,即不允许点击和滚动 | N
+show-overlay | Boolean | false | 是否显示遮罩层 | N
+theme | String | - | 提示类型。可选项:loading/success/error | N
+
+### Toast Events
+
+名称 | 参数 | 描述
+-- | -- | --
+close | \- | 轻提示隐藏的时候触发
+destory | \- | 轻提示销毁的时候触发
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/index.d.ts b/miniprogram_npm/tdesign-miniprogram/toast/index.d.ts
new file mode 100644
index 0000000..0a196fd
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/index.d.ts
@@ -0,0 +1,22 @@
+///
+///
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+declare type ToastType = 'loading' | 'success' | 'error';
+declare type ToastPositionType = 'top' | 'middle' | 'bottom';
+declare type ToastDirectionType = 'row' | 'column';
+export declare type ToastOptionsType = {
+ context?: Context;
+ selector?: string;
+ icon?: string;
+ message?: string;
+ duration?: number;
+ theme?: ToastType;
+ placement?: ToastPositionType;
+ preventScrollThrough?: boolean;
+ direction?: ToastDirectionType;
+ close?: () => T;
+};
+declare function Toast(options: ToastOptionsType): void;
+declare function showToast(options?: ToastOptionsType): void;
+declare function hideToast(options?: ToastOptionsType): void;
+export { Toast as default, showToast, hideToast };
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/index.js b/miniprogram_npm/tdesign-miniprogram/toast/index.js
new file mode 100644
index 0000000..216f208
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/index.js
@@ -0,0 +1,31 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { getInstance } from '../common/utils';
+function Toast(options) {
+ var _a;
+ const { context, selector = '#t-toast' } = options, Options = __rest(options, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.show(Object.assign(Object.assign({}, Options), { duration: (_a = Options.duration) !== null && _a !== void 0 ? _a : 2000 }));
+ }
+}
+function showToast(options = {}) {
+ Toast(options);
+}
+function hideToast(options = {}) {
+ const { context, selector = '#t-toast' } = options;
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.hide();
+ }
+}
+export { Toast as default, showToast, hideToast };
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/props.d.ts b/miniprogram_npm/tdesign-miniprogram/toast/props.d.ts
new file mode 100644
index 0000000..c6b0f86
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/props.d.ts
@@ -0,0 +1,3 @@
+import { TdToastProps } from './type';
+declare const props: TdToastProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/props.js b/miniprogram_npm/tdesign-miniprogram/toast/props.js
new file mode 100644
index 0000000..a0ade2b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/props.js
@@ -0,0 +1,39 @@
+const props = {
+ direction: {
+ type: String,
+ value: 'row',
+ },
+ duration: {
+ type: Number,
+ value: 2000,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ message: {
+ type: String,
+ },
+ overlayProps: {
+ type: Object,
+ value: {},
+ },
+ placement: {
+ type: String,
+ value: 'middle',
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: false,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/toast.d.ts b/miniprogram_npm/tdesign-miniprogram/toast/toast.d.ts
new file mode 100644
index 0000000..04613f0
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/toast.d.ts
@@ -0,0 +1,26 @@
+///
+import { SuperComponent } from '../common/src/index';
+import { ToastOptionsType } from './index';
+declare type Timer = NodeJS.Timeout | null;
+export default class Toast extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ behaviors: string[];
+ hideTimer: Timer;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ typeMapIcon: string;
+ };
+ properties: import("./type").TdToastProps;
+ detached(): void;
+ methods: {
+ show(options: ToastOptionsType): void;
+ hide(): void;
+ destroyed(): void;
+ loop(): void;
+ };
+}
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/toast.js b/miniprogram_npm/tdesign-miniprogram/toast/toast.js
new file mode 100644
index 0000000..e10d300
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/toast.js
@@ -0,0 +1,81 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import transition from '../mixins/transition';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-toast`;
+let Toast = class Toast extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.behaviors = [transition()];
+ this.hideTimer = null;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ typeMapIcon: '',
+ };
+ this.properties = props;
+ this.methods = {
+ show(options) {
+ if (this.hideTimer)
+ clearTimeout(this.hideTimer);
+ const iconMap = {
+ loading: 'loading',
+ success: 'check-circle',
+ warning: 'error-circle',
+ error: 'close-circle',
+ };
+ const typeMapIcon = iconMap[options === null || options === void 0 ? void 0 : options.theme];
+ const defaultOptions = {
+ direction: props.direction.value,
+ duration: props.duration.value,
+ icon: props.icon.value,
+ message: props.message.value,
+ placement: props.placement.value,
+ preventScrollThrough: props.preventScrollThrough.value,
+ theme: props.theme.value,
+ };
+ const data = Object.assign(Object.assign(Object.assign({}, defaultOptions), options), { visible: true, isLoading: (options === null || options === void 0 ? void 0 : options.theme) === 'loading', _icon: calcIcon(typeMapIcon !== null && typeMapIcon !== void 0 ? typeMapIcon : options.icon) });
+ const { duration } = data;
+ this.setData(data);
+ if (duration > 0) {
+ this.hideTimer = setTimeout(() => {
+ this.hide();
+ }, duration);
+ }
+ },
+ hide() {
+ var _a, _b;
+ this.setData({ visible: false });
+ (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.close) === null || _b === void 0 ? void 0 : _b.call(_a);
+ this.triggerEvent('close');
+ },
+ destroyed() {
+ if (this.hideTimer) {
+ clearTimeout(this.hideTimer);
+ this.hideTimer = null;
+ }
+ this.triggerEvent('destory');
+ },
+ loop() { },
+ };
+ }
+ detached() {
+ this.destroyed();
+ }
+};
+Toast = __decorate([
+ wxComponent()
+], Toast);
+export default Toast;
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/toast.json b/miniprogram_npm/tdesign-miniprogram/toast/toast.json
new file mode 100644
index 0000000..b60dbbc
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/toast.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-loading": "../loading/loading",
+ "t-overlay": "../overlay/overlay"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/toast.wxml b/miniprogram_npm/tdesign-miniprogram/toast/toast.wxml
new file mode 100644
index 0000000..fcf0680
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/toast.wxml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+ {{message}}
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/toast.wxss b/miniprogram_npm/tdesign-miniprogram/toast/toast.wxss
new file mode 100644
index 0000000..cb4c126
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/toast.wxss
@@ -0,0 +1,98 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-toast {
+ position: fixed;
+ right: -50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 12001;
+ opacity: 1;
+ transition: opacity 300ms ease;
+ background-color: var(--td-toast-bg-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ border-radius: var(--td-toast-radius, 8rpx);
+ font-size: 28rpx;
+ color: var(--td-toast-color, var(--td-font-white-1, #ffffff));
+ max-width: var(--td-toast-max-width, 374rpx);
+ width: fit-content;
+ box-sizing: border-box;
+}
+.t-toast--column {
+ padding: 48rpx;
+ min-width: 160rpx;
+ min-height: 160rpx;
+ border-radius: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-toast--loading.t-toast--with-text {
+ min-width: 204rpx;
+ min-height: 204rpx;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+.t-toast__content {
+ align-items: center;
+ line-height: 44rpx;
+}
+.t-toast__content--row {
+ display: flex;
+ text-align: left;
+ padding: 28rpx 44rpx;
+}
+.t-toast__content--column {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+.t-toast__icon--row {
+ display: flex;
+ font-size: var(--td-toast-row-icon-size, 48rpx);
+}
+.t-toast__icon--column {
+ font-size: var(--td-toast-column-icon-size, 64rpx);
+}
+.t-toast__text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -webkit-line-clamp: 3;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ white-space: pre-line;
+}
+.t-toast__text--column:not(:empty):not(:only-child) {
+ margin-top: 16rpx;
+}
+.t-toast__text--row:not(:empty):not(:only-child) {
+ margin-left: 16rpx;
+}
+.t-toast.t-fade-enter,
+.t-toast.t-fade-leave-to {
+ opacity: 0;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/type.d.ts b/miniprogram_npm/tdesign-miniprogram/toast/type.d.ts
new file mode 100644
index 0000000..82eeba6
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/type.d.ts
@@ -0,0 +1,46 @@
+export interface TdToastProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'row' | 'column';
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ icon?: {
+ type: null;
+ value?: string;
+ };
+ message?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ overlayProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'top' | 'middle' | 'bottom';
+ };
+ preventScrollThrough?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'loading' | 'success' | 'error';
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/toast/type.js b/miniprogram_npm/tdesign-miniprogram/toast/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/toast/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/README.md b/miniprogram_npm/tdesign-miniprogram/transition/README.md
new file mode 100644
index 0000000..c262753
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/README.md
@@ -0,0 +1,53 @@
+---
+title: Transition 过渡
+description: 过渡组件。
+spline: message
+isComponent: true
+---
+
+## 引入
+
+### 引入组件
+
+在 `app.json` 或 `page.json` 中引入组件:
+
+```json
+"usingComponents": {
+ "t-transition": "tdesign-miniprogram/transition/transition"
+}
+```
+
+## 用法
+
+### 组件方式
+
+```xml
+
+
+
+
+```
+
+## API
+
+### `` 组件
+
+组件路径:`tdesign-miniprogram/transition/transition`
+
+### 过渡类名
+
+过渡类名指定格式同 vue,enter/enter-to leave/leave-to
+
+#### Props
+
+| 属性 | 值类型 | 默认值 | 说明 |
+| ------------- | ---------------- | -------------- | --------------------------- |
+| name | String | 't-transition' | 过渡类名,类似 vue 过渡类名 |
+| visible | Boolean | false | 是否显示 |
+| customClass | String | false | 自定义容器类名 |
+| destoryOnHide | Boolean | false | 隐藏之后是否渲染 slot 内容 |
+| appear | Boolean | false | 首次出现是否展示动画 |
+| durations | Number / Boolean | | 手动指定过渡时间 |
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/index.d.ts b/miniprogram_npm/tdesign-miniprogram/transition/index.d.ts
new file mode 100644
index 0000000..e5ac999
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/index.d.ts
@@ -0,0 +1,2 @@
+export * from './props';
+export * from './type';
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/index.js b/miniprogram_npm/tdesign-miniprogram/transition/index.js
new file mode 100644
index 0000000..e5ac999
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/index.js
@@ -0,0 +1,2 @@
+export * from './props';
+export * from './type';
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/props.d.ts b/miniprogram_npm/tdesign-miniprogram/transition/props.d.ts
new file mode 100644
index 0000000..0343aed
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTransitionProps } from './type';
+declare const props: TdTransitionProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/props.js b/miniprogram_npm/tdesign-miniprogram/transition/props.js
new file mode 100644
index 0000000..d79a9a9
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/props.js
@@ -0,0 +1,26 @@
+const props = {
+ appear: {
+ type: Boolean,
+ value: false,
+ },
+ customClass: {
+ type: String,
+ value: '',
+ },
+ destoryOnClose: {
+ type: Boolean,
+ value: false,
+ },
+ duration: {
+ type: Number,
+ },
+ name: {
+ type: String,
+ value: 't-transition',
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/transition.d.ts b/miniprogram_npm/tdesign-miniprogram/transition/transition.d.ts
new file mode 100644
index 0000000..e487bd5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/transition.d.ts
@@ -0,0 +1,8 @@
+import { SuperComponent } from '../common/src/index';
+export default class Transition extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ data: {
+ classPrefix: string;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/transition.js b/miniprogram_npm/tdesign-miniprogram/transition/transition.js
new file mode 100644
index 0000000..b24f56a
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/transition.js
@@ -0,0 +1,25 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import transition from '../mixins/transition';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-transition`;
+let Transition = class Transition extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.behaviors = [transition()];
+ this.data = {
+ classPrefix: name,
+ };
+ }
+};
+Transition = __decorate([
+ wxComponent()
+], Transition);
+export default Transition;
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/transition.json b/miniprogram_npm/tdesign-miniprogram/transition/transition.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/transition.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/transition.wxml b/miniprogram_npm/tdesign-miniprogram/transition/transition.wxml
new file mode 100644
index 0000000..d8390d8
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/transition.wxml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/transition.wxss b/miniprogram_npm/tdesign-miniprogram/transition/transition.wxss
new file mode 100644
index 0000000..aa8777f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/transition.wxss
@@ -0,0 +1,14 @@
+.t-transition-enter {
+ opacity: 0;
+}
+.t-transition-enter-to {
+ opacity: 1;
+ transition: opacity 1s;
+}
+.t-transition-leave {
+ opacity: 1;
+}
+.t-transition-leave-to {
+ opacity: 0;
+ transition: opacity 1s;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/type.d.ts b/miniprogram_npm/tdesign-miniprogram/transition/type.d.ts
new file mode 100644
index 0000000..f9996e5
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdTransitionProps {
+ appear?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ customClass?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ destoryOnClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/transition/type.js b/miniprogram_npm/tdesign-miniprogram/transition/type.js
new file mode 100644
index 0000000..95da36c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/transition/type.js
@@ -0,0 +1,2 @@
+;
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/tree-select/README.en-US.md
new file mode 100644
index 0000000..2622720
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/README.en-US.md
@@ -0,0 +1,19 @@
+:: BASE_DOC ::
+
+## API
+### TreeSelect Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+height | String / Number | 336 | \- | N
+keys | Object | - | Typescript:`KeysType` | N
+multiple | Boolean | false | \- | N
+options | Array | [] | Typescript:`Array` | N
+value | String / Number / Array | - | Typescript:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+default-value | String / Number / Array | undefined | uncontrolled property。Typescript:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+
+### TreeSelect Events
+
+name | params | description
+-- | -- | --
+change | `(value: TreeSelectValue, level: TreeLevel) ` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts)。
`type TreeLevel: 0 \| 1 \| 2`
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/README.md b/miniprogram_npm/tdesign-miniprogram/tree-select/README.md
new file mode 100644
index 0000000..0faf9ab
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/README.md
@@ -0,0 +1,59 @@
+---
+title: TreeSelect 树形选择
+description: 适用于选择树形的数据结构。
+spline: form
+isComponent: true
+---
+
+
+
+ 该组件于 0.32.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tree-select": "tdesign-miniprogram/tree-select/tree-select"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+#### 基础树形选择
+
+{{ base }}
+
+#### 多选树形选择
+
+{{ multiple }}
+
+### 组件状态
+
+#### 三级树形选择
+
+{{ normal }}
+
+## API
+### TreeSelect Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+height | String / Number | 336 | 高度,默认单位为 px | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+multiple | Boolean | false | 是否多选 | N
+options | Array | [] | 选项。TS 类型:`Array` | N
+value | String / Number / Array | - | 选中值。TS 类型:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+default-value | String / Number / Array | undefined | 选中值。非受控属性。TS 类型:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+
+### TreeSelect Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: TreeSelectValue, level: TreeLevel) ` | 点击任何节点均会触发;level 代表当前点击的层级,0 代表最左侧,依次递进。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts)。
`type TreeLevel: 0 \| 1 \| 2`
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/index.wxs b/miniprogram_npm/tdesign-miniprogram/tree-select/index.wxs
new file mode 100644
index 0000000..dc28a9d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/index.wxs
@@ -0,0 +1,7 @@
+var getTreeClass = function (level, total) {
+ if (level === 0) return 'right';
+ if (level === 1 && level !== total - 1) return 'middle';
+ return 'left';
+};
+
+module.exports.getTreeClass = getTreeClass;
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/props.d.ts b/miniprogram_npm/tdesign-miniprogram/tree-select/props.d.ts
new file mode 100644
index 0000000..465bea2
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTreeSelectProps } from './type';
+declare const props: TdTreeSelectProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/props.js b/miniprogram_npm/tdesign-miniprogram/tree-select/props.js
new file mode 100644
index 0000000..bca5d9e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/props.js
@@ -0,0 +1,25 @@
+const props = {
+ height: {
+ type: null,
+ value: 336,
+ },
+ keys: {
+ type: Object,
+ },
+ multiple: {
+ type: Boolean,
+ value: false,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.d.ts b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.d.ts
new file mode 100644
index 0000000..b887c92
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent } from '../common/src/index';
+export default class TreeSelect extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ labelAlias: string;
+ valueAlias: string;
+ };
+ properties: import("./type").TdTreeSelectProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(): void;
+ keys(obj: any): void;
+ };
+ methods: {
+ buildTreeOptions(): void;
+ onRootChange(e: any): void;
+ handleTreeClick(e: any): void;
+ handleRadioChange(e: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.js b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.js
new file mode 100644
index 0000000..ecebade
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.js
@@ -0,0 +1,100 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-tree-select`;
+let TreeSelect = class TreeSelect extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value() {
+ this.buildTreeOptions();
+ },
+ keys(obj) {
+ this.setData({
+ labelAlias: obj.label || 'label',
+ valueAlias: obj.value || 'value',
+ });
+ },
+ };
+ this.methods = {
+ buildTreeOptions() {
+ const { options, value, multiple } = this.data;
+ const treeOptions = [];
+ let level = -1;
+ let node = { children: options };
+ while (node && node.children) {
+ level += 1;
+ const list = node.children;
+ const thisValue = value === null || value === void 0 ? void 0 : value[level];
+ treeOptions.push([...list]);
+ if (thisValue == null) {
+ const [firstChild] = list;
+ node = firstChild;
+ }
+ else {
+ const child = list.find((child) => child.value === thisValue);
+ node = child !== null && child !== void 0 ? child : list[0];
+ }
+ }
+ const leafLevel = Math.max(0, level);
+ if (multiple) {
+ const finalValue = this.data.value || this.data.defaultValue;
+ if (!Array.isArray(finalValue[leafLevel])) {
+ throw TypeError('应传入数组类型的 value');
+ }
+ }
+ this.setData({
+ leafLevel,
+ treeOptions,
+ });
+ },
+ onRootChange(e) {
+ const { value } = this.data;
+ const { value: itemValue } = e.detail;
+ value[0] = itemValue;
+ this._trigger('change', { value, level: 0 });
+ },
+ handleTreeClick(e) {
+ const { level, value: itemValue } = e.currentTarget.dataset;
+ const { value } = this.data;
+ value[level] = itemValue;
+ this._trigger('change', { value, level: 1 });
+ },
+ handleRadioChange(e) {
+ const { value } = this.data;
+ const { value: itemValue } = e.detail;
+ const { level } = e.target.dataset;
+ value[level] = itemValue;
+ this._trigger('change', { value, level });
+ },
+ };
+ }
+};
+TreeSelect = __decorate([
+ wxComponent()
+], TreeSelect);
+export default TreeSelect;
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.json b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.json
new file mode 100644
index 0000000..0083bb1
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.json
@@ -0,0 +1,11 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-radio": "../radio/radio",
+ "t-radio-group": "../radio-group/radio-group",
+ "t-checkbox": "../checkbox/checkbox",
+ "t-checkbox-group": "../checkbox-group/checkbox-group",
+ "t-side-bar": "../side-bar/side-bar",
+ "t-side-bar-item": "../side-bar-item/side-bar-item"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.wxml b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.wxml
new file mode 100644
index 0000000..4ffc465
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.wxml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+ {{item[labelAlias]}}
+
+
+
+ {{item[labelAlias]}}
+
+
+ {{item[labelAlias]}}
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.wxss b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.wxss
new file mode 100644
index 0000000..8e5cb32
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/tree-select.wxss
@@ -0,0 +1,59 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tree-select {
+ display: flex;
+ background-color: var(--td-tree-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tree-select__column {
+ width: var(--td-tree-colum-width, 206rpx);
+}
+.t-tree-select__column--left {
+ background: var(--td-tree-root-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tree-select__column--right {
+ flex: 1;
+}
+.t-tree-select__column ::-webkit-scrollbar {
+ display: none;
+ width: 0;
+ height: 0;
+ color: transparent;
+}
+.t-tree-select__item {
+ height: var(--td-tree-item-height, 112rpx);
+ line-height: var(--td-tree-item-height, 112rpx);
+ font-size: var(--td-tree-item-font-size, 32rpx);
+ padding-left: 32rpx;
+}
+.t-tree-select__item--active {
+ font-weight: 600;
+ color: var(--td-tree-item-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tree-select-column {
+ width: 100%;
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/type.d.ts b/miniprogram_npm/tdesign-miniprogram/tree-select/type.d.ts
new file mode 100644
index 0000000..d0a4b7d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/type.d.ts
@@ -0,0 +1,32 @@
+import { TreeOptionData, KeysType } from '../common/common';
+export interface TdTreeSelectProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ height?: {
+ type: null;
+ value?: string | number;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ multiple?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: null;
+ value?: TreeSelectValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: TreeSelectValue;
+ };
+}
+export declare type TreeSelectValue = string | number | Array;
diff --git a/miniprogram_npm/tdesign-miniprogram/tree-select/type.js b/miniprogram_npm/tdesign-miniprogram/tree-select/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/tree-select/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/README.en-US.md b/miniprogram_npm/tdesign-miniprogram/upload/README.en-US.md
new file mode 100644
index 0000000..2fc525d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/README.en-US.md
@@ -0,0 +1,32 @@
+:: BASE_DOC ::
+
+## API
+### Upload Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+add-content | String / Slot | - | \- | N
+allow-upload-duplicate-file | Boolean | false | \- | N
+config | Object | - | Typescript:`UploadMpConfig` `type UploadMpConfig = ImageConfig \| VideoConfig` `interface ImageConfig { count?: number; sizeType?: Array; sourceType?: Array }` `type SizeTypeValues = 'original' \| 'compressed'` `type SourceTypeValues = 'album' \| 'camera'` `interface VideoConfig { sourceType?: Array; compressed?: boolean; maxDuration?: number; camera?: 'back' \| 'front' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+file-list-display | Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+files | Array | - | Typescript:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+default-files | Array | undefined | uncontrolled property。Typescript:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+grid-config | Object | - | Typescript:`{column?: number; width?: number; height?: number;}` | N
+gutter | Number | 16 | \- | N
+image-props | Object | - | Typescript:`ImageProps`,[Image API Documents](./image?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+max | Number | 0 | \- | N
+media-type | Array | ['image', 'video'] | Typescript:`Array` `type MediaType = 'image' \| 'video'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+request-method | Function | - | \- | N
+size-limit | Number / Object | - | Typescript:`number \| SizeLimitObj` `interface SizeLimitObj { size: number; unit: SizeUnit ; message?: string }` `type SizeUnitArray = ['B', 'KB', 'MB', 'GB']` `type SizeUnit = SizeUnitArray[number]`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+source | String | media | options:media/messageFile | N
+
+### Upload Events
+
+name | params | description
+-- | -- | --
+add | `(files: MediaContext)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
+complete | \- | \-
+fail | \- | \-
+remove | `(index: number; file: UploadFile)` | \-
+select-change | `(currentSelectedFiles: MediaContext[])` | \-
+success | `(files: MediaContext)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/README.md b/miniprogram_npm/tdesign-miniprogram/upload/README.md
new file mode 100644
index 0000000..aa2a495
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/README.md
@@ -0,0 +1,79 @@
+---
+title: Upload 上传
+description: 用于相册读取或拉起拍照的图片上传功能。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-upload": "tdesign-miniprogram/upload/upload",
+}
+```
+
+## 代码演示
+
+### 单选上传图片
+
+图片上传有两种方式:
+
+1 选择完所有图片之后,统一上传,因此选择完就直接展示
+
+2 每次选择图片都上传,展示每次上传图片的进度
+
+{{ single }}
+
+### 多选上传图片
+
+{{ multiple }}
+
+### 加载状态
+
+支持多种状态:`loading`、`reload`、`failed`;
+
+其中 `loading` 还可以通过传入 `percent` 来区分是否展示进度。
+
+{{ status }}
+
+### 从聊天记录上选
+
+使用 `wx.chooseMessageFile` 实现,需要基础版本库 `2.5.0+`
+
+{{ messageFile }}
+
+## API
+### Upload Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+add-content | String / Slot | - | 添加按钮内容 | N
+allow-upload-duplicate-file | Boolean | false | 【开发中】是否允许重复上传相同文件名的文件 | N
+config | Object | - | 图片上传配置,视频上传配置,文件上传配置等,包含图片尺寸、图片来源、视频来源、视频拍摄最长时间等。更多细节查看小程序官网。[图片上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)。[视频上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)。TS 类型:`UploadMpConfig` `type UploadMpConfig = ImageConfig \| VideoConfig` `interface ImageConfig { count?: number; sizeType?: Array; sourceType?: Array }` `type SizeTypeValues = 'original' \| 'compressed'` `type SourceTypeValues = 'album' \| 'camera'` `interface VideoConfig { sourceType?: Array; compressed?: boolean; maxDuration?: number; camera?: 'back' \| 'front' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+file-list-display | Slot | - | 【开发中】用于完全自定义文件列表内容。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+files | Array | - | 已上传文件列表。TS 类型:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+default-files | Array | undefined | 已上传文件列表。非受控属性。TS 类型:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+grid-config | Object | - | upload组件每行上传图片列数以及图片的宽度和高度。TS 类型:`{column?: number; width?: number; height?: number;}` | N
+gutter | Number | 16 | 预览窗格的 `gutter` 大小,单位 rpx | N
+image-props | Object | - | 透传 Image 组件全部属性。TS 类型:`ImageProps`,[Image API Documents](./image?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+max | Number | 0 | 用于控制文件上传数量,值为 0 则不限制 | N
+media-type | Array | ['image', 'video'] | 支持上传的文件类型,图片或视频。TS 类型:`Array` `type MediaType = 'image' \| 'video'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+request-method | Function | - | 自定义上传方法 | N
+size-limit | Number / Object | - | 图片文件大小限制,单位 KB。可选单位有:`'B' \| 'KB' \| 'MB' \| 'GB'`。示例一:`1000`。示例二:`{ size: 2, unit: 'MB', message: '图片大小不超过 {sizeLimit} MB' }`。TS 类型:`number \| SizeLimitObj` `interface SizeLimitObj { size: number; unit: SizeUnit ; message?: string }` `type SizeUnitArray = ['B', 'KB', 'MB', 'GB']` `type SizeUnit = SizeUnitArray[number]`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+source | String | media | 来源。可选项:media/messageFile | N
+
+### Upload Events
+
+名称 | 参数 | 描述
+-- | -- | --
+add | `(files: MediaContext)` | 选择后触发,仅包含本次选择的照片;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
+complete | \- | 上传成功或失败后触发
+fail | \- | 上传失败后触发
+remove | `(index: number; file: UploadFile)` | 移除文件时触发
+select-change | `(files: MediaContext[]; currentSelectedFiles: MediaContext[])` | 选择文件或图片之后,上传之前,触发该事件。
`files` 表示之前已经上传完成的文件列表。
`currentSelectedFiles` 表示本次上传选中的文件列表
+success | `(files: MediaContext)` | 上传成功后触发,包含所有上传的文件;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
+click | `(file: VideoContext \| ImageContext)` | 点击已选文件时触发;常用于重新上传
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/props.d.ts b/miniprogram_npm/tdesign-miniprogram/upload/props.d.ts
new file mode 100644
index 0000000..2f7371c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/props.d.ts
@@ -0,0 +1,3 @@
+import { TdUploadProps } from './type';
+declare const props: TdUploadProps;
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/props.js b/miniprogram_npm/tdesign-miniprogram/upload/props.js
new file mode 100644
index 0000000..fbf07c3
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/props.js
@@ -0,0 +1,48 @@
+const props = {
+ addContent: {
+ type: String,
+ },
+ allowUploadDuplicateFile: {
+ type: Boolean,
+ value: false,
+ },
+ config: {
+ type: Object,
+ },
+ files: {
+ type: Array,
+ value: null,
+ },
+ defaultFiles: {
+ type: Array,
+ },
+ gridConfig: {
+ type: Object,
+ },
+ gutter: {
+ type: Number,
+ value: 16,
+ },
+ imageProps: {
+ type: Object,
+ },
+ max: {
+ type: Number,
+ value: 0,
+ },
+ mediaType: {
+ type: Array,
+ value: ['image', 'video'],
+ },
+ requestMethod: {
+ type: null,
+ },
+ sizeLimit: {
+ type: null,
+ },
+ source: {
+ type: String,
+ value: 'media',
+ },
+};
+export default props;
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/type.d.ts b/miniprogram_npm/tdesign-miniprogram/upload/type.d.ts
new file mode 100644
index 0000000..d06319f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/type.d.ts
@@ -0,0 +1,99 @@
+import { ImageProps } from '../image/index';
+export interface TdUploadProps {
+ addContent?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ allowUploadDuplicateFile?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ config?: {
+ type: ObjectConstructor;
+ value?: UploadMpConfig;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ files?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ defaultFiles?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ gridConfig?: {
+ type: ObjectConstructor;
+ value?: {
+ column?: number;
+ width?: number;
+ height?: number;
+ };
+ };
+ gutter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: ImageProps;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ mediaType?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ requestMethod?: {
+ type: null;
+ value?: null;
+ };
+ sizeLimit?: {
+ type: null;
+ value?: number | SizeLimitObj;
+ };
+ source?: {
+ type: StringConstructor;
+ value?: 'media' | 'messageFile';
+ };
+}
+export declare type UploadMpConfig = ImageConfig | VideoConfig;
+export interface ImageConfig {
+ count?: number;
+ sizeType?: Array;
+ sourceType?: Array;
+}
+export declare type SizeTypeValues = 'original' | 'compressed';
+export declare type SourceTypeValues = 'album' | 'camera';
+export interface VideoConfig {
+ sourceType?: Array;
+ compressed?: boolean;
+ maxDuration?: number;
+ camera?: 'back' | 'front';
+}
+export interface UploadDisplayDragEvents {
+ onDrop?: (event: DragEvent) => void;
+ onDragenter?: (event: DragEvent) => void;
+ onDragover?: (event: DragEvent) => void;
+ onDragleave?: (event: DragEvent) => void;
+}
+export interface UploadFile {
+ url: string;
+ name?: string;
+ size?: number;
+ type?: 'image' | 'video';
+ percent?: number;
+ status: 'loading' | 'reload' | 'failed' | 'done';
+}
+export declare type MediaType = 'image' | 'video';
+export interface SizeLimitObj {
+ size: number;
+ unit: SizeUnit;
+ message?: string;
+}
+export declare type SizeUnitArray = ['B', 'KB', 'MB', 'GB'];
+export declare type SizeUnit = SizeUnitArray[number];
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/type.js b/miniprogram_npm/tdesign-miniprogram/upload/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload-info.json b/miniprogram_npm/tdesign-miniprogram/upload/upload-info.json
new file mode 100644
index 0000000..a71eeef
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload-info.json
@@ -0,0 +1,123 @@
+{
+ "key": "Upload",
+ "label": "上传",
+ "icon": "",
+ "properties": [
+ {
+ "key": "addContent",
+ "type": ["String", "TNode"],
+ "defaultValue": "",
+ "desc": "添加按钮内容。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "config",
+ "type": ["Object"],
+ "defaultValue": "",
+ "desc": "图片上传配置,视频上传配置,文件上传配置等,包含图片尺寸、图片来源、视频来源、视频拍摄最长时间等。更多细节查看小程序官网。[图片上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)。[视频上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)",
+ "label": ""
+ },
+ {
+ "key": "deleteBtn",
+ "type": ["String", "TNode"],
+ "defaultValue": "",
+ "desc": "删除图标。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "fileListDisplay",
+ "type": ["TNode"],
+ "defaultValue": "",
+ "desc": "【开发中】用于完全自定义文件列表内容",
+ "label": ""
+ },
+ {
+ "key": "files",
+ "type": ["Array"],
+ "defaultValue": "",
+ "desc": "已上传文件列表",
+ "label": ""
+ },
+ {
+ "key": "gridConfig",
+ "type": ["Object"],
+ "defaultValue": "",
+ "desc": "upload组件每行上传图片列数以及图片的宽度和高度",
+ "label": ""
+ },
+ {
+ "key": "gutter",
+ "type": ["Number"],
+ "defaultValue": "16",
+ "desc": "预览窗格的 gutter 大小,单位 rpx",
+ "label": ""
+ },
+ {
+ "key": "imageProps",
+ "type": ["Object"],
+ "defaultValue": "",
+ "desc": "透传 Image 组件全部属性",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "defaultValue": "0",
+ "desc": "用于控制文件上传数量,值为 0 则不限制",
+ "label": ""
+ },
+ {
+ "key": "mediaType",
+ "type": ["Array"],
+ "defaultValue": "['image', 'video']",
+ "desc": "支持上传的文件类型,图片或视频",
+ "label": ""
+ },
+ {
+ "key": "requestMethod",
+ "type": ["Function"],
+ "defaultValue": "",
+ "desc": "自定义上传方法",
+ "label": ""
+ },
+ {
+ "key": "sizeLimit",
+ "type": ["Number", "Object"],
+ "defaultValue": "",
+ "desc": "图片文件大小限制,单位 KB。可选单位有:`'B' | 'KB' | 'MB' | 'GB'`。示例一:`1000`。示例二:`{ size: 2, unit: 'MB', message: '图片大小不超过 {sizeLimit} MB' }`",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "add",
+ "desc": "上传成功后触发,仅包含本次选择的照片;`context.url` 表示选定视频的临时文件路径 (本地路径)。`context.duration` 表示选定视频的时间长度。`context.size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ },
+ {
+ "key": "complete",
+ "desc": "上传成功或失败后触发",
+ "label": ""
+ },
+ {
+ "key": "fail",
+ "desc": "上传失败后触发",
+ "label": ""
+ },
+ {
+ "key": "remove",
+ "desc": "移除文件时触发",
+ "label": ""
+ },
+ {
+ "key": "selectChange",
+ "desc": "选择文件或图片之后,上传之前,触发该事件。
`params.value` 表示之前已经上传完成的文件列表。
`params.currentSelectedFiles` 表示本次上传选中的文件列表",
+ "label": ""
+ },
+ {
+ "key": "success",
+ "desc": "上传成功后触发,包含所有上传的文件;`context.url` 表示选定视频的临时文件路径 (本地路径)。`context.duration` 表示选定视频的时间长度。`context.size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ }
+ ]
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload.d.ts b/miniprogram_npm/tdesign-miniprogram/upload/upload.d.ts
new file mode 100644
index 0000000..3dcc153
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload.d.ts
@@ -0,0 +1,48 @@
+import { SuperComponent } from '../common/src/index';
+import { UploadFile } from './type';
+export default class Upload extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ current: boolean;
+ proofs: any[];
+ customFiles: UploadFile[];
+ customLimit: number;
+ column: number;
+ };
+ properties: import("./type").TdUploadProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ files(files: UploadFile): void;
+ max(max: any): void;
+ gridConfig(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ onProofTap(e: any): void;
+ handleLimit(customFiles: UploadFile[], max: number): void;
+ triggerSuccessEvent(files: any): void;
+ triggerFailEvent(err: any): void;
+ onFileClick(e: any): void;
+ getFileType(mediaType: string[], tempFilePath: string, fileType?: string): string;
+ getRandFileName(filePath: any): string;
+ onDelete(e: any): void;
+ deleteHandle(index: number): void;
+ updateGrid(): void;
+ methods: {
+ uploadFiles(files: UploadFile[]): Promise;
+ startUpload(files: UploadFile[]): any;
+ onAddTap(): void;
+ chooseMedia(mediaType: any): void;
+ chooseMessageFile(mediaType: any): void;
+ afterSelect(files: any): void;
+ };
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload.js b/miniprogram_npm/tdesign-miniprogram/upload/upload.js
new file mode 100644
index 0000000..cd4902e
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload.js
@@ -0,0 +1,231 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { isObject, SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import { isOverSize } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-upload`;
+let Upload = class Upload extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ current: false,
+ proofs: [],
+ customFiles: [],
+ customLimit: 0,
+ column: 4,
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'files',
+ event: 'success',
+ },
+ ];
+ this.observers = {
+ files(files) {
+ this.handleLimit(files, this.data.max);
+ },
+ max(max) {
+ this.handleLimit(this.data.customFiles, max);
+ },
+ gridConfig() {
+ this.updateGrid();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.handleLimit(this.data.customFiles, this.data.max);
+ this.updateGrid();
+ },
+ };
+ this.methods = {
+ uploadFiles(files) {
+ return new Promise((resolve) => {
+ const task = this.data.requestMethod(files);
+ if (task instanceof Promise) {
+ return task;
+ }
+ resolve({});
+ });
+ },
+ startUpload(files) {
+ if (typeof this.data.requestMethod === 'function') {
+ return this.uploadFiles(files)
+ .then(() => {
+ files.forEach((file) => {
+ file.percent = 100;
+ });
+ this.triggerSuccessEvent(files);
+ })
+ .catch((err) => {
+ this.triggerFailEvent(err);
+ });
+ }
+ this.triggerSuccessEvent(files);
+ this.handleLimit(this.data.customFiles, this.data.max);
+ return Promise.resolve();
+ },
+ onAddTap() {
+ const { mediaType, source } = this.properties;
+ if (source === 'media') {
+ this.chooseMedia(mediaType);
+ }
+ else {
+ this.chooseMessageFile(mediaType);
+ }
+ },
+ chooseMedia(mediaType) {
+ const { config, sizeLimit, customLimit } = this.data;
+ wx.chooseMedia(Object.assign(Object.assign({ count: customLimit, mediaType }, config), { success: (res) => {
+ const files = [];
+ res.tempFiles.forEach((temp) => {
+ const { size, fileType, tempFilePath, width, height, duration, thumbTempFilePath } = temp, res = __rest(temp, ["size", "fileType", "tempFilePath", "width", "height", "duration", "thumbTempFilePath"]);
+ if (isOverSize(size, sizeLimit)) {
+ let title = `${fileType === 'image' ? '图片' : '视频'}大小超过限制`;
+ if (typeof sizeLimit !== 'number') {
+ title = sizeLimit.message.replace('{sizeLimit}', sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.size);
+ }
+ wx.showToast({ icon: 'none', title });
+ return;
+ }
+ const name = this.getRandFileName(tempFilePath);
+ files.push(Object.assign({ name, type: this.getFileType(mediaType, tempFilePath, fileType), url: tempFilePath, size: size, width: width, height: height, duration: duration, thumb: thumbTempFilePath, percent: 0 }, res));
+ });
+ this.afterSelect(files);
+ }, fail: (err) => {
+ this.triggerFailEvent(err);
+ }, complete: (res) => {
+ this.triggerEvent('complete', res);
+ } }));
+ },
+ chooseMessageFile(mediaType) {
+ const { max, config, sizeLimit } = this.properties;
+ wx.chooseMessageFile(Object.assign(Object.assign({ count: max, type: Array.isArray(mediaType) ? 'all' : mediaType }, config), { success: (res) => {
+ const files = [];
+ res.tempFiles.forEach((temp) => {
+ const { size, type: fileType, path: tempFilePath } = temp, res = __rest(temp, ["size", "type", "path"]);
+ if (isOverSize(size, sizeLimit)) {
+ let title = `${fileType === 'image' ? '图片' : '视频'}大小超过限制`;
+ if (typeof sizeLimit !== 'number') {
+ title = sizeLimit.message.replace('{sizeLimit}', sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.size);
+ }
+ wx.showToast({ icon: 'none', title });
+ return;
+ }
+ const name = this.getRandFileName(tempFilePath);
+ files.push(Object.assign({ name, type: this.getFileType(mediaType, tempFilePath, fileType), url: tempFilePath, size: size, percent: 0 }, res));
+ });
+ this.afterSelect(files);
+ }, fail: (err) => this.triggerFailEvent(err), complete: (res) => this.triggerEvent('complete', res) }));
+ },
+ afterSelect(files) {
+ this._trigger('select-change', {
+ files: [...this.data.customFiles],
+ currentSelectedFiles: [files],
+ });
+ this._trigger('add', { files });
+ this.startUpload(files);
+ },
+ };
+ }
+ onProofTap(e) {
+ var _a;
+ this.onFileClick(e);
+ const { index } = e.currentTarget.dataset;
+ wx.previewImage({
+ urls: this.data.customFiles.filter((file) => file.percent !== -1).map((file) => file.url),
+ current: (_a = this.data.customFiles[index]) === null || _a === void 0 ? void 0 : _a.url,
+ });
+ }
+ handleLimit(customFiles, max) {
+ while (max !== 0 && customFiles.length - max > 0) {
+ customFiles.pop();
+ }
+ const proofs = [];
+ customFiles.forEach((item) => {
+ if (item.type !== 'video') {
+ proofs.push(item.url);
+ }
+ });
+ this.setData({
+ customFiles,
+ proofs,
+ customLimit: max === 0 ? Number.MAX_SAFE_INTEGER : max - customFiles.length,
+ });
+ }
+ triggerSuccessEvent(files) {
+ this._trigger('success', { files: [...this.data.customFiles, ...files] });
+ }
+ triggerFailEvent(err) {
+ this.triggerEvent('fail', err);
+ }
+ onFileClick(e) {
+ const { file } = e.currentTarget.dataset;
+ this.triggerEvent('click', { file });
+ }
+ getFileType(mediaType, tempFilePath, fileType) {
+ if (fileType)
+ return fileType;
+ if (mediaType.length === 1) {
+ return mediaType[0];
+ }
+ const videoType = ['avi', 'wmv', 'mkv', 'mp4', 'mov', 'rm', '3gp', 'flv', 'mpg', 'rmvb'];
+ const temp = tempFilePath.split('.');
+ const postfix = temp[temp.length - 1];
+ if (videoType.includes(postfix.toLocaleLowerCase())) {
+ return 'video';
+ }
+ return 'image';
+ }
+ getRandFileName(filePath) {
+ const extIndex = filePath.lastIndexOf('.');
+ const extName = extIndex === -1 ? '' : filePath.substr(extIndex);
+ return parseInt(`${Date.now()}${Math.floor(Math.random() * 900 + 100)}`, 10).toString(36) + extName;
+ }
+ onDelete(e) {
+ const { index } = e.currentTarget.dataset;
+ this.deleteHandle(index);
+ }
+ deleteHandle(index) {
+ const { customFiles } = this.data;
+ const delFile = customFiles[index];
+ this.triggerEvent('remove', { index, file: delFile });
+ }
+ updateGrid() {
+ let { gridConfig = {} } = this.properties;
+ if (!isObject(gridConfig))
+ gridConfig = {};
+ const { column = 4, width = 160, height = 160 } = gridConfig;
+ this.setData({
+ gridItemStyle: `width:${width}rpx;height:${height}rpx`,
+ column: column,
+ });
+ }
+};
+Upload = __decorate([
+ wxComponent()
+], Upload);
+export default Upload;
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload.json b/miniprogram_npm/tdesign-miniprogram/upload/upload.json
new file mode 100644
index 0000000..010327d
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload.json
@@ -0,0 +1,9 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-grid": "../grid/grid",
+ "t-grid-item": "../grid-item/grid-item",
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload.wxml b/miniprogram_npm/tdesign-miniprogram/upload/upload.wxml
new file mode 100644
index 0000000..0a96c4b
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload.wxml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{file.percent ? file.percent + '%' : '上传中...'}}
+
+
+
+ {{file.status == 'reload' ? '重新上传' : '上传失败'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{addContent}}
+
+
+
+
+
+
+
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload.wxs b/miniprogram_npm/tdesign-miniprogram/upload/upload.wxs
new file mode 100644
index 0000000..03b321f
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload.wxs
@@ -0,0 +1,15 @@
+module.exports.getWrapperAriaRole = function (file) {
+ return file.status && file.status != 'done' ? 'text' : 'button';
+};
+
+module.exports.getWrapperAriaLabel = function (file) {
+ if (file.status && file.status != 'done') {
+ if (file.status == 'loading') {
+ return file.percent ? '上传中:' + file.percent + '%' : '上传中';
+ } else {
+ return file.status == 'reload' ? '重新上传' : '上传失败';
+ }
+ } else {
+ return file.type === 'video' ? '视频' : '图像';
+ }
+};
diff --git a/miniprogram_npm/tdesign-miniprogram/upload/upload.wxss b/miniprogram_npm/tdesign-miniprogram/upload/upload.wxss
new file mode 100644
index 0000000..cd82c55
--- /dev/null
+++ b/miniprogram_npm/tdesign-miniprogram/upload/upload.wxss
@@ -0,0 +1,101 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-upload__grid-content {
+ padding: 0;
+}
+.t-upload__grid-file {
+ position: relative;
+}
+.t-upload__add-icon {
+ width: 100%;
+ height: 100%;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ font-size: var(--td-upload-add-icon-font-size, 56rpx);
+ background-color: var(--td-upload-add-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ color: var(--td-upload-add-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ border-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+}
+.t-upload__add-icon:only-child {
+ display: flex;
+}
+.t-upload__thumbnail {
+ width: 100%;
+ height: 100%;
+ max-height: 100%;
+ overflow: hidden;
+}
+.t-upload__wrapper {
+ position: relative;
+ border-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-upload__close-btn {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 40rpx;
+ height: 40rpx;
+ border-top-right-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ border-bottom-left-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ background-color: var(--td-font-gray-3, rgba(0, 0, 0, 0.4));
+}
+.t-upload__progress-mask {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: var(--td-font-gray-3, rgba(0, 0, 0, 0.4));
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ border-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ color: var(--td-font-white-1, #ffffff);
+ padding: 32rpx 0;
+}
+.t-upload__progress-text {
+ font-size: 24rpx;
+ line-height: 40rpx;
+ margin-top: 8rpx;
+}
+.t-upload__progress-loading {
+ animation: spin infinite linear 0.6s;
+}
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..f50053d
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,21 @@
+{
+ "name": "xzjl_ui",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/dayjs": {
+ "version": "1.11.7",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
+ "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+ },
+ "node_modules/tdesign-miniprogram": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/tdesign-miniprogram/-/tdesign-miniprogram-1.1.1.tgz",
+ "integrity": "sha512-35RuAfR74Hq3HEsOS3NRHyP9S1vdMI8/JSXgtPNV805KEtD9rHRK3Rn9gD08UqvGyemVOoB1IVzwk63fie4t2A==",
+ "dependencies": {
+ "dayjs": "^1.10.7"
+ }
+ }
+ }
+}
diff --git a/node_modules/dayjs/.editorconfig b/node_modules/dayjs/.editorconfig
new file mode 100644
index 0000000..14c1d8c
--- /dev/null
+++ b/node_modules/dayjs/.editorconfig
@@ -0,0 +1,6 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
diff --git a/node_modules/dayjs/CHANGELOG.md b/node_modules/dayjs/CHANGELOG.md
new file mode 100644
index 0000000..b9ec422
--- /dev/null
+++ b/node_modules/dayjs/CHANGELOG.md
@@ -0,0 +1,877 @@
+## [1.11.7](https://github.com/iamkun/dayjs/compare/v1.11.6...v1.11.7) (2022-12-06)
+
+
+### Bug Fixes
+
+* Add locale (zh-tw) meridiem ([#2149](https://github.com/iamkun/dayjs/issues/2149)) ([1e9ba76](https://github.com/iamkun/dayjs/commit/1e9ba761ff4e3f2759106dfe1aa9054d5826451c))
+* update fa locale ([#2151](https://github.com/iamkun/dayjs/issues/2151)) ([1c26732](https://github.com/iamkun/dayjs/commit/1c267321a1a01b4947e1482bac67d67ebc7c3dfa))
+
+## [1.11.6](https://github.com/iamkun/dayjs/compare/v1.11.5...v1.11.6) (2022-10-21)
+
+
+### Bug Fixes
+
+* add BigIntSupport plugin ([#2087](https://github.com/iamkun/dayjs/issues/2087)) ([f6dce48](https://github.com/iamkun/dayjs/commit/f6dce48a9e39677718b087867d9fd901d5078155))
+* Fix objectSupport collides with Duration plugin - issue [#2027](https://github.com/iamkun/dayjs/issues/2027) ([#2038](https://github.com/iamkun/dayjs/issues/2038)) ([c9370ea](https://github.com/iamkun/dayjs/commit/c9370ea96bf420439ee7eaa4146e8ed643160312))
+
+## [1.11.5](https://github.com/iamkun/dayjs/compare/v1.11.4...v1.11.5) (2022-08-12)
+
+
+### Bug Fixes
+
+* ordinal for nl not working ([#2011](https://github.com/iamkun/dayjs/issues/2011)) ([c93c85e](https://github.com/iamkun/dayjs/commit/c93c85eaa11564a1aae2d823480a417812c01bf4))
+* wrong ordinal for french locale ([#2010](https://github.com/iamkun/dayjs/issues/2010)) ([dd192a7](https://github.com/iamkun/dayjs/commit/dd192a72fc5d26ce56481e89b0c1ccf5f939be0c))
+
+## [1.11.4](https://github.com/iamkun/dayjs/compare/v1.11.3...v1.11.4) (2022-07-19)
+
+
+### Bug Fixes
+
+* correct past property in ku (kurdish) locale ([#1916](https://github.com/iamkun/dayjs/issues/1916)) ([74e82b9](https://github.com/iamkun/dayjs/commit/74e82b9da5ec8b90361fc27ac7c8b63faf354502))
+* fix French [fr] local ordinal ([#1932](https://github.com/iamkun/dayjs/issues/1932)) ([8f09834](https://github.com/iamkun/dayjs/commit/8f09834a88b8e7f8353c6e7473d4711596890a8c))
+* fix objectSupport plugin ConfigTypeMap type ([#1441](https://github.com/iamkun/dayjs/issues/1441)) ([#1990](https://github.com/iamkun/dayjs/issues/1990)) ([fd51fe4](https://github.com/iamkun/dayjs/commit/fd51fe4f7fa799d8c598343e71fa59299ec4cf93))
+* fix type error to add ordianl property in InstanceLocaleDataReturn and GlobalLocaleDataReturn types ([#1931](https://github.com/iamkun/dayjs/issues/1931)) ([526f0ae](https://github.com/iamkun/dayjs/commit/526f0ae549ffbeeb9ef1099ca23964791fc59743))
+* update locale ar-* meridiem function ([#1954](https://github.com/iamkun/dayjs/issues/1954)) ([3d31611](https://github.com/iamkun/dayjs/commit/3d316117f04362d31f4e8bd349620b8414ce5d0c))
+* zh-tw / zh-hk locale ordinal error ([#1976](https://github.com/iamkun/dayjs/issues/1976)) ([0a1bd08](https://github.com/iamkun/dayjs/commit/0a1bd08e736be7d4e378aaca280caa6543f8066d))
+
+## [1.11.3](https://github.com/iamkun/dayjs/compare/v1.11.2...v1.11.3) (2022-06-06)
+
+
+### Bug Fixes
+
+* customParseFormat plugin to parse comma as a separator character ([#1913](https://github.com/iamkun/dayjs/issues/1913)) ([41b1405](https://github.com/iamkun/dayjs/commit/41b1405971e099431211ae6c2a100cd797da4427))
+* update Dutch [nl] locale ordinal ([#1908](https://github.com/iamkun/dayjs/issues/1908)) ([5da98f8](https://github.com/iamkun/dayjs/commit/5da98f8085d2d2847d79e38c795082703a14f24b))
+
+## [1.11.2](https://github.com/iamkun/dayjs/compare/v1.11.1...v1.11.2) (2022-05-06)
+
+
+### Bug Fixes
+
+* add OpUnitType (week) to quarterOfYear startOf/endOf types ([#1865](https://github.com/iamkun/dayjs/issues/1865)) ([400bc3e](https://github.com/iamkun/dayjs/commit/400bc3e8915e0c58e7abbfd3a1235364b1abaf3e))
+* Fix type issue with ManipulateType ([#1864](https://github.com/iamkun/dayjs/issues/1864)) ([d033dfc](https://github.com/iamkun/dayjs/commit/d033dfcfc1d2ced39b2733898e8d85ad5984c9e9))
+* fix UTC plugin .valueOf not taking DST into account ([#1448](https://github.com/iamkun/dayjs/issues/1448)) ([27d1c50](https://github.com/iamkun/dayjs/commit/27d1c506100ae6624f258c21cc06b24768ced733))
+
+## [1.11.1](https://github.com/iamkun/dayjs/compare/v1.11.0...v1.11.1) (2022-04-15)
+
+
+### Bug Fixes
+
+* add Bengali (Bangladesh) [bn-bd] locale ([#1806](https://github.com/iamkun/dayjs/issues/1806)) ([840ed76](https://github.com/iamkun/dayjs/commit/840ed76eedc085afefc4dedd05f31d44196b63b0))
+* refactor replace deprecated String.prototype.substr() ([#1836](https://github.com/iamkun/dayjs/issues/1836)) ([627fa39](https://github.com/iamkun/dayjs/commit/627fa393e4daf83c92431162dbe18534b23fcbae))
+* Update German [de] locale, adds the abbreviations for month including a . in the end, as in September -> Sept. ([#1831](https://github.com/iamkun/dayjs/issues/1831)) ([4e2802c](https://github.com/iamkun/dayjs/commit/4e2802cc3bec2941ffb737a15fb531c90951eafe))
+* update Italian (Switzerland) [it-ch] locale relativeTime ([#1829](https://github.com/iamkun/dayjs/issues/1829)) ([8e6d11d](https://github.com/iamkun/dayjs/commit/8e6d11d053393d97bee1ba411adb2d82de1a58c4))
+* update Kurdish [ku] locale strings and formatted output contains non-standard kurdish characters ([#1848](https://github.com/iamkun/dayjs/issues/1848)) ([a597d0b](https://github.com/iamkun/dayjs/commit/a597d0b1b8dd28e626f8c59d326622088f7b51e7))
+* update locale bo [Tibetan]: corrected the orders in formats ([#1823](https://github.com/iamkun/dayjs/issues/1823)) ([e790516](https://github.com/iamkun/dayjs/commit/e79051617af6787358f6c9b5443d987b8b53a9e1))
+
+# [1.11.0](https://github.com/iamkun/dayjs/compare/v1.10.8...v1.11.0) (2022-03-14)
+
+
+### Bug Fixes
+
+* Add Kirundi (rn) locale ([#1793](https://github.com/iamkun/dayjs/issues/1793)) ([74e5247](https://github.com/iamkun/dayjs/commit/74e5247227a779fffde39bdfcd1ee19911496709))
+* add missing date shorthand D type definition ([#1752](https://github.com/iamkun/dayjs/issues/1752)) ([b045baf](https://github.com/iamkun/dayjs/commit/b045baf1646a81f7e4f446f355d02d5fb0ef4aa7))
+* Add relative time to Galician (gl) and fix ordinals ([#1800](https://github.com/iamkun/dayjs/issues/1800)) ([dcbf170](https://github.com/iamkun/dayjs/commit/dcbf1708400624addfbddbc71e0f6a9ac15fa961))
+* update German locales (de-at, de-ch) ([#1775](https://github.com/iamkun/dayjs/issues/1775)) ([f9055a7](https://github.com/iamkun/dayjs/commit/f9055a77bf3d84c575e5fcf99e21611138ba64d7))
+* update Icelandic [is] locale relativeTime config ([#1796](https://github.com/iamkun/dayjs/issues/1796)) ([76f9e17](https://github.com/iamkun/dayjs/commit/76f9e1756de7e99c01e471dab30ea074b9ec9629))
+* Update index.d.ts note ([#1716](https://github.com/iamkun/dayjs/issues/1716)) ([5a108ff](https://github.com/iamkun/dayjs/commit/5a108ff3159c53fd270ea7638f33c35c934d6457))
+* Update locale German [de] monthsShort ([#1746](https://github.com/iamkun/dayjs/issues/1746)) ([4a7b7d0](https://github.com/iamkun/dayjs/commit/4a7b7d07c885bb9338514c234dbb708e24e9863e))
+* update meridiem function to Kurdish (ku) locale ([#1725](https://github.com/iamkun/dayjs/issues/1725)) ([efd3904](https://github.com/iamkun/dayjs/commit/efd3904ff8cbf0a4fc064911dda76fc86b669f7b))
+* update updateLocal plugin typescript types ([#1692](https://github.com/iamkun/dayjs/issues/1692)) ([c7a3f73](https://github.com/iamkun/dayjs/commit/c7a3f73064dbb63b4d365b2ad4c792f075f4d8d8))
+
+
+### Features
+
+* Fallback to language only locale + support uppercase locales ([#1524](https://github.com/iamkun/dayjs/issues/1524)) ([9138dc2](https://github.com/iamkun/dayjs/commit/9138dc28206875372da4fb74c64716437cd11b95))
+
+## [1.10.8](https://github.com/iamkun/dayjs/compare/v1.10.7...v1.10.8) (2022-02-28)
+
+
+### Bug Fixes
+
+* set locale pt, pt-br correct weekdays and months ([#1697](https://github.com/iamkun/dayjs/issues/1697)) ([e019301](https://github.com/iamkun/dayjs/commit/e01930171c8235f58a114236f146086428f99569))
+
+## [1.10.7](https://github.com/iamkun/dayjs/compare/v1.10.6...v1.10.7) (2021-09-10)
+
+
+### Bug Fixes
+
+* Add Spanish (Mexico) [es-mx] locale ([#1614](https://github.com/iamkun/dayjs/issues/1614)) ([3393f2a](https://github.com/iamkun/dayjs/commit/3393f2ad55346d55902683a2e31c6f253d96c8c2))
+* Add Arabic (Iraq) [ar-iq] locale ([#1627](https://github.com/iamkun/dayjs/issues/1627)) ([b5a1391](https://github.com/iamkun/dayjs/commit/b5a1391011b247d08863d291542db5937b23b427))
+* add format object type to type file ([#1572](https://github.com/iamkun/dayjs/issues/1572)) ([5a79cc6](https://github.com/iamkun/dayjs/commit/5a79cc6408e825d9e123629eb44fc19c996d7751))
+* duration plugin when parsing duration from ISO string, set missing components to 0 instead of NaN ([#1611](https://github.com/iamkun/dayjs/issues/1611)) ([252585b](https://github.com/iamkun/dayjs/commit/252585b4b2bd59508150e21bb994908a9d78f9b0))
+* narrow type for `add` and `subtract` ([#1576](https://github.com/iamkun/dayjs/issues/1576)) ([1686962](https://github.com/iamkun/dayjs/commit/16869621b1a42563064dbf87f80c1ebfd74c1188))
+* update customParseFormat plugin strict x X parsing ([#1571](https://github.com/iamkun/dayjs/issues/1571)) ([08adda5](https://github.com/iamkun/dayjs/commit/08adda54edbcca38601f57841921d0f87f84e49e))
+* update Lithuanian [lt] locale spelling for single month ([#1609](https://github.com/iamkun/dayjs/issues/1609)) ([255dc54](https://github.com/iamkun/dayjs/commit/255dc54d9295de135a9037ce6ca13cae4bfd2cfb))
+* Update Norwegian Bokmål [nb] local yearStart 4 ([#1608](https://github.com/iamkun/dayjs/issues/1608)) ([7a8467c](https://github.com/iamkun/dayjs/commit/7a8467c0b7d59821f7e19d4a6973bcda8e4c19b1))
+* update plugin advancedFormat `isValid` validation ([#1566](https://github.com/iamkun/dayjs/issues/1566)) ([755fc8b](https://github.com/iamkun/dayjs/commit/755fc8bb1c532eb991459f180eee81367d12016c))
+* update Sinhalese [si] locale month name ([#1475](https://github.com/iamkun/dayjs/issues/1475)) ([63de2a8](https://github.com/iamkun/dayjs/commit/63de2a8b7dcd7e68c132c85d88572d4c9d296907))
+* update utcOffset plugin type file ([#1604](https://github.com/iamkun/dayjs/issues/1604)) ([f68e4b1](https://github.com/iamkun/dayjs/commit/f68e4b1a29fc33542f74cde10ec6d9fb045ca37e))
+
+## [1.10.6](https://github.com/iamkun/dayjs/compare/v1.10.5...v1.10.6) (2021-07-06)
+
+
+### Bug Fixes
+
+* add invalid date string override ([#1465](https://github.com/iamkun/dayjs/issues/1465)) ([#1470](https://github.com/iamkun/dayjs/issues/1470)) ([06f88f4](https://github.com/iamkun/dayjs/commit/06f88f425828b1ce96b737332d25145a95a4ee9d))
+* add sv-fi Finland Swedish locale ([#1522](https://github.com/iamkun/dayjs/issues/1522)) ([8e32164](https://github.com/iamkun/dayjs/commit/8e32164855cff724642e24c37a631eb4c4d760c8))
+* customParseFormat support parsing X x timestamp ([#1567](https://github.com/iamkun/dayjs/issues/1567)) ([eb087f5](https://github.com/iamkun/dayjs/commit/eb087f52861313b8dd8a5c1b77858665ec72859e))
+* dayjs ConfigTypeMap add null & undefined ([#1560](https://github.com/iamkun/dayjs/issues/1560)) ([b5e40e6](https://github.com/iamkun/dayjs/commit/b5e40e6f16abeaea6a0facfa466d20aefaa8a444))
+* Fix DayOfYear plugin when using BadMutable plugin ([#1511](https://github.com/iamkun/dayjs/issues/1511)) ([0b0c6a3](https://github.com/iamkun/dayjs/commit/0b0c6a31ec9c0aff991b0e8dd6eed116201274cc))
+* Implement ordinal in Bulgarian translation (fixes [#1501](https://github.com/iamkun/dayjs/issues/1501)) ([#1502](https://github.com/iamkun/dayjs/issues/1502)) ([b728da5](https://github.com/iamkun/dayjs/commit/b728da5ed9ed08210004ed20ce5fcd52a92de7da))
+* more strict delimiter in REGEX_PARSE ([#1555](https://github.com/iamkun/dayjs/issues/1555)) ([bfdab5c](https://github.com/iamkun/dayjs/commit/bfdab5c0d45a5736b68e8e1b1354fc021e05f607))
+* parameter type ([#1549](https://github.com/iamkun/dayjs/issues/1549)) ([f369844](https://github.com/iamkun/dayjs/commit/f369844dd69d253c4c7cbf68150939db3db233be))
+* update customParseFormat plugin to custom two-digit year parse function ([#1421](https://github.com/iamkun/dayjs/issues/1421)) ([bb5df55](https://github.com/iamkun/dayjs/commit/bb5df55cd3975dc7638b8f4e762afa470b6620f7))
+* update names of weekdays and months in Bulgarian [bg] to lowercase ([#1438](https://github.com/iamkun/dayjs/issues/1438)) ([b246210](https://github.com/iamkun/dayjs/commit/b24621091fec9cf6704de21e4b323f6f0c4abbf1))
+* update type file `.diff` ([#1505](https://github.com/iamkun/dayjs/issues/1505)) ([6508494](https://github.com/iamkun/dayjs/commit/6508494a4e62977b4397baaeef293d1bcf3c7235))
+* update UTC plugin type file for strict parsing ([#1443](https://github.com/iamkun/dayjs/issues/1443)) ([b4f28df](https://github.com/iamkun/dayjs/commit/b4f28df219fe63202dffdbeeaec5677c4d2c9111))
+
+## [1.10.5](https://github.com/iamkun/dayjs/compare/v1.10.4...v1.10.5) (2021-05-26)
+
+
+### Bug Fixes
+
+* add meridiem in ar locales ([#1375](https://github.com/iamkun/dayjs/issues/1375)) ([319f616](https://github.com/iamkun/dayjs/commit/319f616e572a03b984013d04d1b3a18ffd5b1190))
+* Added Zulu support to customParseFormat ([#1359](https://github.com/iamkun/dayjs/issues/1359)) ([1138a3f](https://github.com/iamkun/dayjs/commit/1138a3f0a76592c6d72fb86c4399e133fa41e2ec))
+* fix Bengali [bn] locale monthsShort error ([a0e6c0c](https://github.com/iamkun/dayjs/commit/a0e6c0cf3e1828020dfa11432c6716990f6ed5e0))
+* fix missing types for ArraySupport plugin ([#1401](https://github.com/iamkun/dayjs/issues/1401)) ([b1abdc4](https://github.com/iamkun/dayjs/commit/b1abdc40ee6c9d18ff46c311a114e0755677ea6f))
+* fix Ukrainian [uk] locale ([#1463](https://github.com/iamkun/dayjs/issues/1463)) ([0fdac93](https://github.com/iamkun/dayjs/commit/0fdac93ff2531542301b76952be9b084b2e2dfa0))
+* hotfix for `Duration` types ([#1357](https://github.com/iamkun/dayjs/issues/1357)) ([855b7b3](https://github.com/iamkun/dayjs/commit/855b7b3d049a3903794f91db3419f167c00dabd2)), closes [#1354](https://github.com/iamkun/dayjs/issues/1354)
+* timezone plugin DST error ([#1352](https://github.com/iamkun/dayjs/issues/1352)) ([71bed15](https://github.com/iamkun/dayjs/commit/71bed155edf32bff24379930ac684fc783538d8f))
+* Update duration plugin change string to number ([#1394](https://github.com/iamkun/dayjs/issues/1394)) ([e1546d1](https://github.com/iamkun/dayjs/commit/e1546d1a0cdb97ae92cf11efe61d94707af6a3a3))
+* update Duration plugin to support no-argument ([#1400](https://github.com/iamkun/dayjs/issues/1400)) ([8d9a5ae](https://github.com/iamkun/dayjs/commit/8d9a5ae0749e1b4e76babd4deeaa3b1d9776c29b))
+* Update Finnish [fi] locale to set yearStart ([#1378](https://github.com/iamkun/dayjs/issues/1378)) ([f3370bd](https://github.com/iamkun/dayjs/commit/f3370bda4e435118f714c8a7daf5c88cfc4b69ba))
+* update Russian [ru] locale meridiem and unit tests ([#1403](https://github.com/iamkun/dayjs/issues/1403)) ([f10f39d](https://github.com/iamkun/dayjs/commit/f10f39de7db70244a3c35e4a421090a12972457b))
+* update Russian [ru] locale yearStart config ([#1372](https://github.com/iamkun/dayjs/issues/1372)) ([5052515](https://github.com/iamkun/dayjs/commit/5052515fe35b2444201ef8ef87220b1876a94d0a))
+* update Slovenian [sl] locale to set correct ordinal ([#1386](https://github.com/iamkun/dayjs/issues/1386)) ([cb4f746](https://github.com/iamkun/dayjs/commit/cb4f74633b3020d6dbf19548c8cb13613dafca18))
+* update Spanish [es] locale to change month names to lowercase ([#1414](https://github.com/iamkun/dayjs/issues/1414)) ([9c20e77](https://github.com/iamkun/dayjs/commit/9c20e77caf7b1b5eccf418175203b198d4e29535))
+* update Swedish [sv] locale to set correct yearStart ([#1385](https://github.com/iamkun/dayjs/issues/1385)) ([66c5935](https://github.com/iamkun/dayjs/commit/66c59354964ef456bcd5f6152819618f44978082))
+* update UTC plugin to support string argument like +HH:mm ([#1395](https://github.com/iamkun/dayjs/issues/1395)) ([656127c](https://github.com/iamkun/dayjs/commit/656127cc44eda50923a1ac755602863fc32b9e69))
+
+## [1.10.4](https://github.com/iamkun/dayjs/compare/v1.10.3...v1.10.4) (2021-01-22)
+
+
+### Bug Fixes
+
+* Correct handling negative duration ([#1317](https://github.com/iamkun/dayjs/issues/1317)) ([3f5c085](https://github.com/iamkun/dayjs/commit/3f5c085608182472f20b84766b10949945663e44))
+* Improve `Duration` types ([#1338](https://github.com/iamkun/dayjs/issues/1338)) ([4aca4b1](https://github.com/iamkun/dayjs/commit/4aca4b1b584a15de1146d929f95c944594032f20))
+* parse a string for MMM month format with underscore delimiter ([#1349](https://github.com/iamkun/dayjs/issues/1349)) ([82ef9a3](https://github.com/iamkun/dayjs/commit/82ef9a304f06287ac0a14c4da9a7fe6152b5fec9))
+* Update Bengali [bn] locale ([#1329](https://github.com/iamkun/dayjs/issues/1329)) ([02d96ec](https://github.com/iamkun/dayjs/commit/02d96ec7189f62d6ef8987135919cbb5ceff20a6))
+* update locale Portuguese [pt] yearStart ([#1345](https://github.com/iamkun/dayjs/issues/1345)) ([5c785d5](https://github.com/iamkun/dayjs/commit/5c785d528cc08811638d7cbfc7fc158d67b32d75))
+* update Polish [pl] locale yearStart ([#1348](https://github.com/iamkun/dayjs/issues/1348)) ([e93e6b8](https://github.com/iamkun/dayjs/commit/e93e6b8ffa61036b26382f1763e3864d4a7d5df5))
+* Update Slovenian [sl] relativeTime locale ([#1333](https://github.com/iamkun/dayjs/issues/1333)) ([fe5f1d0](https://github.com/iamkun/dayjs/commit/fe5f1d0afbe57b70339e268047e6c3028ca3d59b))
+
+## [1.10.3](https://github.com/iamkun/dayjs/compare/v1.10.2...v1.10.3) (2021-01-09)
+
+
+### Bug Fixes
+
+* fix customParseFormat plugin strict mode parse meridiem bug ([#1321](https://github.com/iamkun/dayjs/issues/1321)) ([e49eeef](https://github.com/iamkun/dayjs/commit/e49eeefbe8acb36419d36ca2e7ed8bc152f73ac1))
+* fix weekYear plugin missing locale bug ([#1319](https://github.com/iamkun/dayjs/issues/1319)) ([344bdc0](https://github.com/iamkun/dayjs/commit/344bdc0eed6843edb05723dc7853a41833d88f08)), closes [#1304](https://github.com/iamkun/dayjs/issues/1304)
+* update advancedFormat plugin to add format options for iso week and weekyear ([#1309](https://github.com/iamkun/dayjs/issues/1309)) ([2c54c64](https://github.com/iamkun/dayjs/commit/2c54c6441871a175ac9b95e41e4cd075dbac10cb))
+* update devHelper to add dev warning setting locale before loading ([c5cc893](https://github.com/iamkun/dayjs/commit/c5cc89355e1e206ca72433c19c40cb528690b04f))
+* update German [de] locale yearStart ([1858df8](https://github.com/iamkun/dayjs/commit/1858df8008de56570680723df89b36a8cbc970ef)), closes [#1264](https://github.com/iamkun/dayjs/issues/1264)
+
+## [1.10.2](https://github.com/iamkun/dayjs/compare/v1.10.1...v1.10.2) (2021-01-05)
+
+
+### Bug Fixes
+
+* fix parse regex bug ([#1307](https://github.com/iamkun/dayjs/issues/1307)) ([db2b6a5](https://github.com/iamkun/dayjs/commit/db2b6a5ea8e70f9fda645d113ca33495aa96b616)), closes [#1305](https://github.com/iamkun/dayjs/issues/1305)
+* remove module entry in package.json to revert 1.10.1 change ([#1314](https://github.com/iamkun/dayjs/issues/1314)) ([824dcb8](https://github.com/iamkun/dayjs/commit/824dcb8dfcccf14f64b6a2741a00fcdfe53dcd98))
+* update devHelper add warning "passing Year as a Number will be parsed as a Unix timestamp" ([#1315](https://github.com/iamkun/dayjs/issues/1315)) ([b0dda31](https://github.com/iamkun/dayjs/commit/b0dda3139e25441ab4e7c1f4f192dee0ecce6ef8))
+
+## [1.10.1](https://github.com/iamkun/dayjs/compare/v1.10.0...v1.10.1) (2021-01-03)
+
+
+### Bug Fixes
+
+* fix typescript type error UnitTypeLongPlural ([#1302](https://github.com/iamkun/dayjs/issues/1302)) ([bfaabe4](https://github.com/iamkun/dayjs/commit/bfaabe4f398c11564eca6cda7c8aded22e1b231a)), closes [#1300](https://github.com/iamkun/dayjs/issues/1300)
+
+# [1.10.0](https://github.com/iamkun/dayjs/compare/v1.9.8...v1.10.0) (2021-01-03)
+
+
+### Bug Fixes
+
+* add ordinal to localeData plugin ([#1266](https://github.com/iamkun/dayjs/issues/1266)) ([fd229fa](https://github.com/iamkun/dayjs/commit/fd229fa5bd26bcba810e2535eb937ea8d99106c2))
+* add preParsePostFormat plugin & update Arabic [ar] locale ([#1255](https://github.com/iamkun/dayjs/issues/1255)) ([f2e4790](https://github.com/iamkun/dayjs/commit/f2e479006a9a49bc0917f8620101d40ac645f7f2))
+* add type support for plural forms of units ([#1289](https://github.com/iamkun/dayjs/issues/1289)) ([de49bb1](https://github.com/iamkun/dayjs/commit/de49bb100badfb92b9a5933cc568841f340a923f))
+* escape last period to match only milliseconds ([#1239](https://github.com/iamkun/dayjs/issues/1239)) ([#1295](https://github.com/iamkun/dayjs/issues/1295)) ([64037e6](https://github.com/iamkun/dayjs/commit/64037e6a8cf303dcfd2b954f309bd9691f87fffc))
+
+
+### Features
+
+* add ES6 Module Support, package.json module point to "esm/index.js" ([#1298](https://github.com/iamkun/dayjs/issues/1298)) ([f63375d](https://github.com/iamkun/dayjs/commit/f63375dea89becbd3bb2bb8ea7289c58c752bfed)), closes [#598](https://github.com/iamkun/dayjs/issues/598) [#313](https://github.com/iamkun/dayjs/issues/313)
+
+## [1.9.8](https://github.com/iamkun/dayjs/compare/v1.9.7...v1.9.8) (2020-12-27)
+
+
+### Bug Fixes
+
+* fix Ukrainian [uk] locale typo ([1605cc0](https://github.com/iamkun/dayjs/commit/1605cc0f6fe0e9c46a92d529bc9cd6e130432337))
+* update Hebrew [he] locale for double units ([#1287](https://github.com/iamkun/dayjs/issues/1287)) ([1c4b0da](https://github.com/iamkun/dayjs/commit/1c4b0da1468522e59dc9ee646d10dd2b31477d99))
+* update zh locale meridiem "noon" ([0e7ff3d](https://github.com/iamkun/dayjs/commit/0e7ff3dd29ca3aed85cb76dfcb8298d326e26542))
+* update zh-cn locale definition of noon ([#1278](https://github.com/iamkun/dayjs/issues/1278)) ([d5930b9](https://github.com/iamkun/dayjs/commit/d5930b96ff884f4176ca3fcb1bc95e8f1ec75c71))
+
+## [1.9.7](https://github.com/iamkun/dayjs/compare/v1.9.6...v1.9.7) (2020-12-05)
+
+
+### Bug Fixes
+
+* add duration.format to format a Duration ([#1202](https://github.com/iamkun/dayjs/issues/1202)) ([9a859a1](https://github.com/iamkun/dayjs/commit/9a859a147ba223a1eeff0f2bb6f33d97e0ccc6c7))
+* Add function handling for relativeTime.future and relativeTime.past ([#1197](https://github.com/iamkun/dayjs/issues/1197)) ([ef1979c](https://github.com/iamkun/dayjs/commit/ef1979ce85c61fe2d759ef3c37cb6aaf2358094f))
+* avoid install installed plugin ([#1214](https://github.com/iamkun/dayjs/issues/1214)) ([a92eb6c](https://github.com/iamkun/dayjs/commit/a92eb6c4dc1437ec920e69484d52984f5921a8ea))
+* avoid memory leak after installing a plugin too many times ([b8d2e32](https://github.com/iamkun/dayjs/commit/b8d2e32a9eb59661a7ed6200daa070687becaebd))
+* fix diff bug when UTC plugin enabled ([#1201](https://github.com/iamkun/dayjs/issues/1201)) ([9544ed2](https://github.com/iamkun/dayjs/commit/9544ed2a6c466b8308d26b33a388a6737435a1f4)), closes [#1200](https://github.com/iamkun/dayjs/issues/1200)
+* fix startOf/endOf bug in timezone plugin ([#1229](https://github.com/iamkun/dayjs/issues/1229)) ([eb5fbc4](https://github.com/iamkun/dayjs/commit/eb5fbc4c7d1b62a8615d2f263b404a9515d8e15c))
+* fix utc plugin diff edge case ([#1187](https://github.com/iamkun/dayjs/issues/1187)) ([971b3d4](https://github.com/iamkun/dayjs/commit/971b3d40b4c9403165138f1034e2223cd97c3abf))
+* update customParseFormat plugin to parse 2-digit offset ([#1209](https://github.com/iamkun/dayjs/issues/1209)) ([b56936a](https://github.com/iamkun/dayjs/commit/b56936ab77b8f6289a1b77d49307b495c4bf9f91)), closes [#1205](https://github.com/iamkun/dayjs/issues/1205)
+* Update timezone plugin type definition ([#1221](https://github.com/iamkun/dayjs/issues/1221)) ([34cfb92](https://github.com/iamkun/dayjs/commit/34cfb920b9653ad44d4b31fe49e533692a3ce01b))
+
+## [1.9.6](https://github.com/iamkun/dayjs/compare/v1.9.5...v1.9.6) (2020-11-10)
+
+
+### Bug Fixes
+
+* fix customParseFormat plugin parsing date bug ([#1198](https://github.com/iamkun/dayjs/issues/1198)) ([50f05ad](https://github.com/iamkun/dayjs/commit/50f05ad3addf27827c5657ae7519514e40d9faec)), closes [#1194](https://github.com/iamkun/dayjs/issues/1194)
+* Update lv (Latvian) locale relative time ([#1192](https://github.com/iamkun/dayjs/issues/1192)) ([6d6c684](https://github.com/iamkun/dayjs/commit/6d6c6841b13ba4f7e69de92caf132a3592c5253a))
+
+## [1.9.5](https://github.com/iamkun/dayjs/compare/v1.9.4...v1.9.5) (2020-11-05)
+
+
+### Bug Fixes
+
+* customParseFormat plugin supports parsing localizedFormats ([#1110](https://github.com/iamkun/dayjs/issues/1110)) ([402b603](https://github.com/iamkun/dayjs/commit/402b603aa3ee4199786950bc88b3fdc6b527aa35))
+* fix customParseFormat plugin parse meridiem bug ([#1169](https://github.com/iamkun/dayjs/issues/1169)) ([9e8f8d9](https://github.com/iamkun/dayjs/commit/9e8f8d96c69d557f4d267f42567c25ae9e7ab227)), closes [#1168](https://github.com/iamkun/dayjs/issues/1168)
+* fix devHelper error in umd bundle in browser ([#1165](https://github.com/iamkun/dayjs/issues/1165)) ([d11b5ee](https://github.com/iamkun/dayjs/commit/d11b5ee7dc11af671355f65ccda00f6ba42cc725))
+* fix utc plugin diff bug in DST ([#1171](https://github.com/iamkun/dayjs/issues/1171)) ([f8da3fe](https://github.com/iamkun/dayjs/commit/f8da3fe7e50c84c0502bf5be0b364910922dbd79)), closes [#1097](https://github.com/iamkun/dayjs/issues/1097) [#1021](https://github.com/iamkun/dayjs/issues/1021)
+* isoWeek plugin type ([#1177](https://github.com/iamkun/dayjs/issues/1177)) ([c3d0436](https://github.com/iamkun/dayjs/commit/c3d0436b06f74989e3a2c751a5d170f8072c4aad))
+* update localeData plugin to support meridiem ([#1174](https://github.com/iamkun/dayjs/issues/1174)) ([fdb09e4](https://github.com/iamkun/dayjs/commit/fdb09e4074cc7e8f6196846f18d3566c1f9e8fcd)), closes [#1172](https://github.com/iamkun/dayjs/issues/1172)
+* update timezone plugin parse Date instance / timestamp logic & remove useless test ([#1183](https://github.com/iamkun/dayjs/issues/1183)) ([a7f858b](https://github.com/iamkun/dayjs/commit/a7f858bb70ad81f718ba35c479e84b54eace48b2))
+
+## [1.9.4](https://github.com/iamkun/dayjs/compare/v1.9.3...v1.9.4) (2020-10-23)
+
+
+### Bug Fixes
+
+* Add descriptions to types ([#1148](https://github.com/iamkun/dayjs/issues/1148)) ([9a407a1](https://github.com/iamkun/dayjs/commit/9a407a140b089345a387d1aceab4d0d1635229c7))
+* add devHelper plugin ([#1163](https://github.com/iamkun/dayjs/issues/1163)) ([de49dc8](https://github.com/iamkun/dayjs/commit/de49dc80c83b85de4170571b64412bd60ada221b))
+* Fix Hungarian (hu) locale ([#1112](https://github.com/iamkun/dayjs/issues/1112)) ([ab13754](https://github.com/iamkun/dayjs/commit/ab13754f43c5033dacaa0eb2042dc4ab1a7a2754))
+* fix minMax plugin parsing empty array bug ([#1062](https://github.com/iamkun/dayjs/issues/1062)) ([368108b](https://github.com/iamkun/dayjs/commit/368108bc6d5cb1542f711b8eba722bd4dfaab0cd))
+* update adding/subtracting Duration from Dayjs object ([#1156](https://github.com/iamkun/dayjs/issues/1156)) ([f861aca](https://github.com/iamkun/dayjs/commit/f861acac3e83e28d3a4a96312c71119fd6b544fc))
+* update en-NZ locale to use proper ordinal formatting function ([#1143](https://github.com/iamkun/dayjs/issues/1143)) ([fcdbc58](https://github.com/iamkun/dayjs/commit/fcdbc5880710456a29b2bacf250542230bf48b99))
+* update localeData plugin type ([#1116](https://github.com/iamkun/dayjs/issues/1116)) ([ee5a4ec](https://github.com/iamkun/dayjs/commit/ee5a4ec41edddfb57d103c35182dc635c9264a10))
+* update timezone plugin to support custom parse format ([#1160](https://github.com/iamkun/dayjs/issues/1160)) ([48cbf31](https://github.com/iamkun/dayjs/commit/48cbf3118ba5427de428777c2e025896db654f2e)), closes [#1159](https://github.com/iamkun/dayjs/issues/1159)
+* update timezone plugin to support keepLocalTime ([#1161](https://github.com/iamkun/dayjs/issues/1161)) ([1d429e5](https://github.com/iamkun/dayjs/commit/1d429e5fe4467ebddcf81b43cf6f36e5e3be944c)), closes [#1149](https://github.com/iamkun/dayjs/issues/1149)
+
+## [1.9.3](https://github.com/iamkun/dayjs/compare/v1.9.2...v1.9.3) (2020-10-13)
+
+
+### Bug Fixes
+
+* fix localizedFormat export error ([#1133](https://github.com/iamkun/dayjs/issues/1133)) ([deecd6a](https://github.com/iamkun/dayjs/commit/deecd6ab8a2f4173ee7046f6b568b41fd2677531)), closes [#1132](https://github.com/iamkun/dayjs/issues/1132)
+
+## [1.9.2](https://github.com/iamkun/dayjs/compare/v1.9.1...v1.9.2) (2020-10-13)
+
+
+### Bug Fixes
+
+* add arraySupport plugin ([#1129](https://github.com/iamkun/dayjs/issues/1129)) ([be505c2](https://github.com/iamkun/dayjs/commit/be505c2c540261027342cecc55d8919a3d18d893))
+* export type of duration plugin ([#1094](https://github.com/iamkun/dayjs/issues/1094)) ([2c92e71](https://github.com/iamkun/dayjs/commit/2c92e71bf55d09601120cdf433da7a19cc8abff6))
+* Fix LocaleData plugin longDateFormat lowercase error ([#1101](https://github.com/iamkun/dayjs/issues/1101)) ([7937ccd](https://github.com/iamkun/dayjs/commit/7937ccdeac47d094a60e65ebb62a6020b81c46f4))
+* Fix objectSupport plugin bug in UTC ([#1107](https://github.com/iamkun/dayjs/issues/1107)) ([fe90bb6](https://github.com/iamkun/dayjs/commit/fe90bb6944f2ff1969ca975954d303b449dfa95b)), closes [#1105](https://github.com/iamkun/dayjs/issues/1105)
+* fix Serbian locale grammar (sr, sr-cyrl) ([#1108](https://github.com/iamkun/dayjs/issues/1108)) ([cc87eff](https://github.com/iamkun/dayjs/commit/cc87eff8b75b0d86ce0956516319d402bccae6c0))
+* Fix typo for "monday" in arabic ([#1067](https://github.com/iamkun/dayjs/issues/1067)) ([2e1e426](https://github.com/iamkun/dayjs/commit/2e1e42650124f30282dc4d710798d576b928f1c7))
+* support dayjs.add(Duration), dayjs.subtract(Duration) ([#1099](https://github.com/iamkun/dayjs/issues/1099)) ([b1a0294](https://github.com/iamkun/dayjs/commit/b1a02942c5238203aaa04ce9a074c73742324ab7))
+* update Breton [br] locale relativeTime config ([#1103](https://github.com/iamkun/dayjs/issues/1103)) ([b038bfd](https://github.com/iamkun/dayjs/commit/b038bfdb128889d677c95534d2be29cc30c9e72f))
+* update Catalan [ca] locale ordinal ([73da380](https://github.com/iamkun/dayjs/commit/73da38024c8b550bdcfbe3ff7e578e742c7aecf2))
+* update German [de] locale relativeTime config ([#1109](https://github.com/iamkun/dayjs/issues/1109)) ([f6e771b](https://github.com/iamkun/dayjs/commit/f6e771b70f93d19ebb12e6b794aa4628a1796248))
+* update localeData plugin to add longDateFormat to global localeData ([#1106](https://github.com/iamkun/dayjs/issues/1106)) ([16937d1](https://github.com/iamkun/dayjs/commit/16937d16e053b8c1d4a607622fa2fdbfd9809832))
+* Update objectSupport plugin to return current date time while parsing empty object ([f56783e](https://github.com/iamkun/dayjs/commit/f56783e14d8cf50916b015e7188b23bb6fbca839))
+
+## [1.9.1](https://github.com/iamkun/dayjs/compare/v1.9.0...v1.9.1) (2020-09-28)
+
+
+### Bug Fixes
+
+* Fix objectSupport plugin to get the correct result (zero-based month) ([#1089](https://github.com/iamkun/dayjs/issues/1089)) ([f95ac15](https://github.com/iamkun/dayjs/commit/f95ac15a4577ae5a3d1ce353872a2cd9fc454bc2))
+
+# [1.9.0](https://github.com/iamkun/dayjs/compare/v1.8.36...v1.9.0) (2020-09-28)
+
+
+### Bug Fixes
+
+* Add `setDefault` typing to timezone.d.ts ([#1057](https://github.com/iamkun/dayjs/issues/1057)) ([c0f0886](https://github.com/iamkun/dayjs/commit/c0f088620f17260e6e3ebce7697d561b5623f5f3))
+* fix DST bug in utc plugin ([#1053](https://github.com/iamkun/dayjs/issues/1053)) ([3d73543](https://github.com/iamkun/dayjs/commit/3d7354361f042ced1176d91f9ae9edffe6173425))
+* Fix optional type for timezone plugin ([#1081](https://github.com/iamkun/dayjs/issues/1081)) ([a6ebcf2](https://github.com/iamkun/dayjs/commit/a6ebcf283a83273562dce5663155e3b3a12ea9a5)), closes [#1079](https://github.com/iamkun/dayjs/issues/1079)
+* Fix timezone plugin conversion bug ([#1073](https://github.com/iamkun/dayjs/issues/1073)) ([16816a3](https://github.com/iamkun/dayjs/commit/16816a31ff43220aca9d1d179df6b729182abb55))
+* update duration plugin type file ([#1065](https://github.com/iamkun/dayjs/issues/1065)) ([94af9af](https://github.com/iamkun/dayjs/commit/94af9af27c5bc182cbb24f1845e561dd1d82d776))
+* update timezone plugin to support getting offset name e.g. EST ([#1069](https://github.com/iamkun/dayjs/issues/1069)) ([cbb755e](https://github.com/iamkun/dayjs/commit/cbb755e5c68d49c5678291f3ce832b32831a056e))
+* update utc plugin to support keepLocalTime `.utc(true)` ([#1080](https://github.com/iamkun/dayjs/issues/1080)) ([5ce4e0d](https://github.com/iamkun/dayjs/commit/5ce4e0d2f552f3645262537ff7afdc946f5a7e72))
+
+
+### Features
+
+* Correct casing for en-sg locale name ([#1048](https://github.com/iamkun/dayjs/issues/1048)) ([2edaddc](https://github.com/iamkun/dayjs/commit/2edaddc22a7eb914f915531f389766217acd7034))
+
+## [1.8.36](https://github.com/iamkun/dayjs/compare/v1.8.35...v1.8.36) (2020-09-17)
+
+
+### Bug Fixes
+
+* Add Amharic (am) locale ([#1046](https://github.com/iamkun/dayjs/issues/1046)) ([cdc49a1](https://github.com/iamkun/dayjs/commit/cdc49a1911c74b7ea96ed222f42796d53715cfed))
+* Export Duration type in duration plugin ([#1043](https://github.com/iamkun/dayjs/issues/1043)) ([0f20c3a](https://github.com/iamkun/dayjs/commit/0f20c3ac75d9ac1026a15a7bb343d3a150d9b30f))
+* Fix duration plugin parsing milliseconds bug ([#1042](https://github.com/iamkun/dayjs/issues/1042)) ([fe2301b](https://github.com/iamkun/dayjs/commit/fe2301b22318886aaa89ed1620e0a118e98c2b8a))
+* Timezone plugin set default timezone ([#1033](https://github.com/iamkun/dayjs/issues/1033)) ([0c2050a](https://github.com/iamkun/dayjs/commit/0c2050a152da708b01edd6150a5013f642b14576))
+* Timezone plugin should have the same behavior in latest ICU version ([#1032](https://github.com/iamkun/dayjs/issues/1032)) ([de31592](https://github.com/iamkun/dayjs/commit/de315921575cc50c38464b27d0338e30a54d8e2a))
+* Update Finnish (fi) locale ([#963](https://github.com/iamkun/dayjs/issues/963)) ([cf8b6a0](https://github.com/iamkun/dayjs/commit/cf8b6a096f24b54cbdb95675ac386d8ac85ea616))
+* Update Polish (pl) , Hungarian (hr) and Lithuanian (lt) localization ([#1045](https://github.com/iamkun/dayjs/issues/1045)) ([638fd39](https://github.com/iamkun/dayjs/commit/638fd394fc24f4188390faf387da6b156e7c6320))
+
+## [1.8.35](https://github.com/iamkun/dayjs/compare/v1.8.34...v1.8.35) (2020-09-02)
+
+
+### Bug Fixes
+
+* Fix BadMutable plugin bug in .diff ([#1023](https://github.com/iamkun/dayjs/issues/1023)) ([40ab6d9](https://github.com/iamkun/dayjs/commit/40ab6d9a53e8047cfca63c611c25dd045372d021))
+* fix LocaleData plugin to support instance.weekdays() API ([#1019](https://github.com/iamkun/dayjs/issues/1019)) ([a09d259](https://github.com/iamkun/dayjs/commit/a09d259a407b81d1cb6bb5623fad551c775d8674)), closes [#1017](https://github.com/iamkun/dayjs/issues/1017)
+* Update Dutch (nl) locale to set correct yearStart ([1533a2c](https://github.com/iamkun/dayjs/commit/1533a2cc1475270032da2d87b19fc3d62327e6e3))
+
+## [1.8.34](https://github.com/iamkun/dayjs/compare/v1.8.33...v1.8.34) (2020-08-20)
+
+
+### Bug Fixes
+
+* Fix Timezone plugin to preserve milliseconds while changing timezone ([#1003](https://github.com/iamkun/dayjs/issues/1003)) ([5f446ed](https://github.com/iamkun/dayjs/commit/5f446eda770fa97e895c81a8195b3ba5d082cef0)), closes [#1002](https://github.com/iamkun/dayjs/issues/1002)
+* support parsing unlimited decimals of millisecond ([#1010](https://github.com/iamkun/dayjs/issues/1010)) ([d1bdd36](https://github.com/iamkun/dayjs/commit/d1bdd36a56e3d1786523a180e3fc18068f609135)), closes [#544](https://github.com/iamkun/dayjs/issues/544)
+* update Duration plugin to support global locale ([#1008](https://github.com/iamkun/dayjs/issues/1008)) ([1c49c83](https://github.com/iamkun/dayjs/commit/1c49c83e79811eede13db6372b5d65db598aee77)), closes [#1007](https://github.com/iamkun/dayjs/issues/1007)
+
+## [1.8.33](https://github.com/iamkun/dayjs/compare/v1.8.32...v1.8.33) (2020-08-10)
+
+
+### Bug Fixes
+
+* Add PluralGetSet plugin for plural getters/setters ([#996](https://github.com/iamkun/dayjs/issues/996)) ([f76e3ce](https://github.com/iamkun/dayjs/commit/f76e3ce2fbe5d3e9ed9121086baf55eb0cc4d355))
+* Add typescript type defs in esm build ([#985](https://github.com/iamkun/dayjs/issues/985)) ([50e3b3c](https://github.com/iamkun/dayjs/commit/50e3b3c6719cb0b4ec6eff394dacd63d5db8f253))
+* Fix isoWeek Plugin cal bug in UTC mode ([#993](https://github.com/iamkun/dayjs/issues/993)) ([f2e5f32](https://github.com/iamkun/dayjs/commit/f2e5f327aaf12b4572296ec6e107ecc05fcf76e7))
+* Fix Timezone plugin parsing js date, Day.js object, timestamp bug && update type file ([#994](https://github.com/iamkun/dayjs/issues/994)) ([22f3d49](https://github.com/iamkun/dayjs/commit/22f3d49405da98db6da56d1673eebcd01b57554b)), closes [#992](https://github.com/iamkun/dayjs/issues/992) [#989](https://github.com/iamkun/dayjs/issues/989)
+* Fix Timezone plugin UTCOffset rounding bug ([#987](https://github.com/iamkun/dayjs/issues/987)) ([b07182b](https://github.com/iamkun/dayjs/commit/b07182bbdf5aef7f6bf1e88fcd38432e2b8ee465)), closes [#986](https://github.com/iamkun/dayjs/issues/986)
+* Fix UTC plugin bug while comparing an utc instance to a local one ([#995](https://github.com/iamkun/dayjs/issues/995)) ([747c0fb](https://github.com/iamkun/dayjs/commit/747c0fb4eba6353755b5dad3417fd8d5a408c378))
+* Update pt-br locale weekStart 0 ([#984](https://github.com/iamkun/dayjs/issues/984)) ([0f881c1](https://github.com/iamkun/dayjs/commit/0f881c18efb02b9d0ba7f76cba92bb504226fa95))
+
+## [1.8.32](https://github.com/iamkun/dayjs/compare/v1.8.31...v1.8.32) (2020-08-04)
+
+
+### Bug Fixes
+
+* Add Experimental Timezone Plugin ([#974](https://github.com/iamkun/dayjs/issues/974)) ([e69caba](https://github.com/iamkun/dayjs/commit/e69caba1b0957241a855aa0ae38db899fa2c3795))
+* fix parse date string error e.g. '2020/9/30' ([#980](https://github.com/iamkun/dayjs/issues/980)) ([231790d](https://github.com/iamkun/dayjs/commit/231790da62af0494732960c2c50d86ae9bf63ec6)), closes [#979](https://github.com/iamkun/dayjs/issues/979)
+* update monthDiff function to get more accurate results ([19e8a7f](https://github.com/iamkun/dayjs/commit/19e8a7f2f7582b717f49d446822e39603694433c))
+* Update UTC plugin to support keepLocalTime ([#973](https://github.com/iamkun/dayjs/issues/973)) ([9f488e5](https://github.com/iamkun/dayjs/commit/9f488e5aca92f0b4c2951459436829d79f86d8d7))
+
+## [1.8.31](https://github.com/iamkun/dayjs/compare/v1.8.30...v1.8.31) (2020-07-29)
+
+
+### Bug Fixes
+
+* Rollback LocalePresetType to string ([#968](https://github.com/iamkun/dayjs/issues/968)) ([b342bd3](https://github.com/iamkun/dayjs/commit/b342bd3d84987d6c7587a0c4590d614fb0e670d7))
+* Update Regex to parse 'YYYY' correctly ([#969](https://github.com/iamkun/dayjs/issues/969)) ([70c1239](https://github.com/iamkun/dayjs/commit/70c123990dcc6bd479fa2b5d7f9985127872a826))
+
+## [1.8.30](https://github.com/iamkun/dayjs/compare/v1.8.29...v1.8.30) (2020-07-22)
+
+
+### Bug Fixes
+
+* Add Haitian Creole (ht) and Spanish Puerto Rico (es-pr) locale configs ([#958](https://github.com/iamkun/dayjs/issues/958)) ([b2642e2](https://github.com/iamkun/dayjs/commit/b2642e2d1f87734a34808c66e5176cb18bc0414d))
+* Fix UTC plugin wrong hour bug while adding month or year ([#957](https://github.com/iamkun/dayjs/issues/957)) ([28ae070](https://github.com/iamkun/dayjs/commit/28ae070024ff26685c88ce4cc8747307e86923c9))
+* Update French (fr) locale to set correct yearStart ([14ab808](https://github.com/iamkun/dayjs/commit/14ab808a7b7e226f2eb2cbe894916a18ed5d967d)), closes [#956](https://github.com/iamkun/dayjs/issues/956)
+
+## [1.8.29](https://github.com/iamkun/dayjs/compare/v1.8.28...v1.8.29) (2020-07-02)
+
+
+### Bug Fixes
+
+* Duration plugin supports parse ISO string with week (W) ([#950](https://github.com/iamkun/dayjs/issues/950)) ([f0fc12a](https://github.com/iamkun/dayjs/commit/f0fc12adadcab53fb0577ad8f5e2f1cf784fd8f5))
+* LocaleData plugin supports locale order ([#938](https://github.com/iamkun/dayjs/issues/938)) ([62f429d](https://github.com/iamkun/dayjs/commit/62f429db73a0a069b1267231dea172b85f4b90e3)), closes [#936](https://github.com/iamkun/dayjs/issues/936)
+* Update type definition to support array format ([#945](https://github.com/iamkun/dayjs/issues/945)) ([81d4740](https://github.com/iamkun/dayjs/commit/81d4740511d47e34f891b21afeb0449ef8a28688)), closes [#944](https://github.com/iamkun/dayjs/issues/944)
+* Update type definition to support strict mode ([#951](https://github.com/iamkun/dayjs/issues/951)) ([8d54f3f](https://github.com/iamkun/dayjs/commit/8d54f3f7d4d161e72c767fa09699e70a2b3d681c))
+
+## [1.8.28](https://github.com/iamkun/dayjs/compare/v1.8.27...v1.8.28) (2020-05-28)
+
+
+### Bug Fixes
+
+* Fix CustomParseFormat plugin month index error ([#918](https://github.com/iamkun/dayjs/issues/918)) ([fa2ec7f](https://github.com/iamkun/dayjs/commit/fa2ec7fcb980dcd2c7498dafe2f9ca2e52d735cf)), closes [#915](https://github.com/iamkun/dayjs/issues/915)
+* Update Ukrainian (uk) locale monthFormat and monthStandalone ([#899](https://github.com/iamkun/dayjs/issues/899)) ([a08756e](https://github.com/iamkun/dayjs/commit/a08756e80bd1d7126fca28c5ad9e382613fc86c4))
+
+## [1.8.27](https://github.com/iamkun/dayjs/compare/v1.8.26...v1.8.27) (2020-05-14)
+
+
+### Bug Fixes
+
+* Add Kinyarwanda (rw) locale ([#903](https://github.com/iamkun/dayjs/issues/903)) ([f355235](https://github.com/iamkun/dayjs/commit/f355235a836540d77880959fb1b614c87e9f7b3e))
+* Add plugin objectSupport ([#887](https://github.com/iamkun/dayjs/issues/887)) ([52dfb13](https://github.com/iamkun/dayjs/commit/52dfb13a6b84f0a753cc5761192b92416f440961))
+* Add Turkmen (tk) locale ([#893](https://github.com/iamkun/dayjs/issues/893)) ([a9ca8dc](https://github.com/iamkun/dayjs/commit/a9ca8dcbbd0964c5b9abb4e8a2d620c983cf091a))
+* Fix CustomParseFormat plugin set locale error ([#896](https://github.com/iamkun/dayjs/issues/896)) ([8035c8a](https://github.com/iamkun/dayjs/commit/8035c8a760549b631252252718db3cdc4ab2f68f))
+* Fix locale month function bug ([#908](https://github.com/iamkun/dayjs/issues/908)) ([bf347c3](https://github.com/iamkun/dayjs/commit/bf347c36e401f50727fb5afcc537497b54b90d6b))
+* Update CustomParseFormat plugin to support Array formats ([#906](https://github.com/iamkun/dayjs/issues/906)) ([97856c6](https://github.com/iamkun/dayjs/commit/97856c603ef5fbbeb1cf8a42387479e56a77dbe8))
+
+## [1.8.26](https://github.com/iamkun/dayjs/compare/v1.8.25...v1.8.26) (2020-04-30)
+
+
+### Bug Fixes
+
+* Fix Duration plugin `.toISOString` format bug ([#889](https://github.com/iamkun/dayjs/issues/889)) ([058d624](https://github.com/iamkun/dayjs/commit/058d624808fd2be024ae846bcb2e03885f39b556)), closes [#888](https://github.com/iamkun/dayjs/issues/888)
+* Fix WeekOfYear plugin bug while using BadMutable plugin ([#884](https://github.com/iamkun/dayjs/issues/884)) ([2977438](https://github.com/iamkun/dayjs/commit/2977438458542573a4500e21f7ba5d1f8442960e))
+* Update CustomParseFormat plugin strict mode ([#882](https://github.com/iamkun/dayjs/issues/882)) ([db642ac](https://github.com/iamkun/dayjs/commit/db642ac73e52e00d8c41546b2935c9e691cf66e0))
+* Update RelativeTime plugin default config ([#883](https://github.com/iamkun/dayjs/issues/883)) ([0606f42](https://github.com/iamkun/dayjs/commit/0606f425aef8ccbfc3da3e43cba368130603b0cc))
+
+## [1.8.25](https://github.com/iamkun/dayjs/compare/v1.8.24...v1.8.25) (2020-04-21)
+
+
+### Bug Fixes
+
+* Fix CustomParseFormat plugin of parsing only YYYY / YYYY-MM bug ([#873](https://github.com/iamkun/dayjs/issues/873)) ([3cea04d](https://github.com/iamkun/dayjs/commit/3cea04d33d54d44bbdd3d026b5c7f67ebf176116)), closes [#849](https://github.com/iamkun/dayjs/issues/849)
+* Fix Duration plugin get seconds ([#867](https://github.com/iamkun/dayjs/issues/867)) ([62b092d](https://github.com/iamkun/dayjs/commit/62b092d9f9a3db5506ef01f798bdf211f163f53f))
+* Fix type definition of locale ([9790b85](https://github.com/iamkun/dayjs/commit/9790b853e6113243a7f4a81dd12c6509e406a102))
+* Fix UTC plugin startOf, endOf bug ([#872](https://github.com/iamkun/dayjs/issues/872)) ([4141084](https://github.com/iamkun/dayjs/commit/4141084ba96d35cadcda3f1e661bf1d0f6c8e4de)), closes [#809](https://github.com/iamkun/dayjs/issues/809) [#808](https://github.com/iamkun/dayjs/issues/808)
+
+## [1.8.24](https://github.com/iamkun/dayjs/compare/v1.8.23...v1.8.24) (2020-04-10)
+
+
+### Bug Fixes
+
+* Add config option to RelativeTime plugin ([#851](https://github.com/iamkun/dayjs/issues/851)) ([bd24034](https://github.com/iamkun/dayjs/commit/bd24034b95bfc656024b75ef3f3c986708845fed))
+* add Duration plugin ([#858](https://github.com/iamkun/dayjs/issues/858)) ([d568273](https://github.com/iamkun/dayjs/commit/d568273223199ca0497f238e2cc3a8d3dcf32d0f))
+* Add en-in, en-tt locales ([#855](https://github.com/iamkun/dayjs/issues/855)) ([c39fb96](https://github.com/iamkun/dayjs/commit/c39fb96e2a9102c14b004c14a6c073af9d266f2f))
+* add isToday, isTomorrow, isYesterday plugins ([#857](https://github.com/iamkun/dayjs/issues/857)) ([fc08ab6](https://github.com/iamkun/dayjs/commit/fc08ab68f8a28269802deeab9d6b0473b92cdc51))
+* Add option callback to Calendar plugin ([#839](https://github.com/iamkun/dayjs/issues/839)) ([b25be90](https://github.com/iamkun/dayjs/commit/b25be9094325295310c8fc5e617fb058be8a5f68))
+* Fix monthsShort for locale fr ([#862](https://github.com/iamkun/dayjs/issues/862)) ([d2de9a0](https://github.com/iamkun/dayjs/commit/d2de9a0b44b830038ed0094f79bfd40726311f2a))
+* Update Breton locale (br) meridiem config ([#856](https://github.com/iamkun/dayjs/issues/856)) ([a2a6672](https://github.com/iamkun/dayjs/commit/a2a66720abb788a8f1cffbfd0929b35579f29c72))
+* Update Ukrainian (uk) locale relative time ([#842](https://github.com/iamkun/dayjs/issues/842)) ([578bc1a](https://github.com/iamkun/dayjs/commit/578bc1a23c6e737783bbac3da12c0ed5d1edcf82))
+
+## [1.8.23](https://github.com/iamkun/dayjs/compare/v1.8.22...v1.8.23) (2020-03-16)
+
+
+### Bug Fixes
+
+* Add Chinese (zh) locale ([f9b8945](https://github.com/iamkun/dayjs/commit/f9b89453166d8b53d33b1d7eefd9942022552e6e))
+* Fix IsoWeek plugin typescript definition ([#828](https://github.com/iamkun/dayjs/issues/828)) ([30aab0c](https://github.com/iamkun/dayjs/commit/30aab0c7bce85dfac0ae208a891def30f88b5cb4))
+* Update Arabic (ar) locale relative time ([#836](https://github.com/iamkun/dayjs/issues/836)) ([14044c6](https://github.com/iamkun/dayjs/commit/14044c6fda1229e3f0e5473d3f886bd79589b15f))
+* Update Slovak (sk) locale, Czech (cs) locale ([#833](https://github.com/iamkun/dayjs/issues/833)) ([f0d451f](https://github.com/iamkun/dayjs/commit/f0d451f795e9ebf752cd854d51b25b11de2343a3))
+* Update Thai (th) locale relativeTime ([#826](https://github.com/iamkun/dayjs/issues/826)) ([63b7c03](https://github.com/iamkun/dayjs/commit/63b7c03a6dbb0507d60776e8bad6cccde3828b88)), closes [#816](https://github.com/iamkun/dayjs/issues/816)
+
+## [1.8.22](https://github.com/iamkun/dayjs/compare/v1.8.21...v1.8.22) (2020-03-08)
+
+
+### Bug Fixes
+
+* Add IsoWeek plugin ([#811](https://github.com/iamkun/dayjs/issues/811)) ([28a2207](https://github.com/iamkun/dayjs/commit/28a2207ef9849afbac15dd29267b2e7a09cd3c16))
+* Fix unsupported locale fallback to previous one ([#819](https://github.com/iamkun/dayjs/issues/819)) ([4868715](https://github.com/iamkun/dayjs/commit/48687152cf5bee6a4c1b8ceea4bda8b9bab9be10))
+
+## [1.8.21](https://github.com/iamkun/dayjs/compare/v1.8.20...v1.8.21) (2020-02-26)
+
+
+### Bug Fixes
+
+* Set + Get accept 'D' as the short version of 'date' ([#795](https://github.com/iamkun/dayjs/issues/795)) ([523c038](https://github.com/iamkun/dayjs/commit/523c03880fa8bbad83214494ad02cd606cdb8b30))
+* Update DayOfYear plugin type ([#799](https://github.com/iamkun/dayjs/issues/799)) ([5809652](https://github.com/iamkun/dayjs/commit/5809652e40245b7759827d9bf317abdcfa75a330))
+* Update fi (Finnish) locale relativeTime ([#797](https://github.com/iamkun/dayjs/issues/797)) ([4a470fb](https://github.com/iamkun/dayjs/commit/4a470fbd6fef9e051727d0f26d53cc050b85935d))
+
+## [1.8.20](https://github.com/iamkun/dayjs/compare/v1.8.19...v1.8.20) (2020-02-04)
+
+
+### Bug Fixes
+
+* Add Bislama Locale (bi) ([#780](https://github.com/iamkun/dayjs/issues/780)) ([9ac6ab4](https://github.com/iamkun/dayjs/commit/9ac6ab481bc883dd4ecc02caab12c8b2fc218a42))
+* Fix weekOfYear plugin to support yearStart locale for better week number result ([#769](https://github.com/iamkun/dayjs/issues/769)) ([f00db36](https://github.com/iamkun/dayjs/commit/f00db36e70bc7beaca1abadeb30a9b1fbb3261ee))
+* Update et (Estonian) locale relativeTime ([#790](https://github.com/iamkun/dayjs/issues/790)) ([d8e0f45](https://github.com/iamkun/dayjs/commit/d8e0f45f6cd2d5e5704b9797929227454c92d1a5))
+* Update LocaleData plugin to support dayjs.localeData().weekdays() API ([287fed6](https://github.com/iamkun/dayjs/commit/287fed6db9eb4fd979b4861aca4dacbd32422533)), closes [#779](https://github.com/iamkun/dayjs/issues/779)
+* Update LocaleData plugin to support dayjs.months dayjs.weekdays API ([144c2ae](https://github.com/iamkun/dayjs/commit/144c2ae6e15fbf89e3acd7c8cb9e237c5f6e1348)), closes [#779](https://github.com/iamkun/dayjs/issues/779)
+* Update pl locale fusional config ([d372475](https://github.com/iamkun/dayjs/commit/d3724758bb27d5b17587b995ba14e7e80dcd1151))
+
+## [1.8.19](https://github.com/iamkun/dayjs/compare/v1.8.18...v1.8.19) (2020-01-06)
+
+
+### Bug Fixes
+
+* Add UpdateLocale plugin to update a locale's properties ([#766](https://github.com/iamkun/dayjs/issues/766)) ([82ce2ba](https://github.com/iamkun/dayjs/commit/82ce2ba8d7e402e40f6d005d400eb5356a0b0633))
+* Fix CustomParseFormat Plugin 'YYYY-MM' use first day of the month ([ba709ec](https://github.com/iamkun/dayjs/commit/ba709eca86a71ae648bc68bf67d9abdc229198d4)), closes [#761](https://github.com/iamkun/dayjs/issues/761)
+* Fix CustomParseFormat Plugin to set correct locale ([66ce23f](https://github.com/iamkun/dayjs/commit/66ce23f2e18c5506e8f1a7ef20d3483a4df80087))
+* Fix WeekOfYear Plugin wrong calender week number bug ([79b86db](https://github.com/iamkun/dayjs/commit/79b86dbbf3cfd3f1e2165b3d479a7061ad1b6925)), closes [#760](https://github.com/iamkun/dayjs/issues/760)
+* Update RelativeTime plugin to support function to make additional processing ([#767](https://github.com/iamkun/dayjs/issues/767)) ([4bd9250](https://github.com/iamkun/dayjs/commit/4bd9250fbe7131e2fddfb5fa1b3350e8c2262ca9))
+* Update ru, uk, cs locale to support relativeTime with plural ([3f080f7](https://github.com/iamkun/dayjs/commit/3f080f7d6bfdc4018cbb7c4d0112ff1ead4ef6b8))
+
+## [1.8.18](https://github.com/iamkun/dayjs/compare/v1.8.17...v1.8.18) (2019-12-18)
+
+
+### Bug Fixes
+
+* Add missing locale type definition ([#716](https://github.com/iamkun/dayjs/issues/716)) ([cde5d0b](https://github.com/iamkun/dayjs/commit/cde5d0b91be7b2f5f3098de4aa0b9a4f0f28ea5c))
+* Fix .locale() handel unsupported locale ([78ec173](https://github.com/iamkun/dayjs/commit/78ec173fcecc1299516ab7b44f4554d431b4b2fd))
+* Update Italian locale (it) ([#727](https://github.com/iamkun/dayjs/issues/727)) ([5b53e98](https://github.com/iamkun/dayjs/commit/5b53e98c0a3ba0eb9573a9c77caeb907439be9e7))
+* Update locale (fa) ([#733](https://github.com/iamkun/dayjs/issues/733)) ([9ad2e47](https://github.com/iamkun/dayjs/commit/9ad2e47e0569b23991bb0d5578f49c792c12df08))
+* Update locale (zh-cn) ([#706](https://github.com/iamkun/dayjs/issues/706)) ([e31e544](https://github.com/iamkun/dayjs/commit/e31e54414fb90e1f54da13a117748ba37f52645d))
+* Update locale (zh-cn) meridiem ([#735](https://github.com/iamkun/dayjs/issues/735)) ([15d1b81](https://github.com/iamkun/dayjs/commit/15d1b813e7faf5a1f9d1ea6fc673fd27ac49d8b1))
+* Update LocaleData plugin to support dayjs().longDateFormat() ([#734](https://github.com/iamkun/dayjs/issues/734)) ([aa0f210](https://github.com/iamkun/dayjs/commit/aa0f210a1e3c4f6aba61c3b96f9eb445b43a33f0)), closes [#680](https://github.com/iamkun/dayjs/issues/680)
+* Update Mongolian (mn) locale relativeTime ([#753](https://github.com/iamkun/dayjs/issues/753)) ([6d51435](https://github.com/iamkun/dayjs/commit/6d51435092c0c94d8e50256d3f0f058cdd15febe))
+* Update Swedish locale (sv) fix ordinal error ([#745](https://github.com/iamkun/dayjs/issues/745)) ([49670d5](https://github.com/iamkun/dayjs/commit/49670d5ae31e4e21636cc5a8bfe35fef0f6d9e4a)), closes [#743](https://github.com/iamkun/dayjs/issues/743)
+
+## [1.8.17](https://github.com/iamkun/dayjs/compare/v1.8.16...v1.8.17) (2019-11-06)
+
+
+### Bug Fixes
+
+* Fix set utcOffset in utc mode ([d148115](https://github.com/iamkun/dayjs/commit/d148115dad8f1a5afc0a64e9b8163dfeba4616b6))
+* Update advancedFormat plugin to support w ww wo week tokens … ([#678](https://github.com/iamkun/dayjs/issues/678)) ([26cfa63](https://github.com/iamkun/dayjs/commit/26cfa63a524b803f7966dac5464f9cbf8f63387e)), closes [#676](https://github.com/iamkun/dayjs/issues/676)
+* Update ka locale weekdays ([f8ca3d4](https://github.com/iamkun/dayjs/commit/f8ca3d4ba1d3cbe41613d3909c0627935a51a0c4))
+* Update nb locale ([#679](https://github.com/iamkun/dayjs/issues/679)) ([1063b0e](https://github.com/iamkun/dayjs/commit/1063b0e1b5c19a1354d233cc0f21438e7073233a))
+* Update Polish locale (pl)([#713](https://github.com/iamkun/dayjs/issues/713)) ([30d2f02](https://github.com/iamkun/dayjs/commit/30d2f026b47188833a4f44fee4bab52467d4a718))
+* Update Ukrainian locale (uk) ([#710](https://github.com/iamkun/dayjs/issues/710)) ([360161c](https://github.com/iamkun/dayjs/commit/360161cac75f597fdd51d9d1ff138601282a1b4b))
+* UTC plugin set utcOffset value ([#668](https://github.com/iamkun/dayjs/issues/668)) ([8877883](https://github.com/iamkun/dayjs/commit/88778838e71dd309e79cd1a8094d5bea36ca3390))
+
+## [1.8.16](https://github.com/iamkun/dayjs/compare/v1.8.15...v1.8.16) (2019-08-27)
+
+
+### Bug Fixes
+
+* Fix relativeTime Plugin .FromNow() result error in UTC mode ([a385d5c](https://github.com/iamkun/dayjs/commit/a385d5c))
+* Handle locale in WeekOfYear plugin ([#658](https://github.com/iamkun/dayjs/issues/658)) ([0e45b0a](https://github.com/iamkun/dayjs/commit/0e45b0a))
+* LocaleData plugin returns all months and weekdays data when pas no argument ([#645](https://github.com/iamkun/dayjs/issues/645)) ([95e70b4](https://github.com/iamkun/dayjs/commit/95e70b4))
+* Return null in toJSON if not valid ([#633](https://github.com/iamkun/dayjs/issues/633)) ([19affc8](https://github.com/iamkun/dayjs/commit/19affc8))
+* Update Danish (da) locale ([#626](https://github.com/iamkun/dayjs/issues/626)) ([ac2ec77](https://github.com/iamkun/dayjs/commit/ac2ec77))
+* Update Korean locale meridiem ([#642](https://github.com/iamkun/dayjs/issues/642)) ([b457146](https://github.com/iamkun/dayjs/commit/b457146))
+* update Occitan locale Catalan locale ([#630](https://github.com/iamkun/dayjs/issues/630)) ([fef135e](https://github.com/iamkun/dayjs/commit/fef135e))
+* update pt-br locale ([#628](https://github.com/iamkun/dayjs/issues/628)) ([ccf596d](https://github.com/iamkun/dayjs/commit/ccf596d))
+* Update weekdaysShort to some locale files ([#643](https://github.com/iamkun/dayjs/issues/643)) ([cc1f15f](https://github.com/iamkun/dayjs/commit/cc1f15f))
+
+## [1.8.15](https://github.com/iamkun/dayjs/compare/v1.8.14...v1.8.15) (2019-07-08)
+
+
+### Bug Fixes
+
+* Fix dayjs.locale() returns current global locale ([#602](https://github.com/iamkun/dayjs/issues/602)) ([790cd1a](https://github.com/iamkun/dayjs/commit/790cd1a))
+* Fix incorrect Thai locale translation of July ([#607](https://github.com/iamkun/dayjs/issues/607)) ([43cbfd3](https://github.com/iamkun/dayjs/commit/43cbfd3))
+* Lowercase french locale months and weekdays ([#615](https://github.com/iamkun/dayjs/issues/615)) ([e5a257c](https://github.com/iamkun/dayjs/commit/e5a257c))
+* Type - Export Ls object to query all available locales ([#623](https://github.com/iamkun/dayjs/issues/623)) ([f6bfae0](https://github.com/iamkun/dayjs/commit/f6bfae0))
+* Update nb (Norsk Bokmål) locale ([#604](https://github.com/iamkun/dayjs/issues/604)) ([907f5c9](https://github.com/iamkun/dayjs/commit/907f5c9))
+* Update types of `.diff` API ([#617](https://github.com/iamkun/dayjs/issues/617)) ([f0f43d2](https://github.com/iamkun/dayjs/commit/f0f43d2))
+
+## [1.8.14](https://github.com/iamkun/dayjs/compare/v1.8.13...v1.8.14) (2019-05-07)
+
+
+### Bug Fixes
+
+* Fix `.format` API returns UTC offset when value is 0 bug ([b254964](https://github.com/iamkun/dayjs/commit/b254964))
+* Fix QuarterOfYear plugin bug ([#591](https://github.com/iamkun/dayjs/issues/591)) ([434f774](https://github.com/iamkun/dayjs/commit/434f774))
+* Fix UTC plugin add day DST bug ([#590](https://github.com/iamkun/dayjs/issues/590)) ([86cd839](https://github.com/iamkun/dayjs/commit/86cd839))
+
+## [1.8.13](https://github.com/iamkun/dayjs/compare/v1.8.12...v1.8.13) (2019-04-26)
+
+
+### Bug Fixes
+
+* Add missing relativeTime and formats for some locales ([#560](https://github.com/iamkun/dayjs/issues/560)) ([96b917e](https://github.com/iamkun/dayjs/commit/96b917e))
+* Add weekday (locale aware day of the week) plugin ([#569](https://github.com/iamkun/dayjs/issues/569)) ([9007cc5](https://github.com/iamkun/dayjs/commit/9007cc5)), closes [#559](https://github.com/iamkun/dayjs/issues/559)
+* Allow customizing "am" / "pm" strings with locale meridiem function ([#580](https://github.com/iamkun/dayjs/issues/580)) ([576e93e](https://github.com/iamkun/dayjs/commit/576e93e)), closes [#578](https://github.com/iamkun/dayjs/issues/578)
+* Fix `.add` day/week decimal rouding bug ([800f6c9](https://github.com/iamkun/dayjs/commit/800f6c9))
+* Fix `.diff` type definition error ([#565](https://github.com/iamkun/dayjs/issues/565)) ([c4921ae](https://github.com/iamkun/dayjs/commit/c4921ae)), closes [#561](https://github.com/iamkun/dayjs/issues/561)
+* Fix CustomParseFormat plugin bug ([#568](https://github.com/iamkun/dayjs/issues/568)) ([1f5a9db](https://github.com/iamkun/dayjs/commit/1f5a9db)), closes [#555](https://github.com/iamkun/dayjs/issues/555)
+* Fix relativeTime plugin Math.round bug ([40bea40](https://github.com/iamkun/dayjs/commit/40bea40))
+* skip square brackets in buddhistEra, advancedFormat plugins ([#556](https://github.com/iamkun/dayjs/issues/556)) ([9279718](https://github.com/iamkun/dayjs/commit/9279718)), closes [#554](https://github.com/iamkun/dayjs/issues/554)
+* Update Indonesian locale([#574](https://github.com/iamkun/dayjs/issues/574)) ([0aa7143](https://github.com/iamkun/dayjs/commit/0aa7143))
+* Update locale month to support both array and function ([#581](https://github.com/iamkun/dayjs/issues/581)) ([b6599d3](https://github.com/iamkun/dayjs/commit/b6599d3))
+* Update LocalizedFormat plugin lowercase formats logic ([#557](https://github.com/iamkun/dayjs/issues/557)) ([d409304](https://github.com/iamkun/dayjs/commit/d409304))
+
+## [1.8.12](https://github.com/iamkun/dayjs/compare/v1.8.11...v1.8.12) (2019-04-02)
+
+
+### Bug Fixes
+
+* Add .get API ([7318797](https://github.com/iamkun/dayjs/commit/7318797))
+* Add 79 locales ([#541](https://github.com/iamkun/dayjs/issues/541)) ([f75a125](https://github.com/iamkun/dayjs/commit/f75a125))
+* Add Calendar plugin ([d1b9cf9](https://github.com/iamkun/dayjs/commit/d1b9cf9))
+* Add isoWeeksInYear plugin ([2db8631](https://github.com/iamkun/dayjs/commit/2db8631))
+* Add Occitan (oc-lnc) locale file ([#551](https://github.com/iamkun/dayjs/issues/551)) ([c30b715](https://github.com/iamkun/dayjs/commit/c30b715))
+* Add plugin minMax to sopport .max .min ([2870a23](https://github.com/iamkun/dayjs/commit/2870a23))
+* Fix set Month Year error in last day of the month ([d058f4a](https://github.com/iamkun/dayjs/commit/d058f4a))
+* Update ko locale weekdaysShort ([#543](https://github.com/iamkun/dayjs/issues/543)) ([317fd3e](https://github.com/iamkun/dayjs/commit/317fd3e))
+* Update localizedFormat plugin to support lowercase localizable formats (l, ll, lll, llll) ([#546](https://github.com/iamkun/dayjs/issues/546)) ([f2b5ebf](https://github.com/iamkun/dayjs/commit/f2b5ebf))
+
+## [1.8.11](https://github.com/iamkun/dayjs/compare/v1.8.10...v1.8.11) (2019-03-21)
+
+
+### Bug Fixes
+
+* Add .add('quarter') .startOf('quarter') through plugin quarterOfYear ([dde39e9](https://github.com/iamkun/dayjs/commit/dde39e9)), closes [#537](https://github.com/iamkun/dayjs/issues/537) [#531](https://github.com/iamkun/dayjs/issues/531)
+* Add locale support for Azerbaijani language (az) ([#535](https://github.com/iamkun/dayjs/issues/535)) ([eeb20fa](https://github.com/iamkun/dayjs/commit/eeb20fa))
+* Correct typescript definition `add` ([22a249c](https://github.com/iamkun/dayjs/commit/22a249c)), closes [#531](https://github.com/iamkun/dayjs/issues/531)
+* Fix CustomParseFormat plugin formatting bug ([#536](https://github.com/iamkun/dayjs/issues/536)) ([8578546](https://github.com/iamkun/dayjs/commit/8578546)), closes [#533](https://github.com/iamkun/dayjs/issues/533)
+* Update pt locale ([#538](https://github.com/iamkun/dayjs/issues/538)) ([1ac9e1e](https://github.com/iamkun/dayjs/commit/1ac9e1e))
+
+## [1.8.10](https://github.com/iamkun/dayjs/compare/v1.8.9...v1.8.10) (2019-03-10)
+
+
+### Bug Fixes
+
+* **locale:** Add nepali (ne) locale ([#524](https://github.com/iamkun/dayjs/issues/524)) ([bdbec01](https://github.com/iamkun/dayjs/commit/bdbec01))
+* Add WeekYear plugin ([a892608](https://github.com/iamkun/dayjs/commit/a892608))
+* API .locale() with no argument should return current locale name string ([8d63d88](https://github.com/iamkun/dayjs/commit/8d63d88))
+* CustomParseFormat correct parse HH:mm:ss with only one digit like 0:12:10 ([600d547](https://github.com/iamkun/dayjs/commit/600d547))
+* CustomParseFormat plugin parse Do format string ([bf27fda](https://github.com/iamkun/dayjs/commit/bf27fda)), closes [#522](https://github.com/iamkun/dayjs/issues/522)
+* Expand setters like .year(2000) .hour(12) ([ac532a0](https://github.com/iamkun/dayjs/commit/ac532a0))
+* Move toObject, toArray API to separate plugin from core ([40a3431](https://github.com/iamkun/dayjs/commit/40a3431))
+
+## [1.8.9](https://github.com/iamkun/dayjs/compare/v1.8.8...v1.8.9) (2019-03-06)
+
+
+### Features
+
+* Add UTC mode with UTC plugin ([#517](https://github.com/iamkun/dayjs/issues/517)) ([caf335c](https://github.com/iamkun/dayjs/commit/caf335c))
+
+> For plugin developers: Please note, we have changed the name of some method in `Utils` in order to reduce the file size. ([#517](https://github.com/iamkun/dayjs/issues/517)) ([detail](https://github.com/iamkun/dayjs/pull/517/files#diff-2b4ca49d4bb0a774c4d4c1672d7aa781R46))
+
+### Bug Fixes
+
+* Add locale de-AT ([#515](https://github.com/iamkun/dayjs/issues/515)) ([d93f7b6](https://github.com/iamkun/dayjs/commit/d93f7b6))
+* Add locale zh-hk ([#516](https://github.com/iamkun/dayjs/issues/516)) ([5fc05a6](https://github.com/iamkun/dayjs/commit/5fc05a6))
+
+## [1.8.8](https://github.com/iamkun/dayjs/compare/v1.8.7...v1.8.8) (2019-02-25)
+
+
+### Bug Fixes
+
+* Update relativeTime plugin type definition ([de56f2c](https://github.com/iamkun/dayjs/commit/de56f2c))
+
+## [1.8.7](https://github.com/iamkun/dayjs/compare/v1.8.6...v1.8.7) (2019-02-24)
+
+
+### Bug Fixes
+
+* Add plugin type definitions ([#418](https://github.com/iamkun/dayjs/issues/418)) ([361d437](https://github.com/iamkun/dayjs/commit/361d437))
+* Add Swahili locale ([#508](https://github.com/iamkun/dayjs/issues/508)) ([b9cee84](https://github.com/iamkun/dayjs/commit/b9cee84))
+* Parse month string 'MMMM MMM (February, Feb)' in customParseFormat ([#457](https://github.com/iamkun/dayjs/issues/457)) ([f343206](https://github.com/iamkun/dayjs/commit/f343206))
+* Update declaration file .diff .isBefore .isSame .isAfter ([#496](https://github.com/iamkun/dayjs/issues/496)) ([4523275](https://github.com/iamkun/dayjs/commit/4523275))
+* Word orders corrections for locale 'fa' ([#491](https://github.com/iamkun/dayjs/issues/491)) ([56050c2](https://github.com/iamkun/dayjs/commit/56050c2))
+
+## [1.8.6](https://github.com/iamkun/dayjs/compare/v1.8.5...v1.8.6) (2019-02-14)
+
+
+### Bug Fixes
+
+* Add Bahasa Melayu (Malaysia) locale ([#485](https://github.com/iamkun/dayjs/issues/485)) ([cb208b0](https://github.com/iamkun/dayjs/commit/cb208b0))
+* Copy & export built-in en locale to /locale folder as a separate file ([a7e05e0](https://github.com/iamkun/dayjs/commit/a7e05e0))
+* Fix bug in customParseFormat plugin while month(MM) is '01' ([9884ca5](https://github.com/iamkun/dayjs/commit/9884ca5)), closes [#494](https://github.com/iamkun/dayjs/issues/494)
+* Fix startOf week bug while week start is not Sunday ([5eaf77b](https://github.com/iamkun/dayjs/commit/5eaf77b))
+* Implemented isBetween inclusivity ([#464](https://github.com/iamkun/dayjs/issues/464)) ([af2f4f1](https://github.com/iamkun/dayjs/commit/af2f4f1))
+* Update Swedish and Finnish locales ([#488](https://github.com/iamkun/dayjs/issues/488)) ([f142082](https://github.com/iamkun/dayjs/commit/f142082))
+* Fix commonJS require ES Module bug in webpack4 ([23f9f3d](https://github.com/iamkun/dayjs/commit/23f9f3d)), check [#492](https://github.com/iamkun/dayjs/issues/492)
+
+> Get access to ESM code with `import dayjs from 'dayjs/esm'`
+
+## [1.8.5](https://github.com/iamkun/dayjs/compare/v1.8.4...v1.8.5) (2019-02-07)
+
+
+### Bug Fixes
+
+* Add en-gb locale ([#478](https://github.com/iamkun/dayjs/issues/478)) ([508c3a7](https://github.com/iamkun/dayjs/commit/508c3a7))
+* **module:** transpile everything except ES6 modules in the 'module' entrypoint ([#477](https://github.com/iamkun/dayjs/issues/477)) ([#480](https://github.com/iamkun/dayjs/issues/480)) ([#482](https://github.com/iamkun/dayjs/issues/482)) ([767017d](https://github.com/iamkun/dayjs/commit/767017d))
+* update customParseFormat plugin support hh:mm ([54947cc](https://github.com/iamkun/dayjs/commit/54947cc)), closes [#484](https://github.com/iamkun/dayjs/issues/484)
+* Update module in package.json ([5c5a7a0](https://github.com/iamkun/dayjs/commit/5c5a7a0))
+
+## [1.8.4](https://github.com/iamkun/dayjs/compare/v1.8.3...v1.8.4) (2019-02-05)
+
+* Allow set start day of week in locale && Allow set week in weekOfYear plugin ([1295591](https://github.com/iamkun/dayjs/commit/1295591))
+### Bug Fixes
+* update all locale files with correct week start ([5b03412](https://github.com/iamkun/dayjs/commit/5b03412))
+* update es es-do locale adding weekStart && update weekStart test ([66e42ec](https://github.com/iamkun/dayjs/commit/66e42ec))
+* Revert default export ([b00da1b](https://github.com/iamkun/dayjs/commit/b00da1b))
+
+## [1.8.3](https://github.com/iamkun/dayjs/compare/v1.8.2...v1.8.3) (2019-02-04)
+
+
+### Bug Fixes
+
+* fix ios safari YYYY-MM-DD HH:mm parse BUG ([e02ae82](https://github.com/iamkun/dayjs/commit/e02ae82)), closes [#254](https://github.com/iamkun/dayjs/issues/254)
+
+## [1.8.2](https://github.com/iamkun/dayjs/compare/v1.8.1...v1.8.2) (2019-02-02)
+
+
+### Bug Fixes
+
+* Add missing czech language locale ([#461](https://github.com/iamkun/dayjs/issues/461)) ([7e04004](https://github.com/iamkun/dayjs/commit/7e04004))
+* Add utcOffset api method and fix calculating diff error in DST ([#453](https://github.com/iamkun/dayjs/issues/453)) ([ce2e30e](https://github.com/iamkun/dayjs/commit/ce2e30e))
+* Fix it locale error ([#458](https://github.com/iamkun/dayjs/issues/458)) ([f6d9a64](https://github.com/iamkun/dayjs/commit/f6d9a64))
+* Add DayOfYear plugin (#454)
+* Fix es locale monthsShort error
+
+## [1.8.1](https://github.com/iamkun/dayjs/compare/v1.8.0...v1.8.1) (2019-02-02)
+
+* Add LocalizedFormat plugin supplying format like LTS, LT, LLLL
+
+* update declaration File with default export (#278)
+> From v1.8.1, in TypeScript Project, just `import from dayjs from 'dayjs'`
+* add ES2015 module support (#451)
+
+### Performance Improvements
+
+* **format:** reuse matches instead of created when replacing ([#441](https://github.com/iamkun/dayjs/issues/441)) ([10b79d8](https://github.com/iamkun/dayjs/commit/10b79d8))
+
+# [1.8.0](https://github.com/iamkun/dayjs/compare/v1.7.8...v1.8.0) (2019-01-14)
+
+
+### Features
+
+* add CustomParseFormat plugin and QuarterOfYear plugin ([#450](https://github.com/iamkun/dayjs/issues/450)) ([8f6f63c](https://github.com/iamkun/dayjs/commit/8f6f63c))
+
+## [1.7.8](https://github.com/iamkun/dayjs/compare/v1.7.7...v1.7.8) (2018-12-13)
+
+
+### Feature
+
+* update isSame isBefore isAfter supports units ([fd65464](https://github.com/iamkun/dayjs/commit/fd65464))
+
+* add greek lithuanian locales
+
+## [1.7.7](https://github.com/iamkun/dayjs/compare/v1.7.6...v1.7.7) (2018-09-26)
+
+
+### Bug Fixes
+
+* **DST:** fix daylight saving time DST bug && add test ([#354](https://github.com/iamkun/dayjs/issues/354)) ([6fca6d5](https://github.com/iamkun/dayjs/commit/6fca6d5))
+
+## [1.7.6](https://github.com/iamkun/dayjs/compare/v1.7.5...v1.7.6) (2018-09-25)
+
+
+### Bug Fixes
+
+* **add dayjs.unix:** add dayjs.unix to parse timestamp in seconds && locale update ([5711c5e](https://github.com/iamkun/dayjs/commit/5711c5e))
+
+## [1.7.5](https://github.com/iamkun/dayjs/compare/v1.7.4...v1.7.5) (2018-08-10)
+
+
+### Bug Fixes
+
+* add isBetween API & update ([b5fc3d1](https://github.com/iamkun/dayjs/commit/b5fc3d1))
+
+## [1.7.4](https://github.com/iamkun/dayjs/compare/v1.7.3...v1.7.4) (2018-07-11)
+
+
+### Bug Fixes
+
+* update set week logic ([60b6325](https://github.com/iamkun/dayjs/commit/60b6325)), closes [#276](https://github.com/iamkun/dayjs/issues/276)
+
+## [1.7.3](https://github.com/iamkun/dayjs/compare/v1.7.2...v1.7.3) (2018-07-10)
+
+
+### Bug Fixes
+
+* **locale-nl:** set correct weekdays and months ([6d089d7](https://github.com/iamkun/dayjs/commit/6d089d7))
+
+## [1.7.2](https://github.com/iamkun/dayjs/compare/v1.7.1...v1.7.2) (2018-07-04)
+
+
+### Bug Fixes
+
+* DEPRECATED isLeapYear, use IsLeapYear plugin instead ([e2e5116](https://github.com/iamkun/dayjs/commit/e2e5116))
+
+## [1.7.1](https://github.com/iamkun/dayjs/compare/v1.7.0...v1.7.1) (2018-07-03)
+
+
+### Bug Fixes
+
+* fix week() error near the end of the year ([fa03689](https://github.com/iamkun/dayjs/commit/fa03689))
+
+# [1.7.0](https://github.com/iamkun/dayjs/compare/v1.6.10...v1.7.0) (2018-07-02)
+
+
+### Features
+
+* Added method `.week()` to retrieve week of the year ([e1c1b1c](https://github.com/iamkun/dayjs/commit/e1c1b1c))
+* Updated Japanese locae
+
+## [1.6.10](https://github.com/iamkun/dayjs/compare/v1.6.9...v1.6.10) (2018-06-25)
+
+
+### Bug Fixes
+
+* Add relative locales to russian language ([c7e9898](https://github.com/iamkun/dayjs/commit/c7e9898)), closes [#256](https://github.com/iamkun/dayjs/issues/256)
+
+## [1.6.9](https://github.com/iamkun/dayjs/compare/v1.6.8...v1.6.9) (2018-06-14)
+
+
+### Bug Fixes
+
+* add isDayjs => boolean API ([6227c8b](https://github.com/iamkun/dayjs/commit/6227c8b))
+
+## [1.6.8](https://github.com/iamkun/dayjs/compare/v1.6.7...v1.6.8) (2018-06-14)
+
+
+### Bug Fixes
+
+* fix Advanced format bug in zh-cn ([0c07874](https://github.com/iamkun/dayjs/commit/0c07874)), closes [#242](https://github.com/iamkun/dayjs/issues/242)
+
+## [1.6.7](https://github.com/iamkun/dayjs/compare/v1.6.6...v1.6.7) (2018-06-11)
+
+
+### Bug Fixes
+
+* fix id locale ([1ebbeb8](https://github.com/iamkun/dayjs/commit/1ebbeb8)), closes [#234](https://github.com/iamkun/dayjs/issues/234)
+
+
+## [1.6.6](https://github.com/iamkun/dayjs/compare/v1.6.5...v1.6.6) (2018-06-06)
+
+
+### Bug Fixes
+
+* format API update and locale file update ([5ca48f0](https://github.com/iamkun/dayjs/commit/5ca48f0)), closes [#228](https://github.com/iamkun/dayjs/issues/228)
+
+
+## [1.6.5](https://github.com/iamkun/dayjs/compare/v1.6.4...v1.6.5) (2018-05-31)
+
+
+### Bug Fixes
+
+* bugfix, utils update and locale file update ([ebcb6d5](https://github.com/iamkun/dayjs/commit/ebcb6d5)), closes [#214](https://github.com/iamkun/dayjs/issues/214)
+
+
+## [1.6.4](https://github.com/iamkun/dayjs/compare/v1.6.3...v1.6.4) (2018-05-25)
+
+
+### Bug Fixes
+
+* add RelativeTime plugin and locale file update ([c1fbbca](https://github.com/iamkun/dayjs/commit/c1fbbca)), closes [#198](https://github.com/iamkun/dayjs/issues/198)
+
+
+## [1.6.3](https://github.com/iamkun/dayjs/compare/v1.6.2...v1.6.3) (2018-05-21)
+
+
+### Bug Fixes
+
+* Changing locales locally is immutable from this release ([2cce729](https://github.com/iamkun/dayjs/commit/2cce729)), closes [#182](https://github.com/iamkun/dayjs/issues/182)
+* instance locale change should be immutable ([84597c9](https://github.com/iamkun/dayjs/commit/84597c9))
+* Add more locales
+* english ordinal fix
+
+
+## [1.6.2](https://github.com/iamkun/dayjs/compare/v1.6.1...v1.6.2) (2018-05-18)
+
+
+### Bug Fixes
+
+* change-log update && test new npm release ([aa49cba](https://github.com/iamkun/dayjs/commit/aa49cba)), closes [#163](https://github.com/iamkun/dayjs/issues/163)
+
+
+## [1.6.1](https://github.com/iamkun/dayjs/compare/v1.6.0...v1.6.1) (2018-05-18)
+
+
+### Bug Fixes
+
+* Add German, Brazilian Portuguese locales
+* add() & parse() bug fix & add locale de, pt-br ([bf1331e](https://github.com/iamkun/dayjs/commit/bf1331e))
+
+
+# [1.6.0](https://github.com/iamkun/dayjs/compare/v1.5.24...v1.6.0) (2018-05-15)
+
+
+### Features
+
+* Locale && Plugin ([2342c55](https://github.com/iamkun/dayjs/commit/2342c55)), closes [#141](https://github.com/iamkun/dayjs/issues/141)
diff --git a/node_modules/dayjs/LICENSE b/node_modules/dayjs/LICENSE
new file mode 100644
index 0000000..caf9315
--- /dev/null
+++ b/node_modules/dayjs/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018-present, iamkun
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/dayjs/README.md b/node_modules/dayjs/README.md
new file mode 100644
index 0000000..277423a
--- /dev/null
+++ b/node_modules/dayjs/README.md
@@ -0,0 +1,140 @@
+English | [简体中文](./docs/zh-cn/README.zh-CN.md) | [日本語](./docs/ja/README-ja.md) | [Português Brasileiro](./docs/pt-br/README-pt-br.md) | [한국어](./docs/ko/README-ko.md) | [Español (España)](./docs/es-es/README-es-es.md) | [Русский](./docs/ru/README-ru.md) | [Türkçe](./docs/tr/README-tr.md) | [සිංහල](./docs/si/README-si.md)
+
+
+Fast 2kB alternative to Moment.js with the same modern API
+
+
+
+
+
+
+
+
+
+
+
+
+> Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API. If you use Moment.js, you already know how to use Day.js.
+
+```js
+dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
+```
+
+* 🕒 Familiar Moment.js API & patterns
+* 💪 Immutable
+* 🔥 Chainable
+* 🌐 I18n support
+* 📦 2kb mini library
+* 👫 All browsers supported
+
+---
+
+## Getting Started
+
+### Documentation
+
+You can find for more details, API, and other docs on [day.js.org](https://day.js.org/) website.
+
+### Installation
+
+```console
+npm install dayjs --save
+```
+
+📚[Installation Guide](https://day.js.org/docs/en/installation/installation)
+
+### API
+
+It's easy to use Day.js APIs to parse, validate, manipulate, and display dates and times.
+
+```javascript
+dayjs('2018-08-08') // parse
+
+dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // display
+
+dayjs().set('month', 3).month() // get & set
+
+dayjs().add(1, 'year') // manipulate
+
+dayjs().isBefore(dayjs()) // query
+```
+
+📚[API Reference](https://day.js.org/docs/en/parse/parse)
+
+### I18n
+
+Day.js has great support for internationalization.
+
+But none of them will be included in your build unless you use it.
+
+```javascript
+import 'dayjs/locale/es' // load on demand
+
+dayjs.locale('es') // use Spanish locale globally
+
+dayjs('2018-05-05').locale('zh-cn').format() // use Chinese Simplified locale in a specific instance
+```
+📚[Internationalization](https://day.js.org/docs/en/i18n/i18n)
+
+### Plugin
+
+A plugin is an independent module that can be added to Day.js to extend functionality or add new features.
+
+```javascript
+import advancedFormat from 'dayjs/plugin/advancedFormat' // load on demand
+
+dayjs.extend(advancedFormat) // use plugin
+
+dayjs().format('Q Do k kk X x') // more available formats
+```
+
+📚[Plugin List](https://day.js.org/docs/en/plugin/plugin)
+
+## Sponsors
+
+Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
+
+[[Become a sponsor via Github](https://github.com/sponsors/iamkun/)] [[Become a sponsor via OpenCollective](https://opencollective.com/dayjs#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Contributors
+
+This project exists thanks to all the people who contribute.
+
+Please give us a 💖 star 💖 to support us. Thank you.
+
+And thank you to all our backers! 🙏
+
+
+
+
+
+
+
+
+## License
+
+Day.js is licensed under a [MIT License](./LICENSE).
diff --git a/node_modules/dayjs/dayjs.min.js b/node_modules/dayjs/dayjs.min.js
new file mode 100644
index 0000000..ba16e65
--- /dev/null
+++ b/node_modules/dayjs/dayjs.min.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)
+
+export = dayjs;
+
+declare function dayjs (date?: dayjs.ConfigType): dayjs.Dayjs
+
+declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, strict?: boolean): dayjs.Dayjs
+
+declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, locale?: string, strict?: boolean): dayjs.Dayjs
+
+declare namespace dayjs {
+ interface ConfigTypeMap {
+ default: string | number | Date | Dayjs | null | undefined
+ }
+
+ export type ConfigType = ConfigTypeMap[keyof ConfigTypeMap]
+
+ export interface FormatObject { locale?: string, format?: string, utc?: boolean }
+
+ export type OptionType = FormatObject | string | string[]
+
+ export type UnitTypeShort = 'd' | 'D' | 'M' | 'y' | 'h' | 'm' | 's' | 'ms'
+
+ export type UnitTypeLong = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' | 'date'
+
+ export type UnitTypeLongPlural = 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'months' | 'years' | 'dates'
+
+ export type UnitType = UnitTypeLong | UnitTypeLongPlural | UnitTypeShort;
+
+ export type OpUnitType = UnitType | "week" | "weeks" | 'w';
+ export type QUnitType = UnitType | "quarter" | "quarters" | 'Q';
+ export type ManipulateType = Exclude;
+ class Dayjs {
+ constructor (config?: ConfigType)
+ /**
+ * All Day.js objects are immutable. Still, `dayjs#clone` can create a clone of the current object if you need one.
+ * ```
+ * dayjs().clone()// => Dayjs
+ * dayjs(dayjs('2019-01-25')) // passing a Dayjs object to a constructor will also clone it
+ * ```
+ * Docs: https://day.js.org/docs/en/parse/dayjs-clone
+ */
+ clone(): Dayjs
+ /**
+ * This returns a `boolean` indicating whether the Day.js object contains a valid date or not.
+ * ```
+ * dayjs().isValid()// => boolean
+ * ```
+ * Docs: https://day.js.org/docs/en/parse/is-valid
+ */
+ isValid(): boolean
+ /**
+ * Get the year.
+ * ```
+ * dayjs().year()// => 2020
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/year
+ */
+ year(): number
+ /**
+ * Set the year.
+ * ```
+ * dayjs().year(2000)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/year
+ */
+ year(value: number): Dayjs
+ /**
+ * Get the month.
+ *
+ * Months are zero indexed, so January is month 0.
+ * ```
+ * dayjs().month()// => 0-11
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/month
+ */
+ month(): number
+ /**
+ * Set the month.
+ *
+ * Months are zero indexed, so January is month 0.
+ *
+ * Accepts numbers from 0 to 11. If the range is exceeded, it will bubble up to the next year.
+ * ```
+ * dayjs().month(0)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/month
+ */
+ month(value: number): Dayjs
+ /**
+ * Get the date of the month.
+ * ```
+ * dayjs().date()// => 1-31
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/date
+ */
+ date(): number
+ /**
+ * Set the date of the month.
+ *
+ * Accepts numbers from 1 to 31. If the range is exceeded, it will bubble up to the next months.
+ * ```
+ * dayjs().date(1)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/date
+ */
+ date(value: number): Dayjs
+ /**
+ * Get the day of the week.
+ *
+ * Returns numbers from 0 (Sunday) to 6 (Saturday).
+ * ```
+ * dayjs().day()// 0-6
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/day
+ */
+ day(): number
+ /**
+ * Set the day of the week.
+ *
+ * Accepts numbers from 0 (Sunday) to 6 (Saturday). If the range is exceeded, it will bubble up to next weeks.
+ * ```
+ * dayjs().day(0)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/day
+ */
+ day(value: number): Dayjs
+ /**
+ * Get the hour.
+ * ```
+ * dayjs().hour()// => 0-23
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/hour
+ */
+ hour(): number
+ /**
+ * Set the hour.
+ *
+ * Accepts numbers from 0 to 23. If the range is exceeded, it will bubble up to the next day.
+ * ```
+ * dayjs().hour(12)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/hour
+ */
+ hour(value: number): Dayjs
+ /**
+ * Get the minutes.
+ * ```
+ * dayjs().minute()// => 0-59
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/minute
+ */
+ minute(): number
+ /**
+ * Set the minutes.
+ *
+ * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next hour.
+ * ```
+ * dayjs().minute(59)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/minute
+ */
+ minute(value: number): Dayjs
+ /**
+ * Get the seconds.
+ * ```
+ * dayjs().second()// => 0-59
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/second
+ */
+ second(): number
+ /**
+ * Set the seconds.
+ *
+ * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next minutes.
+ * ```
+ * dayjs().second(1)// Dayjs
+ * ```
+ */
+ second(value: number): Dayjs
+ /**
+ * Get the milliseconds.
+ * ```
+ * dayjs().millisecond()// => 0-999
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/millisecond
+ */
+ millisecond(): number
+ /**
+ * Set the milliseconds.
+ *
+ * Accepts numbers from 0 to 999. If the range is exceeded, it will bubble up to the next seconds.
+ * ```
+ * dayjs().millisecond(1)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/millisecond
+ */
+ millisecond(value: number): Dayjs
+ /**
+ * Generic setter, accepting unit as first argument, and value as second, returns a new instance with the applied changes.
+ *
+ * In general:
+ * ```
+ * dayjs().set(unit, value) === dayjs()[unit](value)
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ * ```
+ * dayjs().set('date', 1)
+ * dayjs().set('month', 3) // April
+ * dayjs().set('second', 30)
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/set
+ */
+ set(unit: UnitType, value: number): Dayjs
+ /**
+ * String getter, returns the corresponding information getting from Day.js object.
+ *
+ * In general:
+ * ```
+ * dayjs().get(unit) === dayjs()[unit]()
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ * ```
+ * dayjs().get('year')
+ * dayjs().get('month') // start 0
+ * dayjs().get('date')
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/get
+ */
+ get(unit: UnitType): number
+ /**
+ * Returns a cloned Day.js object with a specified amount of time added.
+ * ```
+ * dayjs().add(7, 'day')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/add
+ */
+ add(value: number, unit?: ManipulateType): Dayjs
+ /**
+ * Returns a cloned Day.js object with a specified amount of time subtracted.
+ * ```
+ * dayjs().subtract(7, 'year')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/subtract
+ */
+ subtract(value: number, unit?: ManipulateType): Dayjs
+ /**
+ * Returns a cloned Day.js object and set it to the start of a unit of time.
+ * ```
+ * dayjs().startOf('year')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/start-of
+ */
+ startOf(unit: OpUnitType): Dayjs
+ /**
+ * Returns a cloned Day.js object and set it to the end of a unit of time.
+ * ```
+ * dayjs().endOf('month')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/end-of
+ */
+ endOf(unit: OpUnitType): Dayjs
+ /**
+ * Get the formatted date according to the string of tokens passed in.
+ *
+ * To escape characters, wrap them in square brackets (e.g. [MM]).
+ * ```
+ * dayjs().format()// => current date in ISO8601, without fraction seconds e.g. '2020-04-02T08:02:17-05:00'
+ * dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')// 'YYYYescape 2019-01-25T00:00:00-02:00Z'
+ * dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/format
+ */
+ format(template?: string): string
+ /**
+ * This indicates the difference between two date-time in the specified unit.
+ *
+ * To get the difference in milliseconds, use `dayjs#diff`
+ * ```
+ * const date1 = dayjs('2019-01-25')
+ * const date2 = dayjs('2018-06-05')
+ * date1.diff(date2) // 20214000000 default milliseconds
+ * date1.diff() // milliseconds to current time
+ * ```
+ *
+ * To get the difference in another unit of measurement, pass that measurement as the second argument.
+ * ```
+ * const date1 = dayjs('2019-01-25')
+ * date1.diff('2018-06-05', 'month') // 7
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/display/difference
+ */
+ diff(date?: ConfigType, unit?: QUnitType | OpUnitType, float?: boolean): number
+ /**
+ * This returns the number of **milliseconds** since the Unix Epoch of the Day.js object.
+ * ```
+ * dayjs('2019-01-25').valueOf() // 1548381600000
+ * +dayjs(1548381600000) // 1548381600000
+ * ```
+ * To get a Unix timestamp (the number of seconds since the epoch) from a Day.js object, you should use Unix Timestamp `dayjs#unix()`.
+ *
+ * Docs: https://day.js.org/docs/en/display/unix-timestamp-milliseconds
+ */
+ valueOf(): number
+ /**
+ * This returns the Unix timestamp (the number of **seconds** since the Unix Epoch) of the Day.js object.
+ * ```
+ * dayjs('2019-01-25').unix() // 1548381600
+ * ```
+ * This value is floored to the nearest second, and does not include a milliseconds component.
+ *
+ * Docs: https://day.js.org/docs/en/display/unix-timestamp
+ */
+ unix(): number
+ /**
+ * Get the number of days in the current month.
+ * ```
+ * dayjs('2019-01-25').daysInMonth() // 31
+ * ```
+ * Docs: https://day.js.org/docs/en/display/days-in-month
+ */
+ daysInMonth(): number
+ /**
+ * To get a copy of the native `Date` object parsed from the Day.js object use `dayjs#toDate`.
+ * ```
+ * dayjs('2019-01-25').toDate()// => Date
+ * ```
+ */
+ toDate(): Date
+ /**
+ * To serialize as an ISO 8601 string.
+ * ```
+ * dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/as-json
+ */
+ toJSON(): string
+ /**
+ * To format as an ISO 8601 string.
+ * ```
+ * dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/as-iso-string
+ */
+ toISOString(): string
+ /**
+ * Returns a string representation of the date.
+ * ```
+ * dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/as-string
+ */
+ toString(): string
+ /**
+ * Get the UTC offset in minutes.
+ * ```
+ * dayjs().utcOffset()
+ * ```
+ * Docs: https://day.js.org/docs/en/manipulate/utc-offset
+ */
+ utcOffset(): number
+ /**
+ * This indicates whether the Day.js object is before the other supplied date-time.
+ * ```
+ * dayjs().isBefore(dayjs('2011-01-01')) // default milliseconds
+ * ```
+ * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
+ * ```
+ * dayjs().isBefore('2011-01-01', 'year')// => boolean
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/query/is-before
+ */
+ isBefore(date: ConfigType, unit?: OpUnitType): boolean
+ /**
+ * This indicates whether the Day.js object is the same as the other supplied date-time.
+ * ```
+ * dayjs().isSame(dayjs('2011-01-01')) // default milliseconds
+ * ```
+ * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
+ * ```
+ * dayjs().isSame('2011-01-01', 'year')// => boolean
+ * ```
+ * Docs: https://day.js.org/docs/en/query/is-same
+ */
+ isSame(date: ConfigType, unit?: OpUnitType): boolean
+ /**
+ * This indicates whether the Day.js object is after the other supplied date-time.
+ * ```
+ * dayjs().isAfter(dayjs('2011-01-01')) // default milliseconds
+ * ```
+ * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
+ * ```
+ * dayjs().isAfter('2011-01-01', 'year')// => boolean
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/query/is-after
+ */
+ isAfter(date: ConfigType, unit?: OpUnitType): boolean
+
+ locale(): string
+
+ locale(preset: string | ILocale, object?: Partial): Dayjs
+ }
+
+ export type PluginFunc = (option: T, c: typeof Dayjs, d: typeof dayjs) => void
+
+ export function extend(plugin: PluginFunc, option?: T): Dayjs
+
+ export function locale(preset?: string | ILocale, object?: Partial, isLocal?: boolean): string
+
+ export function isDayjs(d: any): d is Dayjs
+
+ export function unix(t: number): Dayjs
+
+ const Ls : { [key: string] : ILocale }
+}
diff --git a/node_modules/dayjs/esm/index.js b/node_modules/dayjs/esm/index.js
new file mode 100644
index 0000000..3a76275
--- /dev/null
+++ b/node_modules/dayjs/esm/index.js
@@ -0,0 +1,441 @@
+import * as C from './constant';
+import en from './locale/en';
+import U from './utils';
+var L = 'en'; // global locale
+
+var Ls = {}; // global loaded locale
+
+Ls[L] = en;
+
+var isDayjs = function isDayjs(d) {
+ return d instanceof Dayjs;
+}; // eslint-disable-line no-use-before-define
+
+
+var parseLocale = function parseLocale(preset, object, isLocal) {
+ var l;
+ if (!preset) return L;
+
+ if (typeof preset === 'string') {
+ var presetLower = preset.toLowerCase();
+
+ if (Ls[presetLower]) {
+ l = presetLower;
+ }
+
+ if (object) {
+ Ls[presetLower] = object;
+ l = presetLower;
+ }
+
+ var presetSplit = preset.split('-');
+
+ if (!l && presetSplit.length > 1) {
+ return parseLocale(presetSplit[0]);
+ }
+ } else {
+ var name = preset.name;
+ Ls[name] = preset;
+ l = name;
+ }
+
+ if (!isLocal && l) L = l;
+ return l || !isLocal && L;
+};
+
+var dayjs = function dayjs(date, c) {
+ if (isDayjs(date)) {
+ return date.clone();
+ } // eslint-disable-next-line no-nested-ternary
+
+
+ var cfg = typeof c === 'object' ? c : {};
+ cfg.date = date;
+ cfg.args = arguments; // eslint-disable-line prefer-rest-params
+
+ return new Dayjs(cfg); // eslint-disable-line no-use-before-define
+};
+
+var wrapper = function wrapper(date, instance) {
+ return dayjs(date, {
+ locale: instance.$L,
+ utc: instance.$u,
+ x: instance.$x,
+ $offset: instance.$offset // todo: refactor; do not use this.$offset in you code
+
+ });
+};
+
+var Utils = U; // for plugin use
+
+Utils.l = parseLocale;
+Utils.i = isDayjs;
+Utils.w = wrapper;
+
+var parseDate = function parseDate(cfg) {
+ var date = cfg.date,
+ utc = cfg.utc;
+ if (date === null) return new Date(NaN); // null is invalid
+
+ if (Utils.u(date)) return new Date(); // today
+
+ if (date instanceof Date) return new Date(date);
+
+ if (typeof date === 'string' && !/Z$/i.test(date)) {
+ var d = date.match(C.REGEX_PARSE);
+
+ if (d) {
+ var m = d[2] - 1 || 0;
+ var ms = (d[7] || '0').substring(0, 3);
+
+ if (utc) {
+ return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));
+ }
+
+ return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);
+ }
+ }
+
+ return new Date(date); // everything else
+};
+
+var Dayjs = /*#__PURE__*/function () {
+ function Dayjs(cfg) {
+ this.$L = parseLocale(cfg.locale, null, true);
+ this.parse(cfg); // for plugin
+ }
+
+ var _proto = Dayjs.prototype;
+
+ _proto.parse = function parse(cfg) {
+ this.$d = parseDate(cfg);
+ this.$x = cfg.x || {};
+ this.init();
+ };
+
+ _proto.init = function init() {
+ var $d = this.$d;
+ this.$y = $d.getFullYear();
+ this.$M = $d.getMonth();
+ this.$D = $d.getDate();
+ this.$W = $d.getDay();
+ this.$H = $d.getHours();
+ this.$m = $d.getMinutes();
+ this.$s = $d.getSeconds();
+ this.$ms = $d.getMilliseconds();
+ } // eslint-disable-next-line class-methods-use-this
+ ;
+
+ _proto.$utils = function $utils() {
+ return Utils;
+ };
+
+ _proto.isValid = function isValid() {
+ return !(this.$d.toString() === C.INVALID_DATE_STRING);
+ };
+
+ _proto.isSame = function isSame(that, units) {
+ var other = dayjs(that);
+ return this.startOf(units) <= other && other <= this.endOf(units);
+ };
+
+ _proto.isAfter = function isAfter(that, units) {
+ return dayjs(that) < this.startOf(units);
+ };
+
+ _proto.isBefore = function isBefore(that, units) {
+ return this.endOf(units) < dayjs(that);
+ };
+
+ _proto.$g = function $g(input, get, set) {
+ if (Utils.u(input)) return this[get];
+ return this.set(set, input);
+ };
+
+ _proto.unix = function unix() {
+ return Math.floor(this.valueOf() / 1000);
+ };
+
+ _proto.valueOf = function valueOf() {
+ // timezone(hour) * 60 * 60 * 1000 => ms
+ return this.$d.getTime();
+ };
+
+ _proto.startOf = function startOf(units, _startOf) {
+ var _this = this;
+
+ // startOf -> endOf
+ var isStartOf = !Utils.u(_startOf) ? _startOf : true;
+ var unit = Utils.p(units);
+
+ var instanceFactory = function instanceFactory(d, m) {
+ var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);
+ return isStartOf ? ins : ins.endOf(C.D);
+ };
+
+ var instanceFactorySet = function instanceFactorySet(method, slice) {
+ var argumentStart = [0, 0, 0, 0];
+ var argumentEnd = [23, 59, 59, 999];
+ return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread
+ _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);
+ };
+
+ var $W = this.$W,
+ $M = this.$M,
+ $D = this.$D;
+ var utcPad = "set" + (this.$u ? 'UTC' : '');
+
+ switch (unit) {
+ case C.Y:
+ return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);
+
+ case C.M:
+ return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);
+
+ case C.W:
+ {
+ var weekStart = this.$locale().weekStart || 0;
+ var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;
+ return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);
+ }
+
+ case C.D:
+ case C.DATE:
+ return instanceFactorySet(utcPad + "Hours", 0);
+
+ case C.H:
+ return instanceFactorySet(utcPad + "Minutes", 1);
+
+ case C.MIN:
+ return instanceFactorySet(utcPad + "Seconds", 2);
+
+ case C.S:
+ return instanceFactorySet(utcPad + "Milliseconds", 3);
+
+ default:
+ return this.clone();
+ }
+ };
+
+ _proto.endOf = function endOf(arg) {
+ return this.startOf(arg, false);
+ };
+
+ _proto.$set = function $set(units, _int) {
+ var _C$D$C$DATE$C$M$C$Y$C;
+
+ // private set
+ var unit = Utils.p(units);
+ var utcPad = "set" + (this.$u ? 'UTC' : '');
+ var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + "Month", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + "FullYear", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + "Hours", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + "Minutes", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + "Seconds", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + "Milliseconds", _C$D$C$DATE$C$M$C$Y$C)[unit];
+ var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;
+
+ if (unit === C.M || unit === C.Y) {
+ // clone is for badMutable plugin
+ var date = this.clone().set(C.DATE, 1);
+ date.$d[name](arg);
+ date.init();
+ this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;
+ } else if (name) this.$d[name](arg);
+
+ this.init();
+ return this;
+ };
+
+ _proto.set = function set(string, _int2) {
+ return this.clone().$set(string, _int2);
+ };
+
+ _proto.get = function get(unit) {
+ return this[Utils.p(unit)]();
+ };
+
+ _proto.add = function add(number, units) {
+ var _this2 = this,
+ _C$MIN$C$H$C$S$unit;
+
+ number = Number(number); // eslint-disable-line no-param-reassign
+
+ var unit = Utils.p(units);
+
+ var instanceFactorySet = function instanceFactorySet(n) {
+ var d = dayjs(_this2);
+ return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);
+ };
+
+ if (unit === C.M) {
+ return this.set(C.M, this.$M + number);
+ }
+
+ if (unit === C.Y) {
+ return this.set(C.Y, this.$y + number);
+ }
+
+ if (unit === C.D) {
+ return instanceFactorySet(1);
+ }
+
+ if (unit === C.W) {
+ return instanceFactorySet(7);
+ }
+
+ var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms
+
+ var nextTimeStamp = this.$d.getTime() + number * step;
+ return Utils.w(nextTimeStamp, this);
+ };
+
+ _proto.subtract = function subtract(number, string) {
+ return this.add(number * -1, string);
+ };
+
+ _proto.format = function format(formatStr) {
+ var _this3 = this;
+
+ var locale = this.$locale();
+ if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;
+ var str = formatStr || C.FORMAT_DEFAULT;
+ var zoneStr = Utils.z(this);
+ var $H = this.$H,
+ $m = this.$m,
+ $M = this.$M;
+ var weekdays = locale.weekdays,
+ months = locale.months,
+ meridiem = locale.meridiem;
+
+ var getShort = function getShort(arr, index, full, length) {
+ return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);
+ };
+
+ var get$H = function get$H(num) {
+ return Utils.s($H % 12 || 12, num, '0');
+ };
+
+ var meridiemFunc = meridiem || function (hour, minute, isLowercase) {
+ var m = hour < 12 ? 'AM' : 'PM';
+ return isLowercase ? m.toLowerCase() : m;
+ };
+
+ var matches = {
+ YY: String(this.$y).slice(-2),
+ YYYY: this.$y,
+ M: $M + 1,
+ MM: Utils.s($M + 1, 2, '0'),
+ MMM: getShort(locale.monthsShort, $M, months, 3),
+ MMMM: getShort(months, $M),
+ D: this.$D,
+ DD: Utils.s(this.$D, 2, '0'),
+ d: String(this.$W),
+ dd: getShort(locale.weekdaysMin, this.$W, weekdays, 2),
+ ddd: getShort(locale.weekdaysShort, this.$W, weekdays, 3),
+ dddd: weekdays[this.$W],
+ H: String($H),
+ HH: Utils.s($H, 2, '0'),
+ h: get$H(1),
+ hh: get$H(2),
+ a: meridiemFunc($H, $m, true),
+ A: meridiemFunc($H, $m, false),
+ m: String($m),
+ mm: Utils.s($m, 2, '0'),
+ s: String(this.$s),
+ ss: Utils.s(this.$s, 2, '0'),
+ SSS: Utils.s(this.$ms, 3, '0'),
+ Z: zoneStr // 'ZZ' logic below
+
+ };
+ return str.replace(C.REGEX_FORMAT, function (match, $1) {
+ return $1 || matches[match] || zoneStr.replace(':', '');
+ }); // 'ZZ'
+ };
+
+ _proto.utcOffset = function utcOffset() {
+ // Because a bug at FF24, we're rounding the timezone offset around 15 minutes
+ // https://github.com/moment/moment/pull/1871
+ return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;
+ };
+
+ _proto.diff = function diff(input, units, _float) {
+ var _C$Y$C$M$C$Q$C$W$C$D$;
+
+ var unit = Utils.p(units);
+ var that = dayjs(input);
+ var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;
+ var diff = this - that;
+ var result = Utils.m(this, that);
+ result = (_C$Y$C$M$C$Q$C$W$C$D$ = {}, _C$Y$C$M$C$Q$C$W$C$D$[C.Y] = result / 12, _C$Y$C$M$C$Q$C$W$C$D$[C.M] = result, _C$Y$C$M$C$Q$C$W$C$D$[C.Q] = result / 3, _C$Y$C$M$C$Q$C$W$C$D$[C.W] = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK, _C$Y$C$M$C$Q$C$W$C$D$[C.D] = (diff - zoneDelta) / C.MILLISECONDS_A_DAY, _C$Y$C$M$C$Q$C$W$C$D$[C.H] = diff / C.MILLISECONDS_A_HOUR, _C$Y$C$M$C$Q$C$W$C$D$[C.MIN] = diff / C.MILLISECONDS_A_MINUTE, _C$Y$C$M$C$Q$C$W$C$D$[C.S] = diff / C.MILLISECONDS_A_SECOND, _C$Y$C$M$C$Q$C$W$C$D$)[unit] || diff; // milliseconds
+
+ return _float ? result : Utils.a(result);
+ };
+
+ _proto.daysInMonth = function daysInMonth() {
+ return this.endOf(C.M).$D;
+ };
+
+ _proto.$locale = function $locale() {
+ // get locale object
+ return Ls[this.$L];
+ };
+
+ _proto.locale = function locale(preset, object) {
+ if (!preset) return this.$L;
+ var that = this.clone();
+ var nextLocaleName = parseLocale(preset, object, true);
+ if (nextLocaleName) that.$L = nextLocaleName;
+ return that;
+ };
+
+ _proto.clone = function clone() {
+ return Utils.w(this.$d, this);
+ };
+
+ _proto.toDate = function toDate() {
+ return new Date(this.valueOf());
+ };
+
+ _proto.toJSON = function toJSON() {
+ return this.isValid() ? this.toISOString() : null;
+ };
+
+ _proto.toISOString = function toISOString() {
+ // ie 8 return
+ // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)
+ // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')
+ return this.$d.toISOString();
+ };
+
+ _proto.toString = function toString() {
+ return this.$d.toUTCString();
+ };
+
+ return Dayjs;
+}();
+
+var proto = Dayjs.prototype;
+dayjs.prototype = proto;
+[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {
+ proto[g[1]] = function (input) {
+ return this.$g(input, g[0], g[1]);
+ };
+});
+
+dayjs.extend = function (plugin, option) {
+ if (!plugin.$i) {
+ // install plugin only once
+ plugin(option, Dayjs, dayjs);
+ plugin.$i = true;
+ }
+
+ return dayjs;
+};
+
+dayjs.locale = parseLocale;
+dayjs.isDayjs = isDayjs;
+
+dayjs.unix = function (timestamp) {
+ return dayjs(timestamp * 1e3);
+};
+
+dayjs.en = Ls[L];
+dayjs.Ls = Ls;
+dayjs.p = {};
+export default dayjs;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/af.js b/node_modules/dayjs/esm/locale/af.js
new file mode 100644
index 0000000..ce0c285
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/af.js
@@ -0,0 +1,39 @@
+// Afrikaans [af]
+import dayjs from '../index';
+var locale = {
+ name: 'af',
+ weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
+ months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
+ weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'oor %s',
+ past: '%s gelede',
+ s: "'n paar sekondes",
+ m: "'n minuut",
+ mm: '%d minute',
+ h: "'n uur",
+ hh: '%d ure',
+ d: "'n dag",
+ dd: '%d dae',
+ M: "'n maand",
+ MM: '%d maande',
+ y: "'n jaar",
+ yy: '%d jaar'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/am.js b/node_modules/dayjs/esm/locale/am.js
new file mode 100644
index 0000000..cf25510
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/am.js
@@ -0,0 +1,40 @@
+// Amharic [am]
+import dayjs from '../index';
+var locale = {
+ name: 'am',
+ weekdays: 'እሑድ_ሰኞ_ማክሰኞ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'),
+ weekdaysShort: 'እሑድ_ሰኞ_ማክሰ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'),
+ weekdaysMin: 'እሑ_ሰኞ_ማክ_ረቡ_ሐሙ_አር_ቅዳ'.split('_'),
+ months: 'ጃንዋሪ_ፌብሯሪ_ማርች_ኤፕሪል_ሜይ_ጁን_ጁላይ_ኦገስት_ሴፕቴምበር_ኦክቶበር_ኖቬምበር_ዲሴምበር'.split('_'),
+ monthsShort: 'ጃንዋ_ፌብሯ_ማርች_ኤፕሪ_ሜይ_ጁን_ጁላይ_ኦገስ_ሴፕቴ_ኦክቶ_ኖቬም_ዲሴም'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: 'በ%s',
+ past: '%s በፊት',
+ s: 'ጥቂት ሰከንዶች',
+ m: 'አንድ ደቂቃ',
+ mm: '%d ደቂቃዎች',
+ h: 'አንድ ሰዓት',
+ hh: '%d ሰዓታት',
+ d: 'አንድ ቀን',
+ dd: '%d ቀናት',
+ M: 'አንድ ወር',
+ MM: '%d ወራት',
+ y: 'አንድ ዓመት',
+ yy: '%d ዓመታት'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'MMMM D ፣ YYYY',
+ LLL: 'MMMM D ፣ YYYY HH:mm',
+ LLLL: 'dddd ፣ MMMM D ፣ YYYY HH:mm'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\u129B";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-dz.js b/node_modules/dayjs/esm/locale/ar-dz.js
new file mode 100644
index 0000000..3ecc04f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-dz.js
@@ -0,0 +1,41 @@
+// Arabic (Algeria) [ar-dz]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-dz',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-iq.js b/node_modules/dayjs/esm/locale/ar-iq.js
new file mode 100644
index 0000000..dfe31bf
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-iq.js
@@ -0,0 +1,42 @@
+// Arabic (Iraq) [ar-iq]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-iq',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-kw.js b/node_modules/dayjs/esm/locale/ar-kw.js
new file mode 100644
index 0000000..73bf90a
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-kw.js
@@ -0,0 +1,41 @@
+// Arabic (Kuwait) [ar-kw]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-kw',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-ly.js b/node_modules/dayjs/esm/locale/ar-ly.js
new file mode 100644
index 0000000..5caa869
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-ly.js
@@ -0,0 +1,27 @@
+// Arabic (Lybia) [ar-ly]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-ly',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekStart: 6,
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'D/M/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-ma.js b/node_modules/dayjs/esm/locale/ar-ma.js
new file mode 100644
index 0000000..ed6dfef
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-ma.js
@@ -0,0 +1,42 @@
+// Arabic (Morocco) [ar-ma]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-ma',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekStart: 6,
+ weekdaysShort: 'احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-sa.js b/node_modules/dayjs/esm/locale/ar-sa.js
new file mode 100644
index 0000000..8eb9687
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-sa.js
@@ -0,0 +1,41 @@
+// Arabic (Saudi Arabia) [ar-sa]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-sa',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar-tn.js b/node_modules/dayjs/esm/locale/ar-tn.js
new file mode 100644
index 0000000..3c1f2b0
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar-tn.js
@@ -0,0 +1,42 @@
+// Arabic (Tunisia) [ar-tn]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-tn',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ar.js b/node_modules/dayjs/esm/locale/ar.js
new file mode 100644
index 0000000..d161245
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ar.js
@@ -0,0 +1,74 @@
+// Arabic [ar]
+import dayjs from '../index';
+var months = 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_');
+var symbolMap = {
+ 1: '١',
+ 2: '٢',
+ 3: '٣',
+ 4: '٤',
+ 5: '٥',
+ 6: '٦',
+ 7: '٧',
+ 8: '٨',
+ 9: '٩',
+ 0: '٠'
+};
+var numberMap = {
+ '١': '1',
+ '٢': '2',
+ '٣': '3',
+ '٤': '4',
+ '٥': '5',
+ '٦': '6',
+ '٧': '7',
+ '٨': '8',
+ '٩': '9',
+ '٠': '0'
+};
+var locale = {
+ name: 'ar',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ months: months,
+ monthsShort: months,
+ weekStart: 6,
+ relativeTime: {
+ future: 'بعد %s',
+ past: 'منذ %s',
+ s: 'ثانية واحدة',
+ m: 'دقيقة واحدة',
+ mm: '%d دقائق',
+ h: 'ساعة واحدة',
+ hh: '%d ساعات',
+ d: 'يوم واحد',
+ dd: '%d أيام',
+ M: 'شهر واحد',
+ MM: '%d أشهر',
+ y: 'عام واحد',
+ yy: '%d أعوام'
+ },
+ preparse: function preparse(string) {
+ return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+ return numberMap[match];
+ }).replace(/،/g, ',');
+ },
+ postformat: function postformat(string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ }).replace(/,/g, '،');
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'D/M/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/az.js b/node_modules/dayjs/esm/locale/az.js
new file mode 100644
index 0000000..3505c8a
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/az.js
@@ -0,0 +1,39 @@
+// Azerbaijani [az]
+import dayjs from '../index';
+var locale = {
+ name: 'az',
+ weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
+ weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
+ weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
+ months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
+ monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY г.',
+ LLL: 'D MMMM YYYY г., H:mm',
+ LLLL: 'dddd, D MMMM YYYY г., H:mm'
+ },
+ relativeTime: {
+ future: '%s sonra',
+ past: '%s əvvəl',
+ s: 'bir neçə saniyə',
+ m: 'bir dəqiqə',
+ mm: '%d dəqiqə',
+ h: 'bir saat',
+ hh: '%d saat',
+ d: 'bir gün',
+ dd: '%d gün',
+ M: 'bir ay',
+ MM: '%d ay',
+ y: 'bir il',
+ yy: '%d il'
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/be.js b/node_modules/dayjs/esm/locale/be.js
new file mode 100644
index 0000000..5642e39
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/be.js
@@ -0,0 +1,24 @@
+// Belarusian [be]
+import dayjs from '../index';
+var locale = {
+ name: 'be',
+ weekdays: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
+ months: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+ monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
+ weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY г.',
+ LLL: 'D MMMM YYYY г., HH:mm',
+ LLLL: 'dddd, D MMMM YYYY г., HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bg.js b/node_modules/dayjs/esm/locale/bg.js
new file mode 100644
index 0000000..e60a2a3
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bg.js
@@ -0,0 +1,55 @@
+// Bulgarian [bg]
+import dayjs from '../index';
+var locale = {
+ name: 'bg',
+ weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
+ weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
+ weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+ months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
+ monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
+ weekStart: 1,
+ ordinal: function ordinal(n) {
+ var last2Digits = n % 100;
+
+ if (last2Digits > 10 && last2Digits < 20) {
+ return n + "-\u0442\u0438";
+ }
+
+ var lastDigit = n % 10;
+
+ if (lastDigit === 1) {
+ return n + "-\u0432\u0438";
+ } else if (lastDigit === 2) {
+ return n + "-\u0440\u0438";
+ } else if (lastDigit === 7 || lastDigit === 8) {
+ return n + "-\u043C\u0438";
+ }
+
+ return n + "-\u0442\u0438";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'D.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY H:mm',
+ LLLL: 'dddd, D MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'след %s',
+ past: 'преди %s',
+ s: 'няколко секунди',
+ m: 'минута',
+ mm: '%d минути',
+ h: 'час',
+ hh: '%d часа',
+ d: 'ден',
+ dd: '%d дена',
+ M: 'месец',
+ MM: '%d месеца',
+ y: 'година',
+ yy: '%d години'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bi.js b/node_modules/dayjs/esm/locale/bi.js
new file mode 100644
index 0000000..6230f25
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bi.js
@@ -0,0 +1,39 @@
+// Bislama [bi]
+import dayjs from '../index';
+var locale = {
+ name: 'bi',
+ weekdays: 'Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade'.split('_'),
+ months: 'Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'San_Man_Tus_Wen_Tos_Frae_Sar'.split('_'),
+ monthsShort: 'Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis'.split('_'),
+ weekdaysMin: 'San_Ma_Tu_We_To_Fr_Sar'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'lo %s',
+ past: '%s bifo',
+ s: 'sam seken',
+ m: 'wan minit',
+ mm: '%d minit',
+ h: 'wan haoa',
+ hh: '%d haoa',
+ d: 'wan dei',
+ dd: '%d dei',
+ M: 'wan manis',
+ MM: '%d manis',
+ y: 'wan yia',
+ yy: '%d yia'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bm.js b/node_modules/dayjs/esm/locale/bm.js
new file mode 100644
index 0000000..0d61093
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bm.js
@@ -0,0 +1,39 @@
+// Bambara [bm]
+import dayjs from '../index';
+var locale = {
+ name: 'bm',
+ weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
+ months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
+ monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
+ weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'MMMM [tile] D [san] YYYY',
+ LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+ LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
+ },
+ relativeTime: {
+ future: '%s kɔnɔ',
+ past: 'a bɛ %s bɔ',
+ s: 'sanga dama dama',
+ m: 'miniti kelen',
+ mm: 'miniti %d',
+ h: 'lɛrɛ kelen',
+ hh: 'lɛrɛ %d',
+ d: 'tile kelen',
+ dd: 'tile %d',
+ M: 'kalo kelen',
+ MM: 'kalo %d',
+ y: 'san kelen',
+ yy: 'san %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bn-bd.js b/node_modules/dayjs/esm/locale/bn-bd.js
new file mode 100644
index 0000000..f13b660
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bn-bd.js
@@ -0,0 +1,81 @@
+// Bengali (Bangladesh) [bn-bd]
+import dayjs from '../index';
+var symbolMap = {
+ 1: '১',
+ 2: '২',
+ 3: '৩',
+ 4: '৪',
+ 5: '৫',
+ 6: '৬',
+ 7: '৭',
+ 8: '৮',
+ 9: '৯',
+ 0: '০'
+};
+var numberMap = {
+ '১': '1',
+ '২': '2',
+ '৩': '3',
+ '৪': '4',
+ '৫': '5',
+ '৬': '6',
+ '৭': '7',
+ '৮': '8',
+ '৯': '9',
+ '০': '0'
+};
+var locale = {
+ name: 'bn-bd',
+ weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
+ months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
+ weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
+ monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
+ weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
+ weekStart: 0,
+ preparse: function preparse(string) {
+ return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
+ return numberMap[match];
+ });
+ },
+ postformat: function postformat(string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ });
+ },
+ ordinal: function ordinal(n) {
+ var s = ['ই', 'লা', 'রা', 'ঠা', 'শে'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ },
+ formats: {
+ LT: 'A h:mm সময়',
+ LTS: 'A h:mm:ss সময়',
+ L: 'DD/MM/YYYY খ্রিস্টাব্দ',
+ LL: 'D MMMM YYYY খ্রিস্টাব্দ',
+ LLL: 'D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়',
+ LLLL: 'dddd, D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়'
+ },
+ meridiem: function meridiem(hour) {
+ return (
+ /* eslint-disable no-nested-ternary */
+ hour < 4 ? 'রাত' : hour < 6 ? 'ভোর' : hour < 12 ? 'সকাল' : hour < 15 ? 'দুপুর' : hour < 18 ? 'বিকাল' : hour < 20 ? 'সন্ধ্যা' : 'রাত'
+ );
+ },
+ relativeTime: {
+ future: '%s পরে',
+ past: '%s আগে',
+ s: 'কয়েক সেকেন্ড',
+ m: 'এক মিনিট',
+ mm: '%d মিনিট',
+ h: 'এক ঘন্টা',
+ hh: '%d ঘন্টা',
+ d: 'এক দিন',
+ dd: '%d দিন',
+ M: 'এক মাস',
+ MM: '%d মাস',
+ y: 'এক বছর',
+ yy: '%d বছর'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bn.js b/node_modules/dayjs/esm/locale/bn.js
new file mode 100644
index 0000000..25fc170
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bn.js
@@ -0,0 +1,72 @@
+// Bengali [bn]
+import dayjs from '../index';
+var symbolMap = {
+ 1: '১',
+ 2: '২',
+ 3: '৩',
+ 4: '৪',
+ 5: '৫',
+ 6: '৬',
+ 7: '৭',
+ 8: '৮',
+ 9: '৯',
+ 0: '০'
+};
+var numberMap = {
+ '১': '1',
+ '২': '2',
+ '৩': '3',
+ '৪': '4',
+ '৫': '5',
+ '৬': '6',
+ '৭': '7',
+ '৮': '8',
+ '৯': '9',
+ '০': '0'
+};
+var locale = {
+ name: 'bn',
+ weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
+ months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
+ weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
+ monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
+ weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
+ preparse: function preparse(string) {
+ return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
+ return numberMap[match];
+ });
+ },
+ postformat: function postformat(string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ });
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm সময়',
+ LTS: 'A h:mm:ss সময়',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm সময়',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'
+ },
+ relativeTime: {
+ future: '%s পরে',
+ past: '%s আগে',
+ s: 'কয়েক সেকেন্ড',
+ m: 'এক মিনিট',
+ mm: '%d মিনিট',
+ h: 'এক ঘন্টা',
+ hh: '%d ঘন্টা',
+ d: 'এক দিন',
+ dd: '%d দিন',
+ M: 'এক মাস',
+ MM: '%d মাস',
+ y: 'এক বছর',
+ yy: '%d বছর'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bo.js b/node_modules/dayjs/esm/locale/bo.js
new file mode 100644
index 0000000..fce3344
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bo.js
@@ -0,0 +1,38 @@
+// Tibetan [bo]
+import dayjs from '../index';
+var locale = {
+ name: 'bo',
+ weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
+ weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
+ weekdaysMin: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
+ months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
+ monthsShort: 'ཟླ་དང་པོ_ཟླ་གཉིས་པ_ཟླ་གསུམ་པ_ཟླ་བཞི་པ_ཟླ་ལྔ་པ_ཟླ་དྲུག་པ_ཟླ་བདུན་པ_ཟླ་བརྒྱད་པ_ཟླ་དགུ་པ_ཟླ་བཅུ་པ_ཟླ་བཅུ་གཅིག་པ_ཟླ་བཅུ་གཉིས་པ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm',
+ LTS: 'A h:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm'
+ },
+ relativeTime: {
+ future: '%s ལ་',
+ past: '%s སྔོན་ལ་',
+ s: 'ཏོག་ཙམ་',
+ m: 'སྐར་མ་གཅིག་',
+ mm: 'སྐར་མ་ %d',
+ h: 'ཆུ་ཚོད་གཅིག་',
+ hh: 'ཆུ་ཚོད་ %d',
+ d: 'ཉིན་གཅིག་',
+ dd: 'ཉིན་ %d',
+ M: 'ཟླ་བ་གཅིག་',
+ MM: 'ཟླ་བ་ %d',
+ y: 'ལོ་གཅིག་',
+ yy: 'ལོ་ %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/br.js b/node_modules/dayjs/esm/locale/br.js
new file mode 100644
index 0000000..d18b4fe
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/br.js
@@ -0,0 +1,93 @@
+// Breton [br]
+import dayjs from '../index';
+
+function lastNumber(number) {
+ if (number > 9) {
+ return lastNumber(number % 10);
+ }
+
+ return number;
+}
+
+function softMutation(text) {
+ var mutationTable = {
+ m: 'v',
+ b: 'v',
+ d: 'z'
+ };
+ return mutationTable[text.charAt(0)] + text.substring(1);
+}
+
+function mutation(text, number) {
+ if (number === 2) {
+ return softMutation(text);
+ }
+
+ return text;
+}
+
+function relativeTimeWithMutation(number, withoutSuffix, key) {
+ var format = {
+ mm: 'munutenn',
+ MM: 'miz',
+ dd: 'devezh'
+ };
+ return number + " " + mutation(format[key], number);
+}
+
+function specialMutationForYears(number) {
+ /* istanbul ignore next line */
+ switch (lastNumber(number)) {
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 9:
+ return number + " bloaz";
+
+ default:
+ return number + " vloaz";
+ }
+}
+
+var locale = {
+ name: 'br',
+ weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
+ months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
+ monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
+ weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h[e]mm A',
+ LTS: 'h[e]mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D [a viz] MMMM YYYY',
+ LLL: 'D [a viz] MMMM YYYY h[e]mm A',
+ LLLL: 'dddd, D [a viz] MMMM YYYY h[e]mm A'
+ },
+ relativeTime: {
+ future: 'a-benn %s',
+ past: '%s ʼzo',
+ s: 'un nebeud segondennoù',
+ m: 'ur vunutenn',
+ mm: relativeTimeWithMutation,
+ h: 'un eur',
+ hh: '%d eur',
+ d: 'un devezh',
+ dd: relativeTimeWithMutation,
+ M: 'ur miz',
+ MM: relativeTimeWithMutation,
+ y: 'ur bloaz',
+ yy: specialMutationForYears
+ },
+ meridiem: function meridiem(hour) {
+ return hour < 12 ? 'a.m.' : 'g.m.';
+ } // a-raok merenn | goude merenn
+
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/bs.js b/node_modules/dayjs/esm/locale/bs.js
new file mode 100644
index 0000000..328a1fe
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/bs.js
@@ -0,0 +1,24 @@
+// Bosnian [bs]
+import dayjs from '../index';
+var locale = {
+ name: 'bs',
+ weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ca.js b/node_modules/dayjs/esm/locale/ca.js
new file mode 100644
index 0000000..94fc0b9
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ca.js
@@ -0,0 +1,44 @@
+// Catalan [ca]
+import dayjs from '../index';
+var locale = {
+ name: 'ca',
+ weekdays: 'Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte'.split('_'),
+ weekdaysShort: 'Dg._Dl._Dt._Dc._Dj._Dv._Ds.'.split('_'),
+ weekdaysMin: 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
+ months: 'Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre'.split('_'),
+ monthsShort: 'Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM [de] YYYY',
+ LLL: 'D MMMM [de] YYYY [a les] H:mm',
+ LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
+ ll: 'D MMM YYYY',
+ lll: 'D MMM YYYY, H:mm',
+ llll: 'ddd D MMM YYYY, H:mm'
+ },
+ relativeTime: {
+ future: 'd\'aquí %s',
+ past: 'fa %s',
+ s: 'uns segons',
+ m: 'un minut',
+ mm: '%d minuts',
+ h: 'una hora',
+ hh: '%d hores',
+ d: 'un dia',
+ dd: '%d dies',
+ M: 'un mes',
+ MM: '%d mesos',
+ y: 'un any',
+ yy: '%d anys'
+ },
+ ordinal: function ordinal(n) {
+ var ord;
+ if (n === 1 || n === 3) ord = 'r';else if (n === 2) ord = 'n';else if (n === 4) ord = 't';else ord = 'è';
+ return "" + n + ord;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/cs.js b/node_modules/dayjs/esm/locale/cs.js
new file mode 100644
index 0000000..165b662
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/cs.js
@@ -0,0 +1,120 @@
+// Czech [cs]
+import dayjs from '../index';
+
+function plural(n) {
+ return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line
+}
+/* eslint-disable */
+
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = number + " ";
+
+ switch (key) {
+ case 's':
+ // a few seconds / in a few seconds / a few seconds ago
+ return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
+
+ case 'm':
+ // a minute / in a minute / a minute ago
+ return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
+
+ case 'mm':
+ // 9 minutes / in 9 minutes / 9 minutes ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'minuty' : 'minut');
+ }
+
+ return result + "minutami";
+
+ case 'h':
+ // an hour / in an hour / an hour ago
+ return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+
+ case 'hh':
+ // 9 hours / in 9 hours / 9 hours ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'hodiny' : 'hodin');
+ }
+
+ return result + "hodinami";
+
+ case 'd':
+ // a day / in a day / a day ago
+ return withoutSuffix || isFuture ? 'den' : 'dnem';
+
+ case 'dd':
+ // 9 days / in 9 days / 9 days ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'dny' : 'dní');
+ }
+
+ return result + "dny";
+
+ case 'M':
+ // a month / in a month / a month ago
+ return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
+
+ case 'MM':
+ // 9 months / in 9 months / 9 months ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'měsíce' : 'měsíců');
+ }
+
+ return result + "m\u011Bs\xEDci";
+
+ case 'y':
+ // a year / in a year / a year ago
+ return withoutSuffix || isFuture ? 'rok' : 'rokem';
+
+ case 'yy':
+ // 9 years / in 9 years / 9 years ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'roky' : 'let');
+ }
+
+ return result + "lety";
+ }
+}
+/* eslint-enable */
+
+
+var locale = {
+ name: 'cs',
+ weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
+ weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
+ weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
+ months: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
+ monthsShort: 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd D. MMMM YYYY H:mm',
+ l: 'D. M. YYYY'
+ },
+ relativeTime: {
+ future: 'za %s',
+ past: 'před %s',
+ s: translate,
+ m: translate,
+ mm: translate,
+ h: translate,
+ hh: translate,
+ d: translate,
+ dd: translate,
+ M: translate,
+ MM: translate,
+ y: translate,
+ yy: translate
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/cv.js b/node_modules/dayjs/esm/locale/cv.js
new file mode 100644
index 0000000..7dc41f7
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/cv.js
@@ -0,0 +1,24 @@
+// Chuvash [cv]
+import dayjs from '../index';
+var locale = {
+ name: 'cv',
+ weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
+ months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
+ monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
+ weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD-MM-YYYY',
+ LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
+ LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+ LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/cy.js b/node_modules/dayjs/esm/locale/cy.js
new file mode 100644
index 0000000..63e6c33
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/cy.js
@@ -0,0 +1,39 @@
+// Welsh [cy]
+import dayjs from '../index';
+var locale = {
+ name: 'cy',
+ weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
+ months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
+ monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
+ weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'mewn %s',
+ past: '%s yn ôl',
+ s: 'ychydig eiliadau',
+ m: 'munud',
+ mm: '%d munud',
+ h: 'awr',
+ hh: '%d awr',
+ d: 'diwrnod',
+ dd: '%d diwrnod',
+ M: 'mis',
+ MM: '%d mis',
+ y: 'blwyddyn',
+ yy: '%d flynedd'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/da.js b/node_modules/dayjs/esm/locale/da.js
new file mode 100644
index 0000000..38fd134
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/da.js
@@ -0,0 +1,39 @@
+// Danish [da]
+import dayjs from '../index';
+var locale = {
+ name: 'da',
+ weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+ weekdaysShort: 'søn._man._tirs._ons._tors._fre._lør.'.split('_'),
+ weekdaysMin: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
+ months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
+ monthsShort: 'jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.'.split('_'),
+ weekStart: 1,
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY HH:mm',
+ LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
+ },
+ relativeTime: {
+ future: 'om %s',
+ past: '%s siden',
+ s: 'få sekunder',
+ m: 'et minut',
+ mm: '%d minutter',
+ h: 'en time',
+ hh: '%d timer',
+ d: 'en dag',
+ dd: '%d dage',
+ M: 'en måned',
+ MM: '%d måneder',
+ y: 'et år',
+ yy: '%d år'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/de-at.js b/node_modules/dayjs/esm/locale/de-at.js
new file mode 100644
index 0000000..e109d97
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/de-at.js
@@ -0,0 +1,63 @@
+// German (Austria) [de-at]
+import dayjs from '../index';
+var texts = {
+ s: 'ein paar Sekunden',
+ m: ['eine Minute', 'einer Minute'],
+ mm: '%d Minuten',
+ h: ['eine Stunde', 'einer Stunde'],
+ hh: '%d Stunden',
+ d: ['ein Tag', 'einem Tag'],
+ dd: ['%d Tage', '%d Tagen'],
+ M: ['ein Monat', 'einem Monat'],
+ MM: ['%d Monate', '%d Monaten'],
+ y: ['ein Jahr', 'einem Jahr'],
+ yy: ['%d Jahre', '%d Jahren']
+};
+
+function relativeTimeFormatter(number, withoutSuffix, key) {
+ var l = texts[key];
+
+ if (Array.isArray(l)) {
+ l = l[withoutSuffix ? 0 : 1];
+ }
+
+ return l.replace('%d', number);
+}
+
+var locale = {
+ name: 'de-at',
+ weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
+ weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+ weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+ months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ formats: {
+ LTS: 'HH:mm:ss',
+ LT: 'HH:mm',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY HH:mm',
+ LLLL: 'dddd, D. MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: 'vor %s',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/de-ch.js b/node_modules/dayjs/esm/locale/de-ch.js
new file mode 100644
index 0000000..1ffbbf7
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/de-ch.js
@@ -0,0 +1,63 @@
+// German (Switzerland) [de-ch]
+import dayjs from '../index';
+var texts = {
+ s: 'ein paar Sekunden',
+ m: ['eine Minute', 'einer Minute'],
+ mm: '%d Minuten',
+ h: ['eine Stunde', 'einer Stunde'],
+ hh: '%d Stunden',
+ d: ['ein Tag', 'einem Tag'],
+ dd: ['%d Tage', '%d Tagen'],
+ M: ['ein Monat', 'einem Monat'],
+ MM: ['%d Monate', '%d Monaten'],
+ y: ['ein Jahr', 'einem Jahr'],
+ yy: ['%d Jahre', '%d Jahren']
+};
+
+function relativeTimeFormatter(number, withoutSuffix, key) {
+ var l = texts[key];
+
+ if (Array.isArray(l)) {
+ l = l[withoutSuffix ? 0 : 1];
+ }
+
+ return l.replace('%d', number);
+}
+
+var locale = {
+ name: 'de-ch',
+ weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
+ weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+ weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+ months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY HH:mm',
+ LLLL: 'dddd, D. MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: 'vor %s',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/de.js b/node_modules/dayjs/esm/locale/de.js
new file mode 100644
index 0000000..8ccd483
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/de.js
@@ -0,0 +1,64 @@
+// German [de]
+import dayjs from '../index';
+var texts = {
+ s: 'ein paar Sekunden',
+ m: ['eine Minute', 'einer Minute'],
+ mm: '%d Minuten',
+ h: ['eine Stunde', 'einer Stunde'],
+ hh: '%d Stunden',
+ d: ['ein Tag', 'einem Tag'],
+ dd: ['%d Tage', '%d Tagen'],
+ M: ['ein Monat', 'einem Monat'],
+ MM: ['%d Monate', '%d Monaten'],
+ y: ['ein Jahr', 'einem Jahr'],
+ yy: ['%d Jahre', '%d Jahren']
+};
+
+function relativeTimeFormatter(number, withoutSuffix, key) {
+ var l = texts[key];
+
+ if (Array.isArray(l)) {
+ l = l[withoutSuffix ? 0 : 1];
+ }
+
+ return l.replace('%d', number);
+}
+
+var locale = {
+ name: 'de',
+ weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
+ weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+ weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+ months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LTS: 'HH:mm:ss',
+ LT: 'HH:mm',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY HH:mm',
+ LLLL: 'dddd, D. MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: 'vor %s',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/dv.js b/node_modules/dayjs/esm/locale/dv.js
new file mode 100644
index 0000000..8943fdd
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/dv.js
@@ -0,0 +1,39 @@
+// Maldivian [dv]
+import dayjs from '../index';
+var locale = {
+ name: 'dv',
+ weekdays: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'),
+ months: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'),
+ weekStart: 7,
+ weekdaysShort: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'),
+ monthsShort: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'),
+ weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'D/M/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'ތެރޭގައި %s',
+ past: 'ކުރިން %s',
+ s: 'ސިކުންތުކޮޅެއް',
+ m: 'މިނިޓެއް',
+ mm: 'މިނިޓު %d',
+ h: 'ގަޑިއިރެއް',
+ hh: 'ގަޑިއިރު %d',
+ d: 'ދުވަހެއް',
+ dd: 'ދުވަސް %d',
+ M: 'މަހެއް',
+ MM: 'މަސް %d',
+ y: 'އަހަރެއް',
+ yy: 'އަހަރު %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/el.js b/node_modules/dayjs/esm/locale/el.js
new file mode 100644
index 0000000..2aa9917
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/el.js
@@ -0,0 +1,39 @@
+// Greek [el]
+import dayjs from '../index';
+var locale = {
+ name: 'el',
+ weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
+ weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
+ weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
+ months: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
+ monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Νοε_Δεκ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ weekStart: 1,
+ relativeTime: {
+ future: 'σε %s',
+ past: 'πριν %s',
+ s: 'μερικά δευτερόλεπτα',
+ m: 'ένα λεπτό',
+ mm: '%d λεπτά',
+ h: 'μία ώρα',
+ hh: '%d ώρες',
+ d: 'μία μέρα',
+ dd: '%d μέρες',
+ M: 'ένα μήνα',
+ MM: '%d μήνες',
+ y: 'ένα χρόνο',
+ yy: '%d χρόνια'
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-au.js b/node_modules/dayjs/esm/locale/en-au.js
new file mode 100644
index 0000000..f9dde03
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-au.js
@@ -0,0 +1,39 @@
+// English (Australia) [en-au]
+import dayjs from '../index';
+var locale = {
+ name: 'en-au',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-ca.js b/node_modules/dayjs/esm/locale/en-ca.js
new file mode 100644
index 0000000..8e416c9
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-ca.js
@@ -0,0 +1,38 @@
+// English (Canada) [en-ca]
+import dayjs from '../index';
+var locale = {
+ name: 'en-ca',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'YYYY-MM-DD',
+ LL: 'MMMM D, YYYY',
+ LLL: 'MMMM D, YYYY h:mm A',
+ LLLL: 'dddd, MMMM D, YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-gb.js b/node_modules/dayjs/esm/locale/en-gb.js
new file mode 100644
index 0000000..f979b44
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-gb.js
@@ -0,0 +1,42 @@
+// English (United Kingdom) [en-gb]
+import dayjs from '../index';
+var locale = {
+ name: 'en-gb',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-ie.js b/node_modules/dayjs/esm/locale/en-ie.js
new file mode 100644
index 0000000..8098d2f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-ie.js
@@ -0,0 +1,39 @@
+// English (Ireland) [en-ie]
+import dayjs from '../index';
+var locale = {
+ name: 'en-ie',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-il.js b/node_modules/dayjs/esm/locale/en-il.js
new file mode 100644
index 0000000..56c241a
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-il.js
@@ -0,0 +1,38 @@
+// English (Israel) [en-il]
+import dayjs from '../index';
+var locale = {
+ name: 'en-il',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-in.js b/node_modules/dayjs/esm/locale/en-in.js
new file mode 100644
index 0000000..7ccb206
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-in.js
@@ -0,0 +1,42 @@
+// English (India) [en-in]
+import dayjs from '../index';
+var locale = {
+ name: 'en-in',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-nz.js b/node_modules/dayjs/esm/locale/en-nz.js
new file mode 100644
index 0000000..08c562e
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-nz.js
@@ -0,0 +1,41 @@
+// English (New Zealand) [en-nz]
+import dayjs from '../index';
+var locale = {
+ name: 'en-nz',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-sg.js b/node_modules/dayjs/esm/locale/en-sg.js
new file mode 100644
index 0000000..3c5edce
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-sg.js
@@ -0,0 +1,39 @@
+// English (Singapore) [en-sg]
+import dayjs from '../index';
+var locale = {
+ name: 'en-sg',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en-tt.js b/node_modules/dayjs/esm/locale/en-tt.js
new file mode 100644
index 0000000..ef47eeb
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en-tt.js
@@ -0,0 +1,42 @@
+// English (Trinidad & Tobago) [en-tt]
+import dayjs from '../index';
+var locale = {
+ name: 'en-tt',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/en.js b/node_modules/dayjs/esm/locale/en.js
new file mode 100644
index 0000000..8ba6107
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/en.js
@@ -0,0 +1,12 @@
+// English [en]
+// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale
+export default {
+ name: 'en',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ }
+};
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/eo.js b/node_modules/dayjs/esm/locale/eo.js
new file mode 100644
index 0000000..e62599a
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/eo.js
@@ -0,0 +1,39 @@
+// Esperanto [eo]
+import dayjs from '../index';
+var locale = {
+ name: 'eo',
+ weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
+ months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
+ weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'D[-a de] MMMM, YYYY',
+ LLL: 'D[-a de] MMMM, YYYY HH:mm',
+ LLLL: 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'post %s',
+ past: 'antaŭ %s',
+ s: 'sekundoj',
+ m: 'minuto',
+ mm: '%d minutoj',
+ h: 'horo',
+ hh: '%d horoj',
+ d: 'tago',
+ dd: '%d tagoj',
+ M: 'monato',
+ MM: '%d monatoj',
+ y: 'jaro',
+ yy: '%d jaroj'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/es-do.js b/node_modules/dayjs/esm/locale/es-do.js
new file mode 100644
index 0000000..09410cf
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/es-do.js
@@ -0,0 +1,39 @@
+// Spanish (Dominican Republic) [es-do]
+import dayjs from '../index';
+var locale = {
+ name: 'es-do',
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ weekStart: 1,
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY h:mm A',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/es-mx.js b/node_modules/dayjs/esm/locale/es-mx.js
new file mode 100644
index 0000000..0207f83
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/es-mx.js
@@ -0,0 +1,38 @@
+// Spanish (Mexico) [es-mx]
+import dayjs from '../index';
+var locale = {
+ name: 'es-mx',
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY H:mm',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/es-pr.js b/node_modules/dayjs/esm/locale/es-pr.js
new file mode 100644
index 0000000..5edc359
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/es-pr.js
@@ -0,0 +1,39 @@
+// Spanish (Puerto Rico) [es-PR]
+import dayjs from '../index';
+var locale = {
+ name: 'es-pr',
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'MM/DD/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY h:mm A',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/es-us.js b/node_modules/dayjs/esm/locale/es-us.js
new file mode 100644
index 0000000..f9b01a0
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/es-us.js
@@ -0,0 +1,38 @@
+// Spanish (United States) [es-us]
+import dayjs from '../index';
+var locale = {
+ name: 'es-us',
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'MM/DD/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY h:mm A',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/es.js b/node_modules/dayjs/esm/locale/es.js
new file mode 100644
index 0000000..84bdfbe
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/es.js
@@ -0,0 +1,39 @@
+// Spanish [es]
+import dayjs from '../index';
+var locale = {
+ name: 'es',
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY H:mm',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/et.js b/node_modules/dayjs/esm/locale/et.js
new file mode 100644
index 0000000..7f7c5ff
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/et.js
@@ -0,0 +1,65 @@
+// Estonian [et]
+import dayjs from '../index';
+
+function relativeTimeWithTense(number, withoutSuffix, key, isFuture) {
+ var format = {
+ s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
+ m: ['ühe minuti', 'üks minut'],
+ mm: ['%d minuti', '%d minutit'],
+ h: ['ühe tunni', 'tund aega', 'üks tund'],
+ hh: ['%d tunni', '%d tundi'],
+ d: ['ühe päeva', 'üks päev'],
+ M: ['kuu aja', 'kuu aega', 'üks kuu'],
+ MM: ['%d kuu', '%d kuud'],
+ y: ['ühe aasta', 'aasta', 'üks aasta'],
+ yy: ['%d aasta', '%d aastat']
+ };
+
+ if (withoutSuffix) {
+ return (format[key][2] ? format[key][2] : format[key][1]).replace('%d', number);
+ }
+
+ return (isFuture ? format[key][0] : format[key][1]).replace('%d', number);
+}
+
+var locale = {
+ name: 'et',
+ // Estonian
+ weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
+ // Note weekdays are not capitalized in Estonian
+ weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
+ // There is no short form of weekdays in Estonian except this 1 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin'
+ weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
+ months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
+ // Note month names are not capitalized in Estonian
+ monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ relativeTime: {
+ future: '%s pärast',
+ past: '%s tagasi',
+ s: relativeTimeWithTense,
+ m: relativeTimeWithTense,
+ mm: relativeTimeWithTense,
+ h: relativeTimeWithTense,
+ hh: relativeTimeWithTense,
+ d: relativeTimeWithTense,
+ dd: '%d päeva',
+ M: relativeTimeWithTense,
+ MM: relativeTimeWithTense,
+ y: relativeTimeWithTense,
+ yy: relativeTimeWithTense
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/eu.js b/node_modules/dayjs/esm/locale/eu.js
new file mode 100644
index 0000000..5cb73d0
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/eu.js
@@ -0,0 +1,43 @@
+// Basque [eu]
+import dayjs from '../index';
+var locale = {
+ name: 'eu',
+ weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
+ months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
+ monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
+ weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY[ko] MMMM[ren] D[a]',
+ LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
+ LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
+ l: 'YYYY-M-D',
+ ll: 'YYYY[ko] MMM D[a]',
+ lll: 'YYYY[ko] MMM D[a] HH:mm',
+ llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'
+ },
+ relativeTime: {
+ future: '%s barru',
+ past: 'duela %s',
+ s: 'segundo batzuk',
+ m: 'minutu bat',
+ mm: '%d minutu',
+ h: 'ordu bat',
+ hh: '%d ordu',
+ d: 'egun bat',
+ dd: '%d egun',
+ M: 'hilabete bat',
+ MM: '%d hilabete',
+ y: 'urte bat',
+ yy: '%d urte'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fa.js b/node_modules/dayjs/esm/locale/fa.js
new file mode 100644
index 0000000..02b1369
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fa.js
@@ -0,0 +1,39 @@
+// Persian [fa]
+import dayjs from '../index';
+var locale = {
+ name: 'fa',
+ weekdays: 'یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه'.split('_'),
+ weekdaysShort: 'یک_دو_سه_چه_پن_جم_شن'.split('_'),
+ weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
+ weekStart: 6,
+ months: 'فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند'.split('_'),
+ monthsShort: 'فرو_ارد_خرد_تیر_مرد_شهر_مهر_آبا_آذر_دی_بهم_اسف'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'در %s',
+ past: '%s قبل',
+ s: 'چند ثانیه',
+ m: 'یک دقیقه',
+ mm: '%d دقیقه',
+ h: 'یک ساعت',
+ hh: '%d ساعت',
+ d: 'یک روز',
+ dd: '%d روز',
+ M: 'یک ماه',
+ MM: '%d ماه',
+ y: 'یک سال',
+ yy: '%d سال'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fi.js b/node_modules/dayjs/esm/locale/fi.js
new file mode 100644
index 0000000..1ded894
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fi.js
@@ -0,0 +1,88 @@
+// Finnish [fi]
+import dayjs from '../index';
+
+function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {
+ var past = {
+ s: 'muutama sekunti',
+ m: 'minuutti',
+ mm: '%d minuuttia',
+ h: 'tunti',
+ hh: '%d tuntia',
+ d: 'päivä',
+ dd: '%d päivää',
+ M: 'kuukausi',
+ MM: '%d kuukautta',
+ y: 'vuosi',
+ yy: '%d vuotta',
+ numbers: 'nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän'.split('_')
+ };
+ var future = {
+ s: 'muutaman sekunnin',
+ m: 'minuutin',
+ mm: '%d minuutin',
+ h: 'tunnin',
+ hh: '%d tunnin',
+ d: 'päivän',
+ dd: '%d päivän',
+ M: 'kuukauden',
+ MM: '%d kuukauden',
+ y: 'vuoden',
+ yy: '%d vuoden',
+ numbers: 'nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän'.split('_')
+ };
+ var words = isFuture && !withoutSuffix ? future : past;
+ var result = words[key];
+
+ if (number < 10) {
+ return result.replace('%d', words.numbers[number]);
+ }
+
+ return result.replace('%d', number);
+}
+
+var locale = {
+ name: 'fi',
+ // Finnish
+ weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
+ // Note weekdays are not capitalized in Finnish
+ weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
+ // There is no short form of weekdays in Finnish except this 2 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin'
+ weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
+ months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
+ // Note month names are not capitalized in Finnish
+ monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: '%s päästä',
+ past: '%s sitten',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ },
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM[ta] YYYY',
+ LLL: 'D. MMMM[ta] YYYY, [klo] HH.mm',
+ LLLL: 'dddd, D. MMMM[ta] YYYY, [klo] HH.mm',
+ l: 'D.M.YYYY',
+ ll: 'D. MMM YYYY',
+ lll: 'D. MMM YYYY, [klo] HH.mm',
+ llll: 'ddd, D. MMM YYYY, [klo] HH.mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fo.js b/node_modules/dayjs/esm/locale/fo.js
new file mode 100644
index 0000000..07c3761
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fo.js
@@ -0,0 +1,39 @@
+// Faroese [fo]
+import dayjs from '../index';
+var locale = {
+ name: 'fo',
+ weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
+ months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+ weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D. MMMM, YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'um %s',
+ past: '%s síðani',
+ s: 'fá sekund',
+ m: 'ein minuttur',
+ mm: '%d minuttir',
+ h: 'ein tími',
+ hh: '%d tímar',
+ d: 'ein dagur',
+ dd: '%d dagar',
+ M: 'ein mánaður',
+ MM: '%d mánaðir',
+ y: 'eitt ár',
+ yy: '%d ár'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fr-ca.js b/node_modules/dayjs/esm/locale/fr-ca.js
new file mode 100644
index 0000000..688d695
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fr-ca.js
@@ -0,0 +1,38 @@
+// French (Canada) [fr-ca]
+import dayjs from '../index';
+var locale = {
+ name: 'fr-ca',
+ weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'dans %s',
+ past: 'il y a %s',
+ s: 'quelques secondes',
+ m: 'une minute',
+ mm: '%d minutes',
+ h: 'une heure',
+ hh: '%d heures',
+ d: 'un jour',
+ dd: '%d jours',
+ M: 'un mois',
+ MM: '%d mois',
+ y: 'un an',
+ yy: '%d ans'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fr-ch.js b/node_modules/dayjs/esm/locale/fr-ch.js
new file mode 100644
index 0000000..593dba8
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fr-ch.js
@@ -0,0 +1,39 @@
+// French (Switzerland) [fr-ch]
+import dayjs from '../index';
+var locale = {
+ name: 'fr-ch',
+ weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'dans %s',
+ past: 'il y a %s',
+ s: 'quelques secondes',
+ m: 'une minute',
+ mm: '%d minutes',
+ h: 'une heure',
+ hh: '%d heures',
+ d: 'un jour',
+ dd: '%d jours',
+ M: 'un mois',
+ MM: '%d mois',
+ y: 'un an',
+ yy: '%d ans'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fr.js b/node_modules/dayjs/esm/locale/fr.js
new file mode 100644
index 0000000..b31c11d
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fr.js
@@ -0,0 +1,41 @@
+// French [fr]
+import dayjs from '../index';
+var locale = {
+ name: 'fr',
+ weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+ months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'dans %s',
+ past: 'il y a %s',
+ s: 'quelques secondes',
+ m: 'une minute',
+ mm: '%d minutes',
+ h: 'une heure',
+ hh: '%d heures',
+ d: 'un jour',
+ dd: '%d jours',
+ M: 'un mois',
+ MM: '%d mois',
+ y: 'un an',
+ yy: '%d ans'
+ },
+ ordinal: function ordinal(n) {
+ var o = n === 1 ? 'er' : '';
+ return "" + n + o;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/fy.js b/node_modules/dayjs/esm/locale/fy.js
new file mode 100644
index 0000000..4b9f9de
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/fy.js
@@ -0,0 +1,39 @@
+// Frisian [fy]
+import dayjs from '../index';
+var locale = {
+ name: 'fy',
+ weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
+ months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
+ monthsShort: 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
+ weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD-MM-YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'oer %s',
+ past: '%s lyn',
+ s: 'in pear sekonden',
+ m: 'ien minút',
+ mm: '%d minuten',
+ h: 'ien oere',
+ hh: '%d oeren',
+ d: 'ien dei',
+ dd: '%d dagen',
+ M: 'ien moanne',
+ MM: '%d moannen',
+ y: 'ien jier',
+ yy: '%d jierren'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ga.js b/node_modules/dayjs/esm/locale/ga.js
new file mode 100644
index 0000000..8cdfa9f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ga.js
@@ -0,0 +1,39 @@
+// Irish or Irish Gaelic [ga]
+import dayjs from '../index';
+var locale = {
+ name: 'ga',
+ weekdays: 'Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn'.split('_'),
+ months: 'Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Dom_Lua_Mái_Céa_Déa_hAo_Sat'.split('_'),
+ monthsShort: 'Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll'.split('_'),
+ weekdaysMin: 'Do_Lu_Má_Ce_Dé_hA_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'i %s',
+ past: '%s ó shin',
+ s: 'cúpla soicind',
+ m: 'nóiméad',
+ mm: '%d nóiméad',
+ h: 'uair an chloig',
+ hh: '%d uair an chloig',
+ d: 'lá',
+ dd: '%d lá',
+ M: 'mí',
+ MM: '%d mí',
+ y: 'bliain',
+ yy: '%d bliain'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/gd.js b/node_modules/dayjs/esm/locale/gd.js
new file mode 100644
index 0000000..fcf62cd
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/gd.js
@@ -0,0 +1,39 @@
+// Scottish Gaelic [gd]
+import dayjs from '../index';
+var locale = {
+ name: 'gd',
+ weekdays: 'Didòmhnaich_Diluain_Dimàirt_Diciadain_Diardaoin_Dihaoine_Disathairne'.split('_'),
+ months: 'Am Faoilleach_An Gearran_Am Màrt_An Giblean_An Cèitean_An t-Ògmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dàmhair_An t-Samhain_An Dùbhlachd'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Did_Dil_Dim_Dic_Dia_Dih_Dis'.split('_'),
+ monthsShort: 'Faoi_Gear_Màrt_Gibl_Cèit_Ògmh_Iuch_Lùn_Sult_Dàmh_Samh_Dùbh'.split('_'),
+ weekdaysMin: 'Dò_Lu_Mà_Ci_Ar_Ha_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'ann an %s',
+ past: 'bho chionn %s',
+ s: 'beagan diogan',
+ m: 'mionaid',
+ mm: '%d mionaidean',
+ h: 'uair',
+ hh: '%d uairean',
+ d: 'latha',
+ dd: '%d latha',
+ M: 'mìos',
+ MM: '%d mìosan',
+ y: 'bliadhna',
+ yy: '%d bliadhna'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/gl.js b/node_modules/dayjs/esm/locale/gl.js
new file mode 100644
index 0000000..23d687f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/gl.js
@@ -0,0 +1,39 @@
+// Galician [gl]
+import dayjs from '../index';
+var locale = {
+ name: 'gl',
+ weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
+ months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
+ monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY H:mm',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'en %s',
+ past: 'fai %s',
+ s: 'uns segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'unha hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un ano',
+ yy: '%d anos'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/gom-latn.js b/node_modules/dayjs/esm/locale/gom-latn.js
new file mode 100644
index 0000000..d621f5b
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/gom-latn.js
@@ -0,0 +1,25 @@
+// Konkani Latin script [gom-latn]
+import dayjs from '../index';
+var locale = {
+ name: 'gom-latn',
+ weekdays: "Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split('_'),
+ months: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
+ monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
+ weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm [vazta]',
+ LTS: 'A h:mm:ss [vazta]',
+ L: 'DD-MM-YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY A h:mm [vazta]',
+ LLLL: 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
+ llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/gu.js b/node_modules/dayjs/esm/locale/gu.js
new file mode 100644
index 0000000..e05f44b
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/gu.js
@@ -0,0 +1,38 @@
+// Gujarati [gu]
+import dayjs from '../index';
+var locale = {
+ name: 'gu',
+ weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
+ months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
+ weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
+ monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
+ weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm વાગ્યે',
+ LTS: 'A h:mm:ss વાગ્યે',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
+ },
+ relativeTime: {
+ future: '%s મા',
+ past: '%s પેહલા',
+ s: 'અમુક પળો',
+ m: 'એક મિનિટ',
+ mm: '%d મિનિટ',
+ h: 'એક કલાક',
+ hh: '%d કલાક',
+ d: 'એક દિવસ',
+ dd: '%d દિવસ',
+ M: 'એક મહિનો',
+ MM: '%d મહિનો',
+ y: 'એક વર્ષ',
+ yy: '%d વર્ષ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/he.js b/node_modules/dayjs/esm/locale/he.js
new file mode 100644
index 0000000..a8868ff
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/he.js
@@ -0,0 +1,78 @@
+// Hebrew [he]
+import dayjs from '../index';
+var texts = {
+ s: 'מספר שניות',
+ ss: '%d שניות',
+ m: 'דקה',
+ mm: '%d דקות',
+ h: 'שעה',
+ hh: '%d שעות',
+ hh2: 'שעתיים',
+ d: 'יום',
+ dd: '%d ימים',
+ dd2: 'יומיים',
+ M: 'חודש',
+ MM: '%d חודשים',
+ MM2: 'חודשיים',
+ y: 'שנה',
+ yy: '%d שנים',
+ yy2: 'שנתיים'
+};
+
+function relativeTimeFormatter(number, withoutSuffix, key) {
+ var text = texts[key + (number === 2 ? '2' : '')] || texts[key];
+ return text.replace('%d', number);
+}
+
+var locale = {
+ name: 'he',
+ weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
+ weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
+ weekdaysMin: 'א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳'.split('_'),
+ months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
+ monthsShort: 'ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ'.split('_'),
+ relativeTime: {
+ future: 'בעוד %s',
+ past: 'לפני %s',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ format: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [ב]MMMM YYYY',
+ LLL: 'D [ב]MMMM YYYY HH:mm',
+ LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
+ l: 'D/M/YYYY',
+ ll: 'D MMM YYYY',
+ lll: 'D MMM YYYY HH:mm',
+ llll: 'ddd, D MMM YYYY HH:mm'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [ב]MMMM YYYY',
+ LLL: 'D [ב]MMMM YYYY HH:mm',
+ LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
+ l: 'D/M/YYYY',
+ ll: 'D MMM YYYY',
+ lll: 'D MMM YYYY HH:mm',
+ llll: 'ddd, D MMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/hi.js b/node_modules/dayjs/esm/locale/hi.js
new file mode 100644
index 0000000..e877ed6
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/hi.js
@@ -0,0 +1,38 @@
+// Hindi [hi]
+import dayjs from '../index';
+var locale = {
+ name: 'hi',
+ weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+ months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
+ weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
+ monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
+ weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm बजे',
+ LTS: 'A h:mm:ss बजे',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm बजे',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'
+ },
+ relativeTime: {
+ future: '%s में',
+ past: '%s पहले',
+ s: 'कुछ ही क्षण',
+ m: 'एक मिनट',
+ mm: '%d मिनट',
+ h: 'एक घंटा',
+ hh: '%d घंटे',
+ d: 'एक दिन',
+ dd: '%d दिन',
+ M: 'एक महीने',
+ MM: '%d महीने',
+ y: 'एक वर्ष',
+ yy: '%d वर्ष'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/hr.js b/node_modules/dayjs/esm/locale/hr.js
new file mode 100644
index 0000000..a760fe3
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/hr.js
@@ -0,0 +1,53 @@
+// Croatian [hr]
+import dayjs from '../index';
+var monthFormat = 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_');
+var monthStandalone = 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_');
+var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+var locale = {
+ name: 'hr',
+ weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+ months: months,
+ monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'za %s',
+ past: 'prije %s',
+ s: 'sekunda',
+ m: 'minuta',
+ mm: '%d minuta',
+ h: 'sat',
+ hh: '%d sati',
+ d: 'dan',
+ dd: '%d dana',
+ M: 'mjesec',
+ MM: '%d mjeseci',
+ y: 'godina',
+ yy: '%d godine'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ht.js b/node_modules/dayjs/esm/locale/ht.js
new file mode 100644
index 0000000..896739e
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ht.js
@@ -0,0 +1,38 @@
+// Haitian Creole (Haiti) [ht]
+import dayjs from '../index';
+var locale = {
+ name: 'ht',
+ weekdays: 'dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi'.split('_'),
+ months: 'janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm'.split('_'),
+ weekdaysShort: 'dim._len._mad._mèk._jed._van._sam.'.split('_'),
+ monthsShort: 'jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.'.split('_'),
+ weekdaysMin: 'di_le_ma_mè_je_va_sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'nan %s',
+ past: 'sa gen %s',
+ s: 'kèk segond',
+ m: 'yon minit',
+ mm: '%d minit',
+ h: 'inèdtan',
+ hh: '%d zè',
+ d: 'yon jou',
+ dd: '%d jou',
+ M: 'yon mwa',
+ MM: '%d mwa',
+ y: 'yon ane',
+ yy: '%d ane'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/hu.js b/node_modules/dayjs/esm/locale/hu.js
new file mode 100644
index 0000000..18df6e4
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/hu.js
@@ -0,0 +1,61 @@
+// Hungarian [hu]
+import dayjs from '../index';
+var locale = {
+ name: 'hu',
+ weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
+ weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
+ weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
+ months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
+ monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ relativeTime: {
+ future: '%s múlva',
+ past: '%s',
+ s: function s(_, _s, ___, isFuture) {
+ return "n\xE9h\xE1ny m\xE1sodperc" + (isFuture || _s ? '' : 'e');
+ },
+ m: function m(_, s, ___, isFuture) {
+ return "egy perc" + (isFuture || s ? '' : 'e');
+ },
+ mm: function mm(n, s, ___, isFuture) {
+ return n + " perc" + (isFuture || s ? '' : 'e');
+ },
+ h: function h(_, s, ___, isFuture) {
+ return "egy " + (isFuture || s ? 'óra' : 'órája');
+ },
+ hh: function hh(n, s, ___, isFuture) {
+ return n + " " + (isFuture || s ? 'óra' : 'órája');
+ },
+ d: function d(_, s, ___, isFuture) {
+ return "egy " + (isFuture || s ? 'nap' : 'napja');
+ },
+ dd: function dd(n, s, ___, isFuture) {
+ return n + " " + (isFuture || s ? 'nap' : 'napja');
+ },
+ M: function M(_, s, ___, isFuture) {
+ return "egy " + (isFuture || s ? 'hónap' : 'hónapja');
+ },
+ MM: function MM(n, s, ___, isFuture) {
+ return n + " " + (isFuture || s ? 'hónap' : 'hónapja');
+ },
+ y: function y(_, s, ___, isFuture) {
+ return "egy " + (isFuture || s ? 'év' : 'éve');
+ },
+ yy: function yy(n, s, ___, isFuture) {
+ return n + " " + (isFuture || s ? 'év' : 'éve');
+ }
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'YYYY.MM.DD.',
+ LL: 'YYYY. MMMM D.',
+ LLL: 'YYYY. MMMM D. H:mm',
+ LLLL: 'YYYY. MMMM D., dddd H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/hy-am.js b/node_modules/dayjs/esm/locale/hy-am.js
new file mode 100644
index 0000000..937f2be
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/hy-am.js
@@ -0,0 +1,39 @@
+// Armenian [hy-am]
+import dayjs from '../index';
+var locale = {
+ name: 'hy-am',
+ weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
+ months: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+ monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
+ weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY թ.',
+ LLL: 'D MMMM YYYY թ., HH:mm',
+ LLLL: 'dddd, D MMMM YYYY թ., HH:mm'
+ },
+ relativeTime: {
+ future: '%s հետո',
+ past: '%s առաջ',
+ s: 'մի քանի վայրկյան',
+ m: 'րոպե',
+ mm: '%d րոպե',
+ h: 'ժամ',
+ hh: '%d ժամ',
+ d: 'օր',
+ dd: '%d օր',
+ M: 'ամիս',
+ MM: '%d ամիս',
+ y: 'տարի',
+ yy: '%d տարի'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/id.js b/node_modules/dayjs/esm/locale/id.js
new file mode 100644
index 0000000..f743a12
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/id.js
@@ -0,0 +1,39 @@
+// Indonesian [id]
+import dayjs from '../index';
+var locale = {
+ name: 'id',
+ weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
+ months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
+ weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
+ weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY [pukul] HH.mm',
+ LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ relativeTime: {
+ future: 'dalam %s',
+ past: '%s yang lalu',
+ s: 'beberapa detik',
+ m: 'semenit',
+ mm: '%d menit',
+ h: 'sejam',
+ hh: '%d jam',
+ d: 'sehari',
+ dd: '%d hari',
+ M: 'sebulan',
+ MM: '%d bulan',
+ y: 'setahun',
+ yy: '%d tahun'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/index.d.ts b/node_modules/dayjs/esm/locale/index.d.ts
new file mode 100644
index 0000000..beb0d36
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/index.d.ts
@@ -0,0 +1,11 @@
+///
+
+declare module 'dayjs/esm/locale/*' {
+ namespace locale {
+ interface Locale extends ILocale {}
+ }
+
+ const locale: locale.Locale
+
+ export = locale
+}
diff --git a/node_modules/dayjs/esm/locale/is.js b/node_modules/dayjs/esm/locale/is.js
new file mode 100644
index 0000000..22d8121
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/is.js
@@ -0,0 +1,68 @@
+// Icelandic [is]
+import dayjs from '../index';
+var texts = {
+ s: ['nokkrar sekúndur', 'nokkrar sekúndur', 'nokkrum sekúndum'],
+ m: ['mínúta', 'mínútu', 'mínútu'],
+ mm: ['mínútur', 'mínútur', 'mínútum'],
+ h: ['klukkustund', 'klukkustund', 'klukkustund'],
+ hh: ['klukkustundir', 'klukkustundir', 'klukkustundum'],
+ d: ['dagur', 'dag', 'degi'],
+ dd: ['dagar', 'daga', 'dögum'],
+ M: ['mánuður', 'mánuð', 'mánuði'],
+ MM: ['mánuðir', 'mánuði', 'mánuðum'],
+ y: ['ár', 'ár', 'ári'],
+ yy: ['ár', 'ár', 'árum']
+};
+
+function resolveTemplate(key, number, isFuture, withoutSuffix) {
+ var suffixIndex = isFuture ? 1 : 2;
+ var index = withoutSuffix ? 0 : suffixIndex;
+ var keyShouldBeSingular = key.length === 2 && number % 10 === 1;
+ var correctedKey = keyShouldBeSingular ? key[0] : key;
+ var unitText = texts[correctedKey];
+ var text = unitText[index];
+ return key.length === 1 ? text : "%d " + text;
+}
+
+function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {
+ var template = resolveTemplate(key, number, isFuture, withoutSuffix);
+ return template.replace('%d', number);
+}
+
+var locale = {
+ name: 'is',
+ weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
+ months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
+ weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY [kl.] H:mm',
+ LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'
+ },
+ relativeTime: {
+ future: 'eftir %s',
+ past: 'fyrir %s síðan',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/it-ch.js b/node_modules/dayjs/esm/locale/it-ch.js
new file mode 100644
index 0000000..cfbb94d
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/it-ch.js
@@ -0,0 +1,39 @@
+// Italian (Switzerland) [it-ch]
+import dayjs from '../index';
+var locale = {
+ name: 'it-ch',
+ weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
+ months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+ monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+ weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'tra %s',
+ past: '%s fa',
+ s: 'alcuni secondi',
+ m: 'un minuto',
+ mm: '%d minuti',
+ h: 'un\'ora',
+ hh: '%d ore',
+ d: 'un giorno',
+ dd: '%d giorni',
+ M: 'un mese',
+ MM: '%d mesi',
+ y: 'un anno',
+ yy: '%d anni'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/it.js b/node_modules/dayjs/esm/locale/it.js
new file mode 100644
index 0000000..e8d2490
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/it.js
@@ -0,0 +1,39 @@
+// Italian [it]
+import dayjs from '../index';
+var locale = {
+ name: 'it',
+ weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
+ weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+ weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+ months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
+ weekStart: 1,
+ monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'tra %s',
+ past: '%s fa',
+ s: 'qualche secondo',
+ m: 'un minuto',
+ mm: '%d minuti',
+ h: 'un\' ora',
+ hh: '%d ore',
+ d: 'un giorno',
+ dd: '%d giorni',
+ M: 'un mese',
+ MM: '%d mesi',
+ y: 'un anno',
+ yy: '%d anni'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ja.js b/node_modules/dayjs/esm/locale/ja.js
new file mode 100644
index 0000000..6568e13
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ja.js
@@ -0,0 +1,45 @@
+// Japanese [ja]
+import dayjs from '../index';
+var locale = {
+ name: 'ja',
+ weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
+ weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
+ weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
+ months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + "\u65E5";
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY年M月D日',
+ LLL: 'YYYY年M月D日 HH:mm',
+ LLLL: 'YYYY年M月D日 dddd HH:mm',
+ l: 'YYYY/MM/DD',
+ ll: 'YYYY年M月D日',
+ lll: 'YYYY年M月D日 HH:mm',
+ llll: 'YYYY年M月D日(ddd) HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour < 12 ? '午前' : '午後';
+ },
+ relativeTime: {
+ future: '%s後',
+ past: '%s前',
+ s: '数秒',
+ m: '1分',
+ mm: '%d分',
+ h: '1時間',
+ hh: '%d時間',
+ d: '1日',
+ dd: '%d日',
+ M: '1ヶ月',
+ MM: '%dヶ月',
+ y: '1年',
+ yy: '%d年'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/jv.js b/node_modules/dayjs/esm/locale/jv.js
new file mode 100644
index 0000000..81a3f66
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/jv.js
@@ -0,0 +1,39 @@
+// Javanese [jv]
+import dayjs from '../index';
+var locale = {
+ name: 'jv',
+ weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
+ months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
+ weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY [pukul] HH.mm',
+ LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ relativeTime: {
+ future: 'wonten ing %s',
+ past: '%s ingkang kepengker',
+ s: 'sawetawis detik',
+ m: 'setunggal menit',
+ mm: '%d menit',
+ h: 'setunggal jam',
+ hh: '%d jam',
+ d: 'sedinten',
+ dd: '%d dinten',
+ M: 'sewulan',
+ MM: '%d wulan',
+ y: 'setaun',
+ yy: '%d taun'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ka.js b/node_modules/dayjs/esm/locale/ka.js
new file mode 100644
index 0000000..381fffa
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ka.js
@@ -0,0 +1,39 @@
+// Georgian [ka]
+import dayjs from '../index';
+var locale = {
+ name: 'ka',
+ weekdays: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
+ weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
+ weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
+ months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
+ monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: '%s შემდეგ',
+ past: '%s წინ',
+ s: 'წამი',
+ m: 'წუთი',
+ mm: '%d წუთი',
+ h: 'საათი',
+ hh: '%d საათის',
+ d: 'დღეს',
+ dd: '%d დღის განმავლობაში',
+ M: 'თვის',
+ MM: '%d თვის',
+ y: 'წელი',
+ yy: '%d წლის'
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/kk.js b/node_modules/dayjs/esm/locale/kk.js
new file mode 100644
index 0000000..f2ca045
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/kk.js
@@ -0,0 +1,39 @@
+// Kazakh [kk]
+import dayjs from '../index';
+var locale = {
+ name: 'kk',
+ weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
+ weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
+ weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
+ months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
+ monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
+ weekStart: 1,
+ relativeTime: {
+ future: '%s ішінде',
+ past: '%s бұрын',
+ s: 'бірнеше секунд',
+ m: 'бір минут',
+ mm: '%d минут',
+ h: 'бір сағат',
+ hh: '%d сағат',
+ d: 'бір күн',
+ dd: '%d күн',
+ M: 'бір ай',
+ MM: '%d ай',
+ y: 'бір жыл',
+ yy: '%d жыл'
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/km.js b/node_modules/dayjs/esm/locale/km.js
new file mode 100644
index 0000000..7fd185b
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/km.js
@@ -0,0 +1,39 @@
+// Cambodian [km]
+import dayjs from '../index';
+var locale = {
+ name: 'km',
+ weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
+ months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+ monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
+ weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%sទៀត',
+ past: '%sមុន',
+ s: 'ប៉ុន្មានវិនាទី',
+ m: 'មួយនាទី',
+ mm: '%d នាទី',
+ h: 'មួយម៉ោង',
+ hh: '%d ម៉ោង',
+ d: 'មួយថ្ងៃ',
+ dd: '%d ថ្ងៃ',
+ M: 'មួយខែ',
+ MM: '%d ខែ',
+ y: 'មួយឆ្នាំ',
+ yy: '%d ឆ្នាំ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/kn.js b/node_modules/dayjs/esm/locale/kn.js
new file mode 100644
index 0000000..b9ca9b9
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/kn.js
@@ -0,0 +1,38 @@
+// Kannada [kn]
+import dayjs from '../index';
+var locale = {
+ name: 'kn',
+ weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
+ months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
+ weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
+ monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),
+ weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm',
+ LTS: 'A h:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm'
+ },
+ relativeTime: {
+ future: '%s ನಂತರ',
+ past: '%s ಹಿಂದೆ',
+ s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
+ m: 'ಒಂದು ನಿಮಿಷ',
+ mm: '%d ನಿಮಿಷ',
+ h: 'ಒಂದು ಗಂಟೆ',
+ hh: '%d ಗಂಟೆ',
+ d: 'ಒಂದು ದಿನ',
+ dd: '%d ದಿನ',
+ M: 'ಒಂದು ತಿಂಗಳು',
+ MM: '%d ತಿಂಗಳು',
+ y: 'ಒಂದು ವರ್ಷ',
+ yy: '%d ವರ್ಷ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ko.js b/node_modules/dayjs/esm/locale/ko.js
new file mode 100644
index 0000000..1caff27
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ko.js
@@ -0,0 +1,45 @@
+// Korean [ko]
+import dayjs from '../index';
+var locale = {
+ name: 'ko',
+ weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
+ weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
+ weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
+ months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
+ monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm',
+ LTS: 'A h:mm:ss',
+ L: 'YYYY.MM.DD.',
+ LL: 'YYYY년 MMMM D일',
+ LLL: 'YYYY년 MMMM D일 A h:mm',
+ LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
+ l: 'YYYY.MM.DD.',
+ ll: 'YYYY년 MMMM D일',
+ lll: 'YYYY년 MMMM D일 A h:mm',
+ llll: 'YYYY년 MMMM D일 dddd A h:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour < 12 ? '오전' : '오후';
+ },
+ relativeTime: {
+ future: '%s 후',
+ past: '%s 전',
+ s: '몇 초',
+ m: '1분',
+ mm: '%d분',
+ h: '한 시간',
+ hh: '%d시간',
+ d: '하루',
+ dd: '%d일',
+ M: '한 달',
+ MM: '%d달',
+ y: '일 년',
+ yy: '%d년'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ku.js b/node_modules/dayjs/esm/locale/ku.js
new file mode 100644
index 0000000..e56664e
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ku.js
@@ -0,0 +1,77 @@
+// Kurdish [ku]
+import dayjs from '../index';
+export var englishToArabicNumbersMap = {
+ 1: '١',
+ 2: '٢',
+ 3: '٣',
+ 4: '٤',
+ 5: '٥',
+ 6: '٦',
+ 7: '٧',
+ 8: '٨',
+ 9: '٩',
+ 0: '٠'
+};
+var arabicToEnglishNumbersMap = {
+ '١': '1',
+ '٢': '2',
+ '٣': '3',
+ '٤': '4',
+ '٥': '5',
+ '٦': '6',
+ '٧': '7',
+ '٨': '8',
+ '٩': '9',
+ '٠': '0'
+};
+var months = ['کانوونی دووەم', 'شوبات', 'ئادار', 'نیسان', 'ئایار', 'حوزەیران', 'تەممووز', 'ئاب', 'ئەیلوول', 'تشرینی یەکەم', 'تشرینی دووەم', 'کانوونی یەکەم'];
+var locale = {
+ name: 'ku',
+ months: months,
+ monthsShort: months,
+ weekdays: 'یەکشەممە_دووشەممە_سێشەممە_چوارشەممە_پێنجشەممە_هەینی_شەممە'.split('_'),
+ weekdaysShort: 'یەکشەم_دووشەم_سێشەم_چوارشەم_پێنجشەم_هەینی_شەممە'.split('_'),
+ weekStart: 6,
+ weekdaysMin: 'ی_د_س_چ_پ_هـ_ش'.split('_'),
+ preparse: function preparse(string) {
+ return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+ return arabicToEnglishNumbersMap[match];
+ }).replace(/،/g, ',');
+ },
+ postformat: function postformat(string) {
+ return string.replace(/\d/g, function (match) {
+ return englishToArabicNumbersMap[match];
+ }).replace(/,/g, '،');
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour < 12 ? 'پ.ن' : 'د.ن';
+ },
+ relativeTime: {
+ future: 'لە %s',
+ past: 'لەمەوپێش %s',
+ s: 'چەند چرکەیەک',
+ m: 'یەک خولەک',
+ mm: '%d خولەک',
+ h: 'یەک کاتژمێر',
+ hh: '%d کاتژمێر',
+ d: 'یەک ڕۆژ',
+ dd: '%d ڕۆژ',
+ M: 'یەک مانگ',
+ MM: '%d مانگ',
+ y: 'یەک ساڵ',
+ yy: '%d ساڵ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ky.js b/node_modules/dayjs/esm/locale/ky.js
new file mode 100644
index 0000000..fd04477
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ky.js
@@ -0,0 +1,39 @@
+// Kyrgyz [ky]
+import dayjs from '../index';
+var locale = {
+ name: 'ky',
+ weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
+ months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
+ monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
+ weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s ичинде',
+ past: '%s мурун',
+ s: 'бирнече секунд',
+ m: 'бир мүнөт',
+ mm: '%d мүнөт',
+ h: 'бир саат',
+ hh: '%d саат',
+ d: 'бир күн',
+ dd: '%d күн',
+ M: 'бир ай',
+ MM: '%d ай',
+ y: 'бир жыл',
+ yy: '%d жыл'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/lb.js b/node_modules/dayjs/esm/locale/lb.js
new file mode 100644
index 0000000..21ef4aa
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/lb.js
@@ -0,0 +1,24 @@
+// Luxembourgish [lb]
+import dayjs from '../index';
+var locale = {
+ name: 'lb',
+ weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
+ months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
+ monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
+ weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm [Auer]',
+ LTS: 'H:mm:ss [Auer]',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm [Auer]',
+ LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/lo.js b/node_modules/dayjs/esm/locale/lo.js
new file mode 100644
index 0000000..7732ec4
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/lo.js
@@ -0,0 +1,38 @@
+// Lao [lo]
+import dayjs from '../index';
+var locale = {
+ name: 'lo',
+ weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+ months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
+ weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+ monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
+ weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'ວັນdddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'ອີກ %s',
+ past: '%sຜ່ານມາ',
+ s: 'ບໍ່ເທົ່າໃດວິນາທີ',
+ m: '1 ນາທີ',
+ mm: '%d ນາທີ',
+ h: '1 ຊົ່ວໂມງ',
+ hh: '%d ຊົ່ວໂມງ',
+ d: '1 ມື້',
+ dd: '%d ມື້',
+ M: '1 ເດືອນ',
+ MM: '%d ເດືອນ',
+ y: '1 ປີ',
+ yy: '%d ປີ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/lt.js b/node_modules/dayjs/esm/locale/lt.js
new file mode 100644
index 0000000..cb46ca9
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/lt.js
@@ -0,0 +1,70 @@
+// Lithuanian [lt]
+import dayjs from '../index';
+var monthFormat = 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_');
+var monthStandalone = 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'); // eslint-disable-next-line no-useless-escape
+
+var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/;
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+var locale = {
+ name: 'lt',
+ weekdays: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
+ weekdaysShort: 'sek_pir_ant_tre_ket_pen_šeš'.split('_'),
+ weekdaysMin: 's_p_a_t_k_pn_š'.split('_'),
+ months: months,
+ monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ relativeTime: {
+ future: 'už %s',
+ past: 'prieš %s',
+ s: 'kelias sekundes',
+ m: 'minutę',
+ mm: '%d minutes',
+ h: 'valandą',
+ hh: '%d valandas',
+ d: 'dieną',
+ dd: '%d dienas',
+ M: 'mėnesį',
+ MM: '%d mėnesius',
+ y: 'metus',
+ yy: '%d metus'
+ },
+ format: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY [m.] MMMM D [d.]',
+ LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+ l: 'YYYY-MM-DD',
+ ll: 'YYYY [m.] MMMM D [d.]',
+ lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY [m.] MMMM D [d.]',
+ LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+ l: 'YYYY-MM-DD',
+ ll: 'YYYY [m.] MMMM D [d.]',
+ lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/lv.js b/node_modules/dayjs/esm/locale/lv.js
new file mode 100644
index 0000000..4b18a61
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/lv.js
@@ -0,0 +1,39 @@
+// Latvian [lv]
+import dayjs from '../index';
+var locale = {
+ name: 'lv',
+ weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
+ months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
+ weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY.',
+ LL: 'YYYY. [gada] D. MMMM',
+ LLL: 'YYYY. [gada] D. MMMM, HH:mm',
+ LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'
+ },
+ relativeTime: {
+ future: 'pēc %s',
+ past: 'pirms %s',
+ s: 'dažām sekundēm',
+ m: 'minūtes',
+ mm: '%d minūtēm',
+ h: 'stundas',
+ hh: '%d stundām',
+ d: 'dienas',
+ dd: '%d dienām',
+ M: 'mēneša',
+ MM: '%d mēnešiem',
+ y: 'gada',
+ yy: '%d gadiem'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/me.js b/node_modules/dayjs/esm/locale/me.js
new file mode 100644
index 0000000..465c0ff
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/me.js
@@ -0,0 +1,24 @@
+// Montenegrin [me]
+import dayjs from '../index';
+var locale = {
+ name: 'me',
+ weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/mi.js b/node_modules/dayjs/esm/locale/mi.js
new file mode 100644
index 0000000..3b56f0e
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/mi.js
@@ -0,0 +1,39 @@
+// Maori [mi]
+import dayjs from '../index';
+var locale = {
+ name: 'mi',
+ weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
+ months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
+ monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
+ weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY [i] HH:mm',
+ LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
+ },
+ relativeTime: {
+ future: 'i roto i %s',
+ past: '%s i mua',
+ s: 'te hēkona ruarua',
+ m: 'he meneti',
+ mm: '%d meneti',
+ h: 'te haora',
+ hh: '%d haora',
+ d: 'he ra',
+ dd: '%d ra',
+ M: 'he marama',
+ MM: '%d marama',
+ y: 'he tau',
+ yy: '%d tau'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/mk.js b/node_modules/dayjs/esm/locale/mk.js
new file mode 100644
index 0000000..8522c26
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/mk.js
@@ -0,0 +1,39 @@
+// Macedonian [mk]
+import dayjs from '../index';
+var locale = {
+ name: 'mk',
+ weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
+ months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
+ monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
+ weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'D.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY H:mm',
+ LLLL: 'dddd, D MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'после %s',
+ past: 'пред %s',
+ s: 'неколку секунди',
+ m: 'минута',
+ mm: '%d минути',
+ h: 'час',
+ hh: '%d часа',
+ d: 'ден',
+ dd: '%d дена',
+ M: 'месец',
+ MM: '%d месеци',
+ y: 'година',
+ yy: '%d години'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ml.js b/node_modules/dayjs/esm/locale/ml.js
new file mode 100644
index 0000000..bfcc277
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ml.js
@@ -0,0 +1,38 @@
+// Malayalam [ml]
+import dayjs from '../index';
+var locale = {
+ name: 'ml',
+ weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
+ months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
+ weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
+ monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
+ weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm -നു',
+ LTS: 'A h:mm:ss -നു',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm -നു',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm -നു'
+ },
+ relativeTime: {
+ future: '%s കഴിഞ്ഞ്',
+ past: '%s മുൻപ്',
+ s: 'അൽപ നിമിഷങ്ങൾ',
+ m: 'ഒരു മിനിറ്റ്',
+ mm: '%d മിനിറ്റ്',
+ h: 'ഒരു മണിക്കൂർ',
+ hh: '%d മണിക്കൂർ',
+ d: 'ഒരു ദിവസം',
+ dd: '%d ദിവസം',
+ M: 'ഒരു മാസം',
+ MM: '%d മാസം',
+ y: 'ഒരു വർഷം',
+ yy: '%d വർഷം'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/mn.js b/node_modules/dayjs/esm/locale/mn.js
new file mode 100644
index 0000000..d93cae2
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/mn.js
@@ -0,0 +1,38 @@
+// Mongolian [mn]
+import dayjs from '../index';
+var locale = {
+ name: 'mn',
+ weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
+ months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),
+ weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
+ monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),
+ weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY оны MMMMын D',
+ LLL: 'YYYY оны MMMMын D HH:mm',
+ LLLL: 'dddd, YYYY оны MMMMын D HH:mm'
+ },
+ relativeTime: {
+ future: '%s',
+ past: '%s',
+ s: 'саяхан',
+ m: 'м',
+ mm: '%dм',
+ h: '1ц',
+ hh: '%dц',
+ d: '1ө',
+ dd: '%dө',
+ M: '1с',
+ MM: '%dс',
+ y: '1ж',
+ yy: '%dж'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/mr.js b/node_modules/dayjs/esm/locale/mr.js
new file mode 100644
index 0000000..9eac8a7
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/mr.js
@@ -0,0 +1,23 @@
+// Marathi [mr]
+import dayjs from '../index';
+var locale = {
+ name: 'mr',
+ weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+ months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
+ weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
+ monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
+ weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm वाजता',
+ LTS: 'A h:mm:ss वाजता',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm वाजता',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ms-my.js b/node_modules/dayjs/esm/locale/ms-my.js
new file mode 100644
index 0000000..5138219
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ms-my.js
@@ -0,0 +1,39 @@
+// Malay [ms-my]
+import dayjs from '../index';
+var locale = {
+ name: 'ms-my',
+ weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+ months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+ monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+ weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY [pukul] HH.mm',
+ LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
+ },
+ relativeTime: {
+ future: 'dalam %s',
+ past: '%s yang lepas',
+ s: 'beberapa saat',
+ m: 'seminit',
+ mm: '%d minit',
+ h: 'sejam',
+ hh: '%d jam',
+ d: 'sehari',
+ dd: '%d hari',
+ M: 'sebulan',
+ MM: '%d bulan',
+ y: 'setahun',
+ yy: '%d tahun'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ms.js b/node_modules/dayjs/esm/locale/ms.js
new file mode 100644
index 0000000..86349f3
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ms.js
@@ -0,0 +1,39 @@
+// Malay [ms]
+import dayjs from '../index';
+var locale = {
+ name: 'ms',
+ weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+ weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+ weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+ months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
+ monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH.mm',
+ LLLL: 'dddd, D MMMM YYYY HH.mm'
+ },
+ relativeTime: {
+ future: 'dalam %s',
+ past: '%s yang lepas',
+ s: 'beberapa saat',
+ m: 'seminit',
+ mm: '%d minit',
+ h: 'sejam',
+ hh: '%d jam',
+ d: 'sehari',
+ dd: '%d hari',
+ M: 'sebulan',
+ MM: '%d bulan',
+ y: 'setahun',
+ yy: '%d tahun'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/mt.js b/node_modules/dayjs/esm/locale/mt.js
new file mode 100644
index 0000000..9c90953
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/mt.js
@@ -0,0 +1,39 @@
+// Maltese (Malta) [mt]
+import dayjs from '../index';
+var locale = {
+ name: 'mt',
+ weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),
+ months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
+ monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
+ weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'f’ %s',
+ past: '%s ilu',
+ s: 'ftit sekondi',
+ m: 'minuta',
+ mm: '%d minuti',
+ h: 'siegħa',
+ hh: '%d siegħat',
+ d: 'ġurnata',
+ dd: '%d ġranet',
+ M: 'xahar',
+ MM: '%d xhur',
+ y: 'sena',
+ yy: '%d sni'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/my.js b/node_modules/dayjs/esm/locale/my.js
new file mode 100644
index 0000000..73b2633
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/my.js
@@ -0,0 +1,39 @@
+// Burmese [my]
+import dayjs from '../index';
+var locale = {
+ name: 'my',
+ weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
+ months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+ monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
+ weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'လာမည့် %s မှာ',
+ past: 'လွန်ခဲ့သော %s က',
+ s: 'စက္ကန်.အနည်းငယ်',
+ m: 'တစ်မိနစ်',
+ mm: '%d မိနစ်',
+ h: 'တစ်နာရီ',
+ hh: '%d နာရီ',
+ d: 'တစ်ရက်',
+ dd: '%d ရက်',
+ M: 'တစ်လ',
+ MM: '%d လ',
+ y: 'တစ်နှစ်',
+ yy: '%d နှစ်'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/nb.js b/node_modules/dayjs/esm/locale/nb.js
new file mode 100644
index 0000000..1d7b1eb
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/nb.js
@@ -0,0 +1,40 @@
+// Norwegian Bokmål [nb]
+import dayjs from '../index';
+var locale = {
+ name: 'nb',
+ weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+ weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
+ weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
+ months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY [kl.] HH:mm',
+ LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
+ },
+ relativeTime: {
+ future: 'om %s',
+ past: '%s siden',
+ s: 'noen sekunder',
+ m: 'ett minutt',
+ mm: '%d minutter',
+ h: 'en time',
+ hh: '%d timer',
+ d: 'en dag',
+ dd: '%d dager',
+ M: 'en måned',
+ MM: '%d måneder',
+ y: 'ett år',
+ yy: '%d år'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ne.js b/node_modules/dayjs/esm/locale/ne.js
new file mode 100644
index 0000000..4f5a004
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ne.js
@@ -0,0 +1,40 @@
+// Nepalese [ne]
+import dayjs from '../index';
+var locale = {
+ name: 'ne',
+ weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
+ weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
+ weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
+ months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मे_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
+ monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
+ relativeTime: {
+ future: '%s पछि',
+ past: '%s अघि',
+ s: 'सेकेन्ड',
+ m: 'एक मिनेट',
+ mm: '%d मिनेट',
+ h: 'घन्टा',
+ hh: '%d घन्टा',
+ d: 'एक दिन',
+ dd: '%d दिन',
+ M: 'एक महिना',
+ MM: '%d महिना',
+ y: 'एक वर्ष',
+ yy: '%d वर्ष'
+ },
+ ordinal: function ordinal(n) {
+ return ("" + n).replace(/\d/g, function (i) {
+ return '०१२३४५६७८९'[i];
+ });
+ },
+ formats: {
+ LT: 'Aको h:mm बजे',
+ LTS: 'Aको h:mm:ss बजे',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, Aको h:mm बजे',
+ LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/nl-be.js b/node_modules/dayjs/esm/locale/nl-be.js
new file mode 100644
index 0000000..51465b7
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/nl-be.js
@@ -0,0 +1,39 @@
+// Dutch (Belgium) [nl-be]
+import dayjs from '../index';
+var locale = {
+ name: 'nl-be',
+ weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
+ months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
+ monthsShort: 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
+ weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'over %s',
+ past: '%s geleden',
+ s: 'een paar seconden',
+ m: 'één minuut',
+ mm: '%d minuten',
+ h: 'één uur',
+ hh: '%d uur',
+ d: 'één dag',
+ dd: '%d dagen',
+ M: 'één maand',
+ MM: '%d maanden',
+ y: 'één jaar',
+ yy: '%d jaar'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/nl.js b/node_modules/dayjs/esm/locale/nl.js
new file mode 100644
index 0000000..ee1ac74
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/nl.js
@@ -0,0 +1,40 @@
+// Dutch [nl]
+import dayjs from '../index';
+var locale = {
+ name: 'nl',
+ weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
+ weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
+ weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
+ months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
+ monthsShort: 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+ ordinal: function ordinal(n) {
+ return "[" + n + (n === 1 || n === 8 || n >= 20 ? 'ste' : 'de') + "]";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD-MM-YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'over %s',
+ past: '%s geleden',
+ s: 'een paar seconden',
+ m: 'een minuut',
+ mm: '%d minuten',
+ h: 'een uur',
+ hh: '%d uur',
+ d: 'een dag',
+ dd: '%d dagen',
+ M: 'een maand',
+ MM: '%d maanden',
+ y: 'een jaar',
+ yy: '%d jaar'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/nn.js b/node_modules/dayjs/esm/locale/nn.js
new file mode 100644
index 0000000..43767a4
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/nn.js
@@ -0,0 +1,39 @@
+// Nynorsk [nn]
+import dayjs from '../index';
+var locale = {
+ name: 'nn',
+ weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
+ weekdaysShort: 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
+ weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
+ months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ relativeTime: {
+ future: 'om %s',
+ past: 'for %s sidan',
+ s: 'nokre sekund',
+ m: 'eitt minutt',
+ mm: '%d minutt',
+ h: 'ein time',
+ hh: '%d timar',
+ d: 'ein dag',
+ dd: '%d dagar',
+ M: 'ein månad',
+ MM: '%d månadar',
+ y: 'eitt år',
+ yy: '%d år'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY [kl.] H:mm',
+ LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/oc-lnc.js b/node_modules/dayjs/esm/locale/oc-lnc.js
new file mode 100644
index 0000000..91e2f0d
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/oc-lnc.js
@@ -0,0 +1,39 @@
+// Occitan, lengadocian dialecte [oc-lnc]
+import dayjs from '../index';
+var locale = {
+ name: 'oc-lnc',
+ weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),
+ weekdaysShort: 'Dg_Dl_Dm_Dc_Dj_Dv_Ds'.split('_'),
+ weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
+ months: 'genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),
+ monthsShort: 'gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM [de] YYYY',
+ LLL: 'D MMMM [de] YYYY [a] H:mm',
+ LLLL: 'dddd D MMMM [de] YYYY [a] H:mm'
+ },
+ relativeTime: {
+ future: 'd\'aquí %s',
+ past: 'fa %s',
+ s: 'unas segondas',
+ m: 'una minuta',
+ mm: '%d minutas',
+ h: 'una ora',
+ hh: '%d oras',
+ d: 'un jorn',
+ dd: '%d jorns',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un an',
+ yy: '%d ans'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/pa-in.js b/node_modules/dayjs/esm/locale/pa-in.js
new file mode 100644
index 0000000..624a852
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/pa-in.js
@@ -0,0 +1,38 @@
+// Punjabi (India) [pa-in]
+import dayjs from '../index';
+var locale = {
+ name: 'pa-in',
+ weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
+ months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
+ weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
+ monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
+ weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm ਵਜੇ',
+ LTS: 'A h:mm:ss ਵਜੇ',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
+ },
+ relativeTime: {
+ future: '%s ਵਿੱਚ',
+ past: '%s ਪਿਛਲੇ',
+ s: 'ਕੁਝ ਸਕਿੰਟ',
+ m: 'ਇਕ ਮਿੰਟ',
+ mm: '%d ਮਿੰਟ',
+ h: 'ਇੱਕ ਘੰਟਾ',
+ hh: '%d ਘੰਟੇ',
+ d: 'ਇੱਕ ਦਿਨ',
+ dd: '%d ਦਿਨ',
+ M: 'ਇੱਕ ਮਹੀਨਾ',
+ MM: '%d ਮਹੀਨੇ',
+ y: 'ਇੱਕ ਸਾਲ',
+ yy: '%d ਸਾਲ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/pl.js b/node_modules/dayjs/esm/locale/pl.js
new file mode 100644
index 0000000..368b2a5
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/pl.js
@@ -0,0 +1,87 @@
+// Polish [pl]
+import dayjs from '../index';
+
+function plural(n) {
+ return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; // eslint-disable-line
+}
+/* eslint-disable */
+
+
+function translate(number, withoutSuffix, key) {
+ var result = number + " ";
+
+ switch (key) {
+ case 'm':
+ return withoutSuffix ? 'minuta' : 'minutę';
+
+ case 'mm':
+ return result + (plural(number) ? 'minuty' : 'minut');
+
+ case 'h':
+ return withoutSuffix ? 'godzina' : 'godzinę';
+
+ case 'hh':
+ return result + (plural(number) ? 'godziny' : 'godzin');
+
+ case 'MM':
+ return result + (plural(number) ? 'miesiące' : 'miesięcy');
+
+ case 'yy':
+ return result + (plural(number) ? 'lata' : 'lat');
+ }
+}
+/* eslint-enable */
+
+
+var monthFormat = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
+var monthStandalone = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');
+var MONTHS_IN_FORMAT = /D MMMM/;
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+var locale = {
+ name: 'pl',
+ weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
+ weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
+ weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
+ months: months,
+ monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: 'za %s',
+ past: '%s temu',
+ s: 'kilka sekund',
+ m: translate,
+ mm: translate,
+ h: translate,
+ hh: translate,
+ d: '1 dzień',
+ dd: '%d dni',
+ M: 'miesiąc',
+ MM: translate,
+ y: 'rok',
+ yy: translate
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/pt-br.js b/node_modules/dayjs/esm/locale/pt-br.js
new file mode 100644
index 0000000..0635cd8
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/pt-br.js
@@ -0,0 +1,38 @@
+// Portuguese (Brazil) [pt-br]
+import dayjs from '../index';
+var locale = {
+ name: 'pt-br',
+ weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
+ weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
+ weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
+ months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
+ monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
+ },
+ relativeTime: {
+ future: 'em %s',
+ past: 'há %s',
+ s: 'poucos segundos',
+ m: 'um minuto',
+ mm: '%d minutos',
+ h: 'uma hora',
+ hh: '%d horas',
+ d: 'um dia',
+ dd: '%d dias',
+ M: 'um mês',
+ MM: '%d meses',
+ y: 'um ano',
+ yy: '%d anos'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/pt.js b/node_modules/dayjs/esm/locale/pt.js
new file mode 100644
index 0000000..cba2331
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/pt.js
@@ -0,0 +1,40 @@
+// Portuguese [pt]
+import dayjs from '../index';
+var locale = {
+ name: 'pt',
+ weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
+ weekdaysShort: 'dom_seg_ter_qua_qui_sex_sab'.split('_'),
+ weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sa'.split('_'),
+ months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
+ monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
+ },
+ relativeTime: {
+ future: 'em %s',
+ past: 'há %s',
+ s: 'alguns segundos',
+ m: 'um minuto',
+ mm: '%d minutos',
+ h: 'uma hora',
+ hh: '%d horas',
+ d: 'um dia',
+ dd: '%d dias',
+ M: 'um mês',
+ MM: '%d meses',
+ y: 'um ano',
+ yy: '%d anos'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/rn.js b/node_modules/dayjs/esm/locale/rn.js
new file mode 100644
index 0000000..21b3cdb
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/rn.js
@@ -0,0 +1,39 @@
+// Kirundi [rn]
+import dayjs from '../index';
+var locale = {
+ name: 'rn',
+ weekdays: 'Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu'.split('_'),
+ weekdaysShort: 'Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat'.split('_'),
+ weekdaysMin: 'K7_K1_K2_K3_K4_K5_K6'.split('_'),
+ months: 'Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama'.split('_'),
+ monthsShort: 'Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig'.split('_'),
+ weekStart: 1,
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ relativeTime: {
+ future: 'mu %s',
+ past: '%s',
+ s: 'amasegonda',
+ m: 'Umunota',
+ mm: '%d iminota',
+ h: 'isaha',
+ hh: '%d amasaha',
+ d: 'Umunsi',
+ dd: '%d iminsi',
+ M: 'ukwezi',
+ MM: '%d amezi',
+ y: 'umwaka',
+ yy: '%d imyaka'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ro.js b/node_modules/dayjs/esm/locale/ro.js
new file mode 100644
index 0000000..93ef6bf
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ro.js
@@ -0,0 +1,39 @@
+// Romanian [ro]
+import dayjs from '../index';
+var locale = {
+ name: 'ro',
+ weekdays: 'Duminică_Luni_Marți_Miercuri_Joi_Vineri_Sâmbătă'.split('_'),
+ weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
+ weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
+ months: 'Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie'.split('_'),
+ monthsShort: 'Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY H:mm',
+ LLLL: 'dddd, D MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'peste %s',
+ past: 'acum %s',
+ s: 'câteva secunde',
+ m: 'un minut',
+ mm: '%d minute',
+ h: 'o oră',
+ hh: '%d ore',
+ d: 'o zi',
+ dd: '%d zile',
+ M: 'o lună',
+ MM: '%d luni',
+ y: 'un an',
+ yy: '%d ani'
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ru.js b/node_modules/dayjs/esm/locale/ru.js
new file mode 100644
index 0000000..fbb1b35
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ru.js
@@ -0,0 +1,99 @@
+// Russian [ru]
+import dayjs from '../index';
+var monthFormat = 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_');
+var monthStandalone = 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_');
+var monthShortFormat = 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_');
+var monthShortStandalone = 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_');
+var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;
+
+function plural(word, num) {
+ var forms = word.split('_');
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; // eslint-disable-line
+}
+
+function relativeTimeWithPlural(number, withoutSuffix, key) {
+ var format = {
+ mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
+ hh: 'час_часа_часов',
+ dd: 'день_дня_дней',
+ MM: 'месяц_месяца_месяцев',
+ yy: 'год_года_лет'
+ };
+
+ if (key === 'm') {
+ return withoutSuffix ? 'минута' : 'минуту';
+ }
+
+ return number + " " + plural(format[key], +number);
+}
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+
+var monthsShort = function monthsShort(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthShortFormat[dayjsInstance.month()];
+ }
+
+ return monthShortStandalone[dayjsInstance.month()];
+};
+
+monthsShort.s = monthShortStandalone;
+monthsShort.f = monthShortFormat;
+var locale = {
+ name: 'ru',
+ weekdays: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
+ weekdaysShort: 'вск_пнд_втр_срд_чтв_птн_сбт'.split('_'),
+ weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
+ months: months,
+ monthsShort: monthsShort,
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY г.',
+ LLL: 'D MMMM YYYY г., H:mm',
+ LLLL: 'dddd, D MMMM YYYY г., H:mm'
+ },
+ relativeTime: {
+ future: 'через %s',
+ past: '%s назад',
+ s: 'несколько секунд',
+ m: relativeTimeWithPlural,
+ mm: relativeTimeWithPlural,
+ h: 'час',
+ hh: relativeTimeWithPlural,
+ d: 'день',
+ dd: relativeTimeWithPlural,
+ M: 'месяц',
+ MM: relativeTimeWithPlural,
+ y: 'год',
+ yy: relativeTimeWithPlural
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ meridiem: function meridiem(hour) {
+ if (hour < 4) {
+ return 'ночи';
+ } else if (hour < 12) {
+ return 'утра';
+ } else if (hour < 17) {
+ return 'дня';
+ }
+
+ return 'вечера';
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/rw.js b/node_modules/dayjs/esm/locale/rw.js
new file mode 100644
index 0000000..1e53ac7
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/rw.js
@@ -0,0 +1,35 @@
+// Kinyarwanda (Rwanda) [rw]
+import dayjs from '../index';
+var locale = {
+ name: 'rw',
+ weekdays: 'Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu'.split('_'),
+ months: 'Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza'.split('_'),
+ relativeTime: {
+ future: 'mu %s',
+ past: '%s',
+ s: 'amasegonda',
+ m: 'Umunota',
+ mm: '%d iminota',
+ h: 'isaha',
+ hh: '%d amasaha',
+ d: 'Umunsi',
+ dd: '%d iminsi',
+ M: 'ukwezi',
+ MM: '%d amezi',
+ y: 'umwaka',
+ yy: '%d imyaka'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sd.js b/node_modules/dayjs/esm/locale/sd.js
new file mode 100644
index 0000000..a429f8d
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sd.js
@@ -0,0 +1,39 @@
+// Sindhi [sd]
+import dayjs from '../index';
+var locale = {
+ name: 'sd',
+ weekdays: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'),
+ months: 'جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'),
+ monthsShort: 'جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر'.split('_'),
+ weekdaysMin: 'آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd، D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s پوء',
+ past: '%s اڳ',
+ s: 'چند سيڪنڊ',
+ m: 'هڪ منٽ',
+ mm: '%d منٽ',
+ h: 'هڪ ڪلاڪ',
+ hh: '%d ڪلاڪ',
+ d: 'هڪ ڏينهن',
+ dd: '%d ڏينهن',
+ M: 'هڪ مهينو',
+ MM: '%d مهينا',
+ y: 'هڪ سال',
+ yy: '%d سال'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/se.js b/node_modules/dayjs/esm/locale/se.js
new file mode 100644
index 0000000..691099c
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/se.js
@@ -0,0 +1,39 @@
+// Northern Sami [se]
+import dayjs from '../index';
+var locale = {
+ name: 'se',
+ weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
+ months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
+ monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
+ weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'MMMM D. [b.] YYYY',
+ LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
+ LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
+ },
+ relativeTime: {
+ future: '%s geažes',
+ past: 'maŋit %s',
+ s: 'moadde sekunddat',
+ m: 'okta minuhta',
+ mm: '%d minuhtat',
+ h: 'okta diimmu',
+ hh: '%d diimmut',
+ d: 'okta beaivi',
+ dd: '%d beaivvit',
+ M: 'okta mánnu',
+ MM: '%d mánut',
+ y: 'okta jahki',
+ yy: '%d jagit'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/si.js b/node_modules/dayjs/esm/locale/si.js
new file mode 100644
index 0000000..89b67bf
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/si.js
@@ -0,0 +1,38 @@
+// Sinhalese [si]
+import dayjs from '../index';
+var locale = {
+ name: 'si',
+ weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
+ months: 'දුරුතු_නවම්_මැදින්_බක්_වෙසක්_පොසොන්_ඇසළ_නිකිණි_බිනර_වප්_ඉල්_උඳුවප්'.split('_'),
+ weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),
+ monthsShort: 'දුරු_නව_මැදි_බක්_වෙස_පොසො_ඇස_නිකි_බින_වප්_ඉල්_උඳු'.split('_'),
+ weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'a h:mm',
+ LTS: 'a h:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY MMMM D',
+ LLL: 'YYYY MMMM D, a h:mm',
+ LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
+ },
+ relativeTime: {
+ future: '%sකින්',
+ past: '%sකට පෙර',
+ s: 'තත්පර කිහිපය',
+ m: 'විනාඩිය',
+ mm: 'විනාඩි %d',
+ h: 'පැය',
+ hh: 'පැය %d',
+ d: 'දිනය',
+ dd: 'දින %d',
+ M: 'මාසය',
+ MM: 'මාස %d',
+ y: 'වසර',
+ yy: 'වසර %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sk.js b/node_modules/dayjs/esm/locale/sk.js
new file mode 100644
index 0000000..222401f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sk.js
@@ -0,0 +1,121 @@
+// Slovak [sk]
+import dayjs from '../index';
+
+function plural(n) {
+ return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line
+}
+/* eslint-disable */
+
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = number + " ";
+
+ switch (key) {
+ case 's':
+ // a few seconds / in a few seconds / a few seconds ago
+ return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
+
+ case 'm':
+ // a minute / in a minute / a minute ago
+ return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
+
+ case 'mm':
+ // 9 minutes / in 9 minutes / 9 minutes ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'minúty' : 'minút');
+ }
+
+ return result + "min\xFAtami";
+
+ case 'h':
+ // an hour / in an hour / an hour ago
+ return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+
+ case 'hh':
+ // 9 hours / in 9 hours / 9 hours ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'hodiny' : 'hodín');
+ }
+
+ return result + "hodinami";
+
+ case 'd':
+ // a day / in a day / a day ago
+ return withoutSuffix || isFuture ? 'deň' : 'dňom';
+
+ case 'dd':
+ // 9 days / in 9 days / 9 days ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'dni' : 'dní');
+ }
+
+ return result + "d\u0148ami";
+
+ case 'M':
+ // a month / in a month / a month ago
+ return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
+
+ case 'MM':
+ // 9 months / in 9 months / 9 months ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'mesiace' : 'mesiacov');
+ }
+
+ return result + "mesiacmi";
+
+ case 'y':
+ // a year / in a year / a year ago
+ return withoutSuffix || isFuture ? 'rok' : 'rokom';
+
+ case 'yy':
+ // 9 years / in 9 years / 9 years ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'roky' : 'rokov');
+ }
+
+ return result + "rokmi";
+ }
+}
+/* eslint-enable */
+
+
+var locale = {
+ name: 'sk',
+ weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
+ weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
+ weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
+ months: 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd D. MMMM YYYY H:mm',
+ l: 'D. M. YYYY'
+ },
+ relativeTime: {
+ future: 'za %s',
+ // Should be `o %s` (change when moment/moment#5408 is fixed)
+ past: 'pred %s',
+ s: translate,
+ m: translate,
+ mm: translate,
+ h: translate,
+ hh: translate,
+ d: translate,
+ dd: translate,
+ M: translate,
+ MM: translate,
+ y: translate,
+ yy: translate
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sl.js b/node_modules/dayjs/esm/locale/sl.js
new file mode 100644
index 0000000..cfbe83d
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sl.js
@@ -0,0 +1,39 @@
+// Slovenian [sl]
+import dayjs from '../index';
+var locale = {
+ name: 'sl',
+ weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
+ months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
+ monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
+ weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'čez %s',
+ past: 'pred %s',
+ s: 'nekaj sekund',
+ m: 'minuta',
+ mm: '%d minut',
+ h: 'ura',
+ hh: '%d ur',
+ d: 'dan',
+ dd: '%d dni',
+ M: 'mesec',
+ MM: '%d mesecev',
+ y: 'leto',
+ yy: '%d let'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sq.js b/node_modules/dayjs/esm/locale/sq.js
new file mode 100644
index 0000000..625b701
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sq.js
@@ -0,0 +1,39 @@
+// Albanian [sq]
+import dayjs from '../index';
+var locale = {
+ name: 'sq',
+ weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
+ months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
+ monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
+ weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'në %s',
+ past: '%s më parë',
+ s: 'disa sekonda',
+ m: 'një minutë',
+ mm: '%d minuta',
+ h: 'një orë',
+ hh: '%d orë',
+ d: 'një ditë',
+ dd: '%d ditë',
+ M: 'një muaj',
+ MM: '%d muaj',
+ y: 'një vit',
+ yy: '%d vite'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sr-cyrl.js b/node_modules/dayjs/esm/locale/sr-cyrl.js
new file mode 100644
index 0000000..2e40d51
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sr-cyrl.js
@@ -0,0 +1,74 @@
+// Serbian Cyrillic [sr-cyrl]
+import dayjs from '../index';
+var translator = {
+ words: {
+ m: ['један минут', 'једног минута'],
+ mm: ['%d минут', '%d минута', '%d минута'],
+ h: ['један сат', 'једног сата'],
+ hh: ['%d сат', '%d сата', '%d сати'],
+ d: ['један дан', 'једног дана'],
+ dd: ['%d дан', '%d дана', '%d дана'],
+ M: ['један месец', 'једног месеца'],
+ MM: ['%d месец', '%d месеца', '%d месеци'],
+ y: ['једну годину', 'једне године'],
+ yy: ['%d годину', '%d године', '%d година']
+ },
+ correctGrammarCase: function correctGrammarCase(number, wordKey) {
+ if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {
+ return number % 10 === 1 ? wordKey[0] : wordKey[1];
+ }
+
+ return wordKey[2];
+ },
+ relativeTimeFormatter: function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {
+ var wordKey = translator.words[key];
+
+ if (key.length === 1) {
+ // Nominativ
+ if (key === 'y' && withoutSuffix) return 'једна година';
+ return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
+ }
+
+ var word = translator.correctGrammarCase(number, wordKey); // Nominativ
+
+ if (key === 'yy' && withoutSuffix && word === '%d годину') return number + " \u0433\u043E\u0434\u0438\u043D\u0430";
+ return word.replace('%d', number);
+ }
+};
+var locale = {
+ name: 'sr-cyrl',
+ weekdays: 'Недеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота'.split('_'),
+ weekdaysShort: 'Нед._Пон._Уто._Сре._Чет._Пет._Суб.'.split('_'),
+ weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
+ months: 'Јануар_Фебруар_Март_Април_Мај_Јун_Јул_Август_Септембар_Октобар_Новембар_Децембар'.split('_'),
+ monthsShort: 'Јан._Феб._Мар._Апр._Мај_Јун_Јул_Авг._Сеп._Окт._Нов._Дец.'.split('_'),
+ weekStart: 1,
+ relativeTime: {
+ future: 'за %s',
+ past: 'пре %s',
+ s: 'неколико секунди',
+ m: translator.relativeTimeFormatter,
+ mm: translator.relativeTimeFormatter,
+ h: translator.relativeTimeFormatter,
+ hh: translator.relativeTimeFormatter,
+ d: translator.relativeTimeFormatter,
+ dd: translator.relativeTimeFormatter,
+ M: translator.relativeTimeFormatter,
+ MM: translator.relativeTimeFormatter,
+ y: translator.relativeTimeFormatter,
+ yy: translator.relativeTimeFormatter
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'D. M. YYYY.',
+ LL: 'D. MMMM YYYY.',
+ LLL: 'D. MMMM YYYY. H:mm',
+ LLLL: 'dddd, D. MMMM YYYY. H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sr.js b/node_modules/dayjs/esm/locale/sr.js
new file mode 100644
index 0000000..f5174ce
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sr.js
@@ -0,0 +1,74 @@
+// Serbian [sr]
+import dayjs from '../index';
+var translator = {
+ words: {
+ m: ['jedan minut', 'jednog minuta'],
+ mm: ['%d minut', '%d minuta', '%d minuta'],
+ h: ['jedan sat', 'jednog sata'],
+ hh: ['%d sat', '%d sata', '%d sati'],
+ d: ['jedan dan', 'jednog dana'],
+ dd: ['%d dan', '%d dana', '%d dana'],
+ M: ['jedan mesec', 'jednog meseca'],
+ MM: ['%d mesec', '%d meseca', '%d meseci'],
+ y: ['jednu godinu', 'jedne godine'],
+ yy: ['%d godinu', '%d godine', '%d godina']
+ },
+ correctGrammarCase: function correctGrammarCase(number, wordKey) {
+ if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {
+ return number % 10 === 1 ? wordKey[0] : wordKey[1];
+ }
+
+ return wordKey[2];
+ },
+ relativeTimeFormatter: function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {
+ var wordKey = translator.words[key];
+
+ if (key.length === 1) {
+ // Nominativ
+ if (key === 'y' && withoutSuffix) return 'jedna godina';
+ return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
+ }
+
+ var word = translator.correctGrammarCase(number, wordKey); // Nominativ
+
+ if (key === 'yy' && withoutSuffix && word === '%d godinu') return number + " godina";
+ return word.replace('%d', number);
+ }
+};
+var locale = {
+ name: 'sr',
+ weekdays: 'Nedelja_Ponedeljak_Utorak_Sreda_Četvrtak_Petak_Subota'.split('_'),
+ weekdaysShort: 'Ned._Pon._Uto._Sre._Čet._Pet._Sub.'.split('_'),
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+ months: 'Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar'.split('_'),
+ monthsShort: 'Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.'.split('_'),
+ weekStart: 1,
+ relativeTime: {
+ future: 'za %s',
+ past: 'pre %s',
+ s: 'nekoliko sekundi',
+ m: translator.relativeTimeFormatter,
+ mm: translator.relativeTimeFormatter,
+ h: translator.relativeTimeFormatter,
+ hh: translator.relativeTimeFormatter,
+ d: translator.relativeTimeFormatter,
+ dd: translator.relativeTimeFormatter,
+ M: translator.relativeTimeFormatter,
+ MM: translator.relativeTimeFormatter,
+ y: translator.relativeTimeFormatter,
+ yy: translator.relativeTimeFormatter
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'D. M. YYYY.',
+ LL: 'D. MMMM YYYY.',
+ LLL: 'D. MMMM YYYY. H:mm',
+ LLLL: 'dddd, D. MMMM YYYY. H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ss.js b/node_modules/dayjs/esm/locale/ss.js
new file mode 100644
index 0000000..4354a48
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ss.js
@@ -0,0 +1,39 @@
+// siSwati [ss]
+import dayjs from '../index';
+var locale = {
+ name: 'ss',
+ weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
+ months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
+ monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
+ weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'nga %s',
+ past: 'wenteka nga %s',
+ s: 'emizuzwana lomcane',
+ m: 'umzuzu',
+ mm: '%d emizuzu',
+ h: 'lihora',
+ hh: '%d emahora',
+ d: 'lilanga',
+ dd: '%d emalanga',
+ M: 'inyanga',
+ MM: '%d tinyanga',
+ y: 'umnyaka',
+ yy: '%d iminyaka'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sv-fi.js b/node_modules/dayjs/esm/locale/sv-fi.js
new file mode 100644
index 0000000..a18977f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sv-fi.js
@@ -0,0 +1,46 @@
+// Finland Swedish [sv-fi]
+import dayjs from '../index';
+var locale = {
+ name: 'sv-fi',
+ weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
+ weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
+ weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
+ months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ ordinal: function ordinal(n) {
+ var b = n % 10;
+ var o = b === 1 || b === 2 ? 'a' : 'e';
+ return "[" + n + o + "]";
+ },
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY, [kl.] HH.mm',
+ LLLL: 'dddd, D. MMMM YYYY, [kl.] HH.mm',
+ l: 'D.M.YYYY',
+ ll: 'D. MMM YYYY',
+ lll: 'D. MMM YYYY, [kl.] HH.mm',
+ llll: 'ddd, D. MMM YYYY, [kl.] HH.mm'
+ },
+ relativeTime: {
+ future: 'om %s',
+ past: 'för %s sedan',
+ s: 'några sekunder',
+ m: 'en minut',
+ mm: '%d minuter',
+ h: 'en timme',
+ hh: '%d timmar',
+ d: 'en dag',
+ dd: '%d dagar',
+ M: 'en månad',
+ MM: '%d månader',
+ y: 'ett år',
+ yy: '%d år'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sv.js b/node_modules/dayjs/esm/locale/sv.js
new file mode 100644
index 0000000..2563ee7
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sv.js
@@ -0,0 +1,44 @@
+// Swedish [sv]
+import dayjs from '../index';
+var locale = {
+ name: 'sv',
+ weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
+ weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
+ weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
+ months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ ordinal: function ordinal(n) {
+ var b = n % 10;
+ var o = b === 1 || b === 2 ? 'a' : 'e';
+ return "[" + n + o + "]";
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY [kl.] HH:mm',
+ LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
+ lll: 'D MMM YYYY HH:mm',
+ llll: 'ddd D MMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'om %s',
+ past: 'för %s sedan',
+ s: 'några sekunder',
+ m: 'en minut',
+ mm: '%d minuter',
+ h: 'en timme',
+ hh: '%d timmar',
+ d: 'en dag',
+ dd: '%d dagar',
+ M: 'en månad',
+ MM: '%d månader',
+ y: 'ett år',
+ yy: '%d år'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/sw.js b/node_modules/dayjs/esm/locale/sw.js
new file mode 100644
index 0000000..287bf33
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/sw.js
@@ -0,0 +1,39 @@
+// Swahili [sw]
+import dayjs from '../index';
+var locale = {
+ name: 'sw',
+ weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
+ weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
+ weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
+ months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
+ monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
+ weekStart: 1,
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ relativeTime: {
+ future: '%s baadaye',
+ past: 'tokea %s',
+ s: 'hivi punde',
+ m: 'dakika moja',
+ mm: 'dakika %d',
+ h: 'saa limoja',
+ hh: 'masaa %d',
+ d: 'siku moja',
+ dd: 'masiku %d',
+ M: 'mwezi mmoja',
+ MM: 'miezi %d',
+ y: 'mwaka mmoja',
+ yy: 'miaka %d'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ta.js b/node_modules/dayjs/esm/locale/ta.js
new file mode 100644
index 0000000..6df25f8
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ta.js
@@ -0,0 +1,38 @@
+// Tamil [ta]
+import dayjs from '../index';
+var locale = {
+ name: 'ta',
+ weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
+ months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
+ weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
+ monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
+ weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, HH:mm',
+ LLLL: 'dddd, D MMMM YYYY, HH:mm'
+ },
+ relativeTime: {
+ future: '%s இல்',
+ past: '%s முன்',
+ s: 'ஒரு சில விநாடிகள்',
+ m: 'ஒரு நிமிடம்',
+ mm: '%d நிமிடங்கள்',
+ h: 'ஒரு மணி நேரம்',
+ hh: '%d மணி நேரம்',
+ d: 'ஒரு நாள்',
+ dd: '%d நாட்கள்',
+ M: 'ஒரு மாதம்',
+ MM: '%d மாதங்கள்',
+ y: 'ஒரு வருடம்',
+ yy: '%d ஆண்டுகள்'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/te.js b/node_modules/dayjs/esm/locale/te.js
new file mode 100644
index 0000000..392a247
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/te.js
@@ -0,0 +1,38 @@
+// Telugu [te]
+import dayjs from '../index';
+var locale = {
+ name: 'te',
+ weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
+ months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
+ weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
+ monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
+ weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm',
+ LTS: 'A h:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm'
+ },
+ relativeTime: {
+ future: '%s లో',
+ past: '%s క్రితం',
+ s: 'కొన్ని క్షణాలు',
+ m: 'ఒక నిమిషం',
+ mm: '%d నిమిషాలు',
+ h: 'ఒక గంట',
+ hh: '%d గంటలు',
+ d: 'ఒక రోజు',
+ dd: '%d రోజులు',
+ M: 'ఒక నెల',
+ MM: '%d నెలలు',
+ y: 'ఒక సంవత్సరం',
+ yy: '%d సంవత్సరాలు'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tet.js b/node_modules/dayjs/esm/locale/tet.js
new file mode 100644
index 0000000..ff83eea
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tet.js
@@ -0,0 +1,39 @@
+// Tetun Dili (East Timor) [tet]
+import dayjs from '../index';
+var locale = {
+ name: 'tet',
+ weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
+ months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
+ monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+ weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'iha %s',
+ past: '%s liuba',
+ s: 'minutu balun',
+ m: 'minutu ida',
+ mm: 'minutu %d',
+ h: 'oras ida',
+ hh: 'oras %d',
+ d: 'loron ida',
+ dd: 'loron %d',
+ M: 'fulan ida',
+ MM: 'fulan %d',
+ y: 'tinan ida',
+ yy: 'tinan %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tg.js b/node_modules/dayjs/esm/locale/tg.js
new file mode 100644
index 0000000..536df0b
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tg.js
@@ -0,0 +1,39 @@
+// Tajik [tg]
+import dayjs from '../index';
+var locale = {
+ name: 'tg',
+ weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
+ months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
+ monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+ weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'баъди %s',
+ past: '%s пеш',
+ s: 'якчанд сония',
+ m: 'як дақиқа',
+ mm: '%d дақиқа',
+ h: 'як соат',
+ hh: '%d соат',
+ d: 'як рӯз',
+ dd: '%d рӯз',
+ M: 'як моҳ',
+ MM: '%d моҳ',
+ y: 'як сол',
+ yy: '%d сол'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/th.js b/node_modules/dayjs/esm/locale/th.js
new file mode 100644
index 0000000..5cbcdf2
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/th.js
@@ -0,0 +1,38 @@
+// Thai [th]
+import dayjs from '../index';
+var locale = {
+ name: 'th',
+ weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
+ weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),
+ weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
+ months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
+ monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY เวลา H:mm',
+ LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'
+ },
+ relativeTime: {
+ future: 'อีก %s',
+ past: '%sที่แล้ว',
+ s: 'ไม่กี่วินาที',
+ m: '1 นาที',
+ mm: '%d นาที',
+ h: '1 ชั่วโมง',
+ hh: '%d ชั่วโมง',
+ d: '1 วัน',
+ dd: '%d วัน',
+ M: '1 เดือน',
+ MM: '%d เดือน',
+ y: '1 ปี',
+ yy: '%d ปี'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tk.js b/node_modules/dayjs/esm/locale/tk.js
new file mode 100644
index 0000000..93390f1
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tk.js
@@ -0,0 +1,39 @@
+// Turkmen [tk]
+import dayjs from '../index';
+var locale = {
+ name: 'tk',
+ weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split('_'),
+ weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
+ weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
+ months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),
+ monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s soň',
+ past: '%s öň',
+ s: 'birnäçe sekunt',
+ m: 'bir minut',
+ mm: '%d minut',
+ h: 'bir sagat',
+ hh: '%d sagat',
+ d: 'bir gün',
+ dd: '%d gün',
+ M: 'bir aý',
+ MM: '%d aý',
+ y: 'bir ýyl',
+ yy: '%d ýyl'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tl-ph.js b/node_modules/dayjs/esm/locale/tl-ph.js
new file mode 100644
index 0000000..0fa84f3
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tl-ph.js
@@ -0,0 +1,39 @@
+// Tagalog (Philippines) [tl-ph]
+import dayjs from '../index';
+var locale = {
+ name: 'tl-ph',
+ weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
+ months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
+ monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
+ weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'MM/D/YYYY',
+ LL: 'MMMM D, YYYY',
+ LLL: 'MMMM D, YYYY HH:mm',
+ LLLL: 'dddd, MMMM DD, YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'sa loob ng %s',
+ past: '%s ang nakalipas',
+ s: 'ilang segundo',
+ m: 'isang minuto',
+ mm: '%d minuto',
+ h: 'isang oras',
+ hh: '%d oras',
+ d: 'isang araw',
+ dd: '%d araw',
+ M: 'isang buwan',
+ MM: '%d buwan',
+ y: 'isang taon',
+ yy: '%d taon'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tlh.js b/node_modules/dayjs/esm/locale/tlh.js
new file mode 100644
index 0000000..30f52fe
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tlh.js
@@ -0,0 +1,24 @@
+// Klingon [tlh]
+import dayjs from '../index';
+var locale = {
+ name: 'tlh',
+ weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
+ months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
+ monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
+ weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tr.js b/node_modules/dayjs/esm/locale/tr.js
new file mode 100644
index 0000000..e7fe24f
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tr.js
@@ -0,0 +1,39 @@
+// Turkish [tr]
+import dayjs from '../index';
+var locale = {
+ name: 'tr',
+ weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
+ weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
+ weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
+ months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
+ monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s sonra',
+ past: '%s önce',
+ s: 'birkaç saniye',
+ m: 'bir dakika',
+ mm: '%d dakika',
+ h: 'bir saat',
+ hh: '%d saat',
+ d: 'bir gün',
+ dd: '%d gün',
+ M: 'bir ay',
+ MM: '%d ay',
+ y: 'bir yıl',
+ yy: '%d yıl'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/types.d.ts b/node_modules/dayjs/esm/locale/types.d.ts
new file mode 100644
index 0000000..2c24a64
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/types.d.ts
@@ -0,0 +1,33 @@
+declare interface ILocale {
+ name: string
+ weekdays?: string[]
+ months?: string[]
+ weekStart?: number
+ weekdaysShort?: string[]
+ monthsShort?: string[]
+ weekdaysMin?: string[]
+ ordinal?: (n: number) => number | string
+ formats: Partial<{
+ LT: string
+ LTS: string
+ L: string
+ LL: string
+ LLL: string
+ LLLL: string
+ }>
+ relativeTime: Partial<{
+ future: string
+ past: string
+ s: string
+ m: string
+ mm: string
+ h: string
+ hh: string
+ d: string
+ dd: string
+ M: string
+ MM: string
+ y: string
+ yy: string
+ }>
+}
diff --git a/node_modules/dayjs/esm/locale/tzl.js b/node_modules/dayjs/esm/locale/tzl.js
new file mode 100644
index 0000000..9fa0cd2
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tzl.js
@@ -0,0 +1,24 @@
+// Talossan [tzl]
+import dayjs from '../index';
+var locale = {
+ name: 'tzl',
+ weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
+ months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
+ monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
+ weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM [dallas] YYYY',
+ LLL: 'D. MMMM [dallas] YYYY HH.mm',
+ LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tzm-latn.js b/node_modules/dayjs/esm/locale/tzm-latn.js
new file mode 100644
index 0000000..e5ac6af
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tzm-latn.js
@@ -0,0 +1,39 @@
+// Central Atlas Tamazight Latin [tzm-latn]
+import dayjs from '../index';
+var locale = {
+ name: 'tzm-latn',
+ weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+ months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
+ weekStart: 6,
+ weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+ monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
+ weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'dadkh s yan %s',
+ past: 'yan %s',
+ s: 'imik',
+ m: 'minuḍ',
+ mm: '%d minuḍ',
+ h: 'saɛa',
+ hh: '%d tassaɛin',
+ d: 'ass',
+ dd: '%d ossan',
+ M: 'ayowr',
+ MM: '%d iyyirn',
+ y: 'asgas',
+ yy: '%d isgasn'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/tzm.js b/node_modules/dayjs/esm/locale/tzm.js
new file mode 100644
index 0000000..d94a6c0
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/tzm.js
@@ -0,0 +1,39 @@
+// Central Atlas Tamazight [tzm]
+import dayjs from '../index';
+var locale = {
+ name: 'tzm',
+ weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+ months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
+ weekStart: 6,
+ weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+ monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
+ weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
+ past: 'ⵢⴰⵏ %s',
+ s: 'ⵉⵎⵉⴽ',
+ m: 'ⵎⵉⵏⵓⴺ',
+ mm: '%d ⵎⵉⵏⵓⴺ',
+ h: 'ⵙⴰⵄⴰ',
+ hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
+ d: 'ⴰⵙⵙ',
+ dd: '%d oⵙⵙⴰⵏ',
+ M: 'ⴰⵢoⵓⵔ',
+ MM: '%d ⵉⵢⵢⵉⵔⵏ',
+ y: 'ⴰⵙⴳⴰⵙ',
+ yy: '%d ⵉⵙⴳⴰⵙⵏ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ug-cn.js b/node_modules/dayjs/esm/locale/ug-cn.js
new file mode 100644
index 0000000..d3d6392
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ug-cn.js
@@ -0,0 +1,39 @@
+// Uyghur (China) [ug-cn]
+import dayjs from '../index';
+var locale = {
+ name: 'ug-cn',
+ weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),
+ months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
+ monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),
+ weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
+ LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+ LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'
+ },
+ relativeTime: {
+ future: '%s كېيىن',
+ past: '%s بۇرۇن',
+ s: 'نەچچە سېكونت',
+ m: 'بىر مىنۇت',
+ mm: '%d مىنۇت',
+ h: 'بىر سائەت',
+ hh: '%d سائەت',
+ d: 'بىر كۈن',
+ dd: '%d كۈن',
+ M: 'بىر ئاي',
+ MM: '%d ئاي',
+ y: 'بىر يىل',
+ yy: '%d يىل'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/uk.js b/node_modules/dayjs/esm/locale/uk.js
new file mode 100644
index 0000000..3c70b13
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/uk.js
@@ -0,0 +1,77 @@
+// Ukrainian [uk]
+import dayjs from '../index';
+var monthFormat = 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_');
+var monthStandalone = 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_');
+var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;
+
+function plural(word, num) {
+ var forms = word.split('_');
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; // eslint-disable-line
+}
+
+function relativeTimeWithPlural(number, withoutSuffix, key) {
+ var format = {
+ ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
+ mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
+ hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
+ dd: 'день_дні_днів',
+ MM: 'місяць_місяці_місяців',
+ yy: 'рік_роки_років'
+ };
+
+ if (key === 'm') {
+ return withoutSuffix ? 'хвилина' : 'хвилину';
+ } else if (key === 'h') {
+ return withoutSuffix ? 'година' : 'годину';
+ }
+
+ return number + " " + plural(format[key], +number);
+}
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+var locale = {
+ name: 'uk',
+ weekdays: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
+ weekdaysShort: 'ндл_пнд_втр_срд_чтв_птн_сбт'.split('_'),
+ weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+ months: months,
+ monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
+ weekStart: 1,
+ relativeTime: {
+ future: 'за %s',
+ past: '%s тому',
+ s: 'декілька секунд',
+ m: relativeTimeWithPlural,
+ mm: relativeTimeWithPlural,
+ h: relativeTimeWithPlural,
+ hh: relativeTimeWithPlural,
+ d: 'день',
+ dd: relativeTimeWithPlural,
+ M: 'місяць',
+ MM: relativeTimeWithPlural,
+ y: 'рік',
+ yy: relativeTimeWithPlural
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY р.',
+ LLL: 'D MMMM YYYY р., HH:mm',
+ LLLL: 'dddd, D MMMM YYYY р., HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/ur.js b/node_modules/dayjs/esm/locale/ur.js
new file mode 100644
index 0000000..7464c1e
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/ur.js
@@ -0,0 +1,39 @@
+// Urdu [ur]
+import dayjs from '../index';
+var locale = {
+ name: 'ur',
+ weekdays: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'),
+ months: 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'),
+ monthsShort: 'جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر'.split('_'),
+ weekdaysMin: 'اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd، D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s بعد',
+ past: '%s قبل',
+ s: 'چند سیکنڈ',
+ m: 'ایک منٹ',
+ mm: '%d منٹ',
+ h: 'ایک گھنٹہ',
+ hh: '%d گھنٹے',
+ d: 'ایک دن',
+ dd: '%d دن',
+ M: 'ایک ماہ',
+ MM: '%d ماہ',
+ y: 'ایک سال',
+ yy: '%d سال'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/uz-latn.js b/node_modules/dayjs/esm/locale/uz-latn.js
new file mode 100644
index 0000000..4dc2108
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/uz-latn.js
@@ -0,0 +1,39 @@
+// Uzbek Latin [uz-latn]
+import dayjs from '../index';
+var locale = {
+ name: 'uz-latn',
+ weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
+ months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
+ monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
+ weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'D MMMM YYYY, dddd HH:mm'
+ },
+ relativeTime: {
+ future: 'Yaqin %s ichida',
+ past: 'Bir necha %s oldin',
+ s: 'soniya',
+ m: 'bir daqiqa',
+ mm: '%d daqiqa',
+ h: 'bir soat',
+ hh: '%d soat',
+ d: 'bir kun',
+ dd: '%d kun',
+ M: 'bir oy',
+ MM: '%d oy',
+ y: 'bir yil',
+ yy: '%d yil'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/uz.js b/node_modules/dayjs/esm/locale/uz.js
new file mode 100644
index 0000000..459fd58
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/uz.js
@@ -0,0 +1,39 @@
+// Uzbek [uz]
+import dayjs from '../index';
+var locale = {
+ name: 'uz',
+ weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
+ months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
+ monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+ weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'D MMMM YYYY, dddd HH:mm'
+ },
+ relativeTime: {
+ future: 'Якин %s ичида',
+ past: 'Бир неча %s олдин',
+ s: 'фурсат',
+ m: 'бир дакика',
+ mm: '%d дакика',
+ h: 'бир соат',
+ hh: '%d соат',
+ d: 'бир кун',
+ dd: '%d кун',
+ M: 'бир ой',
+ MM: '%d ой',
+ y: 'бир йил',
+ yy: '%d йил'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/vi.js b/node_modules/dayjs/esm/locale/vi.js
new file mode 100644
index 0000000..f55cc73
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/vi.js
@@ -0,0 +1,43 @@
+// Vietnamese [vi]
+import dayjs from '../index';
+var locale = {
+ name: 'vi',
+ weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
+ months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+ monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
+ weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM [năm] YYYY',
+ LLL: 'D MMMM [năm] YYYY HH:mm',
+ LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
+ l: 'DD/M/YYYY',
+ ll: 'D MMM YYYY',
+ lll: 'D MMM YYYY HH:mm',
+ llll: 'ddd, D MMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s tới',
+ past: '%s trước',
+ s: 'vài giây',
+ m: 'một phút',
+ mm: '%d phút',
+ h: 'một giờ',
+ hh: '%d giờ',
+ d: 'một ngày',
+ dd: '%d ngày',
+ M: 'một tháng',
+ MM: '%d tháng',
+ y: 'một năm',
+ yy: '%d năm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/x-pseudo.js b/node_modules/dayjs/esm/locale/x-pseudo.js
new file mode 100644
index 0000000..ceb6782
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/x-pseudo.js
@@ -0,0 +1,39 @@
+// Pseudo [x-pseudo]
+import dayjs from '../index';
+var locale = {
+ name: 'x-pseudo',
+ weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
+ months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
+ monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
+ weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'í~ñ %s',
+ past: '%s á~gó',
+ s: 'á ~féw ~sécó~ñds',
+ m: 'á ~míñ~úté',
+ mm: '%d m~íñú~tés',
+ h: 'á~ñ hó~úr',
+ hh: '%d h~óúrs',
+ d: 'á ~dáý',
+ dd: '%d d~áýs',
+ M: 'á ~móñ~th',
+ MM: '%d m~óñt~hs',
+ y: 'á ~ýéár',
+ yy: '%d ý~éárs'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/yo.js b/node_modules/dayjs/esm/locale/yo.js
new file mode 100644
index 0000000..1f79468
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/yo.js
@@ -0,0 +1,39 @@
+// Yoruba Nigeria [yo]
+import dayjs from '../index';
+var locale = {
+ name: 'yo',
+ weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
+ months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
+ monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
+ weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'ní %s',
+ past: '%s kọjá',
+ s: 'ìsẹjú aayá die',
+ m: 'ìsẹjú kan',
+ mm: 'ìsẹjú %d',
+ h: 'wákati kan',
+ hh: 'wákati %d',
+ d: 'ọjọ́ kan',
+ dd: 'ọjọ́ %d',
+ M: 'osù kan',
+ MM: 'osù %d',
+ y: 'ọdún kan',
+ yy: 'ọdún %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/zh-cn.js b/node_modules/dayjs/esm/locale/zh-cn.js
new file mode 100644
index 0000000..1a7ebf4
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/zh-cn.js
@@ -0,0 +1,67 @@
+// Chinese (China) [zh-cn]
+import dayjs from '../index';
+var locale = {
+ name: 'zh-cn',
+ weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
+ weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ ordinal: function ordinal(number, period) {
+ switch (period) {
+ case 'W':
+ return number + "\u5468";
+
+ default:
+ return number + "\u65E5";
+ }
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY年M月D日',
+ LLL: 'YYYY年M月D日Ah点mm分',
+ LLLL: 'YYYY年M月D日ddddAh点mm分',
+ l: 'YYYY/M/D',
+ ll: 'YYYY年M月D日',
+ lll: 'YYYY年M月D日 HH:mm',
+ llll: 'YYYY年M月D日dddd HH:mm'
+ },
+ relativeTime: {
+ future: '%s内',
+ past: '%s前',
+ s: '几秒',
+ m: '1 分钟',
+ mm: '%d 分钟',
+ h: '1 小时',
+ hh: '%d 小时',
+ d: '1 天',
+ dd: '%d 天',
+ M: '1 个月',
+ MM: '%d 个月',
+ y: '1 年',
+ yy: '%d 年'
+ },
+ meridiem: function meridiem(hour, minute) {
+ var hm = hour * 100 + minute;
+
+ if (hm < 600) {
+ return '凌晨';
+ } else if (hm < 900) {
+ return '早上';
+ } else if (hm < 1100) {
+ return '上午';
+ } else if (hm < 1300) {
+ return '中午';
+ } else if (hm < 1800) {
+ return '下午';
+ }
+
+ return '晚上';
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/zh-hk.js b/node_modules/dayjs/esm/locale/zh-hk.js
new file mode 100644
index 0000000..3896747
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/zh-hk.js
@@ -0,0 +1,44 @@
+// Chinese (Hong Kong) [zh-hk]
+import dayjs from '../index';
+var locale = {
+ name: 'zh-hk',
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+ weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+ ordinal: function ordinal(number, period) {
+ switch (period) {
+ case 'W':
+ return number + "\u9031";
+
+ default:
+ return number + "\u65E5";
+ }
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY年M月D日',
+ LLL: 'YYYY年M月D日 HH:mm',
+ LLLL: 'YYYY年M月D日dddd HH:mm'
+ },
+ relativeTime: {
+ future: '%s內',
+ past: '%s前',
+ s: '幾秒',
+ m: '一分鐘',
+ mm: '%d 分鐘',
+ h: '一小時',
+ hh: '%d 小時',
+ d: '一天',
+ dd: '%d 天',
+ M: '一個月',
+ MM: '%d 個月',
+ y: '一年',
+ yy: '%d 年'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/zh-tw.js b/node_modules/dayjs/esm/locale/zh-tw.js
new file mode 100644
index 0000000..ada89ee
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/zh-tw.js
@@ -0,0 +1,65 @@
+// Chinese (Taiwan) [zh-tw]
+import dayjs from '../index';
+var locale = {
+ name: 'zh-tw',
+ weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+ weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ ordinal: function ordinal(number, period) {
+ switch (period) {
+ case 'W':
+ return number + "\u9031";
+
+ default:
+ return number + "\u65E5";
+ }
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY年M月D日',
+ LLL: 'YYYY年M月D日 HH:mm',
+ LLLL: 'YYYY年M月D日dddd HH:mm',
+ l: 'YYYY/M/D',
+ ll: 'YYYY年M月D日',
+ lll: 'YYYY年M月D日 HH:mm',
+ llll: 'YYYY年M月D日dddd HH:mm'
+ },
+ relativeTime: {
+ future: '%s內',
+ past: '%s前',
+ s: '幾秒',
+ m: '1 分鐘',
+ mm: '%d 分鐘',
+ h: '1 小時',
+ hh: '%d 小時',
+ d: '1 天',
+ dd: '%d 天',
+ M: '1 個月',
+ MM: '%d 個月',
+ y: '1 年',
+ yy: '%d 年'
+ },
+ meridiem: function meridiem(hour, minute) {
+ var hm = hour * 100 + minute;
+
+ if (hm < 600) {
+ return '凌晨';
+ } else if (hm < 900) {
+ return '早上';
+ } else if (hm < 1100) {
+ return '上午';
+ } else if (hm < 1300) {
+ return '中午';
+ } else if (hm < 1800) {
+ return '下午';
+ }
+
+ return '晚上';
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/locale/zh.js b/node_modules/dayjs/esm/locale/zh.js
new file mode 100644
index 0000000..b98ab70
--- /dev/null
+++ b/node_modules/dayjs/esm/locale/zh.js
@@ -0,0 +1,67 @@
+// Chinese [zh]
+import dayjs from '../index';
+var locale = {
+ name: 'zh',
+ weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
+ weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ ordinal: function ordinal(number, period) {
+ switch (period) {
+ case 'W':
+ return number + "\u5468";
+
+ default:
+ return number + "\u65E5";
+ }
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY年M月D日',
+ LLL: 'YYYY年M月D日Ah点mm分',
+ LLLL: 'YYYY年M月D日ddddAh点mm分',
+ l: 'YYYY/M/D',
+ ll: 'YYYY年M月D日',
+ lll: 'YYYY年M月D日 HH:mm',
+ llll: 'YYYY年M月D日dddd HH:mm'
+ },
+ relativeTime: {
+ future: '%s后',
+ past: '%s前',
+ s: '几秒',
+ m: '1 分钟',
+ mm: '%d 分钟',
+ h: '1 小时',
+ hh: '%d 小时',
+ d: '1 天',
+ dd: '%d 天',
+ M: '1 个月',
+ MM: '%d 个月',
+ y: '1 年',
+ yy: '%d 年'
+ },
+ meridiem: function meridiem(hour, minute) {
+ var hm = hour * 100 + minute;
+
+ if (hm < 600) {
+ return '凌晨';
+ } else if (hm < 900) {
+ return '早上';
+ } else if (hm < 1100) {
+ return '上午';
+ } else if (hm < 1300) {
+ return '中午';
+ } else if (hm < 1800) {
+ return '下午';
+ }
+
+ return '晚上';
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts b/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/advancedFormat/index.js b/node_modules/dayjs/esm/plugin/advancedFormat/index.js
new file mode 100644
index 0000000..f45e4e0
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/advancedFormat/index.js
@@ -0,0 +1,66 @@
+import { FORMAT_DEFAULT } from '../../constant';
+export default (function (o, c) {
+ // locale needed later
+ var proto = c.prototype;
+ var oldFormat = proto.format;
+
+ proto.format = function (formatStr) {
+ var _this = this;
+
+ var locale = this.$locale();
+
+ if (!this.isValid()) {
+ return oldFormat.bind(this)(formatStr);
+ }
+
+ var utils = this.$utils();
+ var str = formatStr || FORMAT_DEFAULT;
+ var result = str.replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function (match) {
+ switch (match) {
+ case 'Q':
+ return Math.ceil((_this.$M + 1) / 3);
+
+ case 'Do':
+ return locale.ordinal(_this.$D);
+
+ case 'gggg':
+ return _this.weekYear();
+
+ case 'GGGG':
+ return _this.isoWeekYear();
+
+ case 'wo':
+ return locale.ordinal(_this.week(), 'W');
+ // W for week
+
+ case 'w':
+ case 'ww':
+ return utils.s(_this.week(), match === 'w' ? 1 : 2, '0');
+
+ case 'W':
+ case 'WW':
+ return utils.s(_this.isoWeek(), match === 'W' ? 1 : 2, '0');
+
+ case 'k':
+ case 'kk':
+ return utils.s(String(_this.$H === 0 ? 24 : _this.$H), match === 'k' ? 1 : 2, '0');
+
+ case 'X':
+ return Math.floor(_this.$d.getTime() / 1000);
+
+ case 'x':
+ return _this.$d.getTime();
+
+ case 'z':
+ return "[" + _this.offsetName() + "]";
+
+ case 'zzz':
+ return "[" + _this.offsetName('long') + "]";
+
+ default:
+ return match;
+ }
+ });
+ return oldFormat.bind(this)(result);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts b/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts
new file mode 100644
index 0000000..30f8d9c
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare module 'dayjs/esm' {
+ interface ConfigTypeMap {
+ arraySupport: [number?, number?, number?, number?, number?, number?, number?]
+ }
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/arraySupport/index.js b/node_modules/dayjs/esm/plugin/arraySupport/index.js
new file mode 100644
index 0000000..c7edc79
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/arraySupport/index.js
@@ -0,0 +1,33 @@
+export default (function (o, c, dayjs) {
+ var proto = c.prototype;
+
+ var parseDate = function parseDate(cfg) {
+ var date = cfg.date,
+ utc = cfg.utc;
+
+ if (Array.isArray(date)) {
+ if (utc) {
+ if (!date.length) {
+ return new Date();
+ }
+
+ return new Date(Date.UTC.apply(null, date));
+ }
+
+ if (date.length === 1) {
+ return dayjs(String(date[0])).toDate();
+ }
+
+ return new (Function.prototype.bind.apply(Date, [null].concat(date)))();
+ }
+
+ return date;
+ };
+
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ cfg.date = parseDate.bind(this)(cfg);
+ oldParse.bind(this)(cfg);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/badMutable/index.d.ts b/node_modules/dayjs/esm/plugin/badMutable/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/badMutable/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/badMutable/index.js b/node_modules/dayjs/esm/plugin/badMutable/index.js
new file mode 100644
index 0000000..679edee
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/badMutable/index.js
@@ -0,0 +1,61 @@
+export default (function (o, c) {
+ // locale needed later
+ var proto = c.prototype;
+
+ proto.$g = function (input, get, set) {
+ if (this.$utils().u(input)) return this[get];
+ return this.$set(set, input);
+ };
+
+ proto.set = function (string, _int) {
+ return this.$set(string, _int);
+ };
+
+ var oldStartOf = proto.startOf;
+
+ proto.startOf = function (units, startOf) {
+ this.$d = oldStartOf.bind(this)(units, startOf).toDate();
+ this.init();
+ return this;
+ };
+
+ var oldAdd = proto.add;
+
+ proto.add = function (number, units) {
+ this.$d = oldAdd.bind(this)(number, units).toDate();
+ this.init();
+ return this;
+ };
+
+ var oldLocale = proto.locale;
+
+ proto.locale = function (preset, object) {
+ if (!preset) return this.$L;
+ this.$L = oldLocale.bind(this)(preset, object).$L;
+ return this;
+ };
+
+ var oldDaysInMonth = proto.daysInMonth;
+
+ proto.daysInMonth = function () {
+ return oldDaysInMonth.bind(this.clone())();
+ };
+
+ var oldIsSame = proto.isSame;
+
+ proto.isSame = function (that, units) {
+ return oldIsSame.bind(this.clone())(that, units);
+ };
+
+ var oldIsBefore = proto.isBefore;
+
+ proto.isBefore = function (that, units) {
+ return oldIsBefore.bind(this.clone())(that, units);
+ };
+
+ var oldIsAfter = proto.isAfter;
+
+ proto.isAfter = function (that, units) {
+ return oldIsAfter.bind(this.clone())(that, units);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts b/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts
new file mode 100644
index 0000000..0829ead
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare module 'dayjs/esm' {
+ interface ConfigTypeMap {
+ bigIntSupport: BigInt
+ }
+ export function unix(t: BigInt): Dayjs
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/bigIntSupport/index.js b/node_modules/dayjs/esm/plugin/bigIntSupport/index.js
new file mode 100644
index 0000000..fa93982
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/bigIntSupport/index.js
@@ -0,0 +1,32 @@
+// eslint-disable-next-line valid-typeof
+var isBigInt = function isBigInt(num) {
+ return typeof num === 'bigint';
+};
+
+export default (function (o, c, dayjs) {
+ var proto = c.prototype;
+
+ var parseDate = function parseDate(cfg) {
+ var date = cfg.date;
+
+ if (isBigInt(date)) {
+ return Number(date);
+ }
+
+ return date;
+ };
+
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ cfg.date = parseDate.bind(this)(cfg);
+ oldParse.bind(this)(cfg);
+ };
+
+ var oldUnix = dayjs.unix;
+
+ dayjs.unix = function (timestamp) {
+ var ts = isBigInt(timestamp) ? Number(timestamp) : timestamp;
+ return oldUnix(ts);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts b/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/buddhistEra/index.js b/node_modules/dayjs/esm/plugin/buddhistEra/index.js
new file mode 100644
index 0000000..76ce44c
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/buddhistEra/index.js
@@ -0,0 +1,21 @@
+import { FORMAT_DEFAULT } from '../../constant';
+export default (function (o, c) {
+ // locale needed later
+ var proto = c.prototype;
+ var oldFormat = proto.format; // extend en locale here
+
+ proto.format = function (formatStr) {
+ var _this = this;
+
+ var yearBias = 543;
+ var str = formatStr || FORMAT_DEFAULT;
+ var result = str.replace(/(\[[^\]]+])|BBBB|BB/g, function (match, a) {
+ var _this$$utils;
+
+ var year = String(_this.$y + yearBias);
+ var args = match === 'BB' ? [year.slice(-2), 2] : [year, 4];
+ return a || (_this$$utils = _this.$utils()).s.apply(_this$$utils, args.concat(['0']));
+ });
+ return oldFormat.bind(this)(result);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/calendar/index.d.ts b/node_modules/dayjs/esm/plugin/calendar/index.d.ts
new file mode 100644
index 0000000..42bff4b
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/calendar/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ calendar(referenceTime?: ConfigType, formats?: object): string
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/calendar/index.js b/node_modules/dayjs/esm/plugin/calendar/index.js
new file mode 100644
index 0000000..9abf1e9
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/calendar/index.js
@@ -0,0 +1,32 @@
+export default (function (o, c, d) {
+ var LT = 'h:mm A';
+ var L = 'MM/DD/YYYY';
+ var calendarFormat = {
+ lastDay: "[Yesterday at] " + LT,
+ sameDay: "[Today at] " + LT,
+ nextDay: "[Tomorrow at] " + LT,
+ nextWeek: "dddd [at] " + LT,
+ lastWeek: "[Last] dddd [at] " + LT,
+ sameElse: L
+ };
+ var proto = c.prototype;
+
+ proto.calendar = function (referenceTime, formats) {
+ var format = formats || this.$locale().calendar || calendarFormat;
+ var referenceStartOfDay = d(referenceTime || undefined).startOf('d');
+ var diff = this.diff(referenceStartOfDay, 'd', true);
+ var sameElse = 'sameElse';
+ /* eslint-disable no-nested-ternary */
+
+ var retVal = diff < -6 ? sameElse : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : sameElse;
+ /* eslint-enable no-nested-ternary */
+
+ var currentFormat = format[retVal] || calendarFormat[retVal];
+
+ if (typeof currentFormat === 'function') {
+ return currentFormat.call(this, d());
+ }
+
+ return this.format(currentFormat);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts b/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts
new file mode 100644
index 0000000..7da585e
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare interface PluginOptions {
+ parseTwoDigitYear?: (yearString: string) => number
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/customParseFormat/index.js b/node_modules/dayjs/esm/plugin/customParseFormat/index.js
new file mode 100644
index 0000000..1fd5936
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/customParseFormat/index.js
@@ -0,0 +1,320 @@
+import { u } from '../localizedFormat/utils';
+var formattingTokens = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;
+var match1 = /\d/; // 0 - 9
+
+var match2 = /\d\d/; // 00 - 99
+
+var match3 = /\d{3}/; // 000 - 999
+
+var match4 = /\d{4}/; // 0000 - 9999
+
+var match1to2 = /\d\d?/; // 0 - 99
+
+var matchSigned = /[+-]?\d+/; // -inf - inf
+
+var matchOffset = /[+-]\d\d:?(\d\d)?|Z/; // +00:00 -00:00 +0000 or -0000 +00 or Z
+
+var matchWord = /\d*[^-_:/,()\s\d]+/; // Word
+
+var locale = {};
+
+var parseTwoDigitYear = function parseTwoDigitYear(input) {
+ input = +input;
+ return input + (input > 68 ? 1900 : 2000);
+};
+
+function offsetFromString(string) {
+ if (!string) return 0;
+ if (string === 'Z') return 0;
+ var parts = string.match(/([+-]|\d\d)/g);
+ var minutes = +(parts[1] * 60) + (+parts[2] || 0);
+ return minutes === 0 ? 0 : parts[0] === '+' ? -minutes : minutes; // eslint-disable-line no-nested-ternary
+}
+
+var addInput = function addInput(property) {
+ return function (input) {
+ this[property] = +input;
+ };
+};
+
+var zoneExpressions = [matchOffset, function (input) {
+ var zone = this.zone || (this.zone = {});
+ zone.offset = offsetFromString(input);
+}];
+
+var getLocalePart = function getLocalePart(name) {
+ var part = locale[name];
+ return part && (part.indexOf ? part : part.s.concat(part.f));
+};
+
+var meridiemMatch = function meridiemMatch(input, isLowerCase) {
+ var isAfternoon;
+ var _locale = locale,
+ meridiem = _locale.meridiem;
+
+ if (!meridiem) {
+ isAfternoon = input === (isLowerCase ? 'pm' : 'PM');
+ } else {
+ for (var i = 1; i <= 24; i += 1) {
+ // todo: fix input === meridiem(i, 0, isLowerCase)
+ if (input.indexOf(meridiem(i, 0, isLowerCase)) > -1) {
+ isAfternoon = i > 12;
+ break;
+ }
+ }
+ }
+
+ return isAfternoon;
+};
+
+var expressions = {
+ A: [matchWord, function (input) {
+ this.afternoon = meridiemMatch(input, false);
+ }],
+ a: [matchWord, function (input) {
+ this.afternoon = meridiemMatch(input, true);
+ }],
+ S: [match1, function (input) {
+ this.milliseconds = +input * 100;
+ }],
+ SS: [match2, function (input) {
+ this.milliseconds = +input * 10;
+ }],
+ SSS: [match3, function (input) {
+ this.milliseconds = +input;
+ }],
+ s: [match1to2, addInput('seconds')],
+ ss: [match1to2, addInput('seconds')],
+ m: [match1to2, addInput('minutes')],
+ mm: [match1to2, addInput('minutes')],
+ H: [match1to2, addInput('hours')],
+ h: [match1to2, addInput('hours')],
+ HH: [match1to2, addInput('hours')],
+ hh: [match1to2, addInput('hours')],
+ D: [match1to2, addInput('day')],
+ DD: [match2, addInput('day')],
+ Do: [matchWord, function (input) {
+ var _locale2 = locale,
+ ordinal = _locale2.ordinal;
+
+ var _input$match = input.match(/\d+/);
+
+ this.day = _input$match[0];
+ if (!ordinal) return;
+
+ for (var i = 1; i <= 31; i += 1) {
+ if (ordinal(i).replace(/\[|\]/g, '') === input) {
+ this.day = i;
+ }
+ }
+ }],
+ M: [match1to2, addInput('month')],
+ MM: [match2, addInput('month')],
+ MMM: [matchWord, function (input) {
+ var months = getLocalePart('months');
+ var monthsShort = getLocalePart('monthsShort');
+ var matchIndex = (monthsShort || months.map(function (_) {
+ return _.slice(0, 3);
+ })).indexOf(input) + 1;
+
+ if (matchIndex < 1) {
+ throw new Error();
+ }
+
+ this.month = matchIndex % 12 || matchIndex;
+ }],
+ MMMM: [matchWord, function (input) {
+ var months = getLocalePart('months');
+ var matchIndex = months.indexOf(input) + 1;
+
+ if (matchIndex < 1) {
+ throw new Error();
+ }
+
+ this.month = matchIndex % 12 || matchIndex;
+ }],
+ Y: [matchSigned, addInput('year')],
+ YY: [match2, function (input) {
+ this.year = parseTwoDigitYear(input);
+ }],
+ YYYY: [match4, addInput('year')],
+ Z: zoneExpressions,
+ ZZ: zoneExpressions
+};
+
+function correctHours(time) {
+ var afternoon = time.afternoon;
+
+ if (afternoon !== undefined) {
+ var hours = time.hours;
+
+ if (afternoon) {
+ if (hours < 12) {
+ time.hours += 12;
+ }
+ } else if (hours === 12) {
+ time.hours = 0;
+ }
+
+ delete time.afternoon;
+ }
+}
+
+function makeParser(format) {
+ format = u(format, locale && locale.formats);
+ var array = format.match(formattingTokens);
+ var length = array.length;
+
+ for (var i = 0; i < length; i += 1) {
+ var token = array[i];
+ var parseTo = expressions[token];
+ var regex = parseTo && parseTo[0];
+ var parser = parseTo && parseTo[1];
+
+ if (parser) {
+ array[i] = {
+ regex: regex,
+ parser: parser
+ };
+ } else {
+ array[i] = token.replace(/^\[|\]$/g, '');
+ }
+ }
+
+ return function (input) {
+ var time = {};
+
+ for (var _i = 0, start = 0; _i < length; _i += 1) {
+ var _token = array[_i];
+
+ if (typeof _token === 'string') {
+ start += _token.length;
+ } else {
+ var _regex = _token.regex,
+ _parser = _token.parser;
+ var part = input.slice(start);
+
+ var match = _regex.exec(part);
+
+ var value = match[0];
+
+ _parser.call(time, value);
+
+ input = input.replace(value, '');
+ }
+ }
+
+ correctHours(time);
+ return time;
+ };
+}
+
+var parseFormattedInput = function parseFormattedInput(input, format, utc) {
+ try {
+ if (['x', 'X'].indexOf(format) > -1) return new Date((format === 'X' ? 1000 : 1) * input);
+ var parser = makeParser(format);
+
+ var _parser2 = parser(input),
+ year = _parser2.year,
+ month = _parser2.month,
+ day = _parser2.day,
+ hours = _parser2.hours,
+ minutes = _parser2.minutes,
+ seconds = _parser2.seconds,
+ milliseconds = _parser2.milliseconds,
+ zone = _parser2.zone;
+
+ var now = new Date();
+ var d = day || (!year && !month ? now.getDate() : 1);
+ var y = year || now.getFullYear();
+ var M = 0;
+
+ if (!(year && !month)) {
+ M = month > 0 ? month - 1 : now.getMonth();
+ }
+
+ var h = hours || 0;
+ var m = minutes || 0;
+ var s = seconds || 0;
+ var ms = milliseconds || 0;
+
+ if (zone) {
+ return new Date(Date.UTC(y, M, d, h, m, s, ms + zone.offset * 60 * 1000));
+ }
+
+ if (utc) {
+ return new Date(Date.UTC(y, M, d, h, m, s, ms));
+ }
+
+ return new Date(y, M, d, h, m, s, ms);
+ } catch (e) {
+ return new Date(''); // Invalid Date
+ }
+};
+
+export default (function (o, C, d) {
+ d.p.customParseFormat = true;
+
+ if (o && o.parseTwoDigitYear) {
+ parseTwoDigitYear = o.parseTwoDigitYear;
+ }
+
+ var proto = C.prototype;
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ var date = cfg.date,
+ utc = cfg.utc,
+ args = cfg.args;
+ this.$u = utc;
+ var format = args[1];
+
+ if (typeof format === 'string') {
+ var isStrictWithoutLocale = args[2] === true;
+ var isStrictWithLocale = args[3] === true;
+ var isStrict = isStrictWithoutLocale || isStrictWithLocale;
+ var pl = args[2];
+
+ if (isStrictWithLocale) {
+ pl = args[2];
+ }
+
+ locale = this.$locale();
+
+ if (!isStrictWithoutLocale && pl) {
+ locale = d.Ls[pl];
+ }
+
+ this.$d = parseFormattedInput(date, format, utc);
+ this.init();
+ if (pl && pl !== true) this.$L = this.locale(pl).$L; // use != to treat
+ // input number 1410715640579 and format string '1410715640579' equal
+ // eslint-disable-next-line eqeqeq
+
+ if (isStrict && date != this.format(format)) {
+ this.$d = new Date('');
+ } // reset global locale to make parallel unit test
+
+
+ locale = {};
+ } else if (format instanceof Array) {
+ var len = format.length;
+
+ for (var i = 1; i <= len; i += 1) {
+ args[1] = format[i - 1];
+ var result = d.apply(this, args);
+
+ if (result.isValid()) {
+ this.$d = result.$d;
+ this.$L = result.$L;
+ this.init();
+ break;
+ }
+
+ if (i === len) this.$d = new Date('');
+ }
+ } else {
+ oldParse.call(this, cfg);
+ }
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts b/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts
new file mode 100644
index 0000000..4b9601e
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ dayOfYear(): number
+ dayOfYear(value: number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/dayOfYear/index.js b/node_modules/dayjs/esm/plugin/dayOfYear/index.js
new file mode 100644
index 0000000..0cb1158
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/dayOfYear/index.js
@@ -0,0 +1,9 @@
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.dayOfYear = function (input) {
+ // d(this) is for badMutable
+ var dayOfYear = Math.round((d(this).startOf('day') - d(this).startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add(input - dayOfYear, 'day');
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/devHelper/index.d.ts b/node_modules/dayjs/esm/plugin/devHelper/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/devHelper/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/devHelper/index.js b/node_modules/dayjs/esm/plugin/devHelper/index.js
new file mode 100644
index 0000000..9e2af82
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/devHelper/index.js
@@ -0,0 +1,38 @@
+/* eslint-disable no-console */
+export default (function (o, c, d) {
+ /* istanbul ignore next line */
+ if (!process || process.env.NODE_ENV !== 'production') {
+ var proto = c.prototype;
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ var date = cfg.date;
+
+ if (typeof date === 'string' && date.length === 13) {
+ console.warn("To parse a Unix timestamp like " + date + ", you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds");
+ }
+
+ if (typeof date === 'number' && String(date).length === 4) {
+ console.warn("Guessing you may want to parse the Year " + date + ", you should pass it as a String " + date + ", not a Number. Otherwise, " + date + " will be treated as a Unix timestamp");
+ }
+
+ if (cfg.args.length >= 2 && !d.p.customParseFormat) {
+ console.warn("To parse a date-time string like " + date + " using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format");
+ }
+
+ return oldParse.bind(this)(cfg);
+ };
+
+ var oldLocale = d.locale;
+
+ d.locale = function (preset, object, isLocal) {
+ if (typeof object === 'undefined' && typeof preset === 'string') {
+ if (!d.Ls[preset]) {
+ console.warn("Guessing you may want to use locale " + preset + ", you have to load it before using it. https://day.js.org/docs/en/i18n/loading-into-nodejs");
+ }
+ }
+
+ return oldLocale(preset, object, isLocal);
+ };
+ }
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/duration/index.d.ts b/node_modules/dayjs/esm/plugin/duration/index.d.ts
new file mode 100644
index 0000000..dc974a5
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/duration/index.d.ts
@@ -0,0 +1,88 @@
+import { PluginFunc } from 'dayjs/esm'
+import { OpUnitType, UnitTypeLongPlural } from 'dayjs/esm';
+
+declare const plugin: PluginFunc
+export as namespace plugin;
+export = plugin
+
+declare namespace plugin {
+ /**
+ * @deprecated Please use more strict types
+ */
+ type DurationInputType = string | number | object
+ /**
+ * @deprecated Please use more strict types
+ */
+ type DurationAddType = number | object | Duration
+
+ type DurationUnitsObjectType = Partial<{
+ [unit in Exclude | "weeks"]: number
+ }>;
+ type DurationUnitType = Exclude
+ type CreateDurationType =
+ ((units: DurationUnitsObjectType) => Duration)
+ & ((time: number, unit?: DurationUnitType) => Duration)
+ & ((ISO_8601: string) => Duration)
+ type AddDurationType = CreateDurationType & ((duration: Duration) => Duration)
+
+ interface Duration {
+ new (input: string | number | object, unit?: string, locale?: string): Duration
+
+ clone(): Duration
+
+ humanize(withSuffix?: boolean): string
+
+ milliseconds(): number
+ asMilliseconds(): number
+
+ seconds(): number
+ asSeconds(): number
+
+ minutes(): number
+ asMinutes(): number
+
+ hours(): number
+ asHours(): number
+
+ days(): number
+ asDays(): number
+
+ weeks(): number
+ asWeeks(): number
+
+ months(): number
+ asMonths(): number
+
+ years(): number
+ asYears(): number
+
+ as(unit: DurationUnitType): number
+
+ get(unit: DurationUnitType): number
+
+ add: AddDurationType
+
+ subtract: AddDurationType
+
+ toJSON(): string
+
+ toISOString(): string
+
+ format(formatStr?: string): string
+
+ locale(locale: string): Duration
+ }
+}
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ add(duration: plugin.Duration): Dayjs
+ subtract(duration: plugin.Duration): Dayjs
+ }
+
+ /**
+ * @param time If unit is not present, time treated as number of milliseconds
+ */
+ export const duration: plugin.CreateDurationType;
+ export function isDuration(d: any): d is plugin.Duration
+}
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/duration/index.js b/node_modules/dayjs/esm/plugin/duration/index.js
new file mode 100644
index 0000000..43a6155
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/duration/index.js
@@ -0,0 +1,341 @@
+import { MILLISECONDS_A_DAY, MILLISECONDS_A_HOUR, MILLISECONDS_A_MINUTE, MILLISECONDS_A_SECOND, MILLISECONDS_A_WEEK, REGEX_FORMAT } from '../../constant';
+var MILLISECONDS_A_YEAR = MILLISECONDS_A_DAY * 365;
+var MILLISECONDS_A_MONTH = MILLISECONDS_A_DAY * 30;
+var durationRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+var unitToMS = {
+ years: MILLISECONDS_A_YEAR,
+ months: MILLISECONDS_A_MONTH,
+ days: MILLISECONDS_A_DAY,
+ hours: MILLISECONDS_A_HOUR,
+ minutes: MILLISECONDS_A_MINUTE,
+ seconds: MILLISECONDS_A_SECOND,
+ milliseconds: 1,
+ weeks: MILLISECONDS_A_WEEK
+};
+
+var isDuration = function isDuration(d) {
+ return d instanceof Duration;
+}; // eslint-disable-line no-use-before-define
+
+
+var $d;
+var $u;
+
+var wrapper = function wrapper(input, instance, unit) {
+ return new Duration(input, unit, instance.$l);
+}; // eslint-disable-line no-use-before-define
+
+
+var prettyUnit = function prettyUnit(unit) {
+ return $u.p(unit) + "s";
+};
+
+var isNegative = function isNegative(number) {
+ return number < 0;
+};
+
+var roundNumber = function roundNumber(number) {
+ return isNegative(number) ? Math.ceil(number) : Math.floor(number);
+};
+
+var absolute = function absolute(number) {
+ return Math.abs(number);
+};
+
+var getNumberUnitFormat = function getNumberUnitFormat(number, unit) {
+ if (!number) {
+ return {
+ negative: false,
+ format: ''
+ };
+ }
+
+ if (isNegative(number)) {
+ return {
+ negative: true,
+ format: "" + absolute(number) + unit
+ };
+ }
+
+ return {
+ negative: false,
+ format: "" + number + unit
+ };
+};
+
+var Duration = /*#__PURE__*/function () {
+ function Duration(input, unit, locale) {
+ var _this = this;
+
+ this.$d = {};
+ this.$l = locale;
+
+ if (input === undefined) {
+ this.$ms = 0;
+ this.parseFromMilliseconds();
+ }
+
+ if (unit) {
+ return wrapper(input * unitToMS[prettyUnit(unit)], this);
+ }
+
+ if (typeof input === 'number') {
+ this.$ms = input;
+ this.parseFromMilliseconds();
+ return this;
+ }
+
+ if (typeof input === 'object') {
+ Object.keys(input).forEach(function (k) {
+ _this.$d[prettyUnit(k)] = input[k];
+ });
+ this.calMilliseconds();
+ return this;
+ }
+
+ if (typeof input === 'string') {
+ var d = input.match(durationRegex);
+
+ if (d) {
+ var properties = d.slice(2);
+ var numberD = properties.map(function (value) {
+ return value != null ? Number(value) : 0;
+ });
+ this.$d.years = numberD[0];
+ this.$d.months = numberD[1];
+ this.$d.weeks = numberD[2];
+ this.$d.days = numberD[3];
+ this.$d.hours = numberD[4];
+ this.$d.minutes = numberD[5];
+ this.$d.seconds = numberD[6];
+ this.calMilliseconds();
+ return this;
+ }
+ }
+
+ return this;
+ }
+
+ var _proto = Duration.prototype;
+
+ _proto.calMilliseconds = function calMilliseconds() {
+ var _this2 = this;
+
+ this.$ms = Object.keys(this.$d).reduce(function (total, unit) {
+ return total + (_this2.$d[unit] || 0) * unitToMS[unit];
+ }, 0);
+ };
+
+ _proto.parseFromMilliseconds = function parseFromMilliseconds() {
+ var $ms = this.$ms;
+ this.$d.years = roundNumber($ms / MILLISECONDS_A_YEAR);
+ $ms %= MILLISECONDS_A_YEAR;
+ this.$d.months = roundNumber($ms / MILLISECONDS_A_MONTH);
+ $ms %= MILLISECONDS_A_MONTH;
+ this.$d.days = roundNumber($ms / MILLISECONDS_A_DAY);
+ $ms %= MILLISECONDS_A_DAY;
+ this.$d.hours = roundNumber($ms / MILLISECONDS_A_HOUR);
+ $ms %= MILLISECONDS_A_HOUR;
+ this.$d.minutes = roundNumber($ms / MILLISECONDS_A_MINUTE);
+ $ms %= MILLISECONDS_A_MINUTE;
+ this.$d.seconds = roundNumber($ms / MILLISECONDS_A_SECOND);
+ $ms %= MILLISECONDS_A_SECOND;
+ this.$d.milliseconds = $ms;
+ };
+
+ _proto.toISOString = function toISOString() {
+ var Y = getNumberUnitFormat(this.$d.years, 'Y');
+ var M = getNumberUnitFormat(this.$d.months, 'M');
+ var days = +this.$d.days || 0;
+
+ if (this.$d.weeks) {
+ days += this.$d.weeks * 7;
+ }
+
+ var D = getNumberUnitFormat(days, 'D');
+ var H = getNumberUnitFormat(this.$d.hours, 'H');
+ var m = getNumberUnitFormat(this.$d.minutes, 'M');
+ var seconds = this.$d.seconds || 0;
+
+ if (this.$d.milliseconds) {
+ seconds += this.$d.milliseconds / 1000;
+ }
+
+ var S = getNumberUnitFormat(seconds, 'S');
+ var negativeMode = Y.negative || M.negative || D.negative || H.negative || m.negative || S.negative;
+ var T = H.format || m.format || S.format ? 'T' : '';
+ var P = negativeMode ? '-' : '';
+ var result = P + "P" + Y.format + M.format + D.format + T + H.format + m.format + S.format;
+ return result === 'P' || result === '-P' ? 'P0D' : result;
+ };
+
+ _proto.toJSON = function toJSON() {
+ return this.toISOString();
+ };
+
+ _proto.format = function format(formatStr) {
+ var str = formatStr || 'YYYY-MM-DDTHH:mm:ss';
+ var matches = {
+ Y: this.$d.years,
+ YY: $u.s(this.$d.years, 2, '0'),
+ YYYY: $u.s(this.$d.years, 4, '0'),
+ M: this.$d.months,
+ MM: $u.s(this.$d.months, 2, '0'),
+ D: this.$d.days,
+ DD: $u.s(this.$d.days, 2, '0'),
+ H: this.$d.hours,
+ HH: $u.s(this.$d.hours, 2, '0'),
+ m: this.$d.minutes,
+ mm: $u.s(this.$d.minutes, 2, '0'),
+ s: this.$d.seconds,
+ ss: $u.s(this.$d.seconds, 2, '0'),
+ SSS: $u.s(this.$d.milliseconds, 3, '0')
+ };
+ return str.replace(REGEX_FORMAT, function (match, $1) {
+ return $1 || String(matches[match]);
+ });
+ };
+
+ _proto.as = function as(unit) {
+ return this.$ms / unitToMS[prettyUnit(unit)];
+ };
+
+ _proto.get = function get(unit) {
+ var base = this.$ms;
+ var pUnit = prettyUnit(unit);
+
+ if (pUnit === 'milliseconds') {
+ base %= 1000;
+ } else if (pUnit === 'weeks') {
+ base = roundNumber(base / unitToMS[pUnit]);
+ } else {
+ base = this.$d[pUnit];
+ }
+
+ return base === 0 ? 0 : base; // a === 0 will be true on both 0 and -0
+ };
+
+ _proto.add = function add(input, unit, isSubtract) {
+ var another;
+
+ if (unit) {
+ another = input * unitToMS[prettyUnit(unit)];
+ } else if (isDuration(input)) {
+ another = input.$ms;
+ } else {
+ another = wrapper(input, this).$ms;
+ }
+
+ return wrapper(this.$ms + another * (isSubtract ? -1 : 1), this);
+ };
+
+ _proto.subtract = function subtract(input, unit) {
+ return this.add(input, unit, true);
+ };
+
+ _proto.locale = function locale(l) {
+ var that = this.clone();
+ that.$l = l;
+ return that;
+ };
+
+ _proto.clone = function clone() {
+ return wrapper(this.$ms, this);
+ };
+
+ _proto.humanize = function humanize(withSuffix) {
+ return $d().add(this.$ms, 'ms').locale(this.$l).fromNow(!withSuffix);
+ };
+
+ _proto.milliseconds = function milliseconds() {
+ return this.get('milliseconds');
+ };
+
+ _proto.asMilliseconds = function asMilliseconds() {
+ return this.as('milliseconds');
+ };
+
+ _proto.seconds = function seconds() {
+ return this.get('seconds');
+ };
+
+ _proto.asSeconds = function asSeconds() {
+ return this.as('seconds');
+ };
+
+ _proto.minutes = function minutes() {
+ return this.get('minutes');
+ };
+
+ _proto.asMinutes = function asMinutes() {
+ return this.as('minutes');
+ };
+
+ _proto.hours = function hours() {
+ return this.get('hours');
+ };
+
+ _proto.asHours = function asHours() {
+ return this.as('hours');
+ };
+
+ _proto.days = function days() {
+ return this.get('days');
+ };
+
+ _proto.asDays = function asDays() {
+ return this.as('days');
+ };
+
+ _proto.weeks = function weeks() {
+ return this.get('weeks');
+ };
+
+ _proto.asWeeks = function asWeeks() {
+ return this.as('weeks');
+ };
+
+ _proto.months = function months() {
+ return this.get('months');
+ };
+
+ _proto.asMonths = function asMonths() {
+ return this.as('months');
+ };
+
+ _proto.years = function years() {
+ return this.get('years');
+ };
+
+ _proto.asYears = function asYears() {
+ return this.as('years');
+ };
+
+ return Duration;
+}();
+
+export default (function (option, Dayjs, dayjs) {
+ $d = dayjs;
+ $u = dayjs().$utils();
+
+ dayjs.duration = function (input, unit) {
+ var $l = dayjs.locale();
+ return wrapper(input, {
+ $l: $l
+ }, unit);
+ };
+
+ dayjs.isDuration = isDuration;
+ var oldAdd = Dayjs.prototype.add;
+ var oldSubtract = Dayjs.prototype.subtract;
+
+ Dayjs.prototype.add = function (value, unit) {
+ if (isDuration(value)) value = value.asMilliseconds();
+ return oldAdd.bind(this)(value, unit);
+ };
+
+ Dayjs.prototype.subtract = function (value, unit) {
+ if (isDuration(value)) value = value.asMilliseconds();
+ return oldSubtract.bind(this)(value, unit);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isBetween/index.d.ts b/node_modules/dayjs/esm/plugin/isBetween/index.d.ts
new file mode 100644
index 0000000..1c62711
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isBetween/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isBetween(a: ConfigType, b: ConfigType, c?: OpUnitType | null, d?: '()' | '[]' | '[)' | '(]'): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isBetween/index.js b/node_modules/dayjs/esm/plugin/isBetween/index.js
new file mode 100644
index 0000000..2182a89
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isBetween/index.js
@@ -0,0 +1,10 @@
+export default (function (o, c, d) {
+ c.prototype.isBetween = function (a, b, u, i) {
+ var dA = d(a);
+ var dB = d(b);
+ i = i || '()';
+ var dAi = i[0] === '(';
+ var dBi = i[1] === ')';
+ return (dAi ? this.isAfter(dA, u) : !this.isBefore(dA, u)) && (dBi ? this.isBefore(dB, u) : !this.isAfter(dB, u)) || (dAi ? this.isBefore(dA, u) : !this.isAfter(dA, u)) && (dBi ? this.isAfter(dB, u) : !this.isBefore(dB, u));
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts b/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts
new file mode 100644
index 0000000..627ec5a
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isLeapYear(): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isLeapYear/index.js b/node_modules/dayjs/esm/plugin/isLeapYear/index.js
new file mode 100644
index 0000000..bf1309d
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isLeapYear/index.js
@@ -0,0 +1,7 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.isLeapYear = function () {
+ return this.$y % 4 === 0 && this.$y % 100 !== 0 || this.$y % 400 === 0;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isMoment/index.d.ts b/node_modules/dayjs/esm/plugin/isMoment/index.d.ts
new file mode 100644
index 0000000..6e3a69f
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isMoment/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+
+ export function isMoment(input: any): boolean
+
+}
diff --git a/node_modules/dayjs/esm/plugin/isMoment/index.js b/node_modules/dayjs/esm/plugin/isMoment/index.js
new file mode 100644
index 0000000..48c8a89
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isMoment/index.js
@@ -0,0 +1,5 @@
+export default (function (o, c, f) {
+ f.isMoment = function (input) {
+ return f.isDayjs(input);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts b/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts
new file mode 100644
index 0000000..b4bc270
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isSameOrAfter(date: ConfigType, unit?: OpUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js b/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js
new file mode 100644
index 0000000..6a5c56f
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js
@@ -0,0 +1,5 @@
+export default (function (o, c) {
+ c.prototype.isSameOrAfter = function (that, units) {
+ return this.isSame(that, units) || this.isAfter(that, units);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts b/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts
new file mode 100644
index 0000000..c0a6c94
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isSameOrBefore(date: ConfigType, unit?: OpUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js b/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js
new file mode 100644
index 0000000..18d526a
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js
@@ -0,0 +1,5 @@
+export default (function (o, c) {
+ c.prototype.isSameOrBefore = function (that, units) {
+ return this.isSame(that, units) || this.isBefore(that, units);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isToday/index.d.ts b/node_modules/dayjs/esm/plugin/isToday/index.d.ts
new file mode 100644
index 0000000..8d55da8
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isToday/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isToday(): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isToday/index.js b/node_modules/dayjs/esm/plugin/isToday/index.js
new file mode 100644
index 0000000..93b36c8
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isToday/index.js
@@ -0,0 +1,9 @@
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.isToday = function () {
+ var comparisonTemplate = 'YYYY-MM-DD';
+ var now = d();
+ return this.format(comparisonTemplate) === now.format(comparisonTemplate);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts b/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts
new file mode 100644
index 0000000..7652237
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isTomorrow(): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isTomorrow/index.js b/node_modules/dayjs/esm/plugin/isTomorrow/index.js
new file mode 100644
index 0000000..8cc7238
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isTomorrow/index.js
@@ -0,0 +1,9 @@
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.isTomorrow = function () {
+ var comparisonTemplate = 'YYYY-MM-DD';
+ var tomorrow = d().add(1, 'day');
+ return this.format(comparisonTemplate) === tomorrow.format(comparisonTemplate);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts b/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts
new file mode 100644
index 0000000..f4370dc
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isYesterday(): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isYesterday/index.js b/node_modules/dayjs/esm/plugin/isYesterday/index.js
new file mode 100644
index 0000000..fa55373
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isYesterday/index.js
@@ -0,0 +1,9 @@
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.isYesterday = function () {
+ var comparisonTemplate = 'YYYY-MM-DD';
+ var yesterday = d().subtract(1, 'day');
+ return this.format(comparisonTemplate) === yesterday.format(comparisonTemplate);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts b/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts
new file mode 100644
index 0000000..e3f83cf
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts
@@ -0,0 +1,27 @@
+import { PluginFunc, OpUnitType, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+type ISOUnitType = OpUnitType | 'isoWeek';
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isoWeekYear(): number
+ isoWeek(): number
+ isoWeek(value: number): Dayjs
+
+ isoWeekday(): number
+ isoWeekday(value: number): Dayjs
+
+ startOf(unit: ISOUnitType): Dayjs
+
+ endOf(unit: ISOUnitType): Dayjs
+
+ isSame(date: ConfigType, unit?: ISOUnitType): boolean
+
+ isBefore(date: ConfigType, unit?: ISOUnitType): boolean
+
+ isAfter(date: ConfigType, unit?: ISOUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isoWeek/index.js b/node_modules/dayjs/esm/plugin/isoWeek/index.js
new file mode 100644
index 0000000..289ea7c
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isoWeek/index.js
@@ -0,0 +1,57 @@
+import { D, W, Y } from '../../constant';
+var isoWeekPrettyUnit = 'isoweek';
+export default (function (o, c, d) {
+ var getYearFirstThursday = function getYearFirstThursday(year, isUtc) {
+ var yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y);
+ var addDiffDays = 4 - yearFirstDay.isoWeekday();
+
+ if (yearFirstDay.isoWeekday() > 4) {
+ addDiffDays += 7;
+ }
+
+ return yearFirstDay.add(addDiffDays, D);
+ };
+
+ var getCurrentWeekThursday = function getCurrentWeekThursday(ins) {
+ return ins.add(4 - ins.isoWeekday(), D);
+ };
+
+ var proto = c.prototype;
+
+ proto.isoWeekYear = function () {
+ var nowWeekThursday = getCurrentWeekThursday(this);
+ return nowWeekThursday.year();
+ };
+
+ proto.isoWeek = function (week) {
+ if (!this.$utils().u(week)) {
+ return this.add((week - this.isoWeek()) * 7, D);
+ }
+
+ var nowWeekThursday = getCurrentWeekThursday(this);
+ var diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u);
+ return nowWeekThursday.diff(diffWeekThursday, W) + 1;
+ };
+
+ proto.isoWeekday = function (week) {
+ if (!this.$utils().u(week)) {
+ return this.day(this.day() % 7 ? week : week - 7);
+ }
+
+ return this.day() || 7;
+ };
+
+ var oldStartOf = proto.startOf;
+
+ proto.startOf = function (units, startOf) {
+ var utils = this.$utils();
+ var isStartOf = !utils.u(startOf) ? startOf : true;
+ var unit = utils.p(units);
+
+ if (unit === isoWeekPrettyUnit) {
+ return isStartOf ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day') : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day');
+ }
+
+ return oldStartOf.bind(this)(units, startOf);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts b/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts
new file mode 100644
index 0000000..986360f
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isoWeeksInYear(): number
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js b/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js
new file mode 100644
index 0000000..7161894
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js
@@ -0,0 +1,15 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.isoWeeksInYear = function () {
+ var isLeapYear = this.isLeapYear();
+ var last = this.endOf('y');
+ var day = last.day();
+
+ if (day === 4 || isLeapYear && day === 5) {
+ return 53;
+ }
+
+ return 52;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/localeData/index.d.ts b/node_modules/dayjs/esm/plugin/localeData/index.d.ts
new file mode 100644
index 0000000..9f8762e
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/localeData/index.d.ts
@@ -0,0 +1,44 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ type WeekdayNames = [string, string, string, string, string, string, string];
+ type MonthNames = [string, string, string, string, string, string, string, string, string, string, string, string];
+
+ interface InstanceLocaleDataReturn {
+ firstDayOfWeek(): number;
+ weekdays(instance?: Dayjs): WeekdayNames;
+ weekdaysShort(instance?: Dayjs): WeekdayNames;
+ weekdaysMin(instance?: Dayjs): WeekdayNames;
+ months(instance?: Dayjs): MonthNames;
+ monthsShort(instance?: Dayjs): MonthNames;
+ longDateFormat(format: string): string;
+ meridiem(hour?: number, minute?: number, isLower?: boolean): string;
+ ordinal(n: number): string
+ }
+
+ interface GlobalLocaleDataReturn {
+ firstDayOfWeek(): number;
+ weekdays(): WeekdayNames;
+ weekdaysShort(): WeekdayNames;
+ weekdaysMin(): WeekdayNames;
+ months(): MonthNames;
+ monthsShort(): MonthNames;
+ longDateFormat(format: string): string;
+ meridiem(hour?: number, minute?: number, isLower?: boolean): string;
+ ordinal(n: number): string
+ }
+
+ interface Dayjs {
+ localeData(): InstanceLocaleDataReturn;
+ }
+
+ export function weekdays(localOrder?: boolean): WeekdayNames;
+ export function weekdaysShort(localOrder?: boolean): WeekdayNames;
+ export function weekdaysMin(localOrder?: boolean): WeekdayNames;
+ export function monthsShort(): MonthNames;
+ export function months(): MonthNames;
+ export function localeData(): GlobalLocaleDataReturn;
+}
diff --git a/node_modules/dayjs/esm/plugin/localeData/index.js b/node_modules/dayjs/esm/plugin/localeData/index.js
new file mode 100644
index 0000000..c48d92c
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/localeData/index.js
@@ -0,0 +1,114 @@
+import { t } from '../localizedFormat/utils';
+export default (function (o, c, dayjs) {
+ // locale needed later
+ var proto = c.prototype;
+
+ var getLocalePart = function getLocalePart(part) {
+ return part && (part.indexOf ? part : part.s);
+ };
+
+ var getShort = function getShort(ins, target, full, num, localeOrder) {
+ var locale = ins.name ? ins : ins.$locale();
+ var targetLocale = getLocalePart(locale[target]);
+ var fullLocale = getLocalePart(locale[full]);
+ var result = targetLocale || fullLocale.map(function (f) {
+ return f.slice(0, num);
+ });
+ if (!localeOrder) return result;
+ var weekStart = locale.weekStart;
+ return result.map(function (_, index) {
+ return result[(index + (weekStart || 0)) % 7];
+ });
+ };
+
+ var getDayjsLocaleObject = function getDayjsLocaleObject() {
+ return dayjs.Ls[dayjs.locale()];
+ };
+
+ var getLongDateFormat = function getLongDateFormat(l, format) {
+ return l.formats[format] || t(l.formats[format.toUpperCase()]);
+ };
+
+ var localeData = function localeData() {
+ var _this = this;
+
+ return {
+ months: function months(instance) {
+ return instance ? instance.format('MMMM') : getShort(_this, 'months');
+ },
+ monthsShort: function monthsShort(instance) {
+ return instance ? instance.format('MMM') : getShort(_this, 'monthsShort', 'months', 3);
+ },
+ firstDayOfWeek: function firstDayOfWeek() {
+ return _this.$locale().weekStart || 0;
+ },
+ weekdays: function weekdays(instance) {
+ return instance ? instance.format('dddd') : getShort(_this, 'weekdays');
+ },
+ weekdaysMin: function weekdaysMin(instance) {
+ return instance ? instance.format('dd') : getShort(_this, 'weekdaysMin', 'weekdays', 2);
+ },
+ weekdaysShort: function weekdaysShort(instance) {
+ return instance ? instance.format('ddd') : getShort(_this, 'weekdaysShort', 'weekdays', 3);
+ },
+ longDateFormat: function longDateFormat(format) {
+ return getLongDateFormat(_this.$locale(), format);
+ },
+ meridiem: this.$locale().meridiem,
+ ordinal: this.$locale().ordinal
+ };
+ };
+
+ proto.localeData = function () {
+ return localeData.bind(this)();
+ };
+
+ dayjs.localeData = function () {
+ var localeObject = getDayjsLocaleObject();
+ return {
+ firstDayOfWeek: function firstDayOfWeek() {
+ return localeObject.weekStart || 0;
+ },
+ weekdays: function weekdays() {
+ return dayjs.weekdays();
+ },
+ weekdaysShort: function weekdaysShort() {
+ return dayjs.weekdaysShort();
+ },
+ weekdaysMin: function weekdaysMin() {
+ return dayjs.weekdaysMin();
+ },
+ months: function months() {
+ return dayjs.months();
+ },
+ monthsShort: function monthsShort() {
+ return dayjs.monthsShort();
+ },
+ longDateFormat: function longDateFormat(format) {
+ return getLongDateFormat(localeObject, format);
+ },
+ meridiem: localeObject.meridiem,
+ ordinal: localeObject.ordinal
+ };
+ };
+
+ dayjs.months = function () {
+ return getShort(getDayjsLocaleObject(), 'months');
+ };
+
+ dayjs.monthsShort = function () {
+ return getShort(getDayjsLocaleObject(), 'monthsShort', 'months', 3);
+ };
+
+ dayjs.weekdays = function (localeOrder) {
+ return getShort(getDayjsLocaleObject(), 'weekdays', null, null, localeOrder);
+ };
+
+ dayjs.weekdaysShort = function (localeOrder) {
+ return getShort(getDayjsLocaleObject(), 'weekdaysShort', 'weekdays', 3, localeOrder);
+ };
+
+ dayjs.weekdaysMin = function (localeOrder) {
+ return getShort(getDayjsLocaleObject(), 'weekdaysMin', 'weekdays', 2, localeOrder);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts b/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/localizedFormat/index.js b/node_modules/dayjs/esm/plugin/localizedFormat/index.js
new file mode 100644
index 0000000..9defb1f
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/localizedFormat/index.js
@@ -0,0 +1,20 @@
+import { FORMAT_DEFAULT } from '../../constant';
+import { u, englishFormats } from './utils';
+export default (function (o, c, d) {
+ var proto = c.prototype;
+ var oldFormat = proto.format;
+ d.en.formats = englishFormats;
+
+ proto.format = function (formatStr) {
+ if (formatStr === void 0) {
+ formatStr = FORMAT_DEFAULT;
+ }
+
+ var _this$$locale = this.$locale(),
+ _this$$locale$formats = _this$$locale.formats,
+ formats = _this$$locale$formats === void 0 ? {} : _this$$locale$formats;
+
+ var result = u(formatStr, formats);
+ return oldFormat.call(this, result);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/localizedFormat/utils.js b/node_modules/dayjs/esm/plugin/localizedFormat/utils.js
new file mode 100644
index 0000000..1f48eff
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/localizedFormat/utils.js
@@ -0,0 +1,20 @@
+// eslint-disable-next-line import/prefer-default-export
+export var t = function t(format) {
+ return format.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function (_, a, b) {
+ return a || b.slice(1);
+ });
+};
+export var englishFormats = {
+ LTS: 'h:mm:ss A',
+ LT: 'h:mm A',
+ L: 'MM/DD/YYYY',
+ LL: 'MMMM D, YYYY',
+ LLL: 'MMMM D, YYYY h:mm A',
+ LLLL: 'dddd, MMMM D, YYYY h:mm A'
+};
+export var u = function u(formatStr, formats) {
+ return formatStr.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (_, a, b) {
+ var B = b && b.toUpperCase();
+ return a || formats[b] || englishFormats[b] || t(formats[B]);
+ });
+};
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/minMax/index.d.ts b/node_modules/dayjs/esm/plugin/minMax/index.d.ts
new file mode 100644
index 0000000..b2b2712
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/minMax/index.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ export function max(dayjs: Dayjs[]): Dayjs
+ export function max(...dayjs: Dayjs[]): Dayjs
+ export function min(dayjs: Dayjs[]): Dayjs
+ export function min(...dayjs: Dayjs[]): Dayjs
+}
diff --git a/node_modules/dayjs/esm/plugin/minMax/index.js b/node_modules/dayjs/esm/plugin/minMax/index.js
new file mode 100644
index 0000000..750bbbf
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/minMax/index.js
@@ -0,0 +1,36 @@
+export default (function (o, c, d) {
+ var sortBy = function sortBy(method, dates) {
+ if (!dates || !dates.length || !dates[0] || dates.length === 1 && !dates[0].length) {
+ return null;
+ }
+
+ if (dates.length === 1 && dates[0].length > 0) {
+ var _dates = dates;
+ dates = _dates[0];
+ }
+
+ var result;
+ var _dates2 = dates;
+ result = _dates2[0];
+
+ for (var i = 1; i < dates.length; i += 1) {
+ if (!dates[i].isValid() || dates[i][method](result)) {
+ result = dates[i];
+ }
+ }
+
+ return result;
+ };
+
+ d.max = function () {
+ var args = [].slice.call(arguments, 0); // eslint-disable-line prefer-rest-params
+
+ return sortBy('isAfter', args);
+ };
+
+ d.min = function () {
+ var args = [].slice.call(arguments, 0); // eslint-disable-line prefer-rest-params
+
+ return sortBy('isBefore', args);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts b/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts
new file mode 100644
index 0000000..03b8b7c
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts
@@ -0,0 +1,48 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ set(argument: object): Dayjs
+ add(argument: object): Dayjs
+ subtract(argument: object): Dayjs
+ }
+
+ interface ConfigTypeMap {
+ objectSupport: {
+ years?: number | string;
+ year?: number | string;
+ y?: number | string;
+
+ months?: number | string;
+ month?: number | string;
+ M?: number | string;
+
+ days?: number | string;
+ day?: number | string;
+ d?: number | string;
+
+ dates?: number | string;
+ date?: number | string;
+ D?: number | string;
+
+ hours?: number | string;
+ hour?: number | string;
+ h?: number | string;
+
+ minutes?: number | string;
+ minute?: number | string;
+ m?: number | string;
+
+ seconds?: number | string;
+ second?: number | string;
+ s?: number | string;
+
+ milliseconds?: number | string;
+ millisecond?: number | string;
+ ms?: number | string;
+ }
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/objectSupport/index.js b/node_modules/dayjs/esm/plugin/objectSupport/index.js
new file mode 100644
index 0000000..9f81c74
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/objectSupport/index.js
@@ -0,0 +1,97 @@
+export default (function (o, c, dayjs) {
+ var proto = c.prototype;
+
+ var isObject = function isObject(obj) {
+ return !(obj instanceof Date) && !(obj instanceof Array) && !proto.$utils().u(obj) && obj.constructor.name === 'Object';
+ };
+
+ var prettyUnit = function prettyUnit(u) {
+ var unit = proto.$utils().p(u);
+ return unit === 'date' ? 'day' : unit;
+ };
+
+ var parseDate = function parseDate(cfg) {
+ var date = cfg.date,
+ utc = cfg.utc;
+ var $d = {};
+
+ if (isObject(date)) {
+ if (!Object.keys(date).length) {
+ return new Date();
+ }
+
+ var now = utc ? dayjs.utc() : dayjs();
+ Object.keys(date).forEach(function (k) {
+ $d[prettyUnit(k)] = date[k];
+ });
+ var d = $d.day || (!$d.year && !($d.month >= 0) ? now.date() : 1);
+ var y = $d.year || now.year();
+ var M = $d.month >= 0 ? $d.month : !$d.year && !$d.day ? now.month() : 0; // eslint-disable-line no-nested-ternary,max-len
+
+ var h = $d.hour || 0;
+ var m = $d.minute || 0;
+ var s = $d.second || 0;
+ var ms = $d.millisecond || 0;
+
+ if (utc) {
+ return new Date(Date.UTC(y, M, d, h, m, s, ms));
+ }
+
+ return new Date(y, M, d, h, m, s, ms);
+ }
+
+ return date;
+ };
+
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ cfg.date = parseDate.bind(this)(cfg);
+ oldParse.bind(this)(cfg);
+ };
+
+ var oldSet = proto.set;
+ var oldAdd = proto.add;
+ var oldSubtract = proto.subtract;
+
+ var callObject = function callObject(call, argument, string, offset) {
+ if (offset === void 0) {
+ offset = 1;
+ }
+
+ var keys = Object.keys(argument);
+ var chain = this;
+ keys.forEach(function (key) {
+ chain = call.bind(chain)(argument[key] * offset, key);
+ });
+ return chain;
+ };
+
+ proto.set = function (unit, value) {
+ value = value === undefined ? unit : value;
+
+ if (unit.constructor.name === 'Object') {
+ return callObject.bind(this)(function (i, s) {
+ return oldSet.bind(this)(s, i);
+ }, value, unit);
+ }
+
+ return oldSet.bind(this)(unit, value);
+ };
+
+ proto.add = function (value, unit) {
+ if (value.constructor.name === 'Object') {
+ return callObject.bind(this)(oldAdd, value, unit);
+ }
+
+ return oldAdd.bind(this)(value, unit);
+ };
+
+ proto.subtract = function (value, unit) {
+ if (value.constructor.name === 'Object') {
+ return callObject.bind(this)(oldAdd, value, unit, -1);
+ }
+
+ return oldSubtract.bind(this)(value, unit);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts b/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts
new file mode 100644
index 0000000..7ef7167
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts
@@ -0,0 +1,44 @@
+import { PluginFunc, UnitType, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ years(): number
+
+ years(value: number): Dayjs
+
+ months(): number
+
+ months(value: number): Dayjs
+
+ dates(): number
+
+ dates(value: number): Dayjs
+
+ weeks(): number
+
+ weeks(value: number): Dayjs
+
+ days(): number
+
+ days(value: number): Dayjs
+
+ hours(): number
+
+ hours(value: number): Dayjs
+
+ minutes(): number
+
+ minutes(value: number): Dayjs
+
+ seconds(): number
+
+ seconds(value: number): Dayjs
+
+ milliseconds(): number
+
+ milliseconds(value: number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/pluralGetSet/index.js b/node_modules/dayjs/esm/plugin/pluralGetSet/index.js
new file mode 100644
index 0000000..d8214d6
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/pluralGetSet/index.js
@@ -0,0 +1,7 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+ var pluralAliases = ['milliseconds', 'seconds', 'minutes', 'hours', 'days', 'weeks', 'isoWeeks', 'months', 'quarters', 'years', 'dates'];
+ pluralAliases.forEach(function (alias) {
+ proto[alias] = proto[alias.replace(/s$/, '')];
+ });
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts b/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js b/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js
new file mode 100644
index 0000000..7654ccb
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js
@@ -0,0 +1,40 @@
+// Plugin template from https://day.js.org/docs/en/plugin/plugin
+export default (function (option, dayjsClass) {
+ var oldParse = dayjsClass.prototype.parse;
+
+ dayjsClass.prototype.parse = function (cfg) {
+ if (typeof cfg.date === 'string') {
+ var locale = this.$locale();
+ cfg.date = locale && locale.preparse ? locale.preparse(cfg.date) : cfg.date;
+ } // original parse result
+
+
+ return oldParse.bind(this)(cfg);
+ }; // // overriding existing API
+ // // e.g. extend dayjs().format()
+
+
+ var oldFormat = dayjsClass.prototype.format;
+
+ dayjsClass.prototype.format = function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ // original format result
+ var result = oldFormat.call.apply(oldFormat, [this].concat(args)); // return modified result
+
+ var locale = this.$locale();
+ return locale && locale.postformat ? locale.postformat(result) : result;
+ };
+
+ var oldFromTo = dayjsClass.prototype.fromToBase;
+
+ if (oldFromTo) {
+ dayjsClass.prototype.fromToBase = function (input, withoutSuffix, instance, isFrom) {
+ var locale = this.$locale() || instance.$locale(); // original format result
+
+ return oldFromTo.call(this, input, withoutSuffix, instance, isFrom, locale && locale.postformat);
+ };
+ }
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts b/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts
new file mode 100644
index 0000000..c75dcfc
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts
@@ -0,0 +1,26 @@
+import { PluginFunc, ConfigType, QUnitType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ quarter(): number
+
+ quarter(quarter: number): Dayjs
+
+ add(value: number, unit: QUnitType): Dayjs
+
+ subtract(value: number, unit: QUnitType): Dayjs
+
+ startOf(unit: QUnitType | OpUnitType): Dayjs
+
+ endOf(unit: QUnitType | OpUnitType): Dayjs
+
+ isSame(date: ConfigType, unit?: QUnitType): boolean
+
+ isBefore(date: ConfigType, unit?: QUnitType): boolean
+
+ isAfter(date: ConfigType, unit?: QUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/quarterOfYear/index.js b/node_modules/dayjs/esm/plugin/quarterOfYear/index.js
new file mode 100644
index 0000000..e376889
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/quarterOfYear/index.js
@@ -0,0 +1,41 @@
+import { Q, M, D } from '../../constant';
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.quarter = function (quarter) {
+ if (!this.$utils().u(quarter)) {
+ return this.month(this.month() % 3 + (quarter - 1) * 3);
+ }
+
+ return Math.ceil((this.month() + 1) / 3);
+ };
+
+ var oldAdd = proto.add;
+
+ proto.add = function (number, units) {
+ number = Number(number); // eslint-disable-line no-param-reassign
+
+ var unit = this.$utils().p(units);
+
+ if (unit === Q) {
+ return this.add(number * 3, M);
+ }
+
+ return oldAdd.bind(this)(number, units);
+ };
+
+ var oldStartOf = proto.startOf;
+
+ proto.startOf = function (units, startOf) {
+ var utils = this.$utils();
+ var isStartOf = !utils.u(startOf) ? startOf : true;
+ var unit = utils.p(units);
+
+ if (unit === Q) {
+ var quarter = this.quarter() - 1;
+ return isStartOf ? this.month(quarter * 3).startOf(M).startOf(D) : this.month(quarter * 3 + 2).endOf(M).endOf(D);
+ }
+
+ return oldStartOf.bind(this)(units, startOf);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts b/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts
new file mode 100644
index 0000000..e1b17cf
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts
@@ -0,0 +1,24 @@
+import { PluginFunc, ConfigType } from 'dayjs/esm'
+
+declare interface RelativeTimeThreshold {
+ l: string
+ r?: number
+ d?: string
+}
+
+declare interface RelativeTimeOptions {
+ rounding?: (num: number) => number
+ thresholds?: RelativeTimeThreshold[]
+}
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ fromNow(withoutSuffix?: boolean): string
+ from(compared: ConfigType, withoutSuffix?: boolean): string
+ toNow(withoutSuffix?: boolean): string
+ to(compared: ConfigType, withoutSuffix?: boolean): string
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/relativeTime/index.js b/node_modules/dayjs/esm/plugin/relativeTime/index.js
new file mode 100644
index 0000000..88fdbbe
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/relativeTime/index.js
@@ -0,0 +1,130 @@
+import * as C from '../../constant';
+export default (function (o, c, d) {
+ o = o || {};
+ var proto = c.prototype;
+ var relObj = {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ };
+ d.en.relativeTime = relObj;
+
+ proto.fromToBase = function (input, withoutSuffix, instance, isFrom, postFormat) {
+ var loc = instance.$locale().relativeTime || relObj;
+ var T = o.thresholds || [{
+ l: 's',
+ r: 44,
+ d: C.S
+ }, {
+ l: 'm',
+ r: 89
+ }, {
+ l: 'mm',
+ r: 44,
+ d: C.MIN
+ }, {
+ l: 'h',
+ r: 89
+ }, {
+ l: 'hh',
+ r: 21,
+ d: C.H
+ }, {
+ l: 'd',
+ r: 35
+ }, {
+ l: 'dd',
+ r: 25,
+ d: C.D
+ }, {
+ l: 'M',
+ r: 45
+ }, {
+ l: 'MM',
+ r: 10,
+ d: C.M
+ }, {
+ l: 'y',
+ r: 17
+ }, {
+ l: 'yy',
+ d: C.Y
+ }];
+ var Tl = T.length;
+ var result;
+ var out;
+ var isFuture;
+
+ for (var i = 0; i < Tl; i += 1) {
+ var t = T[i];
+
+ if (t.d) {
+ result = isFrom ? d(input).diff(instance, t.d, true) : instance.diff(input, t.d, true);
+ }
+
+ var abs = (o.rounding || Math.round)(Math.abs(result));
+ isFuture = result > 0;
+
+ if (abs <= t.r || !t.r) {
+ if (abs <= 1 && i > 0) t = T[i - 1]; // 1 minutes -> a minute, 0 seconds -> 0 second
+
+ var format = loc[t.l];
+
+ if (postFormat) {
+ abs = postFormat("" + abs);
+ }
+
+ if (typeof format === 'string') {
+ out = format.replace('%d', abs);
+ } else {
+ out = format(abs, withoutSuffix, t.l, isFuture);
+ }
+
+ break;
+ }
+ }
+
+ if (withoutSuffix) return out;
+ var pastOrFuture = isFuture ? loc.future : loc.past;
+
+ if (typeof pastOrFuture === 'function') {
+ return pastOrFuture(out);
+ }
+
+ return pastOrFuture.replace('%s', out);
+ };
+
+ function fromTo(input, withoutSuffix, instance, isFrom) {
+ return proto.fromToBase(input, withoutSuffix, instance, isFrom);
+ }
+
+ proto.to = function (input, withoutSuffix) {
+ return fromTo(input, withoutSuffix, this, true);
+ };
+
+ proto.from = function (input, withoutSuffix) {
+ return fromTo(input, withoutSuffix, this);
+ };
+
+ var makeNow = function makeNow(thisDay) {
+ return thisDay.$u ? d.utc() : d();
+ };
+
+ proto.toNow = function (withoutSuffix) {
+ return this.to(makeNow(this), withoutSuffix);
+ };
+
+ proto.fromNow = function (withoutSuffix) {
+ return this.from(makeNow(this), withoutSuffix);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/timezone/index.d.ts b/node_modules/dayjs/esm/plugin/timezone/index.d.ts
new file mode 100644
index 0000000..8d90359
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/timezone/index.d.ts
@@ -0,0 +1,20 @@
+import { PluginFunc, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ tz(timezone?: string, keepLocalTime?: boolean): Dayjs
+ offsetName(type?: 'short' | 'long'): string | undefined
+ }
+
+ interface DayjsTimezone {
+ (date: ConfigType, timezone?: string): Dayjs
+ (date: ConfigType, format: string, timezone?: string): Dayjs
+ guess(): string
+ setDefault(timezone?: string): void
+ }
+
+ const tz: DayjsTimezone
+}
diff --git a/node_modules/dayjs/esm/plugin/timezone/index.js b/node_modules/dayjs/esm/plugin/timezone/index.js
new file mode 100644
index 0000000..ca76720
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/timezone/index.js
@@ -0,0 +1,185 @@
+import { MIN, MS } from '../../constant';
+var typeToPos = {
+ year: 0,
+ month: 1,
+ day: 2,
+ hour: 3,
+ minute: 4,
+ second: 5
+}; // Cache time-zone lookups from Intl.DateTimeFormat,
+// as it is a *very* slow method.
+
+var dtfCache = {};
+
+var getDateTimeFormat = function getDateTimeFormat(timezone, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var timeZoneName = options.timeZoneName || 'short';
+ var key = timezone + "|" + timeZoneName;
+ var dtf = dtfCache[key];
+
+ if (!dtf) {
+ dtf = new Intl.DateTimeFormat('en-US', {
+ hour12: false,
+ timeZone: timezone,
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit',
+ timeZoneName: timeZoneName
+ });
+ dtfCache[key] = dtf;
+ }
+
+ return dtf;
+};
+
+export default (function (o, c, d) {
+ var defaultTimezone;
+
+ var makeFormatParts = function makeFormatParts(timestamp, timezone, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var date = new Date(timestamp);
+ var dtf = getDateTimeFormat(timezone, options);
+ return dtf.formatToParts(date);
+ };
+
+ var tzOffset = function tzOffset(timestamp, timezone) {
+ var formatResult = makeFormatParts(timestamp, timezone);
+ var filled = [];
+
+ for (var i = 0; i < formatResult.length; i += 1) {
+ var _formatResult$i = formatResult[i],
+ type = _formatResult$i.type,
+ value = _formatResult$i.value;
+ var pos = typeToPos[type];
+
+ if (pos >= 0) {
+ filled[pos] = parseInt(value, 10);
+ }
+ }
+
+ var hour = filled[3]; // Workaround for the same behavior in different node version
+ // https://github.com/nodejs/node/issues/33027
+
+ /* istanbul ignore next */
+
+ var fixedHour = hour === 24 ? 0 : hour;
+ var utcString = filled[0] + "-" + filled[1] + "-" + filled[2] + " " + fixedHour + ":" + filled[4] + ":" + filled[5] + ":000";
+ var utcTs = d.utc(utcString).valueOf();
+ var asTS = +timestamp;
+ var over = asTS % 1000;
+ asTS -= over;
+ return (utcTs - asTS) / (60 * 1000);
+ }; // find the right offset a given local time. The o input is our guess, which determines which
+ // offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)
+ // https://github.com/moment/luxon/blob/master/src/datetime.js#L76
+
+
+ var fixOffset = function fixOffset(localTS, o0, tz) {
+ // Our UTC time is just a guess because our offset is just a guess
+ var utcGuess = localTS - o0 * 60 * 1000; // Test whether the zone matches the offset for this ts
+
+ var o2 = tzOffset(utcGuess, tz); // If so, offset didn't change and we're done
+
+ if (o0 === o2) {
+ return [utcGuess, o0];
+ } // If not, change the ts by the difference in the offset
+
+
+ utcGuess -= (o2 - o0) * 60 * 1000; // If that gives us the local time we want, we're done
+
+ var o3 = tzOffset(utcGuess, tz);
+
+ if (o2 === o3) {
+ return [utcGuess, o2];
+ } // If it's different, we're in a hole time.
+ // The offset has changed, but the we don't adjust the time
+
+
+ return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];
+ };
+
+ var proto = c.prototype;
+
+ proto.tz = function (timezone, keepLocalTime) {
+ if (timezone === void 0) {
+ timezone = defaultTimezone;
+ }
+
+ var oldOffset = this.utcOffset();
+ var date = this.toDate();
+ var target = date.toLocaleString('en-US', {
+ timeZone: timezone
+ });
+ var diff = Math.round((date - new Date(target)) / 1000 / 60);
+ var ins = d(target).$set(MS, this.$ms).utcOffset(-Math.round(date.getTimezoneOffset() / 15) * 15 - diff, true);
+
+ if (keepLocalTime) {
+ var newOffset = ins.utcOffset();
+ ins = ins.add(oldOffset - newOffset, MIN);
+ }
+
+ ins.$x.$timezone = timezone;
+ return ins;
+ };
+
+ proto.offsetName = function (type) {
+ // type: short(default) / long
+ var zone = this.$x.$timezone || d.tz.guess();
+ var result = makeFormatParts(this.valueOf(), zone, {
+ timeZoneName: type
+ }).find(function (m) {
+ return m.type.toLowerCase() === 'timezonename';
+ });
+ return result && result.value;
+ };
+
+ var oldStartOf = proto.startOf;
+
+ proto.startOf = function (units, startOf) {
+ if (!this.$x || !this.$x.$timezone) {
+ return oldStartOf.call(this, units, startOf);
+ }
+
+ var withoutTz = d(this.format('YYYY-MM-DD HH:mm:ss:SSS'));
+ var startOfWithoutTz = oldStartOf.call(withoutTz, units, startOf);
+ return startOfWithoutTz.tz(this.$x.$timezone, true);
+ };
+
+ d.tz = function (input, arg1, arg2) {
+ var parseFormat = arg2 && arg1;
+ var timezone = arg2 || arg1 || defaultTimezone;
+ var previousOffset = tzOffset(+d(), timezone);
+
+ if (typeof input !== 'string') {
+ // timestamp number || js Date || Day.js
+ return d(input).tz(timezone);
+ }
+
+ var localTs = d.utc(input, parseFormat).valueOf();
+
+ var _fixOffset = fixOffset(localTs, previousOffset, timezone),
+ targetTs = _fixOffset[0],
+ targetOffset = _fixOffset[1];
+
+ var ins = d(targetTs).utcOffset(targetOffset);
+ ins.$x.$timezone = timezone;
+ return ins;
+ };
+
+ d.tz.guess = function () {
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
+ };
+
+ d.tz.setDefault = function (timezone) {
+ defaultTimezone = timezone;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/toArray/index.d.ts b/node_modules/dayjs/esm/plugin/toArray/index.d.ts
new file mode 100644
index 0000000..5033831
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/toArray/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ toArray(): number[]
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/toArray/index.js b/node_modules/dayjs/esm/plugin/toArray/index.js
new file mode 100644
index 0000000..2b795f4
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/toArray/index.js
@@ -0,0 +1,7 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.toArray = function () {
+ return [this.$y, this.$M, this.$D, this.$H, this.$m, this.$s, this.$ms];
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/toObject/index.d.ts b/node_modules/dayjs/esm/plugin/toObject/index.d.ts
new file mode 100644
index 0000000..ad21520
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/toObject/index.d.ts
@@ -0,0 +1,20 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+interface DayjsObject {
+ years: number
+ months: number
+ date: number
+ hours: number
+ minutes: number
+ seconds: number
+ milliseconds: number
+}
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ toObject(): DayjsObject
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/toObject/index.js b/node_modules/dayjs/esm/plugin/toObject/index.js
new file mode 100644
index 0000000..e35d93f
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/toObject/index.js
@@ -0,0 +1,15 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.toObject = function () {
+ return {
+ years: this.$y,
+ months: this.$M,
+ date: this.$D,
+ hours: this.$H,
+ minutes: this.$m,
+ seconds: this.$s,
+ milliseconds: this.$ms
+ };
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts b/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts
new file mode 100644
index 0000000..994a884
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ export function updateLocale(localeName: string, customConfig: Record): Record
+}
diff --git a/node_modules/dayjs/esm/plugin/updateLocale/index.js b/node_modules/dayjs/esm/plugin/updateLocale/index.js
new file mode 100644
index 0000000..1b9965c
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/updateLocale/index.js
@@ -0,0 +1,12 @@
+export default (function (option, Dayjs, dayjs) {
+ dayjs.updateLocale = function (locale, customConfig) {
+ var localeList = dayjs.Ls;
+ var localeConfig = localeList[locale];
+ if (!localeConfig) return;
+ var customConfigKeys = customConfig ? Object.keys(customConfig) : [];
+ customConfigKeys.forEach(function (c) {
+ localeConfig[c] = customConfig[c];
+ });
+ return localeConfig; // eslint-disable-line consistent-return
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/utc/index.d.ts b/node_modules/dayjs/esm/plugin/utc/index.d.ts
new file mode 100644
index 0000000..15c61fe
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/utc/index.d.ts
@@ -0,0 +1,19 @@
+import { PluginFunc, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+
+ utc(keepLocalTime?: boolean): Dayjs
+
+ local(): Dayjs
+
+ isUTC(): boolean
+
+ utcOffset(offset: number | string, keepLocalTime?: boolean): Dayjs
+ }
+
+ export function utc(config?: ConfigType, format?: string, strict?: boolean): Dayjs
+}
diff --git a/node_modules/dayjs/esm/plugin/utc/index.js b/node_modules/dayjs/esm/plugin/utc/index.js
new file mode 100644
index 0000000..a8a05f5
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/utc/index.js
@@ -0,0 +1,188 @@
+import { MILLISECONDS_A_MINUTE, MIN } from '../../constant';
+var REGEX_VALID_OFFSET_FORMAT = /[+-]\d\d(?::?\d\d)?/g;
+var REGEX_OFFSET_HOURS_MINUTES_FORMAT = /([+-]|\d\d)/g;
+
+function offsetFromString(value) {
+ if (value === void 0) {
+ value = '';
+ }
+
+ var offset = value.match(REGEX_VALID_OFFSET_FORMAT);
+
+ if (!offset) {
+ return null;
+ }
+
+ var _ref = ("" + offset[0]).match(REGEX_OFFSET_HOURS_MINUTES_FORMAT) || ['-', 0, 0],
+ indicator = _ref[0],
+ hoursOffset = _ref[1],
+ minutesOffset = _ref[2];
+
+ var totalOffsetInMinutes = +hoursOffset * 60 + +minutesOffset;
+
+ if (totalOffsetInMinutes === 0) {
+ return 0;
+ }
+
+ return indicator === '+' ? totalOffsetInMinutes : -totalOffsetInMinutes;
+}
+
+export default (function (option, Dayjs, dayjs) {
+ var proto = Dayjs.prototype;
+
+ dayjs.utc = function (date) {
+ var cfg = {
+ date: date,
+ utc: true,
+ args: arguments
+ }; // eslint-disable-line prefer-rest-params
+
+ return new Dayjs(cfg); // eslint-disable-line no-use-before-define
+ };
+
+ proto.utc = function (keepLocalTime) {
+ var ins = dayjs(this.toDate(), {
+ locale: this.$L,
+ utc: true
+ });
+
+ if (keepLocalTime) {
+ return ins.add(this.utcOffset(), MIN);
+ }
+
+ return ins;
+ };
+
+ proto.local = function () {
+ return dayjs(this.toDate(), {
+ locale: this.$L,
+ utc: false
+ });
+ };
+
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ if (cfg.utc) {
+ this.$u = true;
+ }
+
+ if (!this.$utils().u(cfg.$offset)) {
+ this.$offset = cfg.$offset;
+ }
+
+ oldParse.call(this, cfg);
+ };
+
+ var oldInit = proto.init;
+
+ proto.init = function () {
+ if (this.$u) {
+ var $d = this.$d;
+ this.$y = $d.getUTCFullYear();
+ this.$M = $d.getUTCMonth();
+ this.$D = $d.getUTCDate();
+ this.$W = $d.getUTCDay();
+ this.$H = $d.getUTCHours();
+ this.$m = $d.getUTCMinutes();
+ this.$s = $d.getUTCSeconds();
+ this.$ms = $d.getUTCMilliseconds();
+ } else {
+ oldInit.call(this);
+ }
+ };
+
+ var oldUtcOffset = proto.utcOffset;
+
+ proto.utcOffset = function (input, keepLocalTime) {
+ var _this$$utils = this.$utils(),
+ u = _this$$utils.u;
+
+ if (u(input)) {
+ if (this.$u) {
+ return 0;
+ }
+
+ if (!u(this.$offset)) {
+ return this.$offset;
+ }
+
+ return oldUtcOffset.call(this);
+ }
+
+ if (typeof input === 'string') {
+ input = offsetFromString(input);
+
+ if (input === null) {
+ return this;
+ }
+ }
+
+ var offset = Math.abs(input) <= 16 ? input * 60 : input;
+ var ins = this;
+
+ if (keepLocalTime) {
+ ins.$offset = offset;
+ ins.$u = input === 0;
+ return ins;
+ }
+
+ if (input !== 0) {
+ var localTimezoneOffset = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();
+ ins = this.local().add(offset + localTimezoneOffset, MIN);
+ ins.$offset = offset;
+ ins.$x.$localOffset = localTimezoneOffset;
+ } else {
+ ins = this.utc();
+ }
+
+ return ins;
+ };
+
+ var oldFormat = proto.format;
+ var UTC_FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ss[Z]';
+
+ proto.format = function (formatStr) {
+ var str = formatStr || (this.$u ? UTC_FORMAT_DEFAULT : '');
+ return oldFormat.call(this, str);
+ };
+
+ proto.valueOf = function () {
+ var addedOffset = !this.$utils().u(this.$offset) ? this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset()) : 0;
+ return this.$d.valueOf() - addedOffset * MILLISECONDS_A_MINUTE;
+ };
+
+ proto.isUTC = function () {
+ return !!this.$u;
+ };
+
+ proto.toISOString = function () {
+ return this.toDate().toISOString();
+ };
+
+ proto.toString = function () {
+ return this.toDate().toUTCString();
+ };
+
+ var oldToDate = proto.toDate;
+
+ proto.toDate = function (type) {
+ if (type === 's' && this.$offset) {
+ return dayjs(this.format('YYYY-MM-DD HH:mm:ss:SSS')).toDate();
+ }
+
+ return oldToDate.call(this);
+ };
+
+ var oldDiff = proto.diff;
+
+ proto.diff = function (input, units, _float) {
+ if (input && this.$u === input.$u) {
+ return oldDiff.call(this, input, units, _float);
+ }
+
+ var localThis = this.local();
+ var localInput = dayjs(input).local();
+ return oldDiff.call(localThis, localInput, units, _float);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts b/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts
new file mode 100644
index 0000000..340051b
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts
@@ -0,0 +1,12 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ week(): number
+
+ week(value : number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/weekOfYear/index.js b/node_modules/dayjs/esm/plugin/weekOfYear/index.js
new file mode 100644
index 0000000..c92406e
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/weekOfYear/index.js
@@ -0,0 +1,44 @@
+import { MS, Y, D, W } from '../../constant';
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.week = function (week) {
+ if (week === void 0) {
+ week = null;
+ }
+
+ if (week !== null) {
+ return this.add((week - this.week()) * 7, D);
+ }
+
+ var yearStart = this.$locale().yearStart || 1;
+
+ if (this.month() === 11 && this.date() > 25) {
+ // d(this) is for badMutable
+ var nextYearStartDay = d(this).startOf(Y).add(1, Y).date(yearStart);
+ var thisEndOfWeek = d(this).endOf(W);
+
+ if (nextYearStartDay.isBefore(thisEndOfWeek)) {
+ return 1;
+ }
+ }
+
+ var yearStartDay = d(this).startOf(Y).date(yearStart);
+ var yearStartWeek = yearStartDay.startOf(W).subtract(1, MS);
+ var diffInWeek = this.diff(yearStartWeek, W, true);
+
+ if (diffInWeek < 0) {
+ return d(this).startOf('week').week();
+ }
+
+ return Math.ceil(diffInWeek);
+ };
+
+ proto.weeks = function (week) {
+ if (week === void 0) {
+ week = null;
+ }
+
+ return this.week(week);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/weekYear/index.d.ts b/node_modules/dayjs/esm/plugin/weekYear/index.d.ts
new file mode 100644
index 0000000..5b713e5
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/weekYear/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ weekYear(): number
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/weekYear/index.js b/node_modules/dayjs/esm/plugin/weekYear/index.js
new file mode 100644
index 0000000..140dcd4
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/weekYear/index.js
@@ -0,0 +1,19 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.weekYear = function () {
+ var month = this.month();
+ var weekOfYear = this.week();
+ var year = this.year();
+
+ if (weekOfYear === 1 && month === 11) {
+ return year + 1;
+ }
+
+ if (month === 0 && weekOfYear >= 52) {
+ return year - 1;
+ }
+
+ return year;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/plugin/weekday/index.d.ts b/node_modules/dayjs/esm/plugin/weekday/index.d.ts
new file mode 100644
index 0000000..41945e7
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/weekday/index.d.ts
@@ -0,0 +1,12 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ weekday(): number
+
+ weekday(value: number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/esm/plugin/weekday/index.js b/node_modules/dayjs/esm/plugin/weekday/index.js
new file mode 100644
index 0000000..18032b3
--- /dev/null
+++ b/node_modules/dayjs/esm/plugin/weekday/index.js
@@ -0,0 +1,15 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.weekday = function (input) {
+ var weekStart = this.$locale().weekStart || 0;
+ var $W = this.$W;
+ var weekday = ($W < weekStart ? $W + 7 : $W) - weekStart;
+
+ if (this.$utils().u(input)) {
+ return weekday;
+ }
+
+ return this.subtract(weekday, 'day').add(input, 'day');
+ };
+});
\ No newline at end of file
diff --git a/node_modules/dayjs/esm/utils.js b/node_modules/dayjs/esm/utils.js
new file mode 100644
index 0000000..b5a8131
--- /dev/null
+++ b/node_modules/dayjs/esm/utils.js
@@ -0,0 +1,58 @@
+import * as C from './constant';
+
+var padStart = function padStart(string, length, pad) {
+ var s = String(string);
+ if (!s || s.length >= length) return string;
+ return "" + Array(length + 1 - s.length).join(pad) + string;
+};
+
+var padZoneStr = function padZoneStr(instance) {
+ var negMinutes = -instance.utcOffset();
+ var minutes = Math.abs(negMinutes);
+ var hourOffset = Math.floor(minutes / 60);
+ var minuteOffset = minutes % 60;
+ return "" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + ":" + padStart(minuteOffset, 2, '0');
+};
+
+var monthDiff = function monthDiff(a, b) {
+ // function from moment.js in order to keep the same result
+ if (a.date() < b.date()) return -monthDiff(b, a);
+ var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());
+ var anchor = a.clone().add(wholeMonthDiff, C.M);
+ var c = b - anchor < 0;
+ var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);
+ return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);
+};
+
+var absFloor = function absFloor(n) {
+ return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);
+};
+
+var prettyUnit = function prettyUnit(u) {
+ var special = {
+ M: C.M,
+ y: C.Y,
+ w: C.W,
+ d: C.D,
+ D: C.DATE,
+ h: C.H,
+ m: C.MIN,
+ s: C.S,
+ ms: C.MS,
+ Q: C.Q
+ };
+ return special[u] || String(u || '').toLowerCase().replace(/s$/, '');
+};
+
+var isUndefined = function isUndefined(s) {
+ return s === undefined;
+};
+
+export default {
+ s: padStart,
+ z: padZoneStr,
+ m: monthDiff,
+ a: absFloor,
+ p: prettyUnit,
+ u: isUndefined
+};
\ No newline at end of file
diff --git a/node_modules/dayjs/index.d.ts b/node_modules/dayjs/index.d.ts
new file mode 100644
index 0000000..1ac6c8d
--- /dev/null
+++ b/node_modules/dayjs/index.d.ts
@@ -0,0 +1,429 @@
+///
+
+export = dayjs;
+
+declare function dayjs (date?: dayjs.ConfigType): dayjs.Dayjs
+
+declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, strict?: boolean): dayjs.Dayjs
+
+declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, locale?: string, strict?: boolean): dayjs.Dayjs
+
+declare namespace dayjs {
+ interface ConfigTypeMap {
+ default: string | number | Date | Dayjs | null | undefined
+ }
+
+ export type ConfigType = ConfigTypeMap[keyof ConfigTypeMap]
+
+ export interface FormatObject { locale?: string, format?: string, utc?: boolean }
+
+ export type OptionType = FormatObject | string | string[]
+
+ export type UnitTypeShort = 'd' | 'D' | 'M' | 'y' | 'h' | 'm' | 's' | 'ms'
+
+ export type UnitTypeLong = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' | 'date'
+
+ export type UnitTypeLongPlural = 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'months' | 'years' | 'dates'
+
+ export type UnitType = UnitTypeLong | UnitTypeLongPlural | UnitTypeShort;
+
+ export type OpUnitType = UnitType | "week" | "weeks" | 'w';
+ export type QUnitType = UnitType | "quarter" | "quarters" | 'Q';
+ export type ManipulateType = Exclude;
+ class Dayjs {
+ constructor (config?: ConfigType)
+ /**
+ * All Day.js objects are immutable. Still, `dayjs#clone` can create a clone of the current object if you need one.
+ * ```
+ * dayjs().clone()// => Dayjs
+ * dayjs(dayjs('2019-01-25')) // passing a Dayjs object to a constructor will also clone it
+ * ```
+ * Docs: https://day.js.org/docs/en/parse/dayjs-clone
+ */
+ clone(): Dayjs
+ /**
+ * This returns a `boolean` indicating whether the Day.js object contains a valid date or not.
+ * ```
+ * dayjs().isValid()// => boolean
+ * ```
+ * Docs: https://day.js.org/docs/en/parse/is-valid
+ */
+ isValid(): boolean
+ /**
+ * Get the year.
+ * ```
+ * dayjs().year()// => 2020
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/year
+ */
+ year(): number
+ /**
+ * Set the year.
+ * ```
+ * dayjs().year(2000)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/year
+ */
+ year(value: number): Dayjs
+ /**
+ * Get the month.
+ *
+ * Months are zero indexed, so January is month 0.
+ * ```
+ * dayjs().month()// => 0-11
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/month
+ */
+ month(): number
+ /**
+ * Set the month.
+ *
+ * Months are zero indexed, so January is month 0.
+ *
+ * Accepts numbers from 0 to 11. If the range is exceeded, it will bubble up to the next year.
+ * ```
+ * dayjs().month(0)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/month
+ */
+ month(value: number): Dayjs
+ /**
+ * Get the date of the month.
+ * ```
+ * dayjs().date()// => 1-31
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/date
+ */
+ date(): number
+ /**
+ * Set the date of the month.
+ *
+ * Accepts numbers from 1 to 31. If the range is exceeded, it will bubble up to the next months.
+ * ```
+ * dayjs().date(1)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/date
+ */
+ date(value: number): Dayjs
+ /**
+ * Get the day of the week.
+ *
+ * Returns numbers from 0 (Sunday) to 6 (Saturday).
+ * ```
+ * dayjs().day()// 0-6
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/day
+ */
+ day(): number
+ /**
+ * Set the day of the week.
+ *
+ * Accepts numbers from 0 (Sunday) to 6 (Saturday). If the range is exceeded, it will bubble up to next weeks.
+ * ```
+ * dayjs().day(0)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/day
+ */
+ day(value: number): Dayjs
+ /**
+ * Get the hour.
+ * ```
+ * dayjs().hour()// => 0-23
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/hour
+ */
+ hour(): number
+ /**
+ * Set the hour.
+ *
+ * Accepts numbers from 0 to 23. If the range is exceeded, it will bubble up to the next day.
+ * ```
+ * dayjs().hour(12)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/hour
+ */
+ hour(value: number): Dayjs
+ /**
+ * Get the minutes.
+ * ```
+ * dayjs().minute()// => 0-59
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/minute
+ */
+ minute(): number
+ /**
+ * Set the minutes.
+ *
+ * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next hour.
+ * ```
+ * dayjs().minute(59)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/minute
+ */
+ minute(value: number): Dayjs
+ /**
+ * Get the seconds.
+ * ```
+ * dayjs().second()// => 0-59
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/second
+ */
+ second(): number
+ /**
+ * Set the seconds.
+ *
+ * Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next minutes.
+ * ```
+ * dayjs().second(1)// Dayjs
+ * ```
+ */
+ second(value: number): Dayjs
+ /**
+ * Get the milliseconds.
+ * ```
+ * dayjs().millisecond()// => 0-999
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/millisecond
+ */
+ millisecond(): number
+ /**
+ * Set the milliseconds.
+ *
+ * Accepts numbers from 0 to 999. If the range is exceeded, it will bubble up to the next seconds.
+ * ```
+ * dayjs().millisecond(1)// => Dayjs
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/millisecond
+ */
+ millisecond(value: number): Dayjs
+ /**
+ * Generic setter, accepting unit as first argument, and value as second, returns a new instance with the applied changes.
+ *
+ * In general:
+ * ```
+ * dayjs().set(unit, value) === dayjs()[unit](value)
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ * ```
+ * dayjs().set('date', 1)
+ * dayjs().set('month', 3) // April
+ * dayjs().set('second', 30)
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/set
+ */
+ set(unit: UnitType, value: number): Dayjs
+ /**
+ * String getter, returns the corresponding information getting from Day.js object.
+ *
+ * In general:
+ * ```
+ * dayjs().get(unit) === dayjs()[unit]()
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ * ```
+ * dayjs().get('year')
+ * dayjs().get('month') // start 0
+ * dayjs().get('date')
+ * ```
+ * Docs: https://day.js.org/docs/en/get-set/get
+ */
+ get(unit: UnitType): number
+ /**
+ * Returns a cloned Day.js object with a specified amount of time added.
+ * ```
+ * dayjs().add(7, 'day')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/add
+ */
+ add(value: number, unit?: ManipulateType): Dayjs
+ /**
+ * Returns a cloned Day.js object with a specified amount of time subtracted.
+ * ```
+ * dayjs().subtract(7, 'year')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/subtract
+ */
+ subtract(value: number, unit?: ManipulateType): Dayjs
+ /**
+ * Returns a cloned Day.js object and set it to the start of a unit of time.
+ * ```
+ * dayjs().startOf('year')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/start-of
+ */
+ startOf(unit: OpUnitType): Dayjs
+ /**
+ * Returns a cloned Day.js object and set it to the end of a unit of time.
+ * ```
+ * dayjs().endOf('month')// => Dayjs
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/manipulate/end-of
+ */
+ endOf(unit: OpUnitType): Dayjs
+ /**
+ * Get the formatted date according to the string of tokens passed in.
+ *
+ * To escape characters, wrap them in square brackets (e.g. [MM]).
+ * ```
+ * dayjs().format()// => current date in ISO8601, without fraction seconds e.g. '2020-04-02T08:02:17-05:00'
+ * dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')// 'YYYYescape 2019-01-25T00:00:00-02:00Z'
+ * dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/format
+ */
+ format(template?: string): string
+ /**
+ * This indicates the difference between two date-time in the specified unit.
+ *
+ * To get the difference in milliseconds, use `dayjs#diff`
+ * ```
+ * const date1 = dayjs('2019-01-25')
+ * const date2 = dayjs('2018-06-05')
+ * date1.diff(date2) // 20214000000 default milliseconds
+ * date1.diff() // milliseconds to current time
+ * ```
+ *
+ * To get the difference in another unit of measurement, pass that measurement as the second argument.
+ * ```
+ * const date1 = dayjs('2019-01-25')
+ * date1.diff('2018-06-05', 'month') // 7
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/display/difference
+ */
+ diff(date?: ConfigType, unit?: QUnitType | OpUnitType, float?: boolean): number
+ /**
+ * This returns the number of **milliseconds** since the Unix Epoch of the Day.js object.
+ * ```
+ * dayjs('2019-01-25').valueOf() // 1548381600000
+ * +dayjs(1548381600000) // 1548381600000
+ * ```
+ * To get a Unix timestamp (the number of seconds since the epoch) from a Day.js object, you should use Unix Timestamp `dayjs#unix()`.
+ *
+ * Docs: https://day.js.org/docs/en/display/unix-timestamp-milliseconds
+ */
+ valueOf(): number
+ /**
+ * This returns the Unix timestamp (the number of **seconds** since the Unix Epoch) of the Day.js object.
+ * ```
+ * dayjs('2019-01-25').unix() // 1548381600
+ * ```
+ * This value is floored to the nearest second, and does not include a milliseconds component.
+ *
+ * Docs: https://day.js.org/docs/en/display/unix-timestamp
+ */
+ unix(): number
+ /**
+ * Get the number of days in the current month.
+ * ```
+ * dayjs('2019-01-25').daysInMonth() // 31
+ * ```
+ * Docs: https://day.js.org/docs/en/display/days-in-month
+ */
+ daysInMonth(): number
+ /**
+ * To get a copy of the native `Date` object parsed from the Day.js object use `dayjs#toDate`.
+ * ```
+ * dayjs('2019-01-25').toDate()// => Date
+ * ```
+ */
+ toDate(): Date
+ /**
+ * To serialize as an ISO 8601 string.
+ * ```
+ * dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/as-json
+ */
+ toJSON(): string
+ /**
+ * To format as an ISO 8601 string.
+ * ```
+ * dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/as-iso-string
+ */
+ toISOString(): string
+ /**
+ * Returns a string representation of the date.
+ * ```
+ * dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT'
+ * ```
+ * Docs: https://day.js.org/docs/en/display/as-string
+ */
+ toString(): string
+ /**
+ * Get the UTC offset in minutes.
+ * ```
+ * dayjs().utcOffset()
+ * ```
+ * Docs: https://day.js.org/docs/en/manipulate/utc-offset
+ */
+ utcOffset(): number
+ /**
+ * This indicates whether the Day.js object is before the other supplied date-time.
+ * ```
+ * dayjs().isBefore(dayjs('2011-01-01')) // default milliseconds
+ * ```
+ * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
+ * ```
+ * dayjs().isBefore('2011-01-01', 'year')// => boolean
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/query/is-before
+ */
+ isBefore(date: ConfigType, unit?: OpUnitType): boolean
+ /**
+ * This indicates whether the Day.js object is the same as the other supplied date-time.
+ * ```
+ * dayjs().isSame(dayjs('2011-01-01')) // default milliseconds
+ * ```
+ * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
+ * ```
+ * dayjs().isSame('2011-01-01', 'year')// => boolean
+ * ```
+ * Docs: https://day.js.org/docs/en/query/is-same
+ */
+ isSame(date: ConfigType, unit?: OpUnitType): boolean
+ /**
+ * This indicates whether the Day.js object is after the other supplied date-time.
+ * ```
+ * dayjs().isAfter(dayjs('2011-01-01')) // default milliseconds
+ * ```
+ * If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
+ * ```
+ * dayjs().isAfter('2011-01-01', 'year')// => boolean
+ * ```
+ * Units are case insensitive, and support plural and short forms.
+ *
+ * Docs: https://day.js.org/docs/en/query/is-after
+ */
+ isAfter(date: ConfigType, unit?: OpUnitType): boolean
+
+ locale(): string
+
+ locale(preset: string | ILocale, object?: Partial): Dayjs
+ }
+
+ export type PluginFunc = (option: T, c: typeof Dayjs, d: typeof dayjs) => void
+
+ export function extend(plugin: PluginFunc, option?: T): Dayjs
+
+ export function locale(preset?: string | ILocale, object?: Partial, isLocal?: boolean): string
+
+ export function isDayjs(d: any): d is Dayjs
+
+ export function unix(t: number): Dayjs
+
+ const Ls : { [key: string] : ILocale }
+}
diff --git a/node_modules/dayjs/locale.json b/node_modules/dayjs/locale.json
new file mode 100644
index 0000000..6142fd3
--- /dev/null
+++ b/node_modules/dayjs/locale.json
@@ -0,0 +1 @@
+[{"key":"af","name":"Afrikaans"},{"key":"am","name":"Amharic"},{"key":"ar-dz","name":"Arabic (Algeria)"},{"key":"ar-iq","name":" Arabic (Iraq)"},{"key":"ar-kw","name":"Arabic (Kuwait)"},{"key":"ar-ly","name":"Arabic (Lybia)"},{"key":"ar-ma","name":"Arabic (Morocco)"},{"key":"ar-sa","name":"Arabic (Saudi Arabia)"},{"key":"ar-tn","name":" Arabic (Tunisia)"},{"key":"ar","name":"Arabic"},{"key":"az","name":"Azerbaijani"},{"key":"be","name":"Belarusian"},{"key":"bg","name":"Bulgarian"},{"key":"bi","name":"Bislama"},{"key":"bm","name":"Bambara"},{"key":"bn-bd","name":"Bengali (Bangladesh)"},{"key":"bn","name":"Bengali"},{"key":"bo","name":"Tibetan"},{"key":"br","name":"Breton"},{"key":"bs","name":"Bosnian"},{"key":"ca","name":"Catalan"},{"key":"cs","name":"Czech"},{"key":"cv","name":"Chuvash"},{"key":"cy","name":"Welsh"},{"key":"da","name":"Danish"},{"key":"de-at","name":"German (Austria)"},{"key":"de-ch","name":"German (Switzerland)"},{"key":"de","name":"German"},{"key":"dv","name":"Maldivian"},{"key":"el","name":"Greek"},{"key":"en-au","name":"English (Australia)"},{"key":"en-ca","name":"English (Canada)"},{"key":"en-gb","name":"English (United Kingdom)"},{"key":"en-ie","name":"English (Ireland)"},{"key":"en-il","name":"English (Israel)"},{"key":"en-in","name":"English (India)"},{"key":"en-nz","name":"English (New Zealand)"},{"key":"en-sg","name":"English (Singapore)"},{"key":"en-tt","name":"English (Trinidad & Tobago)"},{"key":"en","name":"English"},{"key":"eo","name":"Esperanto"},{"key":"es-do","name":"Spanish (Dominican Republic)"},{"key":"es","name":"Spanish"},{"key":"et","name":"Estonian"},{"key":"eu","name":"Basque"},{"key":"fa","name":"Persian"},{"key":"fi","name":"Finnish"},{"key":"fo","name":"Faroese"},{"key":"fr-ca","name":"French (Canada)"},{"key":"fr-ch","name":"French (Switzerland)"},{"key":"fr","name":"French"},{"key":"fy","name":"Frisian"},{"key":"ga","name":"Irish or Irish Gaelic"},{"key":"gd","name":"Scottish Gaelic"},{"key":"gl","name":"Galician"},{"key":"gom-latn","name":"Konkani Latin script"},{"key":"gu","name":"Gujarati"},{"key":"he","name":"Hebrew"},{"key":"hi","name":"Hindi"},{"key":"hr","name":"Croatian"},{"key":"ht","name":"Haitian Creole (Haiti)"},{"key":"hu","name":"Hungarian"},{"key":"hy-am","name":"Armenian"},{"key":"id","name":"Indonesian"},{"key":"is","name":"Icelandic"},{"key":"it-ch","name":"Italian (Switzerland)"},{"key":"it","name":"Italian"},{"key":"ja","name":"Japanese"},{"key":"jv","name":"Javanese"},{"key":"ka","name":"Georgian"},{"key":"kk","name":"Kazakh"},{"key":"km","name":"Cambodian"},{"key":"kn","name":"Kannada"},{"key":"ko","name":"Korean"},{"key":"ku","name":"Kurdish"},{"key":"ky","name":"Kyrgyz"},{"key":"lb","name":"Luxembourgish"},{"key":"lo","name":"Lao"},{"key":"lt","name":"Lithuanian"},{"key":"lv","name":"Latvian"},{"key":"me","name":"Montenegrin"},{"key":"mi","name":"Maori"},{"key":"mk","name":"Macedonian"},{"key":"ml","name":"Malayalam"},{"key":"mn","name":"Mongolian"},{"key":"mr","name":"Marathi"},{"key":"ms-my","name":"Malay"},{"key":"ms","name":"Malay"},{"key":"mt","name":"Maltese (Malta)"},{"key":"my","name":"Burmese"},{"key":"nb","name":"Norwegian Bokmål"},{"key":"ne","name":"Nepalese"},{"key":"nl-be","name":"Dutch (Belgium)"},{"key":"nl","name":"Dutch"},{"key":"nn","name":"Nynorsk"},{"key":"oc-lnc","name":"Occitan, lengadocian dialecte"},{"key":"pa-in","name":"Punjabi (India)"},{"key":"pl","name":"Polish"},{"key":"pt-br","name":"Portuguese (Brazil)"},{"key":"pt","name":"Portuguese"},{"key":"rn","name":"Kirundi"},{"key":"ro","name":"Romanian"},{"key":"ru","name":"Russian"},{"key":"rw","name":"Kinyarwanda (Rwanda)"},{"key":"sd","name":"Sindhi"},{"key":"se","name":"Northern Sami"},{"key":"si","name":"Sinhalese"},{"key":"sk","name":"Slovak"},{"key":"sl","name":"Slovenian"},{"key":"sq","name":"Albanian"},{"key":"sr-cyrl","name":"Serbian Cyrillic"},{"key":"sr","name":"Serbian"},{"key":"ss","name":"siSwati"},{"key":"sv-fi","name":"Finland Swedish"},{"key":"sv","name":"Swedish"},{"key":"sw","name":"Swahili"},{"key":"ta","name":"Tamil"},{"key":"te","name":"Telugu"},{"key":"tet","name":"Tetun Dili (East Timor)"},{"key":"tg","name":"Tajik"},{"key":"th","name":"Thai"},{"key":"tk","name":"Turkmen"},{"key":"tl-ph","name":"Tagalog (Philippines)"},{"key":"tlh","name":"Klingon"},{"key":"tr","name":"Turkish"},{"key":"tzl","name":"Talossan"},{"key":"tzm-latn","name":"Central Atlas Tamazight Latin"},{"key":"tzm","name":"Central Atlas Tamazight"},{"key":"ug-cn","name":"Uyghur (China)"},{"key":"uk","name":"Ukrainian"},{"key":"ur","name":"Urdu"},{"key":"uz-latn","name":"Uzbek Latin"},{"key":"uz","name":"Uzbek"},{"key":"vi","name":"Vietnamese"},{"key":"x-pseudo","name":"Pseudo"},{"key":"yo","name":"Yoruba Nigeria"},{"key":"zh-cn","name":"Chinese (China)"},{"key":"zh-hk","name":"Chinese (Hong Kong)"},{"key":"zh-tw","name":"Chinese (Taiwan)"},{"key":"zh","name":"Chinese"},{"key":"es-mx","name":"Spanish (Mexico)"},{"key":"es-pr","name":"Spanish (Puerto Rico)"},{"key":"es-us","name":"Spanish (United States)"}]
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/af.js b/node_modules/dayjs/locale/af.js
new file mode 100644
index 0000000..62c75e4
--- /dev/null
+++ b/node_modules/dayjs/locale/af.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_af=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),t={name:"af",weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),weekStart:1,weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"}};return n.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/am.js b/node_modules/dayjs/locale/am.js
new file mode 100644
index 0000000..7b588a8
--- /dev/null
+++ b/node_modules/dayjs/locale/am.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_am=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"am",weekdays:"እሑድ_ሰኞ_ማክሰኞ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ".split("_"),weekdaysShort:"እሑድ_ሰኞ_ማክሰ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ".split("_"),weekdaysMin:"እሑ_ሰኞ_ማክ_ረቡ_ሐሙ_አር_ቅዳ".split("_"),months:"ጃንዋሪ_ፌብሯሪ_ማርች_ኤፕሪል_ሜይ_ጁን_ጁላይ_ኦገስት_ሴፕቴምበር_ኦክቶበር_ኖቬምበር_ዲሴምበር".split("_"),monthsShort:"ጃንዋ_ፌብሯ_ማርች_ኤፕሪ_ሜይ_ጁን_ጁላይ_ኦገስ_ሴፕቴ_ኦክቶ_ኖቬም_ዲሴም".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"በ%s",past:"%s በፊት",s:"ጥቂት ሰከንዶች",m:"አንድ ደቂቃ",mm:"%d ደቂቃዎች",h:"አንድ ሰዓት",hh:"%d ሰዓታት",d:"አንድ ቀን",dd:"%d ቀናት",M:"አንድ ወር",MM:"%d ወራት",y:"አንድ ዓመት",yy:"%d ዓመታት"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM D ፣ YYYY",LLL:"MMMM D ፣ YYYY HH:mm",LLLL:"dddd ፣ MMMM D ፣ YYYY HH:mm"},ordinal:function(e){return e+"ኛ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-dz.js b/node_modules/dayjs/locale/ar-dz.js
new file mode 100644
index 0000000..5522790
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-dz.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_dz=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-dz",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"م":"ص"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-iq.js b/node_modules/dayjs/locale/ar-iq.js
new file mode 100644
index 0000000..07e8c71
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-iq.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar_iq=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ar-iq",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول".split("_"),weekStart:1,weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"م":"ص"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-kw.js b/node_modules/dayjs/locale/ar-kw.js
new file mode 100644
index 0000000..a876ca0
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-kw.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_kw=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-kw",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"م":"ص"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-ly.js b/node_modules/dayjs/locale/ar-ly.js
new file mode 100644
index 0000000..9dbe09b
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-ly.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_ly=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"ar-ly",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekStart:6,weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(_){return _},meridiem:function(_){return _>12?"م":"ص"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-ma.js b/node_modules/dayjs/locale/ar-ma.js
new file mode 100644
index 0000000..dbb77cc
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-ma.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar_ma=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ar-ma",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekStart:6,weekdaysShort:"احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"م":"ص"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-sa.js b/node_modules/dayjs/locale/ar-sa.js
new file mode 100644
index 0000000..9c2c0d4
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-sa.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ar_sa=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ar-sa",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(_){return _>12?"م":"ص"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar-tn.js b/node_modules/dayjs/locale/ar-tn.js
new file mode 100644
index 0000000..944b46d
--- /dev/null
+++ b/node_modules/dayjs/locale/ar-tn.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar_tn=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ar-tn",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekStart:1,weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiem:function(e){return e>12?"م":"ص"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ar.js b/node_modules/dayjs/locale/ar.js
new file mode 100644
index 0000000..87b99b3
--- /dev/null
+++ b/node_modules/dayjs/locale/ar.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ar=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),r="يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),_={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},d={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o={name:"ar",weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),months:r,monthsShort:r,weekStart:6,relativeTime:{future:"بعد %s",past:"منذ %s",s:"ثانية واحدة",m:"دقيقة واحدة",mm:"%d دقائق",h:"ساعة واحدة",hh:"%d ساعات",d:"يوم واحد",dd:"%d أيام",M:"شهر واحد",MM:"%d أشهر",y:"عام واحد",yy:"%d أعوام"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return d[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return _[e]})).replace(/,/g,"،")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return n.default.locale(o,null,!0),o}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/az.js b/node_modules/dayjs/locale/az.js
new file mode 100644
index 0000000..d63ed1f
--- /dev/null
+++ b/node_modules/dayjs/locale/az.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_az=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var _=e(a),t={name:"az",weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},ordinal:function(a){return a}};return _.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/be.js b/node_modules/dayjs/locale/be.js
new file mode 100644
index 0000000..704a87d
--- /dev/null
+++ b/node_modules/dayjs/locale/be.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_be=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"be",weekdays:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),months:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),weekStart:1,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bg.js b/node_modules/dayjs/locale/bg.js
new file mode 100644
index 0000000..4a3d316
--- /dev/null
+++ b/node_modules/dayjs/locale/bg.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bg=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"bg",weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekStart:1,ordinal:function(e){var _=e%100;if(_>10&&_<20)return e+"-ти";var t=e%10;return 1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bi.js b/node_modules/dayjs/locale/bi.js
new file mode 100644
index 0000000..e457dff
--- /dev/null
+++ b/node_modules/dayjs/locale/bi.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bi=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),_={name:"bi",weekdays:"Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade".split("_"),months:"Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba".split("_"),weekStart:1,weekdaysShort:"San_Man_Tus_Wen_Tos_Frae_Sar".split("_"),monthsShort:"Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"San_Ma_Tu_We_To_Fr_Sar".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"lo %s",past:"%s bifo",s:"sam seken",m:"wan minit",mm:"%d minit",h:"wan haoa",hh:"%d haoa",d:"wan dei",dd:"%d dei",M:"wan manis",MM:"%d manis",y:"wan yia",yy:"%d yia"}};return n.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bm.js b/node_modules/dayjs/locale/bm.js
new file mode 100644
index 0000000..3c4fbdd
--- /dev/null
+++ b/node_modules/dayjs/locale/bm.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_bm=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var l=e(a),t={name:"bm",weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),weekStart:1,weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"}};return l.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bn-bd.js b/node_modules/dayjs/locale/bn-bd.js
new file mode 100644
index 0000000..ae76f9f
--- /dev/null
+++ b/node_modules/dayjs/locale/bn-bd.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bn_bd=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},d={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},r={name:"bn-bd",weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),weekStart:0,preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return d[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return n[e]}))},ordinal:function(e){var t=["ই","লা","রা","ঠা","শে"],_=e%100;return"["+e+(t[(_-20)%10]||t[_]||t[0])+"]"},formats:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY খ্রিস্টাব্দ",LL:"D MMMM YYYY খ্রিস্টাব্দ",LLL:"D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়",LLLL:"dddd, D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়"},meridiem:function(e){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"}};return _.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bn.js b/node_modules/dayjs/locale/bn.js
new file mode 100644
index 0000000..30ffa02
--- /dev/null
+++ b/node_modules/dayjs/locale/bn.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bn=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),n={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},d={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},o={name:"bn",weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return d[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return n[e]}))},ordinal:function(e){return e},formats:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"}};return t.default.locale(o,null,!0),o}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bo.js b/node_modules/dayjs/locale/bo.js
new file mode 100644
index 0000000..92bb7cc
--- /dev/null
+++ b/node_modules/dayjs/locale/bo.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_bo=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"bo",weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་དང་པོ_ཟླ་གཉིས་པ_ཟླ་གསུམ་པ_ཟླ་བཞི་པ_ཟླ་ལྔ་པ_ཟླ་དྲུག་པ_ཟླ་བདུན་པ_ཟླ་བརྒྱད་པ_ཟླ་དགུ་པ_ཟླ་བཅུ་པ_ཟླ་བཅུ་གཅིག་པ_ཟླ་བཅུ་གཉིས་པ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ལ་",past:"%s སྔོན་ལ་",s:"ཏོག་ཙམ་",m:"སྐར་མ་གཅིག་",mm:"སྐར་མ་ %d",h:"ཆུ་ཚོད་གཅིག་",hh:"ཆུ་ཚོད་ %d",d:"ཉིན་གཅིག་",dd:"ཉིན་ %d",M:"ཟླ་བ་གཅིག་",MM:"ཟླ་བ་ %d",y:"ལོ་གཅིག་",yy:"ལོ་ %d"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/br.js b/node_modules/dayjs/locale/br.js
new file mode 100644
index 0000000..0b2317f
--- /dev/null
+++ b/node_modules/dayjs/locale/br.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_br=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=n(e);function r(e){return e>9?r(e%10):e}function t(e,n,u){return e+" "+function(e,n){return 2===n?function(e){return{m:"v",b:"v",d:"z"}[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[u],e)}var o={name:"br",weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),weekStart:1,weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(r(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},meridiem:function(e){return e<12?"a.m.":"g.m."}};return u.default.locale(o,null,!0),o}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/bs.js b/node_modules/dayjs/locale/bs.js
new file mode 100644
index 0000000..25dcd6d
--- /dev/null
+++ b/node_modules/dayjs/locale/bs.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_bs=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),a={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ca.js b/node_modules/dayjs/locale/ca.js
new file mode 100644
index 0000000..1614cc2
--- /dev/null
+++ b/node_modules/dayjs/locale/ca.js
@@ -0,0 +1 @@
+!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ca=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=s(e),_={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return""+e+(1===e||3===e?"r":2===e?"n":4===e?"t":"è")}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/cs.js b/node_modules/dayjs/locale/cs.js
new file mode 100644
index 0000000..43bddb9
--- /dev/null
+++ b/node_modules/dayjs/locale/cs.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_cs=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e);function s(e){return e>1&&e<5&&1!=~~(e/10)}function r(e,n,t,r){var d=e+" ";switch(t){case"s":return n||r?"pár sekund":"pár sekundami";case"m":return n?"minuta":r?"minutu":"minutou";case"mm":return n||r?d+(s(e)?"minuty":"minut"):d+"minutami";case"h":return n?"hodina":r?"hodinu":"hodinou";case"hh":return n||r?d+(s(e)?"hodiny":"hodin"):d+"hodinami";case"d":return n||r?"den":"dnem";case"dd":return n||r?d+(s(e)?"dny":"dní"):d+"dny";case"M":return n||r?"měsíc":"měsícem";case"MM":return n||r?d+(s(e)?"měsíce":"měsíců"):d+"měsíci";case"y":return n||r?"rok":"rokem";case"yy":return n||r?d+(s(e)?"roky":"let"):d+"lety"}}var d={name:"cs",weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),months:"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),monthsShort:"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"před %s",s:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/cv.js b/node_modules/dayjs/locale/cv.js
new file mode 100644
index 0000000..a30efe0
--- /dev/null
+++ b/node_modules/dayjs/locale/cv.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_cv=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"cv",weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),weekStart:1,weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/cy.js b/node_modules/dayjs/locale/cy.js
new file mode 100644
index 0000000..ee1910f
--- /dev/null
+++ b/node_modules/dayjs/locale/cy.js
@@ -0,0 +1 @@
+!function(d,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(d="undefined"!=typeof globalThis?globalThis:d||self).dayjs_locale_cy=e(d.dayjs)}(this,(function(d){"use strict";function e(d){return d&&"object"==typeof d&&"default"in d?d:{default:d}}var _=e(d),a={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(d){return d},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return _.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/da.js b/node_modules/dayjs/locale/da.js
new file mode 100644
index 0000000..fd45a45
--- /dev/null
+++ b/node_modules/dayjs/locale/da.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_da=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=t(e),n={name:"da",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn._man._tirs._ons._tors._fre._lør.".split("_"),weekdaysMin:"sø._ma._ti._on._to._fr._lø.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"}};return d.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/de-at.js b/node_modules/dayjs/locale/de-at.js
new file mode 100644
index 0000000..ca51ef5
--- /dev/null
+++ b/node_modules/dayjs/locale/de-at.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_de_at=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function a(e,n,t){var a=i[t];return Array.isArray(a)&&(a=a[n?0:1]),a.replace("%d",e)}var r={name:"de-at",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a}};return t.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/de-ch.js b/node_modules/dayjs/locale/de-ch.js
new file mode 100644
index 0000000..3fef218
--- /dev/null
+++ b/node_modules/dayjs/locale/de-ch.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_de_ch=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),a={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function i(e,n,t){var i=a[t];return Array.isArray(i)&&(i=i[n?0:1]),i.replace("%d",e)}var r={name:"de-ch",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i}};return t.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/de.js b/node_modules/dayjs/locale/de.js
new file mode 100644
index 0000000..35f05ec
--- /dev/null
+++ b/node_modules/dayjs/locale/de.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_de=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),a={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function i(e,n,t){var i=a[t];return Array.isArray(i)&&(i=i[n?0:1]),i.replace("%d",e)}var r={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i}};return t.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/dv.js b/node_modules/dayjs/locale/dv.js
new file mode 100644
index 0000000..b0bd8f9
--- /dev/null
+++ b/node_modules/dayjs/locale/dv.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_dv=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"dv",weekdays:"އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު".split("_"),months:"ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު".split("_"),weekStart:7,weekdaysShort:"އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު".split("_"),monthsShort:"ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު".split("_"),weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/el.js b/node_modules/dayjs/locale/el.js
new file mode 100644
index 0000000..1488034
--- /dev/null
+++ b/node_modules/dayjs/locale/el.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_el=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"el",weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),months:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Νοε_Δεκ".split("_"),ordinal:function(e){return e},weekStart:1,relativeTime:{future:"σε %s",past:"πριν %s",s:"μερικά δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένα μήνα",MM:"%d μήνες",y:"ένα χρόνο",yy:"%d χρόνια"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-au.js b/node_modules/dayjs/locale/en-au.js
new file mode 100644
index 0000000..b952cdb
--- /dev/null
+++ b/node_modules/dayjs/locale/en-au.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_au=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-au",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-ca.js b/node_modules/dayjs/locale/en-ca.js
new file mode 100644
index 0000000..bf76621
--- /dev/null
+++ b/node_modules/dayjs/locale/en-ca.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_ca=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),t={name:"en-ca",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return _.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-gb.js b/node_modules/dayjs/locale/en-gb.js
new file mode 100644
index 0000000..7fc7c3f
--- /dev/null
+++ b/node_modules/dayjs/locale/en-gb.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_gb=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-gb",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-ie.js b/node_modules/dayjs/locale/en-ie.js
new file mode 100644
index 0000000..b0ad3f9
--- /dev/null
+++ b/node_modules/dayjs/locale/en-ie.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_ie=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-ie",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-il.js b/node_modules/dayjs/locale/en-il.js
new file mode 100644
index 0000000..d8bea62
--- /dev/null
+++ b/node_modules/dayjs/locale/en-il.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_il=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=a(e),t={name:"en-il",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return _.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-in.js b/node_modules/dayjs/locale/en-in.js
new file mode 100644
index 0000000..af8cff3
--- /dev/null
+++ b/node_modules/dayjs/locale/en-in.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_in=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),n={name:"en-in",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-nz.js b/node_modules/dayjs/locale/en-nz.js
new file mode 100644
index 0000000..058abbe
--- /dev/null
+++ b/node_modules/dayjs/locale/en-nz.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_nz=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),n={name:"en-nz",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){var a=["th","st","nd","rd"],t=e%100;return"["+e+(a[(t-20)%10]||a[t]||a[0])+"]"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-sg.js b/node_modules/dayjs/locale/en-sg.js
new file mode 100644
index 0000000..787fa84
--- /dev/null
+++ b/node_modules/dayjs/locale/en-sg.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_sg=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"en-sg",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en-tt.js b/node_modules/dayjs/locale/en-tt.js
new file mode 100644
index 0000000..afc4d36
--- /dev/null
+++ b/node_modules/dayjs/locale/en-tt.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_tt=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),_={name:"en-tt",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var t=["th","st","nd","rd"],a=e%100;return"["+e+(t[(a-20)%10]||t[a]||t[0])+"]"}};return a.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/en.js b/node_modules/dayjs/locale/en.js
new file mode 100644
index 0000000..847cbfd
--- /dev/null
+++ b/node_modules/dayjs/locale/en.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_en=n()}(this,(function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return"["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/eo.js b/node_modules/dayjs/locale/eo.js
new file mode 100644
index 0000000..2dcbe01
--- /dev/null
+++ b/node_modules/dayjs/locale/eo.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_eo=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(e),t={name:"eo",weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"}};return a.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/es-do.js b/node_modules/dayjs/locale/es-do.js
new file mode 100644
index 0000000..07907ad
--- /dev/null
+++ b/node_modules/dayjs/locale/es-do.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_do=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es-do",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekStart:1,relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return s.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/es-mx.js b/node_modules/dayjs/locale/es-mx.js
new file mode 100644
index 0000000..f865a2d
--- /dev/null
+++ b/node_modules/dayjs/locale/es-mx.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_mx=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es-mx",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"}};return s.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/es-pr.js b/node_modules/dayjs/locale/es-pr.js
new file mode 100644
index 0000000..56fdeb4
--- /dev/null
+++ b/node_modules/dayjs/locale/es-pr.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_pr=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es-pr",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return s.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/es-us.js b/node_modules/dayjs/locale/es-us.js
new file mode 100644
index 0000000..35f5535
--- /dev/null
+++ b/node_modules/dayjs/locale/es-us.js
@@ -0,0 +1 @@
+!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es_us=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=s(e),d={name:"es-us",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return o.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/es.js b/node_modules/dayjs/locale/es.js
new file mode 100644
index 0000000..eb33b81
--- /dev/null
+++ b/node_modules/dayjs/locale/es.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_es=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return s.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/et.js b/node_modules/dayjs/locale/et.js
new file mode 100644
index 0000000..4158d13
--- /dev/null
+++ b/node_modules/dayjs/locale/et.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_et=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e);function u(e,a,t,u){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:["%d minuti","%d minutit"],h:["ühe tunni","tund aega","üks tund"],hh:["%d tunni","%d tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:["%d kuu","%d kuud"],y:["ühe aasta","aasta","üks aasta"],yy:["%d aasta","%d aastat"]};return a?(s[t][2]?s[t][2]:s[t][1]).replace("%d",e):(u?s[t][0]:s[t][1]).replace("%d",e)}var s={name:"et",weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s pärast",past:"%s tagasi",s:u,m:u,mm:u,h:u,hh:u,d:u,dd:"%d päeva",M:u,MM:u,y:u,yy:u},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return t.default.locale(s,null,!0),s}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/eu.js b/node_modules/dayjs/locale/eu.js
new file mode 100644
index 0000000..ed8e228
--- /dev/null
+++ b/node_modules/dayjs/locale/eu.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_eu=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),l={name:"eu",weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),weekStart:1,weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"}};return t.default.locale(l,null,!0),l}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fa.js b/node_modules/dayjs/locale/fa.js
new file mode 100644
index 0000000..92cde1a
--- /dev/null
+++ b/node_modules/dayjs/locale/fa.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_fa=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"fa",weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک_دو_سه_چه_پن_جم_شن".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekStart:6,months:"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند".split("_"),monthsShort:"فرو_ارد_خرد_تیر_مرد_شهر_مهر_آبا_آذر_دی_بهم_اسف".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s قبل",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fi.js b/node_modules/dayjs/locale/fi.js
new file mode 100644
index 0000000..2681ebd
--- /dev/null
+++ b/node_modules/dayjs/locale/fi.js
@@ -0,0 +1 @@
+!function(u,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(u="undefined"!=typeof globalThis?globalThis:u||self).dayjs_locale_fi=e(u.dayjs)}(this,(function(u){"use strict";function e(u){return u&&"object"==typeof u&&"default"in u?u:{default:u}}var t=e(u);function n(u,e,t,n){var i={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"päivä",dd:"%d päivää",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän".split("_")},a={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"päivän",dd:"%d päivän",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän".split("_")},s=n&&!e?a:i,_=s[t];return u<10?_.replace("%d",s.numbers[u]):_.replace("%d",u)}var i={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),ordinal:function(u){return u+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s päästä",past:"%s sitten",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return t.default.locale(i,null,!0),i}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fo.js b/node_modules/dayjs/locale/fo.js
new file mode 100644
index 0000000..ff6f8d8
--- /dev/null
+++ b/node_modules/dayjs/locale/fo.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fo=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),r={name:"fo",weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"}};return a.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fr-ca.js b/node_modules/dayjs/locale/fr-ca.js
new file mode 100644
index 0000000..9cc0d03
--- /dev/null
+++ b/node_modules/dayjs/locale/fr-ca.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr_ca=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),_={name:"fr-ca",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return i.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fr-ch.js b/node_modules/dayjs/locale/fr-ch.js
new file mode 100644
index 0000000..1308de9
--- /dev/null
+++ b/node_modules/dayjs/locale/fr-ch.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr_ch=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),_={name:"fr-ch",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekStart:1,weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return i.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fr.js b/node_modules/dayjs/locale/fr.js
new file mode 100644
index 0000000..8c42be4
--- /dev/null
+++ b/node_modules/dayjs/locale/fr.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),i={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return""+e+(1===e?"er":"")}};return t.default.locale(i,null,!0),i}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/fy.js b/node_modules/dayjs/locale/fy.js
new file mode 100644
index 0000000..291dd5f
--- /dev/null
+++ b/node_modules/dayjs/locale/fy.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_fy=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e),t={name:"fy",weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),weekStart:1,weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"}};return i.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ga.js b/node_modules/dayjs/locale/ga.js
new file mode 100644
index 0000000..0b2489f
--- /dev/null
+++ b/node_modules/dayjs/locale/ga.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_ga=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var i=e(a),n={name:"ga",weekdays:"Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn".split("_"),months:"Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig".split("_"),weekStart:1,weekdaysShort:"Dom_Lua_Mái_Céa_Déa_hAo_Sat".split("_"),monthsShort:"Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll".split("_"),weekdaysMin:"Do_Lu_Má_Ce_Dé_hA_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"}};return i.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/gd.js b/node_modules/dayjs/locale/gd.js
new file mode 100644
index 0000000..c7e47ab
--- /dev/null
+++ b/node_modules/dayjs/locale/gd.js
@@ -0,0 +1 @@
+!function(a,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],i):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_gd=i(a.dayjs)}(this,(function(a){"use strict";function i(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=i(a),e={name:"gd",weekdays:"Didòmhnaich_Diluain_Dimàirt_Diciadain_Diardaoin_Dihaoine_Disathairne".split("_"),months:"Am Faoilleach_An Gearran_Am Màrt_An Giblean_An Cèitean_An t-Ògmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dàmhair_An t-Samhain_An Dùbhlachd".split("_"),weekStart:1,weekdaysShort:"Did_Dil_Dim_Dic_Dia_Dih_Dis".split("_"),monthsShort:"Faoi_Gear_Màrt_Gibl_Cèit_Ògmh_Iuch_Lùn_Sult_Dàmh_Samh_Dùbh".split("_"),weekdaysMin:"Dò_Lu_Mà_Ci_Ar_Ha_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"}};return n.default.locale(e,null,!0),e}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/gl.js b/node_modules/dayjs/locale/gl.js
new file mode 100644
index 0000000..f5cf483
--- /dev/null
+++ b/node_modules/dayjs/locale/gl.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_gl=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),d={name:"gl",weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),ordinal:function(e){return e+"º"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"fai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"}};return s.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/gom-latn.js b/node_modules/dayjs/locale/gom-latn.js
new file mode 100644
index 0000000..1596618
--- /dev/null
+++ b/node_modules/dayjs/locale/gom-latn.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_gom_latn=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),_={name:"gom-latn",weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),weekStart:1,weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"}};return a.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/gu.js b/node_modules/dayjs/locale/gu.js
new file mode 100644
index 0000000..f42a17c
--- /dev/null
+++ b/node_modules/dayjs/locale/gu.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_gu=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"gu",weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/he.js b/node_modules/dayjs/locale/he.js
new file mode 100644
index 0000000..3e4062e
--- /dev/null
+++ b/node_modules/dayjs/locale/he.js
@@ -0,0 +1 @@
+!function(Y,M){"object"==typeof exports&&"undefined"!=typeof module?module.exports=M(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],M):(Y="undefined"!=typeof globalThis?globalThis:Y||self).dayjs_locale_he=M(Y.dayjs)}(this,(function(Y){"use strict";function M(Y){return Y&&"object"==typeof Y&&"default"in Y?Y:{default:Y}}var d=M(Y),e={s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:"%d שעות",hh2:"שעתיים",d:"יום",dd:"%d ימים",dd2:"יומיים",M:"חודש",MM:"%d חודשים",MM2:"חודשיים",y:"שנה",yy:"%d שנים",yy2:"שנתיים"};function _(Y,M,d){return(e[d+(2===Y?"2":"")]||e[d]).replace("%d",Y)}var l={name:"he",weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳".split("_"),months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו_פבר_מרץ_אפר_מאי_יונ_יול_אוג_ספט_אוק_נוב_דצמ".split("_"),relativeTime:{future:"בעוד %s",past:"לפני %s",s:_,m:_,mm:_,h:_,hh:_,d:_,dd:_,M:_,MM:_,y:_,yy:_},ordinal:function(Y){return Y},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"}};return d.default.locale(l,null,!0),l}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/hi.js b/node_modules/dayjs/locale/hi.js
new file mode 100644
index 0000000..9dca3cf
--- /dev/null
+++ b/node_modules/dayjs/locale/hi.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_hi=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"hi",weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/hr.js b/node_modules/dayjs/locale/hr.js
new file mode 100644
index 0000000..12e8387
--- /dev/null
+++ b/node_modules/dayjs/locale/hr.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_hr=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),s="siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),n="siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),_=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/,o=function(e,a){return _.test(a)?s[e.month()]:n[e.month()]};o.s=n,o.f=s;var i={name:"hr",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),months:o,monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return t.default.locale(i,null,!0),i}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ht.js b/node_modules/dayjs/locale/ht.js
new file mode 100644
index 0000000..3b2d9a3
--- /dev/null
+++ b/node_modules/dayjs/locale/ht.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ht=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=n(e),a={name:"ht",weekdays:"dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi".split("_"),months:"janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm".split("_"),weekdaysShort:"dim._len._mad._mèk._jed._van._sam.".split("_"),monthsShort:"jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.".split("_"),weekdaysMin:"di_le_ma_mè_je_va_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"nan %s",past:"sa gen %s",s:"kèk segond",m:"yon minit",mm:"%d minit",h:"inèdtan",hh:"%d zè",d:"yon jou",dd:"%d jou",M:"yon mwa",MM:"%d mwa",y:"yon ane",yy:"%d ane"}};return d.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/hu.js b/node_modules/dayjs/locale/hu.js
new file mode 100644
index 0000000..e2aff04
--- /dev/null
+++ b/node_modules/dayjs/locale/hu.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_hu=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),r={name:"hu",weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s múlva",past:"%s",s:function(e,n,t,r){return"néhány másodperc"+(r||n?"":"e")},m:function(e,n,t,r){return"egy perc"+(r||n?"":"e")},mm:function(e,n,t,r){return e+" perc"+(r||n?"":"e")},h:function(e,n,t,r){return"egy "+(r||n?"óra":"órája")},hh:function(e,n,t,r){return e+" "+(r||n?"óra":"órája")},d:function(e,n,t,r){return"egy "+(r||n?"nap":"napja")},dd:function(e,n,t,r){return e+" "+(r||n?"nap":"napja")},M:function(e,n,t,r){return"egy "+(r||n?"hónap":"hónapja")},MM:function(e,n,t,r){return e+" "+(r||n?"hónap":"hónapja")},y:function(e,n,t,r){return"egy "+(r||n?"év":"éve")},yy:function(e,n,t,r){return e+" "+(r||n?"év":"éve")}},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return t.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/hy-am.js b/node_modules/dayjs/locale/hy-am.js
new file mode 100644
index 0000000..44daa15
--- /dev/null
+++ b/node_modules/dayjs/locale/hy-am.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_hy_am=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"hy-am",weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),months:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),weekStart:1,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/id.js b/node_modules/dayjs/locale/id.js
new file mode 100644
index 0000000..0637a65
--- /dev/null
+++ b/node_modules/dayjs/locale/id.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_id=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/index.d.ts b/node_modules/dayjs/locale/index.d.ts
new file mode 100644
index 0000000..bd2dca2
--- /dev/null
+++ b/node_modules/dayjs/locale/index.d.ts
@@ -0,0 +1,11 @@
+///
+
+declare module 'dayjs/locale/*' {
+ namespace locale {
+ interface Locale extends ILocale {}
+ }
+
+ const locale: locale.Locale
+
+ export = locale
+}
diff --git a/node_modules/dayjs/locale/is.js b/node_modules/dayjs/locale/is.js
new file mode 100644
index 0000000..de6799b
--- /dev/null
+++ b/node_modules/dayjs/locale/is.js
@@ -0,0 +1 @@
+!function(u,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],r):(u="undefined"!=typeof globalThis?globalThis:u||self).dayjs_locale_is=r(u.dayjs)}(this,(function(u){"use strict";function r(u){return u&&"object"==typeof u&&"default"in u?u:{default:u}}var n=r(u),e={s:["nokkrar sekúndur","nokkrar sekúndur","nokkrum sekúndum"],m:["mínúta","mínútu","mínútu"],mm:["mínútur","mínútur","mínútum"],h:["klukkustund","klukkustund","klukkustund"],hh:["klukkustundir","klukkustundir","klukkustundum"],d:["dagur","dag","degi"],dd:["dagar","daga","dögum"],M:["mánuður","mánuð","mánuði"],MM:["mánuðir","mánuði","mánuðum"],y:["ár","ár","ári"],yy:["ár","ár","árum"]};function t(u,r,n,t){var a=function(u,r,n,t){var a=t?0:n?1:2,d=2===u.length&&r%10==1?u[0]:u,m=e[d][a];return 1===u.length?m:"%d "+m}(n,u,t,r);return a.replace("%d",u)}var a={name:"is",weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),ordinal:function(u){return u},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return n.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/it-ch.js b/node_modules/dayjs/locale/it-ch.js
new file mode 100644
index 0000000..7e1c92f
--- /dev/null
+++ b/node_modules/dayjs/locale/it-ch.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_it_ch=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=o(e),t={name:"it-ch",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"}};return n.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/it.js b/node_modules/dayjs/locale/it.js
new file mode 100644
index 0000000..2ddf44b
--- /dev/null
+++ b/node_modules/dayjs/locale/it.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_it=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=o(e),n={name:"it",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"º"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ja.js b/node_modules/dayjs/locale/ja.js
new file mode 100644
index 0000000..cd52f36
--- /dev/null
+++ b/node_modules/dayjs/locale/ja.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ja=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ja",weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e){return e+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiem:function(e){return e<12?"午前":"午後"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/jv.js b/node_modules/dayjs/locale/jv.js
new file mode 100644
index 0000000..7566308
--- /dev/null
+++ b/node_modules/dayjs/locale/jv.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_jv=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),_={name:"jv",weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),weekStart:1,weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ka.js b/node_modules/dayjs/locale/ka.js
new file mode 100644
index 0000000..7b2ce53
--- /dev/null
+++ b/node_modules/dayjs/locale/ka.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ka=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ka",weekdays:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s შემდეგ",past:"%s წინ",s:"წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათის",d:"დღეს",dd:"%d დღის განმავლობაში",M:"თვის",MM:"%d თვის",y:"წელი",yy:"%d წლის"},ordinal:function(_){return _}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/kk.js b/node_modules/dayjs/locale/kk.js
new file mode 100644
index 0000000..a2f17a3
--- /dev/null
+++ b/node_modules/dayjs/locale/kk.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_kk=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"kk",weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekStart:1,relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/km.js b/node_modules/dayjs/locale/km.js
new file mode 100644
index 0000000..528923e
--- /dev/null
+++ b/node_modules/dayjs/locale/km.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_km=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"km",weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekStart:1,weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/kn.js b/node_modules/dayjs/locale/kn.js
new file mode 100644
index 0000000..e040eba
--- /dev/null
+++ b/node_modules/dayjs/locale/kn.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_kn=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"kn",weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ko.js b/node_modules/dayjs/locale/ko.js
new file mode 100644
index 0000000..88d8912
--- /dev/null
+++ b/node_modules/dayjs/locale/ko.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ko=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=_(e),t={name:"ko",weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},meridiem:function(e){return e<12?"오전":"오후"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"}};return d.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ku.js b/node_modules/dayjs/locale/ku.js
new file mode 100644
index 0000000..cd98fc2
--- /dev/null
+++ b/node_modules/dayjs/locale/ku.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("dayjs")):"function"==typeof define&&define.amd?define(["exports","dayjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ku={},e.dayjs)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(t),d={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},o={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},u=["کانوونی دووەم","شوبات","ئادار","نیسان","ئایار","حوزەیران","تەممووز","ئاب","ئەیلوول","تشرینی یەکەم","تشرینی دووەم","کانوونی یەکەم"],i={name:"ku",months:u,monthsShort:u,weekdays:"یەکشەممە_دووشەممە_سێشەممە_چوارشەممە_پێنجشەممە_هەینی_شەممە".split("_"),weekdaysShort:"یەکشەم_دووشەم_سێشەم_چوارشەم_پێنجشەم_هەینی_شەممە".split("_"),weekStart:6,weekdaysMin:"ی_د_س_چ_پ_هـ_ش".split("_"),preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return o[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return d[e]})).replace(/,/g,"،")},ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiem:function(e){return e<12?"پ.ن":"د.ن"},relativeTime:{future:"لە %s",past:"لەمەوپێش %s",s:"چەند چرکەیەک",m:"یەک خولەک",mm:"%d خولەک",h:"یەک کاتژمێر",hh:"%d کاتژمێر",d:"یەک ڕۆژ",dd:"%d ڕۆژ",M:"یەک مانگ",MM:"%d مانگ",y:"یەک ساڵ",yy:"%d ساڵ"}};r.default.locale(i,null,!0),e.default=i,e.englishToArabicNumbersMap=d,Object.defineProperty(e,"__esModule",{value:!0})}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ky.js b/node_modules/dayjs/locale/ky.js
new file mode 100644
index 0000000..1fdc40e
--- /dev/null
+++ b/node_modules/dayjs/locale/ky.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ky=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ky",weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),weekStart:1,weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/lb.js b/node_modules/dayjs/locale/lb.js
new file mode 100644
index 0000000..b6895f2
--- /dev/null
+++ b/node_modules/dayjs/locale/lb.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_lb=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),n={name:"lb",weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/lo.js b/node_modules/dayjs/locale/lo.js
new file mode 100644
index 0000000..1bf09d1
--- /dev/null
+++ b/node_modules/dayjs/locale/lo.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_lo=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"lo",weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/lt.js b/node_modules/dayjs/locale/lt.js
new file mode 100644
index 0000000..52f2225
--- /dev/null
+++ b/node_modules/dayjs/locale/lt.js
@@ -0,0 +1 @@
+!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_lt=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=s(e),d="sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),a="sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),l=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,M=function(e,s){return l.test(s)?d[e.month()]:a[e.month()]};M.s=a,M.f=d;var t={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_šeš".split("_"),weekdaysMin:"s_p_a_t_k_pn_š".split("_"),months:M,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"už %s",past:"prieš %s",s:"kelias sekundes",m:"minutę",mm:"%d minutes",h:"valandą",hh:"%d valandas",d:"dieną",dd:"%d dienas",M:"mėnesį",MM:"%d mėnesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return i.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/lv.js b/node_modules/dayjs/locale/lv.js
new file mode 100644
index 0000000..98fc126
--- /dev/null
+++ b/node_modules/dayjs/locale/lv.js
@@ -0,0 +1 @@
+!function(e,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_lv=s(e.dayjs)}(this,(function(e){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=s(e),d={name:"lv",weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},relativeTime:{future:"pēc %s",past:"pirms %s",s:"dažām sekundēm",m:"minūtes",mm:"%d minūtēm",h:"stundas",hh:"%d stundām",d:"dienas",dd:"%d dienām",M:"mēneša",MM:"%d mēnešiem",y:"gada",yy:"%d gadiem"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/me.js b/node_modules/dayjs/locale/me.js
new file mode 100644
index 0000000..ecb22ae
--- /dev/null
+++ b/node_modules/dayjs/locale/me.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_me=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),a={name:"me",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/mi.js b/node_modules/dayjs/locale/mi.js
new file mode 100644
index 0000000..1b328f0
--- /dev/null
+++ b/node_modules/dayjs/locale/mi.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_mi=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=a(e),t={name:"mi",weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),weekStart:1,weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"}};return i.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/mk.js b/node_modules/dayjs/locale/mk.js
new file mode 100644
index 0000000..0f2ece1
--- /dev/null
+++ b/node_modules/dayjs/locale/mk.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_mk=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"mk",weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),weekStart:1,weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ml.js b/node_modules/dayjs/locale/ml.js
new file mode 100644
index 0000000..8e7db4f
--- /dev/null
+++ b/node_modules/dayjs/locale/ml.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ml=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ml",weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/mn.js b/node_modules/dayjs/locale/mn.js
new file mode 100644
index 0000000..4de299b
--- /dev/null
+++ b/node_modules/dayjs/locale/mn.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_mn=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"mn",weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},relativeTime:{future:"%s",past:"%s",s:"саяхан",m:"м",mm:"%dм",h:"1ц",hh:"%dц",d:"1ө",dd:"%dө",M:"1с",MM:"%dс",y:"1ж",yy:"%dж"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/mr.js b/node_modules/dayjs/locale/mr.js
new file mode 100644
index 0000000..af6bb3a
--- /dev/null
+++ b/node_modules/dayjs/locale/mr.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_mr=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),n={name:"mr",weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"}};return t.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ms-my.js b/node_modules/dayjs/locale/ms-my.js
new file mode 100644
index 0000000..1917d7a
--- /dev/null
+++ b/node_modules/dayjs/locale/ms-my.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ms_my=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),_={name:"ms-my",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),weekStart:1,weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ms.js b/node_modules/dayjs/locale/ms.js
new file mode 100644
index 0000000..be4f88e
--- /dev/null
+++ b/node_modules/dayjs/locale/ms.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ms=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=a(e),s={name:"ms",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH.mm",LLLL:"dddd, D MMMM YYYY HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return t.default.locale(s,null,!0),s}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/mt.js b/node_modules/dayjs/locale/mt.js
new file mode 100644
index 0000000..43d481a
--- /dev/null
+++ b/node_modules/dayjs/locale/mt.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_mt=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),i={name:"mt",weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),weekStart:1,weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"}};return a.default.locale(i,null,!0),i}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/my.js b/node_modules/dayjs/locale/my.js
new file mode 100644
index 0000000..95adead
--- /dev/null
+++ b/node_modules/dayjs/locale/my.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_my=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"my",weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),weekStart:1,weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/nb.js b/node_modules/dayjs/locale/nb.js
new file mode 100644
index 0000000..ece1f31
--- /dev/null
+++ b/node_modules/dayjs/locale/nb.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nb=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),a={name:"nb",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"}};return n.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ne.js b/node_modules/dayjs/locale/ne.js
new file mode 100644
index 0000000..3d166bc
--- /dev/null
+++ b/node_modules/dayjs/locale/ne.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ne=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"ne",weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मे_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),relativeTime:{future:"%s पछि",past:"%s अघि",s:"सेकेन्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"घन्टा",hh:"%d घन्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक वर्ष",yy:"%d वर्ष"},ordinal:function(e){return(""+e).replace(/\d/g,(function(e){return"०१२३४५६७८९"[e]}))},formats:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/nl-be.js b/node_modules/dayjs/locale/nl-be.js
new file mode 100644
index 0000000..7a2f60f
--- /dev/null
+++ b/node_modules/dayjs/locale/nl-be.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nl_be=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),d={name:"nl-be",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),weekStart:1,weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"}};return n.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/nl.js b/node_modules/dayjs/locale/nl.js
new file mode 100644
index 0000000..47e789f
--- /dev/null
+++ b/node_modules/dayjs/locale/nl.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nl=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=a(e),n={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return"["+e+(1===e||8===e||e>=20?"ste":"de")+"]"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return d.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/nn.js b/node_modules/dayjs/locale/nn.js
new file mode 100644
index 0000000..eba3c24
--- /dev/null
+++ b/node_modules/dayjs/locale/nn.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_nn=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),a={name:"nn",weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månadar",y:"eitt år",yy:"%d år"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return n.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/oc-lnc.js b/node_modules/dayjs/locale/oc-lnc.js
new file mode 100644
index 0000000..12e162c
--- /dev/null
+++ b/node_modules/dayjs/locale/oc-lnc.js
@@ -0,0 +1 @@
+!function(e,d){"object"==typeof exports&&"undefined"!=typeof module?module.exports=d(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],d):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_oc_lnc=d(e.dayjs)}(this,(function(e){"use strict";function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=d(e),s={name:"oc-lnc",weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"Dg_Dl_Dm_Dc_Dj_Dv_Ds".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),months:"genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),monthsShort:"gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},ordinal:function(e){return e+"º"}};return n.default.locale(s,null,!0),s}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/pa-in.js b/node_modules/dayjs/locale/pa-in.js
new file mode 100644
index 0000000..4ee3884
--- /dev/null
+++ b/node_modules/dayjs/locale/pa-in.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_pa_in=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"pa-in",weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/pl.js b/node_modules/dayjs/locale/pl.js
new file mode 100644
index 0000000..3f5148c
--- /dev/null
+++ b/node_modules/dayjs/locale/pl.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_pl=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=t(e);function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function n(e,t,i){var n=e+" ";switch(i){case"m":return t?"minuta":"minutę";case"mm":return n+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(a(e)?"godziny":"godzin");case"MM":return n+(a(e)?"miesiące":"miesięcy");case"yy":return n+(a(e)?"lata":"lat")}}var r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),_="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),s=/D MMMM/,d=function(e,t){return s.test(t)?r[e.month()]:_[e.month()]};d.s=_,d.f=r;var o={name:"pl",weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),months:d,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return i.default.locale(o,null,!0),o}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/pt-br.js b/node_modules/dayjs/locale/pt-br.js
new file mode 100644
index 0000000..629c2f1
--- /dev/null
+++ b/node_modules/dayjs/locale/pt-br.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_pt_br=o(e.dayjs)}(this,(function(e){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(e),s={name:"pt-br",weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"º"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return a.default.locale(s,null,!0),s}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/pt.js b/node_modules/dayjs/locale/pt.js
new file mode 100644
index 0000000..91652e8
--- /dev/null
+++ b/node_modules/dayjs/locale/pt.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_pt=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=a(e),t={name:"pt",weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sab".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sa".split("_"),months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"º"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return o.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/rn.js b/node_modules/dayjs/locale/rn.js
new file mode 100644
index 0000000..a093364
--- /dev/null
+++ b/node_modules/dayjs/locale/rn.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_rn=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),u={name:"rn",weekdays:"Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu".split("_"),weekdaysShort:"Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat".split("_"),weekdaysMin:"K7_K1_K2_K3_K4_K5_K6".split("_"),months:"Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama".split("_"),monthsShort:"Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(u,null,!0),u}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ro.js b/node_modules/dayjs/locale/ro.js
new file mode 100644
index 0000000..445af3d
--- /dev/null
+++ b/node_modules/dayjs/locale/ro.js
@@ -0,0 +1 @@
+!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ro=i(e.dayjs)}(this,(function(e){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=i(e),_={name:"ro",weekdays:"Duminică_Luni_Marți_Miercuri_Joi_Vineri_Sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"câteva secunde",m:"un minut",mm:"%d minute",h:"o oră",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lună",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ru.js b/node_modules/dayjs/locale/ru.js
new file mode 100644
index 0000000..f896790
--- /dev/null
+++ b/node_modules/dayjs/locale/ru.js
@@ -0,0 +1 @@
+!function(_,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){"use strict";function t(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var e=t(_),n="января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),s="январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),r="янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),o="янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_"),i=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function d(_,t,e){var n,s;return"m"===e?t?"минута":"минуту":_+" "+(n=+_,s={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[e].split("_"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:"ru",weekdays:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),weekdaysShort:"вск_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:d,mm:d,h:"час",hh:d,d:"день",dd:d,M:"месяц",MM:d,y:"год",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?"ночи":_<12?"утра":_<17?"дня":"вечера"}};return e.default.locale(m,null,!0),m}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/rw.js b/node_modules/dayjs/locale/rw.js
new file mode 100644
index 0000000..bf4c280
--- /dev/null
+++ b/node_modules/dayjs/locale/rw.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_rw=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var u=e(a),t={name:"rw",weekdays:"Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu".split("_"),months:"Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza".split("_"),relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(a){return a}};return u.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sd.js b/node_modules/dayjs/locale/sd.js
new file mode 100644
index 0000000..b1e1ee4
--- /dev/null
+++ b/node_modules/dayjs/locale/sd.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_sd=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"sd",weekdays:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),months:"جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekStart:1,weekdaysShort:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),monthsShort:"جنوري_فيبروري_مارچ_اپريل_مئي_جون_جولاءِ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekdaysMin:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/se.js b/node_modules/dayjs/locale/se.js
new file mode 100644
index 0000000..2cbb224
--- /dev/null
+++ b/node_modules/dayjs/locale/se.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_se=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),t={name:"se",weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),weekStart:1,weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"}};return n.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/si.js b/node_modules/dayjs/locale/si.js
new file mode 100644
index 0000000..216ae8a
--- /dev/null
+++ b/node_modules/dayjs/locale/si.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_si=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"si",weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),months:"දුරුතු_නවම්_මැදින්_බක්_වෙසක්_පොසොන්_ඇසළ_නිකිණි_බිනර_වප්_ඉල්_උඳුවප්".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),monthsShort:"දුරු_නව_මැදි_බක්_වෙස_පොසො_ඇස_නිකි_බින_වප්_ඉල්_උඳු".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),ordinal:function(_){return _},formats:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"විනාඩිය",mm:"විනාඩි %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sk.js b/node_modules/dayjs/locale/sk.js
new file mode 100644
index 0000000..b2707e3
--- /dev/null
+++ b/node_modules/dayjs/locale/sk.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sk=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e);function r(e){return e>1&&e<5&&1!=~~(e/10)}function o(e,t,n,o){var a=e+" ";switch(n){case"s":return t||o?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":o?"minútu":"minútou";case"mm":return t||o?a+(r(e)?"minúty":"minút"):a+"minútami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?a+(r(e)?"hodiny":"hodín"):a+"hodinami";case"d":return t||o?"deň":"dňom";case"dd":return t||o?a+(r(e)?"dni":"dní"):a+"dňami";case"M":return t||o?"mesiac":"mesiacom";case"MM":return t||o?a+(r(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return t||o?"rok":"rokom";case"yy":return t||o?a+(r(e)?"roky":"rokov"):a+"rokmi"}}var a={name:"sk",weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),months:"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),monthsShort:"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o}};return n.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sl.js b/node_modules/dayjs/locale/sl.js
new file mode 100644
index 0000000..b503c13
--- /dev/null
+++ b/node_modules/dayjs/locale/sl.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sl=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"čez %s",past:"pred %s",s:"nekaj sekund",m:"minuta",mm:"%d minut",h:"ura",hh:"%d ur",d:"dan",dd:"%d dni",M:"mesec",MM:"%d mesecev",y:"leto",yy:"%d let"}};return _.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sq.js b/node_modules/dayjs/locale/sq.js
new file mode 100644
index 0000000..99bca9a
--- /dev/null
+++ b/node_modules/dayjs/locale/sq.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sq=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),n={name:"sq",weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),weekStart:1,weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"}};return _.default.locale(n,null,!0),n}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sr-cyrl.js b/node_modules/dayjs/locale/sr-cyrl.js
new file mode 100644
index 0000000..90daeeb
--- /dev/null
+++ b/node_modules/dayjs/locale/sr-cyrl.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sr_cyrl=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),a={words:{m:["један минут","једног минута"],mm:["%d минут","%d минута","%d минута"],h:["један сат","једног сата"],hh:["%d сат","%d сата","%d сати"],d:["један дан","једног дана"],dd:["%d дан","%d дана","%d дана"],M:["један месец","једног месеца"],MM:["%d месец","%d месеца","%d месеци"],y:["једну годину","једне године"],yy:["%d годину","%d године","%d година"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,r,d){var i=a.words[r];if(1===r.length)return"y"===r&&t?"једна година":d||t?i[0]:i[1];var m=a.correctGrammarCase(e,i);return"yy"===r&&t&&"%d годину"===m?e+" година":m.replace("%d",e)}},d={name:"sr-cyrl",weekdays:"Недеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота".split("_"),weekdaysShort:"Нед._Пон._Уто._Сре._Чет._Пет._Суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),months:"Јануар_Фебруар_Март_Април_Мај_Јун_Јул_Август_Септембар_Октобар_Новембар_Децембар".split("_"),monthsShort:"Јан._Феб._Мар._Апр._Мај_Јун_Јул_Авг._Сеп._Окт._Нов._Дец.".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:a.relativeTimeFormatter,mm:a.relativeTimeFormatter,h:a.relativeTimeFormatter,hh:a.relativeTimeFormatter,d:a.relativeTimeFormatter,dd:a.relativeTimeFormatter,M:a.relativeTimeFormatter,MM:a.relativeTimeFormatter,y:a.relativeTimeFormatter,yy:a.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return r.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sr.js b/node_modules/dayjs/locale/sr.js
new file mode 100644
index 0000000..35a5b55
--- /dev/null
+++ b/node_modules/dayjs/locale/sr.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sr=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),r={words:{m:["jedan minut","jednog minuta"],mm:["%d minut","%d minuta","%d minuta"],h:["jedan sat","jednog sata"],hh:["%d sat","%d sata","%d sati"],d:["jedan dan","jednog dana"],dd:["%d dan","%d dana","%d dana"],M:["jedan mesec","jednog meseca"],MM:["%d mesec","%d meseca","%d meseci"],y:["jednu godinu","jedne godine"],yy:["%d godinu","%d godine","%d godina"]},correctGrammarCase:function(e,t){return e%10>=1&&e%10<=4&&(e%100<10||e%100>=20)?e%10==1?t[0]:t[1]:t[2]},relativeTimeFormatter:function(e,t,a,d){var n=r.words[a];if(1===a.length)return"y"===a&&t?"jedna godina":d||t?n[0]:n[1];var i=r.correctGrammarCase(e,n);return"yy"===a&&t&&"%d godinu"===i?e+" godina":i.replace("%d",e)}},d={name:"sr",weekdays:"Nedelja_Ponedeljak_Utorak_Sreda_Četvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sre._Čet._Pet._Sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),months:"Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar".split("_"),monthsShort:"Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.".split("_"),weekStart:1,relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:r.relativeTimeFormatter,mm:r.relativeTimeFormatter,h:r.relativeTimeFormatter,hh:r.relativeTimeFormatter,d:r.relativeTimeFormatter,dd:r.relativeTimeFormatter,M:r.relativeTimeFormatter,MM:r.relativeTimeFormatter,y:r.relativeTimeFormatter,yy:r.relativeTimeFormatter},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"}};return a.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ss.js b/node_modules/dayjs/locale/ss.js
new file mode 100644
index 0000000..4df16a5
--- /dev/null
+++ b/node_modules/dayjs/locale/ss.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_ss=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(e),i={name:"ss",weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),weekStart:1,weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"}};return a.default.locale(i,null,!0),i}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sv-fi.js b/node_modules/dayjs/locale/sv-fi.js
new file mode 100644
index 0000000..5b2f8af
--- /dev/null
+++ b/node_modules/dayjs/locale/sv-fi.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sv_fi=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),d={name:"sv-fi",weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY, [kl.] HH.mm",LLLL:"dddd, D. MMMM YYYY, [kl.] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [kl.] HH.mm",llll:"ddd, D. MMM YYYY, [kl.] HH.mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"}};return a.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sv.js b/node_modules/dayjs/locale/sv.js
new file mode 100644
index 0000000..16e6d37
--- /dev/null
+++ b/node_modules/dayjs/locale/sv.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_sv=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e),d={name:"sv",weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return"["+e+(1===t||2===t?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"}};return a.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/sw.js b/node_modules/dayjs/locale/sw.js
new file mode 100644
index 0000000..a13bd44
--- /dev/null
+++ b/node_modules/dayjs/locale/sw.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_sw=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var i=e(a),t={name:"sw",weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return i.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ta.js b/node_modules/dayjs/locale/ta.js
new file mode 100644
index 0000000..406cf13
--- /dev/null
+++ b/node_modules/dayjs/locale/ta.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ta=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ta",weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/te.js b/node_modules/dayjs/locale/te.js
new file mode 100644
index 0000000..c7593db
--- /dev/null
+++ b/node_modules/dayjs/locale/te.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_te=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"te",weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tet.js b/node_modules/dayjs/locale/tet.js
new file mode 100644
index 0000000..aec6f68
--- /dev/null
+++ b/node_modules/dayjs/locale/tet.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tet=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=t(e),a={name:"tet",weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),weekStart:1,weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"}};return u.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tg.js b/node_modules/dayjs/locale/tg.js
new file mode 100644
index 0000000..7643103
--- /dev/null
+++ b/node_modules/dayjs/locale/tg.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_tg=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"tg",weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),weekStart:1,weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/th.js b/node_modules/dayjs/locale/th.js
new file mode 100644
index 0000000..185d4eb
--- /dev/null
+++ b/node_modules/dayjs/locale/th.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_th=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"th",weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"},ordinal:function(_){return _+"."}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tk.js b/node_modules/dayjs/locale/tk.js
new file mode 100644
index 0000000..1e737b5
--- /dev/null
+++ b/node_modules/dayjs/locale/tk.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tk=n(e.dayjs)}(this,(function(e){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(e),_={name:"tk",weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e){return e+"."}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tl-ph.js b/node_modules/dayjs/locale/tl-ph.js
new file mode 100644
index 0000000..885f8a9
--- /dev/null
+++ b/node_modules/dayjs/locale/tl-ph.js
@@ -0,0 +1 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],a):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tl_ph=a(e.dayjs)}(this,(function(e){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(e),t={name:"tl-ph",weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),weekStart:1,weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"}};return n.default.locale(t,null,!0),t}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tlh.js b/node_modules/dayjs/locale/tlh.js
new file mode 100644
index 0000000..03d8996
--- /dev/null
+++ b/node_modules/dayjs/locale/tlh.js
@@ -0,0 +1 @@
+!function(a,j){"object"==typeof exports&&"undefined"!=typeof module?module.exports=j(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],j):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_tlh=j(a.dayjs)}(this,(function(a){"use strict";function j(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=j(a),e={name:"tlh",weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),weekStart:1,weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return t.default.locale(e,null,!0),e}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tr.js b/node_modules/dayjs/locale/tr.js
new file mode 100644
index 0000000..9c7844a
--- /dev/null
+++ b/node_modules/dayjs/locale/tr.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_tr=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var t=e(a),_={name:"tr",weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){return a+"."}};return t.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/types.d.ts b/node_modules/dayjs/locale/types.d.ts
new file mode 100644
index 0000000..2c24a64
--- /dev/null
+++ b/node_modules/dayjs/locale/types.d.ts
@@ -0,0 +1,33 @@
+declare interface ILocale {
+ name: string
+ weekdays?: string[]
+ months?: string[]
+ weekStart?: number
+ weekdaysShort?: string[]
+ monthsShort?: string[]
+ weekdaysMin?: string[]
+ ordinal?: (n: number) => number | string
+ formats: Partial<{
+ LT: string
+ LTS: string
+ L: string
+ LL: string
+ LLL: string
+ LLLL: string
+ }>
+ relativeTime: Partial<{
+ future: string
+ past: string
+ s: string
+ m: string
+ mm: string
+ h: string
+ hh: string
+ d: string
+ dd: string
+ M: string
+ MM: string
+ y: string
+ yy: string
+ }>
+}
diff --git a/node_modules/dayjs/locale/tzl.js b/node_modules/dayjs/locale/tzl.js
new file mode 100644
index 0000000..2b1d598
--- /dev/null
+++ b/node_modules/dayjs/locale/tzl.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_tzl=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"tzl",weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),weekStart:1,weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"}};return t.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tzm-latn.js b/node_modules/dayjs/locale/tzm-latn.js
new file mode 100644
index 0000000..3f7cdd4
--- /dev/null
+++ b/node_modules/dayjs/locale/tzm-latn.js
@@ -0,0 +1 @@
+!function(a,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],s):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_tzm_latn=s(a.dayjs)}(this,(function(a){"use strict";function s(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=s(a),i={name:"tzm-latn",weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekStart:6,weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"}};return n.default.locale(i,null,!0),i}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/tzm.js b/node_modules/dayjs/locale/tzm.js
new file mode 100644
index 0000000..e4c4031
--- /dev/null
+++ b/node_modules/dayjs/locale/tzm.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_tzm=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"tzm",weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekStart:6,weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ug-cn.js b/node_modules/dayjs/locale/ug-cn.js
new file mode 100644
index 0000000..995c3b3
--- /dev/null
+++ b/node_modules/dayjs/locale/ug-cn.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ug_cn=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ug-cn",weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekStart:1,weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/uk.js b/node_modules/dayjs/locale/uk.js
new file mode 100644
index 0000000..537afb1
--- /dev/null
+++ b/node_modules/dayjs/locale/uk.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_uk=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),s="січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),n="січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),o=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function d(_,e,t){var s,n;return"m"===t?e?"хвилина":"хвилину":"h"===t?e?"година":"годину":_+" "+(s=+_,n={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[t].split("_"),s%10==1&&s%100!=11?n[0]:s%10>=2&&s%10<=4&&(s%100<10||s%100>=20)?n[1]:n[2])}var i=function(_,e){return o.test(e)?s[_.month()]:n[_.month()]};i.s=n,i.f=s;var r={name:"uk",weekdays:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),weekdaysShort:"ндл_пнд_втр_срд_чтв_птн_сбт".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),months:i,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:d,mm:d,h:d,hh:d,d:"день",dd:d,M:"місяць",MM:d,y:"рік",yy:d},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"}};return t.default.locale(r,null,!0),r}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/ur.js b/node_modules/dayjs/locale/ur.js
new file mode 100644
index 0000000..4f83c8b
--- /dev/null
+++ b/node_modules/dayjs/locale/ur.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_ur=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"ur",weekdays:"اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ".split("_"),months:"جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekStart:1,weekdaysShort:"اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ".split("_"),monthsShort:"جنوری_فروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekdaysMin:"اتوار_پیر_منگل_بدھ_جمعرات_جمعہ_ہفتہ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/uz-latn.js b/node_modules/dayjs/locale/uz-latn.js
new file mode 100644
index 0000000..85506ec
--- /dev/null
+++ b/node_modules/dayjs/locale/uz-latn.js
@@ -0,0 +1 @@
+!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(a="undefined"!=typeof globalThis?globalThis:a||self).dayjs_locale_uz_latn=e(a.dayjs)}(this,(function(a){"use strict";function e(a){return a&&"object"==typeof a&&"default"in a?a:{default:a}}var n=e(a),_={name:"uz-latn",weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),weekStart:1,weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"}};return n.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/uz.js b/node_modules/dayjs/locale/uz.js
new file mode 100644
index 0000000..aec69ee
--- /dev/null
+++ b/node_modules/dayjs/locale/uz.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_uz=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"uz",weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),weekStart:1,weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/vi.js b/node_modules/dayjs/locale/vi.js
new file mode 100644
index 0000000..ee33954
--- /dev/null
+++ b/node_modules/dayjs/locale/vi.js
@@ -0,0 +1 @@
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],n):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_locale_vi=n(t.dayjs)}(this,(function(t){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var h=n(t),_={name:"vi",weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"}};return h.default.locale(_,null,!0),_}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/x-pseudo.js b/node_modules/dayjs/locale/x-pseudo.js
new file mode 100644
index 0000000..c1215d6
--- /dev/null
+++ b/node_modules/dayjs/locale/x-pseudo.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_x_pseudo=t(e.dayjs)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=t(e),d={name:"x-pseudo",weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),weekStart:1,weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"}};return _.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/yo.js b/node_modules/dayjs/locale/yo.js
new file mode 100644
index 0000000..b12b37b
--- /dev/null
+++ b/node_modules/dayjs/locale/yo.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_yo=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),a={name:"yo",weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),weekStart:1,weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"}};return t.default.locale(a,null,!0),a}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/zh-cn.js b/node_modules/dayjs/locale/zh-cn.js
new file mode 100644
index 0000000..21cf228
--- /dev/null
+++ b/node_modules/dayjs/locale/zh-cn.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh_cn=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,_){return"W"===_?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,_){var t=100*e+_;return t<600?"凌晨":t<900?"早上":t<1100?"上午":t<1300?"中午":t<1800?"下午":"晚上"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/zh-hk.js b/node_modules/dayjs/locale/zh-hk.js
new file mode 100644
index 0000000..f4b220d
--- /dev/null
+++ b/node_modules/dayjs/locale/zh-hk.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_zh_hk=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh-hk",months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),ordinal:function(_,e){return"W"===e?_+"週":_+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d 分鐘",h:"一小時",hh:"%d 小時",d:"一天",dd:"%d 天",M:"一個月",MM:"%d 個月",y:"一年",yy:"%d 年"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/zh-tw.js b/node_modules/dayjs/locale/zh-tw.js
new file mode 100644
index 0000000..5970f17
--- /dev/null
+++ b/node_modules/dayjs/locale/zh-tw.js
@@ -0,0 +1 @@
+!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],e):(_="undefined"!=typeof globalThis?globalThis:_||self).dayjs_locale_zh_tw=e(_.dayjs)}(this,(function(_){"use strict";function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"zh-tw",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_,e){return"W"===e?_+"週":_+"日"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"},meridiem:function(_,e){var t=100*_+e;return t<600?"凌晨":t<900?"早上":t<1100?"上午":t<1300?"中午":t<1800?"下午":"晚上"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/locale/zh.js b/node_modules/dayjs/locale/zh.js
new file mode 100644
index 0000000..2e80015
--- /dev/null
+++ b/node_modules/dayjs/locale/zh.js
@@ -0,0 +1 @@
+!function(e,_){"object"==typeof exports&&"undefined"!=typeof module?module.exports=_(require("dayjs")):"function"==typeof define&&define.amd?define(["dayjs"],_):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh=_(e.dayjs)}(this,(function(e){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=_(e),d={name:"zh",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,_){return"W"===_?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s后",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,_){var t=100*e+_;return t<600?"凌晨":t<900?"早上":t<1100?"上午":t<1300?"中午":t<1800?"下午":"晚上"}};return t.default.locale(d,null,!0),d}));
\ No newline at end of file
diff --git a/node_modules/dayjs/package.json b/node_modules/dayjs/package.json
new file mode 100644
index 0000000..7f053d5
--- /dev/null
+++ b/node_modules/dayjs/package.json
@@ -0,0 +1,99 @@
+{
+ "name": "dayjs",
+ "version": "1.11.7",
+ "description": "2KB immutable date time library alternative to Moment.js with the same modern API ",
+ "main": "dayjs.min.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "TZ=Pacific/Auckland npm run test-tz && TZ=Europe/London npm run test-tz && TZ=America/Whitehorse npm run test-tz && npm run test-tz && jest",
+ "test-tz": "date && jest test/timezone.test --coverage=false",
+ "lint": "./node_modules/.bin/eslint src/* test/* build/*",
+ "prettier": "prettier --write \"docs/**/*.md\"",
+ "babel": "cross-env BABEL_ENV=build babel src --out-dir esm --copy-files && node build/esm",
+ "build": "cross-env BABEL_ENV=build node build && npm run size",
+ "sauce": "npx karma start karma.sauce.conf.js",
+ "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2 && npm run sauce -- 3",
+ "size": "size-limit && gzip-size dayjs.min.js"
+ },
+ "pre-commit": [
+ "lint"
+ ],
+ "size-limit": [
+ {
+ "limit": "2.99 KB",
+ "path": "dayjs.min.js"
+ }
+ ],
+ "jest": {
+ "roots": [
+ "test"
+ ],
+ "testRegex": "test/(.*?/)?.*test.js$",
+ "testURL": "http://localhost",
+ "coverageDirectory": "./coverage/",
+ "collectCoverage": true,
+ "collectCoverageFrom": [
+ "src/**/*"
+ ]
+ },
+ "release": {
+ "prepare": [
+ {
+ "path": "@semantic-release/changelog"
+ },
+ [
+ "@semantic-release/git",
+ {
+ "assets": [
+ "CHANGELOG.md"
+ ]
+ }
+ ]
+ ]
+ },
+ "keywords": [
+ "dayjs",
+ "date",
+ "time",
+ "immutable",
+ "moment"
+ ],
+ "author": "iamkun",
+ "license": "MIT",
+ "homepage": "https://day.js.org",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/iamkun/dayjs.git"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.0.0-beta.44",
+ "@babel/core": "^7.0.0-beta.44",
+ "@babel/node": "^7.0.0-beta.44",
+ "@babel/preset-env": "^7.0.0-beta.44",
+ "babel-core": "^7.0.0-bridge.0",
+ "babel-jest": "^22.4.3",
+ "babel-plugin-external-helpers": "^6.22.0",
+ "cross-env": "^5.1.6",
+ "eslint": "^4.19.1",
+ "eslint-config-airbnb-base": "^12.1.0",
+ "eslint-plugin-import": "^2.10.0",
+ "eslint-plugin-jest": "^21.15.0",
+ "gzip-size-cli": "^2.1.0",
+ "jasmine-core": "^2.99.1",
+ "jest": "^22.4.3",
+ "karma": "^2.0.2",
+ "karma-jasmine": "^1.1.2",
+ "karma-sauce-launcher": "^1.1.0",
+ "mockdate": "^2.0.2",
+ "moment": "2.29.2",
+ "moment-timezone": "0.5.31",
+ "ncp": "^2.0.0",
+ "pre-commit": "^1.2.2",
+ "prettier": "^1.16.1",
+ "rollup": "^2.45.1",
+ "rollup-plugin-babel": "^4.4.0",
+ "rollup-plugin-terser": "^7.0.2",
+ "size-limit": "^0.18.0",
+ "typescript": "^2.8.3"
+ }
+}
diff --git a/node_modules/dayjs/plugin/advancedFormat.d.ts b/node_modules/dayjs/plugin/advancedFormat.d.ts
new file mode 100644
index 0000000..30ec75e
--- /dev/null
+++ b/node_modules/dayjs/plugin/advancedFormat.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/advancedFormat.js b/node_modules/dayjs/plugin/advancedFormat.js
new file mode 100644
index 0000000..88d62e7
--- /dev/null
+++ b/node_modules/dayjs/plugin/advancedFormat.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){"use strict";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return r.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return r.ordinal(t.week(),"W");case"w":case"ww":return s.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return s.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return s.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}}));return n.bind(this)(a)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/arraySupport.d.ts b/node_modules/dayjs/plugin/arraySupport.d.ts
new file mode 100644
index 0000000..e4e44b2
--- /dev/null
+++ b/node_modules/dayjs/plugin/arraySupport.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare module 'dayjs' {
+ interface ConfigTypeMap {
+ arraySupport: [number?, number?, number?, number?, number?, number?, number?]
+ }
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/arraySupport.js b/node_modules/dayjs/plugin/arraySupport.js
new file mode 100644
index 0000000..b16675f
--- /dev/null
+++ b/node_modules/dayjs/plugin/arraySupport.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_arraySupport=t()}(this,(function(){"use strict";return function(e,t,n){var o=t.prototype,i=function(e){var t=e.date,o=e.utc;return Array.isArray(t)?o?t.length?new Date(Date.UTC.apply(null,t)):new Date:1===t.length?n(String(t[0])).toDate():new(Function.prototype.bind.apply(Date,[null].concat(t))):t},a=o.parse;o.parse=function(e){e.date=i.bind(this)(e),a.bind(this)(e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/badMutable.d.ts b/node_modules/dayjs/plugin/badMutable.d.ts
new file mode 100644
index 0000000..30ec75e
--- /dev/null
+++ b/node_modules/dayjs/plugin/badMutable.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/badMutable.js b/node_modules/dayjs/plugin/badMutable.js
new file mode 100644
index 0000000..68270cc
--- /dev/null
+++ b/node_modules/dayjs/plugin/badMutable.js
@@ -0,0 +1 @@
+!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_badMutable=i()}(this,(function(){"use strict";return function(t,i){var n=i.prototype;n.$g=function(t,i,n){return this.$utils().u(t)?this[i]:this.$set(n,t)},n.set=function(t,i){return this.$set(t,i)};var e=n.startOf;n.startOf=function(t,i){return this.$d=e.bind(this)(t,i).toDate(),this.init(),this};var s=n.add;n.add=function(t,i){return this.$d=s.bind(this)(t,i).toDate(),this.init(),this};var o=n.locale;n.locale=function(t,i){return t?(this.$L=o.bind(this)(t,i).$L,this):this.$L};var r=n.daysInMonth;n.daysInMonth=function(){return r.bind(this.clone())()};var u=n.isSame;n.isSame=function(t,i){return u.bind(this.clone())(t,i)};var f=n.isBefore;n.isBefore=function(t,i){return f.bind(this.clone())(t,i)};var d=n.isAfter;n.isAfter=function(t,i){return d.bind(this.clone())(t,i)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/bigIntSupport.d.ts b/node_modules/dayjs/plugin/bigIntSupport.d.ts
new file mode 100644
index 0000000..d9f2f39
--- /dev/null
+++ b/node_modules/dayjs/plugin/bigIntSupport.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs'
+
+declare module 'dayjs' {
+ interface ConfigTypeMap {
+ bigIntSupport: BigInt
+ }
+ export function unix(t: BigInt): Dayjs
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/bigIntSupport.js b/node_modules/dayjs/plugin/bigIntSupport.js
new file mode 100644
index 0000000..0c7efac
--- /dev/null
+++ b/node_modules/dayjs/plugin/bigIntSupport.js
@@ -0,0 +1 @@
+!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs_plugin_bigIntSupport=e()}(this,(function(){"use strict";var n=function(n){return"bigint"==typeof n};return function(e,t,i){var o=t.prototype,u=function(e){var t=e.date;return n(t)?Number(t):t},r=o.parse;o.parse=function(n){n.date=u.bind(this)(n),r.bind(this)(n)};var f=i.unix;i.unix=function(e){var t=n(e)?Number(e):e;return f(t)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/buddhistEra.d.ts b/node_modules/dayjs/plugin/buddhistEra.d.ts
new file mode 100644
index 0000000..30ec75e
--- /dev/null
+++ b/node_modules/dayjs/plugin/buddhistEra.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/buddhistEra.js b/node_modules/dayjs/plugin/buddhistEra.js
new file mode 100644
index 0000000..58b137c
--- /dev/null
+++ b/node_modules/dayjs/plugin/buddhistEra.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_buddhistEra=e()}(this,(function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/(\[[^\]]+])|BBBB|BB/g,(function(t,n){var i,o=String(e.$y+543),f="BB"===t?[o.slice(-2),2]:[o,4];return n||(i=e.$utils()).s.apply(i,f.concat(["0"]))}));return i.bind(this)(n)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/calendar.d.ts b/node_modules/dayjs/plugin/calendar.d.ts
new file mode 100644
index 0000000..a8d064f
--- /dev/null
+++ b/node_modules/dayjs/plugin/calendar.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ calendar(referenceTime?: ConfigType, formats?: object): string
+ }
+}
diff --git a/node_modules/dayjs/plugin/calendar.js b/node_modules/dayjs/plugin/calendar.js
new file mode 100644
index 0000000..c577098
--- /dev/null
+++ b/node_modules/dayjs/plugin/calendar.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_calendar=t()}(this,(function(){"use strict";return function(e,t,a){var n="h:mm A",d={lastDay:"[Yesterday at] "+n,sameDay:"[Today at] "+n,nextDay:"[Tomorrow at] "+n,nextWeek:"dddd [at] "+n,lastWeek:"[Last] dddd [at] "+n,sameElse:"MM/DD/YYYY"};t.prototype.calendar=function(e,t){var n=t||this.$locale().calendar||d,o=a(e||void 0).startOf("d"),s=this.diff(o,"d",!0),i="sameElse",f=s<-6?i:s<-1?"lastWeek":s<0?"lastDay":s<1?"sameDay":s<2?"nextDay":s<7?"nextWeek":i,l=n[f]||d[f];return"function"==typeof l?l.call(this,a()):this.format(l)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/customParseFormat.d.ts b/node_modules/dayjs/plugin/customParseFormat.d.ts
new file mode 100644
index 0000000..1b41c0d
--- /dev/null
+++ b/node_modules/dayjs/plugin/customParseFormat.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs'
+
+declare interface PluginOptions {
+ parseTwoDigitYear?: (yearString: string) => number
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/customParseFormat.js b/node_modules/dayjs/plugin/customParseFormat.js
new file mode 100644
index 0000000..66d6089
--- /dev/null
+++ b/node_modules/dayjs/plugin/customParseFormat.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,i=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[r,a("seconds")],ss:[r,a("seconds")],m:[r,a("minutes")],mm:[r,a("minutes")],H:[r,a("hours")],h:[r,a("hours")],HH:[r,a("hours")],hh:[r,a("hours")],D:[r,a("day")],DD:[n,a("day")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[r,a("month")],MM:[n,a("month")],MMM:[i,function(e){var t=h("months"),n=(h("monthsShort")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,a("year")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\d{4}/,a("year")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date(("X"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date("")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date("")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(""))}else i.call(this,e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/dayOfYear.d.ts b/node_modules/dayjs/plugin/dayOfYear.d.ts
new file mode 100644
index 0000000..4fd6601
--- /dev/null
+++ b/node_modules/dayjs/plugin/dayOfYear.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ dayOfYear(): number
+ dayOfYear(value: number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/plugin/dayOfYear.js b/node_modules/dayjs/plugin/dayOfYear.js
new file mode 100644
index 0000000..4a57000
--- /dev/null
+++ b/node_modules/dayjs/plugin/dayOfYear.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_dayOfYear=t()}(this,(function(){"use strict";return function(e,t,n){t.prototype.dayOfYear=function(e){var t=Math.round((n(this).startOf("day")-n(this).startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"day")}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/devHelper.d.ts b/node_modules/dayjs/plugin/devHelper.d.ts
new file mode 100644
index 0000000..30ec75e
--- /dev/null
+++ b/node_modules/dayjs/plugin/devHelper.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/devHelper.js b/node_modules/dayjs/plugin/devHelper.js
new file mode 100644
index 0000000..a3f6daf
--- /dev/null
+++ b/node_modules/dayjs/plugin/devHelper.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_devHelper=t()}(this,(function(){"use strict";return function(e,t,o){if(!process||"production"!==process.env.NODE_ENV){var s=t.prototype,n=s.parse;s.parse=function(e){var t=e.date;return"string"==typeof t&&13===t.length&&console.warn("To parse a Unix timestamp like "+t+", you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds"),"number"==typeof t&&4===String(t).length&&console.warn("Guessing you may want to parse the Year "+t+", you should pass it as a String "+t+", not a Number. Otherwise, "+t+" will be treated as a Unix timestamp"),e.args.length>=2&&!o.p.customParseFormat&&console.warn("To parse a date-time string like "+t+" using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format"),n.bind(this)(e)};var a=o.locale;o.locale=function(e,t,s){return void 0===t&&"string"==typeof e&&(o.Ls[e]||console.warn("Guessing you may want to use locale "+e+", you have to load it before using it. https://day.js.org/docs/en/i18n/loading-into-nodejs")),a(e,t,s)}}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/duration.d.ts b/node_modules/dayjs/plugin/duration.d.ts
new file mode 100644
index 0000000..9675a80
--- /dev/null
+++ b/node_modules/dayjs/plugin/duration.d.ts
@@ -0,0 +1,88 @@
+import { PluginFunc } from 'dayjs'
+import { OpUnitType, UnitTypeLongPlural } from 'dayjs';
+
+declare const plugin: PluginFunc
+export as namespace plugin;
+export = plugin
+
+declare namespace plugin {
+ /**
+ * @deprecated Please use more strict types
+ */
+ type DurationInputType = string | number | object
+ /**
+ * @deprecated Please use more strict types
+ */
+ type DurationAddType = number | object | Duration
+
+ type DurationUnitsObjectType = Partial<{
+ [unit in Exclude | "weeks"]: number
+ }>;
+ type DurationUnitType = Exclude
+ type CreateDurationType =
+ ((units: DurationUnitsObjectType) => Duration)
+ & ((time: number, unit?: DurationUnitType) => Duration)
+ & ((ISO_8601: string) => Duration)
+ type AddDurationType = CreateDurationType & ((duration: Duration) => Duration)
+
+ interface Duration {
+ new (input: string | number | object, unit?: string, locale?: string): Duration
+
+ clone(): Duration
+
+ humanize(withSuffix?: boolean): string
+
+ milliseconds(): number
+ asMilliseconds(): number
+
+ seconds(): number
+ asSeconds(): number
+
+ minutes(): number
+ asMinutes(): number
+
+ hours(): number
+ asHours(): number
+
+ days(): number
+ asDays(): number
+
+ weeks(): number
+ asWeeks(): number
+
+ months(): number
+ asMonths(): number
+
+ years(): number
+ asYears(): number
+
+ as(unit: DurationUnitType): number
+
+ get(unit: DurationUnitType): number
+
+ add: AddDurationType
+
+ subtract: AddDurationType
+
+ toJSON(): string
+
+ toISOString(): string
+
+ format(formatStr?: string): string
+
+ locale(locale: string): Duration
+ }
+}
+
+declare module 'dayjs' {
+ interface Dayjs {
+ add(duration: plugin.Duration): Dayjs
+ subtract(duration: plugin.Duration): Dayjs
+ }
+
+ /**
+ * @param time If unit is not present, time treated as number of milliseconds
+ */
+ export const duration: plugin.CreateDurationType;
+ export function isDuration(d: any): d is plugin.Duration
+}
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/duration.js b/node_modules/dayjs/plugin/duration.js
new file mode 100644
index 0000000..bd1c1a2
--- /dev/null
+++ b/node_modules/dayjs/plugin/duration.js
@@ -0,0 +1 @@
+!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){"use strict";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+"s"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:""+y(t)+s}:{negative:!1,format:""+t+s}:{negative:!1,format:""}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if("string"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,"Y"),s=g(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,"D"),e=g(this.$d.hours,"H"),r=g(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,"S"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?"T":"",d=(h?"-":"")+"P"+t.format+s.format+i.format+a+e.format+r.format+u.format;return"P"===d||"-P"===d?"P0D":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:s.s(this.$d.years,2,"0"),YYYY:s.s(this.$d.years,4,"0"),M:this.$d.months,MM:s.s(this.$d.months,2,"0"),D:this.$d.days,DD:s.s(this.$d.days,2,"0"),H:this.$d.hours,HH:s.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,"0"),SSS:s.s(this.$d.milliseconds,3,"0")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return"milliseconds"===n?s%=1e3:s="weeks"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get("milliseconds")},y.asMilliseconds=function(){return this.as("milliseconds")},y.seconds=function(){return this.get("seconds")},y.asSeconds=function(){return this.as("seconds")},y.minutes=function(){return this.get("minutes")},y.asMinutes=function(){return this.as("minutes")},y.hours=function(){return this.get("hours")},y.asHours=function(){return this.as("hours")},y.days=function(){return this.get("days")},y.asDays=function(){return this.as("days")},y.weeks=function(){return this.get("weeks")},y.asWeeks=function(){return this.as("weeks")},y.months=function(){return this.get("months")},y.asMonths=function(){return this.as("months")},y.years=function(){return this.get("years")},y.asYears=function(){return this.as("years")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isBetween.d.ts b/node_modules/dayjs/plugin/isBetween.d.ts
new file mode 100644
index 0000000..431fff8
--- /dev/null
+++ b/node_modules/dayjs/plugin/isBetween.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isBetween(a: ConfigType, b: ConfigType, c?: OpUnitType | null, d?: '()' | '[]' | '[)' | '(]'): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isBetween.js b/node_modules/dayjs/plugin/isBetween.js
new file mode 100644
index 0000000..68046cb
--- /dev/null
+++ b/node_modules/dayjs/plugin/isBetween.js
@@ -0,0 +1 @@
+!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){"use strict";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r="("===(f=f||"()")[0],u=")"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isLeapYear.d.ts b/node_modules/dayjs/plugin/isLeapYear.d.ts
new file mode 100644
index 0000000..5be7409
--- /dev/null
+++ b/node_modules/dayjs/plugin/isLeapYear.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isLeapYear(): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isLeapYear.js b/node_modules/dayjs/plugin/isLeapYear.js
new file mode 100644
index 0000000..030bd46
--- /dev/null
+++ b/node_modules/dayjs/plugin/isLeapYear.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isLeapYear=t()}(this,(function(){"use strict";return function(e,t){t.prototype.isLeapYear=function(){return this.$y%4==0&&this.$y%100!=0||this.$y%400==0}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isMoment.d.ts b/node_modules/dayjs/plugin/isMoment.d.ts
new file mode 100644
index 0000000..dac24f6
--- /dev/null
+++ b/node_modules/dayjs/plugin/isMoment.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+
+ export function isMoment(input: any): boolean
+
+}
diff --git a/node_modules/dayjs/plugin/isMoment.js b/node_modules/dayjs/plugin/isMoment.js
new file mode 100644
index 0000000..be26412
--- /dev/null
+++ b/node_modules/dayjs/plugin/isMoment.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isMoment=n()}(this,(function(){"use strict";return function(e,n,t){t.isMoment=function(e){return t.isDayjs(e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isSameOrAfter.d.ts b/node_modules/dayjs/plugin/isSameOrAfter.d.ts
new file mode 100644
index 0000000..1c8c264
--- /dev/null
+++ b/node_modules/dayjs/plugin/isSameOrAfter.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isSameOrAfter(date: ConfigType, unit?: OpUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isSameOrAfter.js b/node_modules/dayjs/plugin/isSameOrAfter.js
new file mode 100644
index 0000000..76f8a33
--- /dev/null
+++ b/node_modules/dayjs/plugin/isSameOrAfter.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){"use strict";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isSameOrBefore.d.ts b/node_modules/dayjs/plugin/isSameOrBefore.d.ts
new file mode 100644
index 0000000..1df5492
--- /dev/null
+++ b/node_modules/dayjs/plugin/isSameOrBefore.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isSameOrBefore(date: ConfigType, unit?: OpUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isSameOrBefore.js b/node_modules/dayjs/plugin/isSameOrBefore.js
new file mode 100644
index 0000000..57a767e
--- /dev/null
+++ b/node_modules/dayjs/plugin/isSameOrBefore.js
@@ -0,0 +1 @@
+!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){"use strict";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isToday.d.ts b/node_modules/dayjs/plugin/isToday.d.ts
new file mode 100644
index 0000000..04ac581
--- /dev/null
+++ b/node_modules/dayjs/plugin/isToday.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isToday(): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isToday.js b/node_modules/dayjs/plugin/isToday.js
new file mode 100644
index 0000000..ee9f9cd
--- /dev/null
+++ b/node_modules/dayjs/plugin/isToday.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isToday=o()}(this,(function(){"use strict";return function(e,o,t){o.prototype.isToday=function(){var e="YYYY-MM-DD",o=t();return this.format(e)===o.format(e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isTomorrow.d.ts b/node_modules/dayjs/plugin/isTomorrow.d.ts
new file mode 100644
index 0000000..08110b6
--- /dev/null
+++ b/node_modules/dayjs/plugin/isTomorrow.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isTomorrow(): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isTomorrow.js b/node_modules/dayjs/plugin/isTomorrow.js
new file mode 100644
index 0000000..ca85044
--- /dev/null
+++ b/node_modules/dayjs/plugin/isTomorrow.js
@@ -0,0 +1 @@
+!function(o,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(o="undefined"!=typeof globalThis?globalThis:o||self).dayjs_plugin_isTomorrow=e()}(this,(function(){"use strict";return function(o,e,t){e.prototype.isTomorrow=function(){var o="YYYY-MM-DD",e=t().add(1,"day");return this.format(o)===e.format(o)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isYesterday.d.ts b/node_modules/dayjs/plugin/isYesterday.d.ts
new file mode 100644
index 0000000..2d8ae9e
--- /dev/null
+++ b/node_modules/dayjs/plugin/isYesterday.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isYesterday(): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isYesterday.js b/node_modules/dayjs/plugin/isYesterday.js
new file mode 100644
index 0000000..b63b68a
--- /dev/null
+++ b/node_modules/dayjs/plugin/isYesterday.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isYesterday=t()}(this,(function(){"use strict";return function(e,t,n){t.prototype.isYesterday=function(){var e="YYYY-MM-DD",t=n().subtract(1,"day");return this.format(e)===t.format(e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isoWeek.d.ts b/node_modules/dayjs/plugin/isoWeek.d.ts
new file mode 100644
index 0000000..26c591b
--- /dev/null
+++ b/node_modules/dayjs/plugin/isoWeek.d.ts
@@ -0,0 +1,27 @@
+import { PluginFunc, OpUnitType, ConfigType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+type ISOUnitType = OpUnitType | 'isoWeek';
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isoWeekYear(): number
+ isoWeek(): number
+ isoWeek(value: number): Dayjs
+
+ isoWeekday(): number
+ isoWeekday(value: number): Dayjs
+
+ startOf(unit: ISOUnitType): Dayjs
+
+ endOf(unit: ISOUnitType): Dayjs
+
+ isSame(date: ConfigType, unit?: ISOUnitType): boolean
+
+ isBefore(date: ConfigType, unit?: ISOUnitType): boolean
+
+ isAfter(date: ConfigType, unit?: ISOUnitType): boolean
+ }
+}
diff --git a/node_modules/dayjs/plugin/isoWeek.js b/node_modules/dayjs/plugin/isoWeek.js
new file mode 100644
index 0000000..202ade7
--- /dev/null
+++ b/node_modules/dayjs/plugin/isoWeek.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){"use strict";var e="day";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf("year"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,"week")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return"isoweek"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):n.bind(this)(e,t)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/isoWeeksInYear.d.ts b/node_modules/dayjs/plugin/isoWeeksInYear.d.ts
new file mode 100644
index 0000000..2bc02cd
--- /dev/null
+++ b/node_modules/dayjs/plugin/isoWeeksInYear.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ isoWeeksInYear(): number
+ }
+}
diff --git a/node_modules/dayjs/plugin/isoWeeksInYear.js b/node_modules/dayjs/plugin/isoWeeksInYear.js
new file mode 100644
index 0000000..2bd20cd
--- /dev/null
+++ b/node_modules/dayjs/plugin/isoWeeksInYear.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeeksInYear=n()}(this,(function(){"use strict";return function(e,n){n.prototype.isoWeeksInYear=function(){var e=this.isLeapYear(),n=this.endOf("y").day();return 4===n||e&&5===n?53:52}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/localeData.d.ts b/node_modules/dayjs/plugin/localeData.d.ts
new file mode 100644
index 0000000..ae9e557
--- /dev/null
+++ b/node_modules/dayjs/plugin/localeData.d.ts
@@ -0,0 +1,44 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ type WeekdayNames = [string, string, string, string, string, string, string];
+ type MonthNames = [string, string, string, string, string, string, string, string, string, string, string, string];
+
+ interface InstanceLocaleDataReturn {
+ firstDayOfWeek(): number;
+ weekdays(instance?: Dayjs): WeekdayNames;
+ weekdaysShort(instance?: Dayjs): WeekdayNames;
+ weekdaysMin(instance?: Dayjs): WeekdayNames;
+ months(instance?: Dayjs): MonthNames;
+ monthsShort(instance?: Dayjs): MonthNames;
+ longDateFormat(format: string): string;
+ meridiem(hour?: number, minute?: number, isLower?: boolean): string;
+ ordinal(n: number): string
+ }
+
+ interface GlobalLocaleDataReturn {
+ firstDayOfWeek(): number;
+ weekdays(): WeekdayNames;
+ weekdaysShort(): WeekdayNames;
+ weekdaysMin(): WeekdayNames;
+ months(): MonthNames;
+ monthsShort(): MonthNames;
+ longDateFormat(format: string): string;
+ meridiem(hour?: number, minute?: number, isLower?: boolean): string;
+ ordinal(n: number): string
+ }
+
+ interface Dayjs {
+ localeData(): InstanceLocaleDataReturn;
+ }
+
+ export function weekdays(localOrder?: boolean): WeekdayNames;
+ export function weekdaysShort(localOrder?: boolean): WeekdayNames;
+ export function weekdaysMin(localOrder?: boolean): WeekdayNames;
+ export function monthsShort(): MonthNames;
+ export function months(): MonthNames;
+ export function localeData(): GlobalLocaleDataReturn;
+}
diff --git a/node_modules/dayjs/plugin/localeData.js b/node_modules/dayjs/plugin/localeData.js
new file mode 100644
index 0000000..55e01ee
--- /dev/null
+++ b/node_modules/dayjs/plugin/localeData.js
@@ -0,0 +1 @@
+!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){"use strict";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format("MMMM"):u(n,"months")},monthsShort:function(e){return e?e.format("MMM"):u(n,"monthsShort","months",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format("dddd"):u(n,"weekdays")},weekdaysMin:function(e){return e?e.format("dd"):u(n,"weekdaysMin","weekdays",2)},weekdaysShort:function(e){return e?e.format("ddd"):u(n,"weekdaysShort","weekdays",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),"months")},t.monthsShort=function(){return u(i(),"monthsShort","months",3)},t.weekdays=function(n){return u(i(),"weekdays",null,null,n)},t.weekdaysShort=function(n){return u(i(),"weekdaysShort","weekdays",3,n)},t.weekdaysMin=function(n){return u(i(),"weekdaysMin","weekdays",2,n)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/localizedFormat.d.ts b/node_modules/dayjs/plugin/localizedFormat.d.ts
new file mode 100644
index 0000000..30ec75e
--- /dev/null
+++ b/node_modules/dayjs/plugin/localizedFormat.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/localizedFormat.js b/node_modules/dayjs/plugin/localizedFormat.js
new file mode 100644
index 0000000..2aa4665
--- /dev/null
+++ b/node_modules/dayjs/plugin/localizedFormat.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t="YYYY-MM-DDTHH:mm:ssZ");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/minMax.d.ts b/node_modules/dayjs/plugin/minMax.d.ts
new file mode 100644
index 0000000..f167350
--- /dev/null
+++ b/node_modules/dayjs/plugin/minMax.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ export function max(dayjs: Dayjs[]): Dayjs
+ export function max(...dayjs: Dayjs[]): Dayjs
+ export function min(dayjs: Dayjs[]): Dayjs
+ export function min(...dayjs: Dayjs[]): Dayjs
+}
diff --git a/node_modules/dayjs/plugin/minMax.js b/node_modules/dayjs/plugin/minMax.js
new file mode 100644
index 0000000..ef427f9
--- /dev/null
+++ b/node_modules/dayjs/plugin/minMax.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_minMax=n()}(this,(function(){"use strict";return function(e,n,t){var i=function(e,n){if(!n||!n.length||!n[0]||1===n.length&&!n[0].length)return null;var t;1===n.length&&n[0].length>0&&(n=n[0]);t=n[0];for(var i=1;i=0?1:u.date()),s=a.year||u.year(),d=a.month>=0?a.month:a.year||a.day?0:u.month(),f=a.hour||0,b=a.minute||0,h=a.second||0,y=a.millisecond||0;return o?new Date(Date.UTC(s,d,c,f,b,h,y)):new Date(s,d,c,f,b,h,y)}return r},o=i.parse;i.parse=function(t){t.date=r.bind(this)(t),o.bind(this)(t)};var a=i.set,u=i.add,c=i.subtract,s=function(t,n,e,i){void 0===i&&(i=1);var r=Object.keys(n),o=this;return r.forEach((function(e){o=t.bind(o)(n[e]*i,e)})),o};i.set=function(t,n){return n=void 0===n?t:n,"Object"===t.constructor.name?s.bind(this)((function(t,n){return a.bind(this)(n,t)}),n,t):a.bind(this)(t,n)},i.add=function(t,n){return"Object"===t.constructor.name?s.bind(this)(u,t,n):u.bind(this)(t,n)},i.subtract=function(t,n){return"Object"===t.constructor.name?s.bind(this)(u,t,n,-1):c.bind(this)(t,n)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/pluralGetSet.d.ts b/node_modules/dayjs/plugin/pluralGetSet.d.ts
new file mode 100644
index 0000000..ab2d89a
--- /dev/null
+++ b/node_modules/dayjs/plugin/pluralGetSet.d.ts
@@ -0,0 +1,44 @@
+import { PluginFunc, UnitType, ConfigType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ years(): number
+
+ years(value: number): Dayjs
+
+ months(): number
+
+ months(value: number): Dayjs
+
+ dates(): number
+
+ dates(value: number): Dayjs
+
+ weeks(): number
+
+ weeks(value: number): Dayjs
+
+ days(): number
+
+ days(value: number): Dayjs
+
+ hours(): number
+
+ hours(value: number): Dayjs
+
+ minutes(): number
+
+ minutes(value: number): Dayjs
+
+ seconds(): number
+
+ seconds(value: number): Dayjs
+
+ milliseconds(): number
+
+ milliseconds(value: number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/plugin/pluralGetSet.js b/node_modules/dayjs/plugin/pluralGetSet.js
new file mode 100644
index 0000000..d758494
--- /dev/null
+++ b/node_modules/dayjs/plugin/pluralGetSet.js
@@ -0,0 +1 @@
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_pluralGetSet=o()}(this,(function(){"use strict";return function(e,o){var s=o.prototype;["milliseconds","seconds","minutes","hours","days","weeks","isoWeeks","months","quarters","years","dates"].forEach((function(e){s[e]=s[e.replace(/s$/,"")]}))}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/preParsePostFormat.d.ts b/node_modules/dayjs/plugin/preParsePostFormat.d.ts
new file mode 100644
index 0000000..30ec75e
--- /dev/null
+++ b/node_modules/dayjs/plugin/preParsePostFormat.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/node_modules/dayjs/plugin/preParsePostFormat.js b/node_modules/dayjs/plugin/preParsePostFormat.js
new file mode 100644
index 0000000..5611d10
--- /dev/null
+++ b/node_modules/dayjs/plugin/preParsePostFormat.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_preParsePostFormat=e()}(this,(function(){"use strict";return function(t,e){var o=e.prototype.parse;e.prototype.parse=function(t){if("string"==typeof t.date){var e=this.$locale();t.date=e&&e.preparse?e.preparse(t.date):t.date}return o.bind(this)(t)};var r=e.prototype.format;e.prototype.format=function(){for(var t=arguments.length,e=new Array(t),o=0;o number
+ thresholds?: RelativeTimeThreshold[]
+}
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ fromNow(withoutSuffix?: boolean): string
+ from(compared: ConfigType, withoutSuffix?: boolean): string
+ toNow(withoutSuffix?: boolean): string
+ to(compared: ConfigType, withoutSuffix?: boolean): string
+ }
+}
diff --git a/node_modules/dayjs/plugin/relativeTime.js b/node_modules/dayjs/plugin/relativeTime.js
new file mode 100644
index 0000000..898eee6
--- /dev/null
+++ b/node_modules/dayjs/plugin/relativeTime.js
@@ -0,0 +1 @@
+!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){"use strict";return function(r,e,t){r=r||{};var n=e.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=h.length,c=0;c0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(""+p)),a="string"==typeof v?v.replace("%d",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return"function"==typeof M?M(a):M.replace("%s",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/timezone.d.ts b/node_modules/dayjs/plugin/timezone.d.ts
new file mode 100644
index 0000000..d504f69
--- /dev/null
+++ b/node_modules/dayjs/plugin/timezone.d.ts
@@ -0,0 +1,20 @@
+import { PluginFunc, ConfigType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ tz(timezone?: string, keepLocalTime?: boolean): Dayjs
+ offsetName(type?: 'short' | 'long'): string | undefined
+ }
+
+ interface DayjsTimezone {
+ (date: ConfigType, timezone?: string): Dayjs
+ (date: ConfigType, format: string, timezone?: string): Dayjs
+ guess(): string
+ setDefault(timezone?: string): void
+ }
+
+ const tz: DayjsTimezone
+}
diff --git a/node_modules/dayjs/plugin/timezone.js b/node_modules/dayjs/plugin/timezone.js
new file mode 100644
index 0000000..fb6112a
--- /dev/null
+++ b/node_modules/dayjs/plugin/timezone.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){"use strict";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",o=t+"|"+i,r=e[o];return r||(r=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,v=r[0]+"-"+r[1]+"-"+r[2]+" "+l+":"+r[4]+":"+r[5]+":000",h=+e;return(o.utc(v).valueOf()-(h-=h%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString("en-US",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a).$set("millisecond",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,"minute")}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return"timezonename"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if("string"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/toArray.d.ts b/node_modules/dayjs/plugin/toArray.d.ts
new file mode 100644
index 0000000..45f1f0c
--- /dev/null
+++ b/node_modules/dayjs/plugin/toArray.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ toArray(): number[]
+ }
+}
diff --git a/node_modules/dayjs/plugin/toArray.js b/node_modules/dayjs/plugin/toArray.js
new file mode 100644
index 0000000..ac06750
--- /dev/null
+++ b/node_modules/dayjs/plugin/toArray.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_toArray=e()}(this,(function(){"use strict";return function(t,e){e.prototype.toArray=function(){return[this.$y,this.$M,this.$D,this.$H,this.$m,this.$s,this.$ms]}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/toObject.d.ts b/node_modules/dayjs/plugin/toObject.d.ts
new file mode 100644
index 0000000..ca12aaf
--- /dev/null
+++ b/node_modules/dayjs/plugin/toObject.d.ts
@@ -0,0 +1,20 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+interface DayjsObject {
+ years: number
+ months: number
+ date: number
+ hours: number
+ minutes: number
+ seconds: number
+ milliseconds: number
+}
+
+declare module 'dayjs' {
+ interface Dayjs {
+ toObject(): DayjsObject
+ }
+}
diff --git a/node_modules/dayjs/plugin/toObject.js b/node_modules/dayjs/plugin/toObject.js
new file mode 100644
index 0000000..573b49e
--- /dev/null
+++ b/node_modules/dayjs/plugin/toObject.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_toObject=e()}(this,(function(){"use strict";return function(t,e){e.prototype.toObject=function(){return{years:this.$y,months:this.$M,date:this.$D,hours:this.$H,minutes:this.$m,seconds:this.$s,milliseconds:this.$ms}}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/updateLocale.d.ts b/node_modules/dayjs/plugin/updateLocale.d.ts
new file mode 100644
index 0000000..ef1c01d
--- /dev/null
+++ b/node_modules/dayjs/plugin/updateLocale.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ export function updateLocale(localeName: string, customConfig: Record): Record
+}
diff --git a/node_modules/dayjs/plugin/updateLocale.js b/node_modules/dayjs/plugin/updateLocale.js
new file mode 100644
index 0000000..811d9e9
--- /dev/null
+++ b/node_modules/dayjs/plugin/updateLocale.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_updateLocale=n()}(this,(function(){"use strict";return function(e,n,t){t.updateLocale=function(e,n){var o=t.Ls[e];if(o)return(n?Object.keys(n):[]).forEach((function(e){o[e]=n[e]})),o}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/utc.d.ts b/node_modules/dayjs/plugin/utc.d.ts
new file mode 100644
index 0000000..544ea4e
--- /dev/null
+++ b/node_modules/dayjs/plugin/utc.d.ts
@@ -0,0 +1,19 @@
+import { PluginFunc, ConfigType } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+
+ utc(keepLocalTime?: boolean): Dayjs
+
+ local(): Dayjs
+
+ isUTC(): boolean
+
+ utcOffset(offset: number | string, keepLocalTime?: boolean): Dayjs
+ }
+
+ export function utc(config?: ConfigType, format?: string, strict?: boolean): Dayjs
+}
diff --git a/node_modules/dayjs/plugin/utc.js b/node_modules/dayjs/plugin/utc.js
new file mode 100644
index 0000000..af07564
--- /dev/null
+++ b/node_modules/dayjs/plugin/utc.js
@@ -0,0 +1 @@
+!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){"use strict";var t="minute",i=/[+-]\d\d(?::?\d\d)?/g,e=/([+-]|\d\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if("string"==typeof s&&(s=function(t){void 0===t&&(t="");var s=t.match(i);if(!s)return null;var f=(""+s[0]).match(e)||["-",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:"+"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return"s"===t&&this.$offset?n(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/weekOfYear.d.ts b/node_modules/dayjs/plugin/weekOfYear.d.ts
new file mode 100644
index 0000000..d988014
--- /dev/null
+++ b/node_modules/dayjs/plugin/weekOfYear.d.ts
@@ -0,0 +1,12 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ week(): number
+
+ week(value : number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/plugin/weekOfYear.js b/node_modules/dayjs/plugin/weekOfYear.js
new file mode 100644
index 0000000..7e234c4
--- /dev/null
+++ b/node_modules/dayjs/plugin/weekOfYear.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){"use strict";var e="week",t="year";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),"day");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,"millisecond"),o=this.diff(a,e,!0);return o<0?r(this).startOf("week").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/weekYear.d.ts b/node_modules/dayjs/plugin/weekYear.d.ts
new file mode 100644
index 0000000..df25331
--- /dev/null
+++ b/node_modules/dayjs/plugin/weekYear.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ weekYear(): number
+ }
+}
diff --git a/node_modules/dayjs/plugin/weekYear.js b/node_modules/dayjs/plugin/weekYear.js
new file mode 100644
index 0000000..d90d137
--- /dev/null
+++ b/node_modules/dayjs/plugin/weekYear.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){"use strict";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}}));
\ No newline at end of file
diff --git a/node_modules/dayjs/plugin/weekday.d.ts b/node_modules/dayjs/plugin/weekday.d.ts
new file mode 100644
index 0000000..87a8025
--- /dev/null
+++ b/node_modules/dayjs/plugin/weekday.d.ts
@@ -0,0 +1,12 @@
+import { PluginFunc } from 'dayjs'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs' {
+ interface Dayjs {
+ weekday(): number
+
+ weekday(value: number): Dayjs
+ }
+}
diff --git a/node_modules/dayjs/plugin/weekday.js b/node_modules/dayjs/plugin/weekday.js
new file mode 100644
index 0000000..ae2276b
--- /dev/null
+++ b/node_modules/dayjs/plugin/weekday.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){"use strict";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[TDesign](https://github.com/Tencent/tdesign) 适配微信小程序的组件库。
+
+## 预览
+
+小程序组件示例小程序,请使用微信扫码预览 ↓
+
+
+
+
+## 安装
+
+### 使用 NPM
+
+小程序已经支持使用 NPM 安装第三方包。
+
+具体使用方式,可以参考小程序官网文档: [《NPM 支持》](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html?search-key=npm)
+
+```bash
+npm i tdesign-miniprogram -S --production
+```
+
+> 建议使用 NPM,不再推荐“源码拷贝的方式”
+
+## 使用组件
+
+以按钮组件为例,只需要在 `JSON` 文件中引入按钮对应的自定义组件即可
+
+```json
+{
+ "usingComponents": {
+ "t-button": "tdesign-miniprogram/button/button"
+ }
+}
+```
+
+## 在开发者工具中预览
+
+```bash
+# 安装项目依赖
+npm install
+
+# 执行组件编译
+npm run dev
+```
+
+打开[微信开发者工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html),把 `_example` 目录添加进去就可以预览示例了。
+
+## 基础库版本
+
+最低基础库版本`^2.6.5`
+
+## 开源协议
+
+TDesign 遵循 [MIT 协议](https://github.com/Tencent/tdesign-miniprogram/LICENSE)。
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/.wechatide.ib.json b/node_modules/tdesign-miniprogram/miniprogram_dist/.wechatide.ib.json
new file mode 100644
index 0000000..461d4e1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/.wechatide.ib.json
@@ -0,0 +1,3895 @@
+{
+ "key": "TDesign",
+ "label": "Tdesign",
+ "components": {
+ "t-action-sheet": {
+ "key": "t-action-sheet",
+ "label": "动作面板",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-actionsheet.png",
+ "properties": [
+ {
+ "key": "cancelText",
+ "type": ["String"],
+ "desc": "设置取消按钮的文本",
+ "label": ""
+ },
+ {
+ "key": "count",
+ "type": ["Number"],
+ "desc": "设置每页展示菜单的数量,仅当 type=grid 时有效",
+ "label": ""
+ },
+ {
+ "key": "items",
+ "type": ["Array"],
+ "desc": "菜单项",
+ "label": ""
+ },
+ {
+ "key": "showCancel",
+ "type": ["Boolean"],
+ "desc": "是否显示取消按钮",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "展示类型,列表和表格形式展示",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "显示与隐藏",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "点击取消按钮时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:close",
+ "desc": "关闭时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:selected",
+ "desc": "选择菜单项时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./action-sheet/action-sheet"
+ },
+ "t-avatar-group": {
+ "key": "t-avatar-group",
+ "label": "头像组",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-avatar.png",
+ "properties": [
+ {
+ "key": "cascading",
+ "type": ["String"],
+ "desc": "图片之间的层叠关系,可选值:左侧图片在上和右侧图片在上",
+ "label": ""
+ },
+ {
+ "key": "collapseAvatar",
+ "type": ["String"],
+ "desc": "头像数量超出时,会出现一个头像折叠元素。该元素内容可自定义。默认为 `+N`。示例:`+5`,`...`, `更多`",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "能够同时显示的最多头像数量",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸,示例值:small/medium/large/24px/38px 等。优先级低于 Avatar.size",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-image", "t-class-content"],
+ "tpl": "",
+ "require": {
+ "t-avatar": "./avatar/avatar"
+ },
+ "path": "./avatar/avatar-group"
+ },
+ "t-avatar": {
+ "key": "t-avatar",
+ "label": "头像",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-avatar.png",
+ "properties": [
+ {
+ "key": "alt",
+ "type": ["String"],
+ "desc": "头像替换文本,仅当图片加载失败时有效",
+ "label": ""
+ },
+ {
+ "key": "badgeProps",
+ "type": ["Object"],
+ "desc": "头像右上角提示信息,继承 Badge 组件的全部特性。如:小红点,或者数字",
+ "label": ""
+ },
+ {
+ "key": "hideOnLoadFailed",
+ "type": ["Boolean"],
+ "desc": "加载失败时隐藏图片",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "图片地址",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "形状",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸,示例值:small/medium/large/24px/38px 等,默认为 large",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:error",
+ "desc": "图片加载失败时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./avatar/avatar"
+ },
+ "t-back-top": {
+ "key": "t-back-top",
+ "label": "回到顶部",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-backtop.png",
+ "properties": [
+ {
+ "key": "fixed",
+ "type": ["Boolean"],
+ "desc": "是否绝对定位固定到屏幕右下方",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "文案",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "预设的样式类型",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon", "t-class-text"],
+ "events": [
+ {
+ "key": "bind:to-top",
+ "desc": "点击触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./back-top/back-top"
+ },
+ "t-badge": {
+ "key": "t-badge",
+ "label": "徽标数",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-badge.png",
+ "properties": [
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "颜色",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "徽标内容,示例:`content='自定义内容'`。也可以使用默认插槽定义",
+ "label": ""
+ },
+ {
+ "key": "count",
+ "type": ["String", "Number"],
+ "desc": "徽标右上角内容。可以是数字,也可以是文字。如:'new'/3/99+。特殊:值为空表示使用插槽渲染",
+ "label": ""
+ },
+ {
+ "key": "dot",
+ "type": ["Boolean"],
+ "desc": "是否为红点",
+ "label": ""
+ },
+ {
+ "key": "maxCount",
+ "type": ["Number"],
+ "desc": "封顶的数字值",
+ "label": ""
+ },
+ {
+ "key": "offset",
+ "type": ["Array"],
+ "desc": "设置状态点的位置偏移,示例:[-10, 20] 或 ['10em', '8rem']",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "形状",
+ "label": ""
+ },
+ {
+ "key": "showZero",
+ "type": ["Boolean"],
+ "desc": "当数值为 0 时,是否展示徽标",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-count"],
+ "tpl": "",
+ "path": "./badge/badge"
+ },
+ "t-button": {
+ "key": "t-button",
+ "label": "按钮",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-button.png",
+ "properties": [
+ {
+ "key": "block",
+ "type": ["Boolean"],
+ "desc": "是否为块级元素",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "按钮内容",
+ "label": ""
+ },
+ {
+ "key": "customDataset",
+ "type": ["Object"],
+ "desc": "自定义 dataset,可通过 event.currentTarget.dataset.custom 获取",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用按钮",
+ "label": ""
+ },
+ {
+ "key": "ghost",
+ "type": ["Boolean"],
+ "desc": "是否为幽灵按钮(镂空按钮)",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否显示为加载状态",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "按钮形状,有 4 种:长方形、正方形、圆角长方形、圆形",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "组件尺寸",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "组件风格,依次为品牌色、危险色",
+ "label": ""
+ },
+ {
+ "key": "type",
+ "type": ["String"],
+ "desc": "同小程序的 formType",
+ "label": ""
+ },
+ {
+ "key": "variant",
+ "type": ["String"],
+ "desc": "按钮形式,基础、线框、文字",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon"],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "点击时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./button/button"
+ },
+ "t-cell-group": {
+ "key": "t-cell-group",
+ "label": "单元格组",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-cell.png",
+ "properties": [
+ {
+ "key": "bordered",
+ "type": ["Boolean"],
+ "desc": "是否显示组边框",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "单元格组标题",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "tpl": "",
+ "require": {
+ "t-cell": "./cell/cell"
+ },
+ "path": "./cell-group/cell-group"
+ },
+ "t-cell": {
+ "key": "t-cell",
+ "label": "单元格",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-cell.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "内容的对齐方式,默认居中对齐",
+ "label": ""
+ },
+ {
+ "key": "arrow",
+ "type": ["Boolean"],
+ "desc": "是否显示右侧箭头",
+ "label": ""
+ },
+ {
+ "key": "bordered",
+ "type": ["Boolean"],
+ "desc": "是否显示下边框",
+ "label": ""
+ },
+ {
+ "key": "description",
+ "type": ["String"],
+ "desc": "下方内容描述",
+ "label": ""
+ },
+ {
+ "key": "hover",
+ "type": ["Boolean"],
+ "desc": "是否开启点击反馈",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "主图",
+ "label": ""
+ },
+ {
+ "key": "jumpType",
+ "type": ["String"],
+ "desc": "链接跳转类型",
+ "label": ""
+ },
+ {
+ "key": "leftIcon",
+ "type": ["String"],
+ "desc": "左侧图标,出现在单元格标题的左侧",
+ "label": ""
+ },
+ {
+ "key": "note",
+ "type": ["String"],
+ "desc": "和标题同行的说明文字",
+ "label": ""
+ },
+ {
+ "key": "required",
+ "type": ["Boolean"],
+ "desc": "是否显示表单必填星号",
+ "label": ""
+ },
+ {
+ "key": "rightIcon",
+ "type": ["String"],
+ "desc": "最右侧图标",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "url",
+ "type": ["String"],
+ "desc": "点击后跳转链接地址。如果值为空,则表示不需要跳转",
+ "label": ""
+ }
+ ],
+ "externalClasses": [
+ "t-class",
+ "t-class-title",
+ "t-class-note",
+ "t-class-description",
+ "t-class-thumb",
+ "t-class-hover",
+ "t-class-left",
+ "t-class-right"
+ ],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "右侧内容",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./cell/cell"
+ },
+ "t-check-tag": {
+ "key": "t-check-tag",
+ "label": "可选标签",
+ "icon": "",
+ "properties": [
+ {
+ "key": "checked",
+ "type": ["Boolean"],
+ "desc": "标签选中的状态,默认风格(theme=default)才有选中态",
+ "label": ""
+ },
+ {
+ "key": "closable",
+ "type": ["Boolean"],
+ "desc": "标签是否可关闭",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String", "Number"],
+ "desc": "组件子元素",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "标签中的图标,可自定义图标呈现",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "标签类型,有三种:方形、圆角方形、标记型",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "标签尺寸",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "组件子元素",
+ "label": ""
+ },
+ {
+ "key": "bind:click",
+ "desc": "点击标签时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "check tag",
+ "path": "./check-tag/check-tag"
+ },
+ "t-checkbox-group": {
+ "key": "t-checkbox-group",
+ "label": "多选框组",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-checkbox.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "支持最多选中的数量",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "统一设置内部复选框 HTML 属性",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "以配置形式设置子元素。示例1:`['北京', '上海']` ,示例2: `[{ label: '全选', checkAll: true }, { label: '上海', value: 'shanghai' }]`。checkAll 值为 true 表示当前选项为「全选选项」",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Array"],
+ "desc": "选中值",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "值变化时触发。`context.current` 表示当前变化的数据项,如果是全选则为空;`context.type` 表示引起选中数据变化的是选中或是取消选中,`context.option` 表示当前变化的数据项",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-checkbox": "./checkbox/checkbox"
+ },
+ "path": "./checkbox-group/checkbox-group"
+ },
+ "t-checkbox": {
+ "key": "t-checkbox",
+ "label": "多选框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-checkbox.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "多选框和内容相对位置",
+ "label": ""
+ },
+ {
+ "key": "checkAll",
+ "type": ["Boolean"],
+ "desc": "用于标识是否为「全选选项」。单独使用无效,需在 CheckboxGroup 中使用",
+ "label": ""
+ },
+ {
+ "key": "checked",
+ "type": ["Boolean"],
+ "desc": "是否选中",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "多选框颜色",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "多选框内容",
+ "label": ""
+ },
+ {
+ "key": "contentDisabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件内容(content)触发选中",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["Array"],
+ "desc": "自定义选中图标和非选中图标。示例:[选中态图标地址,非选中态图标地址]",
+ "label": ""
+ },
+ {
+ "key": "indeterminate",
+ "type": ["Boolean"],
+ "desc": "是否为半选",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "主文案",
+ "label": ""
+ },
+ {
+ "key": "maxContentRow",
+ "type": ["Number"],
+ "desc": "内容最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "maxLabelRow",
+ "type": ["Number"],
+ "desc": "主文案最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "HTML 元素原生属性",
+ "label": ""
+ },
+ {
+ "key": "readonly",
+ "type": ["Boolean"],
+ "desc": "只读状态",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "多选框的值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "值变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./checkbox/checkbox"
+ },
+ "t-collapse-panel": {
+ "key": "t-collapse-panel",
+ "label": "折叠面板",
+ "icon": "",
+ "properties": [
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "折叠面板内容",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "禁止当前面板展开,优先级大于 Collapse 的同名属性",
+ "label": ""
+ },
+ {
+ "key": "expandIcon",
+ "type": ["Boolean"],
+ "desc": "当前折叠面板展开图标,优先级大于 Collapse 的同名属性",
+ "label": ""
+ },
+ {
+ "key": "header",
+ "type": ["String"],
+ "desc": "面板头内容",
+ "label": ""
+ },
+ {
+ "key": "headerRightContent",
+ "type": ["String"],
+ "desc": "面板头的右侧区域,一般用于呈现面板操作",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "当前面板唯一标识,如果值为空则取当前面下标兜底作为唯一标识",
+ "label": ""
+ }
+ ],
+ "tpl": "此处可自定义内容",
+ "path": "./collapse/collapse-panel"
+ },
+ "t-collapse": {
+ "key": "t-collapse",
+ "label": "折叠",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-collapse.png",
+ "properties": [
+ {
+ "key": "defaultExpandAll",
+ "type": ["Boolean"],
+ "desc": "默认是否展开全部",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用面板展开/收起操作",
+ "label": ""
+ },
+ {
+ "key": "expandIcon",
+ "type": ["Boolean"],
+ "desc": "展开图标。值为 undefined 或 false 则不显示展开图标;值为 true 显示默认图标;值类型为函数,则表示完全自定义展开图标",
+ "label": ""
+ },
+ {
+ "key": "expandMutex",
+ "type": ["Boolean"],
+ "desc": "每个面板互斥展开,每次只展开一个面板",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Array"],
+ "desc": "展开的面板集合",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "切换面板时触发,返回变化的值",
+ "label": ""
+ }
+ ],
+ "tpl": "此处可自定义内容",
+ "require": {
+ "t-collapse-panel": "./collapse/collapse-panel"
+ },
+ "path": "./collapse/collapse"
+ },
+ "t-date-time-picker": {
+ "key": "t-date-time-picker",
+ "label": "日期时间选择器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-datetimepicker.png",
+ "properties": [
+ {
+ "key": "cancelBtn",
+ "type": ["String"],
+ "desc": "取消按钮文字",
+ "label": ""
+ },
+ {
+ "key": "confirmBtn",
+ "type": ["String"],
+ "desc": "确定按钮文字",
+ "label": ""
+ },
+ {
+ "key": "end",
+ "type": ["String", "Number"],
+ "desc": "选择器的结束时间",
+ "label": ""
+ },
+ {
+ "key": "footer",
+ "type": ["String"],
+ "desc": "底部内容",
+ "label": ""
+ },
+ {
+ "key": "format",
+ "type": ["String"],
+ "desc": "用于格式化日期,[详细文档](https://day.js.org/docs/en/display/format)",
+ "label": ""
+ },
+ {
+ "key": "header",
+ "type": ["Boolean"],
+ "desc": "头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容",
+ "label": ""
+ },
+ {
+ "key": "mode",
+ "type": ["String", "Array"],
+ "desc": "选择器模式,用于表示可以选择到哪一个层级。【示例一】year 或者 ['year'] 表示纯日期选择器,只能选择到年份,只显示年份。【示例二】'hour' 或 ['hour'] 表示纯时间选择器,只能选择到小时维度。【示例三】['year', 'month', 'date', 'hour', 'minute'] 表示,日期和时间 混合选择器,可以选择到具体哪一分钟,显示全部时间:年/月/日/时/分",
+ "label": ""
+ },
+ {
+ "key": "showWeek",
+ "type": ["Boolean"],
+ "desc": "【开发中】是否在日期旁边显示周几(如周一,周二,周日等)",
+ "label": ""
+ },
+ {
+ "key": "start",
+ "type": ["String", "Number"],
+ "desc": "选择器的开始时间",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "选中值",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-confirm", "t-class-cancel", "t-class-title"],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "取消按钮点击时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "选中值发生变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:column-change",
+ "desc": "每一列选中数据变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:confirm",
+ "desc": "确认按钮点击时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./date-time-picker/date-time-picker"
+ },
+ "t-dialog": {
+ "key": "t-dialog",
+ "label": "对话框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-dialog.png",
+ "properties": [
+ {
+ "key": "actions",
+ "type": ["Array"],
+ "desc": "操作栏",
+ "label": ""
+ },
+ {
+ "key": "buttonLayout",
+ "type": ["String"],
+ "desc": "多按钮排列方式",
+ "label": ""
+ },
+ {
+ "key": "cancelBtn",
+ "type": ["String", "Object"],
+ "desc": "取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件",
+ "label": ""
+ },
+ {
+ "key": "closeOnOverlayClick",
+ "type": ["Boolean"],
+ "desc": "点击蒙层时是否触发关闭事件",
+ "label": ""
+ },
+ {
+ "key": "confirmBtn",
+ "type": ["String", "Object"],
+ "desc": "确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "内容",
+ "label": ""
+ },
+ {
+ "key": "preventScrollThrough",
+ "type": ["Boolean"],
+ "desc": "防止滚动穿透",
+ "label": ""
+ },
+ {
+ "key": "showInAttachedElement",
+ "type": ["Boolean"],
+ "desc": "【开发中】仅在挂载元素中显示抽屉,默认在浏览器可视区域显示。父元素需要有定位属性,如:position: relative",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "控制对话框是否显示",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "对话框层级,Web 侧样式默认为 2500,移动端和小程序样式默认为 1500",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-confirm", "t-class-cancel"],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件",
+ "label": ""
+ },
+ {
+ "key": "bind:close",
+ "desc": "关闭事件,点击 取消按钮 或 点击蒙层 时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:overlay-click",
+ "desc": "如果蒙层存在,点击蒙层时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./dialog/dialog"
+ },
+ "t-divider": {
+ "key": "t-divider",
+ "label": "分割线",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-divider.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "文本位置(仅在水平分割线有效)",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "子元素",
+ "label": ""
+ },
+ {
+ "key": "dashed",
+ "type": ["Boolean"],
+ "desc": "是否虚线(仅在水平分割线有效)",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "分隔线类型有两种:水平和垂直",
+ "label": ""
+ },
+ {
+ "key": "lineColor",
+ "type": ["String"],
+ "desc": "分隔线颜色",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-line", "t-class-content"],
+ "tpl": "",
+ "path": "./divider/divider"
+ },
+ "t-drawer": {
+ "key": "t-drawer",
+ "label": "模态抽屉",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-drawer.png",
+ "properties": [
+ {
+ "key": "closeOnOverlayClick",
+ "type": ["Boolean"],
+ "desc": "点击蒙层时是否触发抽屉关闭事件",
+ "label": ""
+ },
+ {
+ "key": "destroyOnClose",
+ "type": ["Boolean"],
+ "desc": "抽屉关闭时是否销毁节点",
+ "label": ""
+ },
+ {
+ "key": "items",
+ "type": ["Array"],
+ "desc": "抽屉里的列表项",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "抽屉方向",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "组件是否可见",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "抽屉层级,样式默认为 1500",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:close",
+ "desc": "关闭事件,取消按钮点击时、关闭按钮点击时、点击蒙层时均会触发",
+ "label": ""
+ },
+ {
+ "key": "bind:item-click",
+ "desc": "点击抽屉里的列表项",
+ "label": ""
+ },
+ {
+ "key": "bind:overlay-click",
+ "desc": "如果蒙层存在,点击蒙层时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./drawer/drawer"
+ },
+ "t-dropdown-item": {
+ "key": "t-dropdown-item",
+ "label": "下拉菜单子项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-dropdownmenu.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "multiple",
+ "type": ["Boolean"],
+ "desc": "是否多选",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "选项数据",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./dropdown-menu/dropdown-item"
+ },
+ "t-dropdown-menu": {
+ "key": "t-dropdown-menu",
+ "label": "下拉菜单",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-dropdownmenu.png",
+ "properties": [
+ {
+ "key": "activeColor",
+ "type": ["String"],
+ "desc": "【讨论中】菜单标题和选项的选中态颜色",
+ "label": ""
+ },
+ {
+ "key": "closeOnClickOverlay",
+ "type": ["Boolean"],
+ "desc": "是否在点击遮罩层后关闭菜单",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["String", "Number"],
+ "desc": "动画时长",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "菜单栏 z-index 层级",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-dropdown-item": "./dropdown-menu/dropdown-item"
+ },
+ "path": "./dropdown-menu/dropdown-menu"
+ },
+ "t-empty": {
+ "key": "t-empty",
+ "label": "空状态",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-empty.png",
+ "properties": [
+ {
+ "key": "action",
+ "type": ["String"],
+ "desc": "操作按钮",
+ "label": ""
+ },
+ {
+ "key": "description",
+ "type": ["String"],
+ "desc": "描述文字",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "图片地址",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-description", "t-class-image", "t-class-actions"],
+ "tpl": "",
+ "path": "./empty/empty"
+ },
+ "t-fab": {
+ "key": "t-fab",
+ "label": "悬浮按钮",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-fab.png",
+ "properties": [
+ {
+ "key": "buttonProps",
+ "type": ["Object"],
+ "desc": "透传至 Button 组件",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标",
+ "label": ""
+ },
+ {
+ "key": "style",
+ "type": ["String"],
+ "desc": "悬浮按钮的样式,常用于调整位置",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "文本内容",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "悬浮按钮点击事件",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./fab/fab"
+ },
+ "t-footer": {
+ "key": "t-footer",
+ "label": "布局-底部内容",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-footer.png",
+ "properties": [
+ {
+ "key": "copyright",
+ "type": ["String"],
+ "desc": "版权信息,type 为`text`生效",
+ "label": ""
+ },
+ {
+ "key": "logo",
+ "type": ["Object"],
+ "desc": "图标配置,type 为`logo`生效。`logo.icon` 表示图标链接地址,`logo.title` 表示标题文本,`logo.url` 表示链接跳转地址",
+ "label": ""
+ },
+ {
+ "key": "textLinkList",
+ "type": ["Array"],
+ "desc": "链接列表,type 为`text`生效。name 表示链接名称, url 表示链接 page 路径,目前只支持小程序内部跳转,openType 表示跳转方式",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "页脚展示类型",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./footer/footer"
+ },
+ "t-grid-item": {
+ "key": "t-grid-item",
+ "label": "宫格子项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-grid.png",
+ "properties": [
+ {
+ "key": "badgeProps",
+ "type": ["Object"],
+ "desc": "头像右上角提示信息,继承 Badge 组件的全部特性。如:小红点,或者数字",
+ "label": ""
+ },
+ {
+ "key": "description",
+ "type": ["String"],
+ "desc": "文本以外的更多描述,辅助信息。可以通过 Props 传入文本,也可以自定义标题节点",
+ "label": ""
+ },
+ {
+ "key": "image",
+ "type": ["String"],
+ "desc": "图片,可以是图片地址,也可以自定义图片节点",
+ "label": ""
+ },
+ {
+ "key": "jumpType",
+ "type": ["String"],
+ "desc": "链接跳转类型",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "内容布局方式",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "文本,可以通过 Props 传入文本,也可以自定义标题节点",
+ "label": ""
+ },
+ {
+ "key": "url",
+ "type": ["String"],
+ "desc": "点击后的跳转链接",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-image", "t-class-text", "t-class-description"],
+ "tpl": "",
+ "path": "./grid-item/grid-item"
+ },
+ "t-grid": {
+ "key": "t-grid",
+ "label": "栅格",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-grid.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "内容对齐方式",
+ "label": ""
+ },
+ {
+ "key": "border",
+ "type": ["Boolean", "Object"],
+ "desc": "边框,默认不显示。值为 true 则显示默认边框,值类型为 object 则表示自定义边框样式",
+ "label": ""
+ },
+ {
+ "key": "column",
+ "type": ["Number"],
+ "desc": "每一行的列数量",
+ "label": ""
+ },
+ {
+ "key": "gutter",
+ "type": ["Number"],
+ "desc": "间隔大小",
+ "label": ""
+ },
+ {
+ "key": "hover",
+ "type": ["Boolean"],
+ "desc": "是否开启点击反馈",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "tpl": "",
+ "require": {
+ "t-grid-item": "./grid-item/grid-item"
+ },
+ "path": "./grid/grid"
+ },
+ "t-icon": {
+ "key": "t-icon",
+ "label": "图标",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-icon.png",
+ "properties": [
+ {
+ "key": "classPrefix",
+ "type": ["String"],
+ "desc": "自定义icon前缀",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "图标颜色",
+ "label": ""
+ },
+ {
+ "key": "style",
+ "type": ["String"],
+ "desc": "自定义样式",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String", "Number"],
+ "desc": "图标名称",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./icon/icon"
+ },
+ "t-image": {
+ "key": "t-image",
+ "label": "图片",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-image.png",
+ "properties": [
+ {
+ "key": "error",
+ "type": ["String"],
+ "desc": "加载失败时显示的内容。值为 `default` 则表示使用默认加载失败风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `error`;值为其他则表示普通文本内容,如“加载失败”",
+ "label": ""
+ },
+ {
+ "key": "lazy",
+ "type": ["Boolean"],
+ "desc": "是否开启图片懒加载",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["String"],
+ "desc": "加载态内容。值为 `default` 则表示使用默认加载中风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `loading`;值为其他则表示普通文本内容,如“加载中”",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "图片圆角类型",
+ "label": ""
+ },
+ {
+ "key": "src",
+ "type": ["String"],
+ "desc": "图片链接",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-load"],
+ "events": [
+ {
+ "key": "bind:error",
+ "desc": "图片加载失败时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:load",
+ "desc": "图片加载完成时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./image/image"
+ },
+ "t-indexes": {
+ "key": "t-indexes",
+ "label": "索引",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-indexes.png",
+ "properties": [
+ {
+ "key": "height",
+ "type": ["Number"],
+ "desc": "列表高度,未设置默认占满设备高度",
+ "label": ""
+ },
+ {
+ "key": "list",
+ "type": ["Array"],
+ "desc": "索引列表的列表数据。每个元素包含三个子元素,index(string):索引值,例如1,2,3,...或A,B,C等;title(string): 索引标题,可不填将默认设为索引值;children(Array<{title: string}>): 子元素列表,title为子元素的展示文案。",
+ "label": ""
+ },
+ {
+ "key": "sticky",
+ "type": ["Boolean"],
+ "desc": "索引是否吸顶,默认为true",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:select",
+ "desc": "点击行元素时触发事件",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./indexes/indexes"
+ },
+ "t-input": {
+ "key": "t-input",
+ "label": "输入框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-input.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "文本内容位置,居左/居中/居右",
+ "label": ""
+ },
+ {
+ "key": "borderless",
+ "type": ["Boolean"],
+ "desc": "【讨论中】是否开启无边框模式",
+ "label": ""
+ },
+ {
+ "key": "clearable",
+ "type": ["Boolean"],
+ "desc": "是否可清空",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用输入框",
+ "label": ""
+ },
+ {
+ "key": "errorMessage",
+ "type": ["String"],
+ "desc": "错误提示文本,值为空不显示(废弃属性,如果需要,请更为使用 status 和 tips)",
+ "label": ""
+ },
+ {
+ "key": "format",
+ "type": ["String"],
+ "desc": "【开发中】指定输入框展示值的格式",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "左侧文本",
+ "label": ""
+ },
+ {
+ "key": "maxcharacter",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的字符个数,一个中文汉字表示两个字符长度。`maxcharacter` 和 `maxlength` 二选一使用",
+ "label": ""
+ },
+ {
+ "key": "maxlength",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的文本长度,一个中文等于一个计数长度。值小于等于 0 的时候,则表示不限制输入长度。`maxcharacter` 和 `maxlength` 二选一使用",
+ "label": ""
+ },
+ {
+ "key": "placeholder",
+ "type": ["String"],
+ "desc": "占位符",
+ "label": ""
+ },
+ {
+ "key": "prefixIcon",
+ "type": ["String"],
+ "desc": "组件前置图标,值为字符串则表示图标名称",
+ "label": ""
+ },
+ {
+ "key": "readonly",
+ "type": ["Boolean"],
+ "desc": "只读状态",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "输入框尺寸",
+ "label": ""
+ },
+ {
+ "key": "status",
+ "type": ["String"],
+ "desc": "输入框状态",
+ "label": ""
+ },
+ {
+ "key": "suffix",
+ "type": ["String"],
+ "desc": "后置图标前的后置内容",
+ "label": ""
+ },
+ {
+ "key": "suffixIcon",
+ "type": ["String"],
+ "desc": "后置文本内容,值为字符串则表示图标名称",
+ "label": ""
+ },
+ {
+ "key": "tips",
+ "type": ["String"],
+ "desc": "输入框下方提示文本,会根据不同的 `status` 呈现不同的样式",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "输入框的值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-input", "t-class-placeholder", "t-class-error-msg"],
+ "events": [
+ {
+ "key": "bind:blur",
+ "desc": "失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "输入框值发生变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:clear",
+ "desc": "清空按钮点击时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:enter",
+ "desc": "回车键按下时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:focus",
+ "desc": "获得焦点时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./input/input"
+ },
+ "t-loading": {
+ "key": "t-loading",
+ "label": "加载中",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-loading.png",
+ "properties": [
+ {
+ "key": "delay",
+ "type": ["Number"],
+ "desc": "延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "加载动画执行完成一次的时间,单位:毫秒",
+ "label": ""
+ },
+ {
+ "key": "indicator",
+ "type": ["Boolean"],
+ "desc": "是否显示加载指示符",
+ "label": ""
+ },
+ {
+ "key": "inheritColor",
+ "type": ["Boolean"],
+ "desc": "是否继承父元素颜色",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "对齐方式",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否处于加载状态",
+ "label": ""
+ },
+ {
+ "key": "pause",
+ "type": ["Boolean"],
+ "desc": "是否暂停动画",
+ "label": ""
+ },
+ {
+ "key": "progress",
+ "type": ["Number"],
+ "desc": "加载进度",
+ "label": ""
+ },
+ {
+ "key": "reverse",
+ "type": ["Boolean"],
+ "desc": "加载动画是否反向",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "尺寸,示例:40rpx/20px",
+ "label": ""
+ },
+ {
+ "key": "text",
+ "type": ["String"],
+ "desc": "加载提示文案",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "加载组件类型",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-text", "t-class-indicator"],
+ "tpl": "",
+ "path": "./loading/loading"
+ },
+ "t-message": {
+ "key": "t-message",
+ "label": "全局提醒",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-message.png",
+ "properties": [
+ {
+ "key": "action",
+ "type": ["String"],
+ "desc": "操作",
+ "label": ""
+ },
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "文本对齐方式",
+ "label": ""
+ },
+ {
+ "key": "closeBtn",
+ "type": ["String", "Boolean"],
+ "desc": "关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。也可以完全自定义按钮",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "用于自定义消息弹出内容",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "消息内置计时器,计时到达时会触发 duration-end 事件。单位:毫秒。值为 0 则表示没有计时器。",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String", "Boolean"],
+ "desc": "消息提醒前面的图标。值为 true 则根据 theme 显示对应的图标,值为 false 则不显示图标。值为 'info' 或 'bell' 则显示组件内置图标。也可以完全自定义图标节点",
+ "label": ""
+ },
+ {
+ "key": "marquee",
+ "type": ["Boolean", "Object"],
+ "desc": "跑马灯效果。speed 指速度控制;loop 指循环播放次数,值为 -1 表示循环播放,值为 0 表示不循环播放;delay 表示延迟多久开始播放",
+ "label": ""
+ },
+ {
+ "key": "offset",
+ "type": ["Array"],
+ "desc": "相对于 placement 的偏移量,示例:[-10, 20] 或 ['10rpx', '8rpx']",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "消息组件风格",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示,隐藏时默认销毁组件",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "元素层级,样式默认为 5000",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-icon", "t-class-action", "t-class-close-btn"],
+ "events": [
+ {
+ "key": "bind:action-btn-click",
+ "desc": "当操作按钮存在时,用户点击操作按钮时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:close-btn-click",
+ "desc": "当关闭按钮存在时,用户点击关闭按钮触发",
+ "label": ""
+ },
+ {
+ "key": "bind:duration-end",
+ "desc": "计时结束后触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./message/message"
+ },
+ "t-navbar": {
+ "key": "t-navbar",
+ "label": "导航条",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-navbar.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["Boolean"],
+ "desc": "是否添加动画效果",
+ "label": ""
+ },
+ {
+ "key": "background",
+ "type": ["String"],
+ "desc": "背景",
+ "label": ""
+ },
+ {
+ "key": "delta",
+ "type": ["Number"],
+ "desc": "后退按钮后退层数,含义参考 [wx.navigateBack](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html),特殊的,传入 0 不会发生执行 wx.navigateBack,只会触发一个 goback 事件供自行处理。",
+ "label": ""
+ },
+ {
+ "key": "fixed",
+ "type": ["Boolean"],
+ "desc": "是否固定在顶部",
+ "label": ""
+ },
+ {
+ "key": "homeIcon",
+ "type": ["String"],
+ "desc": "首页图标地址。值为 '' 或者 undefiend 则表示不显示返回图标,值为 'circle' 表示显示默认图标,值为 'slot' 表示使用插槽渲染,值为其他则表示图标地址",
+ "label": ""
+ },
+ {
+ "key": "leftIcon",
+ "type": ["String"],
+ "desc": "左侧图标地址,值为 '' 或者 undefiend 则表示不显示返回图标,值为 'arrow-left' 表示显示返回图标,值为 'slot' 表示使用插槽渲染,值为其他则表示图标地址",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "页面标题",
+ "label": ""
+ },
+ {
+ "key": "titleMaxLength",
+ "type": ["Number"],
+ "desc": "标题文字最大长度,超出的范围使用 `...` 表示",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-title", "t-class-left-icon", "t-class-home-icon", "t-class-capsule"],
+ "events": [
+ {
+ "key": "bind:complete",
+ "desc": "navigateBack 执行完成后触发(失败或成功均会触发)",
+ "label": ""
+ },
+ {
+ "key": "bind:fail",
+ "desc": "navigateBack 执行失败后触发",
+ "label": ""
+ },
+ {
+ "key": "bind:go-back",
+ "desc": "delta 值为 0 时,点击返回,触发该事件",
+ "label": ""
+ },
+ {
+ "key": "bind:go-home",
+ "desc": "点击 Home 触发",
+ "label": ""
+ },
+ {
+ "key": "bind:success",
+ "desc": "navigateBack 执行成功后触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./navbar/navbar"
+ },
+ "t-picker-item": {
+ "key": "t-picker-item",
+ "label": "选择器子项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-picker.png",
+ "properties": [
+ {
+ "key": "format",
+ "type": ["String"],
+ "desc": "格式化标签",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "数据源",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./picker-item/picker-item"
+ },
+ "t-picker": {
+ "key": "t-picker",
+ "label": "选择器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-picker.png",
+ "properties": [
+ {
+ "key": "cancelBtn",
+ "type": ["String", "Object"],
+ "desc": "取消按钮文字",
+ "label": ""
+ },
+ {
+ "key": "confirmBtn",
+ "type": ["String", "Object"],
+ "desc": "确定按钮文字",
+ "label": ""
+ },
+ {
+ "key": "footer",
+ "type": ["String"],
+ "desc": "底部内容",
+ "label": ""
+ },
+ {
+ "key": "header",
+ "type": ["Boolean"],
+ "desc": "头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Array"],
+ "desc": "选中值",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:cancel",
+ "desc": "点击取消按钮时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "选中变化时候触发",
+ "label": ""
+ },
+ {
+ "key": "bind:pick",
+ "desc": "任何一列选中都会触发,不同的列参数不同。`context.column` 表示第几列变化,`context.index` 表示变化那一列的选中项下标",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-picker-item": "./picker-item/picker-item"
+ },
+ "path": "./picker/picker"
+ },
+ "t-popup": {
+ "key": "t-popup",
+ "label": "气泡框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-popup.png",
+ "properties": [
+ {
+ "key": "closeBtn",
+ "type": ["Boolean"],
+ "desc": "关闭按钮,值类型为 Boolean 时表示是否显示关闭按钮。也可以自定义关闭按钮",
+ "label": ""
+ },
+ {
+ "key": "closeOnOverlayClick",
+ "type": ["Boolean"],
+ "desc": "点击遮罩层是否关闭",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "浮层里面的内容",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "浮层出现位置",
+ "label": ""
+ },
+ {
+ "key": "preventScrollThrough",
+ "type": ["Boolean"],
+ "desc": "防止滚动穿透",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "transitionProps",
+ "type": ["Object"],
+ "desc": "动画效果定义",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示浮层",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "组件层级,Web 侧样式默认为 5500,移动端和小程序样式默认为 1500",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-overlay", "t-class-content"],
+ "events": [
+ {
+ "key": "bind:visible-change",
+ "desc": "当浮层隐藏或显示时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./popup/popup"
+ },
+ "t-progress": {
+ "key": "t-progress",
+ "label": "进度条",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-progress.png",
+ "properties": [
+ {
+ "key": "color",
+ "type": ["String", "Object", "Array"],
+ "desc": "进度条颜色。示例:'#ED7B2F' 或 'orange' 或 `['#f00', '#0ff', '#f0f']` 或 `{ '0%': '#f00', '100%': '#0ff' }` 或 `{ from: '#000', to: '#000' }` 等",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String", "Boolean"],
+ "desc": "进度百分比,可自定义",
+ "label": ""
+ },
+ {
+ "key": "percentage",
+ "type": ["Number"],
+ "desc": "进度条百分比",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String", "Number"],
+ "desc": "进度条尺寸,示例:small/medium/large/240。small 值为 72; medium 值为 112;large 值为 160",
+ "label": ""
+ },
+ {
+ "key": "status",
+ "type": ["String"],
+ "desc": "进度条状态",
+ "label": ""
+ },
+ {
+ "key": "strokeWidth",
+ "type": ["String", "Number"],
+ "desc": "进度条线宽。宽度数值不能超过 size 的一半,否则不能输出环形进度",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "进度条风格。值为 line,标签(label)显示在进度条右侧;值为 plump,标签(label)显示在进度条里面;值为 circle,标签(label)显示在进度条正中间",
+ "label": ""
+ },
+ {
+ "key": "trackColor",
+ "type": ["String"],
+ "desc": "进度条未完成部分颜色",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./progress/progress"
+ },
+ "t-pull-down-refresh": {
+ "key": "t-pull-down-refresh",
+ "label": "下拉刷新",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-pulldownrefresh.png",
+ "properties": [
+ {
+ "key": "loadingBarHeight",
+ "type": ["String", "Number"],
+ "desc": "加载中下拉高度,如果值为数字则单位是:'px'",
+ "label": ""
+ },
+ {
+ "key": "loadingProps",
+ "type": ["Object"],
+ "desc": "加载loading样式",
+ "label": ""
+ },
+ {
+ "key": "loadingTexts",
+ "type": ["Array"],
+ "desc": "提示语,组件内部默认值为 ['下拉刷新', '松手刷新', '正在刷新', '刷新完成']",
+ "label": ""
+ },
+ {
+ "key": "maxBarHeight",
+ "type": ["String", "Number"],
+ "desc": "最大下拉高度,如果值为数字则单位是:'px'",
+ "label": ""
+ },
+ {
+ "key": "refreshTimeout",
+ "type": ["Number"],
+ "desc": "刷新超时时间",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Boolean"],
+ "desc": "组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-loading", "t-class-text", "t-class-indicator"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "下拉或收起时触发,用户手势往下滑动触发下拉状态,手势松开触发收起状态",
+ "label": ""
+ },
+ {
+ "key": "bind:refresh",
+ "desc": "结束下拉时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:timeout",
+ "desc": "刷新超时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "拖拽该区域演示 中间下拉刷新",
+ "path": "./pull-down-refresh/pull-down-refresh"
+ },
+ "t-radio-group": {
+ "key": "t-radio-group",
+ "label": "单选框组",
+ "icon": "",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用全部子单选框",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "HTML 元素原生属性",
+ "label": ""
+ },
+ {
+ "key": "options",
+ "type": ["Array"],
+ "desc": "单选组件按钮形式。RadioOption 数据类型为 string 或 number 时,表示 label 和 value 值相同",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Boolean"],
+ "desc": "选中的值",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "选中值发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-radio": "./radio/radio"
+ },
+ "path": "./radio-group/radio-group"
+ },
+ "t-radio": {
+ "key": "t-radio",
+ "label": "单选框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-radio.png",
+ "properties": [
+ {
+ "key": "align",
+ "type": ["String"],
+ "desc": "复选框和内容相对位置",
+ "label": ""
+ },
+ {
+ "key": "allowUncheck",
+ "type": ["Boolean"],
+ "desc": "是否允许取消选中",
+ "label": ""
+ },
+ {
+ "key": "checked",
+ "type": ["Boolean"],
+ "desc": "是否选中",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String"],
+ "desc": "单选按钮颜色",
+ "label": ""
+ },
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "单选内容",
+ "label": ""
+ },
+ {
+ "key": "contentDisabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件内容(content)触发选中",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否为禁用态",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String", "Array"],
+ "desc": "自定义选中图标和非选中图标。示例:[选中态图标,非选中态图标]。值为 fill-circle 表示图标为填充型图标,值为 stroke-line 表示图标为描边型图标",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "主文案",
+ "label": ""
+ },
+ {
+ "key": "maxContentRow",
+ "type": ["Number"],
+ "desc": "内容最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "maxLabelRow",
+ "type": ["Number"],
+ "desc": "主文案最大行数限制",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "HTML 元素原生属性",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Boolean"],
+ "desc": "单选按钮的值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "值变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./radio/radio"
+ },
+ "t-rate": {
+ "key": "t-rate",
+ "label": "评分",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-rate.png",
+ "properties": [
+ {
+ "key": "allowHalf",
+ "type": ["Boolean"],
+ "desc": "是否允许半选",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["String", "Array"],
+ "desc": "评分图标的颜色,样式中默认为 #ED7B2F。一个值表示设置选中高亮的五角星颜色,示例:[选中颜色]。数组则表示分别设置 选中高亮的五角星颜色 和 未选中暗灰的五角星颜色,[选中颜色,未选中颜色]。示例:['#ED7B2F', '#E3E6EB']",
+ "label": ""
+ },
+ {
+ "key": "count",
+ "type": ["Number"],
+ "desc": "评分的数量",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用评分",
+ "label": ""
+ },
+ {
+ "key": "gap",
+ "type": ["Number"],
+ "desc": "评分图标的间距",
+ "label": ""
+ },
+ {
+ "key": "showText",
+ "type": ["Boolean"],
+ "desc": "是否显示对应的辅助文字",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "评分图标的大小,示例:`20`",
+ "label": ""
+ },
+ {
+ "key": "texts",
+ "type": ["Array"],
+ "desc": "评分等级对应的辅助文字。组件内置默认值为:['极差', '失望', '一般', '满意', '惊喜']。自定义值示例:['1分', '2分', '3分', '4分', '5分']",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Number"],
+ "desc": "选择评分的值",
+ "label": ""
+ },
+ {
+ "key": "variant",
+ "type": ["String"],
+ "desc": "形状类型,有描边类型和填充类型两种",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "评分数改变时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./rate/rate"
+ },
+ "t-search": {
+ "key": "t-search",
+ "label": "搜索",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-search.png",
+ "properties": [
+ {
+ "key": "action",
+ "type": ["String"],
+ "desc": "自定义右侧操作按钮文字",
+ "label": ""
+ },
+ {
+ "key": "center",
+ "type": ["Boolean"],
+ "desc": "是否居中",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用",
+ "label": ""
+ },
+ {
+ "key": "focus",
+ "type": ["Boolean"],
+ "desc": "是否聚焦",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "左侧文本",
+ "label": ""
+ },
+ {
+ "key": "leftIcon",
+ "type": ["String"],
+ "desc": "左侧图标",
+ "label": ""
+ },
+ {
+ "key": "placeholder",
+ "type": ["String"],
+ "desc": "占位符",
+ "label": ""
+ },
+ {
+ "key": "rightIcon",
+ "type": ["String"],
+ "desc": "右侧图标",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "搜索框形状",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String"],
+ "desc": "值",
+ "label": ""
+ }
+ ],
+ "externalClasses": [
+ "t-class",
+ "t-class-input",
+ "t-class-input-container",
+ "t-class-cancel",
+ "t-class-left",
+ "t-class-right"
+ ],
+ "events": [
+ {
+ "key": "bind:action-click",
+ "desc": "点击右侧操作按钮文字时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:blur",
+ "desc": "失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "值发生变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:clear",
+ "desc": "点击清除时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:focus",
+ "desc": "聚焦时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:submit",
+ "desc": "提交时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./search/search"
+ },
+ "t-skeleton": {
+ "key": "t-skeleton",
+ "label": "骨架屏",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-skeleton.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["String"],
+ "desc": "动画效果,有「渐变加载动画」和「闪烁加载动画」两种。值为 'none' 则表示没有动画",
+ "label": ""
+ },
+ {
+ "key": "delay",
+ "type": ["Number"],
+ "desc": "【开发中】延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否为加载状态,如果是则显示骨架图,如果不是则显示加载完成的内容",
+ "label": ""
+ },
+ {
+ "key": "rowCol",
+ "type": ["Array"],
+ "desc": "用于设置行列数量、宽度高度、间距等。【示例一】,`[1, 1, 2]` 表示输出三行骨架图,第一行一列,第二行一列,第三行两列。【示例二】,`[1, 1, { width: '100px' }]` 表示自定义第三行的宽度为 `100px`。【示例三】,`[1, 2, [{ width, height }, { width, height, marginLeft }]]` 表示第三行有两列,且自定义宽度、高度和间距",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "骨架图风格,有基础、头像组合等两大类",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-avatar", "t-class-image", "t-class-text"],
+ "tpl": "",
+ "path": "./skeleton/skeleton"
+ },
+ "t-slider": {
+ "key": "t-slider",
+ "label": "滑块",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-slider.png",
+ "properties": [
+ {
+ "key": "colors",
+ "type": ["Array"],
+ "desc": "颜色,[已选择, 未选择]",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "disabledColor",
+ "type": ["Array"],
+ "desc": "禁用状态滑动条的颜色,[已选, 未选]",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String", "Boolean"],
+ "desc": "滑块当前值文本。
值为 true 显示默认文案;值为 false 不显示滑块当前值文本;
值为 `${value}%` 则表示组件会根据占位符渲染文案;
值类型为函数时,参数 `value` 标识滑块值,参数 `position=start` 表示范围滑块的起始值,参数 `position=end` 表示范围滑块的终点值",
+ "label": ""
+ },
+ {
+ "key": "marks",
+ "type": ["Object", "Array"],
+ "desc": "刻度标记,示例:`[0, 10, 40, 200]` 或者 `{ 5: '5¥', 10: '10%' }`",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "滑块范围最大值",
+ "label": ""
+ },
+ {
+ "key": "min",
+ "type": ["Number"],
+ "desc": "滑块范围最小值",
+ "label": ""
+ },
+ {
+ "key": "range",
+ "type": ["Boolean"],
+ "desc": "双游标滑块",
+ "label": ""
+ },
+ {
+ "key": "showExtremeValue",
+ "type": ["Boolean"],
+ "desc": "是否边界值",
+ "label": ""
+ },
+ {
+ "key": "step",
+ "type": ["Number"],
+ "desc": "步长",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["Number", "Array"],
+ "desc": "滑块值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-bar", "t-class-bar-active", "t-class-bar-disabled", "t-class-cursor"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "滑块值变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:dragend",
+ "desc": "结束拖动时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:dragstart",
+ "desc": "开始拖动时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./slider/slider"
+ },
+ "t-step-item": {
+ "key": "t-step-item",
+ "label": "步骤",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-steps.png",
+ "properties": [
+ {
+ "key": "content",
+ "type": ["String"],
+ "desc": "步骤描述",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标。传入 slot 代表使用插槽,其他字符串代表使用内置图标",
+ "label": ""
+ },
+ {
+ "key": "status",
+ "type": ["String"],
+ "desc": "当前步骤的状态",
+ "label": ""
+ },
+ {
+ "key": "subStepItems",
+ "type": ["Array"],
+ "desc": "子步骤条,仅支持 layout = 'vertical' 时",
+ "label": ""
+ },
+ {
+ "key": "title",
+ "type": ["String"],
+ "desc": "标题",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-content", "t-class-title", "t-class-description", "t-class-extra"],
+ "tpl": "",
+ "path": "./step-item/step-item"
+ },
+ "t-stepper": {
+ "key": "t-stepper",
+ "label": "步进器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-stepper.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "禁用全部操作",
+ "label": ""
+ },
+ {
+ "key": "disableInput",
+ "type": ["Boolean"],
+ "desc": "禁用输入框",
+ "label": ""
+ },
+ {
+ "key": "inputWidth",
+ "type": ["Number"],
+ "desc": "输入框宽度",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "最大值",
+ "label": ""
+ },
+ {
+ "key": "min",
+ "type": ["Number"],
+ "desc": "最小值",
+ "label": ""
+ },
+ {
+ "key": "step",
+ "type": ["Number"],
+ "desc": "步长",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "组件风格",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-input", "t-class-add", "t-class-minus"],
+ "events": [
+ {
+ "key": "bind:blur",
+ "desc": "输入框失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "数值发生变更时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:overlimit",
+ "desc": "数值超出限制时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./stepper/stepper"
+ },
+ "t-steps": {
+ "key": "t-steps",
+ "label": "步骤条",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-steps.png",
+ "properties": [
+ {
+ "key": "current",
+ "type": ["String", "Number"],
+ "desc": "当前步骤,即整个步骤条进度。默认根据步骤下标判断步骤的完成状态,当前步骤为进行中,当前步骤之前的步骤为已完成,当前步骤之后的步骤为未开始。如果每个步骤没有设置 value,current 值为步骤长度则表示所有步骤已完成。如果每个步骤设置了自定义 value,则 current = 'FINISH' 表示所有状态完成",
+ "label": ""
+ },
+ {
+ "key": "currentStatus",
+ "type": ["String"],
+ "desc": "用于控制 current 指向的步骤条的状态",
+ "label": ""
+ },
+ {
+ "key": "layout",
+ "type": ["String"],
+ "desc": "步骤条方向,有两种:横向和纵向",
+ "label": ""
+ },
+ {
+ "key": "readonly",
+ "type": ["Boolean"],
+ "desc": "只读状态",
+ "label": ""
+ },
+ {
+ "key": "separator",
+ "type": ["String"],
+ "desc": "步骤条分割符",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "步骤条风格",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "当前步骤发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-step-item": "./step-item/step-item"
+ },
+ "path": "./steps/steps"
+ },
+ "t-sticky": {
+ "key": "t-sticky",
+ "label": "吸顶容器",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-sticky.png",
+ "properties": [
+ {
+ "key": "container",
+ "type": ["String"],
+ "desc": "函数返回容器对应的 NodesRef 节点,将对应节点指定为组件的外部容器,滚动时组件会始终保持在容器范围内,当组件即将超出容器底部时,会返回原位置。",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "offsetTop",
+ "type": ["String", "Number"],
+ "desc": "吸顶时与顶部的距离,单位`px`",
+ "label": ""
+ },
+ {
+ "key": "zIndex",
+ "type": ["Number"],
+ "desc": "吸顶时的 z-index",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:scroll",
+ "desc": "滚动时触发,scrollTop: 距离顶部位置,isFixed: 是否吸顶",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./sticky/sticky"
+ },
+ "t-swipe-cell": {
+ "key": "t-swipe-cell",
+ "label": "滑动操作",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-swipecell.png",
+ "properties": [
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用滑动",
+ "label": ""
+ },
+ {
+ "key": "expanded",
+ "type": ["String"],
+ "desc": "操作项是否呈现为打开态",
+ "label": ""
+ },
+ {
+ "key": "left",
+ "type": ["Array"],
+ "desc": "左侧滑动操作项。所有行为同 `right`",
+ "label": ""
+ },
+ {
+ "key": "right",
+ "type": ["Array"],
+ "desc": "右侧滑动操作项。有两种定义方式,一种是使用数组,二种是使用插槽。`right.text` 表示操作文本,`right.className` 表示操作项类名,`right.style` 表示操作项样式,`right.onClick` 表示点击操作项后执行的回调函数。示例:`[{ text: '删除', style: 'background-color: red', onClick: () => {} }]`",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)",
+ "label": ""
+ }
+ ],
+ "tpl": "删除",
+ "require": {
+ "t-cell": "./cell/cell"
+ },
+ "path": "./swipe-cell/swipe-cell"
+ },
+ "t-swiper": {
+ "key": "t-swiper",
+ "label": "轮播",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-swiper.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["String"],
+ "desc": "轮播切换动画效果类型",
+ "label": ""
+ },
+ {
+ "key": "autoplay",
+ "type": ["Boolean"],
+ "desc": "是否自动播放",
+ "label": ""
+ },
+ {
+ "key": "current",
+ "type": ["Number"],
+ "desc": "当前轮播在哪一项(下标)",
+ "label": ""
+ },
+ {
+ "key": "direction",
+ "type": ["String"],
+ "desc": "轮播滑动方向,包括横向滑动和纵向滑动两个方向",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "滑动动画时长",
+ "label": ""
+ },
+ {
+ "key": "height",
+ "type": ["Number"],
+ "desc": "当使用垂直方向滚动时的高度",
+ "label": ""
+ },
+ {
+ "key": "interval",
+ "type": ["Number"],
+ "desc": "轮播间隔时间",
+ "label": ""
+ },
+ {
+ "key": "loop",
+ "type": ["Boolean"],
+ "desc": "是否循环播放",
+ "label": ""
+ },
+ {
+ "key": "navigation",
+ "type": ["Object"],
+ "desc": "导航器全部配置",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "轮播切换时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "require": {
+ "t-swiper-item": "./swiper/swiper-item"
+ },
+ "path": "./swiper/swiper"
+ },
+ "t-switch": {
+ "key": "t-switch",
+ "label": "开关",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-switch.png",
+ "properties": [
+ {
+ "key": "colors",
+ "type": ["Array"],
+ "desc": "自定义颜色,[打开时的颜色,关闭时的颜色]。组件默认颜色为 ['#0052d9', 'rgba(0, 0, 0, .26']。示例:[blue, gray]",
+ "label": ""
+ },
+ {
+ "key": "customValue",
+ "type": ["Array"],
+ "desc": "开关内容,[打开时的值,关闭时的值]。默认为 [true, false]。示例:[1, 0]",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用组件",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "开关的标签",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["Boolean"],
+ "desc": "是否处于加载中状态",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "开关尺寸",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Boolean"],
+ "desc": "开关值",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "数据发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./switch/switch"
+ },
+ "t-tab-bar-item": {
+ "key": "t-tab-bar-item",
+ "label": "标签栏选项",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabbar.png",
+ "properties": [
+ {
+ "key": "badgeProps",
+ "type": ["Object"],
+ "desc": "图标右上角提示信息",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "图标名称",
+ "label": ""
+ },
+ {
+ "key": "subTabBar",
+ "type": ["Array"],
+ "desc": "二级菜单",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "标识符",
+ "label": ""
+ }
+ ],
+ "tpl": "{{item.label}}",
+ "path": "./tab-bar-item/tab-bar-item"
+ },
+ "t-tab-bar": {
+ "key": "t-tab-bar",
+ "label": "标签栏",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabbar.png",
+ "properties": [
+ {
+ "key": "bordered",
+ "type": ["Boolean"],
+ "desc": "是否显示外边框",
+ "label": ""
+ },
+ {
+ "key": "color",
+ "type": ["Array"],
+ "desc": "标签颜色设置。示例:[选中标签的颜色, 未选中的标签颜色]",
+ "label": ""
+ },
+ {
+ "key": "fixed",
+ "type": ["Boolean"],
+ "desc": "是否固定在底部",
+ "label": ""
+ },
+ {
+ "key": "safeAreaInsetBottom",
+ "type": ["Boolean"],
+ "desc": "是否为 iPhoneX 留出底部安全距离",
+ "label": ""
+ },
+ {
+ "key": "split",
+ "type": ["Boolean"],
+ "desc": "是否需要分割线",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number", "Array"],
+ "desc": "当前选中标签的索引",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "选中标签切换时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "{{item.label}}",
+ "require": {
+ "t-tab-bar-item": "./tab-bar-item/tab-bar-item"
+ },
+ "path": "./tab-bar/tab-bar"
+ },
+ "t-tab-panel": {
+ "key": "t-tab-panel",
+ "label": "选项卡面板",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabs.png",
+ "properties": [
+ {
+ "key": "destroyOnHide",
+ "type": ["Boolean"],
+ "desc": "选项卡内容隐藏时是否销毁",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用当前选项卡",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "选项卡名称",
+ "label": ""
+ },
+ {
+ "key": "panel",
+ "type": ["String"],
+ "desc": "用于自定义选项卡面板内容",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "选项卡的值,唯一标识",
+ "label": ""
+ }
+ ],
+ "tpl": "标签一内容",
+ "path": "./tab-panel/tab-panel"
+ },
+ "t-tabs": {
+ "key": "t-tabs",
+ "label": "选项卡",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tabs.png",
+ "properties": [
+ {
+ "key": "animation",
+ "type": ["Object"],
+ "desc": "动画效果设置。其中 duration 表示动画时长",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "选项卡位置",
+ "label": ""
+ },
+ {
+ "key": "showBottomLine",
+ "type": ["Boolean"],
+ "desc": "是否展示底部激活线条",
+ "label": ""
+ },
+ {
+ "key": "stickyProps",
+ "type": ["Object"],
+ "desc": "是否支持吸顶",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String", "Number"],
+ "desc": "激活的选项卡值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-item", "t-class-active", "t-class-track"],
+ "events": [
+ {
+ "key": "bind:change",
+ "desc": "激活的选项卡发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "标签一内容标签二内容",
+ "require": {
+ "t-tab-panel": "./tab-panel/tab-panel"
+ },
+ "path": "./tabs/tabs"
+ },
+ "t-tag": {
+ "key": "t-tag",
+ "label": "标签",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-tag.png",
+ "properties": [
+ {
+ "key": "closable",
+ "type": ["Boolean"],
+ "desc": "标签是否可关闭",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "标签中的图标,可自定义图标呈现",
+ "label": ""
+ },
+ {
+ "key": "maxWidth",
+ "type": ["String", "Number"],
+ "desc": "标签最大宽度,宽度超出后会出现省略号。示例:'50px' / 80",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "desc": "标签类型,有三种:方形、圆角方形、标记型",
+ "label": ""
+ },
+ {
+ "key": "size",
+ "type": ["String"],
+ "desc": "标签尺寸",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "组件风格,用于描述组件不同的应用场景",
+ "label": ""
+ },
+ {
+ "key": "variant",
+ "type": ["String"],
+ "desc": "标签风格变体",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "events": [
+ {
+ "key": "bind:click",
+ "desc": "点击时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:close",
+ "desc": "如果关闭按钮存在,点击关闭按钮时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "重要",
+ "path": "./tag/tag"
+ },
+ "t-textarea": {
+ "key": "t-textarea",
+ "label": "文本输入框",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-textarea.png",
+ "properties": [
+ {
+ "key": "adjustPosition",
+ "type": ["Boolean"],
+ "desc": "键盘弹起时,是否自动上推页面",
+ "label": ""
+ },
+ {
+ "key": "autofocus",
+ "type": ["Boolean"],
+ "desc": "自动聚焦,拉起键盘",
+ "label": ""
+ },
+ {
+ "key": "autosize",
+ "type": ["Boolean"],
+ "desc": "是否自动增高,值为 autosize 时,style.height 不生效",
+ "label": ""
+ },
+ {
+ "key": "confirmHold",
+ "type": ["Boolean"],
+ "desc": "点击键盘右下角按钮时是否保持键盘不收起点",
+ "label": ""
+ },
+ {
+ "key": "confirmType",
+ "type": ["String"],
+ "desc": "设置键盘右下角按钮的文字,仅在 type='text'时生效",
+ "label": ""
+ },
+ {
+ "key": "disabled",
+ "type": ["Boolean"],
+ "desc": "是否禁用文本框",
+ "label": ""
+ },
+ {
+ "key": "focus",
+ "type": ["Boolean"],
+ "desc": "自动聚焦",
+ "label": ""
+ },
+ {
+ "key": "label",
+ "type": ["String"],
+ "desc": "左侧文本",
+ "label": ""
+ },
+ {
+ "key": "maxcharacter",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的字符个数,一个中文汉字表示两个字符长度",
+ "label": ""
+ },
+ {
+ "key": "maxlength",
+ "type": ["Number"],
+ "desc": "用户最多可以输入的字符个数",
+ "label": ""
+ },
+ {
+ "key": "placeholder",
+ "type": ["String"],
+ "desc": "占位符",
+ "label": ""
+ },
+ {
+ "key": "value",
+ "type": ["String"],
+ "desc": "文本框值",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class", "t-class-textarea", "t-class-placeholder", "t-class-name"],
+ "events": [
+ {
+ "key": "bind:blur",
+ "desc": "失去焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:change",
+ "desc": "输入内容变化时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:enter",
+ "desc": "点击完成时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:focus",
+ "desc": "获得焦点时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:line-change",
+ "desc": "行高发生变化时触发",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./textarea/textarea"
+ },
+ "t-toast": {
+ "key": "t-toast",
+ "label": "轻提示",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-toast.png",
+ "properties": [
+ {
+ "key": "direction",
+ "type": ["String"],
+ "desc": "图标排列方式",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "弹窗显示毫秒数",
+ "label": ""
+ },
+ {
+ "key": "icon",
+ "type": ["String"],
+ "desc": "自定义图标",
+ "label": ""
+ },
+ {
+ "key": "message",
+ "type": ["String"],
+ "desc": "弹窗显示文字",
+ "label": ""
+ },
+ {
+ "key": "overlayProps",
+ "type": ["Object"],
+ "desc": "遮罩层属性,透传至 Overlay",
+ "label": ""
+ },
+ {
+ "key": "placement",
+ "type": ["String"],
+ "desc": "弹窗展示位置",
+ "label": ""
+ },
+ {
+ "key": "preventScrollThrough",
+ "type": ["Boolean"],
+ "desc": "防止滚动穿透,即不允许点击和滚动",
+ "label": ""
+ },
+ {
+ "key": "showOverlay",
+ "type": ["Boolean"],
+ "desc": "是否显示遮罩层",
+ "label": ""
+ },
+ {
+ "key": "theme",
+ "type": ["String"],
+ "desc": "提示类型",
+ "label": ""
+ }
+ ],
+ "externalClasses": ["t-class"],
+ "tpl": "",
+ "path": "./toast/toast"
+ },
+ "t-transition": {
+ "key": "t-transition",
+ "label": "动画",
+ "icon": "",
+ "properties": [
+ {
+ "key": "appear",
+ "type": ["Boolean"],
+ "desc": "首次出现是否展示动画",
+ "label": ""
+ },
+ {
+ "key": "customClass",
+ "type": ["String"],
+ "desc": "自定义容器类名",
+ "label": ""
+ },
+ {
+ "key": "destoryOnClose",
+ "type": ["Boolean"],
+ "desc": "隐藏时是否销毁内容",
+ "label": ""
+ },
+ {
+ "key": "duration",
+ "type": ["Number"],
+ "desc": "指定过渡时间",
+ "label": ""
+ },
+ {
+ "key": "name",
+ "type": ["String"],
+ "desc": "过渡类名",
+ "label": ""
+ },
+ {
+ "key": "visible",
+ "type": ["Boolean"],
+ "desc": "是否显示",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./transition/transition"
+ },
+ "t-upload": {
+ "key": "t-upload",
+ "label": "上传",
+ "icon": "https://tdesign.gtimg.com/site/miniprogram-doc/doc-upload.png",
+ "properties": [
+ {
+ "key": "addContent",
+ "type": ["String"],
+ "desc": "添加按钮内容。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "allowUploadDuplicateFile",
+ "type": ["Boolean"],
+ "desc": "是否允许重复上传相同文件名的文件",
+ "label": ""
+ },
+ {
+ "key": "config",
+ "type": ["Object"],
+ "desc": "图片上传配置,视频上传配置,文件上传配置等,包含图片尺寸、图片来源、视频来源、视频拍摄最长时间等。更多细节查看小程序官网。[图片上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)。[视频上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)",
+ "label": ""
+ },
+ {
+ "key": "deleteBtn",
+ "type": ["String"],
+ "desc": "删除图标。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "fileListDisplay",
+ "type": ["String"],
+ "desc": "用于完全自定义文件列表内容",
+ "label": ""
+ },
+ {
+ "key": "files",
+ "type": ["Array"],
+ "desc": "已上传文件列表",
+ "label": ""
+ },
+ {
+ "key": "gridConfig",
+ "type": ["Object"],
+ "desc": "upload组件每行上传图片列数以及图片的宽度和高度",
+ "label": ""
+ },
+ {
+ "key": "gutter",
+ "type": ["Number"],
+ "desc": "预览窗格的 `gutter` 大小,单位 rpx",
+ "label": ""
+ },
+ {
+ "key": "imageProps",
+ "type": ["Object"],
+ "desc": "透传 Image 组件全部属性",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "desc": "用于控制文件上传数量,值为 0 则不限制",
+ "label": ""
+ },
+ {
+ "key": "mediaType",
+ "type": ["Array"],
+ "desc": "支持上传的文件类型,图片或视频",
+ "label": ""
+ },
+ {
+ "key": "requestMethod",
+ "type": ["String"],
+ "desc": "自定义上传方法",
+ "label": ""
+ },
+ {
+ "key": "sizeLimit",
+ "type": ["Number", "Object"],
+ "desc": "图片文件大小限制,单位 KB。可选单位有:`'B' | 'KB' | 'MB' | 'GB'`。示例一:`1000`。示例二:`{ size: 2, unit: 'MB', message: '图片大小不超过 {sizeLimit} MB' }`",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "bind:add",
+ "desc": "上传成功后触发,仅包含本次选择的照片;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ },
+ {
+ "key": "bind:complete",
+ "desc": "上传成功或失败后触发",
+ "label": ""
+ },
+ {
+ "key": "bind:fail",
+ "desc": "上传失败后触发",
+ "label": ""
+ },
+ {
+ "key": "bind:remove",
+ "desc": "移除文件时触发",
+ "label": ""
+ },
+ {
+ "key": "bind:select-change",
+ "desc": "选择文件或图片之后,上传之前,触发该事件。
`files` 表示之前已经上传完成的文件列表。
`currentSelectedFiles` 表示本次上传选中的文件列表",
+ "label": ""
+ },
+ {
+ "key": "bind:success",
+ "desc": "上传成功后触发,包含所有上传的文件;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ }
+ ],
+ "tpl": "",
+ "path": "./upload/upload"
+ }
+ },
+ "common": {
+ "properties": {},
+ "events": {}
+ },
+ "menu": [
+ {
+ "key": "menu-basic",
+ "label": "基础",
+ "submenu": [
+ {
+ "key": "subMenu-button",
+ "label": "Button 按钮",
+ "components": ["t-button"]
+ },
+ {
+ "key": "subMenu-divider",
+ "label": "Divider 分割线",
+ "components": ["t-divider"]
+ },
+ {
+ "key": "subMenu-fab",
+ "label": "Fab 悬浮按钮",
+ "components": ["t-fab"]
+ },
+ {
+ "key": "subMenu-icon",
+ "label": "Icon 图标",
+ "components": ["t-icon"]
+ }
+ ]
+ },
+ {
+ "key": "menu-nav",
+ "label": "导航",
+ "submenu": [
+ {
+ "key": "subMenu-drawer",
+ "label": "Drawer 抽屉",
+ "components": ["t-drawer"]
+ },
+ {
+ "key": "subMenu-indexes",
+ "label": "Indexes 索引",
+ "components": ["t-indexes"]
+ },
+ {
+ "key": "subMenu-navbar",
+ "label": "Navbar 导航条",
+ "components": ["t-navbar"]
+ },
+ {
+ "key": "subMenu-steps",
+ "label": "Steps 步骤条",
+ "components": ["t-steps"]
+ },
+ {
+ "key": "subMenu-tabbar",
+ "label": "TabBar 标签栏",
+ "components": ["t-tab-bar"]
+ },
+ {
+ "key": "subMenu-tabs",
+ "label": "Tabs 选项卡",
+ "components": ["t-tabs"]
+ }
+ ]
+ },
+ {
+ "key": "menu-input",
+ "label": "输入",
+ "submenu": [
+ {
+ "key": "subMenu-checkbox",
+ "label": "CheckBox 复选框",
+ "components": ["t-checkbox"]
+ },
+ {
+ "key": "subMenu-dateTimePicker",
+ "label": "DateTimePicker 时间选择器",
+ "components": ["t-date-time-picker"]
+ },
+ {
+ "key": "subMenu-input",
+ "label": "Input 输入框",
+ "components": ["t-input"]
+ },
+ {
+ "key": "subMenu-picker",
+ "label": "Picker 选择器",
+ "components": ["t-picker"]
+ },
+ {
+ "key": "subMenu-radio",
+ "label": "Radio 单选框",
+ "components": ["t-radio"]
+ },
+ {
+ "key": "subMenu-rate",
+ "label": "Rate 评分",
+ "components": ["t-rate"]
+ },
+ {
+ "key": "subMenu-search",
+ "label": "Search 搜索框",
+ "components": ["t-search"]
+ },
+ {
+ "key": "subMenu-slider",
+ "label": "Slider 滑动选择器",
+ "components": ["t-slider"]
+ },
+ {
+ "key": "subMenu-stepper",
+ "label": "Stepper 步进器",
+ "components": ["t-stepper"]
+ },
+ {
+ "key": "subMenu-switch",
+ "label": "Switch 开关",
+ "components": ["t-switch"]
+ },
+ {
+ "key": "subMenu-textarea",
+ "label": "Textarea 多行文本框",
+ "components": ["t-textarea"]
+ },
+ {
+ "key": "subMenu-upload",
+ "label": "UpLoad 上传",
+ "components": ["t-upload"]
+ }
+ ]
+ },
+ {
+ "key": "menu-data",
+ "label": "数据展示",
+ "submenu": [
+ {
+ "key": "subMenu-avatar",
+ "label": "Avatar 头像",
+ "components": ["t-avatar"]
+ },
+ {
+ "key": "subMenu-badge",
+ "label": "Badge 徽标",
+ "components": ["t-badge"]
+ },
+ {
+ "key": "subMenu-cell",
+ "label": "Cell 单元格",
+ "components": ["t-cell"]
+ },
+ {
+ "key": "subMenu-collapse",
+ "label": "Collapse 折叠面板",
+ "components": ["t-collapse"]
+ },
+ {
+ "key": "subMenu-dropdown-menu",
+ "label": "DropdownMenu 下拉菜单",
+ "components": ["t-dropdown-menu"]
+ },
+ {
+ "key": "subMenu-empty",
+ "label": "Empty 空状态",
+ "components": ["t-empty"]
+ },
+ {
+ "key": "subMenu-footer",
+ "label": "Footer 页脚",
+ "components": ["t-footer"]
+ },
+ {
+ "key": "subMenu-grid",
+ "label": "Grid 宫格",
+ "components": ["t-grid"]
+ },
+ {
+ "key": "subMenu-image",
+ "label": "Image 图片",
+ "components": ["t-image"]
+ },
+ {
+ "key": "subMenu-skeleton",
+ "label": "Skeleton 骨架屏",
+ "components": ["t-skeleton"]
+ },
+ {
+ "key": "subMenu-sticky",
+ "label": "Sticky 吸顶容器",
+ "components": ["t-sticky"]
+ },
+ {
+ "key": "subMenu-swiper",
+ "label": "Swiper 轮播图",
+ "components": ["t-swiper"]
+ },
+ {
+ "key": "subMenu-tag",
+ "label": "Tag 标签",
+ "components": ["t-tag"]
+ }
+ ]
+ },
+ {
+ "key": "menu-info",
+ "label": "消息提醒",
+ "submenu": [
+ {
+ "key": "subMenu-actionsheet",
+ "label": "ActionSheet 动作面板",
+ "components": ["t-action-sheet"]
+ },
+ {
+ "key": "subMenu-back-top",
+ "label": "BackTop 返回顶部",
+ "components": ["t-back-top"]
+ },
+ {
+ "key": "subMenu-dialog",
+ "label": "Dialog 弹出框",
+ "components": ["t-dialog"]
+ },
+ {
+ "key": "subMenu-loading",
+ "label": "Loading 加载",
+ "components": ["t-loading"]
+ },
+ {
+ "key": "subMenu-message",
+ "label": "Message 消息通知",
+ "components": ["t-message"]
+ },
+ {
+ "key": "subMenu-popup",
+ "label": "Popup 弹出层",
+ "components": ["t-popup"]
+ },
+ {
+ "key": "subMenu-progress",
+ "label": "Progress 进度条",
+ "components": ["t-progress"]
+ },
+ {
+ "key": "subMenu-pullDownRefresh",
+ "label": "PullDownRefresh 下拉刷新",
+ "components": ["t-pull-down-refresh"]
+ },
+ {
+ "key": "subMenu-swipeCell",
+ "label": "SwipeCell 滑动操作",
+ "components": ["t-swipe-cell"]
+ },
+ {
+ "key": "subMenu-toast",
+ "label": "Toast 轻提示",
+ "components": ["t-toast"]
+ }
+ ]
+ }
+ ]
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/README.en-US.md
new file mode 100644
index 0000000..0c84067
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### ActionSheet Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | center | `0.29.0`。options:center/left | N
+cancel-text | String | - | \- | N
+count | Number | 8 | \- | N
+description | String | - | `0.29.0` | N
+items | Array | - | required。Typescript:`Array` `interface ActionSheetItem {label: string; color?: string; disabled?: boolean }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts) | Y
+show-cancel | Boolean | true | \- | N
+theme | String | list | options:list/grid | N
+visible | Boolean | false | required | Y
+default-visible | Boolean | undefined | required。uncontrolled property | Y
+
+### ActionSheet Events
+
+name | params | description
+-- | -- | --
+cancel | \- | \-
+close | `(trigger: TriggerSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts)。
`type TriggerSource = 'overlay' \| 'command' \| 'select' `
+selected | `(selected: ActionSheetItem \| string, index: number)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/README.md
new file mode 100644
index 0000000..1ba2bab
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/README.md
@@ -0,0 +1,107 @@
+---
+title: ActionSheet 动作面板
+description: 由用户操作后触发的一种特定的模态弹出框 ,呈现一组与当前情境相关的两个或多个选项。
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.9.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-action-sheet": "tdesign-miniprogram/action-sheet/action-sheet",
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+列表型动作面板
+
+{{ list }}
+
+宫格型动作面板
+
+{{ grid }}
+
+### 组件状态
+
+宫格型动作面板
+
+{{ status }}
+
+### 组件样式
+
+列表型对齐方式
+
+{{ align }}
+
+### 支持指令调用
+
+```javascript
+import ActionSheet, { ActionSheetTheme } from 'tdesign-miniprogram/action-sheet/index';
+
+// 指令调用不同于组件引用不需要传入visible
+const basicListOption: ActionSheetShowOption = {
+ theme: ActionSheetTheme.List,
+ selector: '#t-action-sheet',
+ items: [
+ {
+ label: '默认选项',
+ },
+ {
+ label: '失效选项',
+ disabled: true,
+ },
+ {
+ label: '警告选项',
+ color: '#e34d59',
+ },
+ ],
+};
+
+const handler = ActionSheet.show(basicListOption);
+```
+
+指令调用的关闭如下
+
+```javascript
+handler.close();
+```
+
+
+## API
+### ActionSheet Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | center | `0.29.0`。水平对齐方式。可选项:center/left | N
+cancel-text | String | - | 设置取消按钮的文本 | N
+count | Number | 8 | 设置每页展示菜单的数量,仅当 type=grid 时有效 | N
+description | String | - | `0.29.0`。动作面板描述文字 | N
+items | Array | - | 必需。菜单项。TS 类型:`Array` `interface ActionSheetItem {label: string; color?: string; disabled?: boolean }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts) | Y
+show-cancel | Boolean | true | 是否显示取消按钮 | N
+theme | String | list | 展示类型,列表和表格形式展示。可选项:list/grid | N
+visible | Boolean | false | 必需。显示与隐藏 | Y
+default-visible | Boolean | undefined | 必需。显示与隐藏。非受控属性 | Y
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class', 't-class-content', 't-class-cancel']` | N
+
+### ActionSheet Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | \- | 点击取消按钮时触发
+close | `(trigger: TriggerSource)` | 关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/action-sheet/type.ts)。
`type TriggerSource = 'overlay' \| 'command' \| 'select' `
+selected | `(selected: ActionSheetItem \| string, index: number)` | 选择菜单项时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.d.ts
new file mode 100644
index 0000000..dd4d4bf
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.d.ts
@@ -0,0 +1,66 @@
+import { SuperComponent } from '../common/src/index';
+export default class ActionSheet extends SuperComponent {
+ static show: (options: import("./show").ActionSheetShowOption) => WechatMiniprogram.Component.TrivialInstance;
+ externalClasses: string[];
+ properties: {
+ align?: {
+ type: StringConstructor;
+ value?: "center" | "left";
+ };
+ cancelText?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ count?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ items: {
+ type: ArrayConstructor;
+ value?: (string | import("./type").ActionSheetItem)[];
+ };
+ showCancel?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: "list" | "grid";
+ };
+ visible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ gridThemeItems: any[];
+ currentSwiperIndex: number;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ ready(): void;
+ methods: {
+ onSwiperChange(e: WechatMiniprogram.TouchEvent): void;
+ splitGridThemeActions(): void;
+ show(options: any): void;
+ memoInitialData(): void;
+ close(): void;
+ onPopupVisibleChange({ detail }: {
+ detail: any;
+ }): void;
+ onSelect(event: WechatMiniprogram.TouchEvent): void;
+ onCancel(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.js b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.js
new file mode 100644
index 0000000..b21268b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.js
@@ -0,0 +1,94 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { chunk } from '../common/utils';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import { ActionSheetTheme, show } from './show';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-action-sheet`;
+let ActionSheet = class ActionSheet extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`, `${prefix}-class-cancel`];
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ gridThemeItems: [],
+ currentSwiperIndex: 0,
+ };
+ this.controlledProps = [
+ {
+ key: 'visible',
+ event: 'visible-change',
+ },
+ ];
+ this.methods = {
+ onSwiperChange(e) {
+ const { detail: { current }, } = e;
+ this.setData({
+ currentSwiperIndex: current,
+ });
+ },
+ splitGridThemeActions() {
+ if (this.data.theme !== ActionSheetTheme.Grid)
+ return;
+ this.setData({
+ gridThemeItems: chunk(this.data.items, this.data.count),
+ });
+ },
+ show(options) {
+ this.setData(Object.assign(Object.assign(Object.assign({}, this.initialData), options), { visible: true }));
+ this.splitGridThemeActions();
+ this.autoClose = true;
+ this._trigger('visible-change', { visible: true });
+ },
+ memoInitialData() {
+ this.initialData = Object.assign(Object.assign({}, this.properties), this.data);
+ },
+ close() {
+ this.triggerEvent('close', { trigger: 'command' });
+ this._trigger('visible-change', { visible: false });
+ },
+ onPopupVisibleChange({ detail }) {
+ if (!detail.visible) {
+ this.triggerEvent('close', { trigger: 'overlay' });
+ this._trigger('visible-change', { visible: false });
+ }
+ if (this.autoClose) {
+ this.setData({ visible: false });
+ this.autoClose = false;
+ }
+ },
+ onSelect(event) {
+ const { currentSwiperIndex, items, gridThemeItems, count, theme } = this.data;
+ const { index } = event.currentTarget.dataset;
+ const isSwiperMode = theme === ActionSheetTheme.Grid;
+ const item = isSwiperMode ? gridThemeItems[currentSwiperIndex][index] : items[index];
+ const realIndex = isSwiperMode ? index + currentSwiperIndex * count : index;
+ if (item) {
+ this.triggerEvent('selected', { selected: item, index: realIndex });
+ this.triggerEvent('close', { trigger: 'select' });
+ this._trigger('visible-change', { visible: false });
+ }
+ },
+ onCancel() {
+ this.triggerEvent('cancel');
+ },
+ };
+ }
+ ready() {
+ this.memoInitialData();
+ this.splitGridThemeActions();
+ }
+};
+ActionSheet.show = show;
+ActionSheet = __decorate([
+ wxComponent()
+], ActionSheet);
+export default ActionSheet;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.json b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.json
new file mode 100644
index 0000000..c1eb33e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-popup": "../popup/popup",
+ "t-grid": "../grid/grid",
+ "t-grid-item": "../grid-item/grid-item",
+ "t-swiper-nav": "../swiper-nav/swiper-nav"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxml
new file mode 100644
index 0000000..9be95bc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxs
new file mode 100644
index 0000000..af7a695
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxs
@@ -0,0 +1,19 @@
+var getListThemeItemClass = function (props) {
+ var classPrefix = props.classPrefix;
+ var item = props.item;
+ var prefix = props.prefix;
+ var classList = [classPrefix + '__list-item'];
+ if (item.disabled) {
+ classList.push(prefix + '-is-disabled');
+ }
+ return classList.join(' ');
+};
+
+var isImage = function (name) {
+ return name.indexOf('/') !== -1;
+};
+
+module.exports = {
+ getListThemeItemClass: getListThemeItemClass,
+ isImage: isImage,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxss
new file mode 100644
index 0000000..a8297bf
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/action-sheet.wxss
@@ -0,0 +1,165 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-action-sheet__content {
+ color: var(--td-action-sheet-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-top-left-radius: var(--td-action-sheet-border-radius, var(--td-radius-extra-large, 24rpx));
+ border-top-right-radius: var(--td-action-sheet-border-radius, var(--td-radius-extra-large, 24rpx));
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ overflow: hidden;
+}
+.t-action-sheet__content--grid {
+ padding-top: 16rpx;
+}
+.t-action-sheet__content:focus {
+ outline: 0;
+}
+.t-action-sheet__grid {
+ padding-bottom: 16rpx;
+}
+.t-action-sheet__grid--swiper {
+ padding-bottom: 48rpx;
+}
+.t-action-sheet__description {
+ color: var(--td-action-sheet-description-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ line-height: 44rpx;
+ font-size: 28rpx;
+ text-align: var(--td-action-sheet-text-align, center);
+ padding: 24rpx 32rpx;
+ position: relative;
+}
+.t-action-sheet__description:focus {
+ outline: 0;
+}
+.t-action-sheet__description::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__description::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-action-sheet__description--left {
+ text-align: left;
+}
+.t-action-sheet__description--left::after {
+ left: 32rpx;
+}
+.t-action-sheet__list-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ height: var(--td-action-sheet-list-item-height, 112rpx);
+ padding: 0 32rpx;
+}
+.t-action-sheet__list-item::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__list-item::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-action-sheet__list-item:focus {
+ outline: 0;
+}
+.t-action-sheet__list-item--left {
+ justify-content: start;
+}
+.t-action-sheet__list-item--left::after {
+ left: 32rpx;
+}
+.t-action-sheet__list-item--disabled {
+ color: var(--td-action-sheet-list-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-action-sheet__list-item-text {
+ font-size: var(--td-font-size-m, 32rpx);
+ word-wrap: normal;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.t-action-sheet__list-item-icon {
+ margin-right: 16rpx;
+}
+.t-action-sheet__swiper-wrap {
+ margin-top: 8rpx;
+ position: relative;
+}
+.t-action-sheet__footer {
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+}
+.t-action-sheet__gap-list {
+ height: 16rpx;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__gap-grid {
+ height: 1rpx;
+ background-color: var(--td-action-sheet-border-color, var(--td-gray-color-1, #f3f3f3));
+}
+.t-action-sheet__cancel {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: var(--td-action-sheet-cancel-height, 96rpx);
+}
+.t-action-sheet__dots {
+ position: absolute;
+ left: 50%;
+ bottom: 32rpx;
+ transform: translateX(-50%);
+ display: flex;
+ flex-direction: row;
+}
+.t-action-sheet__dots-item {
+ width: 16rpx;
+ height: 16rpx;
+ background-color: #dcdcdc;
+ border-radius: 50%;
+ margin: 0 16rpx;
+ transition: all 0.4s ease-in;
+}
+.t-action-sheet__dots-item.t-is-active {
+ background-color: #0052d9;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/index.d.ts
new file mode 100644
index 0000000..de46874
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/index.d.ts
@@ -0,0 +1,3 @@
+import ActionSheet from './action-sheet';
+export * from './show';
+export default ActionSheet;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/index.js
new file mode 100644
index 0000000..de46874
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/index.js
@@ -0,0 +1,3 @@
+import ActionSheet from './action-sheet';
+export * from './show';
+export default ActionSheet;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/props.d.ts
new file mode 100644
index 0000000..0fff787
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/props.d.ts
@@ -0,0 +1,3 @@
+import { TdActionSheetProps } from './type';
+declare const props: TdActionSheetProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/props.js
new file mode 100644
index 0000000..c89fa9e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/props.js
@@ -0,0 +1,38 @@
+const props = {
+ align: {
+ type: String,
+ value: 'center',
+ },
+ cancelText: {
+ type: String,
+ value: '取消',
+ },
+ count: {
+ type: Number,
+ value: 8,
+ },
+ description: {
+ type: String,
+ value: '',
+ },
+ items: {
+ type: Array,
+ },
+ showCancel: {
+ type: Boolean,
+ value: true,
+ },
+ theme: {
+ type: String,
+ value: 'list',
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/show.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/show.d.ts
new file mode 100644
index 0000000..e0d8eae
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/show.d.ts
@@ -0,0 +1,29 @@
+///
+///
+export interface ActionSheetItem {
+ label: string;
+ color?: string;
+ disabled?: boolean;
+ icon?: string;
+}
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+export declare enum ActionSheetTheme {
+ List = "list",
+ Grid = "grid"
+}
+interface ActionSheetProps {
+ visible: boolean;
+ items: Array;
+ defaultVisible?: boolean;
+ cancelText?: string;
+ count?: number;
+ showCancel?: boolean;
+ theme?: ActionSheetTheme;
+}
+export interface ActionSheetShowOption extends Omit {
+ context?: Context;
+ selector?: string;
+}
+export declare const show: (options: ActionSheetShowOption) => WechatMiniprogram.Component.TrivialInstance;
+export declare const close: (options: ActionSheetShowOption) => void;
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/show.js b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/show.js
new file mode 100644
index 0000000..44b0365
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/show.js
@@ -0,0 +1,33 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { getInstance } from '../common/utils';
+export var ActionSheetTheme;
+(function (ActionSheetTheme) {
+ ActionSheetTheme["List"] = "list";
+ ActionSheetTheme["Grid"] = "grid";
+})(ActionSheetTheme || (ActionSheetTheme = {}));
+export const show = function (options) {
+ const _a = Object.assign({}, options), { context, selector = '#t-action-sheet' } = _a, otherOptions = __rest(_a, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.show(Object.assign({}, otherOptions));
+ return instance;
+ }
+ console.error('未找到组件,请确认 selector && context 是否正确');
+};
+export const close = function (options) {
+ const { context, selector = '#t-action-sheet' } = Object.assign({}, options);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.close();
+ }
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/template/grid.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/template/grid.wxml
new file mode 100644
index 0000000..bdc595e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/template/grid.wxml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/template/list.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/template/list.wxml
new file mode 100644
index 0000000..37e5dcf
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/template/list.wxml
@@ -0,0 +1,14 @@
+
+
+
+ {{item.label || item}}
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/type.d.ts
new file mode 100644
index 0000000..f77a8fb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/type.d.ts
@@ -0,0 +1,43 @@
+export interface TdActionSheetProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'center' | 'left';
+ };
+ cancelText?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ count?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ items: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ showCancel?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'list' | 'grid';
+ };
+ visible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export interface ActionSheetItem {
+ label: string;
+ color?: string;
+ disabled?: boolean;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/action-sheet/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.d.ts
new file mode 100644
index 0000000..c9f9ba6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class AvatarGroup extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdAvatarGroupProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ hasChild: boolean;
+ length: number;
+ className: string;
+ };
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ lifetimes: {
+ attached(): void;
+ ready(): void;
+ };
+ observers: {
+ 'cascading, size'(): void;
+ };
+ methods: {
+ setClass(): void;
+ handleMax(): void;
+ handleChildCascading(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.js b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.js
new file mode 100644
index 0000000..b1d4563
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.js
@@ -0,0 +1,86 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import avatarGroupProps from './props';
+const { prefix } = config;
+const name = `${prefix}-avatar-group`;
+let AvatarGroup = class AvatarGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`, `${prefix}-class-image`];
+ this.properties = avatarGroupProps;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ hasChild: true,
+ length: 0,
+ className: '',
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../avatar/avatar': {
+ type: 'descendant',
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ ready() {
+ this.setData({
+ length: this.$children.length,
+ });
+ this.handleMax();
+ this.handleChildCascading();
+ },
+ };
+ this.observers = {
+ 'cascading, size'() {
+ this.setClass();
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { cascading, size } = this.properties;
+ const direction = cascading.split('-')[0];
+ const classList = [
+ name,
+ `${prefix}-class`,
+ `${name}-offset-${direction}-${size.indexOf('px') > -1 ? 'medium' : size}`,
+ ];
+ this.setData({
+ className: classList.join(' '),
+ });
+ },
+ handleMax() {
+ const { max } = this.data;
+ const len = this.$children.length;
+ if (!max || max > len)
+ return;
+ const restAvatars = this.$children.splice(max, len - max);
+ restAvatars.forEach((child) => {
+ child.hide();
+ });
+ },
+ handleChildCascading() {
+ if (this.properties.cascading === 'right-up')
+ return;
+ const defaultZIndex = 100;
+ this.$children.forEach((child, index) => {
+ child.updateCascading(defaultZIndex - index * 10);
+ });
+ },
+ };
+ }
+};
+AvatarGroup = __decorate([
+ wxComponent()
+], AvatarGroup);
+export default AvatarGroup;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.json b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.json
new file mode 100644
index 0000000..9f58d25
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-avatar": "../avatar/avatar"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.wxml
new file mode 100644
index 0000000..26929f2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.wxml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+ {{collapseAvatar}}
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.wxss
new file mode 100644
index 0000000..62dc816
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/avatar-group.wxss
@@ -0,0 +1,137 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-avatar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ background-color: var(--td-avatar-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ color: var(--td-avatar-content-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-avatar__wrapper {
+ display: inline-flex;
+ position: relative;
+ vertical-align: top;
+ margin-left: var(--td-avatar-margin-left, 0);
+}
+.t-avatar--large {
+ width: var(--td-avatar-large-width, 128rpx);
+ height: var(--td-avatar-large-width, 128rpx);
+ font-size: var(--td-avatar-text-large-font-size, 16px);
+}
+.t-avatar--large .t-avatar__icon {
+ font-size: var(--td-avatar-icon-large-font-size, 64rpx);
+}
+.t-avatar--medium {
+ width: var(--td-avatar-medium-width, 96rpx);
+ height: var(--td-avatar-medium-width, 96rpx);
+ font-size: var(--td-avatar-text-medium-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-avatar--medium .t-avatar__icon {
+ font-size: var(--td-avatar-icon-medium-font-size, 48rpx);
+}
+.t-avatar--small {
+ width: var(--td-avatar-small-width, 80rpx);
+ height: var(--td-avatar-small-width, 80rpx);
+ font-size: var(--td-avatar-text-small-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-avatar--small .t-avatar__icon {
+ font-size: var(--td-avatar-icon-small-font-size, 40rpx);
+}
+.t-avatar .t-image,
+.t-avatar__image {
+ width: 100%;
+ height: 100%;
+}
+.t-avatar--circle {
+ border-radius: var(--td-avatar-circle-border-radius, var(--td-radius-circle, 50%));
+ overflow: hidden;
+}
+.t-avatar--round {
+ border-radius: var(--td-avatar-round-border-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-avatar__text,
+.t-avatar__icon {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-avatar__text:empty,
+.t-avatar__icon:empty {
+ width: 0;
+ height: 0;
+}
+.t-avatar--border {
+ border-color: var(--td-avatar-border-color, #fff);
+ border-style: solid;
+}
+.t-avatar--border-small {
+ border-width: var(--td-avatar-border-width-small, 4rpx);
+}
+.t-avatar--border-medium {
+ border-width: var(--td-avatar-border-width-medium, 6rpx);
+}
+.t-avatar--border-large {
+ border-width: var(--td-avatar-border-width-large, 8rpx);
+}
+.t-avatar-group {
+ display: inline-flex;
+ align-items: center;
+}
+.t-avatar-group-offset-left-small {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-small, -4px);
+}
+.t-avatar-group-offset-left-medium {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-medium, -6px);
+}
+.t-avatar-group-offset-left-large {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-large, -8px);
+}
+.t-avatar-group-offset-right-small {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-small, -4px);
+}
+.t-avatar-group-offset-right-medium {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-medium, -6px);
+}
+.t-avatar-group-offset-right-large {
+ --td-avatar-margin-left: var(--td-avatar-group-margin-left-large, -8px);
+}
+.t-avatar-group__collapse--slot {
+ float: left;
+}
+.t-avatar-group__collapse--slot:not(:empty) + .t-avatar-group__collapse--default {
+ display: none;
+ float: left;
+}
+.t-avatar-group__collapse--slot:empty + .t-avatar-group__collapse--default {
+ display: block;
+ float: left;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/props.d.ts
new file mode 100644
index 0000000..892b866
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdAvatarGroupProps } from './type';
+declare const props: TdAvatarGroupProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/props.js
new file mode 100644
index 0000000..34d9d36
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/props.js
@@ -0,0 +1,20 @@
+const props = {
+ cascading: {
+ type: String,
+ value: 'left-up',
+ },
+ collapseAvatar: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ max: {
+ type: Number,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/type.d.ts
new file mode 100644
index 0000000..fccdffc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/type.d.ts
@@ -0,0 +1,27 @@
+export interface TdAvatarGroupProps {
+ cascading?: {
+ type: StringConstructor;
+ value?: CascadingValue;
+ };
+ collapseAvatar?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-image', 't-class-content'];
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type CascadingValue = 'left-up' | 'right-up';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/README.en-US.md
new file mode 100644
index 0000000..57e9af2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/README.en-US.md
@@ -0,0 +1,33 @@
+:: BASE_DOC ::
+
+## API
+### Avatar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+alt | String | - | show it when url is not valid | N
+badge-props | Object | - | Typescript:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+bordered | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-image', 't-class-icon', 't-class-alt', 't-class-content']` | N
+hide-on-load-failed | Boolean | false | hide image when loading image failed | N
+icon | String / Object | - | \- | N
+image | String | - | images url | N
+image-props | Object | - | \- | N
+shape | String | circle | shape。options:circle/round。Typescript:`ShapeEnum ` `type ShapeEnum = 'circle' \| 'round'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+size | String | medium | size | N
+
+### Avatar Events
+
+name | params | description
+-- | -- | --
+error | \- | trigger on image load failed
+
+### AvatarGroup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+cascading | String | 'right-up' | multiple images cascading。options:left-up/right-up。Typescript:`CascadingValue` `type CascadingValue = 'left-up' \| 'right-up'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar-group/type.ts) | N
+collapse-avatar | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-image', 't-class-content']` | N
+max | Number | - | \- | N
+size | String | medium | size | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/README.md
new file mode 100644
index 0000000..d083ac6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/README.md
@@ -0,0 +1,87 @@
+---
+title: Avatar 头像
+description: 用于展示用户头像信息,除了纯展示也可点击进入个人详情等操作。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-avatar": "tdesign-miniprogram/avatar/avatar",
+ "t-avatar-group": "tdesign-miniprogram/avatar-group/avatar-group"
+}
+```
+
+## 代码演示
+
+### 头像类型
+
+图片头像
+
+{{ image-avatar }}
+
+字符头像
+
+{{ character-avatar }}
+
+图标头像
+
+{{ icon-avatar }}
+
+徽标头像
+
+{{ badge-avatar }}
+
+
+### 组合头像
+
+纯展示
+
+{{ exhibition }}
+
+带操作
+
+{{ action }}
+
+### 头像尺寸
+
+头像 large/medium/small 尺寸
+
+{{ size }}
+
+## API
+### Avatar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+alt | String | - | 头像替换文本,仅当图片加载失败时有效 | N
+badge-props | Object | - | 头像右上角提示信息,继承 Badge 组件的全部特性。如:小红点,或者数字。TS 类型:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+bordered | Boolean | false | 已废弃。是否显示外边框 | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class', 't-class-image', 't-class-icon', 't-class-alt', 't-class-content']` | N
+hide-on-load-failed | Boolean | false | 加载失败时隐藏图片 | N
+icon | String / Object | - | 图标。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+image | String | - | 图片地址 | N
+image-props | Object | - | 透传至 Image 组件 | N
+shape | String | circle | 形状。可选项:circle/round。TS 类型:`ShapeEnum ` `type ShapeEnum = 'circle' \| 'round'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar/type.ts) | N
+size | String | medium | 尺寸,示例值:small/medium/large/24px/38px 等 | N
+
+### Avatar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+error | \- | 图片加载失败时触发
+
+### AvatarGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+cascading | String | 'left-up' | 图片之间的层叠关系,可选值:左侧图片在上和右侧图片在上。可选项:left-up/right-up。TS 类型:`CascadingValue` `type CascadingValue = 'left-up' \| 'right-up'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/avatar-group/type.ts) | N
+collapse-avatar | String / Slot | - | 头像数量超出时,会出现一个头像折叠元素。该元素内容可自定义。默认为 `+N`。示例:`+5`,`...`, `更多` | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class', 't-class-image', 't-class-content']` | N
+max | Number | - | 能够同时显示的最多头像数量 | N
+size | String | medium | 尺寸,示例值:small/medium/large/24px/38px 等。优先级低于 Avatar.size | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.d.ts
new file mode 100644
index 0000000..97ca39e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.d.ts
@@ -0,0 +1,23 @@
+///
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Avatar extends SuperComponent {
+ options: WechatMiniprogram.Component.ComponentOptions;
+ externalClasses: string[];
+ properties: import("./type").TdAvatarProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ isShow: boolean;
+ zIndex: number;
+ borderedWithGroup: boolean;
+ };
+ relations: RelationsOptions;
+ observers: {
+ icon(icon: any): void;
+ };
+ methods: {
+ hide(): void;
+ updateCascading(zIndex: any): void;
+ onLoadError(e: WechatMiniprogram.CustomEvent): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.js b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.js
new file mode 100644
index 0000000..8ca57d5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.js
@@ -0,0 +1,77 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import avatarProps from './props';
+import { setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-avatar`;
+let Avatar = class Avatar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ styleIsolation: 'apply-shared',
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-image`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-alt`,
+ `${prefix}-class-content`,
+ ];
+ this.properties = avatarProps;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ isShow: true,
+ zIndex: 0,
+ borderedWithGroup: false,
+ };
+ this.relations = {
+ '../avatar-group/avatar-group': {
+ type: 'ancestor',
+ linked(parent) {
+ var _a;
+ this.parent = parent;
+ this.setData({
+ size: (_a = this.data.size) !== null && _a !== void 0 ? _a : parent.data.size,
+ borderedWithGroup: true,
+ });
+ },
+ },
+ };
+ this.observers = {
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ this.methods = {
+ hide() {
+ this.setData({
+ isShow: false,
+ });
+ },
+ updateCascading(zIndex) {
+ this.setData({ zIndex });
+ },
+ onLoadError(e) {
+ if (this.properties.hideOnLoadFailed) {
+ this.setData({
+ isShow: false,
+ });
+ }
+ this.triggerEvent('error', e.detail);
+ },
+ };
+ }
+};
+Avatar = __decorate([
+ wxComponent()
+], Avatar);
+export default Avatar;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.json b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.json
new file mode 100644
index 0000000..4461d94
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-badge": "../badge/badge",
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxml
new file mode 100644
index 0000000..a92bb54
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxs
new file mode 100644
index 0000000..d67e5d8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxs
@@ -0,0 +1,26 @@
+module.exports = {
+ getClass: function (classPrefix, size, shape, bordered) {
+ var hasPx = (size || '').indexOf('px') > -1;
+ var borderSize = hasPx ? 'medium' : size;
+ var classNames = [
+ classPrefix,
+ classPrefix + (shape === 'round' ? '--round' : '--circle'),
+ bordered ? classPrefix + '--border' + ' ' + classPrefix + '--border-' + borderSize : '',
+ hasPx ? '' : classPrefix + '--' + size,
+ ];
+ return classNames.join(' ');
+ },
+
+ getSize: function (size = 'medium') {
+ var pxIndex = size.indexOf('px');
+ if (pxIndex > -1) {
+ return 'width:' + size + ';height:' + size + ';font-size:' + ((size.slice(0, pxIndex) / 8) * 3 + 2) + 'px;';
+ }
+ },
+
+ getStyles: function (isShow, zIndex) {
+ var displayStyle = isShow ? '' : 'display: none;';
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return displayStyle + zIndexStyle;
+ },
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxss
new file mode 100644
index 0000000..b1c3697
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/avatar.wxss
@@ -0,0 +1,104 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-avatar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ background-color: var(--td-avatar-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ color: var(--td-avatar-content-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-avatar__wrapper {
+ display: inline-flex;
+ position: relative;
+ vertical-align: top;
+ margin-left: var(--td-avatar-margin-left, 0);
+}
+.t-avatar--large {
+ width: var(--td-avatar-large-width, 128rpx);
+ height: var(--td-avatar-large-width, 128rpx);
+ font-size: var(--td-avatar-text-large-font-size, 16px);
+}
+.t-avatar--large .t-avatar__icon {
+ font-size: var(--td-avatar-icon-large-font-size, 64rpx);
+}
+.t-avatar--medium {
+ width: var(--td-avatar-medium-width, 96rpx);
+ height: var(--td-avatar-medium-width, 96rpx);
+ font-size: var(--td-avatar-text-medium-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-avatar--medium .t-avatar__icon {
+ font-size: var(--td-avatar-icon-medium-font-size, 48rpx);
+}
+.t-avatar--small {
+ width: var(--td-avatar-small-width, 80rpx);
+ height: var(--td-avatar-small-width, 80rpx);
+ font-size: var(--td-avatar-text-small-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-avatar--small .t-avatar__icon {
+ font-size: var(--td-avatar-icon-small-font-size, 40rpx);
+}
+.t-avatar .t-image,
+.t-avatar__image {
+ width: 100%;
+ height: 100%;
+}
+.t-avatar--circle {
+ border-radius: var(--td-avatar-circle-border-radius, var(--td-radius-circle, 50%));
+ overflow: hidden;
+}
+.t-avatar--round {
+ border-radius: var(--td-avatar-round-border-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-avatar__text,
+.t-avatar__icon {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-avatar__text:empty,
+.t-avatar__icon:empty {
+ width: 0;
+ height: 0;
+}
+.t-avatar--border {
+ border-color: var(--td-avatar-border-color, #fff);
+ border-style: solid;
+}
+.t-avatar--border-small {
+ border-width: var(--td-avatar-border-width-small, 4rpx);
+}
+.t-avatar--border-medium {
+ border-width: var(--td-avatar-border-width-medium, 6rpx);
+}
+.t-avatar--border-large {
+ border-width: var(--td-avatar-border-width-large, 8rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/props.d.ts
new file mode 100644
index 0000000..f3e7907
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdAvatarProps } from './type';
+declare const props: TdAvatarProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/props.js
new file mode 100644
index 0000000..bd83025
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/props.js
@@ -0,0 +1,39 @@
+const props = {
+ alt: {
+ type: String,
+ value: '',
+ },
+ badgeProps: {
+ type: Object,
+ },
+ bordered: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ hideOnLoadFailed: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ image: {
+ type: String,
+ value: '',
+ },
+ imageProps: {
+ type: Object,
+ },
+ shape: {
+ type: String,
+ value: 'circle',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/type.d.ts
new file mode 100644
index 0000000..07dfe75
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/type.d.ts
@@ -0,0 +1,48 @@
+import { BadgeProps } from '../badge/index';
+export interface TdAvatarProps {
+ alt?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: BadgeProps;
+ };
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-image', 't-class-icon', 't-class-alt', 't-class-content'];
+ };
+ hideOnLoadFailed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: ShapeEnum;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type ShapeEnum = 'circle' | 'round';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/avatar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/README.en-US.md
new file mode 100644
index 0000000..c75a4b5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/README.en-US.md
@@ -0,0 +1,19 @@
+:: BASE_DOC ::
+
+## API
+
+### BackTop Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-text']` | N
+fixed | Boolean | true | \- | N
+icon | String / Boolean / Object / Slot | - | \- | N
+text | String | '' | \- | N
+theme | String | round | options:round/half-round/round-dark/half-round-dark | N
+
+### BackTop Events
+
+name | params | description
+-- | -- | --
+to-top | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/README.md
new file mode 100644
index 0000000..7e220e4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/README.md
@@ -0,0 +1,42 @@
+---
+title: BackTop 返回顶部
+description: 用于当页面过长往下滑动时,帮助用户快速回到页面顶部。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+"t-back-top": "tdesign-miniprogram/back-top/back-top",
+}
+```
+
+## 代码演示
+
+
+
+### 基础返回顶部
+
+{{ base }}
+
+## API
+### BackTop Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 组件类名,分别用于设置外层元素、图标、文本内容等元素类名。`['t-class', 't-class-icon', 't-class-text']` | N
+fixed | Boolean | true | 是否绝对定位固定到屏幕右下方 | N
+icon | String / Boolean / Object / Slot | true | 图标。值为 `false` 表示不显示图标。不传表示使用默认图标 `'backtop'` | N
+text | String | '' | 文案 | N
+theme | String | round | 预设的样式类型。可选项:round/half-round/round-dark/half-round-dark | N
+
+### BackTop Events
+
+名称 | 参数 | 描述
+-- | -- | --
+to-top | \- | 点击触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.d.ts
new file mode 100644
index 0000000..90e8f03
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class BackTop extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdBackTopProps;
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ _icon: any;
+ };
+ observers: {
+ icon(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ setIcon(v: any): void;
+ toTop(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.js b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.js
new file mode 100644
index 0000000..8c2ce59
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.js
@@ -0,0 +1,67 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-back-top`;
+let BackTop = class BackTop extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-icon`, `${prefix}-class-text`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.relations = {
+ '../pull-down-refresh/pull-down-refresh': {
+ type: 'ancestor',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ _icon: null,
+ };
+ this.observers = {
+ icon() {
+ this.setIcon();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ const { icon } = this.properties;
+ this.setIcon(icon);
+ },
+ };
+ this.methods = {
+ setIcon(v) {
+ this.setData({
+ _icon: calcIcon(v, 'backtop'),
+ });
+ },
+ toTop() {
+ var _a;
+ this.triggerEvent('to-top');
+ if (this.$parent) {
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.setScrollTop(0);
+ }
+ else {
+ wx.pageScrollTo({
+ scrollTop: 0,
+ duration: 300,
+ });
+ }
+ },
+ };
+ }
+};
+BackTop = __decorate([
+ wxComponent()
+], BackTop);
+export default BackTop;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.json b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.wxml
new file mode 100644
index 0000000..1d02278
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.wxml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+ {{text}}
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.wxss
new file mode 100644
index 0000000..3ec2469
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/back-top.wxss
@@ -0,0 +1,89 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-back-top {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background-color: transparent;
+ overflow: hidden;
+ box-sizing: border-box;
+ transition: height 0.2s;
+ height: auto;
+}
+.t-back-top--fixed {
+ position: fixed;
+ right: var(--td-spacer, 16rpx);
+ bottom: var(--td-spacer-2, 32rpx);
+}
+.t-back-top--round,
+.t-back-top--round-dark {
+ width: 96rpx;
+ height: 96rpx;
+ border-radius: var(--td-back-top-round-border-radius, var(--td-radius-circle, 50%));
+}
+.t-back-top--round,
+.t-back-top--half-round {
+ color: var(--td-back-top-round-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border: 1rpx solid var(--td-back-top-round-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ background-color: var(--td-back-top-round-bg-color, var(--td-font-white-1, #ffffff));
+}
+.t-back-top--round-dark,
+.t-back-top--half-round-dark {
+ color: var(--td-back-top-round-dark-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-back-top-round-dark-bg-color, var(--td-gray-color-14, #181818));
+}
+.t-back-top--half-round,
+.t-back-top--half-round-dark {
+ width: 120rpx;
+ height: 80rpx;
+ border-radius: var(--td-back-top-half-round-border-radius, var(--td-radius-round, 999px)) 0 0 var(--td-back-top-half-round-border-radius, var(--td-radius-round, 999px));
+ flex-direction: row;
+ right: 0;
+}
+.t-back-top__text--round,
+.t-back-top__text--round-dark,
+.t-back-top__text--half-round,
+.t-back-top__text--half-round-dark {
+ font-size: var(--td-font-size, 20rpx);
+ line-height: 24rpx;
+}
+.t-back-top__text--half-round,
+.t-back-top__text--half-round-dark {
+ width: 2em;
+}
+.t-back-top__icon:not(:empty) + .t-back-top__text--half-round,
+.t-back-top__icon:not(:empty) + .t-back-top__text--half-round-dark {
+ margin-left: 8rpx;
+}
+.t-back-top__icon {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 44rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/props.d.ts
new file mode 100644
index 0000000..5ac1e9f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/props.d.ts
@@ -0,0 +1,3 @@
+import { TdBackTopProps } from './type';
+declare const props: TdBackTopProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/props.js
new file mode 100644
index 0000000..7becbe4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/props.js
@@ -0,0 +1,22 @@
+const props = {
+ externalClasses: {
+ type: Array,
+ },
+ fixed: {
+ type: Boolean,
+ value: true,
+ },
+ icon: {
+ type: null,
+ value: true,
+ },
+ text: {
+ type: String,
+ value: '',
+ },
+ theme: {
+ type: String,
+ value: 'round',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/type.d.ts
new file mode 100644
index 0000000..45b6bae
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdBackTopProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-text'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'round' | 'half-round' | 'round-dark' | 'half-round-dark';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/back-top/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/README.en-US.md
new file mode 100644
index 0000000..f592805
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/README.en-US.md
@@ -0,0 +1,17 @@
+:: BASE_DOC ::
+
+## API
+### Badge Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+color | String | - | \- | N
+content | String | - | \- | N
+count | String / Number / Slot | 0 | \- | N
+dot | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-count']` | N
+max-count | Number | 99 | \- | N
+offset | Array | - | Typescript:`Array` | N
+shape | String | circle | options:circle/round/ribbon/bubble | N
+show-zero | Boolean | false | \- | N
+size | String | medium | options:small/medium | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/README.md
new file mode 100644
index 0000000..7d1bf08
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/README.md
@@ -0,0 +1,47 @@
+---
+title: Badge 徽标
+description: 用于告知用户,该区域的状态变化或者待处理任务的数量。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-badge": "tdesign-miniprogram/badge/badge"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+{{ base }}
+
+### 组件样式
+
+{{ theme }}
+
+### 组件尺寸
+
+{{ size }}
+
+## API
+### Badge Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+color | String | - | 颜色 | N
+content | String | - | 徽标内容,示例:`content='自定义内容'`。也可以使用默认插槽定义 | N
+count | String / Number / Slot | 0 | 徽标右上角内容。可以是数字,也可以是文字。如:'new'/3/99+。特殊:值为空表示使用插槽渲染 | N
+dot | Boolean | false | 是否为红点 | N
+external-classes | Array | - | 组件类名,分别用于设置外层元素、默认内容、右上角内容等元素类名。`['t-class', 't-class-content', 't-class-count']` | N
+max-count | Number | 99 | 封顶的数字值 | N
+offset | Array | - | 设置状态点的位置偏移,示例:[-10, 20] 或 ['10em', '8rem']。TS 类型:`Array` | N
+shape | String | circle | 形状。可选项:circle/round/ribbon/bubble | N
+show-zero | Boolean | false | 当数值为 0 时,是否展示徽标 | N
+size | String | medium | 尺寸。可选项:small/medium | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.d.ts
new file mode 100644
index 0000000..2680a17
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.d.ts
@@ -0,0 +1,21 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdBadgeProps } from './type';
+export interface BadgeProps extends TdBadgeProps {
+}
+export default class Badge extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ properties: TdBadgeProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ value: string;
+ labelID: string;
+ descriptionID: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.js b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.js
new file mode 100644
index 0000000..370a57e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.js
@@ -0,0 +1,43 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { uniqueFactory } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-badge`;
+const getUniqueID = uniqueFactory('badge');
+let Badge = class Badge extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-count`, `${prefix}-class-content`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ value: '',
+ labelID: '',
+ descriptionID: '',
+ };
+ this.lifetimes = {
+ ready() {
+ const uniqueID = getUniqueID();
+ this.setData({
+ labelID: `${uniqueID}_label`,
+ descriptionID: `${uniqueID}_description`,
+ });
+ },
+ };
+ }
+};
+Badge = __decorate([
+ wxComponent()
+], Badge);
+export default Badge;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.json b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.json
new file mode 100644
index 0000000..a7a3e7a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.json
@@ -0,0 +1,5 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxml
new file mode 100644
index 0000000..f669d65
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+ {{ this.getBadgeValue({dot, count, maxCount}) }}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxs
new file mode 100644
index 0000000..08db60d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxs
@@ -0,0 +1,70 @@
+var getBadgeValue = function (props) {
+ if (props.dot) {
+ return '';
+ }
+ if (isNaN(props.count) || isNaN(props.maxCount)) {
+ return props.count;
+ }
+ return parseInt(props.count) > props.maxCount ? props.maxCount + '+' : props.count;
+};
+
+var hasUnit = function (unit) {
+ return (
+ unit.indexOf('px') > 0 ||
+ unit.indexOf('rpx') > 0 ||
+ unit.indexOf('em') > 0 ||
+ unit.indexOf('rem') > 0 ||
+ unit.indexOf('%') > 0 ||
+ unit.indexOf('vh') > 0 ||
+ unit.indexOf('vm') > 0
+ );
+};
+
+var getBadgeStyles = function (props) {
+ var styleStr = '';
+ if (props.color) {
+ styleStr += 'background:' + props.color + ';';
+ }
+ if (props.offset[0]) {
+ styleStr += 'right:' + (hasUnit(props.offset[0].toString()) ? props.offset[0] : props.offset[0] + 'px') + ';';
+ }
+ if (props.offset[1]) {
+ styleStr += 'top:' + (hasUnit(props.offset[1].toString()) ? props.offset[1] : props.offset[1] + 'px') + ';';
+ }
+ return styleStr;
+};
+
+var getBadgeOuterClass = function (props) {
+ var baseClass = 't-badge';
+ var classNames = [baseClass, props.shape === 'ribbon' ? baseClass + '__ribbon-outer' : ''];
+ return classNames.join(' ');
+};
+
+var getBadgeInnerClass = function (props) {
+ var baseClass = 't-badge';
+ var classNames = [
+ baseClass + '--basic',
+ props.dot ? baseClass + '--dot' : '',
+ baseClass + '--' + props.size,
+ baseClass + '--' + props.shape,
+ !props.dot && props.count ? baseClass + '--count' : '',
+ ];
+ return classNames.join(' ');
+};
+
+var isShowBadge = function (props) {
+ if (props.dot) {
+ return true;
+ }
+ if (!props.showZero && !isNaN(props.count) && parseInt(props.count) === 0) {
+ return false;
+ }
+ if (props.count == null) return false;
+ return true;
+};
+
+module.exports.getBadgeValue = getBadgeValue;
+module.exports.getBadgeStyles = getBadgeStyles;
+module.exports.getBadgeOuterClass = getBadgeOuterClass;
+module.exports.getBadgeInnerClass = getBadgeInnerClass;
+module.exports.isShowBadge = isShowBadge;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxss
new file mode 100644
index 0000000..66de8a0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/badge.wxss
@@ -0,0 +1,108 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-badge {
+ position: relative;
+ display: inline-block;
+ vertical-align: top;
+}
+.t-badge--basic {
+ z-index: 100;
+ padding: 0 var(--td-badge-basic-padding, 8rpx);
+ font-size: var(--td-badge-font-size, var(--td-font-size-xs, var(--td-font-size, 20rpx)));
+ color: var(--td-badge-text-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-badge-bg-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ text-align: center;
+ height: var(--td-badge-basic-height, 32rpx);
+ line-height: var(--td-badge-basic-height, 32rpx);
+ font-weight: var(--td-badge-font-weight, 600);
+ border-radius: var(--td-badge-border-radius, 4rpx);
+}
+.t-badge--dot {
+ height: var(--td-badge-dot-size, 16rpx);
+ border-radius: 50%;
+ min-width: var(--td-badge-dot-size, 16rpx);
+ padding: 0;
+}
+.t-badge--count {
+ min-width: var(--td-badge-basic-width, 32rpx);
+ white-space: nowrap;
+ box-sizing: border-box;
+}
+.t-badge--circle {
+ border-radius: calc(var(--td-badge-basic-height, 32rpx) / 2);
+}
+.t-badge__ribbon-outer {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+.t-badge__ribbon--before,
+.t-badge__ribbon--after {
+ content: '';
+ position: absolute;
+ width: 0;
+ height: 0;
+ bottom: 0;
+ border-bottom: var(--td-badge-basic-height, 32rpx) solid var(--td-badge-bg-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-badge__ribbon--before {
+ left: calc(-1 * var(--td-badge-basic-height, 32rpx) + 1rpx);
+ border-left: var(--td-badge-basic-height, 32rpx) solid transparent;
+}
+.t-badge__ribbon--after {
+ right: calc(-1 * var(--td-badge-basic-height, 32rpx) + 1rpx);
+ border-right: var(--td-badge-basic-height, 32rpx) solid transparent;
+}
+.t-badge--ribbon {
+ display: inline-block;
+ transform: rotate(45deg);
+ border-radius: 0;
+}
+.t-badge--bubble {
+ border-radius: var(--td-badge-bubble-border-radius, 20rpx 20rpx 20rpx 1px);
+}
+.t-badge--large {
+ font-size: var(--td-badge-large-font-size, var(--td-font-size-s, 24rpx));
+ height: var(--td-badge-large-height, 40rpx);
+ min-width: var(--td-badge-large-height, 40rpx);
+ line-height: var(--td-badge-large-height, 40rpx);
+ padding: 0 var(--td-badge-large-padding, 10rpx);
+}
+.t-badge--large.t-badge--circle {
+ border-radius: calc(var(--td-badge-large-height, 40rpx) / 2);
+}
+.t-badge__content:not(:empty) + .t-has-count {
+ transform: translate(50%, -50%);
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.t-badge__content-text {
+ display: block;
+ line-height: 48rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/index.d.ts
new file mode 100644
index 0000000..85b119a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './badge';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/index.js
new file mode 100644
index 0000000..85b119a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './badge';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/props.d.ts
new file mode 100644
index 0000000..e1702ff
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/props.d.ts
@@ -0,0 +1,3 @@
+import { TdBadgeProps } from './type';
+declare const props: TdBadgeProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/props.js
new file mode 100644
index 0000000..095f798
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/props.js
@@ -0,0 +1,41 @@
+const props = {
+ color: {
+ type: String,
+ value: '',
+ },
+ content: {
+ type: String,
+ value: '',
+ },
+ count: {
+ type: null,
+ value: 0,
+ },
+ dot: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ maxCount: {
+ type: Number,
+ value: 99,
+ },
+ offset: {
+ type: Array,
+ },
+ shape: {
+ type: String,
+ value: 'circle',
+ },
+ showZero: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/type.d.ts
new file mode 100644
index 0000000..30f00d0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/type.d.ts
@@ -0,0 +1,46 @@
+export interface TdBadgeProps {
+ color?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ count?: {
+ type: null;
+ value?: string | number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ dot?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-count'];
+ };
+ maxCount?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ offset?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'circle' | 'round' | 'ribbon' | 'bubble';
+ };
+ showZero?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'small' | 'medium';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/badge/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/badge/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/button/README.en-US.md
new file mode 100644
index 0000000..ee2b1d7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/README.en-US.md
@@ -0,0 +1,46 @@
+:: BASE_DOC ::
+
+## API
+### Button Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+block | Boolean | false | make button to be a block-level element | N
+content | String / Slot | - | button's children elements | N
+custom-dataset | Object | - | Typescript:`any` | N
+disabled | Boolean | false | disable the button, make it can not be clicked | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-loading']` | N
+ghost | Boolean | false | make background-color to be transparent | N
+icon | String / Object | - | icon name | N
+loading | Boolean | false | set button to be loading state | N
+loading-props | Object | - | Typescript:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/button/type.ts) | N
+shape | String | rectangle | button shape。options:rectangle/square/round/circle | N
+size | String | medium | a button has three size。options:small/medium/large。Typescript:`SizeEnum` | N
+suffix | Slot | - | \- | N
+theme | String | default | button theme。options:default/primary/danger | N
+type | String | - | type of button element, same as formType of Miniprogram。options:submit/reset | N
+variant | String | base | button variant。options:base/outline/text | N
+open-type | String | - | options:contact/share/getPhoneNumber/getUserInfo/launchApp/openSetting/feedback/chooseAvatar | N
+hover-stop-propagation | Boolean | false | \- | N
+hover-start-time | Number | 20 | \- | N
+hover-stay-time | Number | 70 | \- | N
+lang | String | en | options:en/zh_CN/zh_TW | N
+session-from | String | - | \- | N
+send-message-title | String | 当前标题 | \- | N
+send-message-path | String | 当前分享路径 | \- | N
+send-message-img | String | 截图 | \- | N
+app-parameter | String | - | \- | N
+show-message-card | Boolean | false | \- | N
+bindgetuserinfo | Eventhandle | - | \- | N
+bindcontact | Eventhandle | - | \- | N
+bindgetphonenumber | Eventhandle | - | \- | N
+binderror | Eventhandle | - | \- | N
+bindopensetting | Eventhandle | - | \- | N
+bindlaunchapp | Eventhandle | - | \- | N
+bindchooseavatar | Eventhandle | - | \- | N
+
+### Button Events
+
+name | params | description
+-- | -- | --
+tap | `(e: MouseEvent)` | trigger on click
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/button/README.md
new file mode 100644
index 0000000..937e340
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/README.md
@@ -0,0 +1,107 @@
+---
+title: Button 按钮
+description: 用于开启一个闭环的操作任务,如“删除”对象、“购买”商品等。
+spline: base
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-button": "tdesign-miniprogram/button/button"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础按钮
+
+{{ base }}
+
+图标按钮
+
+{{ icon-btn }}
+
+幽灵按钮
+
+{{ ghost-btn }}
+
+组合按钮
+
+{{ group-btn }}
+
+通栏按钮
+
+{{ block-btn }}
+
+### 02 组件状态
+
+按钮禁用态
+
+{{ disabled }}
+
+### 03 组件样式
+
+按钮尺寸
+
+{{ size }}
+
+按钮形状
+
+{{ shape }}
+
+按钮主题
+
+{{ theme }}
+
+## API
+### Button Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+block | Boolean | false | 是否为块级元素 | N
+content | String / Slot | - | 按钮内容 | N
+custom-dataset | Object | - | 自定义 dataset,可通过 event.currentTarget.dataset.custom 获取。TS 类型:`any` | N
+disabled | Boolean | false | 禁用状态 | N
+external-classes | Array | - | 组件类名。`['t-class', 't-class-icon', 't-class-loading']` | N
+ghost | Boolean | false | 是否为幽灵按钮(镂空按钮) | N
+icon | String / Object | - | 图标名称。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+loading | Boolean | false | 是否显示为加载状态 | N
+loading-props | Object | - | 透传至 Loading 组件。TS 类型:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/button/type.ts) | N
+shape | String | rectangle | 按钮形状,有 4 种:长方形、正方形、圆角长方形、圆形。可选项:rectangle/square/round/circle | N
+size | String | medium | 组件尺寸。可选项:extra-small/small/medium/large。TS 类型:`SizeEnum` | N
+suffix | Slot | - | 右侧内容,可用于定义右侧图标 | N
+theme | String | default | 组件风格,依次为品牌色、危险色。可选项:default/primary/danger/light | N
+type | String | - | 同小程序的 formType。可选项:submit/reset | N
+variant | String | base | 按钮形式,基础、线框、文字。可选项:base/outline/dashed/text | N
+open-type | String | - | 微信开放能力。
具体释义:
`contact` 打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息,具体说明 (*小程序插件中不能使用*);
`share` 触发用户转发,使用前建议先阅读使用指引;
`getPhoneNumber` 获取用户手机号,可以从 bindgetphonenumber 回调中获取到用户信息,具体说明 (*小程序插件中不能使用*);
`getUserInfo` 获取用户信息,可以从 bindgetuserinfo 回调中获取到用户信息 (*小程序插件中不能使用*);
`launchApp` 打开APP,可以通过 app-parameter 属性设定向 APP 传的参数具体说明;
`openSetting` 打开授权设置页;
`feedback` 打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容;
`chooseAvatar` 获取用户头像,可以从 bindchooseavatar 回调中获取到头像信息。
[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/button.html)。可选项:contact/share/getPhoneNumber/getUserInfo/launchApp/openSetting/feedback/chooseAvatar | N
+hover-class | String | '' | 指定按钮按下去的样式类,按钮不为加载或禁用状态时有效。当 `hover-class="none"` 时,没有点击态效果 | N
+hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态 | N
+hover-start-time | Number | 20 | 按住后多久出现点击态,单位毫秒 | N
+hover-stay-time | Number | 70 | 手指松开后点击态保留时间,单位毫秒 | N
+lang | String | en | 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。。
具体释义:
`en` 英文;
`zh_CN` 简体中文;
`zh_TW` 繁体中文。
[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/button.html)。可选项:en/zh_CN/zh_TW | N
+session-from | String | - | 会话来源,open-type="contact"时有效 | N
+send-message-title | String | 当前标题 | 会话内消息卡片标题,open-type="contact"时有效 | N
+send-message-path | String | 当前分享路径 | 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 | N
+send-message-img | String | 截图 | 会话内消息卡片图片,open-type="contact"时有效 | N
+app-parameter | String | - | 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 | N
+show-message-card | Boolean | false | 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效 | N
+bindgetuserinfo | Eventhandle | - | 用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与wx.getUserInfo返回的一致,open-type="getUserInfo"时有效 | N
+bindcontact | Eventhandle | - | 客服消息回调,open-type="contact"时有效 | N
+bindgetphonenumber | Eventhandle | - | 获取用户手机号回调,open-type=getPhoneNumber时有效 | N
+binderror | Eventhandle | - | 当使用开放能力时,发生错误的回调,open-type=launchApp时有效 | N
+bindopensetting | Eventhandle | - | 在打开授权设置页后回调,open-type=openSetting时有效 | N
+bindlaunchapp | Eventhandle | - | 打开 APP 成功的回调,open-type=launchApp时有效 | N
+bindchooseavatar | Eventhandle | - | 获取用户头像回调,open-type=chooseAvatar时有效 | N
+
+### Button Events
+
+名称 | 参数 | 描述
+-- | -- | --
+tap | `event` | 点击按钮,当按钮不为加载或禁用状态时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.d.ts
new file mode 100644
index 0000000..64c6cbe
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.d.ts
@@ -0,0 +1,35 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdButtonProps } from './type';
+export interface ButtonProps extends TdButtonProps {
+}
+export default class Button extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ properties: TdButtonProps;
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ className: string;
+ classPrefix: string;
+ };
+ observers: {
+ 'theme, size, plain, block, shape, disabled, loading'(): void;
+ icon(icon: any): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ setClass(): void;
+ getuserinfo(e: any): void;
+ contact(e: any): void;
+ getphonenumber(e: any): void;
+ error(e: any): void;
+ opensetting(e: any): void;
+ launchapp(e: any): void;
+ chooseavatar(e: any): void;
+ handleTap(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.js b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.js
new file mode 100644
index 0000000..c33131a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.js
@@ -0,0 +1,97 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { canIUseFormFieldButton } from '../common/version';
+import { setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-button`;
+let Button = class Button extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-icon`, `${prefix}-class-loading`];
+ this.behaviors = canIUseFormFieldButton() ? ['wx://form-field-button'] : [];
+ this.properties = props;
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ className: '',
+ classPrefix: name,
+ };
+ this.observers = {
+ 'theme, size, plain, block, shape, disabled, loading'() {
+ this.setClass();
+ },
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ };
+ this.methods = {
+ setClass() {
+ const classList = [
+ name,
+ `${prefix}-class`,
+ `${name}--${this.data.variant || 'base'}`,
+ `${name}--${this.data.theme || 'default'}`,
+ `${name}--${this.data.shape || 'rectangle'}`,
+ `${name}--size-${this.data.size || 'medium'}`,
+ ];
+ if (this.data.block) {
+ classList.push(`${name}--block`);
+ }
+ if (this.data.disabled) {
+ classList.push(`${name}--disabled`);
+ }
+ if (this.data.ghost) {
+ classList.push(`${name}--ghost`);
+ }
+ this.setData({
+ className: classList.join(' '),
+ });
+ },
+ getuserinfo(e) {
+ this.triggerEvent('getuserinfo', e.detail);
+ },
+ contact(e) {
+ this.triggerEvent('contact', e.detail);
+ },
+ getphonenumber(e) {
+ this.triggerEvent('getphonenumber', e.detail);
+ },
+ error(e) {
+ this.triggerEvent('error', e.detail);
+ },
+ opensetting(e) {
+ this.triggerEvent('opensetting', e.detail);
+ },
+ launchapp(e) {
+ this.triggerEvent('launchapp', e.detail);
+ },
+ chooseavatar(e) {
+ this.triggerEvent('chooseavatar', e.detail);
+ },
+ handleTap(e) {
+ if (this.data.disabled || this.data.loading)
+ return;
+ this.triggerEvent('tap', e);
+ },
+ };
+ }
+};
+Button = __decorate([
+ wxComponent()
+], Button);
+export default Button;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.json b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.json
new file mode 100644
index 0000000..708bd1b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-loading": "../loading/loading"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.wxml
new file mode 100644
index 0000000..eefa0f3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.wxml
@@ -0,0 +1,59 @@
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.wxss
new file mode 100644
index 0000000..3628ff8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/button.wxss
@@ -0,0 +1,451 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-button--size-extra-small {
+ font-size: var(--td-button-extra-small-font-size, var(--td-font-size-base, 28rpx));
+ padding-left: var(--td-button-extra-small-padding-horizontal, 16rpx);
+ padding-right: var(--td-button-extra-small-padding-horizontal, 16rpx);
+ height: var(--td-button-extra-small-height, 56rpx);
+ line-height: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--size-extra-small .t-button__icon {
+ font-size: var(--td-button-extra-small-icon-font-size, 36rpx);
+}
+.t-button--size-small {
+ font-size: var(--td-button-small-font-size, var(--td-font-size-base, 28rpx));
+ padding-left: var(--td-button-small-padding-horizontal, 24rpx);
+ padding-right: var(--td-button-small-padding-horizontal, 24rpx);
+ height: var(--td-button-small-height, 64rpx);
+ line-height: var(--td-button-small-height, 64rpx);
+}
+.t-button--size-small .t-button__icon {
+ font-size: var(--td-button-small-icon-font-size, 36rpx);
+}
+.t-button--size-medium {
+ font-size: var(--td-button-medium-font-size, var(--td-font-size-m, 32rpx));
+ padding-left: var(--td-button-medium-padding-horizontal, 32rpx);
+ padding-right: var(--td-button-medium-padding-horizontal, 32rpx);
+ height: var(--td-button-medium-height, 80rpx);
+ line-height: var(--td-button-medium-height, 80rpx);
+}
+.t-button--size-medium .t-button__icon {
+ font-size: var(--td-button-medium-icon-font-size, 40rpx);
+}
+.t-button--size-large {
+ font-size: var(--td-button-large-font-size, var(--td-font-size-m, 32rpx));
+ padding-left: var(--td-button-large-padding-horizontal, 40rpx);
+ padding-right: var(--td-button-large-padding-horizontal, 40rpx);
+ height: var(--td-button-large-height, 96rpx);
+ line-height: var(--td-button-large-height, 96rpx);
+}
+.t-button--size-large .t-button__icon {
+ font-size: var(--td-button-large-icon-font-size, 48rpx);
+}
+.t-button--default {
+ color: var(--td-button-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background-color: var(--td-button-default-bg-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--default::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-default-border-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--default.t-button--hover {
+ z-index: 0;
+}
+.t-button--default.t-button--hover::after {
+ background-color: var(--td-button-default-active-bg-color, var(--td-bg-color-component-active, var(--td-gray-color-6, #a6a6a6)));
+ border-color: var(--td-button-default-active-border-color, var(--td-bg-color-component-active, var(--td-gray-color-6, #a6a6a6)));
+}
+.t-button--default.t-button--disabled {
+ color: var(--td-button-default-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-button-default-disabled-bg, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-button--default.t-button--disabled::after {
+ border-color: var(--td-button-default-disabled-border-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-button--primary {
+ color: var(--td-button-primary-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-primary-bg-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--primary::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-primary-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--primary.t-button--hover {
+ z-index: 0;
+}
+.t-button--primary.t-button--hover::after {
+ background-color: var(--td-button-primary-active-bg-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+ border-color: var(--td-button-primary-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--primary.t-button--disabled {
+ color: var(--td-button-primary-disabled-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-primary-disabled-bg, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--primary.t-button--disabled::after {
+ border-color: var(--td-button-primary-disabled-border-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--light {
+ color: var(--td-button-light-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-button-light-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--light::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-light-border-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--light.t-button--hover {
+ z-index: 0;
+}
+.t-button--light.t-button--hover::after {
+ background-color: var(--td-button-light-active-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ border-color: var(--td-button-light-active-border-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+}
+.t-button--light.t-button--disabled {
+ color: var(--td-button-light-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+ background-color: var(--td-button-light-disabled-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--light.t-button--disabled::after {
+ border-color: var(--td-button-light-disabled-border-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--danger {
+ color: var(--td-button-danger-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-danger-bg-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--danger::after {
+ border-width: var(--td-button-border-width, 4rpx);
+ border-color: var(--td-button-danger-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--danger.t-button--hover {
+ z-index: 0;
+}
+.t-button--danger.t-button--hover::after {
+ background-color: var(--td-button-danger-active-bg-color, var(--td-error-color-7, #ad352f));
+ border-color: var(--td-button-danger-active-border-color, var(--td-error-color-7, #ad352f));
+}
+.t-button--danger.t-button--disabled {
+ color: var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-button-danger-disabled-bg, var(--td-error-color-3, #ffb9b0));
+}
+.t-button--danger.t-button--disabled::after {
+ border-color: var(--td-button-danger-disabled-border-color, var(--td-error-color-3, #ffb9b0));
+}
+.t-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ white-space: nowrap;
+ text-align: center;
+ background-image: none;
+ transition: all 0.3s;
+ touch-action: manipulation;
+ border-radius: var(--td-button-border-radius, var(--td-radius-default, 12rpx));
+ outline: none;
+ font-family: PingFang SC, Microsoft YaHei, Arial Regular;
+ font-weight: var(--td-button-font-weight, 600);
+ vertical-align: top;
+ cursor: pointer;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-user-select: none;
+ user-select: none;
+ /* stylelint-disable-next-line */
+ -webkit-appearance: none;
+}
+.t-button::after {
+ border-radius: calc(var(--td-button-border-radius, var(--td-radius-default, 12rpx)) * 2);
+}
+.t-button--text {
+ color: var(--td-button-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background: none;
+}
+.t-button--text::after {
+ border: 0;
+}
+.t-button--text.t-button--hover::after {
+ background-color: var(--td-button-default-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--primary {
+ color: var(--td-button-primary-text-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background: none;
+}
+.t-button--text.t-button--primary.t-button--hover::after {
+ background-color: var(--td-button-primary-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--primary.t-button--disabled {
+ color: var(--td-button-primary-text-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+ background: none;
+}
+.t-button--text.t-button--danger {
+ color: var(--td-button-danger-text-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background: none;
+}
+.t-button--text.t-button--danger.t-button--hover::after {
+ background-color: var(--td-button-danger-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--danger.t-button--disabled {
+ color: var(--td-button-danger-text-disabled-color, var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff)));
+ background: none;
+}
+.t-button--text.t-button--light {
+ color: var(--td-button-light-text-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background: none;
+}
+.t-button--text.t-button--light.t-button--hover::after {
+ background-color: var(--td-button-light-text-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-button--text.t-button--disabled {
+ color: var(--td-button-default-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-button--ghost {
+ background-color: transparent;
+ color: var(--td-button-ghost-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-button--ghost::after {
+ border-color: var(--td-button-ghost-border-color, var(--td-button-ghost-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff))));
+}
+.t-button--ghost.t-button--hover::after {
+ background: none;
+}
+.t-button--ghost.t-button--primary {
+ color: var(--td-button-ghost-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--ghost.t-button--primary::after {
+ border-color: var(--td-button-ghost-primary-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--ghost.t-button--danger {
+ color: var(--td-button-ghost-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--ghost.t-button--danger::after {
+ border-color: var(--td-button-ghost-danger-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--ghost.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-ghost-disabled-color, rgba(255, 255, 255, 0.35));
+}
+.t-button--ghost.t-button--disabled::after {
+ border-color: var(--td-button-ghost-disabled-color, rgba(255, 255, 255, 0.35));
+}
+.t-button--outline {
+ color: var(--td-button-default-outline-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background-color: transparent;
+}
+.t-button--outline::after {
+ border-color: var(--td-button-default-outline-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--hover::after {
+ background-color: var(--td-button-default-outline-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-button-default-outline-active-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--disabled {
+ color: var(--td-button-default-outline-disabled-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--disabled::after {
+ border-color: var(--td-button-default-outline-disabled-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-button--outline.t-button--primary {
+ color: var(--td-button-primary-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--outline.t-button--primary::after {
+ border-color: var(--td-button-primary-outline-border-color, var(--td-button-primary-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-button--outline.t-button--primary.t-button--hover {
+ color: var(--td-button-primary-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--primary.t-button--hover::after {
+ background-color: var(--td-button-primary-outline-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-button-primary-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--primary.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-primary-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--outline.t-button--primary.t-button--disabled::after {
+ border-color: var(--td-button-primary-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--outline.t-button--danger {
+ color: var(--td-button-danger-outline-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--outline.t-button--danger::after {
+ border-color: var(--td-button-danger-outline-border-color, var(--td-button-danger-outline-color, var(--td-error-color, var(--td-error-color-6, #d54941))));
+}
+.t-button--outline.t-button--danger.t-button--hover {
+ color: var(--td-button-danger-outline-active-border-color, var(--td-error-color-7, #ad352f));
+}
+.t-button--outline.t-button--danger.t-button--hover::after {
+ background-color: var(--td-button-danger-outline-active-bg-color, var(--td-bg-color-container-active, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-button-danger-outline-active-border-color, var(--td-error-color-7, #ad352f));
+}
+.t-button--outline.t-button--danger.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-danger-outline-disabled-color, var(--td-error-color-3, #ffb9b0));
+}
+.t-button--outline.t-button--danger.t-button--disabled::after {
+ border-color: var(--td-button-danger-outline-disabled-color, var(--td-error-color-3, #ffb9b0));
+}
+.t-button--outline.t-button--light {
+ color: var(--td-button-light-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-button-light-outline-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-button--outline.t-button--light::after {
+ border-color: var(--td-button-light-outline-border-color, var(--td-button-light-outline-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-button--outline.t-button--light.t-button--hover {
+ color: var(--td-button-light-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--light.t-button--hover::after {
+ background-color: var(--td-button-light-outline-active-bg-color, var(--td-brand-color-light-active, var(--td-primary-color-2, #d9e1ff)));
+ border-color: var(--td-button-light-outline-active-border-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-button--outline.t-button--light.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-light-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--outline.t-button--light.t-button--disabled::after {
+ border-color: var(--td-button-light-outline-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--dashed {
+ background-color: transparent;
+ border-style: dashed;
+}
+.t-button--dashed.t-button--primary {
+ color: var(--td-button-primary-dashed-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-button--dashed.t-button--primary::after {
+ border-color: var(--td-button-primary-dashed-border-color, var(--td-button-primary-dashed-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-button--dashed.t-button--primary.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-primary-dashed-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--dashed.t-button--primary.t-button--disabled::after {
+ border-color: var(--td-button-primary-dashed-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-button--dashed.t-button--danger {
+ color: var(--td-button-danger-dashed-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-button--dashed.t-button--danger::after {
+ border-color: var(--td-button-danger-dashed-border-color, var(--td-button-danger-dashed-color, var(--td-error-color, var(--td-error-color-6, #d54941))));
+}
+.t-button--dashed.t-button--danger.t-button--disabled {
+ background-color: transparent;
+ color: var(--td-button-danger-dashed-disabled-color, var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff)));
+}
+.t-button--dashed.t-button--danger.t-button--disabled::after {
+ border-color: var(--td-button-danger-dashed-disabled-color, var(--td-button-danger-disabled-color, var(--td-font-white-1, #ffffff)));
+}
+.t-button__loading + .t-button__content:not(:empty),
+.t-button__icon + .t-button__content:not(:empty) {
+ margin-left: 8rpx;
+}
+.t-button__icon {
+ border-radius: var(--td-button-icon-border-radius, 8rpx);
+}
+.t-button--round.t-button--size-large {
+ border-radius: calc(var(--td-button-large-height, 96rpx) / 2);
+}
+.t-button--round.t-button--size-large::after {
+ border-radius: var(--td-button-large-height, 96rpx);
+}
+.t-button--round.t-button--size-medium {
+ border-radius: calc(var(--td-button-medium-height, 80rpx) / 2);
+}
+.t-button--round.t-button--size-medium::after {
+ border-radius: var(--td-button-medium-height, 80rpx);
+}
+.t-button--round.t-button--size-small {
+ border-radius: calc(var(--td-button-small-height, 64rpx) / 2);
+}
+.t-button--round.t-button--size-small::after {
+ border-radius: var(--td-button-small-height, 64rpx);
+}
+.t-button--round.t-button--size-extra-small {
+ border-radius: calc(var(--td-button-extra-small-height, 56rpx) / 2);
+}
+.t-button--round.t-button--size-extra-small::after {
+ border-radius: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--square {
+ padding: 0;
+}
+.t-button--square.t-button--size-large {
+ width: var(--td-button-large-height, 96rpx);
+}
+.t-button--square.t-button--size-medium {
+ width: var(--td-button-medium-height, 80rpx);
+}
+.t-button--square.t-button--size-small {
+ width: var(--td-button-small-height, 64rpx);
+}
+.t-button--square.t-button--size-extra-small {
+ width: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--circle {
+ padding: 0;
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-large {
+ width: var(--td-button-large-height, 96rpx);
+}
+.t-button--circle.t-button--size-large::after {
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-medium {
+ width: var(--td-button-medium-height, 80rpx);
+}
+.t-button--circle.t-button--size-medium::after {
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-small {
+ width: var(--td-button-small-height, 64rpx);
+}
+.t-button--circle.t-button--size-small::after {
+ border-radius: 50%;
+}
+.t-button--circle.t-button--size-extra-small {
+ width: var(--td-button-extra-small-height, 56rpx);
+}
+.t-button--circle.t-button--size-extra-small::after {
+ border-radius: 50%;
+}
+.t-button--block {
+ display: flex;
+ width: 100%;
+}
+.t-button--disabled {
+ cursor: not-allowed;
+}
+.t-button__loading--wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-button__loading--indicator {
+ color: var(--td-font-white-1, #ffffff);
+}
+.t-button.t-button--hover::after {
+ z-index: -1;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/button/index.d.ts
new file mode 100644
index 0000000..beb0ad5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/index.d.ts
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './button';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/button/index.js
new file mode 100644
index 0000000..beb0ad5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/index.js
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './button';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/button/props.d.ts
new file mode 100644
index 0000000..00dc5fb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/props.d.ts
@@ -0,0 +1,3 @@
+import { TdButtonProps } from './type';
+declare const props: TdButtonProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/button/props.js
new file mode 100644
index 0000000..211af35
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/props.js
@@ -0,0 +1,100 @@
+const props = {
+ block: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ customDataset: {
+ type: null,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ ghost: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ loading: {
+ type: Boolean,
+ value: false,
+ },
+ loadingProps: {
+ type: Object,
+ },
+ shape: {
+ type: String,
+ value: 'rectangle',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ type: {
+ type: String,
+ },
+ variant: {
+ type: String,
+ value: 'base',
+ },
+ openType: {
+ type: String,
+ },
+ hoverClass: {
+ type: String,
+ value: '',
+ },
+ hoverStopPropagation: {
+ type: Boolean,
+ value: false,
+ },
+ hoverStartTime: {
+ type: Number,
+ value: 20,
+ },
+ hoverStayTime: {
+ type: Number,
+ value: 70,
+ },
+ lang: {
+ type: String,
+ value: 'en',
+ },
+ sessionFrom: {
+ type: String,
+ value: '',
+ },
+ sendMessageTitle: {
+ type: String,
+ value: '',
+ },
+ sendMessagePath: {
+ type: String,
+ value: '',
+ },
+ sendMessageImg: {
+ type: String,
+ value: '',
+ },
+ appParameter: {
+ type: String,
+ value: '',
+ },
+ showMessageCard: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/button/type.d.ts
new file mode 100644
index 0000000..884b01f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/type.d.ts
@@ -0,0 +1,108 @@
+import { LoadingProps } from '../loading/index';
+import { SizeEnum } from '../common/common';
+export interface TdButtonProps {
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ customDataset?: {
+ type: ObjectConstructor;
+ value?: any;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-loading'];
+ };
+ ghost?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ loadingProps?: {
+ type: ObjectConstructor;
+ value?: LoadingProps;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'rectangle' | 'square' | 'round' | 'circle';
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'primary' | 'danger';
+ };
+ type?: {
+ type: StringConstructor;
+ value?: 'submit' | 'reset';
+ };
+ variant?: {
+ type: StringConstructor;
+ value?: 'base' | 'outline' | 'text';
+ };
+ openType?: {
+ type: StringConstructor;
+ value?: 'contact' | 'share' | 'getPhoneNumber' | 'getUserInfo' | 'launchApp' | 'openSetting' | 'feedback' | 'chooseAvatar';
+ };
+ hoverClass?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ hoverStopPropagation?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ hoverStartTime?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ hoverStayTime?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ lang?: {
+ type: StringConstructor;
+ value?: 'en' | 'zh_CN' | 'zh_TW';
+ };
+ sessionFrom?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ sendMessageTitle?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ sendMessagePath?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ sendMessageImg?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ appParameter?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ showMessageCard?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/button/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/button/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/button/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/README.en-US.md
new file mode 100644
index 0000000..243946c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/README.en-US.md
@@ -0,0 +1,28 @@
+:: BASE_DOC ::
+
+## API
+### Calendar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+auto-close | Boolean | true | `0.34.0` | N
+confirm-btn | String / Object / Slot | '' | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+first-day-of-week | Number | 0 | \- | N
+format | Function | - | Typescript:`CalendarFormatType ` `type CalendarFormatType = (day: TDate) => TDate` `type TDateType = 'selected' \| 'disabled' \| 'start' \| 'centre' \| 'end' \| ''` `interface TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string;}`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+max-date | Number | - | \- | N
+min-date | Number | - | \- | N
+title | String / Slot | - | \- | N
+type | String | single | options:single/multiple/range | N
+use-popup | Boolean | true | `0.32.0` | N
+value | Number / Array | - | Typescript:`number \| number[]` | N
+default-value | Number / Array | undefined | uncontrolled property。Typescript:`number \| number[]` | N
+visible | Boolean | false | \- | N
+
+### Calendar Events
+
+name | params | description
+-- | -- | --
+change | `(value: timestamp)` | `0.28.0`
+close | `(trigger: CalendarTrigger)` | `0.34.0`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts)。
`type CalendarTrigger = 'close-btn' \| 'confirm-btn' \| 'overlay'`
+confirm | `(value: timestamp)` | \-
+select | `(value: timestamp)` | `0.28.0`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/README.md
new file mode 100644
index 0000000..bd1bf40
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/README.md
@@ -0,0 +1,80 @@
+---
+title: Calendar 日历
+description: 按照日历形式展示数据或日期的容器。
+spline: form
+isComponent: true
+---
+


+
+
+
+ 该组件于 0.22.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-calendar": "tdesign-miniprogram/calendar/calendar"
+}
+```
+
+## 代码演示
+
+### 组件类型
+#### 单个选择日期
+
+{{ base }}
+
+#### 多个选择日期
+
+{{ multiple }}
+
+#### 区间选择日期
+
+{{ range }}
+
+### 组件样式
+
+#### 自定义文案
+
+{{ custom-text }}
+
+#### 自定义区间
+
+{{ custom-range }}
+
+#### 不使用 Popup
+
+{{ without-popup }}
+
+## API
+### Calendar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+auto-close | Boolean | true | `0.34.0`。自动关闭;在点击关闭按钮、确认按钮、遮罩层时自动关闭,不需要手动设置 visible | N
+confirm-btn | String / Object / Slot | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+first-day-of-week | Number | 0 | 第一天从星期几开始,默认 0 = 周日 | N
+format | Function | - | 用于格式化日期的函数。TS 类型:`CalendarFormatType ` `type CalendarFormatType = (day: TDate) => TDate` `type TDateType = 'selected' \| 'disabled' \| 'start' \| 'centre' \| 'end' \| ''` `interface TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string;}`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
+max-date | Number | - | 最大可选的日期,不传则默认半年后 | N
+min-date | Number | - | 最小可选的日期,不传则默认今天 | N
+title | String / Slot | - | 标题,不传默认为“请选择日期” | N
+type | String | single | 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择。可选项:single/multiple/range | N
+use-popup | Boolean | true | `0.32.0`。是否使用弹出层包裹日历 | N
+value | Number / Array | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。TS 类型:`number \| number[]` | N
+default-value | Number / Array | undefined | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。非受控属性。TS 类型:`number \| number[]` | N
+visible | Boolean | false | 是否显示日历;`usePopup` 为 true 时有效 | N
+
+### Calendar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: timestamp)` | `0.28.0`。不显示 confirm-btn 时,完成选择时触发(暂不支持 type = multiple)
+close | `(trigger: CalendarTrigger)` | `0.34.0`。关闭按钮时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts)。
`type CalendarTrigger = 'close-btn' \| 'confirm-btn' \| 'overlay'`
+confirm | `(value: timestamp)` | 点击确认按钮时触发
+select | `(value: timestamp)` | `0.28.0`。点击日期时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.d.ts
new file mode 100644
index 0000000..8e97fad
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.d.ts
@@ -0,0 +1,44 @@
+///
+import { SuperComponent } from '../common/src/index';
+import { TdCalendarProps } from './type';
+export interface CalendarProps extends TdCalendarProps {
+}
+export default class Calendar extends SuperComponent {
+ externalClasses: string[];
+ options: WechatMiniprogram.Component.ComponentOptions;
+ properties: TdCalendarProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ months: any[];
+ scrollIntoView: string;
+ innerConfirmBtn: {
+ content: string;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ lifetimes: {
+ ready(): void;
+ };
+ observers: {
+ confirmBtn(v: any): void;
+ 'firstDayOfWeek,minDate,maxDate'(firstDayOfWeek: any, minDate: any, maxDate: any): void;
+ value(v: any): void;
+ visible(v: any): void;
+ format(v: any): void;
+ };
+ methods: {
+ initialValue(): void;
+ scrollIntoView(): void;
+ calcMonths(): void;
+ close(trigger: any): void;
+ onVisibleChange(): void;
+ handleClose(): void;
+ handleSelect(e: any): void;
+ onTplButtonTap(): void;
+ toTime(val: any): any;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.js b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.js
new file mode 100644
index 0000000..56c4ce4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.js
@@ -0,0 +1,165 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import TCalendar from '../common/shared/calendar/index';
+const { prefix } = config;
+const name = `${prefix}-calendar`;
+let Calendar = class Calendar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ styleIsolation: 'apply-shared',
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ months: [],
+ scrollIntoView: '',
+ innerConfirmBtn: { content: '确定' },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'confirm',
+ },
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.lifetimes = {
+ ready() {
+ this.base = new TCalendar(this.properties);
+ this.initialValue();
+ this.setData({
+ days: this.base.getDays(),
+ });
+ this.calcMonths();
+ },
+ };
+ this.observers = {
+ confirmBtn(v) {
+ if (typeof v === 'string') {
+ this.setData({ innerConfirmBtn: v === 'slot' ? 'slot' : { content: v } });
+ }
+ else if (typeof v === 'object') {
+ this.setData({ innerConfirmBtn: v });
+ }
+ },
+ 'firstDayOfWeek,minDate,maxDate'(firstDayOfWeek, minDate, maxDate) {
+ if (this.base) {
+ this.base.firstDayOfWeek = firstDayOfWeek;
+ this.base.minDate = minDate;
+ this.base.maxDate = maxDate;
+ this.calcMonths();
+ }
+ },
+ value(v) {
+ if (this.base) {
+ this.base.value = v;
+ }
+ },
+ visible(v) {
+ if (v) {
+ this.scrollIntoView();
+ if (this.base) {
+ this.base.value = this.data.value;
+ this.calcMonths();
+ }
+ }
+ },
+ format(v) {
+ this.base.format = v;
+ if (this.base && !this.data.usePopup) {
+ this.calcMonths();
+ }
+ },
+ };
+ this.methods = {
+ initialValue() {
+ const { value, type, minDate } = this.data;
+ if (!value) {
+ const today = new Date();
+ const now = minDate || new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime();
+ const initialValue = type === 'single' ? now : [now];
+ if (type === 'range') {
+ initialValue[1] = now + 24 * 3600 * 1000;
+ }
+ this.setData({
+ value: initialValue,
+ });
+ this.base.value = initialValue;
+ }
+ },
+ scrollIntoView() {
+ const { value } = this.data;
+ if (!value)
+ return;
+ const date = new Date(Array.isArray(value) ? value[0] : value);
+ if (date) {
+ this.setData({
+ scrollIntoView: `year_${date.getFullYear()}_month_${date.getMonth()}`,
+ });
+ }
+ },
+ calcMonths() {
+ const months = this.base.getMonths();
+ this.setData({
+ months,
+ });
+ },
+ close(trigger) {
+ if (this.data.autoClose) {
+ this.setData({ visible: false });
+ }
+ this.triggerEvent('close', { trigger });
+ },
+ onVisibleChange() {
+ this.close('overlay');
+ },
+ handleClose() {
+ this.close('close-btn');
+ },
+ handleSelect(e) {
+ const { date, year, month } = e.currentTarget.dataset;
+ if (date.type === 'disabled')
+ return;
+ const rawValue = this.base.select({ cellType: date.type, year, month, date: date.day });
+ const value = this.toTime(rawValue);
+ this.calcMonths();
+ if (this.data.confirmBtn == null) {
+ if (this.data.type === 'single' || rawValue.length === 2) {
+ this.setData({ visible: false });
+ this._trigger('change', { value });
+ }
+ }
+ this.triggerEvent('select', { value });
+ },
+ onTplButtonTap() {
+ const rawValue = this.base.getTrimValue();
+ const value = this.toTime(rawValue);
+ this.close('confirm-btn');
+ this._trigger('confirm', { value });
+ },
+ toTime(val) {
+ if (Array.isArray(val)) {
+ return val.map((item) => item.getTime());
+ }
+ return val.getTime();
+ },
+ };
+ }
+};
+Calendar = __decorate([
+ wxComponent()
+], Calendar);
+export default Calendar;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.json b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.json
new file mode 100644
index 0000000..5f417b9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup",
+ "t-button": "../button/button",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxml
new file mode 100644
index 0000000..135766a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxs
new file mode 100644
index 0000000..8541482
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxs
@@ -0,0 +1,30 @@
+function getDateLabel(monthItem, dateItem) {
+ var weekdayText = ['日', '一', '二', '三', '四', '五', '六'];
+ var weekday = (monthItem.weekdayOfFirstDay + dateItem.day - 1) % 7;
+ var label = monthItem.month + 1 + '月' + dateItem.day + '日, 星期' + weekdayText[weekday];
+ if (dateItem.type === 'start') {
+ label = '开始日期:' + label;
+ }
+ if (dateItem.type === 'end') {
+ label = '结束日期:' + label;
+ }
+ if (isDateSelected(dateItem)) {
+ label = '已选中, ' + label;
+ }
+ if (dateItem.prefix) {
+ label += ', ' + dateItem.prefix;
+ }
+ if (dateItem.suffix) {
+ label += ', ' + dateItem.suffix;
+ }
+ return label;
+}
+
+function isDateSelected(dateItem) {
+ return ['start', 'end', 'selected', 'centre'].indexOf(dateItem.type) >= 0;
+}
+
+module.exports = {
+ getDateLabel: getDateLabel,
+ isDateSelected: isDateSelected,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxss
new file mode 100644
index 0000000..e0d2271
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/calendar.wxss
@@ -0,0 +1,187 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-calendar {
+ position: relative;
+ z-index: 9999;
+ background: var(--td-calendar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ overflow-x: hidden;
+}
+.t-calendar--popup {
+ border-top-left-radius: var(--td-calendar-radius, 24rpx);
+ border-top-right-radius: var(--td-calendar-radius, 24rpx);
+}
+.t-calendar__title {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: var(--td-calendar-title-font-size, 18px);
+ font-weight: 600;
+ color: var(--td-calendar-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ height: 52rpx;
+ padding: 32rpx;
+}
+.t-calendar__title:focus {
+ outline: 0;
+}
+.t-calendar__close-btn {
+ position: absolute;
+ top: 32rpx;
+ right: 32rpx;
+ margin: -24rpx;
+ padding: 24rpx;
+}
+.t-calendar__days {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ grid-column-gap: 8rpx;
+ padding: 0 32rpx;
+ text-align: center;
+ line-height: 92rpx;
+}
+.t-calendar__days-item {
+ height: 92rpx;
+ font-size: 28rpx;
+ color: var(--td-calendar-days-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-calendar__content {
+ min-height: 400rpx;
+ display: flex;
+ flex-direction: column;
+}
+.t-calendar__month {
+ font-size: 28rpx;
+ color: var(--td-calendar-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: 600;
+ padding: 32rpx 0 0;
+}
+.t-calendar__months {
+ height: 60vh;
+ padding: 0 32rpx 32rpx;
+ box-sizing: border-box;
+}
+.t-calendar__months::-webkit-scrollbar {
+ display: none;
+}
+.t-calendar__dates {
+ flex: 1;
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ grid-column-gap: 8rpx;
+}
+.t-calendar__dates-item {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 32rpx;
+ border-radius: 16rpx;
+ height: 120rpx;
+ line-height: 48rpx;
+ font-weight: 600;
+ margin-top: 16rpx;
+ cursor: pointer;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-user-select: none;
+ user-select: none;
+}
+.t-calendar__dates-item-prefix,
+.t-calendar__dates-item-suffix {
+ position: absolute;
+ font-size: 20rpx;
+ line-height: 32rpx;
+ width: 100%;
+ text-align: center;
+ font-weight: 400;
+}
+.t-calendar__dates-item-prefix {
+ top: 8rpx;
+}
+.t-calendar__dates-item-suffix {
+ bottom: 8rpx;
+ color: var(--td-calendar-item-suffix-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-calendar__dates-item-suffix--selected,
+.t-calendar__dates-item-suffix--start,
+.t-calendar__dates-item-suffix--end {
+ color: var(--td-calendar-selected-color, var(--td-font-white-1, #ffffff));
+}
+.t-calendar__dates-item-suffix--disabled {
+ color: var(--td-calendar-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-calendar__dates-item--selected,
+.t-calendar__dates-item--start,
+.t-calendar__dates-item--end {
+ background: var(--td-calendar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ color: var(--td-calendar-selected-color, var(--td-font-white-1, #ffffff));
+ border-radius: 8rpx;
+}
+.t-calendar__dates-item--start {
+ border-radius: 8rpx 0 0 8rpx;
+}
+.t-calendar__dates-item--end {
+ border-radius: 0 8rpx 8rpx 0;
+}
+.t-calendar__dates-item--start + .t-calendar__dates-item--end::before {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ width: 8rpx;
+ height: 100%;
+ background: var(--td-calendar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-calendar__dates-item--start + .t-calendar__dates-item--end:before {
+ left: -8rpx;
+}
+.t-calendar__dates-item--centre {
+ border-radius: 0;
+ background-color: var(--td-calendar-item-centre-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-calendar__dates-item--centre::before,
+.t-calendar__dates-item--centre::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ width: 8rpx;
+ height: 100%;
+ background-color: var(--td-calendar-item-centre-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-calendar__dates-item--centre:before {
+ left: -8rpx;
+}
+.t-calendar__dates-item--centre:after {
+ right: -8rpx;
+}
+.t-calendar__dates-item--disabled {
+ color: var(--td-calendar-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ cursor: default;
+}
+.t-calendar__footer {
+ padding: 32rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/index.d.ts
new file mode 100644
index 0000000..cf0e3b8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/index.d.ts
@@ -0,0 +1,2 @@
+export * from './type';
+export * from './calendar';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/index.js
new file mode 100644
index 0000000..cf0e3b8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/index.js
@@ -0,0 +1,2 @@
+export * from './type';
+export * from './calendar';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/props.d.ts
new file mode 100644
index 0000000..a42879c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCalendarProps } from './type';
+declare const props: TdCalendarProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/props.js
new file mode 100644
index 0000000..7856249
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/props.js
@@ -0,0 +1,50 @@
+const props = {
+ autoClose: {
+ type: Boolean,
+ value: true,
+ },
+ confirmBtn: {
+ type: null,
+ value: '',
+ },
+ style: {
+ type: String,
+ value: '',
+ },
+ firstDayOfWeek: {
+ type: Number,
+ value: 0,
+ },
+ format: {
+ type: null,
+ },
+ maxDate: {
+ type: Number,
+ },
+ minDate: {
+ type: Number,
+ },
+ title: {
+ type: String,
+ },
+ type: {
+ type: String,
+ value: 'single',
+ },
+ usePopup: {
+ type: Boolean,
+ value: true,
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/template.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/template.wxml
new file mode 100644
index 0000000..81eeb91
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/template.wxml
@@ -0,0 +1,71 @@
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/type.d.ts
new file mode 100644
index 0000000..a751960
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/type.d.ts
@@ -0,0 +1,65 @@
+import { ButtonProps } from '../button/index';
+export interface TdCalendarProps {
+ autoClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmBtn?: {
+ type: null;
+ value?: string | ButtonProps | null;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ firstDayOfWeek?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ format?: {
+ type: undefined;
+ value?: CalendarFormatType;
+ };
+ maxDate?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ minDate?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ type?: {
+ type: StringConstructor;
+ value?: 'single' | 'multiple' | 'range';
+ };
+ usePopup?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ value?: {
+ type: null;
+ value?: number | number[];
+ };
+ defaultValue?: {
+ type: null;
+ value?: number | number[];
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export declare type CalendarFormatType = (day: TDate) => TDate;
+export declare type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | '';
+export interface TDate {
+ date: Date;
+ day: number;
+ type: TDateType;
+ className?: string;
+ prefix?: string;
+ suffix?: string;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/calendar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/README.en-US.md
new file mode 100644
index 0000000..45c9106
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### Cascader Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | true | \- | N
+keys | Object | - | Typescript:`KeysType` | N
+options | Array | [] | Typescript:`Array` | N
+sub-titles | Array | [] | Typescript:`Array` | N
+theme | String | step | options:step/tab | N
+title | String / Slot | - | \- | N
+value | String / Number | null | \- | N
+default-value | String / Number | undefined | uncontrolled property | N
+visible | Boolean | false | \- | N
+
+### Cascader Events
+
+name | params | description
+-- | -- | --
+change | `(value: string \| number, selectedOptions: string[])` | `1.0.1`
+close | `(trigger: TriggerSource)` | `1.0.1`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/cascader/type.ts)。
`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`
+pick | `(value: string \| number, index: number)` | `1.0.1`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/README.md
new file mode 100644
index 0000000..a5f543a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/README.md
@@ -0,0 +1,70 @@
+---
+title: Cascader 级联选择器
+description: 级联选择器适用于有清晰层级结构的数据集合,用户可以通过逐级查看并选择。
+spline: form
+isComponent: true
+---
+
+
+
+ 该组件于 0.23.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-cascader": "tdesign-miniprogram/cascader/cascader"
+}
+```
+
+## 代码演示
+
+### 基础用法
+
+{{ base }}
+
+### 选项卡风格
+
+{{ theme-tab }}
+
+### 进阶
+
+#### 带初始值
+
+{{ with-value }}
+
+#### 自定义 keys
+
+{{ keys }}
+
+#### 使用次级标题
+
+{{ with-title }}
+
+## API
+### Cascader Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | true | 关闭按钮 | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+options | Array | [] | 可选项数据源。TS 类型:`Array` | N
+sub-titles | Array | [] | 每级展示的次标题。TS 类型:`Array` | N
+theme | String | step | 展示风格。可选项:step/tab | N
+title | String / Slot | - | 标题 | N
+value | String / Number | null | 选项值 | N
+default-value | String / Number | undefined | 选项值。非受控属性 | N
+visible | Boolean | false | 是否展示 | N
+
+### Cascader Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: string \| number, selectedOptions: string[])` | `1.0.1`。值发生变更时触发
+close | `(trigger: TriggerSource)` | `1.0.1`。关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/cascader/type.ts)。
`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`
+pick | `(value: string \| number, index: number)` | `1.0.1`。选择后触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.d.ts
new file mode 100644
index 0000000..de3b6d5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.d.ts
@@ -0,0 +1,40 @@
+///
+import { SuperComponent } from '../common/src/index';
+import { TdCascaderProps } from './type';
+export interface CascaderProps extends TdCascaderProps {
+}
+export default class Cascader extends SuperComponent {
+ externalClasses: string[];
+ options: WechatMiniprogram.Component.ComponentOptions;
+ properties: TdCascaderProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ name: string;
+ stepIndex: number;
+ selectedIndexes: any[];
+ selectedValue: any[];
+ defaultOptionLabel: string;
+ scrollTopList: any[];
+ steps: string[];
+ };
+ observers: {
+ visible(v: any): void;
+ 'selectedIndexes, options'(): void;
+ stepIndex(): Promise;
+ };
+ methods: {
+ initWithValue(): void;
+ getIndexesByValue(options: import("../common/common").TreeOptionData[], value: any): any[];
+ updateScrollTop(): void;
+ hide(trigger: any): void;
+ onVisibleChange(): void;
+ onClose(): void;
+ onStepClick(e: any): void;
+ onTabChange(e: any): void;
+ handleSelect(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.js
new file mode 100644
index 0000000..0bc55d8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.js
@@ -0,0 +1,186 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-cascader`;
+const defaultOptionLabel = '选择选项';
+let Cascader = class Cascader extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ name,
+ stepIndex: 0,
+ selectedIndexes: [],
+ selectedValue: [],
+ defaultOptionLabel,
+ scrollTopList: [],
+ steps: [defaultOptionLabel],
+ };
+ this.observers = {
+ visible(v) {
+ if (v) {
+ const $tabs = this.selectComponent('#tabs');
+ $tabs === null || $tabs === void 0 ? void 0 : $tabs.setTrack();
+ this.updateScrollTop();
+ this.initWithValue();
+ }
+ },
+ 'selectedIndexes, options'() {
+ var _a, _b, _c, _d;
+ const { options, selectedIndexes, keys } = this.data;
+ const selectedValue = [];
+ const steps = [];
+ const items = [options];
+ if (options.length > 0) {
+ for (let i = 0, size = selectedIndexes.length; i < size; i += 1) {
+ const index = selectedIndexes[i];
+ const next = items[i][index];
+ selectedValue.push(next[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value']);
+ steps.push(next[(_b = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _b !== void 0 ? _b : 'label']);
+ if (next[(_c = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _c !== void 0 ? _c : 'children']) {
+ items.push(next[(_d = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _d !== void 0 ? _d : 'children']);
+ }
+ }
+ }
+ if (steps.length < items.length) {
+ steps.push(defaultOptionLabel);
+ }
+ this.setData({
+ steps,
+ items,
+ selectedValue,
+ stepIndex: items.length - 1,
+ });
+ },
+ stepIndex() {
+ return __awaiter(this, void 0, void 0, function* () {
+ const { visible } = this.data;
+ if (visible) {
+ this.updateScrollTop();
+ }
+ });
+ },
+ };
+ this.methods = {
+ initWithValue() {
+ if (this.data.value != null && this.data.value !== '') {
+ const selectedIndexes = this.getIndexesByValue(this.data.options, this.data.value);
+ if (selectedIndexes) {
+ this.setData({ selectedIndexes });
+ }
+ }
+ else {
+ this.setData({ selectedIndexes: [] });
+ }
+ },
+ getIndexesByValue(options, value) {
+ var _a, _b, _c;
+ const { keys } = this.data;
+ for (let i = 0, size = options.length; i < size; i += 1) {
+ const opt = options[i];
+ if (opt[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'] === value) {
+ return [i];
+ }
+ if (opt[(_b = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _b !== void 0 ? _b : 'children']) {
+ const res = this.getIndexesByValue(opt[(_c = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _c !== void 0 ? _c : 'children'], value);
+ if (res) {
+ return [i, ...res];
+ }
+ }
+ }
+ },
+ updateScrollTop() {
+ const { visible, items, selectedIndexes, stepIndex } = this.data;
+ if (visible) {
+ getRect(this, '.cascader-radio-group-0').then((rect) => {
+ var _a;
+ const eachRadioHeight = rect.height / ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.length);
+ this.setData({
+ [`scrollTopList[${stepIndex}]`]: eachRadioHeight * selectedIndexes[stepIndex],
+ });
+ });
+ }
+ },
+ hide(trigger) {
+ this.setData({ visible: false });
+ this.triggerEvent('close', { trigger: trigger });
+ },
+ onVisibleChange() {
+ this.hide('overlay');
+ },
+ onClose() {
+ this.hide('close-btn');
+ },
+ onStepClick(e) {
+ const { index } = e.currentTarget.dataset;
+ this.setData({ stepIndex: index });
+ },
+ onTabChange(e) {
+ const { value } = e.detail;
+ this.setData({
+ stepIndex: value,
+ });
+ },
+ handleSelect(e) {
+ var _a, _b, _c;
+ const { level } = e.target.dataset;
+ const { value } = e.detail;
+ const { selectedIndexes, items, keys } = this.data;
+ const index = items[level].findIndex((item) => { var _a; return item[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'] === value; });
+ const item = items[level][index];
+ if (item.disabled) {
+ return;
+ }
+ selectedIndexes[level] = index;
+ selectedIndexes.length = level + 1;
+ this.triggerEvent('pick', { value: item[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'], index, level });
+ if ((_c = item === null || item === void 0 ? void 0 : item[(_b = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _b !== void 0 ? _b : 'children']) === null || _c === void 0 ? void 0 : _c.length) {
+ this.setData({ selectedIndexes });
+ }
+ else {
+ this.setData({ selectedIndexes }, () => {
+ var _a;
+ const { items } = this.data;
+ this._trigger('change', {
+ value: item[(_a = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _a !== void 0 ? _a : 'value'],
+ selectedOptions: items.map((item, index) => item[selectedIndexes[index]]),
+ });
+ });
+ this.hide('finish');
+ }
+ },
+ };
+ }
+};
+Cascader = __decorate([
+ wxComponent()
+], Cascader);
+export default Cascader;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.json b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.json
new file mode 100644
index 0000000..9fb1ae8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.json
@@ -0,0 +1,10 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-popup": "../popup/popup",
+ "t-tabs": "../tabs/tabs",
+ "t-tab-panel": "../tab-panel/tab-panel",
+ "t-radio-group": "../radio-group/radio-group"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.wxml
new file mode 100644
index 0000000..af1d0a4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.wxml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+
+ {{subTitles[stepIndex]}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.wxss
new file mode 100644
index 0000000..72a758b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/cascader.wxss
@@ -0,0 +1,136 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-cascader {
+ display: flex;
+ flex-direction: column;
+ background-color: #fff;
+ color: var(--td-cascader-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-radius: 24rpx 24rpx 0 0;
+ --td-radio-icon-checked-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ --td-tab-item-active-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ --td-tab-track-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-cascader__close-btn {
+ right: 16px;
+ top: 12px;
+ position: absolute;
+}
+.t-cascader__title {
+ position: relative;
+ font-weight: 700;
+ text-align: center;
+ line-height: 48px;
+ font-size: var(--td-cascder-title-font-size, 36rpx);
+}
+.t-cascader__content {
+ width: 100%;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+.t-cascader__options {
+ width: 100vw;
+ height: var(--td-cascader-options-height, 640rpx);
+}
+.t-cascader__options-title {
+ margin-top: 40rpx;
+ color: var(--td-cascader-options-title-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: 28rpx;
+ line-height: 44rpx;
+ padding-left: 16px;
+}
+.t-cascader__options-content {
+ flex: 1;
+ height: 100%;
+ overflow: auto;
+ padding-left: 16px;
+}
+.t-cascader__options-container {
+ display: flex;
+ transition: all ease 0.3s;
+}
+.t-cascader__step {
+ display: flex;
+ align-items: center;
+ height: var(--td-cascader-step-height, 88rpx);
+}
+.t-cascader__steps {
+ padding: 0 32rpx 10rpx;
+ position: relative;
+}
+.t-cascader__steps::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-cascader-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-cascader__steps::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-cascader__step-dot {
+ position: relative;
+ width: var(--td-cascader-step-dot-size, 16rpx);
+ height: var(--td-cascader-step-dot-size, 16rpx);
+ border-radius: 50%;
+ border: 1px solid var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ box-sizing: border-box;
+}
+.t-cascader__step-dot:not(.t-cascader__step-dot--last)::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 50%;
+ top: calc(var(--td-cascader-step-dot-size, 16rpx) + 14rpx);
+ height: 36rpx;
+ width: 1px;
+ background: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ transform: translateX(-50%);
+}
+.t-cascader__step-dot--active {
+ background: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-cascader__step-label {
+ padding-left: 16px;
+ font-size: 16px;
+}
+.t-cascader__step-label--active {
+ color: var(--td-cascader-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: 600;
+}
+.t-cascader__step-arrow {
+ color: var(--td-cascader-step-arrow-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ margin-left: auto;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/props.d.ts
new file mode 100644
index 0000000..9009f89
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCascaderProps } from './type';
+declare const props: TdCascaderProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/props.js
new file mode 100644
index 0000000..d2f12b9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/props.js
@@ -0,0 +1,37 @@
+const props = {
+ closeBtn: {
+ type: Boolean,
+ value: true,
+ },
+ keys: {
+ type: Object,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ subTitles: {
+ type: Array,
+ value: [],
+ },
+ theme: {
+ type: String,
+ value: 'step',
+ },
+ title: {
+ type: String,
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: null,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/type.d.ts
new file mode 100644
index 0000000..624c2c5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/type.d.ts
@@ -0,0 +1,39 @@
+import { TreeOptionData, KeysType } from '../common/common';
+export interface TdCascaderProps {
+ closeBtn?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ subTitles?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'step' | 'tab';
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: null;
+ value?: string | number;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cascader/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.d.ts
new file mode 100644
index 0000000..0cba376
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.d.ts
@@ -0,0 +1,16 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class CellGroup extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ options: {
+ addGlobalClass: boolean;
+ };
+ properties: import("./type").TdCellGroupProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ methods: {
+ updateLastChid(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.js
new file mode 100644
index 0000000..ef3afc1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.js
@@ -0,0 +1,43 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-cell-group`;
+let CellGroup = class CellGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-title`];
+ this.relations = {
+ '../cell/cell': {
+ type: 'child',
+ linked() {
+ this.updateLastChid();
+ },
+ },
+ };
+ this.options = {
+ addGlobalClass: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.methods = {
+ updateLastChid() {
+ const items = this.$children;
+ items.forEach((child, index) => child.setData({ isLastChild: index === items.length - 1 }));
+ },
+ };
+ }
+};
+CellGroup = __decorate([
+ wxComponent()
+], CellGroup);
+export default CellGroup;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.json b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.wxml
new file mode 100644
index 0000000..7f19c00
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.wxml
@@ -0,0 +1,9 @@
+
+
+ {{ title }}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.wxss
new file mode 100644
index 0000000..f9fc0cc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/cell-group.wxss
@@ -0,0 +1,68 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-cell-group {
+ position: relative;
+}
+.t-cell-group__title {
+ font-family: PingFangSC-Regular;
+ font-size: var(--td-cell-group-title-font-size, 28rpx);
+ color: var(--td-cell-group-title-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ text-align: left;
+ line-height: var(--td-cell-group-title-line-height, 90rpx);
+ background-color: var(--td-cell-group-title-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ padding-left: var(--td-cell-group-title-padding-left, 32rpx);
+}
+.t-cell-group--bordered::before {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ top: 0;
+ border-top: 1px solid var(--td-cell-group-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+ z-index: 1;
+}
+.t-cell-group--bordered::after {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ border-bottom: 1px solid var(--td-cell-group-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+ z-index: 1;
+}
+.t-cell-group--card {
+ margin: 0 32rpx;
+ border-radius: var(--td-radius-large, 18rpx);
+ overflow: hidden;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/props.d.ts
new file mode 100644
index 0000000..4c4a9d0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCellGroupProps } from './type';
+declare const props: TdCellGroupProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/props.js
new file mode 100644
index 0000000..c8d887e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/props.js
@@ -0,0 +1,17 @@
+const props = {
+ bordered: {
+ type: Boolean,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/type.d.ts
new file mode 100644
index 0000000..4c111da
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/type.d.ts
@@ -0,0 +1,22 @@
+export interface TdCellGroupProps {
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'card';
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/README.en-US.md
new file mode 100644
index 0000000..ed037d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/README.en-US.md
@@ -0,0 +1,27 @@
+:: BASE_DOC ::
+
+## API
+### Cell Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | middle | options:top/middle/bottom | N
+arrow | Boolean | false | \- | N
+bordered | Boolean | true | \- | N
+description | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-title', 't-class-note', 't-class-description', 't-class-thumb', 't-class-hover', 't-class-left', 't-class-right']` | N
+hover | Boolean | - | \- | N
+image | String / Slot | - | \- | N
+jump-type | String | navigateTo | options:switchTab/reLaunch/redirectTo/navigateTo | N
+left-icon | String / Slot | - | \- | N
+note | String / Slot | - | \- | N
+required | Boolean | false | \- | N
+right-icon | String / Slot | - | \- | N
+title | String / Slot | - | \- | N
+url | String | - | \- | N
+
+### Cell Events
+
+name | params | description
+-- | -- | --
+click | - | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/README.md
new file mode 100644
index 0000000..fda3de0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/README.md
@@ -0,0 +1,74 @@
+---
+title: Cell 单元格
+description: 用于各个类别行的信息展示。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-cell": "tdesign-miniprogram/cell/cell"
+}
+```
+
+## 代码演示
+
+### 类型
+
+单行单元格
+
+
+
+{{ base }}
+
+多行单元格
+
+
+
+{{ multiple }}
+
+### 样式
+
+卡片单元格
+
+{{ theme }}
+
+## API
+### Cell Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | middle | 内容的对齐方式,默认居中对齐。可选项:top/middle/bottom | N
+arrow | Boolean | false | 是否显示右侧箭头 | N
+bordered | Boolean | true | 是否显示下边框 | N
+description | String / Slot | - | 下方内容描述 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、标题类名、下方描述内容类名、右侧说明文字类名、激活态类名、图片类名、左侧内容、左侧图标类名、右侧内容、右侧图标类名 等。`['t-class', 't-class-title', 't-class-description', 't-class-note', 't-class-hover', 't-class-image', 't-class-left', 't-class-left-icon', 't-class-right', 't-class-right-icon']` | N
+hover | Boolean | - | 是否开启点击反馈 | N
+image | String / Slot | - | 主图 | N
+jump-type | String | navigateTo | 链接跳转类型。可选项:switchTab/reLaunch/redirectTo/navigateTo | N
+left-icon | String / Slot | - | 左侧图标,出现在单元格标题的左侧 | N
+note | String / Slot | - | 和标题同行的说明文字 | N
+required | Boolean | false | 是否显示表单必填星号 | N
+right-icon | String / Slot | - | 最右侧图标 | N
+title | String / Slot | - | 标题 | N
+url | String | - | 点击后跳转链接地址。如果值为空,则表示不需要跳转 | N
+
+### Cell Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | - | 右侧内容
+
+### CellGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+bordered | Boolean | - | 是否显示组边框 | N
+external-classes | Array | - | 组件类名。`['t-class']` | N
+theme | String | default | 单元格风格。可选项:default/card | N
+title | String | - | 单元格组标题 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.d.ts
new file mode 100644
index 0000000..192b303
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.d.ts
@@ -0,0 +1,16 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Cell extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdCellProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ isLastChild: boolean;
+ };
+ onClick(e: any): void;
+ jumpLink(urlKey?: string, link?: string): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.js
new file mode 100644
index 0000000..940b3d2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.js
@@ -0,0 +1,57 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-cell`;
+let Cell = class Cell extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-title`,
+ `${prefix}-class-description`,
+ `${prefix}-class-note`,
+ `${prefix}-class-hover`,
+ `${prefix}-class-image`,
+ `${prefix}-class-left`,
+ `${prefix}-class-left-icon`,
+ `${prefix}-class-right`,
+ `${prefix}-class-right-icon`,
+ ];
+ this.relations = {
+ '../cell-group/cell-group': {
+ type: 'parent',
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ isLastChild: false,
+ };
+ }
+ onClick(e) {
+ this.triggerEvent('click', e.detail);
+ this.jumpLink();
+ }
+ jumpLink(urlKey = 'url', link = 'jumpType') {
+ const url = this.data[urlKey];
+ const jumpType = this.data[link];
+ if (url) {
+ wx[jumpType]({ url });
+ }
+ }
+};
+Cell = __decorate([
+ wxComponent()
+], Cell);
+export default Cell;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.json b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.json
new file mode 100644
index 0000000..9a40e60
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.wxml
new file mode 100644
index 0000000..e154869
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.wxml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ title}}
+
+
+ *
+
+
+
+
+ {{description}}
+
+
+
+
+
+ {{note}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.wxss
new file mode 100644
index 0000000..c094df7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/cell.wxss
@@ -0,0 +1,122 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-cell {
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ width: 100%;
+ overflow: hidden;
+ padding: var(--td-cell-vertical-padding, 32rpx) var(--td-cell-horizontal-padding, 32rpx);
+ line-height: var(--td-cell-line-height, 48rpx);
+ height: var(--td-cell-height, auto);
+ background-color: var(--td-cell-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-cell::after {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ border-bottom: 1px solid var(--td-cell-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+ left: var(--td-border-left-space, var(--td-cell-horizontal-padding, 32rpx));
+ right: var(--td-border-right-space, 0);
+}
+.t-cell--borderless::after {
+ display: none;
+}
+.t-cell__description {
+ font-size: var(--td-cell-description-font-size, var(--td-font-size-base, 28rpx));
+ line-height: var(--td-cell-description-line-height, 44rpx);
+ color: var(--td-cell-description-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-cell__description-text {
+ margin-top: calc(var(--td-spacer, 16rpx) / 2);
+}
+.t-cell__note {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ color: var(--td-cell-note-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-cell-note-font-size, var(--td-font-size-m, 32rpx));
+}
+.t-cell__title,
+.t-cell__note {
+ flex: 1 1 auto;
+}
+.t-cell__title:empty,
+.t-cell__note:empty {
+ display: none;
+}
+.t-cell__title-text {
+ display: flex;
+ font-size: var(--td-cell-title-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-cell-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: 400;
+}
+.t-cell__left,
+.t-cell__right {
+ display: flex;
+ align-items: center;
+}
+.t-cell__left:not(:empty) {
+ margin-right: var(--td-spacer, 16rpx);
+}
+.t-cell__left-icon {
+ color: var(--td-cell-left-icon-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-size: var(--td-cell-left-icon-font-size, 48rpx);
+}
+.t-cell__left-image {
+ height: var(--td-cell-image-height, 96rpx);
+ width: var(--td-cell-image-width, 96rpx);
+}
+.t-cell__right {
+ margin-left: calc(var(--td-spacer, 16rpx) / 2);
+}
+.t-cell__right-icon {
+ color: var(--td-cell-right-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-cell-right-icon-font-size, 48rpx);
+}
+.t-cell--hover {
+ background-color: var(--td-cell-hover-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-cell--required {
+ font-size: var(--td-cell-required-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-cell-required-color, var(--td-error-color-6, #d54941));
+}
+.t-cell--middle {
+ align-items: center;
+}
+.t-cell--top {
+ align-items: flex-start;
+}
+.t-cell--bottom {
+ align-items: flex-end;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/props.d.ts
new file mode 100644
index 0000000..ad657e5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCellProps } from './type';
+declare const props: TdCellProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/props.js
new file mode 100644
index 0000000..8e741e8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/props.js
@@ -0,0 +1,51 @@
+const props = {
+ align: {
+ type: String,
+ value: 'middle',
+ },
+ arrow: {
+ type: Boolean,
+ value: false,
+ },
+ bordered: {
+ type: Boolean,
+ value: true,
+ },
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ hover: {
+ type: Boolean,
+ },
+ image: {
+ type: String,
+ },
+ jumpType: {
+ type: String,
+ value: 'navigateTo',
+ },
+ leftIcon: {
+ type: String,
+ },
+ note: {
+ type: String,
+ },
+ required: {
+ type: Boolean,
+ value: false,
+ },
+ rightIcon: {
+ type: String,
+ },
+ title: {
+ type: String,
+ },
+ url: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/type.d.ts
new file mode 100644
index 0000000..4dccb9d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/type.d.ts
@@ -0,0 +1,71 @@
+export interface TdCellProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'top' | 'middle' | 'bottom';
+ };
+ arrow?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: [
+ 't-class',
+ 't-class-title',
+ 't-class-note',
+ 't-class-description',
+ 't-class-thumb',
+ 't-class-hover',
+ 't-class-left',
+ 't-class-right'
+ ];
+ };
+ hover?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ jumpType?: {
+ type: StringConstructor;
+ value?: 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo';
+ };
+ leftIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ note?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ required?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ rightIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ url?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/cell/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/cell/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.d.ts
new file mode 100644
index 0000000..44ab827
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent } from '../common/src/index';
+export default class CheckTag extends SuperComponent {
+ data: {
+ prefix: string;
+ classPrefix: string;
+ className: string;
+ };
+ properties: import("./type").TdCheckTagProps;
+ externalClasses: string[];
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ options: {
+ multipleSlots: boolean;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ observers: {
+ 'size, disabled, checked'(): void;
+ icon(v: any): void;
+ };
+ methods: {
+ setClass(): void;
+ onClick(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.js b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.js
new file mode 100644
index 0000000..c79bc9f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.js
@@ -0,0 +1,78 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { classNames, calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-tag`;
+let CheckTag = class CheckTag extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ className: '',
+ };
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`];
+ this.controlledProps = [
+ {
+ key: 'checked',
+ event: 'change',
+ },
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ };
+ this.observers = {
+ 'size, disabled, checked'() {
+ this.setClass();
+ },
+ icon(v) {
+ this.setData({
+ _icon: calcIcon(v),
+ });
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { classPrefix } = this.data;
+ const { size, variant, disabled, checked } = this.properties;
+ const tagClass = [
+ classPrefix,
+ `${classPrefix}--checkable`,
+ disabled ? `${classPrefix}--disabled` : '',
+ checked ? `${classPrefix}--checked` : '',
+ `${classPrefix}--${checked ? 'primary' : 'default'}`,
+ `${classPrefix}--${size}`,
+ `${classPrefix}--${variant}`,
+ ];
+ const className = classNames(tagClass);
+ this.setData({
+ className,
+ });
+ },
+ onClick() {
+ if (this.data.disabled)
+ return;
+ const { checked } = this.data;
+ this._trigger('click');
+ this._trigger('change', { checked: !checked });
+ },
+ };
+ }
+};
+CheckTag = __decorate([
+ wxComponent()
+], CheckTag);
+export default CheckTag;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.json b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.wxml
new file mode 100644
index 0000000..6b67173
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.wxml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{checked ? content[0] : content[1]}}
+ {{content}}
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.wxss
new file mode 100644
index 0000000..c4080e7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/check-tag.wxss
@@ -0,0 +1,224 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tag {
+ display: inline-flex;
+ align-items: center;
+ border: 2rpx solid transparent;
+ box-sizing: border-box;
+ border-radius: var(--td-tag-square-border-radius, 8rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+ user-select: none;
+ vertical-align: middle;
+}
+.t-tag__text {
+ word-wrap: normal;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.t-tag__icon {
+ display: flex;
+ align-items: center;
+}
+.t-tag__icon:not(:empty) + .t-tag__text:not(:empty) {
+ margin-left: 8rpx;
+}
+.t-tag--small {
+ height: var(--td-tag-small-height, 40rpx);
+ line-height: var(--td-tag-small-height, 40rpx);
+ padding: 0 var(--td-tag-small-padding, 11rpx);
+ font-size: var(--td-tag-small-font-size, var(--td-font-size, 20rpx));
+}
+.t-tag--small .t-icon,
+.t-tag--small .t-icon-close {
+ font-size: var(--td-tag-small-icon-size, 24rpx);
+}
+.t-tag--medium {
+ height: var(--td-tag-medium-height, 48rpx);
+ line-height: var(--td-tag-medium-height, 48rpx);
+ padding: 0 var(--td-tag-medium-padding, 15rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-tag--medium .t-icon,
+.t-tag--medium .t-icon-close {
+ font-size: var(--td-tag-medium-icon-size, 28rpx);
+}
+.t-tag--large {
+ height: var(--td-tag-large-height, 56rpx);
+ line-height: var(--td-tag-large-height, 56rpx);
+ padding: 0 var(--td-tag-large-padding, 15rpx);
+ font-size: var(--td-tag-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag--large .t-icon,
+.t-tag--large .t-icon-close {
+ font-size: var(--td-tag-large-icon-size, 32rpx);
+}
+.t-tag--extra-large {
+ height: var(--td-tag-extra-large-height, 80rpx);
+ line-height: var(--td-tag-extra-large-height, 80rpx);
+ padding: 0 var(--td-tag-extra-large-padding, 31rpx);
+ font-size: var(--td-tag-extra-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag--extra-large .t-icon,
+.t-tag--extra-large .t-icon-close {
+ font-size: var(--td-tag-extra-large-icon-size, 32rpx);
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-tag--dark.t-tag--primary {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tag--dark.t-tag--success {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-tag--dark.t-tag--warning {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-tag--dark.t-tag--danger {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--primary {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--success {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--warning {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--danger {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light-outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light-outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light-outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light-outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-tag.t-tag--closable.t-tag--disabled {
+ cursor: not-allowed;
+ color: var(--td-tag-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-tag-disabled-background-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+ border-color: var(--td-tag-disabled-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/props.d.ts
new file mode 100644
index 0000000..57c816f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCheckTagProps } from './type';
+declare const props: TdCheckTagProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/props.js
new file mode 100644
index 0000000..e87cc38
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/props.js
@@ -0,0 +1,44 @@
+const props = {
+ checked: {
+ type: null,
+ value: undefined,
+ },
+ defaultChecked: {
+ type: null,
+ value: undefined,
+ },
+ closable: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: null,
+ },
+ style: {
+ type: String,
+ value: '',
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ variant: {
+ type: String,
+ value: 'dark',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/type.d.ts
new file mode 100644
index 0000000..efc82b8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/type.d.ts
@@ -0,0 +1,47 @@
+import { SizeEnum } from '../common/common';
+export interface TdCheckTagProps {
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ closable?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: null;
+ value?: string | number | string[];
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'square' | 'round' | 'mark';
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ variant?: {
+ type: StringConstructor;
+ value?: 'dark' | 'light' | 'outline' | 'light-outline';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/check-tag/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.d.ts
new file mode 100644
index 0000000..ab803a6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.d.ts
@@ -0,0 +1,69 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class CheckBoxGroup extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ checkboxOptions: any[];
+ };
+ properties: {
+ borderless: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: import("./type").CheckboxOption[];
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: import("./type").CheckboxGroupValue;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: import("./type").CheckboxGroupValue;
+ };
+ };
+ observers: {
+ value(): void;
+ options(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ $checkAll: any;
+ methods: {
+ getChilds(): any;
+ updateChildren(): void;
+ updateValue({ value, checked, checkAll, indeterminate }: {
+ value: any;
+ checked: any;
+ checkAll: any;
+ indeterminate: any;
+ }): void;
+ initWithOptions(): void;
+ handleInnerChildChange(e: any): void;
+ setCheckall(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.js b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.js
new file mode 100644
index 0000000..9d76a0c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.js
@@ -0,0 +1,154 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-checkbox-group`;
+let CheckBoxGroup = class CheckBoxGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.relations = {
+ '../checkbox/checkbox': {
+ type: 'descendant',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ checkboxOptions: [],
+ };
+ this.properties = Object.assign(Object.assign({}, props), { borderless: {
+ type: Boolean,
+ value: false,
+ } });
+ this.observers = {
+ value() {
+ this.updateChildren();
+ },
+ options() {
+ this.initWithOptions();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.setCheckall();
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.$checkAll = null;
+ this.methods = {
+ getChilds() {
+ let items = this.$children;
+ if (!items.length) {
+ items = this.selectAllComponents(`.${prefix}-checkbox-option`);
+ }
+ return items || [];
+ },
+ updateChildren() {
+ const items = this.getChilds();
+ const { value } = this.data;
+ if (items.length > 0) {
+ items.forEach((item) => {
+ !item.data.checkAll &&
+ item.setData({
+ checked: value === null || value === void 0 ? void 0 : value.includes(item.data.value),
+ });
+ });
+ if (items.some((item) => item.data.checkAll)) {
+ this.setCheckall();
+ }
+ }
+ },
+ updateValue({ value, checked, checkAll, indeterminate }) {
+ let { value: newValue } = this.data;
+ const { max } = this.data;
+ const keySet = new Set(this.getChilds().map((item) => item.data.value));
+ newValue = newValue.filter((value) => keySet.has(value));
+ if (max && checked && newValue.length === max)
+ return;
+ if (checkAll) {
+ const items = this.getChilds();
+ newValue =
+ !checked && indeterminate
+ ? items
+ .filter(({ data }) => !(data.disabled && !newValue.includes(data.value)))
+ .map((item) => item.data.value)
+ : items
+ .filter(({ data }) => {
+ if (data.disabled) {
+ return newValue.includes(data.value);
+ }
+ return checked && !data.checkAll;
+ })
+ .map(({ data }) => data.value);
+ }
+ else if (checked) {
+ newValue = newValue.concat(value);
+ }
+ else {
+ const index = newValue.findIndex((v) => v === value);
+ newValue.splice(index, 1);
+ }
+ this._trigger('change', { value: newValue });
+ },
+ initWithOptions() {
+ const { options, value } = this.data;
+ if (!(options === null || options === void 0 ? void 0 : options.length) || !Array.isArray(options))
+ return;
+ const checkboxOptions = options.map((item) => {
+ const isLabel = ['number', 'string'].includes(typeof item);
+ return isLabel
+ ? {
+ label: `${item}`,
+ value: item,
+ checked: value === null || value === void 0 ? void 0 : value.includes(item),
+ }
+ : Object.assign(Object.assign({}, item), { checked: value === null || value === void 0 ? void 0 : value.includes(item.value) });
+ });
+ this.setData({
+ checkboxOptions,
+ });
+ },
+ handleInnerChildChange(e) {
+ var _a;
+ const { item } = e.target.dataset;
+ const { checked } = e.detail;
+ const rect = {};
+ if (item.checkAll) {
+ rect.indeterminate = (_a = this.$checkAll) === null || _a === void 0 ? void 0 : _a.data.indeterminate;
+ }
+ this.updateValue(Object.assign(Object.assign(Object.assign({}, item), { checked }), rect));
+ },
+ setCheckall() {
+ const items = this.getChilds();
+ if (!this.$checkAll) {
+ this.$checkAll = items.find((item) => item.data.checkAll);
+ }
+ if (!this.$checkAll)
+ return;
+ const { value } = this.data;
+ const valueSet = new Set(value.filter((val) => val !== this.$checkAll.data.value));
+ const isCheckall = items.every((item) => (item.data.checkAll ? true : valueSet.has(item.data.value)));
+ this.$checkAll.setData({
+ checked: valueSet.size > 0,
+ indeterminate: !isCheckall,
+ });
+ },
+ };
+ }
+};
+CheckBoxGroup = __decorate([
+ wxComponent()
+], CheckBoxGroup);
+export default CheckBoxGroup;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.json b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.json
new file mode 100644
index 0000000..dc01ceb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-checkbox": "../checkbox/checkbox"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxml
new file mode 100644
index 0000000..cf9aae8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/props.d.ts
new file mode 100644
index 0000000..f6e5bf5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCheckboxGroupProps } from './type';
+declare const props: TdCheckboxGroupProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/props.js
new file mode 100644
index 0000000..9092042
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/props.js
@@ -0,0 +1,31 @@
+const props = {
+ style: {
+ type: String,
+ value: '',
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ max: {
+ type: Number,
+ value: undefined,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ value: {
+ type: Array,
+ value: null,
+ },
+ defaultValue: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/type.d.ts
new file mode 100644
index 0000000..641deb5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdCheckboxGroupProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: CheckboxGroupValue;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: CheckboxGroupValue;
+ };
+}
+export declare type CheckboxOption = string | number | CheckboxOptionObj;
+export interface CheckboxOptionObj {
+ label?: string;
+ value?: string | number;
+ disabled?: boolean;
+ checkAll?: true;
+}
+export declare type CheckboxGroupValue = Array;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/README.en-US.md
new file mode 100644
index 0000000..9f79403
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/README.en-US.md
@@ -0,0 +1,47 @@
+:: BASE_DOC ::
+
+## API
+### Checkbox Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+placement | String | left | options:left/right | N
+block | Boolean | true | \- | N
+check-all | Boolean | false | \- | N
+checked | Boolean | false | \- | N
+default-checked | Boolean | undefined | uncontrolled property | N
+content | String / Slot | - | \- | N
+content-disabled | Boolean | - | \- | N
+disabled | Boolean | undefined | \- | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array | 'circle' | Typescript:`'circle' \| 'line' \| 'rectangle' \| string[]` | N
+indeterminate | Boolean | false | \- | N
+label | String / Slot | - | \- | N
+max-content-row | Number | 5 | \- | N
+max-label-row | Number | 3 | \- | N
+name | String | - | \- | N
+readonly | Boolean | false | \- | N
+value | String / Number | - | Typescript:`string \| number \| boolean` | N
+
+### Checkbox Events
+
+name | params | description
+-- | -- | --
+change | `(checked: boolean)` | \-
+
+### CheckboxGroup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disabled | Boolean | false | \- | N
+max | Number | undefined | \- | N
+name | String | - | \- | N
+options | Array | [] | Typescript:`Array` `type CheckboxOption = string \| number \| CheckboxOptionObj` `interface CheckboxOptionObj { label?: string; value?: string \| number; disabled?: boolean; checkAll?: true }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+value | Array | [] | Typescript:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+default-value | Array | undefined | uncontrolled property。Typescript:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+
+### CheckboxGroup Events
+
+name | params | description
+-- | -- | --
+change | `(value: CheckboxGroupValue, context: CheckboxGroupChangeContext)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts)。
`interface CheckboxGroupChangeContext { e: Event; current: string \| number; option: CheckboxOption \| TdCheckboxProps; type: 'check' \| 'uncheck' }`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/README.md
new file mode 100644
index 0000000..b046eec
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/README.md
@@ -0,0 +1,106 @@
+---
+title: Checkbox 多选框
+description: 用于预设的一组选项中执行多项选择,并呈现选择结果。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-checkbox": "tdesign-miniprogram/checkbox/checkbox",
+ "t-checkbox-group": "tdesign-miniprogram/checkbox-group/checkbox-group"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+纵向多选框
+
+{{ base }}
+
+横向多选框
+
+{{ horizontal }}
+
+带全选多选框
+
+{{ all }}
+
+### 组件状态
+
+多选框状态
+
+{{ status }}
+
+### 组件样式
+
+勾选样式
+
+{{ type }}
+
+勾选显示位置
+
+{{ right }}
+
+非通栏多选样式
+
+{{ card }}
+
+### 组件规格
+
+多选框尺寸规格
+
+{{ special }}
+
+## API
+### Checkbox Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+placement | String | left | 多选框和内容相对位置。可选项:left/right | N
+block | Boolean | true | 是否为块级元素 | N
+check-all | Boolean | false | 用于标识是否为「全选选项」。单独使用无效,需在 CheckboxGroup 中使用 | N
+checked | Boolean | false | 是否选中 | N
+default-checked | Boolean | undefined | 是否选中。非受控属性 | N
+content | String / Slot | - | 多选框内容 | N
+content-disabled | Boolean | - | 是否禁用组件内容(content)触发选中 | N
+disabled | Boolean | undefined | 是否禁用组件 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层、多选框图标、主文案、内容 等元素类名。`['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array | 'circle' | 自定义选中图标和非选中图标。使用 Array 时表示:`[选中态图标,非选中态图标]`。使用 String 时,值为 circle 表示填充圆形图标、值为 line 表示描边型图标、值为 rectangle 表示填充矩形图标。TS 类型:`'circle' \| 'line' \| 'rectangle' \| string[]` | N
+indeterminate | Boolean | false | 是否为半选 | N
+label | String / Slot | - | 主文案 | N
+max-content-row | Number | 5 | 内容最大行数限制 | N
+max-label-row | Number | 3 | 主文案最大行数限制 | N
+name | String | - | HTML 元素原生属性 | N
+readonly | Boolean | false | 只读状态 | N
+value | String / Number | - | 多选框的值。TS 类型:`string \| number` | N
+
+### Checkbox Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(checked: boolean)` | 值变化时触发
+
+### CheckboxGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disabled | Boolean | false | 是否禁用组件 | N
+max | Number | undefined | 支持最多选中的数量 | N
+name | String | - | 统一设置内部复选框 HTML 属性 | N
+options | Array | [] | 以配置形式设置子元素。示例1:`['北京', '上海']` ,示例2: `[{ label: '全选', checkAll: true }, { label: '上海', value: 'shanghai' }]`。checkAll 值为 true 表示当前选项为「全选选项」。TS 类型:`Array` `type CheckboxOption = string \| number \| CheckboxOptionObj` `interface CheckboxOptionObj { label?: string; value?: string \| number; disabled?: boolean; checkAll?: true }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+value | Array | [] | 选中值。TS 类型:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+default-value | Array | undefined | 选中值。非受控属性。TS 类型:`CheckboxGroupValue` `type CheckboxGroupValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts) | N
+
+### CheckboxGroup Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: CheckboxGroupValue, context: CheckboxGroupChangeContext)` | 值变化时触发。`context.current` 表示当前变化的数据项,如果是全选则为空;`context.type` 表示引起选中数据变化的是选中或是取消选中,`context.option` 表示当前变化的数据项。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/checkbox-group/type.ts)。
`interface CheckboxGroupChangeContext { e: Event; current: string \| number; option: CheckboxOption \| TdCheckboxProps; type: 'check' \| 'uncheck' }`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.d.ts
new file mode 100644
index 0000000..8f41b2b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.d.ts
@@ -0,0 +1,100 @@
+import { SuperComponent, ComponentsOptionsType, RelationsOptions } from '../common/src/index';
+export default class CheckBox extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ relations: RelationsOptions;
+ options: ComponentsOptionsType;
+ properties: {
+ theme: {
+ type: StringConstructor;
+ value: string;
+ };
+ borderless: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: "left" | "right";
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checkAll?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"];
+ };
+ icon?: {
+ type: null;
+ value?: string[] | "circle" | "rectangle" | "line";
+ };
+ indeterminate?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ value?: {
+ type: null;
+ value?: string | number | boolean;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ methods: {
+ onChange(e: WechatMiniprogram.TouchEvent): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.js b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.js
new file mode 100644
index 0000000..0494989
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.js
@@ -0,0 +1,88 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import Props from './props';
+const { prefix } = config;
+const name = `${prefix}-checkbox`;
+let CheckBox = class CheckBox extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-label`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-content`,
+ `${prefix}-class-border`,
+ ];
+ this.behaviors = ['wx://form-field'];
+ this.relations = {
+ '../checkbox-group/checkbox-group': {
+ type: 'ancestor',
+ linked(parent) {
+ const { value, disabled, borderless } = parent.data;
+ const valueSet = new Set(value);
+ const data = {
+ disabled: disabled || this.data.disabled,
+ };
+ if (borderless) {
+ data.borderless = true;
+ }
+ data.checked = valueSet.has(this.data.value);
+ if (this.data.checkAll) {
+ data.checked = valueSet.size > 0;
+ }
+ this.setData(data);
+ },
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = Object.assign(Object.assign({}, Props), { theme: {
+ type: String,
+ value: 'default',
+ }, borderless: {
+ type: Boolean,
+ value: false,
+ } });
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.controlledProps = [
+ {
+ key: 'checked',
+ event: 'change',
+ },
+ ];
+ this.methods = {
+ onChange(e) {
+ const { disabled, readonly } = this.data;
+ if (disabled || readonly)
+ return;
+ const { target } = e.currentTarget.dataset;
+ const { contentDisabled } = this.data;
+ if (target === 'text' && contentDisabled) {
+ return;
+ }
+ const checked = !this.data.checked;
+ const parent = this.$parent;
+ if (parent) {
+ parent.updateValue(Object.assign(Object.assign({}, this.data), { checked }));
+ }
+ else {
+ this._trigger('change', { checked });
+ }
+ },
+ };
+ }
+};
+CheckBox = __decorate([
+ wxComponent()
+], CheckBox);
+export default CheckBox;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.json b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.json
new file mode 100644
index 0000000..dfd59ed
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.wxml
new file mode 100644
index 0000000..9feb113
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.wxml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
+
+
+ {{content}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.wxss
new file mode 100644
index 0000000..c57eb8e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/checkbox.wxss
@@ -0,0 +1,202 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-checkbox {
+ display: inline-flex;
+ vertical-align: middle;
+ position: relative;
+ font-size: var(--td-checkbox-font-size, 32rpx);
+ background: var(--td-checkbox-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-checkbox:focus {
+ outline: 0;
+}
+.t-checkbox--block {
+ display: flex;
+ padding: var(--td-checkbox-vertical-padding, 32rpx);
+}
+.t-checkbox--right {
+ flex-direction: row-reverse;
+}
+.t-checkbox .limit-title-row {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.t-checkbox .image-center {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-checkbox__icon-left {
+ margin-right: 20rpx;
+ width: 40rpx;
+}
+.t-checkbox__icon-right {
+ right: 0px;
+ display: contents;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-checkbox__icon-image {
+ width: var(--td-checkbox-icon-size, 48rpx);
+ height: var(--td-checkbox-icon-size, 48rpx);
+ vertical-align: top;
+}
+.t-checkbox__icon {
+ position: relative;
+ display: block;
+ width: var(--td-checkbox-icon-size, 48rpx);
+ height: var(--td-checkbox-icon-size, 48rpx);
+ color: var(--td-checkbox-icon-color, var(--td-gray-color-4, #dcdcdc));
+ font-size: var(--td-checkbox-icon-size, 48rpx);
+}
+.t-checkbox__icon:empty {
+ display: none;
+}
+.t-checkbox__icon--checked {
+ color: var(--td-checkbox-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-checkbox__icon--disabled {
+ cursor: not-allowed;
+ color: var(--td-checkbox-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-checkbox__icon--left {
+ margin-right: 16rpx;
+}
+.t-checkbox__icon-circle {
+ width: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx) * 2);
+ height: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx) * 2);
+ border: 6rpx solid var(--td-checkbox-icon-color, var(--td-gray-color-4, #dcdcdc));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+}
+.t-checkbox__icon-circle--disabled {
+ background: var(--td-checkbox-icon-disabled-bg-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-checkbox__icon-rectangle {
+ width: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx * 2) * 2);
+ height: calc((var(--td-checkbox-icon-size, 48rpx) - 6rpx * 2) * 2);
+ border: 6rpx solid var(--td-checkbox-icon-color, var(--td-gray-color-4, #dcdcdc));
+ border-radius: 4rpx;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+}
+.t-checkbox__icon-rectangle--disabled {
+ background: var(--td-checkbox-icon-disabled-bg-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-checkbox__icon-line:before,
+.t-checkbox__icon-line:after {
+ content: '';
+ display: block;
+ position: absolute;
+ width: 5rpx;
+ border-radius: 2rpx;
+ background: var(--td-checkbox-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ transform-origin: top center;
+}
+.t-checkbox__icon-line:before {
+ height: 16rpx;
+ left: 8rpx;
+ top: 22rpx;
+ transform: rotate(-45deg);
+}
+.t-checkbox__icon-line::after {
+ height: 26rpx;
+ right: 8rpx;
+ top: 14rpx;
+ transform: rotate(45deg);
+}
+.t-checkbox__icon-line--disabled::before,
+.t-checkbox__icon-line--disabled::after {
+ background: var(--td-checkbox-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-checkbox__content {
+ flex: 1;
+}
+.t-checkbox__title {
+ color: var(--td-checkbox-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: var(--td-checkbox-title-line-height, 48rpx);
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.t-checkbox__title--disabled {
+ color: var(--td-checkbox-title-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-checkbox__description {
+ color: var(--td-checkbox-description-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ font-size: 28rpx;
+ line-height: var(--td-checkbox-description-line-height, 44rpx);
+}
+.t-checkbox__description--disabled {
+ color: var(--td-checkbox-description-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-checkbox__title + .t-checkbox__description:not(:empty) {
+ margin-top: 8rpx;
+}
+.t-checkbox__border {
+ position: absolute;
+ bottom: 0;
+ left: 96rpx;
+ right: 0;
+ height: 1px;
+ background: var(--td-checkbox-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+}
+.t-checkbox__border--right {
+ left: 32rpx;
+}
+.t-checkbox--tag {
+ font-size: 28rpx;
+ padding-top: 16rpx;
+ padding-bottom: 16rpx;
+ text-align: center;
+ background-color: #f3f3f3;
+ border-radius: 12rpx;
+}
+.t-checkbox--tag.t-checkbox--checked {
+ color: var(--td-checkbox-tag-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-checkbox-tag-active-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-checkbox--tag .t-checkbox__title--checked {
+ color: var(--td-checkbox-tag-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-checkbox--tag .t-checkbox__content {
+ margin-right: 0;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/props.d.ts
new file mode 100644
index 0000000..81c619e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCheckboxProps } from './type';
+declare const props: TdCheckboxProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/props.js
new file mode 100644
index 0000000..79c2ada
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/props.js
@@ -0,0 +1,66 @@
+const props = {
+ placement: {
+ type: String,
+ value: 'left',
+ },
+ block: {
+ type: Boolean,
+ value: true,
+ },
+ checkAll: {
+ type: Boolean,
+ value: false,
+ },
+ checked: {
+ type: Boolean,
+ value: null,
+ },
+ defaultChecked: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ contentDisabled: {
+ type: Boolean,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: 'circle',
+ },
+ indeterminate: {
+ type: Boolean,
+ value: false,
+ },
+ label: {
+ type: String,
+ },
+ maxContentRow: {
+ type: Number,
+ value: 5,
+ },
+ maxLabelRow: {
+ type: Number,
+ value: 3,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/type.d.ts
new file mode 100644
index 0000000..c795c54
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/type.d.ts
@@ -0,0 +1,74 @@
+export interface TdCheckboxProps {
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checkAll?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border'];
+ };
+ icon?: {
+ type: null;
+ value?: 'circle' | 'line' | 'rectangle' | string[];
+ };
+ indeterminate?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ value?: {
+ type: null;
+ value?: string | number | boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/checkbox/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/col/README.en-US.md
new file mode 100644
index 0000000..a3d6150
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/README.en-US.md
@@ -0,0 +1,15 @@
+:: BASE_DOC ::
+
+## API
+### Col Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+offset | String / Number | - | \- | N
+span | String / Number | - | \- | N
+
+### Row Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+gutter | String / Number | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/col/README.md
new file mode 100644
index 0000000..234d6e0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/README.md
@@ -0,0 +1,46 @@
+---
+title: Layout 布局
+description: 以规则的网格阵列来指导和规范页面中的版面布局以及信息分布,提高界面内布局的一致性,节约成本。
+spline: base
+isComponent: true
+---
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-row": "tdesign-miniprogram/row/row",
+ "t-col": "tdesign-miniprogram/col/col"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础
+
+{{ base }}
+
+
+增加间距
+
+{{ offset }}
+
+
+
+## API
+### Col Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+offset | String / Number | - | 列的偏移量(默认单位px) | N
+span | String / Number | - | 列的宽度(默认单位px) | N
+
+### Row Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+gutter | String / Number | - | 列之间的间距(默认单位px) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.d.ts
new file mode 100644
index 0000000..ecebf64
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.d.ts
@@ -0,0 +1,10 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Col extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdColProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ relations: RelationsOptions;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.js b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.js
new file mode 100644
index 0000000..cbaecdd
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.js
@@ -0,0 +1,31 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-col`;
+let Col = class Col extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.relations = {
+ '../row/row': {
+ type: 'parent',
+ },
+ };
+ }
+};
+Col = __decorate([
+ wxComponent()
+], Col);
+export default Col;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.json b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxml
new file mode 100644
index 0000000..4301cec
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxs
new file mode 100644
index 0000000..0cca491
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxs
@@ -0,0 +1,16 @@
+var utils = require('../common/utils.wxs');
+
+function getColStyles(data) {
+ if (!data.gutter) {
+ return '';
+ }
+
+ return utils._style({
+ 'padding-right': utils.addUnit(data.gutter / 2),
+ 'padding-left': utils.addUnit(data.gutter / 2),
+ });
+}
+
+module.exports = {
+ getColStyles: getColStyles,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxss
new file mode 100644
index 0000000..cc24ffa
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/col.wxss
@@ -0,0 +1,175 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-col {
+ box-sizing: border-box;
+ float: left;
+}
+.t-col--1 {
+ width: 4.16666667%;
+}
+.t-col--offset-1 {
+ margin-left: 4.16666667%;
+}
+.t-col--2 {
+ width: 8.33333333%;
+}
+.t-col--offset-2 {
+ margin-left: 8.33333333%;
+}
+.t-col--3 {
+ width: 12.5%;
+}
+.t-col--offset-3 {
+ margin-left: 12.5%;
+}
+.t-col--4 {
+ width: 16.66666667%;
+}
+.t-col--offset-4 {
+ margin-left: 16.66666667%;
+}
+.t-col--5 {
+ width: 20.83333333%;
+}
+.t-col--offset-5 {
+ margin-left: 20.83333333%;
+}
+.t-col--6 {
+ width: 25%;
+}
+.t-col--offset-6 {
+ margin-left: 25%;
+}
+.t-col--7 {
+ width: 29.16666667%;
+}
+.t-col--offset-7 {
+ margin-left: 29.16666667%;
+}
+.t-col--8 {
+ width: 33.33333333%;
+}
+.t-col--offset-8 {
+ margin-left: 33.33333333%;
+}
+.t-col--9 {
+ width: 37.5%;
+}
+.t-col--offset-9 {
+ margin-left: 37.5%;
+}
+.t-col--10 {
+ width: 41.66666667%;
+}
+.t-col--offset-10 {
+ margin-left: 41.66666667%;
+}
+.t-col--11 {
+ width: 45.83333333%;
+}
+.t-col--offset-11 {
+ margin-left: 45.83333333%;
+}
+.t-col--12 {
+ width: 50%;
+}
+.t-col--offset-12 {
+ margin-left: 50%;
+}
+.t-col--13 {
+ width: 54.16666667%;
+}
+.t-col--offset-13 {
+ margin-left: 54.16666667%;
+}
+.t-col--14 {
+ width: 58.33333333%;
+}
+.t-col--offset-14 {
+ margin-left: 58.33333333%;
+}
+.t-col--15 {
+ width: 62.5%;
+}
+.t-col--offset-15 {
+ margin-left: 62.5%;
+}
+.t-col--16 {
+ width: 66.66666667%;
+}
+.t-col--offset-16 {
+ margin-left: 66.66666667%;
+}
+.t-col--17 {
+ width: 70.83333333%;
+}
+.t-col--offset-17 {
+ margin-left: 70.83333333%;
+}
+.t-col--18 {
+ width: 75%;
+}
+.t-col--offset-18 {
+ margin-left: 75%;
+}
+.t-col--19 {
+ width: 79.16666667%;
+}
+.t-col--offset-19 {
+ margin-left: 79.16666667%;
+}
+.t-col--20 {
+ width: 83.33333333%;
+}
+.t-col--offset-20 {
+ margin-left: 83.33333333%;
+}
+.t-col--21 {
+ width: 87.5%;
+}
+.t-col--offset-21 {
+ margin-left: 87.5%;
+}
+.t-col--22 {
+ width: 91.66666667%;
+}
+.t-col--offset-22 {
+ margin-left: 91.66666667%;
+}
+.t-col--23 {
+ width: 95.83333333%;
+}
+.t-col--offset-23 {
+ margin-left: 95.83333333%;
+}
+.t-col--24 {
+ width: 100%;
+}
+.t-col--offset-24 {
+ margin-left: 100%;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/col/props.d.ts
new file mode 100644
index 0000000..15de965
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/props.d.ts
@@ -0,0 +1,3 @@
+import { TdColProps } from './type';
+declare const props: TdColProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/col/props.js
new file mode 100644
index 0000000..05857f3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/props.js
@@ -0,0 +1,9 @@
+const props = {
+ offset: {
+ type: null,
+ },
+ span: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/col/type.d.ts
new file mode 100644
index 0000000..af55fa4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/type.d.ts
@@ -0,0 +1,10 @@
+export interface TdColProps {
+ offset?: {
+ type: null;
+ value?: string | number;
+ };
+ span?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/col/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/col/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/col/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.d.ts
new file mode 100644
index 0000000..5301e80
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.d.ts
@@ -0,0 +1,26 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import type { TdCollapsePanelProps } from './type';
+export interface CollapsePanelProps extends TdCollapsePanelProps {
+}
+export default class CollapsePanel extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ properties: TdCollapsePanelProps;
+ data: {
+ prefix: string;
+ expanded: boolean;
+ classPrefix: string;
+ classBasePrefix: string;
+ ultimateExpandIcon: boolean;
+ ultimateDisabled: boolean;
+ };
+ methods: {
+ set(data: Record): Promise;
+ updateExpanded(activeValues: any): void;
+ updateStyle(expanded: boolean): Promise;
+ onClick(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.js
new file mode 100644
index 0000000..04d9611
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.js
@@ -0,0 +1,90 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-collapse-panel`;
+let CollapsePanel = class CollapsePanel extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`, `${prefix}-class-header`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../collapse/collapse': {
+ type: 'ancestor',
+ linked(target) {
+ this.parent = target;
+ const { value, defaultExpandAll, expandMutex, expandIcon, disabled } = target.properties;
+ const activeValues = defaultExpandAll && !expandMutex ? [this.properties.value] : value;
+ this.setData({
+ ultimateExpandIcon: expandIcon || this.properties.expandIcon,
+ ultimateDisabled: this.properties.disabled == null ? disabled : this.properties.disabled,
+ });
+ this.updateExpanded(activeValues);
+ },
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ expanded: false,
+ classPrefix: name,
+ classBasePrefix: prefix,
+ ultimateExpandIcon: false,
+ ultimateDisabled: false,
+ };
+ this.methods = {
+ set(data) {
+ this.setData(data);
+ return new Promise((resolve) => wx.nextTick(resolve));
+ },
+ updateExpanded(activeValues) {
+ if (!this.parent) {
+ return;
+ }
+ const { value } = this.properties;
+ const expanded = activeValues.includes(value);
+ if (expanded === this.properties.expanded)
+ return;
+ this.setData({ expanded });
+ this.updateStyle(expanded);
+ },
+ updateStyle(expanded) {
+ return getRect(this, `.${name}__content`)
+ .then((rect) => rect.height)
+ .then((height) => {
+ const animation = wx.createAnimation({
+ duration: 0,
+ timingFunction: 'ease-in-out',
+ });
+ if (expanded) {
+ animation.height(height).top(0).step({ duration: 300 }).height('auto').step();
+ }
+ else {
+ animation.height(height).top(1).step({ duration: 1 }).height(0).step({ duration: 300 });
+ }
+ this.setData({ animation: animation.export() });
+ });
+ },
+ onClick() {
+ const { ultimateDisabled } = this.data;
+ const { value } = this.properties;
+ if (ultimateDisabled)
+ return;
+ this.parent.switch(value);
+ },
+ };
+ }
+};
+CollapsePanel = __decorate([
+ wxComponent()
+], CollapsePanel);
+export default CollapsePanel;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.json b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.json
new file mode 100644
index 0000000..5160a95
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.wxml
new file mode 100644
index 0000000..370e7a9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.wxml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.wxss
new file mode 100644
index 0000000..5405c83
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/collapse-panel.wxss
@@ -0,0 +1,171 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-collapse-panel {
+ position: relative;
+ background-color: var(--td-collapse-panel-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-collapse-panel::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel--disabled {
+ pointer-events: none;
+}
+.t-collapse-panel--disabled .t-collapse-panel__content,
+.t-collapse-panel--disabled .t-collapse-panel__header {
+ opacity: 0.3;
+}
+.t-collapse-panel--top {
+ display: flex;
+ flex-direction: column-reverse;
+}
+.t-collapse-panel__header {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-left: var(--td-collapse-horizontal-padding, 32rpx);
+ height: var(--td-collapse-header-height, 96rpx);
+ color: var(--td-collapse-header-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-collapse-panel__header--top {
+ position: relative;
+}
+.t-collapse-panel__header--top::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ bottom: unset;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel__header--top::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel__header--bottom {
+ position: relative;
+}
+.t-collapse-panel__header--bottom::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel__header--bottom::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel__header:after {
+ display: none;
+ left: 32rpx;
+}
+.t-collapse-panel__header--expanded:after {
+ display: block;
+}
+.t-collapse-panel__header-right {
+ display: inline-flex;
+ align-items: center;
+ height: 100%;
+}
+.t-collapse-panel__header-icon {
+ height: 100%;
+ padding-left: 8px;
+ width: 44px;
+ padding-right: 8px;
+ color: var(--td-collapse-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-collapse-panel__extra {
+ font-size: var(--td-collapse-extra-font-size, var(--td-font-size-m, 32rpx));
+}
+.t-collapse-panel__body {
+ position: relative;
+}
+.t-collapse-panel__body::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-collapse-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-collapse-panel__body::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-collapse-panel__wrapper {
+ height: 0;
+ overflow: hidden;
+}
+.t-collapse-panel__content {
+ color: var(--td-collapse-content-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-collapse-content-font-size, var(--td-font-size-base, 28rpx));
+ padding: var(--td-collapse-content-padding, 32rpx);
+ line-height: var(--td-collapse-content-line-height, 1.5);
+}
+.t-collapse-panel__arrow--top {
+ transform: rotate(180deg);
+}
+.class-title {
+ font-size: var(--td-collapse-title-font-size, var(--td-font-size-m, 32rpx));
+}
+.class-title--disabled {
+ color: var(--td-font-gray-4, rgba(0, 0, 0, 0.26));
+}
+.class-note--disabled {
+ color: var(--td-font-gray-4, rgba(0, 0, 0, 0.26));
+}
+.class-right-icon--disabled {
+ color: var(--td-font-gray-4, rgba(0, 0, 0, 0.26));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/props.d.ts
new file mode 100644
index 0000000..829dbea
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCollapsePanelProps } from './type';
+declare const props: TdCollapsePanelProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/props.js
new file mode 100644
index 0000000..894f32a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/props.js
@@ -0,0 +1,30 @@
+const props = {
+ content: {
+ type: String,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ expandIcon: {
+ type: Boolean,
+ value: undefined,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ header: {
+ type: String,
+ },
+ headerRightContent: {
+ type: String,
+ },
+ placement: {
+ type: String,
+ value: 'bottom',
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/type.d.ts
new file mode 100644
index 0000000..315131a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdCollapsePanelProps {
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ expandIcon?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-header', 't-class-content'];
+ };
+ header?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ headerRightContent?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'bottom' | 'top';
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse-panel/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/README.en-US.md
new file mode 100644
index 0000000..2e6fc25
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/README.en-US.md
@@ -0,0 +1,33 @@
+:: BASE_DOC ::
+
+## API
+### Collapse Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+default-expand-all | Boolean | false | \- | N
+disabled | Boolean | - | \- | N
+expand-icon | Boolean / Slot | true | \- | N
+expand-mutex | Boolean | false | \- | N
+theme | String | default | options:default/card | N
+value | Array | [] | Typescript:`CollapseValue` `type CollapseValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+default-value | Array | undefined | uncontrolled property。Typescript:`CollapseValue` `type CollapseValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+
+### Collapse Events
+
+name | params | description
+-- | -- | --
+change | `(value: CollapseValue)` | \-
+
+### CollapsePanel Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Slot | - | \- | N
+disabled | Boolean | undefined | \- | N
+expand-icon | Boolean / Slot | undefined | \- | N
+external-classes | Array | - | `['t-class', 't-class-header', 't-class-content']` | N
+header | String / Slot | - | \- | N
+header-right-content | String / Slot | - | \- | N
+placement | String | bottom | `0.34.0`。options:bottom/top | N
+value | String / Number | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/README.md
new file mode 100644
index 0000000..84e1212
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/README.md
@@ -0,0 +1,81 @@
+---
+title: Collapse 折叠面板
+description: 用于对复杂区域进行分组和隐藏 常用于订单信息展示等
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.3 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-collapse": "tdesign-miniprogram/collapse/collapse",
+ "t-collapse-panel": "tdesign-miniprogram/collapse-panel/collapse-panel"
+}
+```
+
+## 代码演示
+
+### 类型
+
+基础折叠面板
+
+{{ base }}
+
+
+带操作说明
+
+{{ action }}
+
+手风琴模式
+
+{{ accordion }}
+
+### 样式
+
+卡片折叠面板
+
+{{ theme }}
+
+## API
+### Collapse Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+default-expand-all | Boolean | false | 默认是否展开全部 | N
+disabled | Boolean | - | 是否禁用面板展开/收起操作 | N
+expand-icon | Boolean | true | 展开图标。值为 undefined 或 false 则不显示展开图标;值为 true 显示默认图标 | N
+expand-mutex | Boolean | false | 每个面板互斥展开,每次只展开一个面板 | N
+theme | String | default | 折叠面板风格。可选项:default/card | N
+value | Array | [] | 展开的面板集合。TS 类型:`CollapseValue` `type CollapseValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+default-value | Array | undefined | 展开的面板集合。非受控属性。TS 类型:`CollapseValue` `type CollapseValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/collapse/type.ts) | N
+
+### Collapse Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: CollapseValue)` | 切换面板时触发,返回变化的值
+
+### CollapsePanel Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Slot | - | 折叠面板内容 | N
+disabled | Boolean | undefined | 禁止当前面板展开,优先级大于 Collapse 的同名属性 | N
+expand-icon | Boolean / Slot | undefined | 当前折叠面板展开图标,优先级大于 Collapse 的同名属性 | N
+external-classes | Array | - | 组件类名,用于组件外层元素、标题、内容。`['t-class', 't-class-header', 't-class-content']` | N
+header | String / Slot | - | 面板头内容 | N
+header-right-content | String / Slot | - | 面板头的右侧区域,一般用于呈现面板操作 | N
+placement | String | bottom | `0.34.0`。选项卡内容的位置。可选项:bottom/top | N
+value | String / Number | - | 当前面板唯一标识,如果值为空则取当前面下标兜底作为唯一标识 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.d.ts
new file mode 100644
index 0000000..426459f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import type { CollapseValue, TdCollapseProps } from './type';
+export interface CollapseProps extends TdCollapseProps {
+}
+export default class Collapse extends SuperComponent {
+ options: {
+ addGlobalClass: boolean;
+ };
+ externalClasses: string[];
+ relations: RelationsOptions;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ properties: TdCollapseProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ 'value, expandMutex '(): void;
+ };
+ methods: {
+ updateExpanded(): void;
+ switch(panelValue: CollapseValue): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.js
new file mode 100644
index 0000000..b7b26eb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.js
@@ -0,0 +1,67 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-collapse`;
+let Collapse = class Collapse extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ addGlobalClass: true,
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.relations = {
+ '../collapse-panel/collapse-panel': {
+ type: 'descendant',
+ linked() {
+ this.updateExpanded();
+ },
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ 'value, expandMutex '() {
+ this.updateExpanded();
+ },
+ };
+ this.methods = {
+ updateExpanded() {
+ this.$children.forEach((child) => {
+ child.updateExpanded(this.properties.value);
+ });
+ },
+ switch(panelValue) {
+ const { expandMutex, value: activeValues } = this.properties;
+ let value = [];
+ const hit = activeValues.indexOf(panelValue);
+ if (hit > -1) {
+ value = activeValues.filter((item) => item !== panelValue);
+ }
+ else {
+ value = expandMutex ? [panelValue] : activeValues.concat(panelValue);
+ }
+ this._trigger('change', { value });
+ },
+ };
+ }
+};
+Collapse = __decorate([
+ wxComponent()
+], Collapse);
+export default Collapse;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.json b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.wxml
new file mode 100644
index 0000000..24b8770
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.wxml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.wxss
new file mode 100644
index 0000000..62a6a01
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/collapse.wxss
@@ -0,0 +1,32 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-collapse--card {
+ margin: 0 32rpx;
+ border-radius: var(--td-radius-large, 18rpx);
+ overflow: hidden;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/index.d.ts
new file mode 100644
index 0000000..69a68c1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/index.d.ts
@@ -0,0 +1,4 @@
+export { default as Collapse } from './collapse';
+export * from './type';
+export * from './props';
+export { CollapseProps } from './collapse';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/index.js
new file mode 100644
index 0000000..53d3447
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/index.js
@@ -0,0 +1,3 @@
+export { default as Collapse } from './collapse';
+export * from './type';
+export * from './props';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/props.d.ts
new file mode 100644
index 0000000..8ab2059
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCollapseProps } from './type';
+declare const props: TdCollapseProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/props.js
new file mode 100644
index 0000000..3dfb242
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/props.js
@@ -0,0 +1,30 @@
+const props = {
+ defaultExpandAll: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ },
+ expandIcon: {
+ type: Boolean,
+ value: true,
+ },
+ expandMutex: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ value: {
+ type: Array,
+ value: null,
+ },
+ defaultValue: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/type.d.ts
new file mode 100644
index 0000000..b9cff85
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/type.d.ts
@@ -0,0 +1,35 @@
+export interface TdCollapseProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ defaultExpandAll?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ expandIcon?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ expandMutex?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'card';
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: CollapseValue;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: CollapseValue;
+ };
+}
+export declare type CollapseValue = Array;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/collapse/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/bus.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/bus.d.ts
new file mode 100644
index 0000000..0ed92bb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/bus.d.ts
@@ -0,0 +1,6 @@
+export default class Bus {
+ listeners: Map;
+ constructor();
+ on(evtName: string, listener: any): void;
+ emit(evtName: string): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/bus.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/bus.js
new file mode 100644
index 0000000..5626d27
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/bus.js
@@ -0,0 +1,16 @@
+export default class Bus {
+ constructor() {
+ this.listeners = new Map();
+ }
+ on(evtName, listener) {
+ const target = this.listeners.get(evtName) || [];
+ target.push(listener);
+ this.listeners.set(evtName, target);
+ }
+ emit(evtName) {
+ const listeners = this.listeners.get(evtName);
+ if (listeners) {
+ listeners.forEach((func) => func());
+ }
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/common.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/common.d.ts
new file mode 100644
index 0000000..44a4e72
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/common.d.ts
@@ -0,0 +1,35 @@
+export declare type Classes = Array;
+export interface Styles {
+ [css: string]: string | number;
+}
+export declare type OptionData = {
+ label?: string;
+ value?: string | number;
+} & {
+ [key: string]: any;
+};
+export declare type TreeOptionData = {
+ children?: Array;
+} & OptionData;
+export declare type SizeEnum = 'small' | 'medium' | 'large';
+export declare type HorizontalAlignEnum = 'left' | 'center' | 'right';
+export declare type VerticalAlignEnum = 'top' | 'middle' | 'bottom';
+export declare type ClassName = {
+ [className: string]: any;
+} | ClassName[] | string;
+export declare type CSSSelector = string;
+export interface KeysType {
+ value?: string;
+ label?: string;
+}
+export interface HTMLElementAttributes {
+ [css: string]: string;
+}
+export interface InfinityScroll {
+ bufferSize?: number;
+ isFixedRowHeight?: boolean;
+ rowHeight?: number;
+ threshold?: number;
+ type: 'lazy' | 'virtual';
+}
+export declare type TScroll = InfinityScroll;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/common.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/common.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/common.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/component.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/component.d.ts
new file mode 100644
index 0000000..a8d86ae
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/component.d.ts
@@ -0,0 +1,3 @@
+///
+declare const TComponent: typeof Component;
+export default TComponent;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/component.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/component.js
new file mode 100644
index 0000000..4e01a69
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/component.js
@@ -0,0 +1,5 @@
+const TComponent = (options) => {
+ options.options = Object.assign({ multipleSlots: true, addGlobalClass: true }, options.options);
+ return Component(options);
+};
+export default TComponent;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/config.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/config.d.ts
new file mode 100644
index 0000000..68879b4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/config.d.ts
@@ -0,0 +1,5 @@
+declare const _default: {
+ prefix: string;
+};
+export default _default;
+export declare const prefix = "t";
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/config.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/config.js
new file mode 100644
index 0000000..c0dfab2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/config.js
@@ -0,0 +1,4 @@
+export default {
+ prefix: "t",
+};
+export const prefix = "t";
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/index.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/index.wxss
new file mode 100644
index 0000000..1d532d2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/index.wxss
@@ -0,0 +1,27 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/index.d.ts
new file mode 100644
index 0000000..2a119d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/index.d.ts
@@ -0,0 +1,19 @@
+import type { TDate, TCalendarType, TCalendarValue } from './type';
+export default class TCalendar {
+ firstDayOfWeek: number;
+ value: TCalendarValue | TCalendarValue[];
+ type: TCalendarType;
+ minDate: Date;
+ maxDate: Date;
+ format: (day: TDate) => TDate;
+ constructor(options: any);
+ getTrimValue(): Date | Date[];
+ getDays(): any[];
+ getMonths(): any[];
+ select({ cellType, year, month, date }: {
+ cellType: any;
+ year: any;
+ month: any;
+ date: any;
+ }): Date | TCalendarValue[];
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/index.js
new file mode 100644
index 0000000..9de8d65
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/index.js
@@ -0,0 +1,128 @@
+import { getDateRect, isSameDate, getMonthDateRect, isValidDate, getDate } from '../date';
+export default class TCalendar {
+ constructor(options) {
+ this.type = 'single';
+ Object.assign(this, options);
+ if (!this.minDate)
+ this.minDate = getDate();
+ if (!this.maxDate)
+ this.maxDate = getDate(6);
+ }
+ getTrimValue() {
+ const { value, type } = this;
+ const format = (val) => {
+ if (val instanceof Date)
+ return val;
+ if (typeof val === 'number')
+ return new Date(val);
+ return new Date();
+ };
+ if (type === 'single' && isValidDate(value))
+ return format(value);
+ if (type === 'multiple' || type === 'range') {
+ if (Array.isArray(value)) {
+ const isValid = value.every((item) => isValidDate(item));
+ return isValid ? value.map((item) => format(item)) : [];
+ }
+ return [];
+ }
+ }
+ getDays() {
+ const raw = '日一二三四五六';
+ const ans = [];
+ let i = this.firstDayOfWeek % 7;
+ while (ans.length < 7) {
+ ans.push(raw[i]);
+ i = (i + 1) % 7;
+ }
+ return ans;
+ }
+ getMonths() {
+ const ans = [];
+ const selectedDate = this.getTrimValue();
+ const { minDate, maxDate, type, format } = this;
+ let { year: minYear, month: minMonth, time: minTime } = getDateRect(minDate);
+ const { year: maxYear, month: maxMonth, time: maxTime } = getDateRect(maxDate);
+ const calcType = (year, month, date) => {
+ const curDate = new Date(year, month, date, 23, 59, 59);
+ if (type === 'single' && selectedDate) {
+ if (isSameDate({ year, month, date }, selectedDate))
+ return 'selected';
+ }
+ if (type === 'multiple' && selectedDate) {
+ const hit = selectedDate.some((item) => isSameDate({ year, month, date }, item));
+ if (hit) {
+ return 'selected';
+ }
+ }
+ if (type === 'range' && selectedDate) {
+ if (Array.isArray(selectedDate)) {
+ const [startDate, endDate] = selectedDate;
+ if (startDate && isSameDate({ year, month, date }, startDate))
+ return 'start';
+ if (endDate && isSameDate({ year, month, date }, endDate))
+ return 'end';
+ if (startDate && endDate && curDate.getTime() > startDate.getTime() && curDate.getTime() < endDate.getTime())
+ return 'centre';
+ }
+ }
+ const minCurDate = new Date(year, month, date, 0, 0, 0);
+ if (curDate.getTime() < minTime || minCurDate.getTime() > maxTime) {
+ return 'disabled';
+ }
+ return '';
+ };
+ while (minYear < maxYear || (minYear === maxYear && minMonth <= maxMonth)) {
+ const target = getMonthDateRect(new Date(minYear, minMonth, 1));
+ const months = [];
+ for (let i = 1; i <= 31; i++) {
+ if (i > target.lastDate)
+ break;
+ const dateObj = {
+ date: new Date(minYear, minMonth, i),
+ day: i,
+ type: calcType(minYear, minMonth, i),
+ };
+ months.push(format ? format(dateObj) : dateObj);
+ }
+ ans.push({
+ year: minYear,
+ month: minMonth,
+ months,
+ weekdayOfFirstDay: target.weekdayOfFirstDay,
+ });
+ const curDate = getDateRect(new Date(minYear, minMonth + 1, 1));
+ minYear = curDate.year;
+ minMonth = curDate.month;
+ }
+ return ans;
+ }
+ select({ cellType, year, month, date }) {
+ const { type } = this;
+ const selectedDate = this.getTrimValue();
+ if (cellType === 'disabled')
+ return;
+ const selected = new Date(year, month, date);
+ this.value = selected;
+ if (type === 'range' && Array.isArray(selectedDate)) {
+ if (selectedDate.length === 1 && selected > selectedDate[0]) {
+ this.value = [selectedDate[0], selected];
+ }
+ else {
+ this.value = [selected];
+ }
+ }
+ else if (type === 'multiple' && Array.isArray(selectedDate)) {
+ const newVal = [...selectedDate];
+ const index = selectedDate.findIndex((item) => isSameDate(item, selected));
+ if (index > -1) {
+ newVal.splice(index, 1);
+ }
+ else {
+ newVal.push(selected);
+ }
+ this.value = newVal;
+ }
+ return this.value;
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/type.d.ts
new file mode 100644
index 0000000..621b949
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/type.d.ts
@@ -0,0 +1,11 @@
+export interface TDate {
+ date: Date;
+ day: number;
+ type: TDateType;
+ className?: string;
+ prefix?: string;
+ suffix?: string;
+}
+export declare type TCalendarValue = number | Date;
+export declare type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | '';
+export declare type TCalendarType = 'single' | 'multiple' | 'range';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/calendar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/date.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/date.d.ts
new file mode 100644
index 0000000..e123831
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/date.d.ts
@@ -0,0 +1,21 @@
+export declare type CompareDate = Date | number | {
+ year: number;
+ month: number;
+ date: number;
+};
+export declare const getDateRect: (date: Date | number) => {
+ year: number;
+ month: number;
+ date: number;
+ day: number;
+ time: number;
+};
+export declare const isSameDate: (date1: CompareDate, date2: CompareDate) => boolean;
+export declare const getMonthDateRect: (date: Date | number) => {
+ year: number;
+ month: number;
+ weekdayOfFirstDay: number;
+ lastDate: number;
+};
+export declare const isValidDate: (val: any) => boolean;
+export declare const getDate: (...args: any[]) => any;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/date.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/date.js
new file mode 100644
index 0000000..3ac46b3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/shared/date.js
@@ -0,0 +1,41 @@
+export const getDateRect = (date) => {
+ const _date = new Date(date);
+ return {
+ year: _date.getFullYear(),
+ month: _date.getMonth(),
+ date: _date.getDate(),
+ day: _date.getDay(),
+ time: _date.getTime(),
+ };
+};
+export const isSameDate = (date1, date2) => {
+ if (date1 instanceof Date || typeof date1 === 'number')
+ date1 = getDateRect(date1);
+ if (date2 instanceof Date || typeof date2 === 'number')
+ date2 = getDateRect(date2);
+ const keys = ['year', 'month', 'date'];
+ return keys.every((key) => date1[key] === date2[key]);
+};
+export const getMonthDateRect = (date) => {
+ const { year, month } = getDateRect(date);
+ const firstDay = new Date(year, month, 1);
+ const weekdayOfFirstDay = firstDay.getDay();
+ const lastDate = new Date(+new Date(year, month + 1, 1) - 24 * 3600 * 1000).getDate();
+ return {
+ year,
+ month,
+ weekdayOfFirstDay,
+ lastDate,
+ };
+};
+export const isValidDate = (val) => typeof val === 'number' || val instanceof Date;
+export const getDate = (...args) => {
+ const now = new Date();
+ if (args.length === 0)
+ return now;
+ if (args.length === 1 && args[0] <= 1000) {
+ const { year, month, date } = getDateRect(now);
+ return new Date(year, month + args[0], date);
+ }
+ return Date.apply(null, args);
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/control.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/control.d.ts
new file mode 100644
index 0000000..ed3f4a0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/control.d.ts
@@ -0,0 +1,15 @@
+declare type ControlInstance = {
+ controlled: boolean;
+ initValue: any;
+ set(newVal: any, extObj?: Object, fn?: any): void;
+ get(): any;
+ change(newVal: any, customChangeData?: any, customUpdateFn?: any): void;
+};
+declare type ControlOption = {
+ valueKey?: string;
+ defaultValueKey?: string;
+ changeEventName?: string;
+ strict?: boolean;
+};
+declare function useControl(this: any, option?: ControlOption): ControlInstance;
+export { ControlOption, ControlInstance, useControl };
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/control.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/control.js
new file mode 100644
index 0000000..03c9e77
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/control.js
@@ -0,0 +1,40 @@
+const defaultOption = {
+ valueKey: 'value',
+ defaultValueKey: 'defaultValue',
+ changeEventName: 'change',
+ strict: true,
+};
+function useControl(option = {}) {
+ const { valueKey, defaultValueKey, changeEventName, strict } = Object.assign(Object.assign({}, defaultOption), option);
+ const props = this.properties || {};
+ const value = props[valueKey];
+ const defaultValue = props[strict ? defaultValueKey : valueKey];
+ let controlled = false;
+ if (strict && typeof value !== 'undefined' && value !== null) {
+ controlled = true;
+ }
+ const set = (newVal, extObj, fn) => {
+ this.setData(Object.assign({ [`_${valueKey}`]: newVal }, extObj), fn);
+ };
+ return {
+ controlled,
+ initValue: controlled ? value : defaultValue,
+ set,
+ get: () => {
+ return this.data[`_${valueKey}`];
+ },
+ change: (newVal, customChangeData, customUpdateFn) => {
+ this.triggerEvent(changeEventName, typeof customChangeData !== 'undefined' ? customChangeData : newVal);
+ if (controlled) {
+ return;
+ }
+ if (typeof customUpdateFn === 'function') {
+ customUpdateFn();
+ }
+ else {
+ set(newVal);
+ }
+ },
+ };
+}
+export { useControl };
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/flatTool.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/flatTool.d.ts
new file mode 100644
index 0000000..4183d79
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/flatTool.d.ts
@@ -0,0 +1,15 @@
+export declare const getPrototypeOf: (obj: any) => any;
+export declare const isObject: (something: any) => boolean;
+export declare const iterateInheritedPrototype: (callback: (proto: Record) => boolean | void, fromCtor: any, toCtor: any, includeToCtor?: boolean) => void;
+export interface ClassInstanceToObjectOptions {
+ bindTo?: any;
+ excludes?: string[];
+ till?: any;
+ enumerable?: 0 | boolean;
+ configurable?: 0 | boolean;
+ writable?: 0 | boolean;
+}
+export declare const toObject: (something: any, options?: ClassInstanceToObjectOptions) => {
+ [key: string]: any;
+};
+export declare const isPlainObject: (something: any) => boolean;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/flatTool.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/flatTool.js
new file mode 100644
index 0000000..045abd7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/flatTool.js
@@ -0,0 +1,57 @@
+export const getPrototypeOf = function (obj) {
+ return Object.getPrototypeOf ? Object.getPrototypeOf(obj) : obj.__proto__;
+};
+export const isObject = function isObject(something) {
+ const type = typeof something;
+ return something !== null && (type === 'function' || type === 'object');
+};
+export const iterateInheritedPrototype = function iterateInheritedPrototype(callback, fromCtor, toCtor, includeToCtor = true) {
+ let proto = fromCtor.prototype || fromCtor;
+ const toProto = toCtor.prototype || toCtor;
+ while (proto) {
+ if (!includeToCtor && proto === toProto)
+ break;
+ if (callback(proto) === false)
+ break;
+ if (proto === toProto)
+ break;
+ proto = getPrototypeOf(proto);
+ }
+};
+export const toObject = function toObject(something, options = {}) {
+ const obj = {};
+ if (!isObject(something))
+ return obj;
+ const excludes = options.excludes || ['constructor'];
+ const { enumerable = true, configurable = 0, writable = 0 } = options;
+ const defaultDesc = {};
+ if (enumerable !== 0)
+ defaultDesc.enumerable = enumerable;
+ if (configurable !== 0)
+ defaultDesc.configurable = configurable;
+ if (writable !== 0)
+ defaultDesc.writable = writable;
+ iterateInheritedPrototype((proto) => {
+ Object.getOwnPropertyNames(proto).forEach((key) => {
+ if (excludes.indexOf(key) >= 0)
+ return;
+ if (Object.prototype.hasOwnProperty.call(obj, key))
+ return;
+ const desc = Object.getOwnPropertyDescriptor(proto, key);
+ const fnKeys = ['get', 'set', 'value'];
+ fnKeys.forEach((k) => {
+ if (typeof desc[k] === 'function') {
+ const oldFn = desc[k];
+ desc[k] = function (...args) {
+ return oldFn.apply(Object.prototype.hasOwnProperty.call(options, 'bindTo') ? options.bindTo : this, args);
+ };
+ }
+ });
+ Object.defineProperty(obj, key, Object.assign(Object.assign({}, desc), defaultDesc));
+ });
+ }, something, options.till || Object, false);
+ return obj;
+};
+export const isPlainObject = function isPlainObject(something) {
+ return Object.prototype.toString.call(something) === '[object Object]';
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/index.d.ts
new file mode 100644
index 0000000..94e7ce1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/index.d.ts
@@ -0,0 +1,4 @@
+export * from './superComponent';
+export * from './flatTool';
+export * from './instantiationDecorator';
+export * from './control';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/index.js
new file mode 100644
index 0000000..94e7ce1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/index.js
@@ -0,0 +1,4 @@
+export * from './superComponent';
+export * from './flatTool';
+export * from './instantiationDecorator';
+export * from './control';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/instantiationDecorator.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/instantiationDecorator.d.ts
new file mode 100644
index 0000000..3a06f2c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/instantiationDecorator.d.ts
@@ -0,0 +1,3 @@
+import { SuperComponent } from './superComponent';
+export declare const toComponent: (options: Record) => Record;
+export declare const wxComponent: () => (constructor: new () => SuperComponent) => void;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/instantiationDecorator.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/instantiationDecorator.js
new file mode 100644
index 0000000..0e5c3d3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/instantiationDecorator.js
@@ -0,0 +1,142 @@
+import { isPlainObject, toObject } from './flatTool';
+import { canUseVirtualHost } from '../version';
+const RawLifeCycles = ['Created', 'Attached', 'Ready', 'Moved', 'Detached', 'Error'];
+const NativeLifeCycles = RawLifeCycles.map((k) => k.toLowerCase());
+const ComponentNativeProps = [
+ 'properties',
+ 'data',
+ 'observers',
+ 'methods',
+ 'behaviors',
+ ...NativeLifeCycles,
+ 'relations',
+ 'externalClasses',
+ 'options',
+ 'lifetimes',
+ 'pageLifeTimes',
+ 'definitionFilter',
+];
+export const toComponent = function toComponent(options) {
+ const { relations, behaviors = [], properties, externalClasses = [] } = options;
+ if (options.properties) {
+ Object.keys(options.properties).forEach((k) => {
+ let opt = options.properties[k];
+ if (!isPlainObject(opt)) {
+ opt = { type: opt };
+ }
+ options.properties[k] = opt;
+ });
+ const ariaProps = [
+ { key: 'ariaHidden', type: Boolean },
+ { key: 'ariaRole', type: String },
+ { key: 'ariaLabel', type: String },
+ { key: 'ariaLabelledby', type: String },
+ { key: 'ariaDescribedby', type: String },
+ { key: 'ariaBusy', type: Boolean },
+ ];
+ ariaProps.forEach(({ key, type }) => {
+ options.properties[key] = {
+ type,
+ };
+ });
+ options.properties.style = { type: String, value: '' };
+ options.properties.customStyle = { type: String, value: '' };
+ }
+ if (!options.methods)
+ options.methods = {};
+ if (!options.lifetimes)
+ options.lifetimes = {};
+ const inits = {};
+ if (relations) {
+ const getRelations = (relation, path) => Behavior({
+ created() {
+ Object.defineProperty(this, `$${relation}`, {
+ get: () => {
+ const nodes = this.getRelationNodes(path) || [];
+ return relation === 'parent' ? nodes[0] : nodes;
+ },
+ });
+ },
+ });
+ const map = {};
+ Object.keys(relations).forEach((path) => {
+ const comp = relations[path];
+ const relation = ['parent', 'ancestor'].includes(comp.type) ? 'parent' : 'children';
+ const mixin = getRelations(relation, path);
+ map[relation] = mixin;
+ });
+ behaviors.push(...Object.keys(map).map((key) => map[key]));
+ }
+ options.behaviors = [...behaviors];
+ options.externalClasses = ['class', ...externalClasses];
+ Object.getOwnPropertyNames(options).forEach((k) => {
+ const desc = Object.getOwnPropertyDescriptor(options, k);
+ if (!desc)
+ return;
+ if (NativeLifeCycles.indexOf(k) < 0 && typeof desc.value === 'function') {
+ Object.defineProperty(options.methods, k, desc);
+ delete options[k];
+ }
+ else if (ComponentNativeProps.indexOf(k) < 0) {
+ inits[k] = desc;
+ }
+ else if (NativeLifeCycles.indexOf(k) >= 0) {
+ options.lifetimes[k] = options[k];
+ }
+ });
+ if (Object.keys(inits).length) {
+ const oldCreated = options.lifetimes.created;
+ const oldAttached = options.lifetimes.attached;
+ const { controlledProps = [] } = options;
+ options.lifetimes.created = function (...args) {
+ Object.defineProperties(this, inits);
+ if (oldCreated)
+ oldCreated.apply(this, args);
+ };
+ options.lifetimes.attached = function (...args) {
+ if (oldAttached)
+ oldAttached.apply(this, args);
+ controlledProps.forEach(({ key }) => {
+ const defaultKey = `default${key.replace(/^(\w)/, (m, m1) => m1.toUpperCase())}`;
+ const props = this.properties;
+ if (props[key] == null) {
+ this._selfControlled = true;
+ }
+ if (props[key] == null && props[defaultKey] != null) {
+ this.setData({
+ [key]: props[defaultKey],
+ });
+ }
+ });
+ };
+ options.methods._trigger = function (evtName, detail, opts) {
+ const target = controlledProps.find((item) => item.event == evtName);
+ if (target) {
+ const { key } = target;
+ if (this._selfControlled) {
+ this.setData({
+ [key]: detail[key],
+ });
+ }
+ }
+ this.triggerEvent(evtName, detail, opts);
+ };
+ }
+ return options;
+};
+export const wxComponent = function wxComponent() {
+ return function (constructor) {
+ class WxComponent extends constructor {
+ }
+ const current = new WxComponent();
+ current.options = current.options || {};
+ if (current.options.addGlobalClass === undefined) {
+ current.options.addGlobalClass = true;
+ }
+ if (canUseVirtualHost()) {
+ current.options.virtualHost = true;
+ }
+ const obj = toComponent(toObject(current));
+ Component(obj);
+ };
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/superComponent.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/superComponent.d.ts
new file mode 100644
index 0000000..4455e19
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/superComponent.d.ts
@@ -0,0 +1,19 @@
+///
+export interface ComponentsOptionsType extends WechatMiniprogram.Component.ComponentOptions {
+ styleIsolation?: 'isolated' | 'apply-shared' | 'shared' | 'page-isolated' | 'page-apply-shared' | 'page-shared';
+}
+export interface RelationsOptions {
+ [componentName: string]: WechatMiniprogram.Component.RelationOption;
+}
+export interface SuperComponent extends WechatMiniprogram.Component.Lifetimes, WechatMiniprogram.Component.OtherOption, WechatMiniprogram.Component.InstanceMethods {
+ properties: P;
+ data: D;
+ options: ComponentsOptionsType;
+ methods: M | Record any>;
+ $global: Function;
+ [x: string]: any;
+}
+export declare class SuperComponent {
+ readonly app: any;
+ constructor();
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/superComponent.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/superComponent.js
new file mode 100644
index 0000000..3cb17dc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/src/superComponent.js
@@ -0,0 +1,5 @@
+export class SuperComponent {
+ constructor() {
+ this.app = getApp();
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/_variables.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/_variables.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/base.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/base.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/index.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/index.wxss
new file mode 100644
index 0000000..1d532d2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/index.wxss
@@ -0,0 +1,27 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_clearfix.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_clearfix.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_cursor.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_cursor.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_ellipsis.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_ellipsis.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_hairline.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_hairline.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_index.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/mixins/_index.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/theme/_index.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/theme/_index.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_animation.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_animation.wxss
new file mode 100644
index 0000000..a04e7c5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_animation.wxss
@@ -0,0 +1,8 @@
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_float.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_float.wxss
new file mode 100644
index 0000000..e88ef0e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_float.wxss
@@ -0,0 +1,6 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_index.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_index.wxss
new file mode 100644
index 0000000..1d532d2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/style/utilities/_index.wxss
@@ -0,0 +1,27 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/badge.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/badge.wxml
new file mode 100644
index 0000000..df8c717
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/badge.wxml
@@ -0,0 +1,16 @@
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/button.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/button.wxml
new file mode 100644
index 0000000..173e8bb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/button.wxml
@@ -0,0 +1,37 @@
+
+ {{content}}
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/icon.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/icon.wxml
new file mode 100644
index 0000000..0fafa2c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/icon.wxml
@@ -0,0 +1,15 @@
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/image.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/image.wxml
new file mode 100644
index 0000000..7c78c4a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/template/image.wxml
@@ -0,0 +1,21 @@
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.d.ts
new file mode 100644
index 0000000..ebab160
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.d.ts
@@ -0,0 +1,30 @@
+///
+///
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+export declare const debounce: (func: any, wait?: number) => (...rest: any[]) => void;
+export declare const throttle: (func: any, wait?: number, options?: any) => (...args: any[]) => void;
+export declare const classNames: (...args: any[]) => string;
+export declare const styles: (styleObj: any) => string;
+export declare const getAnimationFrame: (context: any, cb: Function) => WechatMiniprogram.NodesRef;
+export declare const getRect: (context: any, selector: string, needAll?: boolean) => Promise;
+export declare const isNumber: (value: any) => boolean;
+export declare const addUnit: (value?: string | number) => string | undefined;
+export declare const getCharacterLength: (type: string, str: string, max?: number) => {
+ length: number;
+ characters: string;
+};
+export declare const chunk: (arr: any[], size: number) => any[][];
+export declare const getInstance: (context?: Context, selector?: string) => WechatMiniprogram.Component.TrivialInstance;
+export declare const unitConvert: (value: number | string) => number;
+export declare const setIcon: (iconName: any, icon: any, defaultIcon: any) => {
+ [x: string]: any;
+};
+export declare const isBool: (val: any) => boolean;
+export declare const isObject: (val: any) => boolean;
+export declare const isString: (val: any) => boolean;
+export declare const toCamel: (str: any) => any;
+export declare const getCurrentPage: () => T & WechatMiniprogram.OptionalInterface & WechatMiniprogram.Page.InstanceProperties & WechatMiniprogram.Page.InstanceMethods & WechatMiniprogram.Page.Data & WechatMiniprogram.IAnyObject;
+export declare const uniqueFactory: (compName: any) => () => string;
+export declare const calcIcon: (icon: string | Record, defaultIcon?: string) => string | Record;
+export declare const isOverSize: (size: any, sizeLimit: any) => boolean;
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.js
new file mode 100644
index 0000000..2d6daef
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.js
@@ -0,0 +1,233 @@
+import { prefix } from './config';
+const systemInfo = wx.getSystemInfoSync();
+export const debounce = function (func, wait = 500) {
+ let timerId;
+ return function (...rest) {
+ if (timerId) {
+ clearTimeout(timerId);
+ }
+ timerId = setTimeout(() => {
+ func.apply(this, rest);
+ }, wait);
+ };
+};
+export const throttle = (func, wait = 100, options = null) => {
+ let previous = 0;
+ let timerid = null;
+ if (!options) {
+ options = {
+ leading: true,
+ };
+ }
+ return function (...args) {
+ const now = Date.now();
+ if (!previous && !options.leading)
+ previous = now;
+ const remaining = wait - (now - previous);
+ const context = this;
+ if (remaining <= 0) {
+ if (timerid) {
+ clearTimeout(timerid);
+ timerid = null;
+ }
+ previous = now;
+ func.apply(context, args);
+ }
+ };
+};
+export const classNames = function (...args) {
+ const hasOwn = {}.hasOwnProperty;
+ const classes = [];
+ args.forEach((arg) => {
+ if (!arg)
+ return;
+ const argType = typeof arg;
+ if (argType === 'string' || argType === 'number') {
+ classes.push(arg);
+ }
+ else if (Array.isArray(arg) && arg.length) {
+ const inner = classNames(...arg);
+ if (inner) {
+ classes.push(inner);
+ }
+ }
+ else if (argType === 'object') {
+ for (const key in arg) {
+ if (hasOwn.call(arg, key) && arg[key]) {
+ classes.push(key);
+ }
+ }
+ }
+ });
+ return classes.join(' ');
+};
+export const styles = function (styleObj) {
+ return Object.keys(styleObj)
+ .map((styleKey) => `${styleKey}: ${styleObj[styleKey]}`)
+ .join('; ');
+};
+export const getAnimationFrame = function (context, cb) {
+ return wx
+ .createSelectorQuery()
+ .in(context)
+ .selectViewport()
+ .boundingClientRect()
+ .exec(() => {
+ cb();
+ });
+};
+export const getRect = function (context, selector, needAll = false) {
+ return new Promise((resolve, reject) => {
+ wx.createSelectorQuery()
+ .in(context)[needAll ? 'selectAll' : 'select'](selector)
+ .boundingClientRect((rect) => {
+ if (rect) {
+ resolve(rect);
+ }
+ else {
+ reject(rect);
+ }
+ })
+ .exec();
+ });
+};
+const isDef = function (value) {
+ return value !== undefined && value !== null;
+};
+export const isNumber = function (value) {
+ return /^\d+(\.\d+)?$/.test(value);
+};
+export const addUnit = function (value) {
+ if (!isDef(value)) {
+ return undefined;
+ }
+ value = String(value);
+ return isNumber(value) ? `${value}px` : value;
+};
+export const getCharacterLength = (type, str, max) => {
+ if (!str || str.length === 0) {
+ return {
+ length: 0,
+ characters: '',
+ };
+ }
+ if (type === 'maxcharacter') {
+ let len = 0;
+ for (let i = 0; i < str.length; i += 1) {
+ let currentStringLength = 0;
+ if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
+ currentStringLength = 2;
+ }
+ else {
+ currentStringLength = 1;
+ }
+ if (len + currentStringLength > max) {
+ return {
+ length: len,
+ characters: str.slice(0, i),
+ };
+ }
+ len += currentStringLength;
+ }
+ return {
+ length: len,
+ characters: str,
+ };
+ }
+ else if (type === 'maxlength') {
+ const length = str.length > max ? max : str.length;
+ return {
+ length,
+ characters: str.slice(0, length),
+ };
+ }
+ return {
+ length: str.length,
+ characters: str,
+ };
+};
+export const chunk = (arr, size) => Array.from({ length: Math.ceil(arr.length / size) }, (v, i) => arr.slice(i * size, i * size + size));
+export const getInstance = function (context, selector) {
+ if (!context) {
+ const pages = getCurrentPages();
+ const page = pages[pages.length - 1];
+ context = page.$$basePage || page;
+ }
+ const instance = context ? context.selectComponent(selector) : null;
+ if (!instance) {
+ console.warn('未找到组件,请检查selector是否正确');
+ return null;
+ }
+ return instance;
+};
+export const unitConvert = (value) => {
+ var _a;
+ if (typeof value === 'string') {
+ if (value.includes('rpx')) {
+ return (parseInt(value, 10) * ((_a = systemInfo === null || systemInfo === void 0 ? void 0 : systemInfo.screenWidth) !== null && _a !== void 0 ? _a : 750)) / 750;
+ }
+ return parseInt(value, 10);
+ }
+ return value;
+};
+export const setIcon = (iconName, icon, defaultIcon) => {
+ if (icon) {
+ if (typeof icon === 'string') {
+ return {
+ [`${iconName}Name`]: icon,
+ [`${iconName}Data`]: {},
+ };
+ }
+ else if (typeof icon === 'object') {
+ return {
+ [`${iconName}Name`]: '',
+ [`${iconName}Data`]: icon,
+ };
+ }
+ else {
+ return {
+ [`${iconName}Name`]: defaultIcon,
+ [`${iconName}Data`]: {},
+ };
+ }
+ }
+ return {
+ [`${iconName}Name`]: '',
+ [`${iconName}Data`]: {},
+ };
+};
+export const isBool = (val) => typeof val === 'boolean';
+export const isObject = (val) => typeof val === 'object' && val != null;
+export const isString = (val) => typeof val === 'string';
+export const toCamel = (str) => str.replace(/-(\w)/g, (match, m1) => m1.toUpperCase());
+export const getCurrentPage = function () {
+ const pages = getCurrentPages();
+ return pages[pages.length - 1];
+};
+export const uniqueFactory = (compName) => {
+ let number = 0;
+ return () => `${prefix}_${compName}_${number++}`;
+};
+export const calcIcon = (icon, defaultIcon) => {
+ if ((isBool(icon) && icon && defaultIcon) || isString(icon)) {
+ return { name: isBool(icon) ? defaultIcon : icon };
+ }
+ if (isObject(icon)) {
+ return icon;
+ }
+ return null;
+};
+export const isOverSize = (size, sizeLimit) => {
+ var _a;
+ if (!sizeLimit)
+ return false;
+ const base = 1000;
+ const unitMap = {
+ B: 1,
+ KB: base,
+ MB: base * base,
+ GB: base * base * base,
+ };
+ const computedSize = typeof sizeLimit === 'number' ? sizeLimit * base : (sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.size) * unitMap[(_a = sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.unit) !== null && _a !== void 0 ? _a : 'KB'];
+ return size > computedSize;
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.wxs
new file mode 100644
index 0000000..be97e3d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/utils.wxs
@@ -0,0 +1,137 @@
+/* utils */
+
+/**
+ * addUnit */
+// 为 css 添加单位
+function addUnit(value) {
+ var REGEXP = getRegExp('^-?\d+(.\d+)?$');
+ if (value == null) {
+ return undefined;
+ }
+ return REGEXP.test('' + value) ? value + 'px' : value;
+}
+
+function isString(string) {
+ return string && string.constructor === 'String';
+}
+
+function isArray(array) {
+ return array && array.constructor === 'Array';
+}
+
+function isObject(obj) {
+ return obj && obj.constructor === 'Object';
+}
+
+var isNoEmptyObj = function (obj) {
+ return isObject(obj) && JSON.stringify(obj) !== '{}';
+};
+
+function includes(arr, value) {
+ if (!arr || !isArray(arr)) return false;
+
+ var i = 0;
+ var len = arr.length;
+
+ for (; i < len; i++) {
+ if (arr[i] === value) return true;
+ }
+ return false;
+}
+
+function cls(base, arr) {
+ var res = [base];
+ var i = 0;
+ for (size = arr.length; i < size; i++) {
+ var item = arr[i];
+
+ if (item && item.constructor === 'Array') {
+ var key = arr[i][0];
+ var value = arr[i][1];
+
+ if (value) {
+ res.push(base + '--' + key);
+ }
+ } else if (typeof item === 'string' || typeof item === 'number') {
+ if (item) {
+ res.push(base + '--' + item);
+ }
+ }
+ }
+ return res.join(' ');
+}
+
+function getBadgeAriaLabel(options) {
+ var maxCount = options.maxCount || 99;
+ if (options.dot) {
+ return '有新的消息';
+ }
+ if (options.count === '...') {
+ return '有很多消息';
+ }
+ if (isNaN(options.count)) {
+ return options.count;
+ }
+ var str1 = '有' + maxCount + '+条消息';
+ var str2 = '有' + options.count + '条消息';
+ return Number(options.count) > maxCount ? str1 : str2;
+}
+
+function endsWith(str, endStr) {
+ return str.slice(-endStr.length) === endStr ? str : str + endStr;
+}
+
+function keys(obj) {
+ return JSON.stringify(obj)
+ .replace(getRegExp('{|}|"', 'g'), '')
+ .split(',')
+ .map(function (item) {
+ return item.split(':')[0];
+ });
+}
+
+function kebabCase(str) {
+ return str
+ .replace(getRegExp('[A-Z]', 'g'), function (ele) {
+ return '-' + ele;
+ })
+ .toLowerCase();
+}
+
+function _style(styles) {
+ if (isArray(styles)) {
+ return styles
+ .filter(function (item) {
+ return item != null && item !== '';
+ })
+ .map(function (item) {
+ return isArray(item) ? style(item) : endsWith(item, ';');
+ })
+ .join(' ');
+ }
+
+ if (isObject(styles)) {
+ return keys(styles)
+ .filter(function (key) {
+ return styles[key] != null && styles[key] !== '';
+ })
+ .map(function (key) {
+ return [kebabCase(key), [styles[key]]].join(':');
+ })
+ .join(';');
+ }
+
+ return styles;
+}
+
+module.exports = {
+ addUnit: addUnit,
+ isString: isString,
+ isArray: isArray,
+ isObject: isObject,
+ isNoEmptyObj: isNoEmptyObj,
+ includes: includes,
+ cls: cls,
+ getBadgeAriaLabel: getBadgeAriaLabel,
+ _style: _style,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/version.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/common/version.d.ts
new file mode 100644
index 0000000..a492558
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/version.d.ts
@@ -0,0 +1,2 @@
+export declare function canIUseFormFieldButton(): boolean;
+export declare function canUseVirtualHost(): boolean;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/common/version.js b/node_modules/tdesign-miniprogram/miniprogram_dist/common/version.js
new file mode 100644
index 0000000..a4e7619
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/common/version.js
@@ -0,0 +1,40 @@
+let systemInfo;
+function getSystemInfo() {
+ if (systemInfo == null) {
+ systemInfo = wx.getSystemInfoSync();
+ }
+ return systemInfo;
+}
+function compareVersion(v1, v2) {
+ v1 = v1.split('.');
+ v2 = v2.split('.');
+ const len = Math.max(v1.length, v2.length);
+ while (v1.length < len) {
+ v1.push('0');
+ }
+ while (v2.length < len) {
+ v2.push('0');
+ }
+ for (let i = 0; i < len; i++) {
+ const num1 = parseInt(v1[i]);
+ const num2 = parseInt(v2[i]);
+ if (num1 > num2) {
+ return 1;
+ }
+ else if (num1 < num2) {
+ return -1;
+ }
+ }
+ return 0;
+}
+function judgeByVersion(version) {
+ const currentSDKVersion = getSystemInfo().SDKVersion;
+ return compareVersion(currentSDKVersion, version) >= 0;
+}
+export function canIUseFormFieldButton() {
+ const version = '2.10.3';
+ return judgeByVersion(version);
+}
+export function canUseVirtualHost() {
+ return judgeByVersion('2.19.2');
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/README.en-US.md
new file mode 100644
index 0000000..44bca3e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/README.en-US.md
@@ -0,0 +1,23 @@
+:: BASE_DOC ::
+
+## API
+
+### CountDown Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+auto-start | Boolean | true | \- | N
+content | String / Slot | 'default' | \- | N
+format | String | HH:mm:ss | \- | N
+millisecond | Boolean | false | \- | N
+size | String `v0.5.1` | 'small' | options:small/medium/large | N
+split-with-unit `v0.5.1` | Boolean | false | \- | N
+theme | String `v0.5.1` | 'default' | options:default/round/square | N
+time | Number | - | required | Y
+
+### CountDown Events
+
+name | params | description
+-- | -- | --
+change | `(time: TimeData)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/count-down/type.ts)。
`interface TimeData { days: number; hours: number; minutes: number; seconds: number; milliseconds: number }`
+finish | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/README.md
new file mode 100644
index 0000000..12cd224
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/README.md
@@ -0,0 +1,49 @@
+---
+title: CountDown 倒计时
+description: 用于实时展示倒计时数值。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-count-down": "tdesign-miniprogram/count-down/count-down"
+}
+```
+
+## 代码演示
+
+### 基础倒计时
+
+{{ base }}
+
+### 调整尺寸
+
+{{ size }}
+
+## API
+### CountDown Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+auto-start | Boolean | true | 是否自动开始倒计时 | N
+content | String / Slot | 'default' | 最终倒计时的展示内容,值为'default'时使用默认的格式,否则使用自定义样式插槽 | N
+format | String | HH:mm:ss | 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 | N
+millisecond | Boolean | false | 是否开启毫秒级渲染 | N
+size | String `v0.5.1` | 'medium' | 倒计时尺寸。可选项:small/medium/large | N
+split-with-unit `v0.5.1` | Boolean | false | 使用时间单位分割 | N
+theme | String `v0.5.1` | 'default' | 倒计时风格。可选项:default/round/square | N
+time | Number | - | 必需。倒计时时长,单位毫秒 | Y
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、计时器类型、分隔线类名 等。`['t-class', 't-class-count', 't-class-split']` | N
+
+### CountDown Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(time: TimeData)` | 时间变化时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/count-down/type.ts)。
`interface TimeData { days: number; hours: number; minutes: number; seconds: number; milliseconds: number }`
+finish | \- | 倒计时结束时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.d.ts
new file mode 100644
index 0000000..60bd7f2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.d.ts
@@ -0,0 +1,33 @@
+import { SuperComponent } from '../common/src/index';
+export default class CountDown extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdCountDownProps;
+ observers: {
+ time(): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ timeDataUnit: {
+ DD: string;
+ HH: string;
+ mm: string;
+ ss: string;
+ SSS: string;
+ };
+ timeData: import("./utils").TimeData;
+ formattedTime: string;
+ };
+ timeoutId: null | number;
+ lifetimes: {
+ detached(): void;
+ };
+ methods: {
+ start(): void;
+ pause(): void;
+ reset(): void;
+ getTime(): number;
+ updateTime(remain: number): void;
+ doCount(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.js b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.js
new file mode 100644
index 0000000..3582cb4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.js
@@ -0,0 +1,100 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { isSameSecond, parseFormat, parseTimeData, TimeDataUnit } from './utils';
+const { prefix } = config;
+const name = `${prefix}-count-down`;
+let CountDown = class CountDown extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-count`, `${prefix}-class-split`];
+ this.properties = props;
+ this.observers = {
+ time() {
+ this.reset();
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ timeDataUnit: TimeDataUnit,
+ timeData: parseTimeData(0),
+ formattedTime: '0',
+ };
+ this.timeoutId = null;
+ this.lifetimes = {
+ detached() {
+ if (this.timeoutId) {
+ clearTimeout(this.timeoutId);
+ this.timeoutId = null;
+ }
+ },
+ };
+ this.methods = {
+ start() {
+ if (this.counting) {
+ return;
+ }
+ this.counting = true;
+ this.endTime = Date.now() + this.remain;
+ this.doCount();
+ },
+ pause() {
+ this.counting = false;
+ this.timeoutId && clearTimeout(this.timeoutId);
+ },
+ reset() {
+ this.pause();
+ this.remain = this.properties.time;
+ this.updateTime(this.remain);
+ if (this.properties.autoStart) {
+ this.start();
+ }
+ },
+ getTime() {
+ return Math.max(this.endTime - Date.now(), 0);
+ },
+ updateTime(remain) {
+ const { format } = this.properties;
+ this.remain = remain;
+ const timeData = parseTimeData(remain);
+ this.triggerEvent('change', timeData);
+ const { timeText } = parseFormat(remain, format);
+ const timeRange = format.split(':');
+ this.setData({
+ timeRange,
+ timeData,
+ formattedTime: timeText.replace(/:/g, ' : '),
+ });
+ if (remain === 0) {
+ this.pause();
+ this.triggerEvent('finish');
+ }
+ },
+ doCount() {
+ this.timeoutId = setTimeout(() => {
+ const time = this.getTime();
+ if (this.properties.millisecond) {
+ this.updateTime(time);
+ }
+ else if (!isSameSecond(time, this.remain) || time === 0) {
+ this.updateTime(time);
+ }
+ if (time !== 0) {
+ this.doCount();
+ }
+ }, 33);
+ },
+ };
+ }
+};
+CountDown = __decorate([
+ wxComponent()
+], CountDown);
+export default CountDown;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.json b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.wxml
new file mode 100644
index 0000000..7add47e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.wxml
@@ -0,0 +1,22 @@
+
+ module.exports.format = function(num) { return num < 10 ? '0' + num : num; }
+
+
+
+
+ {{formattedTime}}
+
+
+ {{this.format(timeData[timeRange[index]])}}
+ {{splitWithUnit ? timeDataUnit[timeRange[index]] : ':'}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.wxss
new file mode 100644
index 0000000..6ed1bb9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/count-down.wxss
@@ -0,0 +1,136 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-count-down--small.t-count-down--default {
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down--small.t-count-down--round > .t-count-down__item {
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-count-down--small.t-count-down--square > .t-count-down__item {
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-count-down--small.t-count-down--round > .t-count-down__item,
+.t-count-down--small.t-count-down--square > .t-count-down__item {
+ width: 40rpx;
+ height: 40rpx;
+}
+.t-count-down--small.t-count-down--round > .t-count-down__split--dot,
+.t-count-down--small.t-count-down--square > .t-count-down__split--dot {
+ margin: 0 4rpx;
+ font-size: var(--td-font-size-base, 28rpx);
+ font-weight: 700;
+}
+.t-count-down--small.t-count-down--round > .t-count-down__split--text,
+.t-count-down--small.t-count-down--square > .t-count-down__split--text {
+ margin: 0 8rpx;
+ font-size: var(--td-font-size, 20rpx);
+}
+.t-count-down--medium.t-count-down--default {
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__item {
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down--medium.t-count-down--square > .t-count-down__item {
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__item,
+.t-count-down--medium.t-count-down--square > .t-count-down__item {
+ width: 48rpx;
+ height: 48rpx;
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__split--dot,
+.t-count-down--medium.t-count-down--square > .t-count-down__split--dot {
+ margin: 0 6rpx;
+ font-size: var(--td-font-size-m, 32rpx);
+ font-weight: 700;
+}
+.t-count-down--medium.t-count-down--round > .t-count-down__split--text,
+.t-count-down--medium.t-count-down--square > .t-count-down__split--text {
+ margin: 0 10rpx;
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-count-down--large.t-count-down--default {
+ font-size: 36rpx;
+}
+.t-count-down--large.t-count-down--round > .t-count-down__item {
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-count-down--large.t-count-down--square > .t-count-down__item {
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-count-down--large.t-count-down--round > .t-count-down__item,
+.t-count-down--large.t-count-down--square > .t-count-down__item {
+ width: 56rpx;
+ height: 56rpx;
+}
+.t-count-down--large.t-count-down--round > .t-count-down__split--dot,
+.t-count-down--large.t-count-down--square > .t-count-down__split--dot {
+ margin: 0 12rpx;
+ font-size: 36rpx;
+ font-weight: 700;
+}
+.t-count-down--large.t-count-down--round > .t-count-down__split--text,
+.t-count-down--large.t-count-down--square > .t-count-down__split--text {
+ margin: 0 12rpx;
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-count-down {
+ font-family: 'DIN Alternate', 'Courier New', Courier, monospace;
+}
+.t-count-down .t-count-down__item,
+.t-count-down .t-count-down__split {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-count-down--square > .t-count-down__split--dot,
+.t-count-down--round > .t-count-down__split--dot {
+ color: var(--td-error-color-6, #d54941);
+}
+.t-count-down--square > .t-count-down__split--text,
+.t-count-down--round > .t-count-down__split--text {
+ color: var(--td-font-gray-1, rgba(0, 0, 0, 0.9));
+}
+.t-count-down--default {
+ color: var(--td-countdown-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-count-down--square {
+ color: var(--td-countdown-round-color, var(--td-font-white-1, #ffffff));
+}
+.t-count-down--square > .t-count-down__item {
+ border-radius: var(--td-countdown-square-border-radius, var(--td-radius-small, 6rpx));
+ background: var(--td-countdown-bg-color, var(--td-error-color-6, #d54941));
+}
+.t-count-down--round {
+ color: var(--td-countdown-round-color, var(--td-font-white-1, #ffffff));
+}
+.t-count-down--round > .t-count-down__item {
+ border-radius: var(--td-countdown-round-border-radius, var(--td-radius-circle, 50%));
+ background: var(--td-countdown-bg-color, var(--td-error-color-6, #d54941));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/props.d.ts
new file mode 100644
index 0000000..8cab4af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/props.d.ts
@@ -0,0 +1,3 @@
+import { TdCountDownProps } from './type';
+declare const props: TdCountDownProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/props.js
new file mode 100644
index 0000000..fe871f8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/props.js
@@ -0,0 +1,34 @@
+const props = {
+ autoStart: {
+ type: Boolean,
+ value: true,
+ },
+ content: {
+ type: String,
+ value: 'default',
+ },
+ format: {
+ type: String,
+ value: 'HH:mm:ss',
+ },
+ millisecond: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ splitWithUnit: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ time: {
+ type: Number,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/type.d.ts
new file mode 100644
index 0000000..84007d2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdCountDownProps {
+ autoStart?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ format?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ millisecond?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'small' | 'medium' | 'large';
+ };
+ splitWithUnit?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'round' | 'square';
+ };
+ time: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/utils.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/utils.d.ts
new file mode 100644
index 0000000..18c1fac
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/utils.d.ts
@@ -0,0 +1,25 @@
+export interface TimeData {
+ DD: number;
+ HH: number;
+ mm: number;
+ ss: number;
+ SSS: number;
+}
+export declare const TimeDataUnit: {
+ DD: string;
+ HH: string;
+ mm: string;
+ ss: string;
+ SSS: string;
+};
+export declare const parseTimeData: (time: number) => TimeData;
+export declare const isSameSecond: (time1: number, time2: number) => boolean;
+export declare type TTimeList = {
+ digit: string;
+ unit: string;
+ match: string;
+}[];
+export declare const parseFormat: (time: number, format: string) => {
+ timeText: string;
+ timeList: TTimeList;
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/utils.js b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/utils.js
new file mode 100644
index 0000000..4aa6dc3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/count-down/utils.js
@@ -0,0 +1,61 @@
+export const TimeDataUnit = {
+ DD: '天',
+ HH: '时',
+ mm: '分',
+ ss: '秒',
+ SSS: '毫秒',
+};
+const SECOND = 1000;
+const MINUTE = 60 * SECOND;
+const HOUR = 60 * MINUTE;
+const DAY = 24 * HOUR;
+export const parseTimeData = function (time) {
+ const days = Math.floor(time / DAY);
+ const hours = Math.floor((time % DAY) / HOUR);
+ const minutes = Math.floor((time % HOUR) / MINUTE);
+ const seconds = Math.floor((time % MINUTE) / SECOND);
+ const milliseconds = Math.floor(time % SECOND);
+ return {
+ DD: days,
+ HH: hours,
+ mm: minutes,
+ ss: seconds,
+ SSS: milliseconds,
+ };
+};
+export const isSameSecond = function (time1, time2) {
+ return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);
+};
+export const parseFormat = function (time, format) {
+ const obj = {
+ 'D+': Math.floor(time / 86400000),
+ 'H+': Math.floor((time % 86400000) / 3600000),
+ 'm+': Math.floor((time % 3600000) / 60000),
+ 's+': Math.floor((time % 60000) / 1000),
+ 'S+': Math.floor(time % 1000),
+ };
+ const timeList = [];
+ let timeText = format;
+ Object.keys(obj).forEach((prop) => {
+ if (new RegExp(`(${prop})`).test(timeText)) {
+ timeText = timeText.replace(RegExp.$1, (match, offset, source) => {
+ const v = `${obj[prop]}`;
+ let digit = v;
+ if (match.length > 1) {
+ digit = (match.replace(new RegExp(match[0], 'g'), '0') + v).substr(v.length);
+ }
+ const unit = source.substr(offset + match.length);
+ const last = timeList[timeList.length - 1];
+ if (last) {
+ const index = last.unit.indexOf(match);
+ if (index !== -1) {
+ last.unit = last.unit.substr(0, index);
+ }
+ }
+ timeList.push({ digit, unit, match });
+ return digit;
+ });
+ }
+ });
+ return { timeText, timeList };
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/README.en-US.md
new file mode 100644
index 0000000..7f31cb2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/README.en-US.md
@@ -0,0 +1,31 @@
+:: BASE_DOC ::
+
+## API
+### DateTimePicker Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+cancel-btn | String | 取消 | \- | N
+confirm-btn | String | - | \- | N
+end | String / Number | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-confirm', 't-class-cancel', 't-class-title']` | N
+footer | Slot | true | `deprecated` | N
+format | String | 'YYYY-MM-DD HH:mm:ss' | \- | N
+header | Boolean / Slot | true | \- | N
+mode | String / Array | 'date' | Typescript:`DateTimePickerMode` `type DateTimePickerMode = TimeModeValues \| Array ` `type TimeModeValues = 'year' \| 'month' \| 'date' \| 'hour' \| 'minute' \| 'second'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+show-week | Boolean | false | \- | N
+start | String / Number | - | \- | N
+title | String | - | title of picker | N
+value | String / Number | - | Typescript:`DateValue` `type DateValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+default-value | String / Number | undefined | uncontrolled property。Typescript:`DateValue` `type DateValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+visible | Boolean | false | \- | N
+
+### DateTimePicker Events
+
+name | params | description
+-- | -- | --
+cancel | \- | \-
+change | `(value: DateValue)` | \-
+close | `(trigger: TriggerSource)` | `1.0.1`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: DateValue)` | `1.0.1`
+pick | `(value: DateValue)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/README.md
new file mode 100644
index 0000000..f201642
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/README.md
@@ -0,0 +1,69 @@
+---
+title: DateTimePicker 时间选择器
+description: 用于选择一个时间点或者一个时间段。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-date-time-picker": "tdesign-miniprogram/date-time-picker/date-time-picker"
+}
+```
+
+## 代码演示
+
+### 日期选择器
+
+#### 年月日选择器
+
+{{ year-month-date }}
+
+#### 年月选择器
+
+{{ year-month }}
+
+### 时间选择器器
+
+包括:`时分秒`、`时分`两个示例
+
+{{ time }}
+
+#### 年月日时分秒选择器
+
+{{ date-all }}
+
+## API
+### DateTimePicker Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+cancel-btn | String | 取消 | 取消按钮文字 | N
+confirm-btn | String | - | 确定按钮文字 | N
+end | String / Number | - | 选择器的最大可选时间,默认为当前时间+10年 | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、确认按钮、取消按钮、标题等元素类名。`['t-class', 't-class-confirm', 't-class-cancel', 't-class-title']` | N
+footer | Slot | true | 已废弃。底部内容 | N
+format | String | 'YYYY-MM-DD HH:mm:ss' | 用于pick、change、confirm事件参数格式化[详细文档](https://day.js.org/docs/en/display/format) | N
+header | Boolean / Slot | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容 | N
+mode | String / Array | 'date' | year = 年;month = 年月;date = 年月日;hour = 年月日时; minute = 年月日时分;当类型为数组时,第一个值控制年月日,第二个值控制时分秒,示例:['null', 'second']或['date', 'minute']。TS 类型:`DateTimePickerMode` `type DateTimePickerMode = TimeModeValues \| Array ` `type TimeModeValues = 'year' \| 'month' \| 'date' \| 'hour' \| 'minute' \| 'second'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+show-week | Boolean | false | 【开发中】是否在日期旁边显示周几(如周一,周二,周日等) | N
+start | String / Number | - | 选择器的最小可选时间,默认为当前时间-10年 | N
+title | String | - | 标题 | N
+value | String / Number | - | 选中值。TS 类型:`DateValue` `type DateValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+default-value | String / Number | undefined | 选中值。非受控属性。TS 类型:`DateValue` `type DateValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts) | N
+visible | Boolean | false | 是否显示 | N
+
+### DateTimePicker Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | \- | 取消按钮点击时触发
+change | `(value: DateValue)` | 确认按钮点击时触发
+close | `(trigger: TriggerSource)` | `1.0.1`。关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/date-time-picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: DateValue)` | `1.0.1`。确认按钮点击时触发
+pick | `(value: DateValue)` | 选中值发生变化时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.d.ts
new file mode 100644
index 0000000..7ee1e1d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.d.ts
@@ -0,0 +1,84 @@
+import type { Dayjs } from 'dayjs';
+import { SuperComponent } from '../common/src/index';
+declare enum ModeItem {
+ YEAR = "year",
+ MONTH = "month",
+ DATE = "date",
+ HOUR = "hour",
+ MINUTE = "minute",
+ SECOND = "second"
+}
+interface ColumnItemValue {
+ value: string | number;
+ label: string | number;
+}
+export default class DateTimePicker extends SuperComponent {
+ properties: import("./type").TdDateTimePickerProps;
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ observers: {
+ 'start, end, value': () => void;
+ mode(m: any): void;
+ };
+ date: any;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ columns: any[];
+ columnsValue: any[];
+ fullModes: any[];
+ locale: {
+ year: string;
+ month: string;
+ date: string;
+ hour: string;
+ minute: string;
+ second: string;
+ am: string;
+ pm: string;
+ confirm: string;
+ cancel: string;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ methods: {
+ updateColumns(): void;
+ getParseDate(): Dayjs;
+ getMinDate(): Dayjs;
+ getMaxDate(): Dayjs;
+ getDateRect(type?: string): any[];
+ getDate(): Dayjs;
+ clipDate(date: Dayjs): Dayjs;
+ setYear(date: Dayjs, year: number): Dayjs;
+ setMonth(date: Dayjs, month: number): Dayjs;
+ getColumnOptions(): any[];
+ getOptionByType(type: any): ColumnItemValue[];
+ getYearOptions(dateParams: any): ColumnItemValue[];
+ getOptionEdge(minOrMax: 'min' | 'max', type: any): any;
+ getMonthOptions(): ColumnItemValue[];
+ getDayOptions(): ColumnItemValue[];
+ getHourOptions(): ColumnItemValue[];
+ getMinuteOptions(): ColumnItemValue[];
+ getValueCols(this: DateTimePicker): {
+ columns: any;
+ columnsValue: any;
+ };
+ getColumnsValue(): string[];
+ getNewDate(value: number, type: ModeItem): Dayjs;
+ onColumnChange(e: WechatMiniprogram.CustomEvent): void;
+ onConfirm(): void;
+ onCancel(): void;
+ onVisibleChange(e: any): void;
+ onClose(e: any): void;
+ resetColumns(): void;
+ };
+ getFullModeArray(mode: any): any;
+ getFullModeByModeString(modeString: any, matchModes: any): any;
+ isTimeMode(): boolean;
+}
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.js b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.js
new file mode 100644
index 0000000..24b7a63
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.js
@@ -0,0 +1,348 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import dayjs from 'dayjs';
+import config from '../common/config';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import defaultLocale from './locale/zh';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-date-time-picker`;
+var ModeItem;
+(function (ModeItem) {
+ ModeItem["YEAR"] = "year";
+ ModeItem["MONTH"] = "month";
+ ModeItem["DATE"] = "date";
+ ModeItem["HOUR"] = "hour";
+ ModeItem["MINUTE"] = "minute";
+ ModeItem["SECOND"] = "second";
+})(ModeItem || (ModeItem = {}));
+const DATE_MODES = ['year', 'month', 'date'];
+const TIME_MODES = ['hour', 'minute', 'second'];
+const FULL_MODES = [...DATE_MODES, ...TIME_MODES];
+const DEFAULT_MIN_DATE = dayjs('2000-01-01 00:00:00');
+const DEFAULT_MAX_DATE = dayjs('2030-12-31 23:59:59');
+let DateTimePicker = class DateTimePicker extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-confirm`, `${prefix}-class-cancel`, `${prefix}-class-title`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.observers = {
+ 'start, end, value': function () {
+ this.updateColumns();
+ },
+ mode(m) {
+ const fullModes = this.getFullModeArray(m);
+ this.setData({
+ fullModes,
+ });
+ this.updateColumns();
+ },
+ };
+ this.date = null;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ columns: [],
+ columnsValue: [],
+ fullModes: [],
+ locale: defaultLocale,
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.methods = {
+ updateColumns() {
+ this.date = this.getParseDate();
+ const { columns, columnsValue } = this.getValueCols();
+ this.setData({
+ columns,
+ columnsValue,
+ });
+ },
+ getParseDate() {
+ const { value, defaultValue } = this.properties;
+ const minDate = this.getMinDate();
+ const isTimeMode = this.isTimeMode();
+ let currentValue = value || defaultValue;
+ if (isTimeMode) {
+ const dateStr = dayjs(minDate).format('YYYY-MM-DD');
+ currentValue = dayjs(`${dateStr} ${currentValue}`);
+ }
+ const parseDate = dayjs(currentValue || minDate);
+ const isDateValid = parseDate.isValid();
+ return isDateValid ? parseDate : minDate;
+ },
+ getMinDate() {
+ const { start } = this.properties;
+ return start ? dayjs(start) : DEFAULT_MIN_DATE;
+ },
+ getMaxDate() {
+ const { end } = this.properties;
+ return end ? dayjs(end) : DEFAULT_MAX_DATE;
+ },
+ getDateRect(type = 'default') {
+ const map = {
+ min: 'getMinDate',
+ max: 'getMaxDate',
+ default: 'getDate',
+ };
+ const date = this[map[type]]();
+ const keys = ['year', 'month', 'date', 'hour', 'minute', 'second'];
+ return keys.map((k) => { var _a; return (_a = date[k]) === null || _a === void 0 ? void 0 : _a.call(date); });
+ },
+ getDate() {
+ return this.clipDate((this === null || this === void 0 ? void 0 : this.date) || DEFAULT_MIN_DATE);
+ },
+ clipDate(date) {
+ const minDate = this.getMinDate();
+ const maxDate = this.getMaxDate();
+ return dayjs(Math.min(Math.max(minDate.valueOf(), date.valueOf()), maxDate.valueOf()));
+ },
+ setYear(date, year) {
+ const beforeMonthDays = date.date();
+ const afterMonthDays = date.year(year).daysInMonth();
+ const tempDate = date.date(Math.min(beforeMonthDays.valueOf(), afterMonthDays.valueOf()));
+ return tempDate.year(year);
+ },
+ setMonth(date, month) {
+ const beforeMonthDays = date.date();
+ const afterMonthDays = date.month(month).daysInMonth();
+ const tempDate = date.date(Math.min(beforeMonthDays.valueOf(), afterMonthDays.valueOf()));
+ return tempDate.month(month);
+ },
+ getColumnOptions() {
+ const { fullModes } = this.data;
+ const columnOptions = [];
+ fullModes === null || fullModes === void 0 ? void 0 : fullModes.forEach((mode) => {
+ const columnOption = this.getOptionByType(mode);
+ columnOptions.push(columnOption);
+ });
+ return columnOptions;
+ },
+ getOptionByType(type) {
+ const { locale } = this.data;
+ const options = [];
+ const minEdge = this.getOptionEdge('min', type);
+ const maxEdge = this.getOptionEdge('max', type);
+ for (let i = minEdge; i <= maxEdge; i += 1) {
+ const label = type === 'month' ? i + 1 : i;
+ options.push({
+ value: `${i}`,
+ label: `${label + locale[type]}`,
+ });
+ }
+ return options;
+ },
+ getYearOptions(dateParams) {
+ const { locale } = this.data;
+ const { minDateYear, maxDateYear } = dateParams;
+ const years = [];
+ for (let i = minDateYear; i <= maxDateYear; i += 1) {
+ years.push({
+ value: `${i}`,
+ label: `${i + locale.year}`,
+ });
+ }
+ return years;
+ },
+ getOptionEdge(minOrMax, type) {
+ const selDateArray = this.getDateRect();
+ const compareArray = this.getDateRect(minOrMax);
+ const edge = {
+ month: [0, 11],
+ date: [1, this.getDate().daysInMonth()],
+ hour: [0, 23],
+ minute: [0, 59],
+ second: [0, 59],
+ };
+ const types = ['year', 'month', 'date', 'hour', 'minute', 'second'];
+ for (let i = 0, size = selDateArray.length; i < size; i += 1) {
+ if (types[i] === type)
+ return compareArray[i];
+ if (compareArray[i] !== selDateArray[i])
+ return edge[type][minOrMax === 'min' ? 0 : 1];
+ }
+ return edge[type][minOrMax === 'min' ? 0 : 1];
+ },
+ getMonthOptions() {
+ const { locale } = this.data;
+ const months = [];
+ const minMonth = this.getOptionEdge('min', 'month');
+ const maxMonth = this.getOptionEdge('max', 'month');
+ for (let i = minMonth; i <= maxMonth; i += 1) {
+ months.push({
+ value: `${i}`,
+ label: `${i + 1 + locale.month}`,
+ });
+ }
+ return months;
+ },
+ getDayOptions() {
+ const { locale } = this.data;
+ const days = [];
+ const minDay = this.getOptionEdge('min', 'date');
+ const maxDay = this.getOptionEdge('max', 'date');
+ for (let i = minDay; i <= maxDay; i += 1) {
+ days.push({
+ value: `${i}`,
+ label: `${i + locale.day}`,
+ });
+ }
+ return days;
+ },
+ getHourOptions() {
+ const { locale } = this.data;
+ const hours = [];
+ const minHour = this.getOptionEdge('min', 'hour');
+ const maxHour = this.getOptionEdge('max', 'hour');
+ for (let i = minHour; i <= maxHour; i += 1) {
+ hours.push({
+ value: `${i}`,
+ label: `${i + locale.hour}`,
+ });
+ }
+ return hours;
+ },
+ getMinuteOptions() {
+ const { locale } = this.data;
+ const minutes = [];
+ const minMinute = this.getOptionEdge('min', 'minute');
+ const maxMinute = this.getOptionEdge('max', 'minute');
+ for (let i = minMinute; i <= maxMinute; i += 1) {
+ minutes.push({
+ value: `${i}`,
+ label: `${i + locale.minute}`,
+ });
+ }
+ return minutes;
+ },
+ getValueCols() {
+ return {
+ columns: this.getColumnOptions(),
+ columnsValue: this.getColumnsValue(),
+ };
+ },
+ getColumnsValue() {
+ const { fullModes } = this.data;
+ const date = this.getDate();
+ const columnsValue = [];
+ fullModes === null || fullModes === void 0 ? void 0 : fullModes.forEach((mode) => {
+ columnsValue.push(`${date[mode]()}`);
+ });
+ return columnsValue;
+ },
+ getNewDate(value, type) {
+ let newValue = this.getDate();
+ switch (type) {
+ case ModeItem.YEAR:
+ newValue = this.setYear(newValue, value);
+ break;
+ case ModeItem.MONTH:
+ newValue = this.setMonth(newValue, value);
+ break;
+ case ModeItem.DATE:
+ newValue = newValue.date(value);
+ break;
+ case ModeItem.HOUR:
+ newValue = newValue.hour(value);
+ break;
+ case ModeItem.MINUTE:
+ newValue = newValue.minute(value);
+ break;
+ case ModeItem.SECOND:
+ newValue = newValue.second(value);
+ break;
+ default:
+ break;
+ }
+ return this.clipDate(newValue);
+ },
+ onColumnChange(e) {
+ const { value, column } = e === null || e === void 0 ? void 0 : e.detail;
+ const { fullModes, format } = this.data;
+ const columnValue = value === null || value === void 0 ? void 0 : value[column];
+ const columnType = fullModes === null || fullModes === void 0 ? void 0 : fullModes[column];
+ const newValue = this.getNewDate(parseInt(columnValue, 10), columnType);
+ this.date = newValue;
+ const { columns, columnsValue } = this.getValueCols();
+ this.setData({
+ columns,
+ columnsValue,
+ });
+ const date = this.getDate();
+ const pickValue = format ? date.format(format) : date.valueOf();
+ this.triggerEvent('pick', { value: pickValue });
+ },
+ onConfirm() {
+ const { format } = this.properties;
+ const date = this.getDate();
+ const value = format ? date.format(format) : date.valueOf();
+ this._trigger('change', { value });
+ this.triggerEvent('confirm', { value });
+ this.resetColumns();
+ },
+ onCancel() {
+ this.resetColumns();
+ this.triggerEvent('cancel');
+ },
+ onVisibleChange(e) {
+ if (!e.detail.visible) {
+ this.resetColumns();
+ }
+ },
+ onClose(e) {
+ const { trigger } = e.detail;
+ this.triggerEvent('close', { trigger });
+ },
+ resetColumns() {
+ const parseDate = this.getParseDate();
+ this.date = parseDate;
+ const { columns, columnsValue } = this.getValueCols();
+ this.setData({
+ columns,
+ columnsValue,
+ });
+ },
+ };
+ }
+ getFullModeArray(mode) {
+ if (typeof mode === 'string' || mode instanceof String) {
+ return this.getFullModeByModeString(mode, FULL_MODES);
+ }
+ if (Array.isArray(mode)) {
+ if ((mode === null || mode === void 0 ? void 0 : mode.length) === 1) {
+ return this.getFullModeByModeString(mode[0], FULL_MODES);
+ }
+ if ((mode === null || mode === void 0 ? void 0 : mode.length) === 2) {
+ const dateModes = this.getFullModeByModeString(mode[0], DATE_MODES);
+ const timeModes = this.getFullModeByModeString(mode[1], TIME_MODES);
+ return [...dateModes, ...timeModes];
+ }
+ }
+ }
+ getFullModeByModeString(modeString, matchModes) {
+ if (!modeString) {
+ return [];
+ }
+ const endIndex = matchModes === null || matchModes === void 0 ? void 0 : matchModes.findIndex((mode) => modeString === mode);
+ return matchModes === null || matchModes === void 0 ? void 0 : matchModes.slice(0, endIndex + 1);
+ }
+ isTimeMode() {
+ const { fullModes } = this.data;
+ return fullModes[0] === ModeItem.HOUR;
+ }
+};
+DateTimePicker = __decorate([
+ wxComponent()
+], DateTimePicker);
+export default DateTimePicker;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.json b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.json
new file mode 100644
index 0000000..460dcd6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-picker": "../picker/picker",
+ "t-picker-item": "../picker-item/picker-item"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.wxml
new file mode 100644
index 0000000..c8a4ad5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.wxml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.wxss
new file mode 100644
index 0000000..6c89e6e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/date-time-picker.wxss
@@ -0,0 +1,31 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-date-time-picker__item--roomly {
+ width: var(--td-data-time-picker-year-width, 128rpx);
+ flex: 0 0 var(--td-data-time-picker-year-width, 128rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/en.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/en.d.ts
new file mode 100644
index 0000000..9665c2e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/en.d.ts
@@ -0,0 +1,13 @@
+declare const _default: {
+ year: string;
+ month: string;
+ date: string;
+ hour: string;
+ minute: string;
+ second: string;
+ am: string;
+ pm: string;
+ confirm: string;
+ cancel: string;
+};
+export default _default;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/en.js b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/en.js
new file mode 100644
index 0000000..fc53887
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/en.js
@@ -0,0 +1,12 @@
+export default {
+ year: '',
+ month: '',
+ date: '',
+ hour: '',
+ minute: '',
+ second: '',
+ am: 'AM',
+ pm: 'PM',
+ confirm: 'confirm',
+ cancel: 'cancel',
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/zh.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/zh.d.ts
new file mode 100644
index 0000000..9665c2e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/zh.d.ts
@@ -0,0 +1,13 @@
+declare const _default: {
+ year: string;
+ month: string;
+ date: string;
+ hour: string;
+ minute: string;
+ second: string;
+ am: string;
+ pm: string;
+ confirm: string;
+ cancel: string;
+};
+export default _default;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/zh.js b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/zh.js
new file mode 100644
index 0000000..8c808d2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/locale/zh.js
@@ -0,0 +1,12 @@
+export default {
+ year: '年',
+ month: '月',
+ date: '日',
+ hour: '时',
+ minute: '分',
+ second: '秒',
+ am: '上午',
+ pm: '下午',
+ confirm: '确定',
+ cancel: '取消',
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/props.d.ts
new file mode 100644
index 0000000..8837a6a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDateTimePickerProps } from './type';
+declare const props: TdDateTimePickerProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/props.js
new file mode 100644
index 0000000..d911d56
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/props.js
@@ -0,0 +1,51 @@
+const props = {
+ cancelBtn: {
+ type: String,
+ value: '',
+ },
+ confirmBtn: {
+ type: String,
+ value: '',
+ },
+ end: {
+ type: null,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ format: {
+ type: String,
+ value: '',
+ },
+ header: {
+ type: Boolean,
+ value: true,
+ },
+ mode: {
+ type: null,
+ value: 'date',
+ },
+ showWeek: {
+ type: Boolean,
+ value: false,
+ },
+ start: {
+ type: null,
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/type.d.ts
new file mode 100644
index 0000000..ac95634
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/type.d.ts
@@ -0,0 +1,57 @@
+export interface TdDateTimePickerProps {
+ cancelBtn?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ confirmBtn?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ end?: {
+ type: null;
+ value?: string | number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-confirm', 't-class-cancel', 't-class-title'];
+ };
+ format?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ header?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ mode?: {
+ type: null;
+ value?: DateTimePickerMode;
+ };
+ showWeek?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ start?: {
+ type: null;
+ value?: string | number;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: DateValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: DateValue;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export declare type DateTimePickerMode = TimeModeValues | Array;
+export declare type TimeModeValues = 'year' | 'month' | 'date' | 'hour' | 'minute' | 'second';
+export declare type DateValue = string | number;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/date-time-picker/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/README.en-US.md
new file mode 100644
index 0000000..2afa1bf
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/README.en-US.md
@@ -0,0 +1,30 @@
+:: BASE_DOC ::
+
+## API
+### Dialog Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+actions | Array / Slot | - | Typescript:`Array`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+button-layout | String | horizontal | options:horizontal/vertical | N
+cancel-btn | String / Object / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+close-btn | Boolean / Object | false | `0.31.0` | N
+close-on-overlay-click | Boolean | undefined | \- | N
+confirm-btn | String / Object / Slot | - | \- | N
+content | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-confirm', 't-class-cancel']` | N
+overlay-props | Object | {} | \- | N
+prevent-scroll-through | Boolean | true | \- | N
+show-overlay | Boolean | true | \- | N
+title | String / Slot | - | \- | N
+visible | Boolean | - | \- | N
+z-index | Number | 11500 | \- | N
+
+### Dialog Events
+
+name | params | description
+-- | -- | --
+cancel | - | \-
+close | `(trigger: DialogEventSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts)。
`type DialogEventSource = 'cancel' \| 'overlay' \| 'close-btn'`
+confirm | - | \-
+overlay-click | - | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/README.md
new file mode 100644
index 0000000..f0192d4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/README.md
@@ -0,0 +1,84 @@
+---
+title: Dialog 对话框
+description: 用于显示重要提示或请求用户进行重要操作,一种打断当前操作的模态视图。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-dialog": "tdesign-miniprogram/dialog/dialog"
+}
+```
+
+## 代码演示
+
+按钮的样式,默认使用 `variant = text`,如果任意按钮改变了 `variant`,那么全部按钮都改变成这个。
+
+### 组件类型
+#### 反馈类对话框
+
+{{ base }}
+
+> 使用这种方式,对话框的 `visible` 是受控的,需要手动设置额 `visible` 为 `false` 才会关闭对话框。
+
+#### 确认类对话框
+
+{{ confirm }}
+
+#### 输入类对话框
+
+{{ with-input }}
+
+#### 带图片对话框
+
+{{ with-image }}
+
+### 组件状态
+
+{{ status }}
+
+### 组件用法
+#### 命令调用
+
+{{ command }}
+
+#### 开发能力按钮
+
+当传入的按钮类型为对象时,整个对象都将透传至 `t-button`,因此按钮可以直接使用开放能力
+
+{{ button }}
+
+## API
+### Dialog Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+actions | Array / Slot | - | 操作栏。TS 类型:`Array`,[Button API Documents](./button?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+button-layout | String | horizontal | 多按钮排列方式。可选项:horizontal/vertical | N
+cancel-btn | String / Object / Slot | - | 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 Slot 自定义按钮时,需自行控制取消事件。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts) | N
+close-btn | Boolean / Object | false | `0.31.0`。是否展示关闭按钮,值为 `true` 显示默认关闭按钮;值为 `false` 则不显示关闭按钮;使用 Object 时透传至图标组件 | N
+close-on-overlay-click | Boolean | undefined | 点击蒙层时是否触发关闭事件 | N
+confirm-btn | String / Object / Slot | - | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 Slot 自定义按钮时,需自行控制确认事件 | N
+content | String / Slot | - | 内容 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、组件内容部分、确认按钮、取消按钮 等元素类名。`['t-class', 't-class-content', 't-class-confirm', 't-class-cancel']` | N
+overlay-props | Object | {} | 透传至 Overlay 组件 | N
+prevent-scroll-through | Boolean | true | 防止滚动穿透 | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+title | String / Slot | - | 标题 | N
+visible | Boolean | - | 控制对话框是否显示 | N
+z-index | Number | 11500 | 对话框层级,Web 侧样式默认为 2500,移动端样式默认 2500,小程序样式默认为 11500 | N
+
+### Dialog Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | - | 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件
+close | `(trigger: DialogEventSource)` | 关闭事件,点击 取消按钮 或 点击蒙层 时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dialog/type.ts)。
`type DialogEventSource = 'cancel' \| 'overlay' \| 'close-btn'`
+confirm | - | 如果“确认”按钮存在,则点击“确认”按钮时触发
+overlay-click | - | 如果蒙层存在,点击蒙层时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.d.ts
new file mode 100644
index 0000000..b2771b4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent } from '../common/src/index';
+export default class Dialog extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ addGlobalClass: boolean;
+ };
+ externalClasses: string[];
+ properties: import("./type").TdDialogProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ buttonVariant: string;
+ };
+ observers: {
+ 'confirmBtn, cancelBtn'(confirm: any, cancel: any): void;
+ };
+ methods: {
+ onTplButtonTap(e: any): void;
+ onConfirm(): void;
+ onCancel(): void;
+ onClose(): void;
+ close(): void;
+ overlayClick(): void;
+ onActionTap(index: number): void;
+ openValueCBHandle(e: any): void;
+ openValueErrCBHandle(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.js
new file mode 100644
index 0000000..367ceb5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.js
@@ -0,0 +1,143 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { isObject, toCamel } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-dialog`;
+let Dialog = class Dialog extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ addGlobalClass: true,
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-confirm`,
+ `${prefix}-class-cancel`,
+ `${prefix}-class-action`,
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ buttonVariant: 'text',
+ };
+ this.observers = {
+ 'confirmBtn, cancelBtn'(confirm, cancel) {
+ const { prefix, classPrefix, buttonLayout } = this.data;
+ const rect = { buttonVariant: 'text' };
+ const useBaseVariant = [confirm, cancel].some((item) => isObject(item) && item.variant && item.variant !== 'text');
+ const buttonMap = { confirm, cancel };
+ const cls = [`${classPrefix}__button`];
+ const externalCls = [];
+ if (useBaseVariant) {
+ rect.buttonVariant = 'base';
+ cls.push(`${classPrefix}__button--${buttonLayout}`);
+ }
+ else {
+ cls.push(`${classPrefix}__button--text`);
+ externalCls.push(`${classPrefix}-button`);
+ }
+ Object.keys(buttonMap).forEach((key) => {
+ const btn = buttonMap[key];
+ const base = {
+ block: true,
+ class: [...cls, `${classPrefix}__button--${key}`],
+ externalClass: [...externalCls, `${prefix}-class-${key}`],
+ variant: rect.buttonVariant,
+ };
+ if (key === 'cancel' && rect.buttonVariant === 'base') {
+ base.theme = 'light';
+ }
+ if (typeof btn === 'string') {
+ rect[`_${key}`] = Object.assign(Object.assign({}, base), { content: btn });
+ }
+ else if (btn && typeof btn === 'object') {
+ rect[`_${key}`] = Object.assign(Object.assign({}, base), btn);
+ }
+ });
+ this.setData(Object.assign({}, rect));
+ },
+ };
+ this.methods = {
+ onTplButtonTap(e) {
+ var _a, _b;
+ const evtType = e.type;
+ const { type, extra } = e.target.dataset;
+ const button = this.data[`_${type}`];
+ const cbName = `bind${evtType}`;
+ if (type === 'action') {
+ this.onActionTap(extra);
+ return;
+ }
+ if (typeof button[cbName] === 'function') {
+ const closeFlag = button[cbName](e);
+ if (closeFlag) {
+ this.close();
+ }
+ }
+ const hasOpenType = 'openType' in button;
+ if (!hasOpenType && ['confirm', 'cancel'].includes(type)) {
+ (_a = this[toCamel(`on-${type}`)]) === null || _a === void 0 ? void 0 : _a.call(this, type);
+ }
+ if (evtType !== 'tap') {
+ const success = ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.errMsg.indexOf('ok')) > -1;
+ this.triggerEvent(success ? 'open-type-event' : 'open-type-error-event', e.detail);
+ }
+ },
+ onConfirm() {
+ this.triggerEvent('confirm');
+ if (this._onConfirm) {
+ this._onConfirm();
+ this.close();
+ }
+ },
+ onCancel() {
+ this.triggerEvent('close', { trigger: 'cancel' });
+ this.triggerEvent('cancel');
+ if (this._onCancel) {
+ this._onCancel();
+ this.close();
+ }
+ },
+ onClose() {
+ this.triggerEvent('close', { trigger: 'close-btn' });
+ this.close();
+ },
+ close() {
+ this.setData({ visible: false });
+ },
+ overlayClick() {
+ if (this.properties.closeOnOverlayClick) {
+ this.triggerEvent('close', { trigger: 'overlay' });
+ }
+ this.triggerEvent('overlay-click');
+ },
+ onActionTap(index) {
+ this.triggerEvent('action', { index });
+ if (this._onAction) {
+ this._onAction({ index });
+ this.close();
+ }
+ },
+ openValueCBHandle(e) {
+ this.triggerEvent('open-type-event', e.detail);
+ },
+ openValueErrCBHandle(e) {
+ this.triggerEvent('open-type-error-event', e.detail);
+ },
+ };
+ }
+};
+Dialog = __decorate([
+ wxComponent()
+], Dialog);
+export default Dialog;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.json b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.json
new file mode 100644
index 0000000..5cfe889
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup",
+ "t-icon": "../icon/icon",
+ "t-button": "../button/button"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxml
new file mode 100644
index 0000000..5609dde
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxs
new file mode 100644
index 0000000..8f70e47
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxs
@@ -0,0 +1,13 @@
+module.exports.getTypeof = function (obj) {
+ return typeof obj;
+};
+
+module.exports.getActionClass = function (prefix, buttonLayout) {
+ var cls = [prefix + '__button', prefix + '__button--action'];
+
+ if (buttonLayout) {
+ cls.push(prefix + '__button--' + buttonLayout);
+ }
+
+ return cls.join(' ');
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxss
new file mode 100644
index 0000000..b38380d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/dialog.wxss
@@ -0,0 +1,121 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-dialog {
+ overflow: hidden;
+ width: var(--td-dialog-width, 622rpx);
+ border-radius: var(--td-radius-default, 12rpx);
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+}
+.t-dialog__close-btn {
+ position: absolute;
+ top: 16rpx;
+ right: 16rpx;
+ color: var(--td-dialog-close-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-dialog__content {
+ padding: var(--td-spacer-4, 64rpx) var(--td-spacer-3, 48rpx) 0;
+ max-height: var(--td-dialog-body-max-height, 912rpx);
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-dialog__header {
+ text-align: center;
+ font-weight: bold;
+ font-size: var(--td-dialog-title-font-size, 36rpx);
+ line-height: var(--td-dialog-title-line-height, 52rpx);
+ color: var(--td-dialog-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-dialog__header + .t-dialog__body {
+ margin-top: 16rpx;
+}
+.t-dialog__body {
+ overflow-y: scroll;
+ text-align: center;
+ -webkit-overflow-scrolling: touch;
+ font-size: var(--td-dialog-content-font-size, 32rpx);
+ color: var(--td-dialog-content-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ line-height: var(--td-dialog-content-line-height, 48rpx);
+}
+.t-dialog__body-text {
+ word-wrap: break-word;
+}
+.t-dialog__body--left {
+ text-align: left;
+}
+.t-dialog__body--right {
+ text-align: right;
+}
+.t-dialog__footer {
+ display: flex;
+ padding: 48rpx;
+}
+.t-dialog__footer--column {
+ flex-flow: column-reverse;
+}
+.t-dialog__footer--column .t-dialog__button {
+ width: 100%;
+}
+.t-dialog__footer--full {
+ padding: 64rpx 0 0;
+}
+.t-dialog__button {
+ position: relative;
+ flex: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.t-dialog__button--horizontal + .t-dialog__button--horizontal {
+ margin-left: 24rpx;
+}
+.t-dialog__button--vertical + .t-dialog__button--vertical {
+ margin-bottom: 24rpx;
+}
+.t-dialog__button--text {
+ flex: 1;
+ --td-button-border-radius: 0;
+ --td-button-medium-height: 112rpx;
+ border-radius: 0;
+}
+.t-dialog__button--text:before {
+ content: ' ';
+ position: absolute;
+ box-sizing: border-box;
+ top: 0;
+ left: 0;
+ border-top: 1px solid var(--td-border-color, var(--td-gray-color-3, #e7e7e7));
+ border-left: 1px solid var(--td-border-color, var(--td-gray-color-3, #e7e7e7));
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ width: 200%;
+ height: 200%;
+ border-radius: 0;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/index.d.ts
new file mode 100644
index 0000000..f0bacf1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/index.d.ts
@@ -0,0 +1,41 @@
+///
+///
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+interface DialogAlertOptionsType {
+ context?: Context;
+ selector?: string;
+ title?: string;
+ content: string;
+ zIndex?: number;
+ asyncClose?: boolean;
+ confirmButtonText?: string;
+ textAlign?: string;
+ cancelBtn?: string | object;
+ confirmBtn?: string | object;
+}
+interface DialogConfirmOptionsType extends DialogAlertOptionsType {
+ cancelButtonText?: string;
+}
+interface Action {
+ content: string;
+ theme?: 'default' | 'primary' | 'danger' | 'light';
+}
+interface DialogActionOptionsType {
+ context?: Context;
+ selector?: string;
+ title?: string;
+ content: string;
+ zIndex?: number;
+ asyncClose?: boolean;
+ actions?: Action[];
+ buttonLayout?: 'vertical' | 'horizontal';
+}
+declare const _default: {
+ alert(options: DialogAlertOptionsType): Promise;
+ confirm(options: DialogConfirmOptionsType): Promise;
+ close(options: DialogConfirmOptionsType): Promise;
+ action(options: DialogActionOptionsType): Promise<{
+ index: number;
+ }>;
+};
+export default _default;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/index.js
new file mode 100644
index 0000000..36ccf63
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/index.js
@@ -0,0 +1,72 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import props from './props';
+import { getInstance } from '../common/utils';
+const defaultOptions = {
+ actions: false,
+ buttonLayout: props.buttonLayout.value,
+ cancelBtn: props.cancelBtn.value,
+ closeOnOverlayClick: props.closeOnOverlayClick.value,
+ confirmBtn: props.confirmBtn.value,
+ content: '',
+ preventScrollThrough: props.preventScrollThrough.value,
+ showOverlay: props.showOverlay.value,
+ title: '',
+ visible: props.visible.value,
+};
+export default {
+ alert(options) {
+ const _a = Object.assign(Object.assign({}, defaultOptions), options), { context, selector = '#t-dialog' } = _a, otherOptions = __rest(_a, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (!instance)
+ return Promise.reject();
+ return new Promise((resolve) => {
+ instance.setData(Object.assign(Object.assign({ cancelBtn: '' }, otherOptions), { visible: true }));
+ instance._onConfirm = resolve;
+ });
+ },
+ confirm(options) {
+ const _a = Object.assign(Object.assign({}, defaultOptions), options), { context, selector = '#t-dialog' } = _a, otherOptions = __rest(_a, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (!instance)
+ return Promise.reject();
+ return new Promise((resolve, reject) => {
+ instance.setData(Object.assign(Object.assign({}, otherOptions), { visible: true }));
+ instance._onConfirm = resolve;
+ instance._onCancel = reject;
+ });
+ },
+ close(options) {
+ const { context, selector = '#t-dialog' } = Object.assign({}, options);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.close();
+ return Promise.resolve();
+ }
+ return Promise.reject();
+ },
+ action(options) {
+ const _a = Object.assign(Object.assign({}, defaultOptions), options), { context, selector = '#t-dialog', actions } = _a, otherOptions = __rest(_a, ["context", "selector", "actions"]);
+ const instance = getInstance(context, selector);
+ if (!instance)
+ return Promise.reject();
+ const { buttonLayout = 'vertical' } = options;
+ const maxLengthSuggestion = buttonLayout === 'vertical' ? 7 : 3;
+ if (!actions || (typeof actions === 'object' && (actions.length === 0 || actions.length > maxLengthSuggestion))) {
+ console.warn(`action 数量建议控制在1至${maxLengthSuggestion}个`);
+ }
+ return new Promise((resolve) => {
+ instance.setData(Object.assign(Object.assign({ actions }, otherOptions), { buttonLayout, visible: true }));
+ instance._onAction = resolve;
+ });
+ },
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/props.d.ts
new file mode 100644
index 0000000..15d9d87
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDialogProps } from './type';
+declare const props: TdDialogProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/props.js
new file mode 100644
index 0000000..656bbad
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/props.js
@@ -0,0 +1,52 @@
+const props = {
+ actions: {
+ type: Array,
+ },
+ buttonLayout: {
+ type: String,
+ value: 'horizontal',
+ },
+ cancelBtn: {
+ type: null,
+ },
+ closeBtn: {
+ type: null,
+ value: false,
+ },
+ closeOnOverlayClick: {
+ type: Boolean,
+ value: undefined,
+ },
+ confirmBtn: {
+ type: null,
+ },
+ content: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ overlayProps: {
+ type: Object,
+ value: {},
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: true,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ title: {
+ type: String,
+ },
+ visible: {
+ type: Boolean,
+ },
+ zIndex: {
+ type: Number,
+ value: 11500,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/type.d.ts
new file mode 100644
index 0000000..cb8107f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/type.d.ts
@@ -0,0 +1,63 @@
+import { ButtonProps } from '../button/index';
+export interface TdDialogProps {
+ actions?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ buttonLayout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ cancelBtn?: {
+ type: null;
+ value?: string | ButtonProps | null;
+ };
+ closeBtn?: {
+ type: null;
+ value?: boolean | object;
+ };
+ closeOnOverlayClick?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmBtn?: {
+ type: null;
+ value?: string | ButtonProps | null;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-confirm', 't-class-cancel'];
+ };
+ overlayProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ preventScrollThrough?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dialog/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/README.en-US.md
new file mode 100644
index 0000000..51ac50e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/README.en-US.md
@@ -0,0 +1,12 @@
+:: BASE_DOC ::
+
+## API
+### Divider Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | center | options:left/right/center | N
+content | String / Slot | - | \- | N
+dashed | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-line', 't-class-content']` | N
+layout | String | horizontal | options:horizontal/vertical | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/README.md
new file mode 100644
index 0000000..a67dece
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/README.md
@@ -0,0 +1,40 @@
+---
+title: Divider 分割线
+description: 用于分割、组织、细化有一定逻辑的组织元素内容和页面结构。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-divider": "tdesign-miniprogram/divider/divider"
+}
+```
+
+## 代码演示
+
+### 基础分割符
+
+分割符主要是由直线和文字组成,通过`slot`传入分割线文案或者其他自定义内容,通过`layout`控制分隔符是垂直还是横向
+
+{{ base }}
+
+### 虚线样式
+
+{{ theme }}
+
+## API
+### Divider Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | center | 文本位置(仅在水平分割线有效)。可选项:left/right/center | N
+content | String / Slot | - | 子元素 | N
+dashed | Boolean | false | 是否虚线(仅在水平分割线有效) | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、分隔线类名 等。`['t-class', 't-class-line', 't-class-content']` | N
+layout | String | horizontal | 分隔线类型有两种:水平和垂直。可选项:horizontal/vertical | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.d.ts
new file mode 100644
index 0000000..d7b8209
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.d.ts
@@ -0,0 +1,19 @@
+import { SuperComponent } from '../common/src/index';
+export default class Divider extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ addGlobalClass: boolean;
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdDividerProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ lineColor(): void;
+ };
+ methods: {
+ setStyle(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.js b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.js
new file mode 100644
index 0000000..bedaafb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.js
@@ -0,0 +1,44 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-divider`;
+let Divider = class Divider extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`];
+ this.options = {
+ addGlobalClass: true,
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ lineColor() {
+ this.setStyle();
+ },
+ };
+ this.methods = {
+ setStyle() {
+ const { lineColor } = this.properties;
+ const dividerStyle = `${lineColor ? `border-color: ${lineColor};` : ''}`;
+ this.setData({
+ dividerStyle,
+ });
+ },
+ };
+ }
+};
+Divider = __decorate([
+ wxComponent()
+], Divider);
+export default Divider;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.json b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.wxml
new file mode 100644
index 0000000..5f1fa88
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ {{content}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.wxss
new file mode 100644
index 0000000..abfddca
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/divider.wxss
@@ -0,0 +1,83 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-divider {
+ display: flex;
+ color: var(--td-divider-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-divider-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-style: solid;
+ border-width: 0;
+}
+.t-divider::before,
+.t-divider::after {
+ content: '';
+ display: block;
+ flex: 1;
+ box-sizing: border-box;
+ border: inherit;
+ border-color: inherit;
+ border-style: inherit;
+}
+.t-divider--horizontal {
+ align-items: center;
+ margin-top: 20rpx;
+ margin-bottom: 20rpx;
+}
+.t-divider--horizontal::before,
+.t-divider--horizontal::after {
+ border-top-width: 1px;
+ transform: scaleY(0.5);
+}
+.t-divider--horizontal .t-divider__content:not(:empty) {
+ margin: 0 24rpx;
+}
+.t-divider--vertical {
+ flex-direction: column;
+ height: 1em;
+ margin: 0 16rpx;
+}
+.t-divider--vertical::before,
+.t-divider--vertical::after {
+ border-left-width: 1px;
+ transform: scaleX(0.5);
+}
+.t-divider--vertical-center {
+ align-items: center;
+ height: 100%;
+}
+.t-divider--dashed {
+ border-style: dashed;
+}
+.t-divider__content {
+ font-size: var(--td-divider-content-font-size, 24rpx);
+ line-height: var(--td-divider-content-line-height, 40rpx);
+ color: var(--td-divider-content-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-divider--left::before,
+.t-divider--right::after {
+ max-width: 60rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/props.d.ts
new file mode 100644
index 0000000..806aab2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDividerProps } from './type';
+declare const props: TdDividerProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/props.js
new file mode 100644
index 0000000..e8d8a73
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/props.js
@@ -0,0 +1,25 @@
+const props = {
+ align: {
+ type: String,
+ value: 'center',
+ },
+ content: {
+ type: String,
+ },
+ style: {
+ type: String,
+ value: '',
+ },
+ dashed: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/type.d.ts
new file mode 100644
index 0000000..faed054
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdDividerProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'left' | 'right' | 'center';
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ dashed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-line', 't-class-content'];
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/divider/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/divider/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/README.en-US.md
new file mode 100644
index 0000000..555fff0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### Drawer Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-on-overlay-click | Boolean | undefined | \- | N
+destroy-on-close | Boolean | false | \- | N
+footer | Slot | - | `0.29.0` | N
+items | Array | - | Typescript:`DrawerItem[] ` `interface DrawerItem { title: string; icon: string; }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts) | N
+placement | String | right | options:left/right | N
+show-overlay | Boolean | true | \- | N
+title | String / Slot | - | `0.29.0` | N
+visible | Boolean | false | \- | N
+z-index | Number | 11500 | \- | N
+
+### Drawer Events
+
+name | params | description
+-- | -- | --
+close | `(trigger: TriggerSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts)。
`type TriggerSource = 'overlay'`
+item-click | `(index: number; item: DrawerItem)` | \-
+overlay-click | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/README.md
new file mode 100644
index 0000000..2c04c10
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/README.md
@@ -0,0 +1,60 @@
+---
+title: Drawer 抽屉
+description: 用作一组平行关系页面/内容的切换器,相较于Tab,同屏可展示更多的选项数量。。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.2 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-drawer": "tdesign-miniprogram/drawer/drawer"
+}
+```
+
+## 代码演示
+
+### 基础抽屉
+{{ base }}
+
+### 带图标的抽屉
+{{ icon-drawer }}
+
+>Drawer的 `visible` 是受控的,需要手动设置 `visible` 为 `true` 才会开启抽屉
+
+
+
+## API
+### Drawer Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-on-overlay-click | Boolean | true | 点击蒙层时是否触发抽屉关闭事件 | N
+destroy-on-close | Boolean | false | 抽屉关闭时是否销毁节点 | N
+footer | Slot | - | `0.29.0`。抽屉的底部 | N
+items | Array | - | 抽屉里的列表项。TS 类型:`DrawerItem[] ` `interface DrawerItem { title: string; icon: string; }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts) | N
+placement | String | right | 抽屉方向。可选项:left/right | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+title | String / Slot | - | `0.29.0`。抽屉的标题 | N
+visible | Boolean | false | 组件是否可见 | N
+z-index | Number | 11500 | 抽屉层级,样式默认为 11500 | N
+
+### Drawer Events
+
+名称 | 参数 | 描述
+-- | -- | --
+close | `(trigger: TriggerSource)` | 关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/drawer/type.ts)。
`type TriggerSource = 'overlay'`
+item-click | `(index: number; item: DrawerItem)` | 点击抽屉里的列表项
+overlay-click | \- | 如果蒙层存在,点击蒙层时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.d.ts
new file mode 100644
index 0000000..fd81c85
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.d.ts
@@ -0,0 +1,15 @@
+import { ComponentsOptionsType, SuperComponent } from '../common/src/index';
+export default class Drawer extends SuperComponent {
+ externalClasses: any[];
+ options: ComponentsOptionsType;
+ properties: import("./type").TdDrawerProps;
+ data: {
+ classPrefix: string;
+ };
+ methods: {
+ visibleChange({ detail }: {
+ detail: any;
+ }): void;
+ itemClick(detail: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.js b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.js
new file mode 100644
index 0000000..98b0f93
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.js
@@ -0,0 +1,49 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-drawer`;
+let Drawer = class Drawer extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ classPrefix: name,
+ };
+ this.methods = {
+ visibleChange({ detail }) {
+ const { visible } = detail;
+ const { showOverlay } = this.data;
+ this.setData({
+ visible,
+ });
+ if (!visible) {
+ this.triggerEvent('close', { trigger: 'overlay' });
+ }
+ if (showOverlay) {
+ this.triggerEvent('overlay-click', { visible: visible });
+ }
+ },
+ itemClick(detail) {
+ const { index, item } = detail.currentTarget.dataset;
+ this.triggerEvent('item-click', {
+ sibarItem: { index: index, item: item },
+ });
+ },
+ };
+ }
+};
+Drawer = __decorate([
+ wxComponent()
+], Drawer);
+export default Drawer;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.json b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.json
new file mode 100644
index 0000000..95a2238
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.wxml
new file mode 100644
index 0000000..3d67c0f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.wxml
@@ -0,0 +1,44 @@
+
+
+
+
+
+ {{title}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.wxss
new file mode 100644
index 0000000..a57bf9c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/drawer.wxss
@@ -0,0 +1,86 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-drawer {
+ background: var(--td-drawer-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ height: 100vh;
+ width: var(--td-drawer-width, 560rpx);
+ display: flex;
+ flex-direction: column;
+}
+.t-drawer--hover {
+ background-color: var(--td-drawer-hover-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-drawer__title {
+ font-weight: 600;
+ font-size: var(--td-drawer-title-font-size, 36rpx);
+ padding: 48rpx 32rpx 16rpx;
+}
+.t-drawer__sidebar {
+ height: var(--td-drawer-sidebar-height, 70vh);
+}
+.t-drawer__sidebar-item {
+ display: flex;
+ align-items: center;
+ position: relative;
+ padding: var(--td-drawer-item-padding, 32rpx) 0 var(--td-drawer-item-padding, 32rpx) var(--td-drawer-item-padding, 32rpx);
+ line-height: var(--td-drawer-item-height, 48rpx);
+}
+.t-drawer__sidebar-item::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-drawer-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-drawer__sidebar-item::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-drawer__sidebar-item::after {
+ left: var(--td-drawer-item-padding, 32rpx);
+}
+.t-drawer__sidebar-item-title {
+ flex: 1;
+ color: var(--td-drawer-title-color);
+}
+.t-drawer__sidebar-item-icon {
+ padding-right: 16rpx;
+ color: var(--td-drawer-title-color, var(--td-drawer-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9))));
+ font-size: var(--td-drawer-item-icon-size, 48rpx);
+}
+.t-drawer__footer {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ padding-bottom: var(--td-drawer-footer-padding-bottom, 40rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/props.d.ts
new file mode 100644
index 0000000..dbb379d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDrawerProps } from './type';
+declare const props: TdDrawerProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/props.js
new file mode 100644
index 0000000..5101669
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/props.js
@@ -0,0 +1,33 @@
+const props = {
+ closeOnOverlayClick: {
+ type: Boolean,
+ value: true,
+ },
+ destroyOnClose: {
+ type: Boolean,
+ value: false,
+ },
+ items: {
+ type: Array,
+ },
+ placement: {
+ type: String,
+ value: 'right',
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ title: {
+ type: String,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+ zIndex: {
+ type: Number,
+ value: 11500,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/type.d.ts
new file mode 100644
index 0000000..d60c26b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdDrawerProps {
+ closeOnOverlayClick?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ destroyOnClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ items?: {
+ type: ArrayConstructor;
+ value?: DrawerItem[];
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
+export interface DrawerItem {
+ title: string;
+ icon: string;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/drawer/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.d.ts
new file mode 100644
index 0000000..ed173be
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.d.ts
@@ -0,0 +1,89 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+import type { TdDropdownItemProps } from './type';
+export interface DropdownItemProps extends TdDropdownItemProps {
+}
+export default class DropdownMenuItem extends SuperComponent {
+ externalClasses: string[];
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-content", "t-class-column", "t-class-column-item", "t-class-column-item-label", "t-class-footer"];
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: import("../common/common").KeysType;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ multiple?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: import("./type").DropdownOption[];
+ };
+ optionsColumns?: {
+ type: null;
+ value?: string | number;
+ };
+ optionsLayout?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: import("./type").DropdownValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: import("./type").DropdownValue;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ show: boolean;
+ top: number;
+ maskHeight: number;
+ initValue: any;
+ hasChanged: boolean;
+ duration: string | number;
+ zIndex: number;
+ overlay: boolean;
+ labelAlias: string;
+ valueAlias: string;
+ computedLabel: string;
+ };
+ relations: RelationsOptions;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ keys(obj: any): void;
+ value(v: any): void;
+ 'label, computedLabel'(): void;
+ show(visible: any): void;
+ };
+ methods: {
+ closeDropdown(): void;
+ getParentBottom(cb: any): void;
+ handleTreeClick(e: any): void;
+ handleRadioChange(e: any): void;
+ handleMaskClick(): void;
+ handleReset(): void;
+ handleConfirm(): void;
+ onLeaved(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.js
new file mode 100644
index 0000000..a239be4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.js
@@ -0,0 +1,146 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import menuProps from '../dropdown-menu/props';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-dropdown-item`;
+let DropdownMenuItem = class DropdownMenuItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-column`,
+ `${prefix}-class-column-item`,
+ `${prefix}-class-column-item-label`,
+ `${prefix}-class-footer`,
+ ];
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ show: false,
+ top: 0,
+ maskHeight: 0,
+ initValue: null,
+ hasChanged: false,
+ duration: menuProps.duration.value,
+ zIndex: menuProps.zIndex.value,
+ overlay: menuProps.showOverlay.value,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ computedLabel: '',
+ };
+ this.relations = {
+ '../dropdown-menu/dropdown-menu': {
+ type: 'parent',
+ linked(target) {
+ const { zIndex, duration, showOverlay } = target.properties;
+ this.setData({
+ zIndex,
+ duration,
+ showOverlay,
+ });
+ },
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ keys(obj) {
+ this.setData({
+ labelAlias: obj.label || 'label',
+ valueAlias: obj.value || 'value',
+ });
+ },
+ value(v) {
+ const { options, labelAlias, valueAlias } = this.data;
+ if (this.data.multiple) {
+ if (!Array.isArray(v))
+ throw TypeError('应传入数组类型的 value');
+ }
+ const target = options.find((item) => item[valueAlias] === v);
+ if (target) {
+ this.setData({
+ computedLabel: target[labelAlias],
+ });
+ }
+ },
+ 'label, computedLabel'() {
+ var _a;
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.getAllItems();
+ },
+ show(visible) {
+ if (visible) {
+ this.getParentBottom(() => {
+ this.setData({ wrapperVisible: true });
+ });
+ }
+ },
+ };
+ this.methods = {
+ closeDropdown() {
+ var _a;
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.setData({
+ activeIdx: -1,
+ });
+ this.setData({
+ show: false,
+ });
+ },
+ getParentBottom(cb) {
+ getRect(this.$parent, `#${prefix}-bar`).then((rect) => {
+ this.setData({
+ top: rect.bottom,
+ maskHeight: rect.top,
+ }, cb);
+ });
+ },
+ handleTreeClick(e) {
+ const { level, value: itemValue } = e.currentTarget.dataset;
+ const { value } = this.data;
+ value[level] = itemValue;
+ this._trigger('change', { value });
+ },
+ handleRadioChange(e) {
+ const { value } = e.detail;
+ this._trigger('change', { value });
+ if (!this.data.multiple) {
+ this.closeDropdown();
+ }
+ },
+ handleMaskClick() {
+ var _a;
+ if ((_a = this.$parent) === null || _a === void 0 ? void 0 : _a.properties.closeOnClickOverlay) {
+ this.closeDropdown();
+ }
+ },
+ handleReset() {
+ this._trigger('change', { value: [] });
+ this._trigger('reset');
+ },
+ handleConfirm() {
+ this._trigger('confirm', { value: this.data.value });
+ this.closeDropdown();
+ },
+ onLeaved() {
+ this.setData({ wrapperVisible: false });
+ },
+ };
+ }
+};
+DropdownMenuItem = __decorate([
+ wxComponent()
+], DropdownMenuItem);
+export default DropdownMenuItem;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.json b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.json
new file mode 100644
index 0000000..a07137b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.json
@@ -0,0 +1,11 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-button": "../button/button",
+ "t-radio": "../radio/radio",
+ "t-radio-group": "../radio-group/radio-group",
+ "t-checkbox": "../checkbox/checkbox",
+ "t-checkbox-group": "../checkbox-group/checkbox-group",
+ "t-popup": "../popup/popup"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.wxml
new file mode 100644
index 0000000..1d0f52c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.wxml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.wxss
new file mode 100644
index 0000000..fea0f0e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/dropdown-item.wxss
@@ -0,0 +1,115 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+/** dropdown-item */
+.t-dropdown-item {
+ position: fixed;
+ right: 0;
+ left: 0;
+ top: 0;
+ overflow: hidden;
+ bottom: 0;
+ /** 树形结构 */
+}
+.t-dropdown-item__content {
+ display: flex;
+ flex-direction: column;
+ z-index: 11600;
+ overflow: hidden;
+}
+.t-dropdown-item__popup-host {
+ display: block;
+ width: 100%;
+ height: max-content;
+ overflow: hidden;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.t-dropdown-item__body {
+ flex: 1;
+ background: var(--td-dropdown-menu-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ overflow: auto;
+ max-height: var(--td-dropdown-body-max-height, 560rpx);
+}
+.t-dropdown-item__body--tree {
+ display: flex;
+ overflow: hidden;
+}
+.t-dropdown-item__body--multi {
+ padding-top: var(--td-spacer, 16rpx);
+ padding-bottom: var(--td-spacer, 16rpx);
+ overflow-y: auto;
+}
+.t-dropdown-item__footer {
+ display: flex;
+ background: var(--td-dropdown-menu-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ padding: 32rpx;
+ position: relative;
+}
+.t-dropdown-item__footer::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ bottom: unset;
+ left: unset;
+ right: unset;
+ background-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-dropdown-item__footer::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-dropdown-item__footer-btn {
+ flex: 1;
+}
+.t-dropdown-item__footer-btn + .t-dropdown-item__footer-btn {
+ margin-left: 32rpx;
+}
+.t-dropdown-item__radio,
+.t-dropdown-item__checkbox {
+ width: 100%;
+ overflow: scroll;
+ box-sizing: border-box;
+}
+.t-dropdown-item__checkbox-group {
+ display: grid;
+ padding: 32rpx;
+ grid-gap: 24rpx;
+}
+.t-dropdown-item__tree-item {
+ height: var(--td-tree-item-height, 96rpx);
+ line-height: var(--td-tree-item-height, 96rpx);
+ font-size: var(--td-tree-item-font-size, 32rpx);
+ padding-left: 32rpx;
+}
+.t-dropdown-item__tree-item--active {
+ color: var(--td-tree-item-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/index.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/index.wxs
new file mode 100644
index 0000000..e774f06
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/index.wxs
@@ -0,0 +1,9 @@
+var getStyles = function (top, zIndex) {
+ var topStyle = top ? 'top:' + top + 'px;' : '';
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return topStyle + zIndexStyle;
+};
+
+module.exports = {
+ getStyles: getStyles,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/props.d.ts
new file mode 100644
index 0000000..aa95de6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDropdownItemProps } from './type';
+declare const props: TdDropdownItemProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/props.js
new file mode 100644
index 0000000..e8be8e6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/props.js
@@ -0,0 +1,41 @@
+const props = {
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ keys: {
+ type: Object,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ multiple: {
+ type: Boolean,
+ value: false,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ optionsColumns: {
+ type: null,
+ value: 1,
+ },
+ optionsLayout: {
+ type: String,
+ value: 'columns',
+ },
+ value: {
+ type: null,
+ value: undefined,
+ },
+ defaultValue: {
+ type: null,
+ value: undefined,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/type.d.ts
new file mode 100644
index 0000000..3858490
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/type.d.ts
@@ -0,0 +1,60 @@
+import { KeysType } from '../common/common';
+export interface TdDropdownItemProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: [
+ 't-class',
+ 't-class-content',
+ 't-class-column',
+ 't-class-column-item',
+ 't-class-column-item-label',
+ 't-class-footer'
+ ];
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ multiple?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ optionsColumns?: {
+ type: null;
+ value?: string | number;
+ };
+ optionsLayout?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: DropdownValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: DropdownValue;
+ };
+}
+export interface DropdownOption {
+ label: string;
+ disabled: boolean;
+ value: DropdownValue;
+}
+export declare type DropdownValue = string | number | Array;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/README.en-US.md
new file mode 100644
index 0000000..eb73f94
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/README.en-US.md
@@ -0,0 +1,35 @@
+:: BASE_DOC ::
+
+## API
+### DropdownMenu Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-on-click-overlay | Boolean | true | \- | N
+duration | String / Number | 200 | \- | N
+external-classes | Array | - | `['t-class', 't-class-item', 't-class-label', 't-class-icon']` | N
+show-overlay | Boolean | true | \- | N
+z-index | Number | 11600 | \- | N
+
+### DropdownItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class','t-class-content', 't-class-column', 't-class-column-item', 't-class-column-item-label', 't-class-footer']` | N
+keys | Object | - | Typescript:`KeysType` | N
+label | String | - | \- | N
+multiple | Boolean | false | \- | N
+options | Array | [] | Typescript:`Array` `interface DropdownOption { label: string; disabled: boolean; value: DropdownValue; }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+options-columns | String / Number | 1 | \- | N
+options-layout | String | columns | `deprecated` | N
+value | String / Number / Array | undefined | Typescript:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+default-value | String / Number / Array | undefined | uncontrolled property。Typescript:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+
+### DropdownItem Events
+
+name | params | description
+-- | -- | --
+change | `(value: DropdownValue)` | \-
+confirm | `(value: DropdownValue)` | \-
+reset | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/README.md
new file mode 100644
index 0000000..0d7b731
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/README.md
@@ -0,0 +1,76 @@
+---
+title: DropdownMenu 下拉菜单
+description: 菜单呈现数个并列的选项类目,用于整个页面的内容筛选,由菜单面板和菜单选项组成。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.8.0 版本上线,请留意版本。
+
+
+## 引入
+
+### 引入组件
+
+在 `app.json` 或 `page.json` 中引入组件:
+
+```json
+"usingComponents": {
+ "t-dropdown-menu": "tdesign-miniprogram/dropdown-menu/dropdown-menu",
+ "t-dropdown-item": "tdesign-miniprogram/dropdown-item/dropdown-item"
+}
+```
+
+## 用法
+
+### 单选下拉菜单
+
+{{ single }}
+
+### 多列下拉菜单
+
+{{ multi }}
+
+### 树形下拉菜单
+
+{{ tree }}
+
+## API
+### DropdownMenu Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-on-click-overlay | Boolean | true | 是否在点击遮罩层后关闭菜单 | N
+duration | String / Number | 200 | 动画时长 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、菜单标签、菜单图标类名 等。`['t-class', 't-class-item', 't-class-label', 't-class-icon']` | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+z-index | Number | 11600 | 菜单栏 z-index 层级 | N
+
+### DropdownItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disabled | Boolean | false | 是否禁用 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、菜单列、菜单列选项、菜单列选项标签、树形菜单、树形菜单列等类名。`['t-class','t-class-content', 't-class-column', 't-class-column-item', 't-class-column-item-label', 't-class-footer']` | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+label | String | - | 标题 | N
+multiple | Boolean | false | 是否多选 | N
+options | Array | [] | 选项数据。TS 类型:`Array` `interface DropdownOption { label: string; disabled: boolean; value: DropdownValue; }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+options-columns | String / Number | 1 | 选项分栏(1-3) | N
+options-layout | String | columns | 已废弃。选项排列;不再支持 tree 布局,可与 treeSelect 配合使用 | N
+value | String / Number / Array | undefined | 选中值。TS 类型:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+default-value | String / Number / Array | undefined | 选中值。非受控属性。TS 类型:`DropdownValue ` `type DropdownValue = string \| number \| Array;`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/dropdown-item/type.ts) | N
+
+### DropdownItem Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: DropdownValue)` | 值改变时触发
+confirm | `(value: DropdownValue)` | 点击确认时触发
+reset | - | 点击重置时触发
\ No newline at end of file
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.d.ts
new file mode 100644
index 0000000..3496011
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.d.ts
@@ -0,0 +1,25 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+import type { TdDropdownMenuProps } from './type';
+export interface DropdownMenuProps extends TdDropdownMenuProps {
+}
+export default class DropdownMenu extends SuperComponent {
+ externalClasses: string[];
+ properties: TdDropdownMenuProps;
+ nodes: any;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ menus: any;
+ activeIdx: number;
+ bottom: number;
+ };
+ relations: RelationsOptions;
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ toggle(index: number): void;
+ getAllItems(): void;
+ handleToggle(e: WechatMiniprogram.BaseEvent): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.js
new file mode 100644
index 0000000..7b28044
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.js
@@ -0,0 +1,90 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-dropdown-menu`;
+let DropdownMenu = class DropdownMenu extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-item`, `${prefix}-class-label`, `${prefix}-class-icon`];
+ this.properties = props;
+ this.nodes = null;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ menus: null,
+ activeIdx: -1,
+ bottom: 0,
+ };
+ this.relations = {
+ '../dropdown-item/dropdown-item': {
+ type: 'child',
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.getAllItems();
+ },
+ };
+ this.methods = {
+ toggle(index) {
+ const { activeIdx, duration } = this.data;
+ const prevItem = this.$children[activeIdx];
+ const currItem = this.$children[index];
+ if (currItem === null || currItem === void 0 ? void 0 : currItem.data.disabled)
+ return;
+ if (activeIdx !== -1) {
+ prevItem.triggerEvent('close');
+ prevItem.setData({
+ show: false,
+ }, () => {
+ setTimeout(() => {
+ prevItem.triggerEvent('closed');
+ }, duration);
+ });
+ }
+ if (index == null || activeIdx === index) {
+ this.setData({
+ activeIdx: -1,
+ });
+ }
+ else {
+ currItem.triggerEvent('open');
+ this.setData({
+ activeIdx: index,
+ });
+ currItem.setData({
+ show: true,
+ }, () => {
+ setTimeout(() => {
+ currItem.triggerEvent('opened');
+ }, duration);
+ });
+ }
+ },
+ getAllItems() {
+ const menus = this.$children.map(({ data }) => ({
+ label: data.label || data.computedLabel,
+ disabled: data.disabled,
+ }));
+ this.setData({
+ menus,
+ });
+ },
+ handleToggle(e) {
+ const { index } = e.currentTarget.dataset;
+ this.toggle(index);
+ },
+ };
+ }
+};
+DropdownMenu = __decorate([
+ wxComponent()
+], DropdownMenu);
+export default DropdownMenu;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.json b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.wxml
new file mode 100644
index 0000000..eac2ed6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.wxml
@@ -0,0 +1,23 @@
+
+
+
+
+ {{item.label}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.wxss
new file mode 100644
index 0000000..d9a1082
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/dropdown-menu.wxss
@@ -0,0 +1,78 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-dropdown-menu {
+ display: flex;
+ height: 48px;
+ background: var(--td-dropdown-menu-bg-colorm, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ position: relative;
+}
+.t-dropdown-menu::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-dropdown-menu::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-dropdown-menu__item {
+ display: flex;
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ padding: 0 var(--td-spacer, 16rpx);
+ position: relative;
+ overflow: hidden;
+ color: var(--td-dropdown-menu-colorm, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-dropdown-menu__item--active {
+ color: var(--td-dropdown-menu-active-colorm, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-dropdown-menu__item--disabled {
+ color: var(--td-dropdown-menu-disabled-colorm, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-dropdown-menu__icon {
+ font-size: var(--td-dropdown-menu-icon-sizem, 48rpx);
+ transition: transform 240ms ease;
+}
+.t-dropdown-menu__icon--active {
+ transform: rotate(180deg);
+}
+.t-dropdown-menu__title {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ font-size: var(--td-dropdown-menu-font-sizem, 28rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/index.d.ts
new file mode 100644
index 0000000..dea9f1d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './dropdown-menu';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/index.js
new file mode 100644
index 0000000..dea9f1d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './dropdown-menu';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/props.d.ts
new file mode 100644
index 0000000..b662f85
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/props.d.ts
@@ -0,0 +1,3 @@
+import { TdDropdownMenuProps } from './type';
+declare const props: TdDropdownMenuProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/props.js
new file mode 100644
index 0000000..f879602
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/props.js
@@ -0,0 +1,22 @@
+const props = {
+ closeOnClickOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ duration: {
+ type: null,
+ value: 200,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ zIndex: {
+ type: Number,
+ value: 11600,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/type.d.ts
new file mode 100644
index 0000000..9e549d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdDropdownMenuProps {
+ closeOnClickOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ duration?: {
+ type: null;
+ value?: string | number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-item', 't-class-label', 't-class-icon'];
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/dropdown-menu/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/README.en-US.md
new file mode 100644
index 0000000..ef93552
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/README.en-US.md
@@ -0,0 +1,13 @@
+:: BASE_DOC ::
+
+## API
+
+### Empty Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+action | Slot | - | \- | N
+description | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-description', 't-class-image', 't-class-actions']` | N
+icon | String | - | \- | N
+image | String / Slot | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/README.md
new file mode 100644
index 0000000..ba1c06f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/README.md
@@ -0,0 +1,46 @@
+---
+title: Empty 空状态
+description: 用于空状态时的占位提示。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-empty": "tdesign-miniprogram/empty/empty"
+}
+```
+
+## 代码演示
+
+### 类型
+
+图标空状态
+
+{{ base }}
+
+自定义图片空状态
+
+{{ imageEmpty }}
+
+带操作空状态
+
+{{ buttonEmpty }}
+
+
+
+## API
+### Empty Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+action | Slot | - | 操作按钮 | N
+description | String / Slot | - | 描述文字 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、文本描述类名、图片类名、操作按钮类名。`['t-class', 't-class-description', 't-class-image', 't-class-actions']` | N
+icon | String / Object | - | 图标名称。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+image | String / Slot | - | 图片地址 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.d.ts
new file mode 100644
index 0000000..cd582e0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.d.ts
@@ -0,0 +1,15 @@
+import { SuperComponent } from '../common/src/index';
+export default class extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ properties: import("./type").TdEmptyProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ icon(icon: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.js b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.js
new file mode 100644
index 0000000..7d99bf9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.js
@@ -0,0 +1,36 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import { setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-empty`;
+let default_1 = class extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-description`, `${prefix}-class-image`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ }
+};
+default_1 = __decorate([
+ wxComponent()
+], default_1);
+export default default_1;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.json b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.json
new file mode 100644
index 0000000..9a40e60
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxml
new file mode 100644
index 0000000..8750072
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxs
new file mode 100644
index 0000000..88305a6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxs
@@ -0,0 +1,12 @@
+var REGEXP = getRegExp('^\d+(\.\d+)?$');
+
+function addUnit(value) {
+ if (value == null) {
+ return undefined;
+ }
+ return REGEXP.test('' + value) ? value + 'px' : value;
+}
+
+module.exports = {
+ addUnit: addUnit,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxss
new file mode 100644
index 0000000..b12ab62
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/empty.wxss
@@ -0,0 +1,48 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-empty {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+.t-empty__icon {
+ font-size: 192rpx;
+ color: var(--td-empty-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-empty__thumb + .t-empty__description:not(:empty) {
+ margin-top: var(--td-empty-description-margin-top, var(--td-spacer-2, 32rpx));
+}
+.t-empty__description {
+ text-align: center;
+ color: var(--td-empty-description-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-empty-description-font-size, var(--td-font-size-base, 28rpx));
+ line-height: var(--td-empty-description-line-height, 44rpx);
+}
+.t-empty__description + .t-empty__actions:not(:empty) {
+ margin-top: var(--td-empty-action-margin-top, var(--td-spacer-4, 64rpx));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/props.d.ts
new file mode 100644
index 0000000..6f04c79
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/props.d.ts
@@ -0,0 +1,3 @@
+import { TdEmptyProps } from './type';
+declare const props: TdEmptyProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/props.js
new file mode 100644
index 0000000..aa55217
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/props.js
@@ -0,0 +1,15 @@
+const props = {
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ image: {
+ type: String,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/type.d.ts
new file mode 100644
index 0000000..c222ac2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/type.d.ts
@@ -0,0 +1,22 @@
+export interface TdEmptyProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-description', 't-class-image', 't-class-actions'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/empty/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/empty/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/README.en-US.md
new file mode 100644
index 0000000..d2b3aa7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/README.en-US.md
@@ -0,0 +1,17 @@
+:: BASE_DOC ::
+
+## API
+### Fab Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+button-props | Object | - | \- | N
+icon | String | - | \- | N
+style | String | right: 16px; bottom: 32px; | \- | N
+text | String | - | \- | N
+
+### Fab Events
+
+name | params | description
+-- | -- | --
+click | `(detail: {e: MouseEvent})` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/README.md
new file mode 100644
index 0000000..57b1860
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/README.md
@@ -0,0 +1,52 @@
+---
+title: Fab 悬浮按钮
+description: 当功能使用图标即可表意清楚时,可使用纯图标悬浮按钮,例如:添加、发布。
+spline: form
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.2 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+
+```json
+"usingComponents": {
+ "t-fab": "tdesign-miniprogram/fab/fab"
+}
+```
+
+## 代码演示
+
+### 基础使用
+
+{{ base }}
+
+### 进阶使用
+
+{{ advance }}
+
+## API
+### Fab Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+button-props | Object | - | 透传至 Button 组件 | N
+icon | String | - | 图标 | N
+style | String | right: 16px; bottom: 32px; | 悬浮按钮的样式,常用于调整位置(即将废弃,建议使用 `style`) | N
+text | String | - | 文本内容 | N
+
+### Fab Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `({e: Event})` | 悬浮按钮点击事件
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.d.ts
new file mode 100644
index 0000000..00e06b5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.d.ts
@@ -0,0 +1,20 @@
+import { SuperComponent } from '../common/src/index';
+export default class Fab extends SuperComponent {
+ properties: import("./type").TdFabProps;
+ externalClasses: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ baseButtonProps: {
+ size: string;
+ shape: string;
+ theme: string;
+ };
+ };
+ observers: {
+ text(val: any): void;
+ };
+ methods: {
+ onTplButtonTap(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.js b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.js
new file mode 100644
index 0000000..9bb7655
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.js
@@ -0,0 +1,47 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-fab`;
+let Fab = class Fab extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = props;
+ this.externalClasses = [`class`, `${prefix}-class`, `${prefix}-class-button`];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ baseButtonProps: {
+ size: 'large',
+ shape: 'circle',
+ theme: 'primary',
+ },
+ };
+ this.observers = {
+ text(val) {
+ if (val) {
+ this.setData({
+ baseButtonProps: {
+ shape: 'round',
+ },
+ });
+ }
+ },
+ };
+ this.methods = {
+ onTplButtonTap(e) {
+ this.triggerEvent('click', e);
+ },
+ };
+ }
+};
+Fab = __decorate([
+ wxComponent()
+], Fab);
+export default Fab;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.json b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.json
new file mode 100644
index 0000000..e73f3ad
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-button": "../button/button"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.wxml
new file mode 100644
index 0000000..1bca71c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.wxml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.wxss
new file mode 100644
index 0000000..49942a6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/fab.wxss
@@ -0,0 +1,33 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-fab {
+ position: fixed;
+}
+.t-fab__button {
+ box-shadow: var(--td-fab-shadow, var(--td-shadow-2, 0 3px 14px 2px rgba(0, 0, 0, 0.05), 0 8px 10px 1px rgba(0, 0, 0, 0.06), 0 5px 5px -3px rgba(0, 0, 0, 0.1)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/props.d.ts
new file mode 100644
index 0000000..2cf4647
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/props.d.ts
@@ -0,0 +1,3 @@
+import { TdFabProps } from './type';
+declare const props: TdFabProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/props.js
new file mode 100644
index 0000000..4cf58a2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/props.js
@@ -0,0 +1,14 @@
+const props = {
+ buttonProps: {
+ type: Object,
+ },
+ icon: {
+ type: String,
+ value: '',
+ },
+ text: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/type.d.ts
new file mode 100644
index 0000000..76d4ed8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/type.d.ts
@@ -0,0 +1,18 @@
+export interface TdFabProps {
+ buttonProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ icon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/fab/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/fab/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/README.en-US.md
new file mode 100644
index 0000000..8063c22
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/README.en-US.md
@@ -0,0 +1,13 @@
+:: BASE_DOC ::
+
+## API
+### Footer Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+copyright | String | '' | \- | N
+text | String | '' | \- | N
+logo | Object | - | Typescript:`FooterLogo` `interface FooterLogo { icon: string; title?: string; titleUrl?: string }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+text-link-list | Array | [] | Typescript:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+links | Array | [] | Typescript:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+theme | String | 'text' | options:text/logo | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/README.md
new file mode 100644
index 0000000..d2e7c37
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/README.md
@@ -0,0 +1,48 @@
+---
+title: Footer 页脚
+description: 用于基础列表展示,可附带文字、品牌 logo、操作,常用商详、个人中心、设置等页面。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-footer": "tdesign-miniprogram/footer/footer"
+}
+```
+
+## 代码演示
+
+
+
+
+### 类型
+
+基础页脚
+
+{{ base }}
+
+基础加链接页脚
+
+{{ link }}
+
+品牌页脚
+
+{{ logo }}
+
+## API
+### Footer Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+copyright | String | '' | 已废弃。版权信息,type 为`text`生效 | N
+text | String | '' | `1.0.0` 版权信息。 | N
+logo | Object | - | 图标配置。`logo.icon` 表示图标链接地址,`logo.title` 表示标题文本,`logo.url` 表示链接跳转地址。TS 类型:`FooterLogo` `interface FooterLogo { icon: string; title?: string; titleUrl?: string }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+text-link-list | Array | [] | 已废弃。链接列表,type 为`text`生效。name 表示链接名称, url 表示链接 page 路径,目前只支持小程序内部跳转,openType 表示跳转方式。TS 类型:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+links| Array | [] | `1.0.0` 链接列表。name 表示链接名称, url 表示链接 page 路径,目前只支持小程序内部跳转,openType 表示跳转方式。TS 类型:`Array` `interface LinkObj { name: string; url?: string; openType?: 'navigate' \| 'redirect' \| 'relaunch' \| 'switchTab' \| 'navigateBack' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/footer/type.ts) | N
+theme | String | 'text' | 已废弃。页脚展示类型。可选项:text/logo | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.d.ts
new file mode 100644
index 0000000..6ffe46b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.d.ts
@@ -0,0 +1,9 @@
+import { SuperComponent } from '../common/src/index';
+export default class Footer extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdFooterProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.js b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.js
new file mode 100644
index 0000000..a640f75
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.js
@@ -0,0 +1,26 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-footer`;
+let Footer = class Footer extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ }
+};
+Footer = __decorate([
+ wxComponent()
+], Footer);
+export default Footer;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.json b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.json
new file mode 100644
index 0000000..f705aee
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.wxml
new file mode 100644
index 0000000..56e8d99
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.wxml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ {{logo.title}}
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+ |
+
+
+ {{text}}
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.wxss
new file mode 100644
index 0000000..9352f98
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/footer.wxss
@@ -0,0 +1,77 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-footer {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-start;
+}
+.t-footer__text {
+ font-size: var(--td-footer-text-font-size, var(--td-font-size-s, 24rpx));
+ line-height: var(--td-footer-text-line-height, 40rpx);
+ color: var(--td-footer-text-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-footer__link-list + .t-footer__text:not(:empty) {
+ margin-top: var(--td-footer-text-margin-top, 8rpx);
+}
+.t-footer__link-list {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.t-footer__link-item {
+ color: var(--td-footer-link-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-size: var(--td-footer-link-font-size, var(--td-font-size-s, 24rpx));
+ line-height: var(--td-footer-link-line-height, 40rpx);
+ text-decoration: underline;
+}
+.t-footer__link-line {
+ font-size: 24rpx;
+ color: var(--td-footer-link-dividing-line-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ display: inline-block;
+ padding: 0 var(--td-footer-link-dividing-line-padding, var(--td-spacer-1, 24rpx));
+}
+.t-footer__logo {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.t-footer__icon {
+ width: var(--td-footer-logo-icon-width, 48rpx);
+ height: var(--td-footer-logo-icon-height, 48rpx);
+ margin-right: var(--td-footer-logo-icon-margin-right, var(--td-spacer, 16rpx));
+}
+.t-footer__title {
+ font-weight: bold;
+ font-size: var(--td-footer-logo-title-font-size, var(--td-font-size-m, 32rpx));
+ line-height: var(--td-footer-logo-title-line-height, 48rpx);
+ font-style: italic;
+}
+.t-footer__title-url {
+ width: var(--td-footer-logo-title-url-width, 256rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/props.d.ts
new file mode 100644
index 0000000..f9a5618
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/props.d.ts
@@ -0,0 +1,3 @@
+import { TdFooterProps } from './type';
+declare const props: TdFooterProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/props.js
new file mode 100644
index 0000000..8281291
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/props.js
@@ -0,0 +1,14 @@
+const props = {
+ text: {
+ type: String,
+ value: '',
+ },
+ logo: {
+ type: Object,
+ },
+ links: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/type.d.ts
new file mode 100644
index 0000000..7e4a8ff
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/type.d.ts
@@ -0,0 +1,24 @@
+export interface TdFooterProps {
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ logo?: {
+ type: ObjectConstructor;
+ value?: FooterLogo;
+ };
+ links?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+}
+export interface FooterLogo {
+ icon: string;
+ title?: string;
+ titleUrl?: string;
+}
+export interface LinkObj {
+ name: string;
+ url?: string;
+ openType?: 'navigate' | 'redirect' | 'relaunch' | 'switchTab' | 'navigateBack';
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/footer/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/footer/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.d.ts
new file mode 100644
index 0000000..4c43196
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.d.ts
@@ -0,0 +1,31 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class GridItem extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ properties: import("./type").TdGridItemProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ gridItemStyle: string;
+ gridItemWrapperStyle: string;
+ gridItemContentStyle: string;
+ align: string;
+ column: number;
+ describedbyID: string;
+ };
+ observers: {
+ icon(icon: any): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ updateStyle(): void;
+ getWidthStyle(): string;
+ getPaddingStyle(): string;
+ getBorderStyle(): string;
+ onClick(e: any): void;
+ jumpLink(): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.js b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.js
new file mode 100644
index 0000000..33397e9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.js
@@ -0,0 +1,130 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent, isObject } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { uniqueFactory, setIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-grid-item`;
+const getUniqueID = uniqueFactory('grid_item');
+var LinkTypes;
+(function (LinkTypes) {
+ LinkTypes["redirect-to"] = "redirectTo";
+ LinkTypes["switch-tab"] = "switchTab";
+ LinkTypes["relaunch"] = "reLaunch";
+ LinkTypes["navigate-to"] = "navigateTo";
+})(LinkTypes || (LinkTypes = {}));
+let GridItem = class GridItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-image`,
+ `${prefix}-class-text`,
+ `${prefix}-class-description`,
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../grid/grid': {
+ type: 'ancestor',
+ linked(target) {
+ this.parent = target;
+ this.updateStyle();
+ this.setData({
+ column: target.data.column,
+ });
+ },
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ gridItemStyle: '',
+ gridItemWrapperStyle: '',
+ gridItemContentStyle: '',
+ align: 'center',
+ column: 0,
+ describedbyID: '',
+ };
+ this.observers = {
+ icon(icon) {
+ const obj = setIcon('icon', icon, '');
+ this.setData(Object.assign({}, obj));
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.setData({
+ describedbyID: getUniqueID(),
+ });
+ },
+ };
+ }
+ updateStyle() {
+ const { hover, align } = this.parent.properties;
+ const gridItemStyles = [];
+ const gridItemWrapperStyles = [];
+ const gridItemContentStyles = [];
+ const widthStyle = this.getWidthStyle();
+ const paddingStyle = this.getPaddingStyle();
+ const borderStyle = this.getBorderStyle();
+ widthStyle && gridItemStyles.push(widthStyle);
+ paddingStyle && gridItemWrapperStyles.push(paddingStyle);
+ borderStyle && gridItemContentStyles.push(borderStyle);
+ this.setData({
+ gridItemStyle: `${gridItemStyles.join(';')}`,
+ gridItemWrapperStyle: gridItemWrapperStyles.join(';'),
+ gridItemContentStyle: gridItemContentStyles.join(';'),
+ hover,
+ layout: this.properties.layout,
+ align: align,
+ });
+ }
+ getWidthStyle() {
+ const { column } = this.parent.properties;
+ return column > 0 ? `width:${(1 / column) * 100}%` : '';
+ }
+ getPaddingStyle() {
+ const { gutter } = this.parent.properties;
+ if (gutter)
+ return `padding-left:${gutter}rpx;padding-top:${gutter}rpx`;
+ return '';
+ }
+ getBorderStyle() {
+ const { gutter } = this.parent.properties;
+ let { border } = this.parent.properties;
+ if (!border)
+ return '';
+ if (!isObject(border))
+ border = {};
+ const { color = '#266FE8', width = 2, style = 'solid' } = border;
+ if (gutter)
+ return `border:${width}rpx ${style} ${color}`;
+ return `border-top:${width}rpx ${style} ${color};border-left:${width}rpx ${style} ${color}`;
+ }
+ onClick(e) {
+ const { item } = e.currentTarget.dataset;
+ this.triggerEvent('click', item);
+ this.jumpLink();
+ }
+ jumpLink() {
+ const { url, jumpType } = this.properties;
+ if (url && jumpType) {
+ if (LinkTypes[jumpType]) {
+ wx[LinkTypes[jumpType]]({ url });
+ }
+ }
+ }
+};
+GridItem = __decorate([
+ wxComponent()
+], GridItem);
+export default GridItem;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.json b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.json
new file mode 100644
index 0000000..26991b4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-image": "../image/image",
+ "t-icon": "../icon/icon",
+ "t-badge": "../badge/badge"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.wxml
new file mode 100644
index 0000000..e0bb953
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.wxml
@@ -0,0 +1,79 @@
+
+
+
+ module.exports.getImageSize = function(column) { if (column >= 5) return 'small'; if (column == 4) return 'middle';
+ return 'large'; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{text}}
+
+
+
+ {{description}}
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.wxss
new file mode 100644
index 0000000..13d8392
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/grid-item.wxss
@@ -0,0 +1,124 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-grid-item {
+ box-sizing: border-box;
+ height: 100%;
+ display: inline-block;
+ vertical-align: top;
+}
+.t-grid-item--hover {
+ background-color: var(--td-grid-item-hover-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-grid-item--auto-size {
+ width: 168rpx;
+}
+.t-grid-item__content {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ overflow: hidden;
+ position: relative;
+ padding: var(--td-grid-item-padding, 32rpx) 0 24rpx;
+}
+.t-grid-item__content--horizontal {
+ flex-direction: row;
+ padding-left: var(--td-grid-item-padding, 32rpx);
+}
+.t-grid-item__words {
+ width: 100%;
+ text-align: center;
+ position: relative;
+ flex-direction: column;
+ display: flex;
+ flex: 1;
+ justify-content: center;
+ align-items: center;
+}
+.t-grid-item__words--horizontal {
+ margin-left: 24rpx;
+}
+.t-grid-item__words:empty {
+ display: none;
+}
+.t-grid-item__image:not(:empty) {
+ width: var(--td-grid-item-image-width, 96rpx);
+ height: var(--td-grid-item-image-width, 96rpx);
+}
+.t-grid-item__image:not(:empty).t-grid-item__image--small {
+ width: 64rpx;
+ height: 64rpx;
+}
+.t-grid-item__image:not(:empty).t-grid-item__image--middle {
+ width: 80rpx;
+ height: 80rpx;
+}
+.t-grid-item__image:not(:empty) .t-grid__image {
+ width: 100%;
+ height: 100%;
+}
+.t-grid-item__image--icon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+ border-radius: var(--td-radius-default, 12rpx);
+}
+.t-grid-item--left {
+ justify-self: flex-start;
+ align-items: flex-start;
+}
+.t-grid-item--left .t-grid-item__words {
+ text-align: left;
+}
+.t-grid-item__text {
+ width: inherit;
+ color: var(--td-grid-item-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-grid-item-text-font-size, 28rpx);
+ line-height: var(--td-grid-item-text-line-height, 44rpx);
+ padding-top: var(--td-grid-item-text-padding-top, 16rpx);
+}
+.t-grid-item__text--small,
+.t-grid-item__text--middle {
+ font-size: 24rpx;
+}
+.t-grid-item__text--horizontal {
+ padding-top: 0;
+ text-align: left;
+}
+.t-grid-item__description {
+ width: inherit;
+ color: var(--td-grid-item-description-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-grid-item-description-font-size, 24rpx);
+ line-height: var(--td-grid-item-description-line-height, 40rpx);
+}
+.t-grid-item__description--horizontal {
+ text-align-last: left;
+}
+.t-grid-item__icon {
+ font-size: 48rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/props.d.ts
new file mode 100644
index 0000000..bd6c2fb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdGridItemProps } from './type';
+declare const props: TdGridItemProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/props.js
new file mode 100644
index 0000000..df49d24
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/props.js
@@ -0,0 +1,37 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ value: null,
+ },
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ image: {
+ type: String,
+ },
+ imageProps: {
+ type: Object,
+ },
+ jumpType: {
+ type: String,
+ value: 'navigate-to',
+ },
+ layout: {
+ type: String,
+ value: 'vertical',
+ },
+ text: {
+ type: String,
+ },
+ url: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/type.d.ts
new file mode 100644
index 0000000..c75363b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/type.d.ts
@@ -0,0 +1,47 @@
+import { BadgeProps } from '../badge/index';
+export interface TdGridItemProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: BadgeProps;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-image', 't-class-text', 't-class-description'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ jumpType?: {
+ type: StringConstructor;
+ value?: 'redirect-to' | 'switch-tab' | 'relaunch' | 'navigate-to';
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'vertical' | 'horizontal';
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ url?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/README.en-US.md
new file mode 100644
index 0000000..9ea1966
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/README.en-US.md
@@ -0,0 +1,29 @@
+:: BASE_DOC ::
+
+## API
+### Grid Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | center | options:left/center | N
+border | Boolean / Object | false | Typescript:`boolean \| { color?: string; width?: string; style?: 'solid' \| 'dashed' \| 'dotted' \| 'double' \| 'groove' \| 'inset' \| 'outset' }` | N
+column | Number | 4 | \- | N
+external-classes | Array | - | `['t-class']` | N
+gutter | Number | - | \- | N
+hover | Boolean | false | \- | N
+theme | String | default | options:default/card | N
+
+### GridItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | null | Typescript:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/grid-item/type.ts) | N
+description | String / Slot | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-image', 't-class-text', 't-class-description']` | N
+icon | String / Object | - | \- | N
+image | String / Slot | - | \- | N
+image-props | Object | - | \- | N
+jump-type | String | navigate-to | options:redirect-to/switch-tab/relaunch/navigate-to | N
+layout | String | vertical | options:vertical/horizontal | N
+text | String / Slot | - | \- | N
+url | String | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/README.md
new file mode 100644
index 0000000..355a0eb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/README.md
@@ -0,0 +1,84 @@
+---
+title: Grid 宫格
+description: 用于功能入口布局,将页面或特定区域切分成若干等大的区块,形成若干功能入口。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-grid": "tdesign-miniprogram/grid/grid",
+ "t-grid-item": "tdesign-miniprogram/grid-item/grid-item"
+}
+```
+
+## 代码演示
+
+### 组件类型
+基础宫格
+
+{{ base }}
+
+带说明的宫格
+
+{{ description }}
+
+带边框的宫格
+
+{{ border }}
+
+带徽章的宫格
+
+{{ badge }}
+
+可滑动的宫格
+
+{{ scroll }}
+
+### 组件样式
+
+可传图标的宫格
+
+{{ icon-grid }}
+
+多行宫格
+
+{{ multiple }}
+
+卡片宫格
+
+{{ card }}
+
+
+## API
+### Grid Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | center | 内容对齐方式。可选项:left/center | N
+border | Boolean / Object | false | 边框,默认不显示。值为 true 则显示默认边框,值类型为 object 则表示自定义边框样式。TS 类型:`boolean \| { color?: string; width?: string; style?: 'solid' \| 'dashed' \| 'dotted' \| 'double' \| 'groove' \| 'inset' \| 'outset' }` | N
+column | Number | 4 | 每一行的列数量;为 0 时等于固定大小 | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class']` | N
+gutter | Number | - | 间隔大小 | N
+hover | Boolean | false | 是否开启点击反馈 | N
+theme | String | default | 宫格的风格。可选项:default/card | N
+
+### GridItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | null | 透传至 Badge 属性。TS 类型:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/grid-item/type.ts) | N
+description | String / Slot | - | 文本以外的更多描述,辅助信息。可以通过 Props 传入文本,也可以自定义标题节点 | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、图片、文本、描述等元素类名。`['t-class', 't-class-image', 't-class-text', 't-class-description']` | N
+icon | String / Object | - | 图标名称。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon` | N
+image | String / Slot | - | 图片,可以是图片地址,也可以自定义图片节点,值为 slot 的时候才能使用插槽 | N
+image-props | Object | - | 透传至 Image 组件 | N
+jump-type | String | navigate-to | 链接跳转类型。可选项:redirect-to/switch-tab/relaunch/navigate-to | N
+layout | String | vertical | 内容布局方式。可选项:vertical/horizontal | N
+text | String / Slot | - | 文本,可以通过 Props 传入文本,也可以自定义标题节点 | N
+url | String | - | 点击后的跳转链接 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.d.ts
new file mode 100644
index 0000000..298f660
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Grid extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ properties: import("./type").TdGridProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ contentStyle: string;
+ };
+ observers: {
+ 'column,hover,align'(): void;
+ 'gutter,border'(): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ doForChild(action: (item: WechatMiniprogram.Component.TrivialInstance) => void): void;
+ updateContentStyle(): void;
+ getContentMargin(): string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.js b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.js
new file mode 100644
index 0000000..042b7a5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.js
@@ -0,0 +1,69 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { isObject, SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-grid`;
+let Grid = class Grid extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = ['t-class'];
+ this.relations = {
+ '../grid-item/grid-item': {
+ type: 'descendant',
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ contentStyle: '',
+ };
+ this.observers = {
+ 'column,hover,align'() {
+ this.updateContentStyle();
+ },
+ 'gutter,border'() {
+ this.updateContentStyle();
+ this.doForChild((child) => child.updateStyle());
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.updateContentStyle();
+ },
+ };
+ this.methods = {
+ doForChild(action) {
+ this.$children.forEach(action);
+ },
+ updateContentStyle() {
+ const contentStyles = [];
+ const marginStyle = this.getContentMargin();
+ marginStyle && contentStyles.push(marginStyle);
+ this.setData({
+ contentStyle: contentStyles.join(';'),
+ });
+ },
+ getContentMargin() {
+ const { gutter } = this.properties;
+ let { border } = this.properties;
+ if (!border)
+ return `margin-left:-${gutter}rpx; margin-top:-${gutter}rpx`;
+ if (!isObject(border))
+ border = {};
+ const { width = 2 } = border;
+ return `margin-left:-${width}rpx; margin-top:-${width}rpx`;
+ },
+ };
+ }
+};
+Grid = __decorate([
+ wxComponent()
+], Grid);
+export default Grid;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.json b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.wxml
new file mode 100644
index 0000000..d497d7c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.wxml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.wxss
new file mode 100644
index 0000000..a3ae3c3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/grid.wxss
@@ -0,0 +1,40 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-grid {
+ position: relative;
+ overflow: hidden;
+ background-color: var(--td-grid-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-grid__content {
+ width: auto;
+}
+.t-grid--card {
+ margin: 0 32rpx;
+ border-radius: var(--td-grid-card-radius, var(--td-radius-large, 18rpx));
+ overflow: hidden;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/props.d.ts
new file mode 100644
index 0000000..f8f2feb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/props.d.ts
@@ -0,0 +1,3 @@
+import { TdGridProps } from './type';
+declare const props: TdGridProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/props.js
new file mode 100644
index 0000000..3285984
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/props.js
@@ -0,0 +1,29 @@
+const props = {
+ align: {
+ type: String,
+ value: 'center',
+ },
+ border: {
+ type: null,
+ value: false,
+ },
+ column: {
+ type: Number,
+ value: 4,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ gutter: {
+ type: Number,
+ },
+ hover: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/type.d.ts
new file mode 100644
index 0000000..7bd826c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdGridProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'left' | 'center';
+ };
+ border?: {
+ type: null;
+ value?: boolean | {
+ color?: string;
+ width?: string;
+ style?: 'solid' | 'dashed' | 'dotted' | 'double' | 'groove' | 'inset' | 'outset';
+ };
+ };
+ column?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ gutter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ hover?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'card';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/grid/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/grid/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/README.md
new file mode 100644
index 0000000..1a77bf7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/README.md
@@ -0,0 +1,101 @@
+---
+title: Icon 图标
+description: 图标。
+spline: base
+isComponent: true
+---
+
+


+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-icon": "tdesign-miniprogram/icon/icon"
+}
+```
+
+## 常见问题
+
+
+
+ 控制台告警:Faild to load font
+ 👇
+
+
+ 告警属于开发者工具的 bug,可以忽略,具体可以看 官网文档
+
+
+
+## 代码演示
+
+### 基础组件图标
+
+{{ base }}
+
+### 自定义组件图标
+
+{{ custom }}
+
+自定义图标用法,下面以 `iconfont` 为例
+
+#### 准备图标文件
+
+文件后缀应为`.wxss`,如下方代码块所示:
+
+```css
+@font-face {
+ font-family: 'icon'; // 使用自定义的字体名称
+ ···
+}
+
+.icon {
+ font-family: 'icon' !important; // 字体名称
+ ···
+}
+
+.icon-a-0:before { // icon 图标。注意 FontClass 前缀与 font-family 保持一致
+ content: '\e64d';
+}
+```
+- 添加所需图标,下载图标。图标库一般会提供 **在线链接** 或者 **下载至本地** 等使用方式。**在线链接** 方式会指向一个 `.css` 文件,可以下载或复制其内容,将其修改成后缀名为 `.wxss` 的文件
+- 将 `.wxss` 文件中的 `FontClass/Symbol前缀` 与 `Font Family` 两项内容保持一致,如: `FontClass/Symbol` 前缀为 `icon-`,则 `Font Family` 为 `icon`。
+
+> 注:若是采用 `下载至本地` 方式,需关注 `.css` 和 `.ttf` 文件。由于微信小程序不支持处理 `ttf、woff、eot` 等文件,但支持 `base64`,所以需要将 `.ttf` 文件转换为 `base64` (可借助转换工具,如 [transfonter.org](https://transfonter.org/),会得到一个 `stylesheet.css` 文件),然后将 `.css` 文件中的 `@font-face {}` 内容替换为 `stylesheet.css` 中的 `base64` 内容,最后将 `.css` 文件修改后缀为 `.wxss`
+
+#### 引入自定义图标
+
+- 全局引入:在项目 `app.wxss`,使用 `@import` 引入上述的 `.wxss` 文件
+- 局部引入:在 `page` 对应的 `.wxss` 中,使用 `@import` 引入上述的 `.wxss` 文件
+
+#### 自定义图标的使用
+
+ `` 组件中的 `prefix` 属性值与前面设置的 `Font Family` 保持一致,即 `prefix="icon"`,`name` 属性值为自定义图标名称,如图标的 `className` 为 `icon-a-1h`,则 `name="a-1h"`。
+
+### 图片链接
+
+{{ iconImage }}
+
+### 全部图标
+
+
+
+## API
+
+#### Props
+
+| 属性 | 值类型 | 默认值 | 必传 | 说明 |
+| ----------- | -------- | ---------- | ---- |----------------------------------------------------------------- |
+| name | String | - | Y | 图标名称或图片链接 |
+| size | String | - | N | 图标大小, 如 `20`, `20px`, `48rpx`, 默认单位是 `px` |
+| color | String | - | N | 图标颜色 |
+| prefix | String | - | N | 自定义图标前缀 |
+| external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、图片图标、基础图标等元素类名。`['t-class']` | N
+
+#### Events
+
+| 事件 | 参数 | 说明 |
+| ---------- | ------------ | -------------- |
+| click | \- | 点击图标时触发 |
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.d.ts
new file mode 100644
index 0000000..b70696a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.d.ts
@@ -0,0 +1,18 @@
+import { SuperComponent } from '../common/src/index';
+export default class Icon extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdIconProps;
+ data: {
+ componentPrefix: string;
+ classPrefix: string;
+ isImage: boolean;
+ iconStyle: any;
+ };
+ observers: {
+ 'name, color, size, style'(): void;
+ };
+ methods: {
+ onTap(event: any): void;
+ setIconStyle(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.js b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.js
new file mode 100644
index 0000000..45f782c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.js
@@ -0,0 +1,51 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { styles, addUnit } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-icon`;
+let Icon = class Icon extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ componentPrefix: prefix,
+ classPrefix: name,
+ isImage: false,
+ iconStyle: undefined,
+ };
+ this.observers = {
+ 'name, color, size, style'() {
+ this.setIconStyle();
+ },
+ };
+ this.methods = {
+ onTap(event) {
+ this.triggerEvent('click', event.detail);
+ },
+ setIconStyle() {
+ const { name, color, size } = this.properties;
+ const isImage = name.indexOf('/') !== -1;
+ const sizeValue = addUnit(size);
+ const sizeStyle = isImage ? { width: sizeValue, height: sizeValue } : {};
+ const colorStyle = color ? { color: color } : {};
+ const fontStyle = size ? { 'font-size': sizeValue } : {};
+ this.setData({
+ isImage,
+ iconStyle: `${styles(Object.assign(Object.assign(Object.assign({}, colorStyle), fontStyle), sizeStyle))}`,
+ });
+ },
+ };
+ }
+};
+Icon = __decorate([
+ wxComponent()
+], Icon);
+export default Icon;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.json b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.wxml
new file mode 100644
index 0000000..9146939
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.wxml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.wxss
new file mode 100644
index 0000000..9b6c865
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/icon.wxss
@@ -0,0 +1,770 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+@font-face {
+ font-family: t;
+ src: url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.eot'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.eot?#iefix') format('ded-opentype'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.woff') format('woff'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.ttf') format('truetype'), url('https://tdesign.gtimg.com/icon/0.1.2/fonts/t.svg') format('svg');
+ /* iOS 4.1- */
+ font-weight: normal;
+ font-style: normal;
+}
+.t-icon--image {
+ width: 1em;
+ height: 1em;
+}
+.t-icon__image {
+ vertical-align: top;
+ width: 100%;
+ height: 100%;
+}
+.t-icon-base {
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ text-align: center;
+ display: block;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.t-icon {
+ /* stylelint-disable-next-line declaration-no-important */
+ font-family: t !important;
+ /* prevent issues with browser extensions that change fonts */
+}
+.t-icon-add-circle:before {
+ content: '\E001';
+}
+.t-icon-add-rectangle:before {
+ content: '\E002';
+}
+.t-icon-add:before {
+ content: '\E003';
+}
+.t-icon-app:before {
+ content: '\E004';
+}
+.t-icon-arrow-down-rectangle:before {
+ content: '\E005';
+}
+.t-icon-arrow-down:before {
+ content: '\E006';
+}
+.t-icon-arrow-left:before {
+ content: '\E007';
+}
+.t-icon-arrow-right:before {
+ content: '\E008';
+}
+.t-icon-arrow-up:before {
+ content: '\E009';
+}
+.t-icon-attach:before {
+ content: '\E00A';
+}
+.t-icon-backtop-rectangle:before {
+ content: '\E00B';
+}
+.t-icon-backtop:before {
+ content: '\E00C';
+}
+.t-icon-backward:before {
+ content: '\E00D';
+}
+.t-icon-barcode:before {
+ content: '\E00E';
+}
+.t-icon-books:before {
+ content: '\E00F';
+}
+.t-icon-browse-off:before {
+ content: '\E010';
+}
+.t-icon-browse:before {
+ content: '\E011';
+}
+.t-icon-bulletpoint:before {
+ content: '\E012';
+}
+.t-icon-calendar:before {
+ content: '\E013';
+}
+.t-icon-call:before {
+ content: '\E014';
+}
+.t-icon-caret-down-small:before {
+ content: '\E015';
+}
+.t-icon-caret-down:before {
+ content: '\E016';
+}
+.t-icon-caret-left-small:before {
+ content: '\E017';
+}
+.t-icon-caret-left:before {
+ content: '\E018';
+}
+.t-icon-caret-right-small:before {
+ content: '\E019';
+}
+.t-icon-caret-right:before {
+ content: '\E01A';
+}
+.t-icon-caret-up-small:before {
+ content: '\E01B';
+}
+.t-icon-caret-up:before {
+ content: '\E01C';
+}
+.t-icon-cart:before {
+ content: '\E01D';
+}
+.t-icon-chart-bar:before {
+ content: '\E01E';
+}
+.t-icon-chart-bubble:before {
+ content: '\E01F';
+}
+.t-icon-chart-pie:before {
+ content: '\E020';
+}
+.t-icon-chart:before {
+ content: '\E021';
+}
+.t-icon-chat:before {
+ content: '\E022';
+}
+.t-icon-check-circle-filled:before {
+ content: '\E023';
+}
+.t-icon-check-circle:before {
+ content: '\E024';
+}
+.t-icon-check-rectangle-filled:before {
+ content: '\E025';
+}
+.t-icon-check-rectangle:before {
+ content: '\E026';
+}
+.t-icon-check:before {
+ content: '\E027';
+}
+.t-icon-chevron-down-circle:before {
+ content: '\E028';
+}
+.t-icon-chevron-down-rectangle:before {
+ content: '\E029';
+}
+.t-icon-chevron-down:before {
+ content: '\E02A';
+}
+.t-icon-chevron-left-circle:before {
+ content: '\E02B';
+}
+.t-icon-chevron-left-double:before {
+ content: '\E02C';
+}
+.t-icon-chevron-left-rectangle:before {
+ content: '\E02D';
+}
+.t-icon-chevron-left:before {
+ content: '\E02E';
+}
+.t-icon-chevron-right-circle:before {
+ content: '\E02F';
+}
+.t-icon-chevron-right-double:before {
+ content: '\E030';
+}
+.t-icon-chevron-right-rectangle:before {
+ content: '\E031';
+}
+.t-icon-chevron-right:before {
+ content: '\E032';
+}
+.t-icon-chevron-up-circle:before {
+ content: '\E033';
+}
+.t-icon-chevron-up-rectangle:before {
+ content: '\E034';
+}
+.t-icon-chevron-up:before {
+ content: '\E035';
+}
+.t-icon-circle:before {
+ content: '\E036';
+}
+.t-icon-clear:before {
+ content: '\E037';
+}
+.t-icon-close-circle-filled:before {
+ content: '\E038';
+}
+.t-icon-close-circle:before {
+ content: '\E039';
+}
+.t-icon-close-rectangle:before {
+ content: '\E03A';
+}
+.t-icon-close:before {
+ content: '\E03B';
+}
+.t-icon-cloud-download:before {
+ content: '\E03C';
+}
+.t-icon-cloud-upload:before {
+ content: '\E03D';
+}
+.t-icon-cloud:before {
+ content: '\E03E';
+}
+.t-icon-code:before {
+ content: '\E03F';
+}
+.t-icon-control-platform:before {
+ content: '\E040';
+}
+.t-icon-creditcard:before {
+ content: '\E041';
+}
+.t-icon-dashboard:before {
+ content: '\E042';
+}
+.t-icon-delete:before {
+ content: '\E043';
+}
+.t-icon-desktop:before {
+ content: '\E044';
+}
+.t-icon-discount-filled:before {
+ content: '\E045';
+}
+.t-icon-discount:before {
+ content: '\E046';
+}
+.t-icon-download:before {
+ content: '\E047';
+}
+.t-icon-edit-1:before {
+ content: '\E048';
+}
+.t-icon-edit:before {
+ content: '\E049';
+}
+.t-icon-ellipsis:before {
+ content: '\E04A';
+}
+.t-icon-enter:before {
+ content: '\E04B';
+}
+.t-icon-error-circle-filled:before {
+ content: '\E04C';
+}
+.t-icon-error-circle:before {
+ content: '\E04D';
+}
+.t-icon-error:before {
+ content: '\E04E';
+}
+.t-icon-file-add:before {
+ content: '\E04F';
+}
+.t-icon-file-copy:before {
+ content: '\E050';
+}
+.t-icon-file-excel:before {
+ content: '\E051';
+}
+.t-icon-file-icon:before {
+ content: '\E052';
+}
+.t-icon-file-image:before {
+ content: '\E053';
+}
+.t-icon-file-paste:before {
+ content: '\E054';
+}
+.t-icon-file-pdf:before {
+ content: '\E055';
+}
+.t-icon-file-powerpoint:before {
+ content: '\E056';
+}
+.t-icon-file-unknown:before {
+ content: '\E057';
+}
+.t-icon-file-word:before {
+ content: '\E058';
+}
+.t-icon-file:before {
+ content: '\E059';
+}
+.t-icon-filter-clear:before {
+ content: '\E05A';
+}
+.t-icon-filter:before {
+ content: '\E05B';
+}
+.t-icon-flag:before {
+ content: '\E05C';
+}
+.t-icon-folder-add:before {
+ content: '\E05D';
+}
+.t-icon-folder-open:before {
+ content: '\E05E';
+}
+.t-icon-folder:before {
+ content: '\E05F';
+}
+.t-icon-fork:before {
+ content: '\E060';
+}
+.t-icon-format-horizontal-align-bottom:before {
+ content: '\E061';
+}
+.t-icon-format-horizontal-align-center:before {
+ content: '\E062';
+}
+.t-icon-format-horizontal-align-top:before {
+ content: '\E063';
+}
+.t-icon-format-vertical-align-center:before {
+ content: '\E064';
+}
+.t-icon-format-vertical-align-left:before {
+ content: '\E065';
+}
+.t-icon-format-vertical-align-right:before {
+ content: '\E066';
+}
+.t-icon-forward:before {
+ content: '\E067';
+}
+.t-icon-fullscreen-exit:before {
+ content: '\E068';
+}
+.t-icon-fullscreen:before {
+ content: '\E069';
+}
+.t-icon-gender-female:before {
+ content: '\E06A';
+}
+.t-icon-gender-male:before {
+ content: '\E06B';
+}
+.t-icon-gift:before {
+ content: '\E06C';
+}
+.t-icon-heart-filled:before {
+ content: '\E06D';
+}
+.t-icon-heart:before {
+ content: '\E06E';
+}
+.t-icon-help-circle-filled:before {
+ content: '\E06F';
+}
+.t-icon-help-circle:before {
+ content: '\E070';
+}
+.t-icon-help:before {
+ content: '\E071';
+}
+.t-icon-history:before {
+ content: '\E072';
+}
+.t-icon-home:before {
+ content: '\E073';
+}
+.t-icon-hourglass:before {
+ content: '\E074';
+}
+.t-icon-image-error:before {
+ content: '\E075';
+}
+.t-icon-image:before {
+ content: '\E076';
+}
+.t-icon-info-circle-filled:before {
+ content: '\E077';
+}
+.t-icon-info-circle:before {
+ content: '\E078';
+}
+.t-icon-internet:before {
+ content: '\E079';
+}
+.t-icon-jump:before {
+ content: '\E07A';
+}
+.t-icon-laptop:before {
+ content: '\E07B';
+}
+.t-icon-layers:before {
+ content: '\E07C';
+}
+.t-icon-link-unlink:before {
+ content: '\E07D';
+}
+.t-icon-link:before {
+ content: '\E07E';
+}
+.t-icon-loading:before {
+ content: '\E07F';
+}
+.t-icon-location:before {
+ content: '\E080';
+}
+.t-icon-lock-off:before {
+ content: '\E081';
+}
+.t-icon-lock-on:before {
+ content: '\E082';
+}
+.t-icon-login:before {
+ content: '\E083';
+}
+.t-icon-logo-android:before {
+ content: '\E084';
+}
+.t-icon-logo-apple-filled:before {
+ content: '\E085';
+}
+.t-icon-logo-apple:before {
+ content: '\E086';
+}
+.t-icon-logo-chrome-filled:before {
+ content: '\E087';
+}
+.t-icon-logo-chrome:before {
+ content: '\E088';
+}
+.t-icon-logo-codepen:before {
+ content: '\E089';
+}
+.t-icon-logo-github-filled:before {
+ content: '\E08A';
+}
+.t-icon-logo-github:before {
+ content: '\E08B';
+}
+.t-icon-logo-ie-filled:before {
+ content: '\E08C';
+}
+.t-icon-logo-ie:before {
+ content: '\E08D';
+}
+.t-icon-logo-qq:before {
+ content: '\E08E';
+}
+.t-icon-logo-wechat:before {
+ content: '\E08F';
+}
+.t-icon-logo-wecom:before {
+ content: '\E090';
+}
+.t-icon-logo-windows-filled:before {
+ content: '\E091';
+}
+.t-icon-logo-windows:before {
+ content: '\E092';
+}
+.t-icon-logout:before {
+ content: '\E093';
+}
+.t-icon-mail:before {
+ content: '\E094';
+}
+.t-icon-menu-fold:before {
+ content: '\E095';
+}
+.t-icon-menu-unfold:before {
+ content: '\E096';
+}
+.t-icon-minus-circle-filled:before {
+ content: '\E097';
+}
+.t-icon-minus-circle:before {
+ content: '\E098';
+}
+.t-icon-minus-rectangle:before {
+ content: '\E099';
+}
+.t-icon-mirror:before {
+ content: '\E09A';
+}
+.t-icon-mobile-vibrate:before {
+ content: '\E09B';
+}
+.t-icon-mobile:before {
+ content: '\E09C';
+}
+.t-icon-money-circle:before {
+ content: '\E09D';
+}
+.t-icon-more:before {
+ content: '\E09E';
+}
+.t-icon-move:before {
+ content: '\E09F';
+}
+.t-icon-next:before {
+ content: '\E0A0';
+}
+.t-icon-notification-filled:before {
+ content: '\E0A1';
+}
+.t-icon-notification:before {
+ content: '\E0A2';
+}
+.t-icon-order-adjustment-column:before {
+ content: '\E0A3';
+}
+.t-icon-order-ascending:before {
+ content: '\E0A4';
+}
+.t-icon-order-descending:before {
+ content: '\E0A5';
+}
+.t-icon-page-first:before {
+ content: '\E0A6';
+}
+.t-icon-page-last:before {
+ content: '\E0A7';
+}
+.t-icon-pause-circle-filled:before {
+ content: '\E0A8';
+}
+.t-icon-photo:before {
+ content: '\E0A9';
+}
+.t-icon-pin-filled:before {
+ content: '\E0AA';
+}
+.t-icon-pin:before {
+ content: '\E0AB';
+}
+.t-icon-play-circle-filled:before {
+ content: '\E0AC';
+}
+.t-icon-play-circle-stroke:before {
+ content: '\E0AD';
+}
+.t-icon-play-circle:before {
+ content: '\E0AE';
+}
+.t-icon-play:before {
+ content: '\E0AF';
+}
+.t-icon-poweroff:before {
+ content: '\E0B0';
+}
+.t-icon-precise-monitor:before {
+ content: '\E0B1';
+}
+.t-icon-previous:before {
+ content: '\E0B2';
+}
+.t-icon-print:before {
+ content: '\E0B3';
+}
+.t-icon-qrcode:before {
+ content: '\E0B4';
+}
+.t-icon-queue:before {
+ content: '\E0B5';
+}
+.t-icon-rectangle:before {
+ content: '\E0B6';
+}
+.t-icon-refresh:before {
+ content: '\E0B7';
+}
+.t-icon-relativity:before {
+ content: '\E0B8';
+}
+.t-icon-remove:before {
+ content: '\E0B9';
+}
+.t-icon-rollback:before {
+ content: '\E0BA';
+}
+.t-icon-rollfront:before {
+ content: '\E0BB';
+}
+.t-icon-root-list:before {
+ content: '\E0BC';
+}
+.t-icon-rotation:before {
+ content: '\E0BD';
+}
+.t-icon-round:before {
+ content: '\E0BE';
+}
+.t-icon-save:before {
+ content: '\E0BF';
+}
+.t-icon-scan:before {
+ content: '\E0C0';
+}
+.t-icon-search:before {
+ content: '\E0C1';
+}
+.t-icon-secured:before {
+ content: '\E0C2';
+}
+.t-icon-server:before {
+ content: '\E0C3';
+}
+.t-icon-service:before {
+ content: '\E0C4';
+}
+.t-icon-setting:before {
+ content: '\E0C5';
+}
+.t-icon-share:before {
+ content: '\E0C6';
+}
+.t-icon-shop:before {
+ content: '\E0C7';
+}
+.t-icon-slash:before {
+ content: '\E0C8';
+}
+.t-icon-sound:before {
+ content: '\E0C9';
+}
+.t-icon-star-filled:before {
+ content: '\E0CA';
+}
+.t-icon-star:before {
+ content: '\E0CB';
+}
+.t-icon-stop-circle-1:before {
+ content: '\E0CC';
+}
+.t-icon-stop-circle-filled:before {
+ content: '\E0CD';
+}
+.t-icon-stop-circle:before {
+ content: '\E0CE';
+}
+.t-icon-stop:before {
+ content: '\E0CF';
+}
+.t-icon-swap-left:before {
+ content: '\E0D0';
+}
+.t-icon-swap-right:before {
+ content: '\E0D1';
+}
+.t-icon-swap:before {
+ content: '\E0D2';
+}
+.t-icon-thumb-down:before {
+ content: '\E0D3';
+}
+.t-icon-thumb-up:before {
+ content: '\E0D4';
+}
+.t-icon-time-filled:before {
+ content: '\E0D5';
+}
+.t-icon-time:before {
+ content: '\E0D6';
+}
+.t-icon-tips:before {
+ content: '\E0D7';
+}
+.t-icon-tools:before {
+ content: '\E0D8';
+}
+.t-icon-unfold-less:before {
+ content: '\E0D9';
+}
+.t-icon-unfold-more:before {
+ content: '\E0DA';
+}
+.t-icon-upload:before {
+ content: '\E0DB';
+}
+.t-icon-usb:before {
+ content: '\E0DC';
+}
+.t-icon-user-add:before {
+ content: '\E0DD';
+}
+.t-icon-user-avatar:before {
+ content: '\E0DE';
+}
+.t-icon-user-circle:before {
+ content: '\E0DF';
+}
+.t-icon-user-clear:before {
+ content: '\E0E0';
+}
+.t-icon-user-talk:before {
+ content: '\E0E1';
+}
+.t-icon-user:before {
+ content: '\E0E2';
+}
+.t-icon-usergroup-add:before {
+ content: '\E0E3';
+}
+.t-icon-usergroup-clear:before {
+ content: '\E0E4';
+}
+.t-icon-usergroup:before {
+ content: '\E0E5';
+}
+.t-icon-video:before {
+ content: '\E0E6';
+}
+.t-icon-view-column:before {
+ content: '\E0E7';
+}
+.t-icon-view-list:before {
+ content: '\E0E8';
+}
+.t-icon-view-module:before {
+ content: '\E0E9';
+}
+.t-icon-wallet:before {
+ content: '\E0EA';
+}
+.t-icon-wifi:before {
+ content: '\E0EB';
+}
+.t-icon-zoom-in:before {
+ content: '\E0EC';
+}
+.t-icon-zoom-out:before {
+ content: '\E0ED';
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/props.d.ts
new file mode 100644
index 0000000..a472c01
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/props.d.ts
@@ -0,0 +1,3 @@
+import { TdIconProps } from './type';
+declare const props: TdIconProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/props.js
new file mode 100644
index 0000000..51a5fd6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/props.js
@@ -0,0 +1,20 @@
+const props = {
+ color: {
+ type: String,
+ value: '',
+ },
+ name: {
+ type: String,
+ value: '',
+ required: true,
+ },
+ size: {
+ type: String,
+ value: '',
+ },
+ prefix: {
+ type: String,
+ value: undefined,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/type.d.ts
new file mode 100644
index 0000000..5b7da04
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/type.d.ts
@@ -0,0 +1,27 @@
+export interface TdIconProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ color?: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ name: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ required?: boolean;
+ };
+ prefix?: {
+ type: StringConstructor;
+ value?: string;
+ reuqired?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/icon/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/icon/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/README.md
new file mode 100644
index 0000000..44a10a9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/README.md
@@ -0,0 +1,63 @@
+---
+title: ImageViewer 图片预览
+description: 图片全屏放大预览效果,包含全屏背景色、页码位置样式、增加操作等规范。
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.10.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-image-viewer": "tdesign-miniprogram/image-viewer/image-viewer",
+}
+```
+
+## 代码演示
+
+### 类型
+
+基础图片预览
+
+{{ base }}
+
+带操作图片预览
+
+{{ delete }}
+
+
+## API
+
+### ImageViewer Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+background-color | String / Number | rgba(0, 0, 0, 1) | 遮罩的背景颜色 | N
+images | Array | [] | 图片数组。TS 类型:`Array` | N
+initial-index | Number | 0 | 默认展示第几项 | N
+show-index | Boolean | false | 是否显示页码 | N
+delete-btn | Boolean / String / Object / Slot | false | 是否显示删除操作,前提需要开启页码。值为字符串表示图标名称,值为 `true` 表示使用默认图标 `delete`,值为 `Object` 类型,表示透传至 `icon`,不传表示不显示图标。 | N
+close-btn | Boolean / String / Object / Slot | false | 是否显示关闭操作,前提需要开启页码。值为字符串表示图标名称,值为 `true` 表示使用默认图标 `close`,值为 `Object` 类型,表示透传至 `icon` ,不传表示不显示图标。 | N
+visible | Boolean | false | 隐藏/显示预览 | N
+default-visible | Boolean | undefined | 隐藏/显示预览。非受控属性 | N
+
+
+### ImageViewer Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(index: Number)` | 翻页时回调
+close | `(trigger: 'overlay' \| 'button' , visible: Boolean, index: Number)` | 点击操作按钮button或者overlay时触发
+delete | `(index: Number)` | 点击删除操作按钮时触发
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.d.ts
new file mode 100644
index 0000000..9d2b00d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.d.ts
@@ -0,0 +1,87 @@
+import { SuperComponent } from '../common/src/index';
+export default class ImageViewer extends SuperComponent {
+ externalClasses: string[];
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ backgroundColor?: {
+ type: StringConstructor;
+ optionalTypes: NumberConstructor[];
+ value?: string | number;
+ };
+ images?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ initialIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ showIndex?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ deleteBtn?: {
+ type: null;
+ value?: string | boolean | object;
+ };
+ closeBtn?: {
+ type: null;
+ value?: string | boolean | object;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ currentSwiperIndex: number;
+ windowHeight: number;
+ windowWidth: number;
+ swiperStyle: {};
+ imagesStyle: {};
+ };
+ options: {
+ multipleSlots: boolean;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ ready(): void;
+ observers: {
+ visible(value: any): void;
+ closeBtn(v: any): void;
+ deleteBtn(v: any): void;
+ };
+ methods: {
+ saveScreenSize(): void;
+ calcImageDisplayStyle(imageWidth: any, imageHeight: any): {
+ styleObj: {
+ width: string;
+ height: string;
+ left: string;
+ transform: string;
+ };
+ } | {
+ styleObj: {
+ width: string;
+ height: string;
+ left?: undefined;
+ transform?: undefined;
+ };
+ };
+ onImageLoadSuccess(e: WechatMiniprogram.TouchEvent): void;
+ onSwiperChange(e: WechatMiniprogram.TouchEvent): void;
+ onClose(e: any): void;
+ onDelete(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.js
new file mode 100644
index 0000000..dacb880
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.js
@@ -0,0 +1,129 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { styles, calcIcon } from '../common/utils';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-image-viewer`;
+let ImageViewer = class ImageViewer extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ currentSwiperIndex: 0,
+ windowHeight: 0,
+ windowWidth: 0,
+ swiperStyle: {},
+ imagesStyle: {},
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.controlledProps = [
+ {
+ key: 'visible',
+ event: 'close',
+ },
+ ];
+ this.observers = {
+ visible(value) {
+ this.setData({
+ currentSwiperIndex: value ? this.properties.initialIndex : 0,
+ });
+ },
+ closeBtn(v) {
+ this.setData({
+ _closeBtn: calcIcon(v, 'close'),
+ });
+ },
+ deleteBtn(v) {
+ this.setData({
+ _deleteBtn: calcIcon(v, 'delete'),
+ });
+ },
+ };
+ this.methods = {
+ saveScreenSize() {
+ const { windowHeight, windowWidth } = wx.getSystemInfoSync();
+ this.setData({
+ windowHeight,
+ windowWidth,
+ });
+ },
+ calcImageDisplayStyle(imageWidth, imageHeight) {
+ const { windowWidth, windowHeight } = this.data;
+ const ratio = imageWidth / imageHeight;
+ if (imageWidth < windowWidth && imageHeight < windowHeight) {
+ return {
+ styleObj: {
+ width: `${imageWidth * 2}rpx`,
+ height: `${imageHeight * 2}rpx`,
+ left: '50%',
+ transform: 'translate(-50%, -50%)',
+ },
+ };
+ }
+ if (ratio >= 1) {
+ return {
+ styleObj: {
+ width: '100vw',
+ height: `${(windowWidth / ratio) * 2}rpx`,
+ },
+ };
+ }
+ return {
+ styleObj: {
+ width: `${ratio * windowHeight * 2}rpx`,
+ height: '100vh',
+ left: '50%',
+ transform: 'translate(-50%, -50%)',
+ },
+ };
+ },
+ onImageLoadSuccess(e) {
+ const { detail: { width, height }, currentTarget: { dataset: { index }, }, } = e;
+ const { mode, styleObj } = this.calcImageDisplayStyle(width, height);
+ const originImagesStyle = this.data.imagesStyle;
+ const originSwiperStyle = this.data.swiperStyle;
+ this.setData({
+ swiperStyle: Object.assign(Object.assign({}, originSwiperStyle), { [index]: {
+ style: `height: ${styleObj.height}`,
+ } }),
+ imagesStyle: Object.assign(Object.assign({}, originImagesStyle), { [index]: {
+ mode,
+ style: styles(Object.assign({}, styleObj)),
+ } }),
+ });
+ },
+ onSwiperChange(e) {
+ const { detail: { current }, } = e;
+ this.setData({
+ currentSwiperIndex: current,
+ });
+ this._trigger('change', { index: current });
+ },
+ onClose(e) {
+ const { source } = e.currentTarget.dataset;
+ this._trigger('close', { visible: false, trigger: source || 'button', index: this.data.currentSwiperIndex });
+ },
+ onDelete() {
+ this._trigger('delete', { index: this.data.currentSwiperIndex });
+ },
+ };
+ }
+ ready() {
+ this.saveScreenSize();
+ }
+};
+ImageViewer = __decorate([
+ wxComponent()
+], ImageViewer);
+export default ImageViewer;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.json b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.json
new file mode 100644
index 0000000..6fb7873
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-image": "../image/image",
+ "t-icon": "../icon/icon",
+ "t-swiper": "../swiper/swiper"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.wxml
new file mode 100644
index 0000000..4379fd5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.wxml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{currentSwiperIndex + 1}}/{{images.length}}
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.wxss
new file mode 100644
index 0000000..dc2aef8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/image-viewer.wxss
@@ -0,0 +1,99 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-image-viewer {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ z-index: 1001;
+ height: 100%;
+ transform: translateZ(0);
+ overflow: hidden;
+}
+.t-image-viewer__mask {
+ position: fixed;
+ z-index: 1000;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+}
+.t-image-viewer__content {
+ width: 100vw;
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 1005;
+}
+.t-image-viewer__image {
+ width: 100%;
+ display: inline-block;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-image-viewer .t-image--external {
+ width: inherit;
+ height: inherit;
+ display: block;
+}
+.t-image-viewer__nav {
+ width: 100%;
+ position: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: var(--td-image-viewer-nav-height, 96rpx);
+ background-color: var(--td-image-viewer-nav-bg-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ left: 0;
+ color: var(--td-image-viewer-nav-color, var(--td-font-white-1, #ffffff));
+ z-index: 1005;
+}
+.t-image-viewer__nav-close {
+ margin-left: var(--td-image-viewer-close-margin-left, var(--td-spacer-1, 24rpx));
+}
+.t-image-viewer__nav-close:empty {
+ display: none;
+}
+.t-image-viewer__nav-delete {
+ margin-right: var(--td-image-viewer-delete-margin-right, var(--td-spacer-1, 24rpx));
+}
+.t-image-viewer__nav-delete:empty {
+ display: none;
+}
+.t-image-viewer__nav-close,
+.t-image-viewer__nav-delete {
+ font-size: 48rpx;
+}
+.t-image-viewer__nav-index {
+ flex: 1;
+ font-size: var(--td-image-viewer-nav-index-font-size, var(--td-font-size-base, 28rpx));
+ text-align: center;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/props.d.ts
new file mode 100644
index 0000000..9fec1e1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/props.d.ts
@@ -0,0 +1,3 @@
+import { TdImageViewerProps } from './type';
+declare const props: TdImageViewerProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/props.js
new file mode 100644
index 0000000..a1dbeb9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/props.js
@@ -0,0 +1,36 @@
+const props = {
+ backgroundColor: {
+ type: String,
+ optionalTypes: [Number],
+ value: 'rgba(0, 0, 0, 1)',
+ },
+ images: {
+ type: Array,
+ value: [],
+ },
+ initialIndex: {
+ type: Number,
+ value: 0,
+ },
+ showIndex: {
+ type: Boolean,
+ value: false,
+ },
+ deleteBtn: {
+ type: null,
+ value: false,
+ },
+ closeBtn: {
+ type: null,
+ value: false,
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/type.d.ts
new file mode 100644
index 0000000..35244b3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/type.d.ts
@@ -0,0 +1,39 @@
+export interface TdImageViewerProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ backgroundColor?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ images?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ initialIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ showIndex?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ deleteBtn?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ closeBtn?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image-viewer/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/image/README.en-US.md
new file mode 100644
index 0000000..599ccba
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Image Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+error | String / Slot | 'default' | \- | N
+external-classes | Array | - | `['t-class', 't-class-load']` | N
+height | String / Number | - | \- | N
+lazy | Boolean | false | \- | N
+loading | String / Slot | 'default' | \- | N
+mode | String | scaleToFill | options:scaleToFill/aspectFit/aspectFill/widthFix/heightFix/top/bottom/center/left/right/top left/top right/bottom left/bottom right | N
+shape | String | square | options:circle/round/square | N
+show-menu-by-longpress | Boolean | false | \- | N
+src | String | - | \- | N
+webp | Boolean | false | \- | N
+width | String / Number | - | \- | N
+
+### Image Events
+
+name | params | description
+-- | -- | --
+error | \- | \-
+load | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/image/README.md
new file mode 100644
index 0000000..659dbb5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/README.md
@@ -0,0 +1,65 @@
+---
+title: Image 图片
+description: 用于展示效果,主要为上下左右居中裁切、拉伸、平铺等方式。
+spline: base
+isComponent: true
+---
+
+


+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-image": "tdesign-miniprogram/image/image"
+}
+```
+
+## 代码演示
+
+### 裁切样式
+
+{{ base }}
+
+### 加载状态
+
+{{ status }}
+
+## 常见问题
+
+
+
+ 本地图片无法正确引用?
+ 👇
+
+
+ 建议使用绝对路径,而不是相对路径。绝对路径以 app.json 所在位置为基准。
+
+
+
+
+## API
+### Image Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+error | String / Slot | 'default' | 加载失败时显示的内容。值为 `default` 则表示使用默认加载失败风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `error`;值为其他则表示普通文本内容,如“加载失败” | N
+external-classes | Array | - | 组件类名,分别用于设置加载组件外层元素,中间内容等元素类名。`['t-class', 't-class-load']` | N
+height | String / Number | - | 高度,默认单位为`px` | N
+lazy | Boolean | false | 是否开启图片懒加载 | N
+loading | String / Slot | 'default' | 加载态内容。值为 `default` 则表示使用默认加载中风格;值为其他则表示普通文本内容,如“加载中” | N
+mode | String | scaleToFill | 图片裁剪、缩放的模式;[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/image.html)。可选项:scaleToFill/aspectFit/aspectFill/widthFix/heightFix/top/bottom/center/left/right/top left/top right/bottom left/bottom right | N
+shape | String | square | 图片圆角类型。可选项:circle/round/square | N
+show-menu-by-longpress | Boolean | false | 长按图片显示发送给朋友、收藏、保存图片、搜一搜、打开名片/前往群聊/打开小程序(若图片中包含对应二维码或小程序码)的菜单。 | N
+src | String | - | 图片链接 | N
+webp | Boolean | false | 默认不解析 webP 格式,只支持网络资源 | N
+width | String / Number | - | 宽度,默认单位为`px` | N
+
+### Image Events
+
+名称 | 参数 | 描述
+-- | -- | --
+error | \- | 图片加载失败时触发
+load | \- | 图片加载完成时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/image-info.json b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image-info.json
new file mode 100644
index 0000000..7157c4c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image-info.json
@@ -0,0 +1,75 @@
+{
+ "key": "Image",
+ "label": "图片",
+ "icon": "",
+ "properties": [
+ {
+ "key": "error",
+ "type": ["String", "TNode"],
+ "defaultValue": "'default'",
+ "desc": "加载失败时显示的内容。值为 `default` 则表示使用默认加载失败风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `error`;值为其他则表示普通文本内容,如“加载失败”",
+ "label": ""
+ },
+ {
+ "key": "externalClasses",
+ "type": ["Array"],
+ "defaultValue": "",
+ "desc": "组件类名,分别用于设置加载组件外层元素,中间内容等元素类名",
+ "label": ""
+ },
+ {
+ "key": "lazy",
+ "type": ["Boolean"],
+ "defaultValue": "false",
+ "desc": "是否开启图片懒加载",
+ "label": ""
+ },
+ {
+ "key": "loading",
+ "type": ["String", "TNode"],
+ "defaultValue": "'default'",
+ "desc": "加载态内容。值为 `default` 则表示使用默认加载中风格;值为空或者 `slot` 表示使用插槽渲染,插槽名称为 `loading`;值为其他则表示普通文本内容,如“加载中”",
+ "label": ""
+ },
+ {
+ "key": "MP_EXCLUDE_PROPS",
+ "type": ["String"],
+ "defaultValue": "",
+ "desc": "为避免重复或冲突,需要过滤掉的小程序原生属性",
+ "label": ""
+ },
+ {
+ "key": "MP_PROPS",
+ "type": ["String"],
+ "defaultValue": "",
+ "desc": "[小程序原生属性](https://developers.weixin.qq.com/miniprogram/dev/component/image.html)",
+ "label": ""
+ },
+ {
+ "key": "shape",
+ "type": ["String"],
+ "defaultValue": "square",
+ "desc": "图片圆角类型",
+ "label": ""
+ },
+ {
+ "key": "src",
+ "type": ["String"],
+ "defaultValue": "",
+ "desc": "图片链接",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "error",
+ "desc": "图片加载失败时触发",
+ "label": ""
+ },
+ {
+ "key": "load",
+ "desc": "图片加载完成时触发",
+ "label": ""
+ }
+ ]
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.d.ts
new file mode 100644
index 0000000..e86224a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent } from '../common/src/index';
+export default class Image extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdImageProps;
+ data: {
+ prefix: string;
+ isLoading: boolean;
+ isFailed: boolean;
+ innerStyle: string;
+ classPrefix: string;
+ };
+ preSrc: string;
+ lifetimes: {
+ attached(): void;
+ };
+ observers: {
+ src(): void;
+ };
+ methods: {
+ onLoaded(e: any): void;
+ onLoadError(e: any): void;
+ update(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.js
new file mode 100644
index 0000000..d832d1e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.js
@@ -0,0 +1,100 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import ImageProps from './props';
+import config from '../common/config';
+import { addUnit, getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-image`;
+let Image = class Image extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-load`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = ImageProps;
+ this.data = {
+ prefix,
+ isLoading: true,
+ isFailed: false,
+ innerStyle: '',
+ classPrefix: name,
+ };
+ this.preSrc = '';
+ this.lifetimes = {
+ attached() {
+ const { width, height } = this.data;
+ let innerStyle = '';
+ this.update();
+ if (width) {
+ innerStyle += `width: ${addUnit(width)};`;
+ }
+ if (height) {
+ innerStyle += `height: ${addUnit(height)};`;
+ }
+ this.setData({
+ innerStyle,
+ });
+ },
+ };
+ this.observers = {
+ src() {
+ if (this.preSrc === this.properties.src)
+ return;
+ this.update();
+ },
+ };
+ this.methods = {
+ onLoaded(e) {
+ const sdkVersion = wx.getSystemInfoSync().SDKVersion;
+ const versionArray = sdkVersion.split('.').map((v) => parseInt(v, 10));
+ const { mode } = this.properties;
+ const isInCompatible = versionArray[0] < 2 ||
+ (versionArray[0] === 2 && versionArray[1] < 10) ||
+ (versionArray[0] === 2 && versionArray[1] === 10 && versionArray[2] < 3);
+ if (mode === 'heightFix' && isInCompatible) {
+ const { height: picHeight, width: picWidth } = e.detail;
+ getRect(this, '#image').then((rect) => {
+ const { height } = rect;
+ const resultWidth = ((height / picHeight) * picWidth).toFixed(2);
+ this.setData({ innerStyle: `height: ${addUnit(height)}; width: ${resultWidth}px;` });
+ });
+ }
+ this.setData({
+ isLoading: false,
+ isFailed: false,
+ });
+ this.triggerEvent('load', e.detail);
+ },
+ onLoadError(e) {
+ this.setData({
+ isLoading: false,
+ isFailed: true,
+ });
+ this.triggerEvent('error', e.detail);
+ },
+ update() {
+ const { src } = this.properties;
+ this.preSrc = src;
+ if (!src) {
+ this.onLoadError({ errMsg: '图片链接为空' });
+ }
+ else {
+ this.setData({
+ isLoading: true,
+ isFailed: false,
+ });
+ }
+ },
+ };
+ }
+};
+Image = __decorate([
+ wxComponent()
+], Image);
+export default Image;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.json b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.json
new file mode 100644
index 0000000..5de7a66
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-loading": "../loading/loading",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.wxml
new file mode 100644
index 0000000..bde7038
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.wxml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ {{loading}}
+
+
+
+
+
+
+
+
+ {{error}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.wxss
new file mode 100644
index 0000000..1a3c3e1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/image.wxss
@@ -0,0 +1,58 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-image {
+ color: var(--td-image-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ vertical-align: top;
+}
+.t-image__mask {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: var(--td-image-loading-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ color: var(--td-image-loading-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-image--loading-text {
+ width: 0;
+ height: 0;
+}
+.t-image__common {
+ width: 100%;
+ height: 100%;
+}
+.t-image--shape-circle {
+ border-radius: 50%;
+ overflow: hidden;
+}
+.t-image--shape-round {
+ border-radius: var(--td-image-round-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-image--shape-square {
+ border-radius: 0;
+ overflow: hidden;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image/index.d.ts
new file mode 100644
index 0000000..0f85c43
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/index.d.ts
@@ -0,0 +1,4 @@
+import { TdImageProps } from './type';
+export declare type ImageProps = TdImageProps;
+export * from './props';
+export * from './image';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image/index.js
new file mode 100644
index 0000000..4fd3953
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/index.js
@@ -0,0 +1,2 @@
+export * from './props';
+export * from './image';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image/props.d.ts
new file mode 100644
index 0000000..0ab571b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/props.d.ts
@@ -0,0 +1,3 @@
+import { TdImageProps } from './type';
+declare const props: TdImageProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image/props.js
new file mode 100644
index 0000000..595db41
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/props.js
@@ -0,0 +1,44 @@
+const props = {
+ error: {
+ type: String,
+ value: 'default',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ height: {
+ type: null,
+ },
+ lazy: {
+ type: Boolean,
+ value: false,
+ },
+ loading: {
+ type: String,
+ value: 'default',
+ },
+ mode: {
+ type: String,
+ value: 'scaleToFill',
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ showMenuByLongpress: {
+ type: Boolean,
+ value: false,
+ },
+ src: {
+ type: String,
+ value: '',
+ },
+ webp: {
+ type: Boolean,
+ value: false,
+ },
+ width: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/image/type.d.ts
new file mode 100644
index 0000000..09a454f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/type.d.ts
@@ -0,0 +1,50 @@
+export interface TdImageProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ error?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-load'];
+ };
+ height?: {
+ type: null;
+ value?: string | number;
+ };
+ lazy?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ loading?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ mode?: {
+ type: StringConstructor;
+ value?: 'scaleToFill' | 'aspectFit' | 'aspectFill' | 'widthFix' | 'heightFix' | 'top' | 'bottom' | 'center' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right';
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'circle' | 'round' | 'square';
+ };
+ showMenuByLongpress?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ src?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ webp?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ width?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/image/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/image/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/image/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/README.en-US.md
new file mode 100644
index 0000000..6cac63c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/README.en-US.md
@@ -0,0 +1,9 @@
+:: BASE_DOC ::
+
+## API
+### IndexesAnchor Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class']` | N
+index | String / Number | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/README.md
new file mode 100644
index 0000000..dd0003e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/README.md
@@ -0,0 +1,9 @@
+:: BASE_DOC ::
+
+## API
+### IndexesAnchor Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class']` | N
+index | String / Number | - | 索引字符 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.d.ts
new file mode 100644
index 0000000..62d07a1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.d.ts
@@ -0,0 +1,13 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+export default class IndexesAnchor extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdIndexesAnchorProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ anchorStyle: string;
+ sticky: boolean;
+ active: boolean;
+ };
+ relations: RelationsOptions;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.js b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.js
new file mode 100644
index 0000000..704f5cb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.js
@@ -0,0 +1,34 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-indexes-anchor`;
+let IndexesAnchor = class IndexesAnchor extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ anchorStyle: '',
+ sticky: false,
+ active: false,
+ };
+ this.relations = {
+ '../indexes/indexes': {
+ type: 'parent',
+ },
+ };
+ }
+};
+IndexesAnchor = __decorate([
+ wxComponent()
+], IndexesAnchor);
+export default IndexesAnchor;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.json b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.wxml
new file mode 100644
index 0000000..bbe6d8e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.wxml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.wxss
new file mode 100644
index 0000000..0addf13
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/indexes-anchor.wxss
@@ -0,0 +1,77 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-indexes-anchor {
+ color: var(--td-indexes-anchor-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-indexes-anchor-font-size, 28rpx);
+ line-height: var(--td-indexes-anchor-line-height, 44rpx);
+}
+.t-indexes-anchor__header {
+ display: none;
+ padding: 8rpx 32rpx;
+ background-color: var(--td-indexes-anchor-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-indexes-anchor__header--active {
+ background-color: var(--td-indexes-anchor-active-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ position: relative;
+}
+.t-indexes-anchor__header--active::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-indexes-anchor__header--active::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-indexes-anchor__slot {
+ overflow: hidden;
+}
+.t-indexes-anchor__slot:empty + .t-indexes-anchor__header {
+ display: block;
+}
+.t-indexes-anchor__wrapper {
+ will-change: transform;
+}
+.t-indexes-anchor__wrapper--sticky {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 1;
+}
+.t-indexes-anchor__wrapper--active {
+ color: var(--td-indexes-anchor-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: var(--td-indexes-anchor-active-font-weight, 600);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/props.d.ts
new file mode 100644
index 0000000..7b52adf
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/props.d.ts
@@ -0,0 +1,3 @@
+import { TdIndexesAnchorProps } from './type';
+declare const props: TdIndexesAnchorProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/props.js
new file mode 100644
index 0000000..47fc176
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/props.js
@@ -0,0 +1,9 @@
+const props = {
+ externalClasses: {
+ type: Array,
+ },
+ index: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/type.d.ts
new file mode 100644
index 0000000..acdd553
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/type.d.ts
@@ -0,0 +1,14 @@
+export interface TdIndexesAnchorProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ index?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes-anchor/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/README.en-US.md
new file mode 100644
index 0000000..08ceb79
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Indexes Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+index-list | Array | - | `0.32.0`。Typescript:`string [] \| number[]` | N
+list | Array | [] | `deprecated`。Typescript:`ListItem[] ` `interface ListItem { title: string; index: string; children: { title: string; [key: string]: any} [] }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/indexes/type.ts) | N
+sticky | Boolean | true | Typescript:`Boolean` | N
+sticky-offset | Number | 0 | `1.0.0` | N
+
+### Indexes Events
+
+name | params | description
+-- | -- | --
+change | `(index: string \| number)` | `0.34.0`
+select | `(index: string \| number)` | \-
+
+### IndexesAnchor Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class']` | N
+index | String / Number | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/README.md
new file mode 100644
index 0000000..0bd7b41
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/README.md
@@ -0,0 +1,62 @@
+---
+title: Indexes 索引
+description: 用于页面中信息快速检索,可以根据目录中的页码快速找到所需的内容。
+spline: navigation
+isComponent: true
+---
+
+


+
+
+
+ IndexesAnchor 索引锚点组件于 0.32.0 版本上线,请留意版本。
+
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-indexes": "tdesign-miniprogram/indexes/indexes",
+ "t-indexes-anchor": "tdesign-miniprogram/indexes-anchor/indexes-anchor"
+}
+```
+
+## 代码演示
+
+### 基础索引
+
+
+{{ base }}
+
+### 自定义索引
+
+{{ custom }}
+
+### API
+### Indexes Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+index-list | Array | - | `0.32.0`。索引字符列表。不传默认 `A-Z`。TS 类型:`string [] \| number[]` | N
+list | Array | [] | 已废弃。索引列表的列表数据。每个元素包含三个子元素,index(string):索引值,例如1,2,3,...或A,B,C等;title(string): 索引标题,可不填将默认设为索引值;children(Array<{title: string}>): 子元素列表,title为子元素的展示文案。。TS 类型:`ListItem[] ` `interface ListItem { title: string; index: string; children: { title: string; [key: string]: any} [] }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/indexes/type.ts) | N
+sticky | Boolean | true | 索引是否吸顶,默认为true。TS 类型:`Boolean` | N
+sticky-offset | Number | 0 | `1.0.0`。锚点吸顶时与顶部的距离 | N
+
+### Indexes Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(index: string \| number)` | `0.34.0`。索引发生变更时触发事件
+select | `(index: string \| number)` | 点击侧边栏时触发事件
+
+### IndexesAnchor Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 组件类名,用于设置组件外层元素类名。`['t-class']` | N
+index | String / Number | - | 索引字符 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.d.ts
new file mode 100644
index 0000000..900550a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.d.ts
@@ -0,0 +1,44 @@
+import { RelationsOptions, SuperComponent } from '../common/src/index';
+export default class Indexes extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdIndexesProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ _height: number;
+ _indexList: any[];
+ scrollTop: number;
+ activeAnchor: any;
+ showTips: boolean;
+ };
+ relations: RelationsOptions;
+ behaviors: string[];
+ timer: any;
+ groupTop: any[];
+ sidebar: any;
+ observers: {
+ indexList(v: any): void;
+ height(v: any): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ setHeight(height: string | number): void;
+ setIndexList(list: any): void;
+ getAllRect(): void;
+ getAnchorsRect(): Promise;
+ getSidebarRect(): void;
+ toggleTips(flag: boolean): void;
+ setAnchorByIndex(index: any): void;
+ onClick(e: any): void;
+ onTouchMove(e: any): void;
+ onTouchCancel(): void;
+ onTouchEnd(e: any): void;
+ onAnchorTouch: (...args: any[]) => void;
+ setAnchorOnScroll(scrollTop: number): void;
+ onScroll({ scrollTop }: {
+ scrollTop: any;
+ }): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.js b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.js
new file mode 100644
index 0000000..0e07ea5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.js
@@ -0,0 +1,228 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect, throttle } from '../common/utils';
+import pageScrollMixin from '../mixins/page-scroll';
+const { prefix } = config;
+const name = `${prefix}-indexes`;
+let Indexes = class Indexes extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-sidebar`, `${prefix}-class-sidebar-item`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ _height: 0,
+ _indexList: [],
+ scrollTop: 0,
+ activeAnchor: null,
+ showTips: false,
+ };
+ this.relations = {
+ '../indexes-anchor/indexes-anchor': {
+ type: 'child',
+ },
+ };
+ this.behaviors = [
+ pageScrollMixin(function (event) {
+ this.onScroll(event);
+ }),
+ ];
+ this.timer = null;
+ this.groupTop = [];
+ this.sidebar = null;
+ this.observers = {
+ indexList(v) {
+ this.setIndexList(v);
+ },
+ height(v) {
+ this.setHeight(v);
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ var _a;
+ if (this.data._height === 0) {
+ this.setHeight();
+ }
+ if (((_a = this.data._indexList) === null || _a === void 0 ? void 0 : _a.length) === 0) {
+ this.setIndexList();
+ }
+ },
+ };
+ this.methods = {
+ setHeight(height) {
+ if (!height) {
+ const { windowHeight } = wx.getSystemInfoSync();
+ height = windowHeight;
+ }
+ this.setData({
+ _height: height,
+ }, () => {
+ this.getAllRect();
+ });
+ },
+ setIndexList(list) {
+ if (!list) {
+ const start = 'A'.charCodeAt(0);
+ const alphabet = [];
+ for (let i = start, end = start + 26; i < end; i += 1) {
+ alphabet.push(String.fromCharCode(i));
+ }
+ this.setData({ _indexList: alphabet });
+ }
+ else {
+ this.setData({ _indexList: list });
+ }
+ },
+ getAllRect() {
+ this.getAnchorsRect().then(() => {
+ this.groupTop.forEach((item, index) => {
+ const next = this.groupTop[index + 1];
+ item.totalHeight = ((next === null || next === void 0 ? void 0 : next.top) || Infinity) - item.top;
+ });
+ this.setAnchorOnScroll(0);
+ });
+ this.getSidebarRect();
+ },
+ getAnchorsRect() {
+ return Promise.all(this.$children.map((child) => getRect(child, `.${name}-anchor`).then((rect) => {
+ this.groupTop.push({
+ height: rect.height,
+ top: rect.top,
+ anchor: child.data.index,
+ });
+ })));
+ },
+ getSidebarRect() {
+ getRect(this, `#id-${name}__bar`).then((rect) => {
+ const { top, height } = rect;
+ const { length } = this.data._indexList;
+ this.sidebar = {
+ top,
+ height,
+ itemHeight: (height - (length - 1) * 2) / length,
+ };
+ });
+ },
+ toggleTips(flag) {
+ if (!flag) {
+ clearInterval(this.timer);
+ this.timer = setTimeout(() => {
+ this.setData({
+ showTips: false,
+ });
+ }, 300);
+ }
+ else {
+ this.setData({
+ showTips: true,
+ });
+ }
+ },
+ setAnchorByIndex(index) {
+ if (this.preIndex != null && this.preIndex === index)
+ return;
+ const { _indexList } = this.data;
+ const activeAnchor = _indexList[index];
+ const target = this.groupTop.find((item) => item.anchor === activeAnchor);
+ if (target) {
+ wx.pageScrollTo({
+ scrollTop: target.top,
+ duration: 0,
+ });
+ }
+ this.preIndex = index;
+ this.toggleTips(true);
+ this.triggerEvent('select', { index: activeAnchor });
+ if (activeAnchor !== this.data.activeAnchor) {
+ this.triggerEvent('change', { index: activeAnchor });
+ }
+ },
+ onClick(e) {
+ const { index } = e.currentTarget.dataset;
+ this.setAnchorByIndex(index);
+ },
+ onTouchMove(e) {
+ this.onAnchorTouch(e);
+ },
+ onTouchCancel() {
+ this.toggleTips(false);
+ },
+ onTouchEnd(e) {
+ this.toggleTips(false);
+ this.onAnchorTouch(e);
+ },
+ onAnchorTouch: throttle(function (e) {
+ const getAnchorIndex = (clientY) => {
+ const offsetY = clientY - this.sidebar.top;
+ if (offsetY <= 0) {
+ return 0;
+ }
+ if (offsetY > this.sidebar.height) {
+ return this.data._indexList.length - 1;
+ }
+ return Math.floor(offsetY / this.sidebar.itemHeight);
+ };
+ const index = getAnchorIndex(e.changedTouches[0].clientY);
+ this.setAnchorByIndex(index);
+ }, 1000 / 30),
+ setAnchorOnScroll(scrollTop) {
+ if (!this.groupTop) {
+ return;
+ }
+ const { sticky, stickyOffset } = this.data;
+ scrollTop += stickyOffset;
+ const curIndex = this.groupTop.findIndex((group) => scrollTop >= group.top - group.height && scrollTop <= group.top + group.totalHeight - group.height);
+ if (curIndex === -1)
+ return;
+ const curGroup = this.groupTop[curIndex];
+ if (this.data.activeAnchor !== curGroup.anchor) {
+ this.triggerEvent('change', { index: curGroup.anchor });
+ }
+ this.setData({
+ activeAnchor: curGroup.anchor,
+ });
+ if (sticky) {
+ const offset = curGroup.top - scrollTop;
+ const betwixt = offset < curGroup.height && offset > 0 && scrollTop > stickyOffset;
+ this.$children.forEach((child, index) => {
+ if (index === curIndex) {
+ child.setData({
+ sticky: scrollTop > stickyOffset,
+ active: true,
+ style: `height: ${curGroup.height}px`,
+ anchorStyle: `transform: translate3d(0, ${betwixt ? offset : 0}px, 0); top: ${stickyOffset}px`,
+ });
+ }
+ else if (index + 1 === curIndex) {
+ child.setData({
+ sticky: true,
+ active: true,
+ style: `height: ${curGroup.height}px`,
+ anchorStyle: `transform: translate3d(0, ${betwixt ? offset - curGroup.height : 0}px, 0); top: ${stickyOffset}px`,
+ });
+ }
+ else {
+ child.setData({ active: false, sticky: false, anchorStyle: '' });
+ }
+ });
+ }
+ },
+ onScroll({ scrollTop }) {
+ this.setAnchorOnScroll(scrollTop);
+ },
+ };
+ }
+};
+Indexes = __decorate([
+ wxComponent()
+], Indexes);
+export default Indexes;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.json b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.json
new file mode 100644
index 0000000..49bfc1b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-cell": "../cell/cell",
+ "t-cell-group": "../cell-group/cell-group"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.wxml
new file mode 100644
index 0000000..0969d41
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.wxss
new file mode 100644
index 0000000..7142382
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/indexes.wxss
@@ -0,0 +1,72 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-indexes {
+ position: relative;
+ height: 100vh;
+}
+.t-indexes__sidebar {
+ position: fixed;
+ right: var(--td-indexes-sidebar-right, 16rpx);
+ width: var(--td-indexes-sidebar-item-size, 40rpx);
+ color: var(--td-indexes-sidebar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-indexes-sidebar-font-size, 24rpx);
+ line-height: var(--td-indexes-sidebar-line-height, 40rpx);
+ display: flex;
+ flex-flow: column nowrap;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 1;
+}
+.t-indexes__sidebar-item {
+ border-radius: 50%;
+ position: relative;
+ text-align: center;
+}
+.t-indexes__sidebar-item--active {
+ background-color: var(--td-indexes-sidebar-active-bg-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ color: var(--td-indexes-sidebar-active-color, var(--td-font-white-1, #ffffff));
+}
+.t-indexes__sidebar-item + .t-indexes__sidebar-item {
+ margin-top: 4rpx;
+}
+.t-indexes__sidebar-tips {
+ width: var(--td-indexes-sidebar-tips-size, 96rpx);
+ height: var(--td-indexes-sidebar-tips-size, 96rpx);
+ line-height: var(--td-indexes-sidebar-tips-size, 96rpx);
+ text-align: center;
+ font-size: var(--td-indexes-sidebar-tips-font-size, 40rpx);
+ font-weight: 700;
+ color: var(--td-indexes-sidebar-tips-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-indexes-sidebar-tips-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ bottom: 0;
+ transform: translateY(-50%);
+ right: var(--td-indexes-sidebar-tips-right, 76rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/props.d.ts
new file mode 100644
index 0000000..a3e1619
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/props.d.ts
@@ -0,0 +1,3 @@
+import { TdIndexesProps } from './type';
+declare const props: TdIndexesProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/props.js
new file mode 100644
index 0000000..18e29a4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/props.js
@@ -0,0 +1,18 @@
+const props = {
+ indexList: {
+ type: Array,
+ },
+ list: {
+ type: Array,
+ value: [],
+ },
+ sticky: {
+ type: Boolean,
+ value: true,
+ },
+ stickyOffset: {
+ type: Number,
+ value: 0,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/type.d.ts
new file mode 100644
index 0000000..bcfb5d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/type.d.ts
@@ -0,0 +1,30 @@
+export interface TdIndexesProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ indexList?: {
+ type: ArrayConstructor;
+ value?: string[] | number[];
+ };
+ list?: {
+ type: ArrayConstructor;
+ value?: ListItem[];
+ };
+ sticky?: {
+ type: BooleanConstructor;
+ value?: Boolean;
+ };
+ stickyOffset?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
+export interface ListItem {
+ title: string;
+ index: string;
+ children: {
+ title: string;
+ [key: string]: any;
+ }[];
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/indexes/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/input/README.en-US.md
new file mode 100644
index 0000000..ba2161f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/README.en-US.md
@@ -0,0 +1,60 @@
+:: BASE_DOC ::
+
+## API
+
+### Input Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+align | String | left | options:left/center/right | N
+layout | String | horizontal | options:vertical/horizontal | N
+borderless | Boolean | true | \- | N
+clearable | Boolean | false | \- | N
+disabled | Boolean | - | \- | N
+error-message | String | - | `deprecated` | N
+external-classes | Array | - | `['t-class', 't-class-input', 't-class-placeholder', 't-class-error-msg']` | N
+format | Function | - | Typescript:`InputFormatType` `type InputFormatType = (value: InputValue) => string`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+label | String / Slot | - | \- | N
+maxcharacter | Number | - | \- | N
+maxlength | Number | - | \- | N
+placeholder | String | undefined | \- | N
+prefix-icon | String / Slot | - | \- | N
+readonly | Boolean | false | \- | N
+size | String | small | options:small/medium。Typescript:`'medium' \| 'small'` | N
+status | String | default | options:default/success/warning/error | N
+suffix | String / Slot | - | \- | N
+suffix-icon | String / Slot | - | \- | N
+tips | String / Slot | - | \- | N
+value | String / Number | - | Typescript:`InputValue` `type InputValue = string`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+default-value | String / Number | undefined | uncontrolled property。Typescript:`InputValue` `type InputValue = string`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+type | String | text | options:text/number/idcard/digit/safe-password/nickname | N
+password | Boolean | false | \- | N
+placeholder-style | String | - | required | Y
+placeholder-class | String | input-placeholder | \- | N
+cursor-spacing | Number | 0 | \- | N
+auto-focus | Boolean | false | \- | N
+focus | Boolean | false | \- | N
+confirm-type | String | done | options:send/search/next/go/done | N
+always-embed | Boolean | false | \- | N
+confirm-hold | Boolean | false | \- | N
+cursor | Number | - | required | Y
+selection-start | Number | -1 | \- | N
+selection-end | Number | -1 | \- | N
+adjust-position | Boolean | true | \- | N
+hold-keyboard | Boolean | false | \- | N
+safe-password-cert-path | String | - | \- | N
+safe-password-length | Number | - | \- | N
+safe-password-time-stamp | Number | - | \- | N
+safe-password-nonce | String | - | \- | N
+safe-password-salt | String | - | \- | N
+safe-password-custom-hash | String | - | \- | N
+### Input Events
+
+name | params | description
+-- | -- | --
+blur | `(value: InputValue)` | \-
+change | `(value: InputValue, cursor: number, keyCode: number)` | \-
+clear | \- | \-
+enter | `(value: InputValue)` | \-
+focus | `(value: InputValue)` | \-
+keyboardheightchange | `(height: number, duration: number)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/input/README.md
new file mode 100644
index 0000000..c91ade1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/README.md
@@ -0,0 +1,135 @@
+---
+title: Input 输入框
+description: 用于单行文本信息输入。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-input": "tdesign-miniprogram/input/input"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础输入框
+
+{{ base }}
+
+带字数限制输入框
+
+{{ maxlength }}
+
+带操作输入框
+
+{{ suffix }}
+
+带图标输入框
+
+{{ prefix }}
+
+特定类型输入框
+
+{{ special }}
+
+### 02 组件状态
+
+输入框状态
+
+{{ status }}
+
+信息超长状态
+
+{{ label }}
+
+### 03 组件样式
+
+内容位置
+
+{{ align }}
+
+竖排样式
+
+{{ layout }}
+
+非通栏样式
+
+{{ banner }}
+
+标签外置样式
+
+{{ bordered }}
+
+自定义样式文本框
+
+{{ custom }}
+
+
+## API
+### Input Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+align | String | left | 文本内容位置,居左/居中/居右。可选项:left/center/right | N
+layout | String | horizontal | 标题输入框布局方式。可选项:vertical/horizontal | N
+borderless | Boolean | false | 是否开启无边框模式 | N
+clearable | Boolean / Object | false | 是否可清空,默认不启动。值为 `true` 表示使用默认清除空按钮,值为 `Object` 表示透传至 `icon` | N
+disabled | Boolean | false | 是否禁用输入框 | N
+error-message | String | - | 已废弃。错误提示文本,值为空不显示(废弃属性,如果需要,请更为使用 status 和 tips) | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素、输入框、占位符、错误信息等元素类名。`['t-class','t-class-prefix-icon', 't-class-label', 't-class-input', 't-class-clearable', 't-class-suffix', 't-class-suffix-icon', 't-class-tips']` | N
+format | Function | - | 【开发中】指定输入框展示值的格式。TS 类型:`InputFormatType` `type InputFormatType = (value: InputValue) => number | string`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+label | String / Slot | - | 左侧文本。 | N
+maxcharacter | Number | - | 用户最多可以输入的字符个数,一个中文汉字表示两个字符长度。`maxcharacter` 和 `maxlength` 二选一使用 | N
+maxlength | Number | -1 | 用户最多可以输入的文本长度,一个中文等于一个计数长度。默认为 -1,不限制输入长度。`maxcharacter` 和 `maxlength` 二选一使用 | N
+placeholder | String | undefined | 占位符 | N
+prefix-icon | String / Object / Slot | - | 组件前置图标。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+readonly | Boolean | false | 【开发中】只读状态 | N
+size | String | medium | 【已废弃】输入框尺寸。可选项:small/medium。TS 类型:`'medium' \| 'small'` | N
+status | String | - | 输入框状态。可选项:success/warning/error | N
+suffix | String / Slot | - | 后置图标前的后置内容 | N
+suffix-icon | String / Object / Slot | - | 后置文本内容。值为字符串表示图标名称,值为 `Object` 类型,表示透传至 `icon`。 | N
+tips | String / Slot | - | 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式 | N
+type | String | text | 输入框类型。可选项:text/number/idcard/digit/safe-password/password/nickname | N
+value | String / Number | - | 输入框的值。TS 类型:`InputValue` `type InputValue = string | number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+default-value | String / Number | undefined | 输入框的值。非受控属性。TS 类型:`InputValue` `type InputValue = string | number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts) | N
+password | Boolean | false | 是否是密码类型(已废弃,请更为使用 type 指定输入框类型) | N
+placeholder-style | String | - | 必需。指定 placeholder 的样式 | Y
+placeholder-class | String | input-placeholder | 指定 placeholder 的样式类 | N
+cursor-spacing | Number | 0 | 指定光标与键盘的距离,取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 | N
+auto-focus | Boolean | false | (即将废弃,请直接使用 focus )自动聚焦,拉起键盘 | N
+focus | Boolean | false | 获取焦点 | N
+confirm-type | String | done | 设置键盘右下角按钮的文字,仅在type='text'时生效。
具体释义:
`send` 右下角按钮为“发送”;
`search` 右下角按钮为“搜索”;
`next` 右下角按钮为“下一个”;
`go` 右下角按钮为“前往”;
`done` 右下角按钮为“完成”。
[小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/component/input.html)。可选项:send/search/next/go/done | N
+always-embed | Boolean | false | 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) | N
+confirm-hold | Boolean | false | 点击键盘右下角按钮时是否保持键盘不收起 | N
+cursor | Number | - | 必需。指定 focus 时的光标位置 | Y
+selection-start | Number | -1 | 光标起始位置,自动聚集时有效,需与 selection-end 搭配使用 | N
+selection-end | Number | -1 | 光标结束位置,自动聚集时有效,需与 selection-start 搭配使用 | N
+adjust-position | Boolean | true | 键盘弹起时,是否自动上推页面 | N
+hold-keyboard | Boolean | false | focus时,点击页面的时候不收起键盘 | N
+safe-password-cert-path | String | - | 安全键盘加密公钥的路径,只支持包内路径 | N
+safe-password-length | Number | - | 安全键盘输入密码长度 | N
+safe-password-time-stamp | Number | - | 安全键盘加密时间戳 | N
+safe-password-nonce | String | - | 安全键盘加密盐值 | N
+safe-password-salt | String | - | 安全键盘计算 hash 盐值,若指定custom-hash 则无效 | N
+safe-password-custom-hash | String | - | 安全键盘计算 hash 的算法表达式,如 `md5(sha1('foo' + sha256(sm3(password + 'bar'))))` | N
+
+### Input Events
+
+名称 | 参数 | 描述
+-- | -- | --
+blur | `(value: InputValue)` | 失去焦点时触发
+change | `(value: InputValue, cursor: number, keyCode: number)` | 输入框值发生变化时触发;cursor 为光标位置;
+clear | \- | 清空按钮点击时触发
+enter | `(value: InputValue)` | 回车键按下时触发
+focus | `(value: InputValue)` | 获得焦点时触发
+keyboardheightchange | `(height: number, duration: number)` | 键盘高度发生变化的时候触发此事件
+nicknamereview | `(pass: boolean, timeout: boolean)`| 用户昵称审核完毕后触发,仅在 type 为 "nickname" 时有效
+click `v0.32.0`| `(trigger: InputTrigger)` | 点击事件。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/input/type.ts)。
`type InputTrigger = 'suffix' \| 'suffix-icon';`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.d.ts
new file mode 100644
index 0000000..810afef
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.d.ts
@@ -0,0 +1,34 @@
+import { SuperComponent } from '../common/src/index';
+export default class Input extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ behaviors: string[];
+ properties: import("./type").TdInputProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ classBasePrefix: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ observers: {
+ prefixIcon(v: any): void;
+ suffixIcon(v: any): void;
+ clearable(v: any): void;
+ };
+ methods: {
+ updateValue(value: any): void;
+ onInput(e: any): void;
+ onFocus(e: any): void;
+ onBlur(e: any): void;
+ onConfirm(e: any): void;
+ onSuffixClick(): void;
+ onSuffixIconClick(): void;
+ clearInput(e: any): void;
+ onKeyboardHeightChange(e: any): void;
+ onNickNameReview(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.js b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.js
new file mode 100644
index 0000000..c926018
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.js
@@ -0,0 +1,119 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getCharacterLength, calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-input`;
+let Input = class Input extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-prefix-icon`,
+ `${prefix}-class-label`,
+ `${prefix}-class-input`,
+ `${prefix}-class-clearable`,
+ `${prefix}-class-suffix`,
+ `${prefix}-class-suffix-icon`,
+ `${prefix}-class-tips`,
+ ];
+ this.behaviors = ['wx://form-field'];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ classBasePrefix: prefix,
+ };
+ this.lifetimes = {
+ ready() {
+ const { value } = this.properties;
+ this.updateValue(value == null ? '' : value);
+ },
+ };
+ this.observers = {
+ prefixIcon(v) {
+ this.setData({
+ _prefixIcon: calcIcon(v),
+ });
+ },
+ suffixIcon(v) {
+ this.setData({
+ _suffixIcon: calcIcon(v),
+ });
+ },
+ clearable(v) {
+ this.setData({
+ _clearIcon: calcIcon(v, 'close-circle-filled'),
+ });
+ },
+ };
+ this.methods = {
+ updateValue(value) {
+ const { maxcharacter, maxlength } = this.properties;
+ if (maxcharacter && maxcharacter > 0 && !Number.isNaN(maxcharacter)) {
+ const { length, characters } = getCharacterLength('maxcharacter', value, maxcharacter);
+ this.setData({
+ value: characters,
+ count: length,
+ });
+ }
+ else if (maxlength > 0 && !Number.isNaN(maxlength)) {
+ const { length, characters } = getCharacterLength('maxlength', value, maxlength);
+ this.setData({
+ value: characters,
+ count: length,
+ });
+ }
+ else {
+ this.setData({
+ value,
+ count: value ? String(value).length : 0,
+ });
+ }
+ },
+ onInput(e) {
+ const { value, cursor, keyCode } = e.detail;
+ this.updateValue(value);
+ this.triggerEvent('change', { value: this.data.value, cursor, keyCode });
+ },
+ onFocus(e) {
+ this.triggerEvent('focus', e.detail);
+ },
+ onBlur(e) {
+ this.triggerEvent('blur', e.detail);
+ },
+ onConfirm(e) {
+ this.triggerEvent('enter', e.detail);
+ },
+ onSuffixClick() {
+ this.triggerEvent('click', { trigger: 'suffix' });
+ },
+ onSuffixIconClick() {
+ this.triggerEvent('click', { trigger: 'suffix-icon' });
+ },
+ clearInput(e) {
+ this.triggerEvent('clear', e.detail);
+ this.setData({ value: '' });
+ },
+ onKeyboardHeightChange(e) {
+ this.triggerEvent('keyboardheightchange', e.detail);
+ },
+ onNickNameReview(e) {
+ this.triggerEvent('nicknamereview', e.detail);
+ },
+ };
+ }
+};
+Input = __decorate([
+ wxComponent()
+], Input);
+export default Input;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.json b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxml
new file mode 100644
index 0000000..3a50ba4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
+
+
+
+
+
+
+
+
+
+
+ {{suffix}}
+
+
+
+
+
+
+
+ {{tips}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxs
new file mode 100644
index 0000000..ee9eb11
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxs
@@ -0,0 +1,16 @@
+function getInputClass(classPrefix, suffix, align, disabled) {
+ var className = [classPrefix + '__control'];
+
+ if (align) {
+ className.push(classPrefix + '--' + align);
+ }
+
+ if (disabled) {
+ className.push(classPrefix + '__control--disabled');
+ }
+ return className.join(' ');
+}
+
+module.exports = {
+ getInputClass: getInputClass,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxss
new file mode 100644
index 0000000..d6b5154
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/input.wxss
@@ -0,0 +1,183 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-input {
+ background-color: var(--td-input-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ display: flex;
+ align-items: center;
+ flex: 1;
+ padding: var(--td-input-vertical-padding, 32rpx);
+}
+.t-input--border {
+ position: relative;
+}
+.t-input--border::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-input-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-input--border::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-input--border:after {
+ left: var(--td-input-border-left-space, 32rpx);
+ right: var(--td-input-border-right-space, 0);
+}
+.t-input--layout-vertical {
+ flex-direction: column;
+}
+.t-input__wrap--prefix {
+ display: flex;
+}
+.t-input__icon--prefix {
+ font-size: 48rpx;
+ color: var(--td-input-prefix-icon-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-input__label:not(:empty) {
+ min-width: 2em;
+ max-width: 5em;
+ font-size: var(--td-font-size-m, 32rpx);
+ line-height: 48rpx;
+ color: var(--td-input-label-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ margin-right: var(--td-spacer-2, 32rpx);
+}
+.t-input--layout-vertical .t-input__label:not(:empty) {
+ font-size: var(--td-font-size-base, 28rpx);
+ padding-bottom: 8rpx;
+}
+.t-input__icon--prefix:not(:empty) + .t-input__label:not(:empty) {
+ padding-left: 8rpx;
+}
+.t-input__label:not(:empty) + .t-input__wrap {
+ margin-left: var(--td-spacer-2, 32rpx);
+}
+.t-input__icon--prefix:not(:empty) + .t-input__label:empty {
+ margin-right: var(--td-spacer-2, 32rpx);
+}
+.t-input__wrap {
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: center;
+ flex-shrink: 1;
+ flex: 1;
+}
+.t-input__wrap .t-input__content {
+ display: flex;
+ align-items: center;
+ line-height: 48rpx;
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-input__wrap--clearable-icon,
+.t-input__wrap--suffix-icon,
+.t-input__wrap--suffix {
+ flex: 0 0 auto;
+ padding-left: var(--td-spacer-1, 24rpx);
+}
+.t-input__wrap--clearable-icon:empty,
+.t-input__wrap--suffix-icon:empty,
+.t-input__wrap--suffix:empty {
+ display: none;
+}
+.t-input__wrap--clearable-icon,
+.t-input__wrap--suffix-icon {
+ font-size: 48rpx;
+ color: var(--td-input-suffix-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-input__wrap--suffix {
+ font-size: var(--td-font-size-m, 32rpx);
+ color: var(--td-input-suffix-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-input__icon--prefix:empty,
+.t-input__tips:empty,
+.t-input__wrap--clearable-icon:empty,
+.t-input__wrap--suffix-icon:empty,
+.t-input__wrap--suffix:empty {
+ display: none;
+}
+.t-input__control {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ min-width: 0;
+ min-height: 48rpx;
+ margin: 0;
+ padding: 0;
+ color: var(--td-input-default-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: inherit;
+ background-color: transparent;
+ border: 0;
+ resize: none;
+ font-size: inherit;
+}
+.t-input__control--disabled {
+ color: var(--td-input-disabled-text-color, var(--td-text-color-disabled, var(--td-font-gray-4, rgba(0, 0, 0, 0.26))));
+ cursor: not-allowed;
+ opacity: 1;
+ -webkit-text-fill-color: currentColor;
+}
+.t-input__control--read-only {
+ cursor: default;
+}
+.t-input--left {
+ text-align: left;
+}
+.t-input--right {
+ text-align: right;
+}
+.t-input--center {
+ text-align: center;
+}
+.t-input__placeholder {
+ color: var(--td-input-placeholder-text-color, var(--td-text-color-placeholder, var(--td-font-gray-3, rgba(0, 0, 0, 0.4))));
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-input__tips {
+ font-size: var(--td-font-size-s, 24rpx);
+ line-height: 40rpx;
+ padding-top: 8rpx;
+}
+.t-input--default + .t-input__tips {
+ color: var(--td-input-default-tips-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-input--success + .t-input__tips {
+ color: var(--td-input-success-tips-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-input--warning + .t-input__tips {
+ color: var(--td-input-warning-tips-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-input--error + .t-input__tips {
+ color: var(--td-input-error-tips-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/input/props.d.ts
new file mode 100644
index 0000000..1bd2f9a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/props.d.ts
@@ -0,0 +1,3 @@
+import { TdInputProps } from './type';
+declare const props: TdInputProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/input/props.js
new file mode 100644
index 0000000..5b7cea3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/props.js
@@ -0,0 +1,159 @@
+const props = {
+ align: {
+ type: String,
+ value: 'left',
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+ borderless: {
+ type: Boolean,
+ value: false,
+ },
+ clearable: {
+ type: null,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ errorMessage: {
+ type: String,
+ value: '',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ format: {
+ type: null,
+ },
+ label: {
+ type: String,
+ },
+ maxcharacter: {
+ type: Number,
+ },
+ maxlength: {
+ type: Number,
+ value: -1,
+ },
+ placeholder: {
+ type: String,
+ value: undefined,
+ },
+ prefixIcon: {
+ type: null,
+ value: null,
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ status: {
+ type: String,
+ value: 'default',
+ },
+ suffix: {
+ type: String,
+ },
+ suffixIcon: {
+ type: null,
+ value: null,
+ },
+ tips: {
+ type: String,
+ },
+ value: {
+ type: String,
+ optionalTypes: [Number],
+ value: null,
+ },
+ defaultValue: {
+ type: String,
+ optionalTypes: [Number],
+ },
+ type: {
+ type: String,
+ value: 'text',
+ },
+ placeholderStyle: {
+ type: String,
+ value: '',
+ },
+ placeholderClass: {
+ type: String,
+ value: 'input-placeholder',
+ },
+ cursorSpacing: {
+ type: Number,
+ value: 0,
+ },
+ autoFocus: {
+ type: Boolean,
+ value: false,
+ },
+ focus: {
+ type: Boolean,
+ value: false,
+ },
+ confirmType: {
+ type: String,
+ value: 'done',
+ },
+ alwaysEmbed: {
+ type: Boolean,
+ value: false,
+ },
+ confirmHold: {
+ type: Boolean,
+ value: false,
+ },
+ cursor: {
+ type: Number,
+ },
+ selectionStart: {
+ type: Number,
+ value: -1,
+ },
+ selectionEnd: {
+ type: Number,
+ value: -1,
+ },
+ adjustPosition: {
+ type: Boolean,
+ value: true,
+ },
+ holdKeyboard: {
+ type: Boolean,
+ value: false,
+ },
+ safePasswordCertPath: {
+ type: String,
+ value: '',
+ },
+ safePasswordLength: {
+ type: Number,
+ },
+ safePasswordTimeStamp: {
+ type: Number,
+ },
+ safePasswordNonce: {
+ type: String,
+ value: '',
+ },
+ safePasswordSalt: {
+ type: String,
+ value: '',
+ },
+ safePasswordCustomHash: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/input/type.d.ts
new file mode 100644
index 0000000..451da4a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/type.d.ts
@@ -0,0 +1,174 @@
+export interface TdInputProps {
+ align?: {
+ type: StringConstructor;
+ value?: 'left' | 'center' | 'right';
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ borderless?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ clearable?: {
+ type: null;
+ value?: boolean | object;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ errorMessage?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-input', 't-class-placeholder', 't-class-error-msg'];
+ };
+ format?: {
+ type: null;
+ value?: InputFormatType;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxcharacter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxlength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ placeholder?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ prefixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'medium' | 'small';
+ };
+ status?: {
+ type: StringConstructor;
+ value?: 'default' | 'success' | 'warning' | 'error';
+ };
+ suffix?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ suffixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ tips?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ type?: {
+ type: StringConstructor;
+ value?: 'text' | 'number' | 'idcard' | 'digit' | 'safe-password' | 'password' | 'nickname';
+ };
+ value?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: InputValue;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: InputValue;
+ };
+ placeholderStyle: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placeholderClass?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ cursorSpacing?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ autoFocus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ focus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmType?: {
+ type: StringConstructor;
+ value?: 'send' | 'search' | 'next' | 'go' | 'done';
+ };
+ alwaysEmbed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmHold?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ cursor: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ selectionStart?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ selectionEnd?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ adjustPosition?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ holdKeyboard?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ safePasswordCertPath?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ safePasswordLength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ safePasswordTimeStamp?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ safePasswordNonce?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ safePasswordSalt?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ safePasswordCustomHash?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type InputFormatType = (value: InputValue) => number | string;
+export declare type InputValue = string | number;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/input/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/input/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/input/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/link/README.en-US.md
new file mode 100644
index 0000000..3b01055
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Link Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Slot | - | \- | N
+navigator-props | Object | - | \- | N
+prefix-icon | String / Object / Slot | - | \- | N
+size | String | medium | options:small/medium/large。Typescript:`SizeEnum` | N
+status | String | normal | options:normal/active/disabled | N
+disabled | Boolean | false | \- | N
+hover | Boolean | - | \- | N
+suffix-icon | String / Object / Slot | - | \- | N
+theme | String | default | options:default/primary/danger/warning/success | N
+underline | Boolean | - | \- | N
+
+### Link Events
+
+name | params | description
+-- | -- | --
+complete | \- | \-
+fail | \- | \-
+success | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/link/README.md
new file mode 100644
index 0000000..0a279a7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/README.md
@@ -0,0 +1,83 @@
+---
+title: Link 链接
+description: 文字超链接用于跳转一个新页面,如当前项目跳转,友情链接等。
+spline: navigation
+isComponent: true
+---
+
+
+
+ 该组件于 0.32.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-link": "tdesign-miniprogram/link/link",
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础文字链接
+
+{{ content }}
+
+下划线文字链接
+
+{{ underline }}
+
+前置图标文字链接
+
+{{ prefix }}
+
+后置图标文字链接
+
+{{ suffix }}
+
+### 组件状态
+
+不同主题
+
+{{ theme }}
+
+禁用状态
+
+{{ disabled }}
+
+### 组件样式
+
+链接尺寸
+
+{{ size }}
+
+## API
+### Link Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Slot | - | 链接内容 | N
+navigator-props | Object | - | 与 navigator 原生组件属性保持一致,具体使用参考:https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html。 | N
+prefix-icon | String / Object / Slot | - | 前置图标 | N
+size | String | medium | 尺寸。可选项:small/medium/large。TS 类型:`SizeEnum` | N
+status | String | normal | 已废弃。组件状态。可选项:normal/active/disabled | N
+disabled | Boolean | false | 是否为禁用态 | N
+hover | Boolean | - | 是否开启点击反馈 | N
+suffix-icon | String / Object / Slot | - | 前置图标 | N
+theme | String | default | 组件风格,依次为默认色、品牌色、危险色、警告色、成功色。可选项:default/primary/danger/warning/success | N
+underline | Boolean | - | 是否显示链接下划线 | N
+external-classes | Array | - | 样式类名。`['t-class', 't-class-hover', 't-class-prefix-icon', 't-class-content', 't-class-suffix-icon']` | N
+### Link Events
+
+名称 | 参数 | 描述
+-- | -- | --
+complete | \- | 页面链接执行完成后触发(失败或成功均会触发)
+fail | \- | 页面链接跳转失败后触发
+success | \- | 页面链接跳转成功后触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.d.ts
new file mode 100644
index 0000000..ad1b82f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.d.ts
@@ -0,0 +1,26 @@
+import { SuperComponent } from '../common/src/index';
+export default class Link extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdLinkProps;
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ 'theme, status, size, underline, navigatorProps'(): void;
+ prefixIcon(v: any): void;
+ suffixIcon(v: any): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ setClass(): void;
+ onSuccess(e: any): void;
+ onFail(e: any): void;
+ onComplete(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.js b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.js
new file mode 100644
index 0000000..c28b1af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.js
@@ -0,0 +1,80 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-link`;
+let Link = class Link extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-hover`,
+ `${prefix}-class-prefix-icon`,
+ `${prefix}-class-content`,
+ `${prefix}-class-suffix-icon`,
+ ];
+ this.properties = props;
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ 'theme, status, size, underline, navigatorProps'() {
+ this.setClass();
+ },
+ prefixIcon(v) {
+ this.setData({
+ _prefixIcon: calcIcon(v),
+ });
+ },
+ suffixIcon(v) {
+ this.setData({
+ _suffixIcon: calcIcon(v),
+ });
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { theme, size, underline, navigatorProps, disabled } = this.properties;
+ const classList = [name, `${name}--${theme}`, `${name}--${size}`];
+ if (underline) {
+ classList.push(`${name}--underline`);
+ }
+ if ((navigatorProps && !navigatorProps.url) || disabled) {
+ classList.push(`${name}--disabled`);
+ }
+ this.setData({
+ className: classList.join(' '),
+ });
+ },
+ onSuccess(e) {
+ this.triggerEvent('success', e);
+ },
+ onFail(e) {
+ this.triggerEvent('fail', e);
+ },
+ onComplete(e) {
+ this.triggerEvent('complete', e);
+ },
+ };
+ }
+};
+Link = __decorate([
+ wxComponent()
+], Link);
+export default Link;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.json b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.wxml
new file mode 100644
index 0000000..94acf77
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.wxml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.wxss
new file mode 100644
index 0000000..1cae7ee
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/link.wxss
@@ -0,0 +1,148 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-link--small .t-link__content {
+ font-size: 24rpx;
+ line-height: 40rpx;
+}
+.t-link--small .t-link__prefix-icon,
+.t-link--small .t-link__suffix-icon {
+ font-size: 28rpx;
+}
+.t-link--medium .t-link__content {
+ font-size: 28rpx;
+ line-height: 44rpx;
+}
+.t-link--medium .t-link__prefix-icon,
+.t-link--medium .t-link__suffix-icon {
+ font-size: 32rpx;
+}
+.t-link--large .t-link__content {
+ font-size: 32rpx;
+ line-height: 48rpx;
+}
+.t-link--large .t-link__prefix-icon,
+.t-link--large .t-link__suffix-icon {
+ font-size: 36rpx;
+}
+.t-link--primary {
+ color: var(--td-link-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-link--primary.t-link--underline::after {
+ border-color: var(--td-link-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-link--primary.t-link--disabled {
+ color: var(--td-link-primary-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-link--primary.t-link--hover {
+ color: var(--td-link-primary-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--primary.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-primary-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--success {
+ color: var(--td-link-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-link--success.t-link--underline::after {
+ border-color: var(--td-link-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-link--success.t-link--disabled {
+ color: var(--td-link-success-disabled-color, var(--td-success-color-disabled, var(--td-success-color-3, #92dab2)));
+}
+.t-link--success.t-link--hover {
+ color: var(--td-link-success-active-color, var(--td-success-color-active, var(--td-success-color-6, #008858)));
+}
+.t-link--success.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-success-active-color, var(--td-success-color-active, var(--td-success-color-6, #008858)));
+}
+.t-link--warning {
+ color: var(--td-link-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-link--warning.t-link--underline::after {
+ border-color: var(--td-link-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-link--warning.t-link--disabled {
+ color: var(--td-link-warning-disabled-color, var(--td-warning-color-disabled, var(--td-warning-color-3, #ffb98c)));
+}
+.t-link--warning.t-link--hover {
+ color: var(--td-link-warning-active-color, var(--td-warning-color-active, var(--td-warning-color-6, #be5a00)));
+}
+.t-link--warning.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-warning-active-color, var(--td-warning-color-active, var(--td-warning-color-6, #be5a00)));
+}
+.t-link--default {
+ color: var(--td-link-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-link--default.t-link--underline::after {
+ border-color: var(--td-link-default-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-link--default.t-link--disabled {
+ color: var(--td-link-default-disabled-color, var(--td-text-color-disabled, var(--td-font-gray-4, rgba(0, 0, 0, 0.26))));
+}
+.t-link--default.t-link--hover {
+ color: var(--td-link-default-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--default.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-default-active-color, var(--td-brand-color-active, var(--td-primary-color-8, #003cab)));
+}
+.t-link--danger {
+ color: var(--td-link-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-link--danger.t-link--underline::after {
+ border-color: var(--td-link-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-link--danger.t-link--disabled {
+ color: var(--td-link-danger-disabled-color, var(--td-error-color-disabled, var(--td-error-color-3, #ffb9b0)));
+}
+.t-link--danger.t-link--hover {
+ color: var(--td-link-danger-active-color, var(--td-error-color-active, var(--td-error-color-7, #ad352f)));
+}
+.t-link--danger.t-link--hover.t-link--underline::after {
+ border-color: var(--td-link-danger-active-color, var(--td-error-color-active, var(--td-error-color-7, #ad352f)));
+}
+.t-link {
+ position: relative;
+ display: flex;
+ align-items: center;
+ box-sizing: content-box;
+}
+.t-link--underline::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ right: 0;
+ height: 0;
+ bottom: 0;
+ opacity: 1;
+ border-bottom: 2rpx solid #cd0be7;
+}
+.t-link__prefix-icon:not(:empty) + .t-link__content:not(:empty) {
+ padding-left: 8rpx;
+}
+.t-link__content:not(:empty) + .t-link__suffix-icon:not(:empty) {
+ padding-left: 8rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/link/props.d.ts
new file mode 100644
index 0000000..bbdacae
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/props.d.ts
@@ -0,0 +1,3 @@
+import { TdLinkProps } from './type';
+declare const props: TdLinkProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/link/props.js
new file mode 100644
index 0000000..6e189d8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/props.js
@@ -0,0 +1,38 @@
+const props = {
+ content: {
+ type: String,
+ },
+ navigatorProps: {
+ type: Object,
+ },
+ prefixIcon: {
+ type: null,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ status: {
+ type: String,
+ value: 'normal',
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ hover: {
+ type: Boolean,
+ value: false,
+ },
+ suffixIcon: {
+ type: null,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ underline: {
+ type: Boolean,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/link/type.d.ts
new file mode 100644
index 0000000..6615084
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/type.d.ts
@@ -0,0 +1,43 @@
+import { SizeEnum } from '../common/common';
+export interface TdLinkProps {
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ navigatorProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ prefixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ status?: {
+ type: StringConstructor;
+ value?: 'normal' | 'active' | 'disabled';
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ hover?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ suffixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'primary' | 'danger' | 'warning' | 'success';
+ };
+ underline?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/link/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/link/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/link/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/README.en-US.md
new file mode 100644
index 0000000..1969d2e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/README.en-US.md
@@ -0,0 +1,21 @@
+:: BASE_DOC ::
+
+## API
+
+### Loading Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+delay | Number | 0 | \- | N
+duration | Number | 800 | \- | N
+external-classes | Array | - | `['t-class', 't-class-text', 't-class-indicator']` | N
+indicator | Boolean | true | \- | N
+inherit-color | Boolean | false | \- | N
+layout | String | horizontal | options:horizontal/vertical | N
+loading | Boolean | true | \- | N
+pause | Boolean | false | \- | N
+progress | Number | - | \- | N
+reverse | Boolean | - | \- | N
+size | String | '40rpx' | \- | N
+text | String / Slot | - | \- | N
+theme | String | circular | options:circular/spinner/dots | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/README.md
new file mode 100644
index 0000000..9ca1917
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/README.md
@@ -0,0 +1,70 @@
+---
+title: Loading 加载
+description: 用于表示页面或操作的加载状态,给予用户反馈的同时减缓等待的焦虑感,由一个或一组反馈动效组成。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-loading": "tdesign-miniprogram/loading/loading"
+}
+```
+
+## 代码演示
+
+### 纯icon
+
+{{ base }}
+
+### icon加文字横向
+
+{{ horizontal }}
+
+### icon加文字竖向
+
+{{ vertical }}
+
+### 纯文字
+
+{{ text }}
+
+### 加载失败
+
+{{ error }}
+
+### 状态
+
+{{ status }}
+
+### 加载速度
+
+{{ duration }}
+
+### 规格
+
+{{ size }}
+
+## API
+### Loading Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+delay | Number | 0 | 延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒 | N
+duration | Number | 800 | 加载动画执行完成一次的时间,单位:毫秒 | N
+external-classes | Array | - | 组件类名,分别用于设置加载组件外层元素,加载组件文本,加载组件指示符,加载指示符内侧同心圆等元素类名。`['t-class', 't-class-text', 't-class-indicator']` | N
+indicator | Boolean | true | 是否显示加载指示符 | N
+inherit-color | Boolean | false | 是否继承父元素颜色 | N
+layout | String | horizontal | 对齐方式。可选项:horizontal/vertical | N
+loading | Boolean | true | 是否处于加载状态 | N
+pause | Boolean | false | 是否暂停动画 | N
+progress | Number | - | 加载进度 | N
+reverse | Boolean | - | 加载动画是否反向 | N
+size | String | '40rpx' | 尺寸,示例:40rpx/20px | N
+text | String / Slot | - | 加载提示文案 | N
+theme | String | circular | 加载组件类型。可选项:circular/spinner/dots | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/index.d.ts
new file mode 100644
index 0000000..2806bd6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/index.d.ts
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './loading';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/index.js
new file mode 100644
index 0000000..2806bd6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/index.js
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './loading';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.d.ts
new file mode 100644
index 0000000..512396e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.d.ts
@@ -0,0 +1,81 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdLoadingProps } from './type';
+export interface LoadingProps extends TdLoadingProps {
+}
+export default class Loading extends SuperComponent {
+ externalClasses: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ show: boolean;
+ };
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delay?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-text", "t-class-indicator"];
+ };
+ indicator?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ inheritColor?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: "horizontal" | "vertical";
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ pause?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ progress?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ reverse?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: "error" | "circular" | "spinner" | "bar" | "dots";
+ };
+ };
+ timer: any;
+ observers: {
+ loading(this: any, cur: any): void;
+ };
+ lifetimes: {
+ detached(): void;
+ };
+ refreshPage(): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.js b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.js
new file mode 100644
index 0000000..f59a423
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.js
@@ -0,0 +1,61 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-loading`;
+let Loading = class Loading extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-text`, `${prefix}-class-indicator`];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ show: true,
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = Object.assign({}, props);
+ this.timer = null;
+ this.observers = {
+ loading(cur) {
+ const { delay } = this.properties;
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ if (cur) {
+ if (delay) {
+ this.timer = setTimeout(() => {
+ this.setData({ show: cur });
+ this.timer = null;
+ }, delay);
+ }
+ else {
+ this.setData({ show: cur });
+ }
+ }
+ else {
+ this.setData({ show: cur });
+ }
+ },
+ };
+ this.lifetimes = {
+ detached() {
+ clearTimeout(this.timer);
+ },
+ };
+ }
+ refreshPage() {
+ this.triggerEvent('reload');
+ }
+};
+Loading = __decorate([
+ wxComponent()
+], Loading);
+export default Loading;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.json b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.wxml
new file mode 100644
index 0000000..a619f46
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.wxml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{text}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.wxss
new file mode 100644
index 0000000..155e4d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/loading.wxss
@@ -0,0 +1,218 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-loading {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 24rpx;
+}
+.t-loading__spinner {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+ max-width: 100%;
+ max-height: 100%;
+ animation: rotate 0.8s linear infinite;
+ color: var(--td-loading-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-loading__spinner.reverse {
+ animation-name: rotateReverse;
+}
+.t-loading__spinner--spinner {
+ animation-timing-function: steps(12);
+ color: var(--td-font-gray-1, rgba(0, 0, 0, 0.9));
+}
+.t-loading__spinner--spinner .t-loading__dot {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.t-loading__spinner--spinner .t-loading__dot::before {
+ display: block;
+ width: 5rpx;
+ height: 25%;
+ margin: 0 auto;
+ background-color: currentColor;
+ border-radius: 40%;
+ content: ' ';
+}
+.t-loading__spinner--circular .t-loading__circular {
+ border-radius: 100%;
+ width: 100%;
+ height: 100%;
+ background: conic-gradient(from 180deg at 50% 50%, rgba(255, 255, 255, 0) 0deg, rgba(255, 255, 255, 0) 60deg, currentColor 330deg, rgba(255, 255, 255, 0) 360deg);
+ mask: radial-gradient(transparent calc(50% - 1rpx), #fff 50%);
+ /* stylelint-disable-next-line */
+ -webkit-mask: radial-gradient(transparent calc(50% - 1rpx), #fff 50%);
+}
+.t-loading__spinner--dots {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ animation: none;
+}
+.t-loading__spinner--dots .t-loading__dot {
+ width: 20%;
+ height: 20%;
+ border-radius: 50%;
+ background-color: currentColor;
+ animation-duration: 1.8s;
+ animation-name: dotting;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-fill-mode: both;
+}
+.t-loading__text {
+ font-size: var(--td-loading-text-font-size, 24rpx);
+ line-height: var(--td-loading-text-line-height, 40rpx);
+}
+.t-loading__text--vertical:not(:first-child):not(:empty) {
+ margin-top: 12rpx;
+}
+.t-loading__text--horizontal:not(:first-child):not(:empty) {
+ margin-left: 16rpx;
+}
+.t-loading--vertical {
+ flex-direction: column;
+}
+.t-loading--horizontal {
+ flex-direction: row;
+ vertical-align: top;
+}
+@keyframes t-bar {
+ 0% {
+ width: 0;
+ }
+ 50% {
+ width: 70%;
+ }
+ 100% {
+ width: 80%;
+ }
+}
+@keyframes t-bar-loaded {
+ 0% {
+ height: 6rpx;
+ opacity: 1;
+ width: 90%;
+ }
+ 50% {
+ height: 6rpx;
+ opacity: 1;
+ width: 100%;
+ }
+ 100% {
+ height: 0;
+ opacity: 0;
+ width: 100%;
+ }
+}
+.t-loading__dot:nth-of-type(1) {
+ transform: rotate(30deg);
+ opacity: 0;
+}
+.t-loading__dot:nth-of-type(2) {
+ transform: rotate(60deg);
+ opacity: 0.08333333;
+}
+.t-loading__dot:nth-of-type(3) {
+ transform: rotate(90deg);
+ opacity: 0.16666667;
+}
+.t-loading__dot:nth-of-type(4) {
+ transform: rotate(120deg);
+ opacity: 0.25;
+}
+.t-loading__dot:nth-of-type(5) {
+ transform: rotate(150deg);
+ opacity: 0.33333333;
+}
+.t-loading__dot:nth-of-type(6) {
+ transform: rotate(180deg);
+ opacity: 0.41666667;
+}
+.t-loading__dot:nth-of-type(7) {
+ transform: rotate(210deg);
+ opacity: 0.5;
+}
+.t-loading__dot:nth-of-type(8) {
+ transform: rotate(240deg);
+ opacity: 0.58333333;
+}
+.t-loading__dot:nth-of-type(9) {
+ transform: rotate(270deg);
+ opacity: 0.66666667;
+}
+.t-loading__dot:nth-of-type(10) {
+ transform: rotate(300deg);
+ opacity: 0.75;
+}
+.t-loading__dot:nth-of-type(11) {
+ transform: rotate(330deg);
+ opacity: 0.83333333;
+}
+.t-loading__dot:nth-of-type(12) {
+ transform: rotate(360deg);
+ opacity: 0.91666667;
+}
+@keyframes rotate {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+@keyframes rotateReverse {
+ from {
+ transform: rotate(360deg);
+ }
+ to {
+ transform: rotate(0deg);
+ }
+}
+@keyframes dotting {
+ 0% {
+ opacity: 0.15;
+ }
+ 1% {
+ opacity: 0.8;
+ }
+ 33% {
+ opacity: 0.8;
+ }
+ 34% {
+ opacity: 0.15;
+ }
+ 100% {
+ opacity: 0.15;
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/props.d.ts
new file mode 100644
index 0000000..a05a659
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/props.d.ts
@@ -0,0 +1,3 @@
+import { TdLoadingProps } from './type';
+declare const props: TdLoadingProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/props.js
new file mode 100644
index 0000000..d86ae7a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/props.js
@@ -0,0 +1,51 @@
+const props = {
+ delay: {
+ type: Number,
+ value: 0,
+ },
+ duration: {
+ type: Number,
+ value: 800,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ indicator: {
+ type: Boolean,
+ value: true,
+ },
+ inheritColor: {
+ type: Boolean,
+ value: false,
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+ loading: {
+ type: Boolean,
+ value: true,
+ },
+ pause: {
+ type: Boolean,
+ value: false,
+ },
+ progress: {
+ type: Number,
+ },
+ reverse: {
+ type: Boolean,
+ },
+ size: {
+ type: String,
+ value: '40rpx',
+ },
+ text: {
+ type: String,
+ },
+ theme: {
+ type: String,
+ value: 'circular',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/type.d.ts
new file mode 100644
index 0000000..5b3aa71
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/type.d.ts
@@ -0,0 +1,58 @@
+export interface TdLoadingProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delay?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-text', 't-class-indicator'];
+ };
+ indicator?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ inheritColor?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ pause?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ progress?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ reverse?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ text?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'circular' | 'spinner' | 'bar' | 'error' | 'dots';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/loading/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/loading/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/message/README.en-US.md
new file mode 100644
index 0000000..dd3225a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/README.en-US.md
@@ -0,0 +1,29 @@
+:: BASE_DOC ::
+
+## API
+### Message Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+action | String / Slot | - | operation | N
+align | String | left | options:left/center。Typescript:`MessageAlignType` `type MessageAlignType = 'left' \| 'center'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+close-btn | String / Boolean / Object / Slot | false | \- | N
+content | String / Slot | - | \- | N
+duration | Number | 3000 | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-icon', 't-class-link', 't-class-close-btn']` | N
+icon | String / Boolean / Object/ Slot | true | Typescript:`boolean \| 'info' \| 'bell'` | N
+marquee | Boolean / Object | false | Typescript:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+offset | Array | - | Typescript:`Array` | N
+theme | String | info | options:info/success/warning/error。Typescript:`MessageThemeList` `type MessageThemeList = 'info' \| 'success' \| 'warning' \| 'error'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+visible | Boolean | false | \- | N
+default-visible | Boolean | false | uncontrolled property | N
+z-index | Number | 15000 | \- | N
+
+### Message Events
+
+name | params | description
+-- | -- | --
+action-btn-click | - | \-
+close-btn-click | - | \-
+duration-end | \- | \-
+link-click | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/message/README.md
new file mode 100644
index 0000000..4660f7a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/README.md
@@ -0,0 +1,69 @@
+---
+title: Message 消息通知
+description: 用于轻量级反馈或提示,不会打断用户操作。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-message": "tdesign-miniprogram/message/message"
+}
+```
+
+### 引入 API
+
+若以 API 形式调用 Message,则需在页面 `page.js` 中引入组件 API:
+
+```js
+import Message from 'tdesign-miniprogram/message/index';
+```
+
+## 代码演示
+
+### 组件类型
+
+弹窗内容为纯文本、标题和副标题、带输入框,用 API `Message.info` 方法调用反馈类对话框。
+
+
+{{ base }}
+
+
+### 组件状态
+
+消息通知类型为普通(info)、警示(warning)、成功(success)、错误(error)
+
+{{ theme }}
+
+## API
+### Message Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+action | String / Slot | - | 已废弃。操作 | N
+align | String | left | 文本对齐方式。可选项:left/center。TS 类型:`MessageAlignType` `type MessageAlignType = 'left' \| 'center'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+close-btn | String / Boolean / Object / Slot | false | 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string ,如:'user',则显示组件内置图标。值类型为 object ,则会透传至 icon 组件。| N
+content | String / Slot | - | 用于自定义消息弹出内容 | N
+duration | Number | 3000 | 消息内置计时器,计时到达时会触发 duration-end 事件。单位:毫秒。值为 0 则表示没有计时器。 | N
+external-classes | Array | - | 样式类名,分别用于设置 组件外层、消息内容、左侧图标、操作按钮、关闭按钮等元素类名。`['t-class', 't-class-content', 't-class-icon', 't-class-link', 't-class-close-btn']` | N
+icon | String / Boolean / Object / Slot | true | 消息提醒前面的图标,可以自定义。值为 true 则根据 theme 显示对应的图标,值为 false 则不显示图标。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string ,如:'info',则显示组件内置图标。值类型为 object ,则会透传至 icon 组件。| N
+marquee | Boolean / Object | false | 跑马灯效果。speed 指速度控制;loop 指循环播放次数,值为 -1 表示循环播放,值为 0 表示不循环播放;delay 表示延迟多久开始播放。TS 类型:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+offset | Array | - | 相对于 placement 的偏移量,默认单位 rpx。示例:[-10, 20] 或 ['10rpx', '8rpx']。TS 类型:`Array` | N
+theme | String | info | 消息组件风格。可选项:info/success/warning/error。TS 类型:`MessageThemeList` `type MessageThemeList = 'info' \| 'success' \| 'warning' \| 'error'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/message/type.ts) | N
+visible | Boolean | false | 是否显示,隐藏时默认销毁组件 | N
+default-visible | Boolean | false | 是否显示,隐藏时默认销毁组件。非受控属性 | N
+z-index | Number | 15000 | 元素层级,样式默认为 15000 | N
+link | String / Object / Slot | - | 链接名称。值为字符串表示链接名称,值为 `Object` 类型,表示透传至 `Link`。 | N
+### Message Events
+
+名称 | 参数 | 描述
+-- | -- | --
+action-btn-click | - | 已废弃。当操作按钮存在时,用户点击操作按钮时触发
+close-btn-click | - | 当关闭按钮存在时,用户点击关闭按钮触发
+duration-end | \- | 计时结束后触发
+link-click | - | 当`link`链接存在时,点击链接文本时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/message/index.d.ts
new file mode 100644
index 0000000..a8cf1e3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/index.d.ts
@@ -0,0 +1,17 @@
+///
+///
+///
+import { MessageProps } from './message.interface';
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+interface MessageActionOptionsType extends Optional {
+ context?: Context;
+ selector?: string;
+}
+declare const _default: {
+ info(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ success(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ warning(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ error(options: MessageActionOptionsType): WechatMiniprogram.Component.TrivialInstance;
+ hide(options: MessageActionOptionsType): void;
+};
+export default _default;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/message/index.js
new file mode 100644
index 0000000..02b775a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/index.js
@@ -0,0 +1,46 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { MessageType } from './message.interface';
+import { getInstance } from '../common/utils';
+const showMessage = function (options, theme = MessageType.info) {
+ const { context, selector = '#t-message' } = options, otherOptions = __rest(options, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.resetData(() => {
+ instance.setData(Object.assign({ theme }, otherOptions), instance.show.bind(instance));
+ });
+ return instance;
+ }
+ console.error('未找到组件,请确认 selector && context 是否正确');
+};
+export default {
+ info(options) {
+ return showMessage(options, MessageType.info);
+ },
+ success(options) {
+ return showMessage(options, MessageType.success);
+ },
+ warning(options) {
+ return showMessage(options, MessageType.warning);
+ },
+ error(options) {
+ return showMessage(options, MessageType.error);
+ },
+ hide(options) {
+ const { context, selector = '#t-message' } = Object.assign({}, options);
+ const instance = getInstance(context, selector);
+ if (!instance) {
+ return;
+ }
+ instance.hide();
+ },
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.d.ts
new file mode 100644
index 0000000..0f0ef12
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.d.ts
@@ -0,0 +1,36 @@
+///
+import { SuperComponent, ComponentsOptionsType } from '../common/src/index';
+import { MessageProps } from './message.interface';
+export default class Message extends SuperComponent {
+ externalClasses: string[];
+ options: ComponentsOptionsType;
+ properties: MessageProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ loop: number;
+ animation: any[];
+ showAnimation: any[];
+ wrapTop: number;
+ };
+ observers: {
+ marquee(val: any): void;
+ 'icon, theme'(icon: any, theme: any): void;
+ link(v: any): void;
+ closeBtn(v: any): void;
+ };
+ closeTimeoutContext: number;
+ nextAnimationContext: number;
+ resetAnimation: WechatMiniprogram.Animation;
+ ready(): void;
+ memoInitalData(): void;
+ resetData(cb: () => void): void;
+ detached(): void;
+ checkAnimation(): void;
+ clearMessageAnimation(): void;
+ show(): void;
+ hide(): void;
+ reset(): void;
+ handleClose(): void;
+ handleLinkClick(): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.interface.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.interface.d.ts
new file mode 100644
index 0000000..9dce180
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.interface.d.ts
@@ -0,0 +1,24 @@
+export declare enum MessageType {
+ info = "info",
+ success = "success",
+ warning = "warning",
+ error = "error"
+}
+export interface MessageMarquee {
+ speed?: number;
+ loop?: number;
+ delay?: number;
+}
+export interface MessageProps {
+ visible?: boolean;
+ content: string;
+ align?: string;
+ theme?: MessageType;
+ icon?: boolean | string;
+ closeBtn?: boolean;
+ action?: string;
+ marquee?: MessageMarquee;
+ offset?: object;
+ duration?: number;
+ zIndex?: number;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.interface.js b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.interface.js
new file mode 100644
index 0000000..b345007
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.interface.js
@@ -0,0 +1,7 @@
+export var MessageType;
+(function (MessageType) {
+ MessageType["info"] = "info";
+ MessageType["success"] = "success";
+ MessageType["warning"] = "warning";
+ MessageType["error"] = "error";
+})(MessageType || (MessageType = {}));
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.js b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.js
new file mode 100644
index 0000000..73b5a65
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.js
@@ -0,0 +1,185 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect, unitConvert, calcIcon, isObject } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-message`;
+const SHOW_DURATION = 500;
+const THEME_ICON = {
+ info: 'info-circle-filled',
+ success: 'check-circle-filled',
+ warning: 'info-circle-filled',
+ error: 'error-circle-filled',
+};
+let Message = class Message extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-link`,
+ `${prefix}-class-close-btn`,
+ ];
+ this.options = {
+ styleIsolation: 'apply-shared',
+ multipleSlots: true,
+ };
+ this.properties = Object.assign({}, props);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ loop: -1,
+ animation: [],
+ showAnimation: [],
+ wrapTop: -999,
+ };
+ this.observers = {
+ marquee(val) {
+ if (JSON.stringify(val) === '{}' || JSON.stringify(val) === 'true') {
+ this.setData({
+ marquee: {
+ speed: 50,
+ loop: -1,
+ delay: 0,
+ },
+ });
+ }
+ },
+ 'icon, theme'(icon, theme) {
+ this.setData({
+ _icon: calcIcon(icon, THEME_ICON[theme]),
+ });
+ },
+ link(v) {
+ const _link = isObject(v) ? Object.assign({}, v) : { content: v };
+ this.setData({ _link });
+ },
+ closeBtn(v) {
+ this.setData({
+ _closeBtn: calcIcon(v, 'close'),
+ });
+ },
+ };
+ this.closeTimeoutContext = 0;
+ this.nextAnimationContext = 0;
+ this.resetAnimation = wx.createAnimation({
+ duration: 0,
+ timingFunction: 'linear',
+ });
+ }
+ ready() {
+ this.memoInitalData();
+ }
+ memoInitalData() {
+ this.initalData = Object.assign(Object.assign({}, this.properties), this.data);
+ }
+ resetData(cb) {
+ this.setData(Object.assign({}, this.initalData), cb);
+ }
+ detached() {
+ this.clearMessageAnimation();
+ }
+ checkAnimation() {
+ const { marquee } = this.properties;
+ if (!marquee || marquee.loop === 0) {
+ return;
+ }
+ const speeding = marquee.speed;
+ if (this.data.loop > 0) {
+ this.data.loop -= 1;
+ }
+ else if (this.data.loop === 0) {
+ this.setData({ animation: this.resetAnimation.translateX(0).step().export() });
+ return;
+ }
+ if (this.nextAnimationContext) {
+ this.clearMessageAnimation();
+ }
+ const warpID = `#${name}__text-wrap`;
+ const nodeID = `#${name}__text`;
+ Promise.all([getRect(this, nodeID), getRect(this, warpID)]).then(([nodeRect, wrapRect]) => {
+ this.setData({
+ animation: this.resetAnimation.translateX(wrapRect.width).step().export(),
+ }, () => {
+ const durationTime = ((nodeRect.width + wrapRect.width) / speeding) * 1000;
+ const nextAnimation = wx
+ .createAnimation({
+ duration: durationTime,
+ })
+ .translateX(-nodeRect.width)
+ .step()
+ .export();
+ setTimeout(() => {
+ this.nextAnimationContext = setTimeout(this.checkAnimation.bind(this), durationTime);
+ this.setData({ animation: nextAnimation });
+ }, 20);
+ });
+ });
+ }
+ clearMessageAnimation() {
+ clearTimeout(this.nextAnimationContext);
+ this.nextAnimationContext = 0;
+ }
+ show() {
+ const { duration, marquee, offset } = this.properties;
+ this.setData({ visible: true, loop: marquee.loop || this.data.loop });
+ this.reset();
+ this.checkAnimation();
+ if (duration && duration > 0) {
+ this.closeTimeoutContext = setTimeout(() => {
+ this.hide();
+ this.triggerEvent('duration-end', { self: this });
+ }, duration);
+ }
+ const wrapID = `#${name}`;
+ getRect(this, wrapID).then((wrapRect) => {
+ this.setData({ wrapTop: -wrapRect.height }, () => {
+ this.setData({
+ showAnimation: wx
+ .createAnimation({ duration: SHOW_DURATION, timingFunction: 'ease' })
+ .translateY(wrapRect.height + unitConvert(offset[0]))
+ .step()
+ .export(),
+ });
+ });
+ });
+ }
+ hide() {
+ this.reset();
+ this.setData({
+ showAnimation: wx
+ .createAnimation({ duration: SHOW_DURATION, timingFunction: 'ease' })
+ .translateY(this.data.wrapTop)
+ .step()
+ .export(),
+ });
+ setTimeout(() => {
+ this.setData({ visible: false, animation: [] });
+ }, SHOW_DURATION);
+ }
+ reset() {
+ if (this.nextAnimationContext) {
+ this.clearMessageAnimation();
+ }
+ clearTimeout(this.closeTimeoutContext);
+ this.closeTimeoutContext = 0;
+ }
+ handleClose() {
+ this.hide();
+ this.triggerEvent('close-btn-click');
+ }
+ handleLinkClick() {
+ this.triggerEvent('link-click');
+ }
+};
+Message = __decorate([
+ wxComponent()
+], Message);
+export default Message;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.json b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.json
new file mode 100644
index 0000000..75c11ff
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-link": "../link/link"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxml
new file mode 100644
index 0000000..0972625
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxs
new file mode 100644
index 0000000..73d503c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxs
@@ -0,0 +1,24 @@
+var isEmptyObj = function (obj) {
+ return JSON.stringify(obj) === '{}';
+};
+
+var changeNumToStr = function (arr) {
+ return arr.map(function (item) {
+ return typeof item === 'number' ? item + 'rpx' : item;
+ });
+};
+
+var getMessageStyles = function (zIndex, offset, wrapTop) {
+ var arr = changeNumToStr(offset);
+ var styleOffset = '';
+ styleOffset += 'top:' + changeNumToStr([wrapTop * 2]) + ';';
+ styleOffset += 'right:' + arr[1] + ';';
+ styleOffset += 'left:' + arr[1] + ';';
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return zIndexStyle + styleOffset;
+};
+
+module.exports = {
+ getMessageStyles: getMessageStyles,
+ isEmptyObj: isEmptyObj,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxss
new file mode 100644
index 0000000..c782833
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/message.wxss
@@ -0,0 +1,86 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-message {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ display: flex;
+ justify-content: flex-start;
+ height: 96rpx;
+ align-items: center;
+ z-index: 15000;
+ padding: 0 32rpx;
+ box-sizing: border-box;
+ border-radius: var(--td-message-border-radius, var(--td-radius-default, 12rpx));
+ line-height: 1;
+ background-color: var(--td-message-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ box-shadow: var(--td-message-box-shadow, var(--td-shadow-4, 0 2px 8px 0 rgba(0, 0, 0, 0.06)));
+}
+.t-message__text {
+ display: inline-block;
+ color: var(--td-message-content-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-font-size-base, 28rpx);
+ line-height: 44rpx;
+}
+.t-message__text-wrap {
+ flex: 1 1 auto;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+.t-message__text-nowrap {
+ word-break: keep-all;
+ white-space: nowrap;
+}
+.t-message--info {
+ color: var(--td-message-info-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-message--success {
+ color: var(--td-message-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-message--warning {
+ color: var(--td-message-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-message--error {
+ color: var(--td-message-error-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-message__icon--left,
+.t-message__icon--right {
+ font-size: 44rpx;
+}
+.t-message__icon--left:not(:empty) {
+ margin-right: var(--td-spacer, 16rpx);
+}
+.t-message__icon--right {
+ color: var(--td-message-close-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-message__icon--right:not(:empty),
+.t-message__link {
+ flex: 0 0 auto;
+ margin-left: var(--td-spacer, 16rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/message/props.d.ts
new file mode 100644
index 0000000..c5a8f65
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/props.d.ts
@@ -0,0 +1,3 @@
+import { TdMessageProps } from './type';
+declare const props: TdMessageProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/message/props.js
new file mode 100644
index 0000000..8a1188a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/props.js
@@ -0,0 +1,54 @@
+const props = {
+ action: {
+ type: String,
+ },
+ align: {
+ type: String,
+ value: 'left',
+ },
+ closeBtn: {
+ type: null,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ duration: {
+ type: Number,
+ value: 3000,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: true,
+ },
+ marquee: {
+ type: null,
+ value: false,
+ },
+ offset: {
+ type: Array,
+ },
+ theme: {
+ type: String,
+ value: 'info',
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+ zIndex: {
+ type: Number,
+ value: 15000,
+ },
+ link: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/message/type.d.ts
new file mode 100644
index 0000000..10c7570
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/type.d.ts
@@ -0,0 +1,69 @@
+export interface TdMessageProps {
+ action?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ align?: {
+ type: StringConstructor;
+ value?: MessageAlignType;
+ };
+ closeBtn?: {
+ type: null;
+ value?: string | boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-icon', 't-class-action', 't-class-close-btn'];
+ };
+ icon?: {
+ type: null;
+ value?: boolean | 'info' | 'bell';
+ };
+ marquee?: {
+ type: null;
+ value?: boolean | DrawMarquee;
+ };
+ offset?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: MessageThemeList;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ link?: {
+ type: null;
+ value?: string | object;
+ };
+}
+export declare type MessageAlignType = 'left' | 'center';
+export interface DrawMarquee {
+ speed?: number;
+ loop?: number;
+ delay?: number;
+}
+export declare type MessageThemeList = 'info' | 'success' | 'warning' | 'error';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/message/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/message/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/message/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/miniprogram_npm/dayjs/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/miniprogram_npm/dayjs/index.js
new file mode 100644
index 0000000..ba16e65
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/miniprogram_npm/dayjs/index.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)
+///
+declare type IPageScrollOption = WechatMiniprogram.Page.IPageScrollOption;
+declare type Scroller = (this: WechatMiniprogram.Component.TrivialInstance, event?: IPageScrollOption) => void;
+declare const _default: (scroller: Scroller) => string;
+export default _default;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/page-scroll.js b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/page-scroll.js
new file mode 100644
index 0000000..b9f1345
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/page-scroll.js
@@ -0,0 +1,37 @@
+import { getCurrentPage } from '../common/utils';
+const onPageScroll = function (event) {
+ const page = getCurrentPage();
+ if (!page)
+ return;
+ const { pageScroller } = page;
+ pageScroller.forEach((scroller) => {
+ if (typeof scroller === 'function') {
+ scroller(event);
+ }
+ });
+};
+export default (scroller) => {
+ return Behavior({
+ attached() {
+ const page = getCurrentPage();
+ if (!page)
+ return;
+ const bindScroller = scroller.bind(this);
+ if (Array.isArray(page.pageScroller)) {
+ page.pageScroller.push(bindScroller);
+ }
+ else {
+ page.pageScroller =
+ typeof page.onPageScroll === 'function' ? [page.onPageScroll.bind(page), bindScroller] : [bindScroller];
+ }
+ page.onPageScroll = onPageScroll;
+ },
+ detached() {
+ var _a;
+ const page = getCurrentPage();
+ if (!page)
+ return;
+ page.pageScroller = ((_a = page.pageScroller) === null || _a === void 0 ? void 0 : _a.filter((item) => item !== scroller)) || [];
+ },
+ });
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/touch.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/touch.d.ts
new file mode 100644
index 0000000..ae80eca
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/touch.d.ts
@@ -0,0 +1,2 @@
+declare const _default: string;
+export default _default;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/touch.js b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/touch.js
new file mode 100644
index 0000000..cbabccc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/touch.js
@@ -0,0 +1,35 @@
+const MinDistance = 10;
+const getDirection = (x, y) => {
+ if (x > y && x > MinDistance) {
+ return 'horizontal';
+ }
+ if (y > x && y > MinDistance) {
+ return 'vertical';
+ }
+ return '';
+};
+export default Behavior({
+ methods: {
+ resetTouchStatus() {
+ this.direction = '';
+ this.deltaX = 0;
+ this.deltaY = 0;
+ this.offsetX = 0;
+ this.offsetY = 0;
+ },
+ touchStart(event) {
+ this.resetTouchStatus();
+ const [touch] = event.touches;
+ this.startX = touch.clientX;
+ this.startY = touch.clientY;
+ },
+ touchMove(event) {
+ const [touch] = event.touches;
+ this.deltaX = touch.clientX - this.startX;
+ this.deltaY = touch.clientY - this.startY;
+ this.offsetX = Math.abs(this.deltaX);
+ this.offsetY = Math.abs(this.deltaY);
+ this.direction = getDirection(this.offsetX, this.offsetY);
+ },
+ },
+});
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/transition.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/transition.d.ts
new file mode 100644
index 0000000..8c23e35
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/transition.d.ts
@@ -0,0 +1 @@
+export default function transition(): string;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/transition.js b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/transition.js
new file mode 100644
index 0000000..ee5215a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/mixins/transition.js
@@ -0,0 +1,123 @@
+import config from '../common/config';
+const { prefix } = config;
+export default function transition() {
+ return Behavior({
+ properties: {
+ visible: {
+ type: Boolean,
+ value: null,
+ observer: 'watchVisible',
+ },
+ appear: Boolean,
+ name: {
+ type: String,
+ value: 'fade',
+ },
+ durations: {
+ type: Number,
+ optionalTypes: [Array],
+ },
+ },
+ data: {
+ transitionClass: '',
+ transitionDurations: 300,
+ className: '',
+ realVisible: false,
+ },
+ created() {
+ this.status = '';
+ this.transitionT = 0;
+ },
+ attached() {
+ this.durations = this.getDurations();
+ if (this.data.visible) {
+ this.enter();
+ }
+ this.inited = true;
+ },
+ detached() {
+ clearTimeout(this.transitionT);
+ },
+ methods: {
+ watchVisible(curr, prev) {
+ if (this.inited && curr !== prev) {
+ curr ? this.enter() : this.leave();
+ }
+ },
+ getDurations() {
+ const { durations } = this.data;
+ if (Array.isArray(durations)) {
+ return durations.map((item) => Number(item));
+ }
+ return [Number(durations), Number(durations)];
+ },
+ enter() {
+ const { name } = this.data;
+ const [duration] = this.durations;
+ this.status = 'entering';
+ this.setData({
+ realVisible: true,
+ transitionClass: `${prefix}-${name}-enter ${prefix}-${name}-enter-active`,
+ });
+ setTimeout(() => {
+ this.setData({
+ transitionClass: `${prefix}-${name}-enter-active ${prefix}-${name}-enter-to`,
+ });
+ }, 30);
+ if (typeof duration === 'number' && duration > 0) {
+ this.transitionT = setTimeout(this.entered.bind(this), duration + 30);
+ }
+ },
+ entered() {
+ this.customDuration = false;
+ clearTimeout(this.transitionT);
+ this.status = 'entered';
+ this.setData({
+ transitionClass: '',
+ });
+ },
+ leave() {
+ const { name } = this.data;
+ const [, duration] = this.durations;
+ this.status = 'leaving';
+ this.setData({
+ transitionClass: `${prefix}-${name}-leave ${prefix}-${name}-leave-active`,
+ });
+ clearTimeout(this.transitionT);
+ setTimeout(() => {
+ this.setData({
+ transitionClass: `${prefix}-${name}-leave-active ${prefix}-${name}-leave-to`,
+ });
+ }, 30);
+ if (typeof duration === 'number' && duration > 0) {
+ this.customDuration = true;
+ this.transitionT = setTimeout(this.leaved.bind(this), duration + 30);
+ }
+ },
+ leaved() {
+ this.customDuration = false;
+ this.triggerEvent('leaved');
+ clearTimeout(this.transitionT);
+ this.status = 'leaved';
+ this.setData({
+ transitionClass: '',
+ });
+ },
+ onTransitionEnd() {
+ if (this.customDuration) {
+ return;
+ }
+ clearTimeout(this.transitionT);
+ if (this.status === 'entering' && this.data.visible) {
+ this.entered();
+ }
+ else if (this.status === 'leaving' && !this.data.visible) {
+ this.leaved();
+ this.setData({
+ realVisible: false,
+ });
+ }
+ },
+ },
+ });
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/README.en-US.md
new file mode 100644
index 0000000..dccf25e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+### Navbar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+animation | Boolean | true | \- | N
+capsule | Slot | - | \- | N
+delta | Number | 1 | \- | N
+external-classes | Array | - | `['t-class', 't-class-title', 't-class-left', 't-class-center', 't-class-capsule']` | N
+fixed | Boolean | true | \- | N
+left | Slot | - | `0.26.0` | N
+left-arrow | Boolean | false | `0.26.0` | N
+title | String / Slot | - | page title | N
+title-max-length | Number | - | \- | N
+visible | Boolean | true | \- | N
+
+### Navbar Events
+
+name | params | description
+-- | -- | --
+complete | \- | \-
+fail | \- | \-
+go-back | \- | \-
+success | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/README.md
new file mode 100644
index 0000000..793fae0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/README.md
@@ -0,0 +1,68 @@
+---
+title: Navbar 导航栏
+description: 用于不同页面之间切换或者跳转,位于内容区的上方,系统状态栏的下方。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-navbar": "tdesign-miniprogram/navbar/navbar",
+}
+```
+
+## 代码演示
+
+### 基础导航栏
+
+{{ base }}
+
+### 胶囊样式导航栏
+
+{{ back-home }}
+
+### 带搜索导航栏
+
+{{ search }}
+
+### 带图片导航栏
+
+{{ img }}
+
+### 组件样式
+
+{{ left-title }}
+
+### 自定义颜色
+
+{{ custom-color }}
+
+## API
+### Navbar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+animation | Boolean | true | 是否添加动画效果 | N
+capsule | Slot | - | 左侧胶囊区域 | N
+delta | Number | 1 | 后退按钮后退层数,含义参考 [wx.navigateBack](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html),特殊的,传入 0 不会发生执行 wx.navigateBack | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、标题、左侧图标、首页图标、胶囊等元素类名。`['t-class', 't-class-title', 't-class-left', 't-class-center', 't-class-capsule']` | N
+fixed | Boolean | true | 是否固定在顶部 | N
+left | Slot | - | `0.26.0`。左侧内容区域 | N
+left-arrow | Boolean | false | `0.26.0`。是否展示左侧箭头 | N
+title | String / Slot | - | 页面标题 | N
+title-max-length | Number | - | 标题文字最大长度,超出的范围使用 `...` 表示 | N
+visible | Boolean | true | 是否显示 | N
+
+### Navbar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+complete | \- | navigateBack 执行完成后触发(失败或成功均会触发)
+fail | \- | navigateBack 执行失败后触发
+go-back | \- | 点击左侧箭头时触发
+success | \- | navigateBack 执行成功后触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.d.ts
new file mode 100644
index 0000000..dd7a94d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent } from '../common/src/index';
+export default class Navbar extends SuperComponent {
+ externalClasses: string[];
+ timer: any;
+ options: {
+ addGlobalClass: boolean;
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdNavbarProps;
+ observers: {
+ visible(this: Navbar, visible: any): void;
+ 'title,titleMaxLength'(this: any): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ boxStyle: string;
+ showTitle: string;
+ };
+ attached(): void;
+ methods: {
+ goBack(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.js b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.js
new file mode 100644
index 0000000..b222517
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.js
@@ -0,0 +1,118 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-navbar`;
+let Navbar = class Navbar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-title`,
+ `${prefix}-class-left`,
+ `${prefix}-class-center`,
+ `${prefix}-class-left-icon`,
+ `${prefix}-class-home-icon`,
+ `${prefix}-class-capsule`,
+ `${prefix}-class-nav-btn`,
+ ];
+ this.timer = null;
+ this.options = {
+ addGlobalClass: true,
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.observers = {
+ visible(visible) {
+ const { animation } = this.properties;
+ const visibleClass = `${name}${visible ? '--visible' : '--hide'}`;
+ this.setData({
+ visibleClass: `${visibleClass}${animation ? '-animation' : ''}`,
+ });
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ if (animation) {
+ this.timer = setTimeout(() => {
+ this.setData({
+ visibleClass,
+ });
+ }, 300);
+ }
+ },
+ 'title,titleMaxLength'() {
+ const { title } = this.properties;
+ const titleMaxLength = this.properties.titleMaxLength || Number.MAX_SAFE_INTEGER;
+ let temp = title.slice(0, titleMaxLength);
+ if (titleMaxLength < title.length)
+ temp += '...';
+ this.setData({
+ showTitle: temp,
+ });
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ boxStyle: '',
+ showTitle: '',
+ };
+ this.methods = {
+ goBack() {
+ const { delta } = this.data;
+ const that = this;
+ this.triggerEvent('go-back');
+ if (delta > 0) {
+ wx.navigateBack({
+ delta,
+ fail(e) {
+ that.triggerEvent('fail', e);
+ },
+ complete(e) {
+ that.triggerEvent('complete', e);
+ },
+ success(e) {
+ that.triggerEvent('success', e);
+ },
+ });
+ }
+ },
+ };
+ }
+ attached() {
+ let rect = null;
+ if (wx.getMenuButtonBoundingClientRect) {
+ rect = wx.getMenuButtonBoundingClientRect();
+ }
+ if (!rect)
+ return;
+ wx.getSystemInfo({
+ success: (res) => {
+ const boxStyleList = [];
+ const { statusBarHeight } = wx.getSystemInfoSync();
+ boxStyleList.push(`--td-navbar-padding-top:${statusBarHeight}px`);
+ if (rect && (res === null || res === void 0 ? void 0 : res.windowWidth)) {
+ boxStyleList.push(`--td-navbar-right:${res.windowWidth - rect.left}px`);
+ }
+ boxStyleList.push(`--td-navbar-capsule-height: ${rect.height}px`);
+ boxStyleList.push(`--td-navbar-capsule-width:${rect.width}px`);
+ this.setData({
+ boxStyle: `${boxStyleList.join('; ')}`,
+ });
+ },
+ fail: (err) => {
+ console.error('navbar 获取系统信息失败', err);
+ },
+ });
+ }
+};
+Navbar = __decorate([
+ wxComponent()
+], Navbar);
+export default Navbar;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.json b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.wxml
new file mode 100644
index 0000000..588039a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{showTitle}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.wxss
new file mode 100644
index 0000000..cbaed3a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/navbar.wxss
@@ -0,0 +1,122 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-navbar--fixed .t-navbar__content {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 5001;
+}
+.t-navbar--visible {
+ display: '';
+}
+.t-navbar--visible-animation {
+ opacity: 1;
+ transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.t-navbar--hide-animation {
+ opacity: 0;
+ transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+}
+.t-navbar--hide {
+ display: none;
+}
+.t-navbar__placeholder {
+ height: var(--td-navbar-height, 96rpx);
+ padding-top: var(--td-navbar-padding-top, 40rpx);
+ position: relative;
+ visibility: hidden;
+}
+.t-navbar__content {
+ position: relative;
+ z-index: 1;
+ height: var(--td-navbar-height, 96rpx);
+ width: calc(100% - var(--td-navbar-right, 190rpx));
+ padding-right: var(--td-navbar-right, 190rpx);
+ padding-top: var(--td-navbar-padding-top, 40rpx);
+ color: var(--td-navbar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background-color: var(--td-navbar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ display: flex;
+ align-items: center;
+}
+.t-navbar__left {
+ position: relative;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ margin-left: var(--td-spacer-1, 24rpx);
+}
+.t-navbar__left-arrow {
+ font-size: var(--td-navbar-left-arrow-size, 48rpx);
+}
+.t-navbar__capsule {
+ box-sizing: border-box;
+ width: var(--td-navbar-capsule-width, 176rpx);
+ height: var(--td-navbar-capsule-height, 64rpx);
+ display: flex;
+ align-items: center;
+}
+.t-navbar__capsule::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ box-sizing: border-box;
+ border-radius: calc(var(--td-navbar-capsule-border-radius, 32rpx) * 2);
+ border: 2rpx solid var(--td-navbar-capsule-border-color, #e3e6ea);
+}
+.t-navbar__capsule:empty {
+ display: none;
+}
+.t-navbar__center {
+ font-size: 36rpx;
+ text-align: center;
+ position: absolute;
+ left: var(--td-navbar-right, 190rpx);
+ width: calc(100% - var(--td-navbar-right, 190rpx) * 2);
+ height: var(--td-navbar-height, 96rpx);
+ line-height: var(--td-navbar-height, 96rpx);
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+}
+.t-navbar__center:empty {
+ display: none;
+}
+.t-navbar__center-title {
+ font-size: var(--td-navbar-title-font-size, 36rpx);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ font-weight: var(--td-navbar-title-font-weight, 600);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/props.d.ts
new file mode 100644
index 0000000..168bee2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdNavbarProps } from './type';
+declare const props: TdNavbarProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/props.js
new file mode 100644
index 0000000..17e637c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/props.js
@@ -0,0 +1,32 @@
+const props = {
+ animation: {
+ type: Boolean,
+ value: true,
+ },
+ delta: {
+ type: Number,
+ value: 1,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ fixed: {
+ type: Boolean,
+ value: true,
+ },
+ leftArrow: {
+ type: Boolean,
+ value: false,
+ },
+ title: {
+ type: String,
+ },
+ titleMaxLength: {
+ type: Number,
+ },
+ visible: {
+ type: Boolean,
+ value: true,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/type.d.ts
new file mode 100644
index 0000000..5034319
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdNavbarProps {
+ animation?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delta?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-title', 't-class-left-icon', 't-class-home-icon', 't-class-capsule'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ leftArrow?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ titleMaxLength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/navbar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/README.en-US.md
new file mode 100644
index 0000000..6d98c4a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/README.en-US.md
@@ -0,0 +1,23 @@
+:: BASE_DOC ::
+
+## API
+### NoticeBar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Array / Slot | - | \- | N
+direction | String | horizontal | options:horizontal/vertical | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-prefix-icon', 't-class-operation', 't-class-suffix-icon']` | N
+operation | String / Slot | - | \- | N
+marquee | Boolean / Object | false | Typescript:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts) | N
+prefix-icon | String / Boolean/ Object / Slot | - | \- | N
+suffix-icon | String / Boolean / Object / Slot | - | \- | N
+theme | String | info | options:info/success/warning/error | N
+visible | Boolean | false | \- | N
+default-visible | Boolean | false | uncontrolled property | N
+
+### NoticeBar Events
+
+name | params | description
+-- | -- | --
+click | `(trigger: NoticeBarTrigger)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts)。
`type NoticeBarTrigger = 'prefix-icon' \| 'content' \| 'operation' \| 'suffix-icon';`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/README.md
new file mode 100644
index 0000000..d236cec
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/README.md
@@ -0,0 +1,88 @@
+---
+title: NoticeBar 公告栏
+description: 在导航栏下方,用于给用户显示提示消息。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.9.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-notice-bar": "tdesign-miniprogram/notice-bar/notice-bar"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+纯文字的公告栏
+
+{{ base }}
+
+带图标的公告栏
+
+{{ iconDemo }}
+
+带关闭的公告栏
+
+{{ suffixIcon }}
+
+带入口的公告栏
+
+{{ event }}
+
+自定义样式的公告栏
+
+{{ custom }}
+
+自定义内容的公告栏
+
+{{ customization }}
+
+### 02 组件状态
+
+公告栏类型有普通(info)、警示(warning)、成功(success)、错误(error)
+
+{{ theme }}
+
+### 03 可滚动公告栏
+
+可滚动公告栏有水平(horizontal)和垂直(vertical)
+
+{{ scrolling }}
+
+
+## API
+### NoticeBar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Array / Slot | - | 文本内容 | N
+direction | String | horizontal | 滚动方向。可选项:horizontal/vertical | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、文本内容、前缀图标、右侧额外信息、后缀图标 等元素类名。。`['t-class', 't-class-content', 't-class-prefix-icon', 't-class-operation', 't-class-suffix-icon']` | N
+operation | String / Slot | - | 右侧额外信息 | N
+marquee | Boolean / Object | false | 跑马灯效果。speed 指速度控制;loop 指循环播放次数,值为 -1 表示循环播放,值为 0 表示不循环播放;delay 表示延迟多久开始播放【仅在 direction='horizontal' 有效】。TS 类型:`boolean \| DrawMarquee` `interface DrawMarquee { speed?: number; loop?: number; delay?: number }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts) | N
+prefix-icon | String / Boolean / Object / Slot | - | 前缀图标。值为字符串表示图标名称,值为 `false` 表示不显示前缀图标,值为 `Object` 类型,表示透传至 `icon`,不传表示使用主题图标。| N
+suffix-icon | String / Object / Slot | - | 后缀图标。值为字符串表示图标名称。值为 `Object` 类型,表示透传至 `icon`,不传表示不显示后缀图标。 | N
+theme | String | info | 内置主题。可选项:info/success/warning/error | N
+visible | Boolean | false | 显示/隐藏 | N
+default-visible | Boolean | false | 显示/隐藏。非受控属性 | N
+
+### NoticeBar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `(trigger: NoticeBarTrigger)` | 点击事件。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/notice-bar/type.ts)。
`type NoticeBarTrigger = 'prefix-icon' \| 'content' \| 'operation' \| 'suffix-icon';`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.d.ts
new file mode 100644
index 0000000..f408942
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.d.ts
@@ -0,0 +1,34 @@
+import { SuperComponent, ComponentsOptionsType } from '../common/src/index';
+export default class NoticeBar extends SuperComponent {
+ externalClasses: string[];
+ options: ComponentsOptionsType;
+ properties: import("./type").TdNoticeBarProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ loop: number;
+ };
+ observers: {
+ marquee(val: any): void;
+ visible(visible: any): void;
+ prefixIcon(prefixIcon: any): void;
+ suffixIcon(v: any): void;
+ content(): void;
+ };
+ lifetimes: {
+ created(): void;
+ detached(): void;
+ ready(): void;
+ };
+ methods: {
+ initAnimation(): void;
+ startScrollAnimation(isFirstScroll?: boolean): void;
+ show(): void;
+ clearNoticeBarAnimation(): void;
+ setPrefixIcon(v: any): void;
+ clickPrefixIcon(): void;
+ clickContent(): void;
+ clickSuffixIcon(): void;
+ clickOperation(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.js b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.js
new file mode 100644
index 0000000..dbd43c7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.js
@@ -0,0 +1,180 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import { getRect, getAnimationFrame, calcIcon } from '../common/utils';
+import props from './props';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-notice-bar`;
+const THEME_ICON = {
+ info: 'info-circle-filled',
+ success: 'check-circle-filled',
+ warning: 'info-circle-filled',
+ error: 'error-circle-filled',
+};
+let NoticeBar = class NoticeBar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-prefix-icon`,
+ `${prefix}-class-operation`,
+ `${prefix}-class-suffix-icon`,
+ ];
+ this.options = {
+ styleIsolation: 'apply-shared',
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ loop: -1,
+ };
+ this.observers = {
+ marquee(val) {
+ if (JSON.stringify(val) === '{}' || JSON.stringify(val) === 'true') {
+ this.setData({
+ marquee: {
+ speed: 50,
+ loop: -1,
+ delay: 0,
+ },
+ });
+ }
+ },
+ visible(visible) {
+ if (visible) {
+ this.show();
+ }
+ else {
+ this.clearNoticeBarAnimation();
+ }
+ },
+ prefixIcon(prefixIcon) {
+ this.setPrefixIcon(prefixIcon);
+ },
+ suffixIcon(v) {
+ this.setData({
+ _suffixIcon: calcIcon(v),
+ });
+ },
+ content() {
+ this.clearNoticeBarAnimation();
+ this.initAnimation();
+ },
+ };
+ this.lifetimes = {
+ created() {
+ this.resetAnimation = wx.createAnimation({
+ duration: 0,
+ timingFunction: 'linear',
+ });
+ },
+ detached() {
+ this.clearNoticeBarAnimation();
+ },
+ ready() {
+ this.show();
+ },
+ };
+ this.methods = {
+ initAnimation() {
+ const warpID = `.${name}__content-wrap`;
+ const nodeID = `.${name}__content`;
+ getAnimationFrame(this, () => {
+ Promise.all([getRect(this, nodeID), getRect(this, warpID)]).then(([nodeRect, wrapRect]) => {
+ const { marquee } = this.properties;
+ if (nodeRect == null || wrapRect == null || !nodeRect.width || !wrapRect.width) {
+ return;
+ }
+ if (marquee || wrapRect.width < nodeRect.width) {
+ const speeding = marquee.speed || 50;
+ const delaying = marquee.delay || 0;
+ const animationDuration = ((wrapRect.width + nodeRect.width) / speeding) * 1000;
+ const firstAnimationDuration = (nodeRect.width / speeding) * 1000;
+ this.setData({
+ wrapWidth: Number(wrapRect.width),
+ nodeWidth: Number(nodeRect.width),
+ animationDuration: animationDuration,
+ delay: delaying,
+ loop: marquee.loop - 1,
+ firstAnimationDuration: firstAnimationDuration,
+ });
+ marquee.loop !== 0 && this.startScrollAnimation(true);
+ }
+ });
+ });
+ },
+ startScrollAnimation(isFirstScroll = false) {
+ this.clearNoticeBarAnimation();
+ const { wrapWidth, nodeWidth, firstAnimationDuration, animationDuration, delay } = this.data;
+ const delayTime = isFirstScroll ? delay : 0;
+ const durationTime = isFirstScroll ? firstAnimationDuration : animationDuration;
+ this.setData({
+ animationData: this.resetAnimation
+ .translateX(isFirstScroll ? 0 : wrapWidth)
+ .step()
+ .export(),
+ });
+ getAnimationFrame(this, () => {
+ this.setData({
+ animationData: wx
+ .createAnimation({ duration: durationTime, timingFunction: 'linear', delay: delayTime })
+ .translateX(-nodeWidth)
+ .step()
+ .export(),
+ });
+ });
+ this.nextAnimationContext = setTimeout(() => {
+ if (this.data.loop > 0) {
+ this.data.loop -= 1;
+ this.startScrollAnimation();
+ }
+ else if (this.data.loop === 0) {
+ this.setData({ animationData: this.resetAnimation.translateX(0).step().export() });
+ }
+ else if (this.data.loop < 0) {
+ this.startScrollAnimation();
+ }
+ }, durationTime + delayTime);
+ },
+ show() {
+ this.clearNoticeBarAnimation();
+ this.setPrefixIcon(this.properties.prefixIcon);
+ this.initAnimation();
+ },
+ clearNoticeBarAnimation() {
+ this.nextAnimationContext && clearTimeout(this.nextAnimationContext);
+ this.nextAnimationContext = null;
+ },
+ setPrefixIcon(v) {
+ const { theme } = this.properties;
+ this.setData({
+ _prefixIcon: calcIcon(v, THEME_ICON[theme]),
+ });
+ },
+ clickPrefixIcon() {
+ this.triggerEvent('click', { trigger: 'prefix-icon' });
+ },
+ clickContent() {
+ this.triggerEvent('click', { trigger: 'content' });
+ },
+ clickSuffixIcon() {
+ this.triggerEvent('click', { trigger: 'suffix-icon' });
+ },
+ clickOperation() {
+ this.triggerEvent('click', { trigger: 'operation' });
+ },
+ };
+ }
+};
+NoticeBar = __decorate([
+ wxComponent()
+], NoticeBar);
+export default NoticeBar;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.json b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.json
new file mode 100644
index 0000000..ef9e100
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-button": "../button/button"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.wxml
new file mode 100644
index 0000000..5986e43
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.wxml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+ {{content}}
+
+
+ {{operation}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.wxss
new file mode 100644
index 0000000..ac596ad
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/notice-bar.wxss
@@ -0,0 +1,93 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-notice-bar {
+ display: flex;
+ align-items: flex-start;
+ padding: 26rpx 32rpx;
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-notice-bar__content-wrap {
+ flex: 1;
+ overflow-x: hidden;
+ line-height: 44rpx;
+ color: var(--td-notice-bar-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-notice-bar__content {
+ display: inline-block;
+ white-space: nowrap;
+}
+.t-notice-bar__content-wrapable {
+ white-space: normal;
+}
+.t-notice-bar__content--vertical {
+ height: 44rpx;
+ line-height: 44rpx;
+}
+.t-notice-bar__content--vertical-item {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.t-notice-bar__prefix-icon {
+ color: inherit;
+}
+.t-notice-bar__prefix-icon:not(:empty) {
+ padding-right: var(--td-spacer, 16rpx);
+}
+.t-notice-bar__suffix-icon {
+ color: var(--td-notice-bar-suffix-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-notice-bar__prefix-icon,
+.t-notice-bar__suffix-icon {
+ font-size: 44rpx;
+}
+.t-notice-bar__operation {
+ display: inline-flex;
+ vertical-align: top;
+ color: var(--td-notice-bar-operation-font-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: 700;
+}
+.t-notice-bar__suffix-icon:not(:empty) {
+ padding-left: var(--td-spacer, 16rpx);
+}
+.t-notice-bar--info {
+ color: var(--td-notice-bar-info-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-notice-bar-info-bg-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-notice-bar--success {
+ color: var(--td-notice-bar-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-notice-bar-success-bg-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-notice-bar--warning {
+ color: var(--td-notice-bar-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-notice-bar-warning-bg-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-notice-bar--error {
+ color: var(--td-notice-bar-error-color, var(--td-error-color-6, #d54941));
+ background-color: var(--td-notice-bar-error-bg-color, var(--td-error-color-1, #fff0ed));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/props.d.ts
new file mode 100644
index 0000000..5fe19dc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdNoticeBarProps } from './type';
+declare const props: TdNoticeBarProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/props.js
new file mode 100644
index 0000000..57db91a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/props.js
@@ -0,0 +1,40 @@
+const props = {
+ content: {
+ type: null,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ operation: {
+ type: String,
+ },
+ marquee: {
+ type: null,
+ value: false,
+ },
+ prefixIcon: {
+ type: null,
+ value: true,
+ },
+ suffixIcon: {
+ type: null,
+ value: null,
+ },
+ theme: {
+ type: String,
+ value: 'info',
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/type.d.ts
new file mode 100644
index 0000000..5e11cd1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/type.d.ts
@@ -0,0 +1,51 @@
+export interface TdNoticeBarProps {
+ content?: {
+ type: null;
+ value?: null;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-prefix-icon', 't-class-operation', 't-class-suffix-icon'];
+ };
+ operation?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ marquee?: {
+ type: null;
+ value?: boolean | DrawMarquee;
+ };
+ prefixIcon?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ suffixIcon?: {
+ type: null;
+ value?: string | object;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'info' | 'success' | 'warning' | 'error';
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export interface DrawMarquee {
+ speed?: number;
+ loop?: number;
+ delay?: number;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/notice-bar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/README.md
new file mode 100644
index 0000000..8170e5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/README.md
@@ -0,0 +1,49 @@
+---
+title: Overlay 遮罩层
+description: 通过遮罩层,可以强调部分内容
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.10.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-overlay": "tdesign-miniprogram/overlay/overlay"
+}
+```
+
+## 代码演示
+
+### 基础使用
+
+{{ base }}
+
+## API
+
+### Overlay Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+visible | Boolean | false | 是否展示 | N
+zIndex | Number | 11000 | 遮罩层及 | N
+duration | Number | 300 | (暂不支持)背景色过渡时间,单位毫秒 | N
+backgroundColor | String | - | 遮罩层的背景色 | N
+preventScrollThrough | Boolean | true | 防止滚动穿透,即不允许点击和滚动 | N
+
+### Overlay Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `({ visible: boolean })` | 点击遮罩时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.d.ts
new file mode 100644
index 0000000..ea9b296
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.d.ts
@@ -0,0 +1,36 @@
+import { SuperComponent } from '../common/src/index';
+export default class Overlay extends SuperComponent {
+ properties: {
+ zIndex: {
+ type: NumberConstructor;
+ value: number;
+ };
+ duration: {
+ type: NumberConstructor;
+ value: number;
+ };
+ backgroundColor: {
+ type: StringConstructor;
+ value: string;
+ };
+ preventScrollThrough: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ };
+ behaviors: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ computedStyle: string;
+ _zIndex: number;
+ };
+ observers: {
+ backgroundColor(v: any): void;
+ zIndex(v: any): void;
+ };
+ methods: {
+ handleClick(): void;
+ noop(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.js b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.js
new file mode 100644
index 0000000..6f98fdc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.js
@@ -0,0 +1,65 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import transition from '../mixins/transition';
+const { prefix } = config;
+const name = `${prefix}-overlay`;
+let Overlay = class Overlay extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = {
+ zIndex: {
+ type: Number,
+ value: 11000,
+ },
+ duration: {
+ type: Number,
+ value: 300,
+ },
+ backgroundColor: {
+ type: String,
+ value: '',
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: true,
+ },
+ };
+ this.behaviors = [transition()];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ computedStyle: '',
+ _zIndex: 11000,
+ };
+ this.observers = {
+ backgroundColor(v) {
+ this.setData({
+ computedStyle: `background-color: ${v};`,
+ });
+ },
+ zIndex(v) {
+ if (v !== 0) {
+ this.setData({
+ _zIndex: v,
+ });
+ }
+ },
+ };
+ this.methods = {
+ handleClick() {
+ this.triggerEvent('click', { visible: !this.properties.visible });
+ },
+ noop() { },
+ };
+ }
+};
+Overlay = __decorate([
+ wxComponent()
+], Overlay);
+export default Overlay;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.json b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.wxml
new file mode 100644
index 0000000..55750dd
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.wxss
new file mode 100644
index 0000000..c84c213
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/overlay/overlay.wxss
@@ -0,0 +1,42 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ bottom: 0;
+ background-color: var(--td-overlay-bg-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ transition: opacity var(--td-overlay-transition-duration, 300ms) ease;
+}
+.t-fade-enter {
+ opacity: 0;
+}
+.t-fade-leave-to {
+ opacity: 0;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.d.ts
new file mode 100644
index 0000000..5973ac6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.d.ts
@@ -0,0 +1,29 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class PickerItem extends SuperComponent {
+ relations: RelationsOptions;
+ externalClasses: string[];
+ properties: import("./type").TdPickerItemProps;
+ observers: {
+ options(this: PickerItem): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ offset: number;
+ duration: number;
+ value: string;
+ curIndex: number;
+ labelAlias: string;
+ valueAlias: string;
+ };
+ methods: {
+ onTouchStart(event: any): void;
+ onTouchMove(event: any): void;
+ onTouchEnd(): void;
+ update(): void;
+ resetOrigin(): void;
+ getCount(): any;
+ };
+ calculateViewDeltaY(touchDeltaY: number): number;
+ created(): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.js b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.js
new file mode 100644
index 0000000..584e520
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.js
@@ -0,0 +1,127 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-picker-item`;
+const itemHeight = 80;
+const DefaultDuration = 240;
+const { windowWidth } = wx.getSystemInfoSync();
+const rpx2px = (rpx) => Math.floor((windowWidth * rpx) / 750);
+const range = function (num, min, max) {
+ return Math.min(Math.max(num, min), max);
+};
+let PickerItem = class PickerItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.relations = {
+ '../picker/picker': {
+ type: 'parent',
+ linked(parent) {
+ if ('keys' in parent.data) {
+ const { keys } = parent.data;
+ this.setData({
+ labelAlias: (keys === null || keys === void 0 ? void 0 : keys.label) || 'label',
+ valueAlias: (keys === null || keys === void 0 ? void 0 : keys.value) || 'value',
+ });
+ }
+ },
+ },
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.observers = {
+ options() {
+ this.update();
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ offset: 0,
+ duration: 0,
+ value: '',
+ curIndex: 0,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ };
+ this.methods = {
+ onTouchStart(event) {
+ this.StartY = event.touches[0].clientY;
+ this.StartOffset = this.data.offset;
+ this.setData({ duration: 0 });
+ },
+ onTouchMove(event) {
+ const { StartY, StartOffset, itemHeight } = this;
+ const touchDeltaY = event.touches[0].clientY - StartY;
+ const deltaY = this.calculateViewDeltaY(touchDeltaY);
+ this.setData({
+ offset: range(StartOffset + deltaY, -(this.getCount() * itemHeight), 0),
+ duration: DefaultDuration,
+ });
+ },
+ onTouchEnd() {
+ const { offset, labelAlias, valueAlias } = this.data;
+ const { options } = this.properties;
+ if (offset === this.StartOffset) {
+ return;
+ }
+ const index = range(Math.round(-offset / this.itemHeight), 0, this.getCount() - 1);
+ this.setData({
+ curIndex: index,
+ offset: -index * this.itemHeight,
+ });
+ if (index === this._selectedIndex) {
+ return;
+ }
+ wx.nextTick(() => {
+ var _a, _b, _c;
+ this._selectedIndex = index;
+ this._selectedValue = (_a = options[index]) === null || _a === void 0 ? void 0 : _a[valueAlias];
+ this._selectedLabel = (_b = options[index]) === null || _b === void 0 ? void 0 : _b[labelAlias];
+ (_c = this.$parent) === null || _c === void 0 ? void 0 : _c.triggerColumnChange({
+ index,
+ column: this.columnIndex || 0,
+ });
+ });
+ },
+ update() {
+ var _a, _b;
+ const { options, value, labelAlias, valueAlias } = this.data;
+ const index = options.findIndex((item) => item[valueAlias] === value);
+ const selectedIndex = index > 0 ? index : 0;
+ this.setData({
+ offset: -selectedIndex * this.itemHeight,
+ curIndex: selectedIndex,
+ });
+ this._selectedIndex = selectedIndex;
+ this._selectedValue = (_a = options[selectedIndex]) === null || _a === void 0 ? void 0 : _a[valueAlias];
+ this._selectedLabel = (_b = options[selectedIndex]) === null || _b === void 0 ? void 0 : _b[labelAlias];
+ },
+ resetOrigin() {
+ this.update();
+ },
+ getCount() {
+ var _a, _b;
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.length;
+ },
+ };
+ }
+ calculateViewDeltaY(touchDeltaY) {
+ return Math.abs(touchDeltaY) > itemHeight ? 1.2 * touchDeltaY : touchDeltaY;
+ }
+ created() {
+ this.StartY = 0;
+ this.StartOffset = 0;
+ this.itemHeight = rpx2px(itemHeight);
+ }
+};
+PickerItem = __decorate([
+ wxComponent()
+], PickerItem);
+export default PickerItem;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.json b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.wxml
new file mode 100644
index 0000000..d89affa
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+ {{option[labelAlias]}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.wxss
new file mode 100644
index 0000000..daee0e8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/picker-item.wxss
@@ -0,0 +1,52 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+:host {
+ display: flex;
+}
+.t-picker-item__group {
+ height: var(--td-picker-group-height, 400rpx);
+ overflow: hidden;
+ flex: 1;
+ z-index: 1;
+}
+.t-picker-item__wrapper {
+ padding: 144rpx 0;
+}
+.t-picker-item__item {
+ text-align: center;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ height: var(--td-picker-item-height, 80rpx);
+ line-height: var(--td-picker-item-height, 80rpx);
+ color: var(--td-picker-item-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-picker-item__item--active {
+ color: var(--td-picker-item-active-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: 600;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/props.d.ts
new file mode 100644
index 0000000..1140c78
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPickerItemProps } from './type';
+declare const props: TdPickerItemProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/props.js
new file mode 100644
index 0000000..a55e0af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/props.js
@@ -0,0 +1,10 @@
+const props = {
+ format: {
+ type: null,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/type.d.ts
new file mode 100644
index 0000000..295060f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/type.d.ts
@@ -0,0 +1,14 @@
+export interface TdPickerItemProps {
+ format?: {
+ type: undefined;
+ value?: (option: PickerItemOption) => string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: PickerItemOption[];
+ };
+}
+export interface PickerItemOption {
+ label: string;
+ value: string | number;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/README.en-US.md
new file mode 100644
index 0000000..417a175
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/README.en-US.md
@@ -0,0 +1,34 @@
+:: BASE_DOC ::
+
+## API
+### Picker Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+auto-close | Boolean | true | \- | N
+cancel-btn | String / Boolean / Object | true | Typescript:`boolean \| string \| ButtonProps` | N
+confirm-btn | String / Boolean / Object | true | Typescript:`boolean \| string \| ButtonProps`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+footer | Slot | - | `deprecated` | N
+header | Boolean / Slot | true | \- | N
+keys | Object | - | Typescript:`KeysType` | N
+title | String | '' | \- | N
+value | Array | - | Typescript:`Array` `type PickerValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+default-value | Array | undefined | uncontrolled property。Typescript:`Array` `type PickerValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+visible | Boolean | false | \- | N
+
+### Picker Events
+
+name | params | description
+-- | -- | --
+cancel | - | \-
+change | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | \-
+close | `(trigger: TriggerSource)` | `1.0.1`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | \-
+pick | `(value: Array, label: string, column: number, index: number)` | \-
+
+### PickerItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+format | Function | - | Typescript:`(option: PickerItemOption) => string` | N
+options | Array | [] | Typescript:`PickerItemOption[]` `interface PickerItemOption { label: string; value: string \| number }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker-item/type.ts) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/README.md
new file mode 100644
index 0000000..4b4c556
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/README.md
@@ -0,0 +1,72 @@
+---
+title: Picker 选择器
+description: 用于一组预设数据中的选择。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-picker": "tdesign-miniprogram/picker/picker",
+ "t-picker-item": "tdesign-miniprogram/picker-item/picker-item",
+}
+```
+
+## 代码演示
+
+### 组件类型
+#### 基础选择器
+
+单项和多选选择
+
+{{ base }}
+
+#### 地区选择器
+
+支持省市区切换,支持数据联动
+
+{{ area }}
+
+### 组件状态
+
+是否带标题
+
+{{ with-title }}
+
+## API
+### Picker Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+auto-close | Boolean | true | 自动关闭;在确认、取消、点击遮罩层自动关闭,不需要手动设置 visible | N
+cancel-btn | String / Boolean / Object | true | 取消按钮文字。TS 类型:`boolean \| string \| ButtonProps` | N
+confirm-btn | String / Boolean / Object | true | 确定按钮文字。TS 类型:`boolean \| string \| ButtonProps`,[Button API Documents](./button?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+footer | Slot | - | 已废弃。底部内容 | N
+header | Boolean / Slot | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 TNode 表示自定义头部内容 | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+title | String | '' | 标题 | N
+value | Array | - | 选中值。TS 类型:`Array` `type PickerValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+default-value | Array | undefined | 选中值。非受控属性。TS 类型:`Array` `type PickerValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts) | N
+visible | Boolean | false | 是否显示 | N
+
+### Picker Events
+
+名称 | 参数 | 描述
+-- | -- | --
+cancel | - | 点击取消按钮时触发
+change | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | 选中变化时候触发,即确认变化时触发
+close | `(trigger: TriggerSource)` | `1.0.1`。关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker/type.ts)。
`type TriggerSource = 'overlay' \| 'cancel-btn' \| 'confrim-btn'`
+confirm | `(value: Array, label: string, columns: Array<{ column: number; index: number }> )` | 点击确认按钮时触发
+pick | `(value: Array, label: string, column: number, index: number)` | 任何一列选中都会触发,不同的列参数不同。`column` 表示第几列变化,`index` 表示变化那一列的选中项下标
+
+### PickerItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+format | Function | - | 格式化标签。TS 类型:`(option: PickerItemOption) => string` | N
+options | Array | [] | 数据源。TS 类型:`PickerItemOption[]` `interface PickerItemOption { label: string; value: string \| number }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/picker-item/type.ts) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.d.ts
new file mode 100644
index 0000000..0ef9969
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.d.ts
@@ -0,0 +1,33 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Picker extends SuperComponent {
+ properties: import("./type").TdPickerProps;
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ observers: {
+ value(): void;
+ keys(obj: any): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ labelAlias: string;
+ valueAlias: string;
+ };
+ methods: {
+ updateChildren(): void;
+ getSelectedValue(): any[];
+ getColumnIndexes(): any;
+ onConfirm(): void;
+ triggerColumnChange({ column, index }: {
+ column: any;
+ index: any;
+ }): void;
+ onCancel(): void;
+ onPopupChange(e: any): void;
+ close(trigger: any): void;
+ };
+ ready(): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.js b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.js
new file mode 100644
index 0000000..2d232bb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.js
@@ -0,0 +1,104 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-picker`;
+let Picker = class Picker extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-confirm`, `${prefix}-class-cancel`, `${prefix}-class-title`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../picker-item/picker-item': {
+ type: 'child',
+ linked() {
+ this.updateChildren();
+ },
+ },
+ };
+ this.observers = {
+ value() {
+ this.updateChildren();
+ },
+ keys(obj) {
+ this.setData({
+ labelAlias: obj.label || 'label',
+ valueAlias: obj.value || 'value',
+ });
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ };
+ this.methods = {
+ updateChildren() {
+ const { value } = this.properties;
+ this.$children.forEach((child, index) => {
+ child.setData({
+ value: (value === null || value === void 0 ? void 0 : value[index]) || '',
+ });
+ child.update();
+ });
+ },
+ getSelectedValue() {
+ const value = this.$children.map((item) => item._selectedValue);
+ const label = this.$children.map((item) => item._selectedLabel);
+ return [value, label];
+ },
+ getColumnIndexes() {
+ const columns = this.$children.map((pickerColumn, columnIndex) => {
+ return {
+ column: columnIndex,
+ index: pickerColumn._selectedIndex,
+ };
+ });
+ return columns;
+ },
+ onConfirm() {
+ const [value, label] = this.getSelectedValue();
+ const columns = this.getColumnIndexes();
+ this.close('confirm-btn');
+ this.triggerEvent('change', { value, label, columns });
+ this.triggerEvent('confirm', { value, label, columns });
+ },
+ triggerColumnChange({ column, index }) {
+ const [value, label] = this.getSelectedValue();
+ this.triggerEvent('pick', { value, label, column, index });
+ },
+ onCancel() {
+ this.close('cancel-btn');
+ this.triggerEvent('cancel');
+ },
+ onPopupChange(e) {
+ const { visible } = e.detail;
+ this.close('overlay');
+ this.triggerEvent('visible-change', { visible });
+ },
+ close(trigger) {
+ if (this.data.autoClose) {
+ this.setData({ visible: false });
+ }
+ this.triggerEvent('close', { trigger });
+ },
+ };
+ }
+ ready() {
+ this.$children.map((column, index) => (column.columnIndex = index));
+ }
+};
+Picker = __decorate([
+ wxComponent()
+], Picker);
+export default Picker;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.json b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.json
new file mode 100644
index 0000000..b93d975
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-popup": "../popup/popup"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.wxml
new file mode 100644
index 0000000..86e71d8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ {{cancelBtn}}
+ {{title}}
+ {{confirmBtn}}
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.wxss
new file mode 100644
index 0000000..fed2ec0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/picker.wxss
@@ -0,0 +1,102 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-picker {
+ position: relative;
+ background-color: var(--td-picker-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ border-top-left-radius: var(--td-picker-border-radius, 24rpx);
+ border-top-right-radius: var(--td-picker-border-radius, 24rpx);
+}
+.t-picker__toolbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ overflow: hidden;
+ height: var(--td-picker-toolbar-height, 116rpx);
+}
+.t-picker__title {
+ flex: 1;
+ text-align: center;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--td-picker-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: var(--td-picker-title-line-height, 52rpx);
+ font-weight: var(--td-picker-title-font-weight, 600);
+ font-size: var(--td-picker-title-font-size, 36rpx);
+}
+.t-picker__cancel,
+.t-picker__confirm {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ user-select: none;
+ font-size: var(--td-picker-button-font-size, 32rpx);
+ height: 100%;
+ padding: 0 32rpx;
+}
+.t-picker__cancel {
+ color: var(--td-picker-cancel-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+}
+.t-picker__confirm {
+ color: var(--td-picker-confirm-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-picker__main {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ padding-left: 64rpx;
+ padding-right: 64rpx;
+}
+.t-picker__mask {
+ position: absolute;
+ left: 0;
+ right: 0;
+ z-index: 3;
+ backface-visibility: hidden;
+ pointer-events: none;
+ height: 96rpx;
+}
+.t-picker__mask--top {
+ top: 0;
+ background: linear-gradient(180deg, #fff 0%, rgba(255, 255, 255, 0) 100%);
+}
+.t-picker__mask--bottom {
+ bottom: 0;
+ background: linear-gradient(180deg, #fff 0%, rgba(255, 255, 255, 0) 100%);
+ transform: matrix(1, 0, 0, -1, 0, 0);
+}
+.t-picker__indicator {
+ height: var(--td-picker-item-height, 80rpx);
+ position: absolute;
+ left: 32rpx;
+ right: 32rpx;
+ top: 144rpx;
+ pointer-events: none;
+ background-color: var(--td-picker-indicator-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ border-radius: var(--td-picker-indicator-border-radius, 12rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/props.d.ts
new file mode 100644
index 0000000..d673411
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPickerProps } from './type';
+declare const props: TdPickerProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/props.js
new file mode 100644
index 0000000..7390cb8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/props.js
@@ -0,0 +1,37 @@
+const props = {
+ autoClose: {
+ type: Boolean,
+ value: true,
+ },
+ cancelBtn: {
+ type: null,
+ value: true,
+ },
+ confirmBtn: {
+ type: null,
+ value: true,
+ },
+ header: {
+ type: Boolean,
+ value: true,
+ },
+ keys: {
+ type: Object,
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: Array,
+ value: null,
+ },
+ defaultValue: {
+ type: Array,
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/type.d.ts
new file mode 100644
index 0000000..cc51c33
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/type.d.ts
@@ -0,0 +1,46 @@
+import { ButtonProps } from '../button/index';
+import { KeysType } from '../common/common';
+export interface TdPickerProps {
+ autoClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ cancelBtn?: {
+ type: null;
+ value?: boolean | string | ButtonProps;
+ };
+ confirmBtn?: {
+ type: null;
+ value?: boolean | string | ButtonProps;
+ };
+ header?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ defaultValue?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
+export declare type PickerColumn = PickerColumnItem[];
+export interface PickerColumnItem {
+ label: string;
+ value: string;
+}
+export declare type PickerValue = string | number;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/picker/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/picker/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/README.en-US.md
new file mode 100644
index 0000000..3aa395d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/README.en-US.md
@@ -0,0 +1,25 @@
+:: BASE_DOC ::
+
+## API
+### Popup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | - | \- | N
+close-on-overlay-click | Boolean | true | \- | N
+content | String / Slot | - | \- | N
+duration | Number | 240 | \- | N
+external-classes | Array | - | `['t-class', 't-class-overlay', 't-class-content']` | N
+overlay-props | Object | {} | \- | N
+placement | String | top | options:top/left/right/bottom/center | N
+prevent-scroll-through | Boolean | true | \- | N
+show-overlay | Boolean | true | \- | N
+visible | Boolean | false | Typescript:`boolean` | N
+default-visible | Boolean | undefined | uncontrolled property。Typescript:`boolean` | N
+z-index | Number | 11500 | \- | N
+
+### Popup Events
+
+name | params | description
+-- | -- | --
+visible-change | `(visible: boolean, trigger: PopupSource) ` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/popup/type.ts)。
`type PopupSource = 'close-btn' \| 'overlay'`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/README.md
new file mode 100644
index 0000000..620c7f7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/README.md
@@ -0,0 +1,57 @@
+---
+title: Popup 弹出层
+description: 由其他控件触发,屏幕滑出或弹出一块自定义内容区域。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-popup": "tdesign-miniprogram/popup/popup"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础弹出层
+
+{{ base }}
+
+### 组件示例
+
+应用示例
+
+{{ with-title }}
+
+{{ custom-close }}
+
+## API
+### Popup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+close-btn | Boolean / Slot | - | 关闭按钮,值类型为 Boolean 时表示是否显示关闭按钮。也可以自定义关闭按钮 | N
+close-on-overlay-click | Boolean | true | 点击遮罩层是否关闭 | N
+content | String / Slot | - | 浮层里面的内容 | N
+duration | Number | 240 | 动画过渡时间 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、遮罩层、浮层内容 等元素类名。`['t-class', 't-class-overlay', 't-class-content']` | N
+overlay-props | Object | {} | 遮罩层的属性,透传至 overlay | N
+placement | String | top | 浮层出现位置。可选项:top/left/right/bottom/center | N
+prevent-scroll-through | Boolean | true | 防止滚动穿透 | N
+show-overlay | Boolean | true | 是否显示遮罩层 | N
+visible | Boolean | false | 是否显示浮层。TS 类型:`boolean` | N
+default-visible | Boolean | undefined | 是否显示浮层。非受控属性。TS 类型:`boolean` | N
+z-index | Number | 11500 | 组件层级,Web 侧样式默认为 5500,移动端样式默认为 1500,小程序样式默认为11500 | N
+
+### Popup Events
+
+名称 | 参数 | 描述
+-- | -- | --
+visible-change | `(visible: boolean, trigger: PopupSource) ` | 当浮层隐藏或显示时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/popup/type.ts)。
`type PopupSource = 'close-btn' \| 'overlay'`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.d.ts
new file mode 100644
index 0000000..543d354
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.d.ts
@@ -0,0 +1,20 @@
+import { TdPopupProps } from './type';
+import { SuperComponent } from '../common/src/index';
+export declare type PopupProps = TdPopupProps;
+export default class Popup extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: TdPopupProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ methods: {
+ onStopPropagation(): void;
+ handleOverlayClick(): void;
+ handleClose(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.js b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.js
new file mode 100644
index 0000000..b38ba13
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.js
@@ -0,0 +1,44 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import transition from '../mixins/transition';
+delete props.visible;
+const { prefix } = config;
+const name = `${prefix}-popup`;
+let Popup = class Popup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-content`];
+ this.behaviors = [transition()];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.methods = {
+ onStopPropagation() { },
+ handleOverlayClick() {
+ const { closeOnOverlayClick } = this.properties;
+ if (closeOnOverlayClick) {
+ this.triggerEvent('visible-change', { visible: false });
+ }
+ },
+ handleClose() {
+ this.triggerEvent('visible-change', { visible: false });
+ },
+ };
+ }
+};
+Popup = __decorate([
+ wxComponent()
+], Popup);
+export default Popup;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.json b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.json
new file mode 100644
index 0000000..870a7b6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-overlay": "../overlay/overlay",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxml
new file mode 100644
index 0000000..ae440c4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxs
new file mode 100644
index 0000000..a2da0d0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxs
@@ -0,0 +1,8 @@
+function getPopupStyles(zIndex) {
+ var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : '';
+ return zIndexStyle;
+}
+
+module.exports = {
+ getPopupStyles: getPopupStyles,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxss
new file mode 100644
index 0000000..3dab153
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/popup.wxss
@@ -0,0 +1,104 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-popup {
+ position: fixed;
+ z-index: 11500;
+ max-height: 100vh;
+ transition: all 300ms ease;
+ background-color: var(--td-popup-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-popup__content {
+ position: relative;
+ z-index: 1;
+}
+.t-popup__close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 20rpx;
+ line-height: 1;
+}
+.t-popup--top {
+ top: 0;
+ left: 0;
+ width: 100%;
+ border-bottom-left-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+ border-bottom-right-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+}
+.t-popup--bottom {
+ bottom: 0;
+ left: 0;
+ width: 100vw;
+ border-top-left-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+ border-top-right-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+}
+.t-popup--left {
+ top: 0;
+ left: 0;
+ height: 100vh;
+}
+.t-popup--right {
+ top: 0;
+ right: 0;
+ height: 100vh;
+}
+.t-popup--center {
+ top: 50%;
+ left: 50%;
+ transform: scale(1) translate3d(-50%, -50%, 0);
+ transform-origin: 0% 0%;
+ border-radius: var(--td-popup-border-radius, var(--td-radius-default, 12rpx));
+}
+.t-popup.t-fade-enter.t-popup--top,
+.t-popup.t-fade-leave-to.t-popup--top {
+ transform: translateY(-100%);
+}
+.t-popup.t-fade-enter.t-popup--bottom,
+.t-popup.t-fade-leave-to.t-popup--bottom {
+ transform: translateY(100%);
+}
+.t-popup.t-fade-enter.t-popup--left,
+.t-popup.t-fade-leave-to.t-popup--left {
+ transform: translateX(-100%);
+}
+.t-popup.t-fade-enter.t-popup--right,
+.t-popup.t-fade-leave-to.t-popup--right {
+ transform: translateX(100%);
+}
+.t-popup.t-fade-enter.t-popup--center,
+.t-popup.t-fade-leave-to.t-popup--center {
+ transform: scale(0.6) translate3d(-50%, -50%, 0);
+ opacity: 0;
+}
+.t-popup.t-dialog-enter.t-popup--center,
+.t-popup.t-dialog-leave-to.t-popup--center {
+ transform: scale(0.6) translate3d(-50%, -50%, 0);
+ opacity: 0;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/props.d.ts
new file mode 100644
index 0000000..e23cd6c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPopupProps } from './type';
+declare const props: TdPopupProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/props.js
new file mode 100644
index 0000000..dd31f2c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/props.js
@@ -0,0 +1,51 @@
+const props = {
+ closeBtn: {
+ type: Boolean,
+ },
+ closeOnOverlayClick: {
+ type: Boolean,
+ value: true,
+ },
+ content: {
+ type: String,
+ },
+ duration: {
+ type: Number,
+ value: 240,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ overlayProps: {
+ type: Object,
+ value: {},
+ },
+ placement: {
+ type: String,
+ value: 'top',
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: true,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: true,
+ },
+ transitionProps: {
+ type: Object,
+ },
+ visible: {
+ type: Boolean,
+ value: null,
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false,
+ },
+ zIndex: {
+ type: Number,
+ value: 11500,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/type.d.ts
new file mode 100644
index 0000000..fa09661
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/type.d.ts
@@ -0,0 +1,62 @@
+import { TdTransitionProps } from '../transition/index';
+export interface TdPopupProps {
+ closeBtn?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ closeOnOverlayClick?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-overlay', 't-class-content'];
+ };
+ overlayProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'top' | 'left' | 'right' | 'bottom' | 'center';
+ };
+ preventScrollThrough?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ transitionProps?: {
+ type: ObjectConstructor;
+ value?: TdTransitionProps;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultVisible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
+export interface PopupVisibleChangeContext {
+ trigger: 'close-btn' | 'overlay';
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/popup/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/popup/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/README.en-US.md
new file mode 100644
index 0000000..c4b14b8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/README.en-US.md
@@ -0,0 +1,15 @@
+:: BASE_DOC ::
+
+## API
+### Progress Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+color | String / Object / Array | '' | Typescript:`string \| Array \| Record` | N
+external-classes `v0.25.0` | Array | - | `['t-class', 't-class-bar', 't-class-label']` | N
+label | String / Boolean / Slot | true | \- | N
+percentage | Number | 0 | \- | N
+status | String | - | options:success/error/warning/active。Typescript:`StatusEnum` `type StatusEnum = 'success' \| 'error' \| 'warning' \| 'active'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+stroke-width | String / Number | - | \- | N
+theme | String | line | options:line/plump/circle。Typescript:`ThemeEnum` `type ThemeEnum = 'line' \| 'plump' \| 'circle'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+track-color | String | '' | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/README.md
new file mode 100644
index 0000000..a95554d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/README.md
@@ -0,0 +1,71 @@
+---
+title: Progress 进度条
+description: 用于展示任务当前的进度。
+spline: message
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.7.3 版本上线,请留意版本。
+
+
+## 引入
+
+### 引入组件
+
+在 `app.json` 或 `page.json` 中引入组件:
+
+```json
+"usingComponents": {
+ "t-progress": "tdesign-miniprogram/progress/progress"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础进度条
+
+{{ base }}
+
+过渡样式
+
+{{ transition }}
+
+自定义颜色/圆角
+
+{{ custom }}
+
+### 02 组件状态
+
+线性进度条
+
+{{ line }}
+
+百分比内显进度条
+
+{{ plump }}
+
+环形进度条
+
+{{ circle }}
+
+## API
+### Progress Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+color | String / Object / Array | '' | 进度条颜色。示例:'#ED7B2F' 或 'orange' 或 `['#f00', '#0ff', '#f0f']` 或 `{ '0%': '#f00', '100%': '#0ff' }` 或 `{ from: '#000', to: '#000' }` 等。TS 类型:`string \| Array \| Record` | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层、进度文字等元素类名。。`['t-class', 't-class-bar', 't-class-label']` | N
+label | String / Boolean / Slot | true | 进度百分比,可自定义 | N
+percentage | Number | 0 | 进度条百分比 | N
+status | String | - | 进度条状态。可选项:success/error/warning/active。TS 类型:`StatusEnum` `type StatusEnum = 'success' \| 'error' \| 'warning' \| 'active'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+stroke-width | String / Number | - | 进度条线宽,默认单位 `px`。| N
+theme | String | line | 进度条风格。值为 line,标签(label)显示在进度条右侧;值为 plump,标签(label)显示在进度条里面;值为 circle,标签(label)显示在进度条正中间。可选项:line/plump/circle。TS 类型:`ThemeEnum` `type ThemeEnum = 'line' \| 'plump' \| 'circle'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/progress/type.ts) | N
+track-color | String | '' | 进度条未完成部分颜色 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.d.ts
new file mode 100644
index 0000000..c627dc5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.d.ts
@@ -0,0 +1,26 @@
+import { SuperComponent } from '../common/src/index';
+export default class Progress extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdProgressProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ colorBar: string;
+ heightBar: string;
+ computedStatus: string;
+ computedProgress: number;
+ };
+ observers: {
+ percentage(percentage: any): void;
+ color(color: any): void;
+ strokeWidth(strokeWidth: any): string;
+ theme(theme: any): void;
+ trackColor(trackColor: any): void;
+ };
+ methods: {
+ getInnerDiameter(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.js b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.js
new file mode 100644
index 0000000..4f91512
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.js
@@ -0,0 +1,81 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getBackgroundColor } from './utils';
+import { unitConvert, getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-progress`;
+let Progress = class Progress extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-bar`, `${prefix}-class-label`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ colorBar: '',
+ heightBar: '',
+ computedStatus: '',
+ computedProgress: 0,
+ };
+ this.observers = {
+ percentage(percentage) {
+ percentage = Math.max(0, Math.min(percentage, 100));
+ this.setData({
+ computedStatus: percentage === 100 ? 'success' : '',
+ computedProgress: percentage,
+ });
+ },
+ color(color) {
+ this.setData({
+ colorBar: getBackgroundColor(color),
+ colorCircle: typeof color === 'object' ? '' : color,
+ });
+ },
+ strokeWidth(strokeWidth) {
+ if (!strokeWidth) {
+ return '';
+ }
+ this.setData({
+ heightBar: unitConvert(strokeWidth),
+ });
+ },
+ theme(theme) {
+ if (theme === 'circle') {
+ this.getInnerDiameter();
+ }
+ },
+ trackColor(trackColor) {
+ this.setData({
+ bgColorBar: trackColor,
+ });
+ },
+ };
+ this.methods = {
+ getInnerDiameter() {
+ const { strokeWidth } = this.properties;
+ const wrapID = `.${name}__canvas--circle`;
+ if (strokeWidth) {
+ getRect(this, wrapID).then((wrapRect) => {
+ this.setData({
+ innerDiameter: wrapRect.width - unitConvert(strokeWidth) * 2,
+ });
+ });
+ }
+ },
+ };
+ }
+};
+Progress = __decorate([
+ wxComponent()
+], Progress);
+export default Progress;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.json b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxml
new file mode 100644
index 0000000..f531829
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+
+
+
+
+
+ {{ _.isString(label)? label: computedProgress + '%' }}
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxs
new file mode 100644
index 0000000..04d10f4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxs
@@ -0,0 +1,44 @@
+var STATUS = ['success', 'error', 'warning'];
+var STATUS_TEXT = ['success', 'error', 'warning', 'active'];
+
+var PRO_THEME = {
+ LINE: 'line',
+ PLUMP: 'plump',
+ CIRCLE: 'circle',
+};
+
+var STATUS_COLOR = {
+ success: '#00a870',
+ error: '#e34d59',
+ warning: '#ed7b2f',
+};
+var LINE_STATUS_ICON = {
+ success: 'check-circle-filled',
+ error: 'error-circle-filled',
+ warning: 'error-circle-filled',
+};
+var CIRCLE_STATUS_ICON = {
+ success: 'check',
+ error: 'close',
+ warning: 'error',
+};
+
+var getAriaLabel = function (status) {
+ if (status === 'error') {
+ return '进度失败';
+ }
+ if (status === 'warning') {
+ return '进度异常';
+ }
+ return '';
+};
+
+module.exports = {
+ STATUS: STATUS,
+ STATUS_TEXT: STATUS_TEXT,
+ PRO_THEME: PRO_THEME,
+ STATUS_COLOR: STATUS_COLOR,
+ LINE_STATUS_ICON: LINE_STATUS_ICON,
+ CIRCLE_STATUS_ICON: CIRCLE_STATUS_ICON,
+ getAriaLabel: getAriaLabel,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxss
new file mode 100644
index 0000000..8d684f4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/progress.wxss
@@ -0,0 +1,156 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-progress__inner {
+ position: relative;
+ height: 100%;
+ background: var(--td-progress-inner-bg-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: var(--td-radius-round, 999px);
+ transition: all var(--td-anim-duration-base, 0.2s) var(--td-anim-time-fn-easing, cubic-bezier(0.38, 0, 0.24, 1));
+}
+.t-progress__bar {
+ width: 100%;
+ height: 12rpx;
+ overflow: hidden;
+ background: var(--td-progress-track-bg-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-radius: var(--td-radius-round, 999px);
+}
+.t-progress__info {
+ margin-left: var(--td-spacer, 16rpx);
+ color: var(--td-progress-info-dark-color, var(--td-text-color-primary, var(--td-font-gray-1, rgba(0, 0, 0, 0.9))));
+ white-space: nowrap;
+ display: inline-flex;
+}
+.t-progress--thin {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.t-progress--thin .t-progress__icon {
+ font-size: calc(var(--td-font-size-base, 28rpx) + 2px);
+}
+.t-progress--plump {
+ height: 40rpx;
+ border-radius: calc(40rpx / 2);
+ display: flex;
+ align-items: center;
+}
+.t-progress--plump .t-progress__info {
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-progress--over-ten .t-progress__info {
+ position: absolute;
+ top: 50%;
+ right: var(--td-spacer, 16rpx);
+ color: var(--td-progress-info-light-color, var(--td-font-white-1, #ffffff));
+ transform: translateY(-50%);
+}
+.t-progress--under-ten .t-progress__info,
+.t-progress--under-ten .t-progress__inner {
+ display: inline-block;
+}
+.t-progress--under-ten .t-progress__info {
+ vertical-align: top;
+}
+.t-progress__canvas--circle {
+ position: relative;
+ width: 224rpx;
+ height: 224rpx;
+ border-radius: var(--td-radius-circle, 50%);
+}
+.t-progress__canvas--circle .t-progress__canvas--inner {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ width: calc(100% - 12rpx*2);
+ height: calc(100% - 12rpx*2);
+ border-radius: var(--td-radius-circle, 50%);
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ background-color: var(--td-progress-circle-inner-bg-color, var(--td-font-white-1, #ffffff));
+}
+.t-progress__canvas--circle .t-progress__info {
+ margin: 0;
+ font-size: 40rpx;
+ font-weight: 700;
+ line-height: 56rpx;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+.t-progress__canvas--circle .t-progress__icon {
+ font-size: 96rpx;
+}
+.t-progress--status--active .t-progress__inner::before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: '';
+ animation: progress-active-animation 2s cubic-bezier(0.23, 0.99, 0.86, 0.2) infinite;
+ background: var(--td-progress-inner-bg-color-active, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ opacity: 0.2;
+}
+.t-progress--status--success .t-progress__inner {
+ background: var(--td-progress-inner-bg-color-success, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-progress--status--success .t-progress__icon {
+ color: var(--td-success-color, var(--td-success-color-5, #2ba471));
+}
+.t-progress--status--warning .t-progress__inner {
+ background: var(--td-progress-inner-bg-color-warning, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-progress--status--warning .t-progress__icon {
+ color: var(--td-warning-color, var(--td-warning-color-5, #e37318));
+}
+.t-progress--status--error .t-progress__inner {
+ background: var(--td-progress-inner-bg-color-error, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-progress--status--error .t-progress__icon {
+ color: var(--td-error-color, var(--td-error-color-6, #d54941));
+}
+@keyframes progress-active-animation {
+ 0% {
+ width: 0;
+ opacity: 0.1;
+ }
+ 35% {
+ width: 50%;
+ opacity: 0.4;
+ }
+ 100% {
+ width: 100%;
+ opacity: 0;
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/props.d.ts
new file mode 100644
index 0000000..214f11a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/props.d.ts
@@ -0,0 +1,3 @@
+import { TdProgressProps } from './type';
+declare const props: TdProgressProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/props.js
new file mode 100644
index 0000000..d203455
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/props.js
@@ -0,0 +1,32 @@
+const props = {
+ color: {
+ type: null,
+ value: '',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ label: {
+ type: null,
+ value: true,
+ },
+ percentage: {
+ type: Number,
+ value: 0,
+ },
+ status: {
+ type: String,
+ },
+ strokeWidth: {
+ type: null,
+ },
+ theme: {
+ type: String,
+ value: 'line',
+ },
+ trackColor: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/type.d.ts
new file mode 100644
index 0000000..d0e3d07
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/type.d.ts
@@ -0,0 +1,40 @@
+export interface TdProgressProps {
+ color?: {
+ type: null;
+ value?: string | Array | Record;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-bar', 't-class-label'];
+ };
+ label?: {
+ type: null;
+ value?: string | boolean;
+ };
+ percentage?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ status?: {
+ type: StringConstructor;
+ value?: StatusEnum;
+ };
+ strokeWidth?: {
+ type: null;
+ value?: string | number;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: ThemeEnum;
+ };
+ trackColor?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type StatusEnum = 'success' | 'error' | 'warning' | 'active';
+export declare type ThemeEnum = 'line' | 'plump' | 'circle';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/utils.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/utils.d.ts
new file mode 100644
index 0000000..84b7889
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/utils.d.ts
@@ -0,0 +1,11 @@
+export declare type Gradients = {
+ [percent: string]: string;
+};
+export declare type FromTo = {
+ from: string;
+ to: string;
+};
+export declare type LinearGradient = {
+ direction?: string;
+} & (Gradients | FromTo);
+export declare function getBackgroundColor(color: string | string[] | LinearGradient): string;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/progress/utils.js b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/utils.js
new file mode 100644
index 0000000..455982c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/progress/utils.js
@@ -0,0 +1,30 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+export function getBackgroundColor(color) {
+ if (typeof color === 'string') {
+ return color;
+ }
+ if (Array.isArray(color)) {
+ if (color[0] && color[0][0] === '#') {
+ color.unshift('90deg');
+ }
+ return `linear-gradient( ${color.join(',')} )`;
+ }
+ const { from, to, direction = 'to right' } = color, rest = __rest(color, ["from", "to", "direction"]);
+ let keys = Object.keys(rest);
+ if (keys.length) {
+ keys = keys.sort((a, b) => parseFloat(a.substr(0, a.length - 1)) - parseFloat(b.substr(0, b.length - 1)));
+ const tempArr = keys.map((key) => `${rest[key]} ${key}`);
+ return `linear-gradient(${direction}, ${tempArr.join(',')})`;
+ }
+ return `linear-gradient(${direction}, ${from}, ${to})`;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/README.en-US.md
new file mode 100644
index 0000000..e4cc94c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### PullDownRefresh Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+external-classes | Array | - | `['t-class', 't-class-loading','t-class-text', 't-class-indicator']` | N
+loading-bar-height | String / Number | 50 | \- | N
+loading-props | Object | - | Typescript:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/pull-down-refresh/type.ts) | N
+loading-texts | Array | [] | Typescript:`string[]` | N
+max-bar-height | String / Number | 80 | \- | N
+refresh-timeout | Number | 3000 | \- | N
+value | Boolean | false | \- | N
+default-value | Boolean | false | uncontrolled property | N
+
+### PullDownRefresh Events
+
+name | params | description
+-- | -- | --
+change | `(value: boolean)` | \-
+refresh | \- | \-
+scrolltolower | \- | \-
+timeout | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/README.md
new file mode 100644
index 0000000..afb61c9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/README.md
@@ -0,0 +1,52 @@
+---
+title: PullDownRefresh 下拉刷新
+description: 用于快速刷新页面信息,刷新可以是整页刷新也可以是页面的局部刷新。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh"
+}
+```
+
+## 代码演示
+
+### 顶部下拉刷新
+
+由于组件内无法监听页面滚动,需要由页面获取组件实例,并将页面滚动事件传递到组件。
+
+{{ base }}
+
+
+
+> 在使用 pull-down-refresh 组件的页面,建议开启 `disableScroll: true`
+
+## API
+### PullDownRefresh Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+external-classes | Array | - | 加载loading样式。`['t-class', 't-class-loading','t-class-text', 't-class-indicator']` | N
+loading-bar-height | String / Number | 50 | 加载中下拉高度,如果值为数字则单位是:'px' | N
+loading-props | Object | - | 加载loading样式。TS 类型:`LoadingProps`,[Loading API Documents](./loading?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/pull-down-refresh/type.ts) | N
+loading-texts | Array | [] | 提示语,组件内部默认值为 ['下拉刷新', '松手刷新', '正在刷新', '刷新完成']。TS 类型:`string[]` | N
+max-bar-height | String / Number | 80 | 最大下拉高度,如果值为数字则单位是:'px' | N
+refresh-timeout | Number | 3000 | 刷新超时时间 | N
+value | Boolean | false | 组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态 | N
+default-value | Boolean | false | 组件状态,值为 `true` 表示下拉状态,值为 `false` 表示收起状态。非受控属性 | N
+
+### PullDownRefresh Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: boolean)` | 下拉或收起时触发,用户手势往下滑动触发下拉状态,手势松开触发收起状态
+refresh | \- | 结束下拉时触发
+scrolltolower | \- | 滚动到页面底部时触发
+timeout | \- | 刷新超时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/props.d.ts
new file mode 100644
index 0000000..b7cb543
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/props.d.ts
@@ -0,0 +1,3 @@
+import { TdPullDownRefreshProps } from './type';
+declare const props: TdPullDownRefreshProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/props.js
new file mode 100644
index 0000000..7921dec
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/props.js
@@ -0,0 +1,35 @@
+const props = {
+ externalClasses: {
+ type: Array,
+ },
+ loadingBarHeight: {
+ type: String,
+ optionalTypes: [Number],
+ value: 50,
+ },
+ loadingProps: {
+ type: Object,
+ },
+ loadingTexts: {
+ type: Array,
+ value: [],
+ },
+ maxBarHeight: {
+ type: String,
+ optionalTypes: [Number],
+ value: 80,
+ },
+ refreshTimeout: {
+ type: Number,
+ value: 3000,
+ },
+ value: {
+ type: Boolean,
+ value: null,
+ },
+ defaultValue: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.d.ts
new file mode 100644
index 0000000..7e34668
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.d.ts
@@ -0,0 +1,51 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class PullDownRefresh extends SuperComponent {
+ pixelRatio: number;
+ startPoint: {
+ pageX: number;
+ pageY: number;
+ } | null;
+ isPulling: boolean;
+ maxBarHeight: number;
+ loadingBarHeight: number;
+ maxRefreshAnimateTimeFlag: number;
+ closingAnimateTimeFlag: number;
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ properties: import("./type").TdPullDownRefreshProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ barHeight: number;
+ refreshStatus: number;
+ loosing: boolean;
+ enableToRefresh: boolean;
+ scrollTop: number;
+ };
+ lifetimes: {
+ attached(): void;
+ detached(): void;
+ };
+ observers: {
+ value(val: any): void;
+ maxBarHeight(val: any): void;
+ loadingBarHeight(val: any): void;
+ };
+ methods: {
+ onScrollToBottom(): void;
+ onScrollToTop(): void;
+ onScroll(e: any): void;
+ onTouchStart(e: WechatMiniprogram.Component.TrivialInstance): void;
+ onTouchMove(e: WechatMiniprogram.Component.TrivialInstance): void;
+ onTouchEnd(e: WechatMiniprogram.Component.TrivialInstance): void;
+ toRpx(v: number | string): number;
+ toPx(v: number): number;
+ setRefreshBarHeight(barHeight: number): Promise;
+ close(): void;
+ setScrollTop(scrollTop: number): void;
+ scrollToTop(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.js b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.js
new file mode 100644
index 0000000..b41a94f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.js
@@ -0,0 +1,200 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-pull-down-refresh`;
+let PullDownRefresh = class PullDownRefresh extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.pixelRatio = 1;
+ this.startPoint = null;
+ this.isPulling = false;
+ this.maxBarHeight = 0;
+ this.loadingBarHeight = 200;
+ this.maxRefreshAnimateTimeFlag = 0;
+ this.closingAnimateTimeFlag = 0;
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-loading`, `${prefix}-class-text`, `${prefix}-class-indicator`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../back-top/back-top': {
+ type: 'descendant',
+ },
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ barHeight: 0,
+ refreshStatus: -1,
+ loosing: false,
+ enableToRefresh: true,
+ scrollTop: 0,
+ };
+ this.lifetimes = {
+ attached() {
+ const { screenWidth } = wx.getSystemInfoSync();
+ const { maxBarHeight, loadingBarHeight, loadingTexts } = this.properties;
+ this.setData({
+ loadingTexts: Array.isArray(loadingTexts) && loadingTexts.length >= 4
+ ? loadingTexts
+ : ['下拉刷新', '松手刷新', '正在刷新', '刷新完成'],
+ });
+ this.pixelRatio = 750 / screenWidth;
+ if (maxBarHeight) {
+ this.maxBarHeight = this.toRpx(maxBarHeight);
+ }
+ if (loadingBarHeight) {
+ this.setData({
+ computedLoadingBarHeight: this.toRpx(loadingBarHeight),
+ });
+ this.loadingBarHeight = this.toRpx(loadingBarHeight);
+ }
+ },
+ detached() {
+ clearTimeout(this.maxRefreshAnimateTimeFlag);
+ clearTimeout(this.closingAnimateTimeFlag);
+ },
+ };
+ this.observers = {
+ value(val) {
+ if (!val) {
+ clearTimeout(this.maxRefreshAnimateTimeFlag);
+ this.setData({ refreshStatus: 3 });
+ this.close();
+ }
+ },
+ maxBarHeight(val) {
+ this.maxBarHeight = this.toRpx(val);
+ },
+ loadingBarHeight(val) {
+ this.setData({
+ computedLoadingBarHeight: this.toRpx(val),
+ });
+ this.loadingBarHeight = this.toRpx(val);
+ },
+ };
+ this.methods = {
+ onScrollToBottom() {
+ this.triggerEvent('scrolltolower');
+ },
+ onScrollToTop() {
+ this.setData({
+ enableToRefresh: true,
+ });
+ },
+ onScroll(e) {
+ const { scrollTop } = e.detail;
+ this.setData({
+ enableToRefresh: scrollTop === 0,
+ });
+ this.triggerEvent('scroll', { scrollTop });
+ },
+ onTouchStart(e) {
+ if (this.isPulling || !this.data.enableToRefresh)
+ return;
+ const { touches } = e;
+ if (touches.length !== 1)
+ return;
+ const { pageX, pageY } = touches[0];
+ this.setData({ loosing: false });
+ this.startPoint = { pageX, pageY };
+ this.isPulling = true;
+ },
+ onTouchMove(e) {
+ if (!this.startPoint)
+ return;
+ const { touches } = e;
+ if (touches.length !== 1)
+ return;
+ const { pageY } = touches[0];
+ const offset = pageY - this.startPoint.pageY;
+ const barHeight = this.toRpx(offset);
+ if (barHeight > 0) {
+ if (barHeight > this.maxBarHeight) {
+ this.setRefreshBarHeight(this.maxBarHeight);
+ }
+ else {
+ this.setRefreshBarHeight(barHeight);
+ }
+ }
+ },
+ onTouchEnd(e) {
+ if (!this.startPoint)
+ return;
+ const { changedTouches } = e;
+ if (changedTouches.length !== 1)
+ return;
+ const { pageY } = changedTouches[0];
+ const barHeight = this.toRpx(pageY - this.startPoint.pageY);
+ this.startPoint = null;
+ this.setData({ loosing: true });
+ if (barHeight > this.loadingBarHeight) {
+ this.setData({
+ barHeight: this.loadingBarHeight,
+ refreshStatus: 2,
+ });
+ this.triggerEvent('change', { value: true });
+ this.triggerEvent('refresh');
+ this.maxRefreshAnimateTimeFlag = setTimeout(() => {
+ this.maxRefreshAnimateTimeFlag = null;
+ if (this.data.refreshStatus === 2) {
+ this.triggerEvent('timeout');
+ this.close();
+ }
+ }, this.properties.refreshTimeout);
+ }
+ else {
+ this.close();
+ }
+ },
+ toRpx(v) {
+ if (typeof v === 'number')
+ return v * this.pixelRatio;
+ return parseInt(v, 10);
+ },
+ toPx(v) {
+ return v / this.pixelRatio;
+ },
+ setRefreshBarHeight(barHeight) {
+ const data = { barHeight };
+ if (barHeight >= this.loadingBarHeight) {
+ data.refreshStatus = 1;
+ }
+ else {
+ data.refreshStatus = 0;
+ }
+ return new Promise((resolve) => {
+ this.setData(data, () => resolve(barHeight));
+ });
+ },
+ close() {
+ const animationDuration = 240;
+ this.setData({ barHeight: 0 });
+ this.triggerEvent('change', { value: false });
+ this.closingAnimateTimeFlag = setTimeout(() => {
+ this.closingAnimateTimeFlag = null;
+ this.setData({ refreshStatus: -1 });
+ this.isPulling = false;
+ }, animationDuration);
+ },
+ setScrollTop(scrollTop) {
+ this.setData({ scrollTop });
+ },
+ scrollToTop() {
+ this.setScrollTop(0);
+ },
+ };
+ }
+};
+PullDownRefresh = __decorate([
+ wxComponent()
+], PullDownRefresh);
+export default PullDownRefresh;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.json b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.json
new file mode 100644
index 0000000..e570665
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-loading": "../loading/loading"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.wxml
new file mode 100644
index 0000000..a40ada1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.wxml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ {{loadingTexts[refreshStatus]}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.wxss
new file mode 100644
index 0000000..a97581e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/pull-down-refresh.wxss
@@ -0,0 +1,57 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-pull-down-refresh {
+ overflow: hidden;
+ max-height: 100vh;
+ height: 100%;
+}
+.t-pull-down-refresh__track {
+ position: relative;
+}
+.t-pull-down-refresh__track--loosing {
+ transition: transform ease 0.24s;
+}
+.t-pull-down-refresh__tips {
+ position: absolute;
+ color: var(--td-pull-down-refresh-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: 24rpx;
+ top: 0;
+ width: 100%;
+ transform: translateY(-100%);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ overflow: hidden;
+}
+.t-pull-down-refresh__text {
+ margin: 16rpx 0 0;
+}
+.t-pull-down-refresh__wrap {
+ position: relative;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/type.d.ts
new file mode 100644
index 0000000..c012bda
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/type.d.ts
@@ -0,0 +1,41 @@
+import { LoadingProps } from '../loading/index';
+export interface TdPullDownRefreshProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-loading', 't-class-text', 't-class-indicator'];
+ };
+ loadingBarHeight?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ loadingProps?: {
+ type: ObjectConstructor;
+ value?: LoadingProps;
+ };
+ loadingTexts?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ maxBarHeight?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ refreshTimeout?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ value?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultValue?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/pull-down-refresh/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/props.d.ts
new file mode 100644
index 0000000..40dcb03
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRadioGroupProps } from './type';
+declare const props: TdRadioGroupProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/props.js
new file mode 100644
index 0000000..44c4054
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/props.js
@@ -0,0 +1,36 @@
+const props = {
+ placement: {
+ type: String,
+ value: 'left',
+ },
+ borderless: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ icon: {
+ type: null,
+ value: 'circle',
+ },
+ keys: {
+ type: Object,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ options: {
+ type: Array,
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.d.ts
new file mode 100644
index 0000000..25c81f2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.d.ts
@@ -0,0 +1,25 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class RadioGroup extends SuperComponent {
+ externalClasses: string[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ radioOptions: any[];
+ };
+ relations: RelationsOptions;
+ properties: import("./type").TdRadioGroupProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(v: any): void;
+ options(): void;
+ };
+ methods: {
+ getChilds(): any;
+ updateValue(value: any): void;
+ handleRadioChange(e: any): void;
+ initWithOptions(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.js b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.js
new file mode 100644
index 0000000..a943c70
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import config from '../common/config';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-radio-group`;
+let RadioGroup = class RadioGroup extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ radioOptions: [],
+ };
+ this.relations = {
+ '../radio/radio': {
+ type: 'descendant',
+ linked(target) {
+ const { value, disabled } = this.data;
+ target.setData({
+ checked: value === target.data.value,
+ });
+ target.setDisabled(disabled);
+ },
+ },
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(v) {
+ this.getChilds().forEach((item) => {
+ item.setData({
+ checked: v === item.data.value,
+ });
+ });
+ },
+ options() {
+ this.initWithOptions();
+ },
+ };
+ this.methods = {
+ getChilds() {
+ let items = this.$children;
+ if (!(items === null || items === void 0 ? void 0 : items.length)) {
+ items = this.selectAllComponents(`.${prefix}-radio-option`);
+ }
+ return items;
+ },
+ updateValue(value) {
+ this._trigger('change', { value });
+ },
+ handleRadioChange(e) {
+ const { value, index } = e.target.dataset;
+ this._trigger('change', { value, index });
+ },
+ initWithOptions() {
+ const { options, value, keys } = this.data;
+ if (!(options === null || options === void 0 ? void 0 : options.length) || !Array.isArray(options)) {
+ this.setData({
+ radioOptions: [],
+ });
+ return;
+ }
+ const optionsValue = [];
+ try {
+ options.forEach((element) => {
+ var _a, _b, _c;
+ const typeName = typeof element;
+ if (typeName === 'number' || typeName === 'string') {
+ optionsValue.push({
+ label: `${element}`,
+ value: element,
+ checked: value === element,
+ });
+ }
+ else if (typeName === 'object') {
+ optionsValue.push(Object.assign(Object.assign({}, element), { label: element[(_a = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _a !== void 0 ? _a : 'label'], value: element[(_b = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _b !== void 0 ? _b : 'value'], checked: value === element[(_c = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _c !== void 0 ? _c : 'value'] }));
+ }
+ });
+ this.setData({
+ radioOptions: optionsValue,
+ });
+ }
+ catch (error) {
+ console.error('error', error);
+ }
+ },
+ };
+ }
+};
+RadioGroup = __decorate([
+ wxComponent()
+], RadioGroup);
+export default RadioGroup;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.json b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.json
new file mode 100644
index 0000000..7994804
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-radio": "../radio/radio"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.wxml
new file mode 100644
index 0000000..d245948
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.wxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/radio-group.wxss
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/type.d.ts
new file mode 100644
index 0000000..6e9e0fc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/type.d.ts
@@ -0,0 +1,50 @@
+import { RadioValue } from '../radio/type';
+import { KeysType } from '../common/common';
+export interface TdRadioGroupProps {
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ borderless?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: 'circle' | 'line' | 'dot' | Array;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: null;
+ value?: T;
+ };
+ defaultValue?: {
+ type: null;
+ value?: T;
+ };
+}
+export declare type RadioOption = string | number | RadioOptionObj;
+export interface RadioOptionObj {
+ label?: string;
+ value?: string | number;
+ disabled?: boolean;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio-group/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/README.en-US.md
new file mode 100644
index 0000000..c3cb732
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/README.en-US.md
@@ -0,0 +1,48 @@
+:: BASE_DOC ::
+
+## API
+### Radio Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+placement | String | left | options:left/right | N
+allow-uncheck | Boolean | false | \- | N
+block | Boolean | true | \- | N
+checked | Boolean | false | \- | N
+default-checked | Boolean | undefined | uncontrolled property | N
+content | String / Slot | - | \- | N
+content-disabled | Boolean | false | \- | N
+disabled | Boolean | undefined | \- | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array | 'circle' | Typescript:`'circle' \| 'line' \| Array` | N
+label | String / Slot | - | \- | N
+max-content-row | Number | 5 | \- | N
+max-label-row | Number | 3 | \- | N
+name | String | - | \- | N
+value | String / Number / Boolean | false | Typescript:`T` | N
+
+### Radio Events
+
+name | params | description
+-- | -- | --
+change | `(checked: boolean)` | \-
+
+### RadioGroup Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+placement | String | left | options:left/right | N
+borderless | Boolean | false | \- | N
+disabled | Boolean | undefined | \- | N
+icon | String / Array | 'circle' | Typescript:`'circle' | 'line' | Array` | N
+keys | Object | - | Typescript:`KeysType` | N
+name | String | - | \- | N
+options | Array | - | Typescript:`Array` `type RadioOption = string \| number \| RadioOptionObj` `interface RadioOptionObj { label?: string; value?: string \| number; disabled?: boolean }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/radio-group/type.ts) | N
+value | String / Number / Boolean | - | Typescript:`T` | N
+default-value | String / Number / Boolean | undefined | uncontrolled property。Typescript:`T` | N
+
+### RadioGroup Events
+
+name | params | description
+-- | -- | --
+change | `(value: T)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/README.md
new file mode 100644
index 0000000..b2690f0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/README.md
@@ -0,0 +1,95 @@
+---
+title: Radio 单选框
+description: 用于在预设的一组选项中执行单项选择,并呈现选择结果。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-radio": "tdesign-miniprogram/radio/radio",
+ "t-radio-group": "tdesign-miniprogram/radio-group/radio-group"
+}
+```
+
+## 代码演示
+
+### 纵向单选框
+
+{{ base }}
+
+### 横向单选框
+
+{{ horizontal }}
+
+### 单选框状态
+
+{{ status }}
+
+### 勾选样式
+
+{{ theme }}
+
+### 勾选显示位置
+
+{{ align }}
+
+### 非通栏单选样式
+
+{{ card }}
+
+### 特殊样式
+
+{{ special }}
+
+## API
+### Radio Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+placement | String | left | 复选框和内容相对位置。可选项:left/right | N
+allow-uncheck | Boolean | false | 【开发中】是否允许取消选中 | N
+block | Boolean | true | 是否为块级元素 | N
+checked | Boolean | false | 是否选中 | N
+default-checked | Boolean | undefined | 是否选中。非受控属性 | N
+content | String / Slot | - | 单选内容 | N
+content-disabled | Boolean | false | 是否禁用组件内容(content)触发选中 | N
+disabled | Boolean | undefined | 是否为禁用态 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层、单选图标、主文案、内容 等元素类名。`['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border']` | N
+icon | String / Array / Slot | 'circle' | 自定义选中图标和非选中图标。使用 Array 时表示:`[选中态图标,非选中态图标]`。使用 String 时,值为 circle 表示填充型图标、值为 line 表示描边型图标、值为 dot 表示圆点图标,值为 slot 时使用插槽。TS 类型:`'circle' \| 'line' \| 'dot' \| Array` | N
+label | String / Slot | - | 主文案 | N
+max-content-row | Number | 5 | 内容最大行数限制 | N
+max-label-row | Number | 3 | 主文案最大行数限制 | N
+name | String | - | HTML 元素原生属性 | N
+value | String / Number / Boolean | false | 单选按钮的值。TS 类型:`RadioValue` `type RadioValue = string | number | boolean`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/radio/type.ts) | N
+
+### Radio Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(checked: boolean)` | 值变化时触发
+
+### RadioGroup Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+placement | String | 'left' | 复选框和内容相对位置;仅在使用 options 时生效。可选项:left/right | N
+borderless | Boolean | false | 是否开启无边框模式 | N
+disabled | Boolean | undefined | 是否禁用全部子单选框 | N
+icon | String / Array | 'circle' | 自定义选中图标和非选中图标。示例:[选中态图标,非选中态图标]。使用 String 时,值为 circle 表示填充型图标、值为 line 表示描边型图标、值为 dot 表示圆点图标;仅在使用 options 时生效。TS 类型:`'circle' | 'line' | 'dot' | Array` | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+name | String | - | HTML 元素原生属性 | N
+options | Array | - | 单选组件按钮形式。RadioOption 数据类型为 string 或 number 时,表示 label 和 value 值相同。TS 类型:`Array` `type RadioOption = string \| number \| RadioOptionObj` `interface RadioOptionObj { label?: string; value?: string \| number; disabled?: boolean }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/radio-group/type.ts) | N
+value | String / Number / Boolean | false | 选中的值。TS 类型:`RadioValue` | N
+default-value | String / Number / Boolean | undefined | 选中的值。非受控属性。TS 类型:`RadioValue` | N
+
+### RadioGroup Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: RadioValue)` | 选中值发生变化时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/props.d.ts
new file mode 100644
index 0000000..c59a8d0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRadioProps } from './type';
+declare const props: TdRadioProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/props.js
new file mode 100644
index 0000000..c4ef137
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/props.js
@@ -0,0 +1,60 @@
+const props = {
+ placement: {
+ type: String,
+ value: null,
+ },
+ allowUncheck: {
+ type: Boolean,
+ value: false,
+ },
+ block: {
+ type: Boolean,
+ value: true,
+ },
+ checked: {
+ type: Boolean,
+ value: null,
+ },
+ defaultChecked: {
+ type: Boolean,
+ value: false,
+ },
+ content: {
+ type: String,
+ },
+ contentDisabled: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: undefined,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: 'circle',
+ },
+ label: {
+ type: String,
+ },
+ maxContentRow: {
+ type: Number,
+ value: 5,
+ },
+ maxLabelRow: {
+ type: Number,
+ value: 3,
+ },
+ name: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: null,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.d.ts
new file mode 100644
index 0000000..ed39797
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.d.ts
@@ -0,0 +1,102 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Radio extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ lifetimes: {
+ attached(): void;
+ ready(): void;
+ };
+ properties: {
+ borderless: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: "left" | "right";
+ };
+ allowUncheck?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-icon", "t-class-label", "t-class-content", "t-class-border"];
+ };
+ icon?: {
+ type: null;
+ value?: string[] | "circle" | "line";
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: import("./type").RadioValue;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ customIcon: boolean;
+ slotIcon: boolean;
+ optionLinked: boolean;
+ iconVal: any[];
+ _placement: string;
+ };
+ methods: {
+ handleTap(e: any): void;
+ doChange(): void;
+ initStatus(): void;
+ setDisabled(disabled: Boolean): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.js b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.js
new file mode 100644
index 0000000..38f9c0a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import config from '../common/config';
+import { SuperComponent, wxComponent } from '../common/src/index';
+import Props from './props';
+const { prefix } = config;
+const name = `${prefix}-radio`;
+let Radio = class Radio extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-label`,
+ `${prefix}-class-icon`,
+ `${prefix}-class-content`,
+ `${prefix}-class-border`,
+ ];
+ this.behaviors = ['wx://form-field'];
+ this.relations = {
+ '../radio-group/radio-group': {
+ type: 'ancestor',
+ linked(parent) {
+ if (parent.data.borderless) {
+ this.setData({ borderless: true });
+ }
+ },
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.lifetimes = {
+ attached() {
+ this.initStatus();
+ },
+ ready() {
+ var _a, _b, _c, _d;
+ this.setData({
+ _placement: (_d = (_a = this.data.placement) !== null && _a !== void 0 ? _a : (_c = (_b = this.$parent) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.placement) !== null && _d !== void 0 ? _d : 'left',
+ });
+ },
+ };
+ this.properties = Object.assign(Object.assign({}, Props), { borderless: {
+ type: Boolean,
+ value: false,
+ } });
+ this.controlledProps = [
+ {
+ key: 'checked',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ customIcon: false,
+ slotIcon: false,
+ optionLinked: false,
+ iconVal: [],
+ _placement: '',
+ };
+ this.methods = {
+ handleTap(e) {
+ if (this.data.disabled)
+ return;
+ const { target } = e.currentTarget.dataset;
+ if (target === 'text' && this.data.contentDisabled)
+ return;
+ this.doChange();
+ },
+ doChange() {
+ const { value, checked } = this.data;
+ if (this.$parent) {
+ this.$parent.updateValue(value);
+ }
+ else {
+ this._trigger('change', { checked: !checked });
+ }
+ },
+ initStatus() {
+ var _a, _b;
+ const { icon } = this.data;
+ const isIdArr = Array.isArray(((_a = this.$parent) === null || _a === void 0 ? void 0 : _a.icon) || icon);
+ this.setData({
+ customIcon: isIdArr,
+ slotIcon: icon === 'slot',
+ iconVal: isIdArr ? ((_b = this.$parent) === null || _b === void 0 ? void 0 : _b.icon) || icon : [],
+ });
+ },
+ setDisabled(disabled) {
+ this.setData({
+ disabled: this.data.disabled || disabled,
+ });
+ },
+ };
+ }
+};
+Radio = __decorate([
+ wxComponent()
+], Radio);
+export default Radio;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.json b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.json
new file mode 100644
index 0000000..dfd59ed
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.wxml
new file mode 100644
index 0000000..e4c96d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.wxml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.wxss
new file mode 100644
index 0000000..33eec37
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/radio.wxss
@@ -0,0 +1,193 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.limit-title-row {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+.t-radio {
+ display: inline-flex;
+ vertical-align: middle;
+ font-size: var(--td-radio-font-size, 32rpx);
+ background: var(--td-radio-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ position: relative;
+}
+.t-radio:focus {
+ outline: 0;
+}
+.t-radio--block {
+ display: flex;
+ padding: var(--td-radio-vertical-padding, 32rpx);
+}
+.t-radio--right {
+ flex-direction: row-reverse;
+}
+.t-radio__icon {
+ position: relative;
+ width: var(--td-radio-icon-size, 48rpx);
+ height: var(--td-radio-icon-size, 48rpx);
+ font-size: var(--td-radio-icon-size, 48rpx);
+ color: var(--td-radio-icon-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ overflow: hidden;
+}
+.t-radio__icon:empty {
+ display: none;
+}
+.t-radio__icon--left {
+ margin-right: 16rpx;
+}
+.t-radio__icon--checked {
+ color: var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-radio__icon--disabled {
+ cursor: not-allowed;
+ color: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__icon-circle {
+ width: 84rpx;
+ height: 84rpx;
+ border: 3px solid var(--td-radio-icon-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+}
+.t-radio__icon-circle--disabled {
+ background: var(--td-radio-icon-disabled-bg-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-radio__icon-line:before,
+.t-radio__icon-line:after {
+ content: '';
+ display: block;
+ position: absolute;
+ width: 5rpx;
+ border-radius: 2rpx;
+ background: var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ transform-origin: top center;
+}
+.t-radio__icon-line:before {
+ height: 16rpx;
+ left: 8rpx;
+ top: 22rpx;
+ transform: rotate(-45deg);
+}
+.t-radio__icon-line::after {
+ height: 26rpx;
+ right: 8rpx;
+ top: 14rpx;
+ transform: rotate(45deg);
+}
+.t-radio__icon-line--disabled::before,
+.t-radio__icon-line--disabled::after {
+ background: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__icon-dot {
+ width: 84rpx;
+ height: 84rpx;
+ border: 3px solid var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) scale(0.5);
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-radio__icon-dot:after {
+ content: '';
+ display: block;
+ width: 48rpx;
+ height: 48rpx;
+ background: var(--td-radio-icon-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: 50%;
+}
+.t-radio__icon-dot--disabled {
+ border-color: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__icon-dot--disabled::after {
+ background: var(--td-radio-icon-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-radio__image {
+ line-height: var(--td-radio-icon-size, 48rpx);
+}
+.t-radio-icon__image {
+ height: var(--td-radio-icon-size, 48rpx);
+ width: var(--td-radio-icon-size, 48rpx);
+ vertical-align: sub;
+}
+.t-radio__content {
+ flex: 1;
+}
+.t-radio__content:empty {
+ display: none;
+}
+.t-radio__title {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ color: var(--td-radio-label-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: var(--td-radio-label-line-height, 48rpx);
+}
+.t-radio__title--disabled {
+ cursor: not-allowed;
+ color: var(--td-radio-label-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-radio__description {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ color: var(--td-radio-content-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ font-size: 28rpx;
+ line-height: var(--td-radio-content-line-height, 44rpx);
+}
+.t-radio__description--disabled {
+ cursor: not-allowed;
+ color: var(--td-radio-content-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-radio__description:empty {
+ display: none;
+}
+.t-radio__title + .t-radio__description {
+ margin-top: 8rpx;
+}
+.t-radio__border {
+ position: absolute;
+ bottom: 0;
+ height: 1px;
+ background: var(--td-radio-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+ left: 96rpx;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-radio__border--right {
+ left: 32rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/type.d.ts
new file mode 100644
index 0000000..9a202ac
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/type.d.ts
@@ -0,0 +1,67 @@
+export interface TdRadioProps {
+ placement?: {
+ type: StringConstructor;
+ value?: 'left' | 'right';
+ };
+ allowUncheck?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ block?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ checked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ defaultChecked?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ contentDisabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-label', 't-class-content', 't-class-border'];
+ };
+ icon?: {
+ type: null;
+ value?: 'circle' | 'line' | Array;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxContentRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxLabelRow?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: T;
+ };
+}
+export declare type RadioValue = string | number | boolean;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/radio/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/radio/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/README.en-US.md
new file mode 100644
index 0000000..0753221
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+### Rate Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+allow-half | Boolean | false | \- | N
+color | String / Array | '#ED7B2F' | `0.30.0`。Typescript:`string \| Array` | N
+count | Number | 5 | \- | N
+disabled | Boolean | - | \- | N
+external-classes | Array | - | `['t-class', 't-class-icon', 't-class-text']` | N
+gap | String / Number | 8 | \- | N
+icon | String / Array | - | Typescript:`string \| string[]` | N
+show-text | Boolean | false | \- | N
+size | String | 24px | \- | N
+texts | Array | [] | Typescript:`Array` | N
+value | Number | 0 | \- | N
+default-value | Number | undefined | uncontrolled property | N
+variant | String | outline | options:outline/filled | N
+
+### Rate Events
+
+name | params | description
+-- | -- | --
+change | `(value: number)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/README.md
new file mode 100644
index 0000000..de4e72d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/README.md
@@ -0,0 +1,85 @@
+---
+title: Rate 评分
+description: 用于对某行为/事物进行打分。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+{
+ "usingComponents": {
+ "t-rate": "tdesign-miniprogram/rate/rate"
+ }
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+实心评分
+
+{{ base }}
+
+自定义评分
+
+{{ custom }}
+
+自定义评分数量
+
+{{ count }}
+
+带描述评分
+
+{{ show-text }}
+
+### 组件状态
+
+{{ action }}
+
+### 组件样式
+
+评分大小
+
+{{ size }}
+
+设置评分颜色
+
+{{ color }}
+
+### 特殊样式
+
+竖向带描述评分
+
+{{ special }}
+
+
+## API
+### Rate Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+allow-half | Boolean | false | 是否允许半选 | N
+color | String / Array | '#ED7B2F' | `0.30.0`。评分图标的颜色,样式中默认为 #ED7B2F。一个值表示设置选中高亮的五角星颜色,示例:[选中颜色]。数组则表示分别设置 选中高亮的五角星颜色 和 未选中暗灰的五角星颜色,[选中颜色,未选中颜色]。示例:['#ED7B2F', '#E3E6EB']。TS 类型:`string \| Array` | N
+count | Number | 5 | 评分的数量 | N
+disabled | Boolean | - | 是否禁用评分 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、评分图标类名、辅助文字类名。`['t-class', 't-class-icon', 't-class-text']` | N
+gap | Number | 8 | 评分图标的间距 | N
+icon | String / Array | - | `0.30.0`。自定义评分图标,[选中图标,未选中图标]。TS 类型:`string \| string[]` | N
+show-text | Boolean | false | 是否显示对应的辅助文字 | N
+size | String | 24px | 评分图标的大小 | N
+texts | Array | [] | 评分等级对应的辅助文字。组件内置默认值为:['极差', '失望', '一般', '满意', '惊喜']。自定义值示例:['1分', '2分', '3分', '4分', '5分']。TS 类型:`Array` | N
+value | Number | 0 | 选择评分的值 | N
+default-value | Number | undefined | 选择评分的值。非受控属性 | N
+variant | String | outline | 废弃。形状类型,有描边类型和填充类型两种。可选项:outline/filled | N
+
+### Rate Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: number)` | 评分数改变时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/props.d.ts
new file mode 100644
index 0000000..f908fa5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRateProps } from './type';
+declare const props: TdRateProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/props.js
new file mode 100644
index 0000000..f5daf59
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/props.js
@@ -0,0 +1,48 @@
+const props = {
+ allowHalf: {
+ type: Boolean,
+ value: false,
+ },
+ color: {
+ type: null,
+ value: '#ED7B2F',
+ },
+ count: {
+ type: Number,
+ value: 5,
+ },
+ disabled: {
+ type: Boolean,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ gap: {
+ type: null,
+ value: 8,
+ },
+ icon: {
+ type: null,
+ },
+ showText: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: '24px',
+ },
+ texts: {
+ type: Array,
+ value: [],
+ },
+ value: {
+ type: Number,
+ value: null,
+ },
+ defaultValue: {
+ type: Number,
+ value: 0,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.d.ts
new file mode 100644
index 0000000..3aad047
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent } from '../common/src/index';
+export default class Rate extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdRateProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ defaultTexts: string[];
+ tipsVisible: boolean;
+ tipsLeft: number;
+ actionType: string;
+ scaleIndex: number;
+ };
+ methods: {
+ onTouch(e: WechatMiniprogram.TouchEvent, eventType: 'tap' | 'move'): void;
+ onTap(e: WechatMiniprogram.TouchEvent): void;
+ onTouchStart(): void;
+ onTouchMove(e: WechatMiniprogram.TouchEvent): void;
+ onTouchEnd(): void;
+ hideTips(): void;
+ onSelect(e: WechatMiniprogram.TouchEvent): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.js b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.js
new file mode 100644
index 0000000..a6774a5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.js
@@ -0,0 +1,101 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { unitConvert, getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-rate`;
+let Rate = class Rate extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-icon`, `${prefix}-class-text`];
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ defaultTexts: ['极差', '失望', '一般', '满意', '惊喜'],
+ tipsVisible: false,
+ tipsLeft: 0,
+ actionType: '',
+ scaleIndex: -1,
+ };
+ this.methods = {
+ onTouch(e, eventType) {
+ const { count, allowHalf, gap, value: currentValue, size } = this.properties;
+ const [touch] = e.touches;
+ const margin = unitConvert(gap);
+ getRect(this, `.${name}__wrapper`).then((rect) => {
+ const { width, left } = rect;
+ const starWidth = (width - (count - 1) * margin) / count;
+ const offsetX = touch.pageX - left;
+ const num = (offsetX + margin) / (starWidth + margin);
+ const remainder = num % 1;
+ const integral = num - remainder;
+ let value = remainder <= 0.5 && allowHalf ? integral + 0.5 : integral + 1;
+ if (value > count) {
+ value = count;
+ }
+ else if (value < 0) {
+ value = 0;
+ }
+ if (eventType === 'move' || (eventType === 'tap' && allowHalf)) {
+ const left = Math.ceil(value - 1) * (unitConvert(gap) + unitConvert(size)) + unitConvert(size) * 0.5;
+ this.setData({
+ tipsVisible: true,
+ actionType: eventType,
+ scaleIndex: Math.ceil(value),
+ tipsLeft: Math.max(left, 0),
+ });
+ }
+ if (value !== currentValue) {
+ this._trigger('change', { value });
+ }
+ if (this.touchEnd) {
+ this.hideTips();
+ }
+ });
+ },
+ onTap(e) {
+ this.onTouch(e, 'tap');
+ },
+ onTouchStart() {
+ this.touchEnd = false;
+ },
+ onTouchMove(e) {
+ this.onTouch(e, 'move');
+ },
+ onTouchEnd() {
+ this.touchEnd = true;
+ this.hideTips();
+ },
+ hideTips() {
+ if (this.data.actionType === 'move') {
+ this.setData({ tipsVisible: false, scaleIndex: -1 });
+ }
+ },
+ onSelect(e) {
+ const { value } = e.currentTarget.dataset;
+ const { actionType } = this.data;
+ if (actionType === 'move')
+ return;
+ this._trigger('change', { value });
+ setTimeout(() => this.setData({ tipsVisible: false, scaleIndex: -1 }), 300);
+ },
+ };
+ }
+};
+Rate = __decorate([
+ wxComponent()
+], Rate);
+export default Rate;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.json b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxml
new file mode 100644
index 0000000..4d8cefa
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ {{utils.getText(texts,value,defaultTexts)}}
+
+
+
+
+ {{utils.ceil(value) - 0.5}}
+
+
+
+ {{utils.ceil(value)}}
+
+
+
+
+ {{value}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxs
new file mode 100644
index 0000000..d799da4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxs
@@ -0,0 +1,65 @@
+module.exports = {
+ getText: function (texts, val, defaultTexts) {
+ if (!texts.length) {
+ texts = defaultTexts;
+ }
+ var curVal = Math.floor(val - 1);
+ return texts[curVal] || '未评分';
+ },
+
+ getIconName: function (defaultValue, value, index, icon) {
+ var curVal = value ? value : defaultValue;
+ var name = ['star-filled', 'star-filled'];
+
+ if (icon) {
+ name = icon.constructor == 'Array' ? icon : [icon, icon];
+ }
+
+ return name[curVal >= index + 1 ? 0 : 1];
+ },
+
+ getIconClass: function (classPrefix, defaultValue, value, index, allowHalf, disabled, scaleIndex) {
+ var curVal = value ? value : defaultValue;
+ var className = [];
+ if (curVal >= index + 1) {
+ className.push(classPrefix + '--selected');
+ if (disabled) {
+ className.push(classPrefix + '--disabled');
+ }
+ if (scaleIndex === index + 1) {
+ className.push(classPrefix + '--current');
+ }
+ } else if (allowHalf && curVal - index > 0) {
+ className.push(classPrefix + '--selected-half');
+ if (scaleIndex === index + 1) {
+ className.push(classPrefix + '--current');
+ }
+ if (disabled) {
+ className.push(classPrefix + '--disabled-half');
+ }
+ } else {
+ className.push(classPrefix + '--unselected');
+ }
+ return className.join(' ');
+ },
+
+ ceil: function (value) {
+ return Math.ceil(value);
+ },
+
+ getColor: function (color) {
+ if (color.constructor === 'Array' && color.length === 2) {
+ return ';--td-rate-selected-color: ' + color[0] + '; --td-rate-unselected-color: ' + color[1];
+ }
+
+ if (typeof color === 'string') {
+ return ';--td-rate-selected-color: ' + color;
+ }
+
+ return '';
+ },
+
+ regSize: function (val) {
+ return val.indexOf('px') ? val : val + 'px';
+ },
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxss
new file mode 100644
index 0000000..99274b2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/rate.wxss
@@ -0,0 +1,94 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-rate {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+}
+.t-rate__wrapper {
+ line-height: 1em;
+ display: inline-flex;
+}
+.t-rate__icon {
+ display: block;
+ line-height: 1em;
+ width: 1em;
+ transition: transform 0.3s ease;
+}
+.t-rate__icon--current {
+ transform: scale(var(--td-rate-icon-scale, 1.33));
+}
+.t-rate__icon--selected {
+ color: var(--td-rate-selected-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-rate__icon--selected-half {
+ color: transparent;
+ background: linear-gradient(to right, var(--td-rate-selected-color, var(--td-warning-color, var(--td-warning-color-5, #e37318))) 0%, var(--td-rate-selected-color, var(--td-warning-color, var(--td-warning-color-5, #e37318))) 50%, var(--td-rate-unselected-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc))) 51%, var(--td-rate-unselected-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc))) 100%);
+ -webkit-background-clip: text;
+ background-clip: text;
+}
+.t-rate__icon--unselected {
+ color: var(--td-rate-unselected-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-rate__text {
+ font-size: var(--td-rate-text-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-rate-text-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ margin-left: 32rpx;
+ vertical-align: middle;
+}
+.t-rate__text--active {
+ color: var(--td-rate-text-active-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-weight: var(--td-rate-text-active-font-weight, 600);
+}
+.t-rate__tips {
+ position: absolute;
+ display: flex;
+ align-items: center;
+ bottom: calc(100% + 16rpx);
+ padding: 8rpx;
+ border-radius: 12rpx;
+ box-shadow: var(--td-shadow-1, 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.12));
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ transform: translateX(-50%);
+}
+.t-rate__tips-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 64rpx;
+ border-radius: 6rpx;
+}
+.t-rate__tips-item--active {
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+}
+.t-rate__tips-text {
+ text-align: center;
+ font-size: 24rpx;
+ line-height: 40rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/type.d.ts
new file mode 100644
index 0000000..8965510
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/type.d.ts
@@ -0,0 +1,54 @@
+export interface TdRateProps {
+ allowHalf?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ color?: {
+ type: null;
+ value?: string | Array;
+ };
+ count?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-icon', 't-class-text'];
+ };
+ gap?: {
+ type: null;
+ value?: string | number;
+ };
+ icon?: {
+ type: null;
+ value?: string | string[];
+ };
+ showText?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ texts?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ defaultValue?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/rate/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/rate/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/result/README.en-US.md
new file mode 100644
index 0000000..813f4d1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/README.en-US.md
@@ -0,0 +1,14 @@
+:: BASE_DOC ::
+
+## API
+
+### Result Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+description | String / Slot | - | \- | N
+external-classes | Array | - | \- | N
+icon | String | - | \- | N
+image | String / Slot | - | \- | N
+theme | String | default | \- | N
+title | String / Slot | '' | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/result/README.md
new file mode 100644
index 0000000..e590f1b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/README.md
@@ -0,0 +1,65 @@
+---
+title: Result 结果
+description: 反馈结果状态。
+spline: data
+isComponent: true
+---
+
+


+
+
+
+ 该组件于 0.16.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-result": "tdesign-miniprogram/result/result"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础结果
+
+{{ theme }}
+
+带描述的结果
+
+{{ description }}
+
+自定义结果
+
+{{ custom }}
+
+## 常见问题
+
+
+
+ 本地图片无法正确引用?
+ 👇
+
+
+ 建议使用绝对路径,而不是相对路径。绝对路径以 app.json 所在位置为基准。
+
+
+
+## API
+### Result Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+description | String / Slot | - | 描述文字 | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、文本描述类名、图片类名、操作按钮类名。`['t-class', 't-class-image', 't-class-title', 't-class-description']` | N
+icon | String / Boolean / Object | true | 图标名称。值为字符串表示图标名称,值为 `false` 表示不显示图标,值为 `Object` 类型,表示透传至 `icon`,不传表示使用主题图标。 | N
+image | String / Slot | - | 图片地址 | N
+theme | String | default | 内置主题。可选项:default/success/warning/error | N
+title | String / Slot | '' | 标题 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/result/index.d.ts
new file mode 100644
index 0000000..74469ef
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './result';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/result/index.js
new file mode 100644
index 0000000..74469ef
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './result';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/result/props.d.ts
new file mode 100644
index 0000000..7336c63
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/props.d.ts
@@ -0,0 +1,3 @@
+import { TdResultProps } from './type';
+declare const props: TdResultProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/result/props.js
new file mode 100644
index 0000000..613f4af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/props.js
@@ -0,0 +1,24 @@
+const props = {
+ description: {
+ type: String,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ value: true,
+ },
+ image: {
+ type: String,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.d.ts
new file mode 100644
index 0000000..9dfa5ff
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.d.ts
@@ -0,0 +1,21 @@
+import { SuperComponent } from '../common/src/index';
+export default class extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ externalClasses: string[];
+ properties: import("./type").TdResultProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ observers: {
+ 'icon, theme'(): void;
+ };
+ methods: {
+ initIcon(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.js b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.js
new file mode 100644
index 0000000..d70e77b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.js
@@ -0,0 +1,59 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-result`;
+const THEME_ICON = {
+ default: 'error-circle',
+ success: 'check-circle',
+ warning: 'error-circle',
+ error: 'close-circle',
+};
+let default_1 = class extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-image`,
+ `${prefix}-class-title`,
+ `${prefix}-class-description`,
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.lifetimes = {
+ ready() {
+ this.initIcon();
+ },
+ };
+ this.observers = {
+ 'icon, theme'() {
+ this.initIcon();
+ },
+ };
+ this.methods = {
+ initIcon() {
+ const { icon, theme } = this.properties;
+ this.setData({
+ _icon: calcIcon(icon, THEME_ICON[theme]),
+ });
+ },
+ };
+ }
+};
+default_1 = __decorate([
+ wxComponent()
+], default_1);
+export default default_1;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.json b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.json
new file mode 100644
index 0000000..9a40e60
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.wxml
new file mode 100644
index 0000000..875bdb5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.wxml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+ {{description}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.wxss
new file mode 100644
index 0000000..746332d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/result.wxss
@@ -0,0 +1,65 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-result {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+.t-result__icon {
+ font-size: 160rpx;
+}
+.t-result__title {
+ line-height: var(--td-result-title-line-height, 56rpx);
+ font-size: var(--td-result-title-font-size, var(--td-font-size-l, 40rpx));
+ font-weight: 700;
+ color: var(--td-result-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-result__thumb:not(:empty) + .t-result__title:not(:empty) {
+ margin-top: var(--td-result-title-margin-top, var(--td-spacer-1, 24rpx));
+}
+.t-result__description {
+ text-align: center;
+ color: var(--td-result-description-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ font-size: var(--td-result-description-font-size, var(--td-font-size-base, 28rpx));
+ line-height: var(--td-result-description-line-height, 44rpx);
+}
+.t-result__title + .t-result__description:not(:empty) {
+ margin-top: var(--td-result-description-margin-top, var(--td-spacer, 16rpx));
+}
+.t-result--theme-default {
+ color: var(--td-result-icon-default-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-result--theme-success {
+ color: var(--td-result-icon-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-result--theme-warning {
+ color: var(--td-result-icon-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-result--theme-error {
+ color: var(--td-result-icon-error-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/result/type.d.ts
new file mode 100644
index 0000000..bcd1e81
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/type.d.ts
@@ -0,0 +1,30 @@
+export interface TdResultProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ description?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-description', 't-class-image'];
+ };
+ icon?: {
+ type: null;
+ value?: boolean | string | object;
+ };
+ image?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'success' | 'warning' | 'error';
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/result/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/result/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/result/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/row/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/row/props.d.ts
new file mode 100644
index 0000000..34bd697
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/props.d.ts
@@ -0,0 +1,3 @@
+import { TdRowProps } from './type';
+declare const props: TdRowProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/row/props.js
new file mode 100644
index 0000000..2faa498
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/props.js
@@ -0,0 +1,6 @@
+const props = {
+ gutter: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.d.ts
new file mode 100644
index 0000000..136e65c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.d.ts
@@ -0,0 +1,15 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Row extends SuperComponent {
+ externalClasses: any[];
+ properties: import("./type").TdRowProps;
+ data: {
+ prefix: string;
+ };
+ relations: RelationsOptions;
+ observers: {
+ gutter(): void;
+ };
+ methods: {
+ setGutter(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.js b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.js
new file mode 100644
index 0000000..a82c5c8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.js
@@ -0,0 +1,49 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+let Row = class Row extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [];
+ this.properties = props;
+ this.data = {
+ prefix,
+ };
+ this.relations = {
+ '../col/col': {
+ type: 'child',
+ linked(target) {
+ const { gutter } = this.data;
+ if (gutter) {
+ target.setData({ gutter });
+ }
+ },
+ },
+ };
+ this.observers = {
+ gutter() {
+ this.setGutter();
+ },
+ };
+ this.methods = {
+ setGutter() {
+ const { gutter } = this.data;
+ const cols = this.$children;
+ cols.forEach((col) => {
+ col.setData({ gutter });
+ });
+ },
+ };
+ }
+};
+Row = __decorate([
+ wxComponent()
+], Row);
+export default Row;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.json b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxml
new file mode 100644
index 0000000..e7f0bbe
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxs
new file mode 100644
index 0000000..d87ced5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxs
@@ -0,0 +1,16 @@
+var utils = require('../common/utils.wxs');
+
+function getRowStyles(data) {
+ if (!data.gutter) {
+ return '';
+ }
+
+ return utils._style({
+ 'margin-right': utils.addUnit(-data.gutter / 2),
+ 'margin-left': utils.addUnit(-data.gutter / 2),
+ });
+}
+
+module.exports = {
+ getRowStyles: getRowStyles,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxss
new file mode 100644
index 0000000..c206b7c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/row.wxss
@@ -0,0 +1,5 @@
+.t-row:after {
+ clear: both;
+ content: '';
+ display: table;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/row/type.d.ts
new file mode 100644
index 0000000..f151c1c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/type.d.ts
@@ -0,0 +1,6 @@
+export interface TdRowProps {
+ gutter?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/row/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/row/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/row/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/search/README.md
new file mode 100644
index 0000000..c1d1afa
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/README.md
@@ -0,0 +1,71 @@
+---
+title: Search 搜索框
+description: 用于用户输入搜索信息,并进行页面内容搜索。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-search": "tdesign-miniprogram/search/search"
+}
+```
+
+## 代码演示
+
+### 01 组件类型
+
+基础搜索框
+
+{{ base }}
+
+获取焦点后显示取消按钮
+
+{{ action }}
+
+### 02 组件样式
+
+搜索框形状
+
+{{ shape }}
+
+### 03 组件状态
+
+默认状态其他对齐方式
+
+{{ other }}
+
+## API
+### Search Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+action | String / Slot | '' | 自定义右侧操作按钮文字 | N
+center | Boolean | false | 是否居中 | N
+disabled | Boolean | false | 是否禁用 | N
+external-classes | Array | - | 组件外部样式类名,分别用于设置组件外层类名、输入框类名、输入框容器类名、右侧 cancel 文本类名、左侧图标类名、右侧图标类型。`['t-class', 't-class-input', 't-class-input-container', 't-class-action','t-class-left','t-class-clear']` | N
+focus | Boolean | false | 是否聚焦 | N
+label | String | '' | 已废弃。左侧文本 | N
+left-icon | String / Slot | 'search' | 左侧图标 | N
+placeholder | String | '' | 占位符 | N
+right-icon | String / Slot | 'close-circle-filled' | 已废弃。右侧图标 | N
+clearable | Boolean | true | 是否启用清除控件 | N
+shape | String | 'square' | 搜索框形状。可选项:square/round | N
+value | String | '' | 值 | N
+type | String | 'text' | 拉起键盘的类型,可选项:text/number/idcard/digit/nickname | N
+
+### Search Events
+
+名称 | 参数 | 描述
+-- | -- | --
+action-click | `({})` | 点击右侧操作按钮文字时触发
+blur | `({ value: string })` | 失去焦点时触发
+change | `({ value: string })` | 值发生变化时触发
+clear | `({ value: string })` | 点击清除时触发
+focus | `({ value: string })` | 聚焦时触发
+submit | `({ value: string })` | 提交时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/search/props.d.ts
new file mode 100644
index 0000000..81c5bff
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSearchProps } from './type';
+declare const props: TdSearchProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/search/props.js
new file mode 100644
index 0000000..15a02c1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/props.js
@@ -0,0 +1,54 @@
+const props = {
+ action: {
+ type: String,
+ value: '',
+ },
+ center: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ focus: {
+ type: Boolean,
+ value: false,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ leftIcon: {
+ type: String,
+ value: 'search',
+ },
+ placeholder: {
+ type: String,
+ value: '',
+ },
+ rightIcon: {
+ type: String,
+ value: 'close-circle-filled',
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ value: {
+ type: String,
+ value: '',
+ },
+ clearable: {
+ type: Boolean,
+ value: true,
+ },
+ type: {
+ type: String,
+ value: 'text',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.d.ts
new file mode 100644
index 0000000..61c1cdb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent } from '../common/src/index';
+export default class Search extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdSearchProps;
+ observers: {
+ focus(this: Search, nextValue: boolean): void;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ localValue: {
+ focus: boolean;
+ };
+ };
+ onInput(e: any): void;
+ onFocus(e: any): void;
+ onBlur(e: any): void;
+ handleClear(): void;
+ onConfirm(e: any): void;
+ onActionClick(): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.js b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.js
new file mode 100644
index 0000000..6560bb2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.js
@@ -0,0 +1,70 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-search`;
+let Search = class Search extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-input-container`,
+ `${prefix}-class-input`,
+ `${prefix}-class-action`,
+ `${prefix}-class-left`,
+ `${prefix}-class-clear`,
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.observers = {
+ focus(nextValue) {
+ this.setData({ 'localValue.focus': nextValue });
+ },
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ localValue: {
+ focus: false,
+ },
+ };
+ }
+ onInput(e) {
+ const { value } = e.detail;
+ this.setData({ value });
+ this.triggerEvent('change', { value });
+ }
+ onFocus(e) {
+ const { value } = e.detail;
+ this.setData({ 'localValue.focus': true });
+ this.triggerEvent('focus', { value });
+ }
+ onBlur(e) {
+ const { value } = e.detail;
+ this.setData({ 'localValue.focus': false });
+ this.triggerEvent('blur', { value });
+ }
+ handleClear() {
+ this.setData({ value: '' });
+ this.triggerEvent('clear', { value: '' });
+ }
+ onConfirm(e) {
+ const { value } = e.detail;
+ this.triggerEvent('submit', { value });
+ }
+ onActionClick() {
+ this.triggerEvent('action-click');
+ }
+};
+Search = __decorate([
+ wxComponent()
+], Search);
+export default Search;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.json b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.wxml
new file mode 100644
index 0000000..85f9dac
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.wxml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{action}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.wxss
new file mode 100644
index 0000000..95e9253
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/search.wxss
@@ -0,0 +1,97 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-search {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.t-search__label {
+ padding: 8rpx;
+ color: var(--search-label-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-search__input-box {
+ flex: 1;
+ box-sizing: border-box;
+ display: flex;
+ height: var(--td-search-height, 80rpx);
+ align-items: center;
+ border: 2rpx solid var(--td-search-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ background: var(--td-search-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ padding: var(--td-search-padding, 16rpx 24rpx);
+}
+.t-search__input-box.t-is-focused {
+ border-color: var(--td-search-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-search__input-box--round {
+ border-radius: calc(var(--td-search-height, 80rpx) / 2);
+}
+.t-search__input-box--square {
+ border-radius: var(--td-search-square-radius, var(--td-radius-default, 12rpx));
+}
+.t-search__input-box--center {
+ text-align: center;
+}
+.t-search__input-box .t-input__keyword {
+ display: inline-block;
+ flex: 1;
+ color: var(--td-search-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ font-size: var(--td-search-font-size, var(--td-font-size-m, 32rpx));
+ padding-left: 10rpx;
+}
+.t-search__input-box .t-icon {
+ color: var(--td-search-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-search__clear {
+ position: relative;
+ margin-left: 10px;
+ color: var(--td-search-clear-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-search__clear.relative {
+ position: relative;
+}
+.t-search__clear::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-search__search-action {
+ margin-left: 30rpx;
+ font-size: var(--td-search-font-size, var(--td-font-size-m, 32rpx));
+ color: var(--td-search-action-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-search__placeholder {
+ color: var(--td-search-placeholder-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-search__placeholder--center {
+ text-align: center;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/search/type.d.ts
new file mode 100644
index 0000000..718a13b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/type.d.ts
@@ -0,0 +1,58 @@
+export interface TdSearchProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ action?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ center?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-input', 't-class-input-container', 't-class-cancel', 't-class-left', 't-class-right'];
+ };
+ focus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ leftIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placeholder?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ rightIcon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'square' | 'round';
+ };
+ value?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ clearable: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ type: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/search/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/search/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/search/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/props.d.ts
new file mode 100644
index 0000000..cdda046
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSideBarItemProps } from './type';
+declare const props: TdSideBarItemProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/props.js
new file mode 100644
index 0000000..8ce799a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/props.js
@@ -0,0 +1,20 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.d.ts
new file mode 100644
index 0000000..a0d8ffb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.d.ts
@@ -0,0 +1,20 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class SideBarItem extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdSideBarItemProps;
+ relations: RelationsOptions;
+ observers: {
+ icon(v: any): void;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ active: boolean;
+ isPre: boolean;
+ isNext: boolean;
+ };
+ methods: {
+ updateActive(value: any): void;
+ handleClick(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.js b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.js
new file mode 100644
index 0000000..0fa2495
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.js
@@ -0,0 +1,58 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-side-bar-item`;
+let SideBarItem = class SideBarItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.relations = {
+ '../side-bar/side-bar': {
+ type: 'parent',
+ linked(parent) {
+ this.parent = parent;
+ this.updateActive(parent.data.value);
+ },
+ },
+ };
+ this.observers = {
+ icon(v) {
+ this.setData({ _icon: typeof v === 'string' ? { name: v } : v });
+ },
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ active: false,
+ isPre: false,
+ isNext: false,
+ };
+ this.methods = {
+ updateActive(value) {
+ const active = value === this.data.value;
+ this.setData({
+ active,
+ });
+ },
+ handleClick() {
+ var _a;
+ if (this.data.disabled)
+ return;
+ const { value, label } = this.data;
+ (_a = this.parent) === null || _a === void 0 ? void 0 : _a.doChange({ value, label });
+ },
+ };
+ }
+};
+SideBarItem = __decorate([
+ wxComponent()
+], SideBarItem);
+export default SideBarItem;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.json b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.json
new file mode 100644
index 0000000..2c00c37
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-badge": "../badge/badge",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.wxml
new file mode 100644
index 0000000..a95478e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.wxml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{label}}
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.wxss
new file mode 100644
index 0000000..d5154f8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/side-bar-item.wxss
@@ -0,0 +1,92 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-side-bar-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ padding: 32rpx;
+ font-size: var(--td-side-bar-font-size, 32rpx);
+ color: var(--td-side-bar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ background: var(--td-side-bar-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ min-height: var(--td-side-bar-item-height, 112rpx);
+ box-sizing: border-box;
+ white-space: wrap;
+ line-height: var(--td-side-bar-item-line-height, 48rpx);
+}
+.t-side-bar-item--active {
+ font-weight: 600;
+ background: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ color: var(--td-side-bar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-side-bar-item__icon {
+ font-size: var(--td-side-bar-icon-size, 40rpx);
+ margin-right: 4rpx;
+}
+.t-side-bar-item__prefix,
+.t-side-bar-item__suffix {
+ z-index: 1;
+ position: absolute;
+ right: 0;
+ width: calc(var(--td-side-bar-border-radius, 18rpx) * 2);
+ height: calc(var(--td-side-bar-border-radius, 18rpx) * 2);
+ background: #fff;
+}
+.t-side-bar-item__prefix::after,
+.t-side-bar-item__suffix::after {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 100%;
+ background-color: var(--td-side-bar-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-side-bar-item__prefix {
+ top: calc(var(--td-side-bar-border-radius, 18rpx) * -2);
+}
+.t-side-bar-item__prefix::after {
+ border-bottom-right-radius: var(--td-side-bar-border-radius, 18rpx);
+}
+.t-side-bar-item__suffix {
+ bottom: calc(var(--td-side-bar-border-radius, 18rpx) * -2);
+}
+.t-side-bar-item__suffix::after {
+ border-top-right-radius: var(--td-side-bar-border-radius, 18rpx);
+}
+.t-side-bar-item--disabled {
+ color: var(--td-side-bar-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-side-bar-item__line {
+ width: 6rpx;
+ height: 28rpx;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ background: var(--td-side-bar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-radius: 8rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/type.d.ts
new file mode 100644
index 0000000..e5ceead
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/type.d.ts
@@ -0,0 +1,21 @@
+export interface TdSideBarItemProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/README.en-US.md
new file mode 100644
index 0000000..46109c9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+### SideBar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+value | String / Number | - | \- | N
+default-value | String / Number | undefined | uncontrolled property | N
+
+### SideBar Events
+
+name | params | description
+-- | -- | --
+change | `(value: number \| string, label: string)` | \-
+click | `(value: number \| string, label: string)` | \-
+
+### SideBarItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | - | \- | N
+disabled | Boolean | false | \- | N
+icon | String / Object | - | `1.0.0-rc.1` | N
+label | String | - | \- | N
+value | String / Number | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/README.md
new file mode 100644
index 0000000..ef10681
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/README.md
@@ -0,0 +1,69 @@
+---
+title: SideBar 侧边栏
+description: 用于内容分类后的展示切换。
+spline: navigation
+isComponent: true
+---
+
+
+
+ 该组件于 0.25.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+{
+ "usingComponents": {
+ "t-side-bar": "tdesign-miniprogram/side-bar/side-bar",
+ "t-side-bar-item": "tdesign-miniprogram/side-bar-item/side-bar-item",
+ }
+}
+```
+
+## 代码演示
+
+### 锚点用法
+
+{{ base }}
+
+### 切页用法
+
+{{ switch }}
+
+### 带图标侧边导航
+
+{{ with-icon }}
+
+### 自定义样式
+
+{{ custom }}
+
+## API
+### SideBar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+value | String / Number | - | 选项值 | N
+default-value | String / Number | undefined | 选项值。非受控属性 | N
+
+### SideBar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: number \| string, label: string)` | 选项值发生变化时触发
+click | `(value: number \| string, label: string)` | 点击选项时触发
+
+### SideBarItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | - | 透传至 Badge 组件 | N
+disabled | Boolean | false | 是否禁用 | N
+icon | String / Object | - | `1.0.0-rc.1`。图标,传对象则透传至 Icon | N
+label | String | - | 展示的标签 | N
+value | String / Number | - | 当前选项的值 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/props.d.ts
new file mode 100644
index 0000000..fcab408
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSideBarProps } from './type';
+declare const props: TdSideBarProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/props.js
new file mode 100644
index 0000000..a8aca64
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/props.js
@@ -0,0 +1,10 @@
+const props = {
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.d.ts
new file mode 100644
index 0000000..2be2070
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.d.ts
@@ -0,0 +1,24 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class SideBar extends SuperComponent {
+ externalClasses: string[];
+ childs: any[];
+ relations: RelationsOptions;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ properties: import("./type").TdSideBarProps;
+ observers: {
+ value(v: any): void;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ };
+ methods: {
+ doChange({ value, label }: {
+ value: any;
+ label: any;
+ }): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.js b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.js
new file mode 100644
index 0000000..50458f6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.js
@@ -0,0 +1,58 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-side-bar`;
+const relationsPath = '../side-bar-item/side-bar-item';
+let SideBar = class SideBar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.childs = [];
+ this.relations = {
+ [relationsPath]: {
+ type: 'child',
+ linked(child) {
+ this.childs.push(child);
+ },
+ unlinked(child) {
+ const index = this.childs.findIndex((item) => item === child);
+ this.childs.splice(index, 1);
+ },
+ },
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.properties = props;
+ this.observers = {
+ value(v) {
+ this.$children.forEach((item) => {
+ item.updateActive(v);
+ });
+ },
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ };
+ this.methods = {
+ doChange({ value, label }) {
+ this._trigger('change', { value, label });
+ },
+ };
+ }
+};
+SideBar = __decorate([
+ wxComponent()
+], SideBar);
+export default SideBar;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.json b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.json
new file mode 100644
index 0000000..a1c9d56
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-side-bar-item": "../side-bar-item/side-bar-item"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.wxml
new file mode 100644
index 0000000..b251c7f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.wxml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.wxss
new file mode 100644
index 0000000..b0a6893
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/side-bar.wxss
@@ -0,0 +1,38 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-side-bar {
+ display: flex;
+ flex-direction: column;
+ width: var(--td-side-bar-width, 206rpx);
+ height: var(--td-side-bar-height, 100%);
+ overflow-y: auto;
+}
+.t-side-bar__padding {
+ flex: 1;
+ background-color: var(--td-side-bar-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/type.d.ts
new file mode 100644
index 0000000..39d8876
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/type.d.ts
@@ -0,0 +1,10 @@
+export interface TdSideBarProps {
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: null;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/side-bar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/README.en-US.md
new file mode 100644
index 0000000..34a7592
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/README.en-US.md
@@ -0,0 +1,13 @@
+:: BASE_DOC ::
+
+## API
+### Skeleton Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+animation | String | none | options:gradient/flashed/none | N
+delay | Number | 0 | \- | N
+external-classes | Array | - | `['t-class', 't-class-avatar', 't-class-image', 't-class-text']` | N
+loading | Boolean | true | \- | N
+row-col | Array | [1, 1, 1, { width: '70%' }] | Typescript:`SkeletonRowCol` `type SkeletonRowCol = Array>` `interface SkeletonRowColObj { width?: string; size?: string;height?: string; marginRight?: string; marginLeft?: string; margin?: string; type?: 'rect' \| 'circle' \| 'text';}`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/skeleton/type.ts) | N
+theme | String | text | options:avatar/image/text/paragraph | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/README.md
new file mode 100644
index 0000000..e426de4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/README.md
@@ -0,0 +1,55 @@
+---
+title: Skeleton 骨架屏
+description: 用于等待加载内容所展示的占位图形组合,有动态效果加载效果,减少用户等待焦虑。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-skeleton": "tdesign-miniprogram/skeleton/skeleton"
+}
+```
+
+## 代码演示
+
+### 骨架屏类型
+
+基础骨架屏
+
+{{ theme }}
+
+单元格骨架屏
+
+{{ cell-group }}
+
+
+宫格骨架屏
+
+{{ grid }}
+
+图文组合骨架屏
+
+{{ image-group }}
+
+### 组件动效
+
+{{ animation }}
+
+
+## API
+### Skeleton Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+animation | String | none | 动画效果,有「渐变加载动画」和「闪烁加载动画」两种。值为 'none' 则表示没有动画。可选项:gradient/flashed/none | N
+delay | Number | 0 | 【开发中】延迟显示加载效果的时间,用于防止请求速度过快引起的加载闪烁,单位:毫秒 | N
+external-classes | Array | - | 组件类名,分别用于设置组件外层元素、头像、图片、文本等元素类名。`['t-class', 't-class-avatar', 't-class-image', 't-class-text']` | N
+loading | Boolean | true | 是否为加载状态,如果是则显示骨架图,如果不是则显示加载完成的内容 | N
+row-col | Array | [1, 1, 1, { width: '70%' }] | 用于设置行列数量、宽度高度、间距等。【示例一】,`[1, 1, 2]` 表示输出三行骨架图,第一行一列,第二行一列,第三行两列。【示例二】,`[1, 1, { width: '100px' }]` 表示自定义第三行的宽度为 `100px`。【示例三】,`[1, 2, [{ width, height }, { width, height, marginLeft }]]` 表示第三行有两列,且自定义宽度、高度和间距。TS 类型:`SkeletonRowCol` `type SkeletonRowCol = Array>` `interface SkeletonRowColObj { width?: string; size?: string;height?: string; marginRight?: string; marginLeft?: string; margin?: string; type?: 'rect' \| 'circle' \| 'text';}`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/skeleton/type.ts) | N
+theme | String | text | 骨架图风格,有基础、头像组合等两大类。可选项:avatar/image/text/paragraph | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/props.d.ts
new file mode 100644
index 0000000..2c8f4af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSkeletonProps } from './type';
+declare const props: TdSkeletonProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/props.js
new file mode 100644
index 0000000..b3e625f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/props.js
@@ -0,0 +1,25 @@
+const props = {
+ animation: {
+ type: String,
+ value: 'none',
+ },
+ delay: {
+ type: Number,
+ value: 0,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ loading: {
+ type: Boolean,
+ value: true,
+ },
+ rowCol: {
+ type: Array,
+ },
+ theme: {
+ type: String,
+ value: 'text',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.d.ts
new file mode 100644
index 0000000..580711a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent } from '../common/src/index';
+import { SkeletonRowColObj } from './type';
+import { ClassName, Styles } from '../common/common';
+export default class Skeleton extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdSkeletonProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ parsedRowcols: any[];
+ };
+ observers: {
+ rowCol(): void;
+ };
+ lifetimes: {
+ attached(): void;
+ };
+ methods: {
+ init(): void;
+ getColItemClass(obj: SkeletonRowColObj): ClassName;
+ getColItemStyle(obj: SkeletonRowColObj): Styles;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.js b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.js
new file mode 100644
index 0000000..3356e6c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.js
@@ -0,0 +1,117 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { isNumber, classNames } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-skeleton`;
+const ThemeMap = {
+ avatar: [{ type: 'circle', size: '96rpx' }],
+ image: [{ type: 'rect', size: '144rpx' }],
+ text: [
+ [
+ { width: '24%', height: '32rpx', marginRight: '32rpx' },
+ { width: '76%', height: '32rpx' },
+ ],
+ 1,
+ ],
+ paragraph: [1, 1, 1, { width: '55%' }],
+};
+let Skeleton = class Skeleton extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-col`, `${prefix}-class-row`];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ parsedRowcols: [],
+ };
+ this.observers = {
+ rowCol() {
+ this.init();
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ this.init();
+ },
+ };
+ this.methods = {
+ init() {
+ const { theme, rowCol } = this.properties;
+ const rowCols = [];
+ if (rowCol.length) {
+ rowCols.push(...rowCol);
+ }
+ else {
+ rowCols.push(...ThemeMap[theme || 'text']);
+ }
+ const parsedRowcols = rowCols.map((item) => {
+ if (isNumber(item)) {
+ return [
+ {
+ class: this.getColItemClass({ type: 'text' }),
+ style: {},
+ },
+ ];
+ }
+ if (Array.isArray(item)) {
+ return item.map((col) => {
+ return Object.assign(Object.assign({}, col), { class: this.getColItemClass(col), style: this.getColItemStyle(col) });
+ });
+ }
+ const nItem = item;
+ return [
+ Object.assign(Object.assign({}, nItem), { class: this.getColItemClass(nItem), style: this.getColItemStyle(nItem) }),
+ ];
+ });
+ this.setData({
+ parsedRowcols,
+ });
+ },
+ getColItemClass(obj) {
+ return classNames([
+ `${name}__col`,
+ `${name}--type-${obj.type || 'text'}`,
+ `${name}--animation-${this.properties.animation}`,
+ ]);
+ },
+ getColItemStyle(obj) {
+ const styleName = [
+ 'width',
+ 'height',
+ 'marginRight',
+ 'marginLeft',
+ 'margin',
+ 'size',
+ 'background',
+ 'backgroundColor',
+ 'borderRadius',
+ ];
+ const style = {};
+ styleName.forEach((name) => {
+ if (name in obj) {
+ const px = isNumber(obj[name]) ? `${obj[name]}px` : obj[name];
+ if (name === 'size') {
+ [style.width, style.height] = [px, px];
+ }
+ else {
+ style[name] = px;
+ }
+ }
+ });
+ return style;
+ },
+ };
+ }
+};
+Skeleton = __decorate([
+ wxComponent()
+], Skeleton);
+export default Skeleton;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.json b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.wxml
new file mode 100644
index 0000000..b5501c1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.wxss
new file mode 100644
index 0000000..b39b394
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/skeleton.wxss
@@ -0,0 +1,103 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-skeleton {
+ box-sizing: border-box;
+}
+.t-skeleton__row {
+ display: flex;
+ margin-bottom: var(--td-skeleton-row-spacing, var(--td-spacer-2, 32rpx));
+ align-items: center;
+ justify-content: space-between;
+}
+.t-skeleton__row:only-child,
+.t-skeleton__row:last-child {
+ margin-bottom: 0;
+}
+.t-skeleton__col {
+ background-color: var(--td-skeleton-bg-color, var(--td-bg-color-page, var(--td-gray-color-1, #f3f3f3)));
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-skeleton__col:first-child:last-child,
+.t-skeleton__col:last-child {
+ margin-right: 0;
+}
+.t-skeleton--type-text {
+ width: 100%;
+ height: var(--td-skeleton-text-height, 32rpx);
+ border-radius: var(--td-skeleton-text-border-radius, var(--td-radius-small, 6rpx));
+}
+.t-skeleton--type-rect {
+ width: 100%;
+ height: var(--td-skeleton-rect-height, 32rpx);
+ border-radius: var(--td-skeleton-rect-border-radius, var(--td-radius-default, 12rpx));
+}
+.t-skeleton--type-circle {
+ width: var(--td-skeleton-circle-height, 96rpx);
+ height: var(--td-skeleton-circle-height, 96rpx);
+ border-radius: var(--td-skeleton-circle-border-radius, var(--td-skeleton-circle-border-radius, var(--td-radius-circle, 50%)));
+ flex-shrink: 0;
+}
+.t-skeleton--animation-gradient {
+ position: relative;
+ overflow-x: hidden;
+}
+.t-skeleton--animation-gradient::after {
+ content: ' ';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 0;
+ background: linear-gradient(90deg, rgba(255, 255, 255, 0), var(--td-skeleton-animation-gradient, rgba(0, 0, 0, 0.04)), rgba(255, 255, 255, 0));
+ animation: t-skeleton--gradient 1.5s linear 2s infinite;
+}
+.t-skeleton--animation-flashed {
+ animation: t-skeleton--flashed 2s linear 2s infinite;
+}
+@keyframes t-skeleton--gradient {
+ 0% {
+ transform: translateX(-100%) skewX(-15deg);
+ }
+ 100% {
+ transform: translateX(100%) skewX(-15deg);
+ }
+}
+@keyframes t-skeleton--flashed {
+ 0% {
+ opacity: 1;
+ }
+ 50% {
+ background-color: var(--td-skeleton-animation-flashed, rgba(230, 230, 230, 0.3));
+ opacity: 0.3;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/type.d.ts
new file mode 100644
index 0000000..50b0105
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/type.d.ts
@@ -0,0 +1,40 @@
+export interface TdSkeletonProps {
+ animation?: {
+ type: StringConstructor;
+ value?: 'gradient' | 'flashed' | 'none';
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ delay?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-avatar', 't-class-image', 't-class-text'];
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ rowCol?: {
+ type: ArrayConstructor;
+ value?: SkeletonRowCol;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'avatar' | 'image' | 'text' | 'paragraph';
+ };
+}
+export declare type SkeletonRowCol = Array>;
+export interface SkeletonRowColObj {
+ width?: string;
+ size?: string;
+ height?: string;
+ marginRight?: string;
+ marginLeft?: string;
+ margin?: string;
+ type?: 'rect' | 'circle' | 'text';
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/skeleton/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/README.en-US.md
new file mode 100644
index 0000000..5723aee
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/README.en-US.md
@@ -0,0 +1,29 @@
+:: BASE_DOC ::
+
+## API
+### Slider Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+colors | Array | [] | Typescript:`Array` | N
+disabled | Boolean | false | \- | N
+disabled-color | Array | [] | Typescript:`Array` | N
+external-classes | Array | - | `['t-class', 't-class-bar', 't-class-bar-active', 't-class-bar-disabled', 't-class-cursor']` | N
+label | String / Boolean | false | Typescript:`string \| boolean` | N
+marks | Object / Array | {} | Typescript:`Record \| Array` | N
+max | Number | 100 | \- | N
+min | Number | 0 | \- | N
+range | Boolean | false | \- | N
+show-extreme-value | Boolean | false | \- | N
+step | Number | 1 | \- | N
+theme | String | default | `0.30.0`。options:default/capsule | N
+value | Number / Array | 0 | Typescript:`SliderValue` `type SliderValue = number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+default-value | Number / Array | undefined | uncontrolled property。Typescript:`SliderValue` `type SliderValue = number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+
+### Slider Events
+
+name | params | description
+-- | -- | --
+change | `(value: SliderValue)` | \-
+dragend | \- | \-
+dragstart | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/README.md
new file mode 100644
index 0000000..88aa79c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/README.md
@@ -0,0 +1,79 @@
+---
+title: Slider 滑动选择器
+description: 用于选择横轴上的数值、区间、档位。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-slider": "tdesign-miniprogram/slider/slider"
+}
+```
+
+## 代码演示
+
+
+
+### 组件类型
+
+单游标滑块
+
+{{ base }}
+
+双游标滑块
+
+{{ range }}
+
+带数值滑动选择器
+
+{{ label }}
+
+带刻度滑动选择器
+
+{{ step }}
+
+### 组件状态
+
+滑块禁用状态
+
+{{ disabled }}
+
+#### 特殊样式
+
+胶囊型滑块
+
+{{ capsule }}
+
+## API
+### Slider Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+colors | Array | [] | 废弃。颜色,[已选择, 未选择]。TS 类型:`Array` | N
+disabled | Boolean | false | 是否禁用组件 | N
+disabled-color | Array | [] | 废弃。禁用状态滑动条的颜色,[已选, 未选]。TS 类型:`Array` | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、滑道底部、滑道激活态、滑道禁用态、游标 等元素类名。`['t-class', 't-class-bar', 't-class-bar-active', 't-class-bar-disabled', 't-class-cursor']` | N
+label | String / Boolean | false | 滑块当前值文本。
值为 true 显示默认文案;值为 false 不显示滑块当前值文本;
值为 `${value}%` 则表示组件会根据占位符渲染文案;
值类型为函数时,参数 `value` 标识滑块值,参数 `position=start` 表示范围滑块的起始值,参数 `position=end` 表示范围滑块的终点值。TS 类型:`string \| boolean` | N
+marks | Object / Array | {} | 刻度标记,示例:`[0, 10, 40, 200]` 或者 `{ 5: '5¥', 10: '10%' }`。TS 类型:`Record \| Array` | N
+max | Number | 100 | 滑块范围最大值 | N
+min | Number | 0 | 滑块范围最小值 | N
+range | Boolean | false | 双游标滑块 | N
+show-extreme-value | Boolean | false | 是否边界值 | N
+step | Number | 1 | 步长 | N
+theme | String | default | `0.30.0`。滑块风格。可选项:default/capsule | N
+value | Number / Array | 0 | 滑块值。TS 类型:`SliderValue` `type SliderValue = number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+default-value | Number / Array | undefined | 滑块值。非受控属性。TS 类型:`SliderValue` `type SliderValue = number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/slider/type.ts) | N
+
+### Slider Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: SliderValue)` | 滑块值变化时触发
+dragend | \- | 结束拖动时触发
+dragstart | \- | 开始拖动时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/props.d.ts
new file mode 100644
index 0000000..f6d03ac
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSliderProps } from './type';
+declare const props: TdSliderProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/props.js
new file mode 100644
index 0000000..9e327ba
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/props.js
@@ -0,0 +1,50 @@
+const props = {
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ label: {
+ type: null,
+ value: false,
+ },
+ marks: {
+ type: null,
+ value: {},
+ },
+ max: {
+ type: Number,
+ value: 100,
+ },
+ min: {
+ type: Number,
+ value: 0,
+ },
+ range: {
+ type: Boolean,
+ value: false,
+ },
+ showExtremeValue: {
+ type: Boolean,
+ value: false,
+ },
+ step: {
+ type: Number,
+ value: 1,
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: 0,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.d.ts
new file mode 100644
index 0000000..c331929
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.d.ts
@@ -0,0 +1,55 @@
+///
+import { SuperComponent } from '../common/src/index';
+import type { SliderValue } from './type';
+declare type dataType = {
+ sliderStyles: string;
+ classPrefix: string;
+ initialLeft: number | null;
+ initialRight: number | null;
+ activeLeft: number;
+ activeRight: number;
+ maxRange: number;
+ lineLeft: number;
+ lineRight: number;
+ dotTopValue: number[];
+ blockSize: number;
+ isScale: boolean;
+ scaleArray: any[];
+ scaleTextArray: any[];
+ _value: SliderValue;
+ prefix: string;
+ isVisibleToScreenReader: boolean;
+};
+export default class Slider extends SuperComponent {
+ externalClasses: string[];
+ properties: import("./type").TdSliderProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: dataType;
+ observers: {
+ value(newValue: SliderValue): void;
+ _value(newValue: SliderValue): void;
+ marks(val: any): void;
+ };
+ lifetimes: {
+ created(): void;
+ attached(): void;
+ };
+ triggerValue(value?: SliderValue): void;
+ handlePropsChange(newValue: SliderValue): void;
+ handleMask(marks: any): void;
+ setSingleBarWidth(value: number): void;
+ getInitialStyle(): Promise;
+ stepValue(value: number): number;
+ onSingleLineTap(e: WechatMiniprogram.TouchEvent): void;
+ getSingleChangeValue(e: WechatMiniprogram.TouchEvent): number;
+ convertPosToValue(posValue: number, dir: 0 | 1): number;
+ onLineTap(e: WechatMiniprogram.TouchEvent): void;
+ onTouchMoveLeft(e: WechatMiniprogram.TouchEvent): void;
+ onTouchMoveRight(e: WechatMiniprogram.TouchEvent): void;
+ setLineStyle(left: number, right: number): void;
+ onTouchEnd(): void;
+}
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.js b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.js
new file mode 100644
index 0000000..d75eee5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.js
@@ -0,0 +1,301 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import { trimSingleValue, trimValue } from './tool';
+import props from './props';
+import { getRect } from '../common/utils';
+import Bus from '../common/bus';
+const { prefix } = config;
+const name = `${prefix}-slider`;
+let Slider = class Slider extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-bar`,
+ `${prefix}-class-bar-active`,
+ `${prefix}-class-bar-disabled`,
+ `${prefix}-class-cursor`,
+ ];
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ sliderStyles: '',
+ classPrefix: name,
+ initialLeft: null,
+ initialRight: null,
+ activeLeft: 0,
+ activeRight: 0,
+ maxRange: 0,
+ lineLeft: 0,
+ lineRight: 0,
+ dotTopValue: [0, 0],
+ _value: 0,
+ blockSize: 20,
+ isScale: false,
+ scaleArray: [],
+ scaleTextArray: [],
+ prefix,
+ isVisibleToScreenReader: false,
+ };
+ this.observers = {
+ value(newValue) {
+ this.handlePropsChange(newValue);
+ },
+ _value(newValue) {
+ const { min, max, range } = this.properties;
+ const { maxRange } = this.data;
+ if (range) {
+ const left = (maxRange * (newValue[0] - Number(min))) / (Number(max) - Number(min));
+ const right = (maxRange * (Number(max) - newValue[1])) / (Number(max) - Number(min));
+ this.setLineStyle(left, right);
+ }
+ else {
+ this.setSingleBarWidth(newValue);
+ }
+ this.setData({
+ isVisibleToScreenReader: true,
+ });
+ setTimeout(() => {
+ this.setData({
+ isVisibleToScreenReader: false,
+ });
+ }, 2e3);
+ },
+ marks(val) {
+ if (this.data.initialLeft != null) {
+ this.handleMask(val);
+ }
+ else {
+ this.bus.on('initial', () => this.handleMask(val));
+ }
+ },
+ };
+ this.lifetimes = {
+ created() {
+ this.bus = new Bus();
+ },
+ attached() {
+ const { value } = this.properties;
+ if (!value)
+ this.handlePropsChange(0);
+ this.getInitialStyle();
+ },
+ };
+ }
+ triggerValue(value) {
+ this._trigger('change', {
+ value: trimValue(value, this.properties),
+ });
+ }
+ handlePropsChange(newValue) {
+ const value = trimValue(newValue, this.properties);
+ const setValueAndTrigger = () => {
+ this.setData({
+ _value: value,
+ });
+ };
+ if (this.data.maxRange === 0) {
+ this.getInitialStyle().then(setValueAndTrigger);
+ return;
+ }
+ setValueAndTrigger();
+ }
+ handleMask(marks) {
+ const calcPos = (arr) => {
+ const { theme } = this.properties;
+ const { blockSize, maxRange } = this.data;
+ const margin = theme === 'capsule' ? blockSize / 2 : 0;
+ return arr.map((item) => ({
+ val: item,
+ left: Math.round((item / 100) * maxRange) + margin,
+ }));
+ };
+ if ((marks === null || marks === void 0 ? void 0 : marks.length) && Array.isArray(marks)) {
+ this.setData({
+ isScale: true,
+ scaleArray: calcPos(marks),
+ scaleTextArray: [],
+ });
+ }
+ if (Object.prototype.toString.call(marks) === '[object Object]') {
+ const scaleArray = Object.keys(marks).map((item) => Number(item));
+ const scaleTextArray = scaleArray.map((item) => marks[item]);
+ this.setData({
+ isScale: scaleArray.length > 0,
+ scaleArray: calcPos(scaleArray),
+ scaleTextArray,
+ });
+ }
+ }
+ setSingleBarWidth(value) {
+ const { max, min, theme } = this.properties;
+ const { maxRange, blockSize } = this.data;
+ const halfBlock = theme === 'capsule' ? Number(blockSize) / 2 : 0;
+ const percentage = (Number(value) - Number(min)) / (Number(max) - Number(min));
+ const width = percentage * maxRange + halfBlock;
+ this.setData({
+ lineBarWidth: `${width}px`,
+ });
+ }
+ getInitialStyle() {
+ return __awaiter(this, void 0, void 0, function* () {
+ const line = yield getRect(this, '#sliderLine');
+ const { blockSize } = this.data;
+ const { theme } = this.properties;
+ const halfBlock = Number(blockSize) / 2;
+ let maxRange = line.right - line.left;
+ let initialLeft = line.left;
+ let initialRight = line.right;
+ if (theme === 'capsule') {
+ maxRange = maxRange - Number(blockSize) - 6;
+ initialLeft -= halfBlock;
+ initialRight -= halfBlock;
+ }
+ this.setData({
+ maxRange,
+ initialLeft,
+ initialRight,
+ });
+ this.bus.emit('initial');
+ });
+ }
+ stepValue(value) {
+ const { step, min, max } = this.properties;
+ if (Number(step) < 1 || Number(step) > Number(max) - Number(min))
+ return value;
+ const closestStep = trimSingleValue(Math.round(value / Number(step)) * Number(step), Number(min), Number(max));
+ return closestStep;
+ }
+ onSingleLineTap(e) {
+ const { disabled } = this.properties;
+ if (disabled)
+ return;
+ const value = this.getSingleChangeValue(e);
+ this.triggerValue(value);
+ }
+ getSingleChangeValue(e) {
+ const { min, max } = this.properties;
+ const { initialLeft, maxRange } = this.data;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const currentLeft = pageX - initialLeft;
+ let value = 0;
+ if (currentLeft <= 0) {
+ value = Number(min);
+ }
+ else if (currentLeft >= maxRange) {
+ value = Number(max);
+ }
+ else {
+ value = Math.round((currentLeft / maxRange) * (Number(max) - Number(min)) + Number(min));
+ }
+ return this.stepValue(value);
+ }
+ convertPosToValue(posValue, dir) {
+ const { maxRange } = this.data;
+ const { max, min } = this.properties;
+ return dir === 0
+ ? (posValue / maxRange) * (Number(max) - Number(min)) + Number(min)
+ : Number(max) - (posValue / maxRange) * (Number(max) - Number(min));
+ }
+ onLineTap(e) {
+ const { disabled, theme } = this.properties;
+ const { initialLeft, initialRight, maxRange, blockSize } = this.data;
+ if (disabled)
+ return;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const halfBlock = theme === 'capsule' ? Number(blockSize) / 2 : 0;
+ const currentLeft = pageX - initialLeft;
+ if (currentLeft < 0 || currentLeft > maxRange + Number(blockSize))
+ return;
+ Promise.all([getRect(this, '#leftDot'), getRect(this, '#rightDot')]).then(([leftDot, rightDot]) => {
+ const distanceLeft = Math.abs(pageX - leftDot.left - halfBlock);
+ const distanceRight = Math.abs(rightDot.left - pageX + halfBlock);
+ const isMoveLeft = distanceLeft < distanceRight;
+ if (isMoveLeft) {
+ const left = pageX - initialLeft;
+ const leftValue = this.convertPosToValue(left, 0);
+ this.triggerValue([this.stepValue(leftValue), this.data._value[1]]);
+ }
+ else {
+ const right = -(pageX - initialRight);
+ const rightValue = this.convertPosToValue(right, 1);
+ this.triggerValue([this.data._value[0], this.stepValue(rightValue)]);
+ }
+ });
+ }
+ onTouchMoveLeft(e) {
+ const { disabled } = this.properties;
+ const { initialLeft, _value } = this.data;
+ if (disabled)
+ return;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const currentLeft = pageX - initialLeft;
+ const newData = [..._value];
+ const leftValue = this.convertPosToValue(currentLeft, 0);
+ newData[0] = this.stepValue(leftValue);
+ this.triggerValue(newData);
+ }
+ onTouchMoveRight(e) {
+ const { disabled } = this.properties;
+ const { initialRight, _value } = this.data;
+ if (disabled)
+ return;
+ const [touch] = e.changedTouches;
+ const { pageX } = touch;
+ const currentRight = -(pageX - initialRight);
+ const newData = [..._value];
+ const rightValue = this.convertPosToValue(currentRight, 1);
+ newData[1] = this.stepValue(rightValue);
+ this.triggerValue(newData);
+ }
+ setLineStyle(left, right) {
+ const { theme } = this.properties;
+ const { blockSize, maxRange } = this.data;
+ const halfBlock = theme === 'capsule' ? Number(blockSize) / 2 : 0;
+ const [a, b] = this.data._value;
+ const cut = (v) => parseInt(v, 10);
+ this.setData({
+ dotTopValue: [a, b],
+ });
+ if (left + right <= maxRange) {
+ this.setData({
+ lineLeft: cut(left + halfBlock),
+ lineRight: cut(right + halfBlock),
+ });
+ }
+ else {
+ this.setData({
+ lineLeft: cut(maxRange + halfBlock - right),
+ lineRight: cut(maxRange - left + halfBlock * 1.5),
+ });
+ }
+ }
+ onTouchEnd() { }
+};
+Slider = __decorate([
+ wxComponent()
+], Slider);
+export default Slider;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.json b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxml
new file mode 100644
index 0000000..cd73127
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+ {{ label ? t.getValue(label, min) : min}}
+
+
+
+
+
+ {{scaleTextArray[index]}}
+
+
+
+
+
+
+ {{t.getValue(label, _value) || _value}}
+
+
+
+
+
+
+
+ {{ label ? t.getValue(label, max) : max}}
+
+
+
+
+
+ {{min}}
+
+
+
+
+ {{scaleTextArray[index]}}
+
+
+
+
+
+ {{t.getValue(label, dotTopValue[0]) || dotTopValue[0]}}
+
+
+
+
+
+ {{t.getValue(label, dotTopValue[1]) || dotTopValue[1]}}
+
+
+
+
+
+
+
+ {{max}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxs
new file mode 100644
index 0000000..b4be3ff
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxs
@@ -0,0 +1,10 @@
+var REGEXP = getRegExp('[$][{value}]{7}');
+
+function getValue(label, value) {
+ if (label && label === 'true') return value;
+ if (REGEXP.test(label)) return label.replace(REGEXP, value);
+}
+
+module.exports = {
+ getValue: getValue,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxss
new file mode 100644
index 0000000..9735fae
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/slider.wxss
@@ -0,0 +1,195 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-slider {
+ font-size: 14px;
+ display: flex;
+ align-items: center;
+}
+.t-slider--disabled .t-slider__value,
+.t-slider--disabled .t-slider__range-extreme,
+.t-slider--disabled .t-slider__dot-value,
+.t-slider--disabled .t-slider__scale-desc {
+ color: var(--td-slider-disabled-text-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-slider--top {
+ padding-top: 40rpx;
+}
+.t-slider__line {
+ position: absolute;
+ top: 0;
+ height: var(--td-slider-bar-height, 8rpx);
+ border-radius: calc(var(--td-slider-bar-height, 8rpx) / 2);
+ background-color: var(--td-slider-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-slider__line--disabled {
+ background-color: var(--td-slider-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-slider__line--capsule {
+ height: var(--td-slider-capsule-line-heihgt, 36rpx);
+}
+.t-slider__line--capsule.t-slider__line--single {
+ border-top-left-radius: calc(var(--td-slider-capsule-line-heihgt, 36rpx) / 2);
+ border-bottom-left-radius: calc(var(--td-slider-capsule-line-heihgt, 36rpx) / 2);
+}
+.t-slider__dot {
+ border-radius: 50%;
+ border: 2rpx solid var(--td-slider-dot-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ position: absolute;
+ top: 50%;
+ right: 0;
+ transform: translate3d(50%, -50%, 0);
+ z-index: 2;
+ background-color: var(--td-slider-dot-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ width: var(--td-slider-dot-size, 40rpx);
+ height: var(--td-slider-dot-size, 40rpx);
+ box-shadow: var(--td-shadow-1, 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.12));
+ box-sizing: border-box;
+}
+.t-slider__dot--left {
+ left: 0;
+ transform: translate3d(-50%, -50%, 0);
+}
+.t-slider__dot-value {
+ position: relative;
+ left: 50%;
+ transform: translateX(-50%);
+ top: -52rpx;
+ text-align: center;
+ width: 96rpx;
+ height: 44rpx;
+ line-height: 44rpx;
+}
+.t-slider__value,
+.t-slider__range-extreme,
+.t-slider__dot-value {
+ color: rgba(0, 0, 0, 0.9);
+}
+.t-slider__value--sr-only,
+.t-slider__range-extreme--sr-only,
+.t-slider__dot-value--sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+}
+.t-slider__dot-slider {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.t-slider__value--min {
+ margin-left: 32rpx;
+}
+.t-slider__value--max {
+ margin-right: 32rpx;
+}
+.t-slider__value--right {
+ flex-basis: 80rpx;
+}
+.t-slider__value--right__value--text {
+ margin-right: 32rpx;
+ text-align: right;
+ display: block;
+}
+.t-slider__bar {
+ margin: 16rpx 32rpx;
+ flex: 10;
+ background-clip: content-box;
+ height: var(--td-slider-bar-height, 8rpx);
+ border-radius: calc(var(--td-slider-bar-height, 8rpx) / 2);
+ position: relative;
+ background-color: var(--td-slider-default-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-slider__bar--capsule {
+ height: var(--td-slider-capsule-bar-heihgt, 48rpx);
+ border-radius: calc(var(--td-slider-capsule-bar-heihgt, 48rpx) / 2);
+ background-color: var(--td-slider-capsule-bar-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border: 6rpx solid var(--td-slider-capsule-bar-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ box-sizing: border-box;
+}
+.t-slider__bar--marks {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-slider__bar--disabled {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-slider__range-extreme--min {
+ margin-left: 32rpx;
+ text-align: left;
+}
+.t-slider__range-extreme--max {
+ margin-right: 32rpx;
+ text-align: right;
+}
+.t-slider__scale-item {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-secondarycomponent, var(--td-gray-color-4, #dcdcdc)));
+ width: var(--td-slider-bar-height, 8rpx);
+ height: 16rpx;
+ width: 16rpx;
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ margin-top: -8rpx;
+ z-index: 1;
+}
+.t-slider__scale-item--active {
+ background-color: var(--td-slider-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-slider__scale-item--disabled {
+ background-color: var(--td-slider-default-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-slider__scale-item--active.t-slider__scale-item--disabled {
+ background-color: var(--td-slider-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-slider__scale-item--capsule {
+ height: var(--td-slider-capsule-line-heihgt, 36rpx);
+ width: 4rpx;
+ border-radius: 0;
+ background-color: var(--td-slider-capsule-bar-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ margin-top: calc(-0.5 * var(--td-slider-capsule-line-heihgt, 36rpx));
+}
+.t-slider__scale-item--hidden {
+ background-color: transparent;
+}
+.t-slider__scale-desc {
+ position: absolute;
+ left: 50%;
+ color: rgba(0, 0, 0, 0.9);
+ transform: translateX(-50%);
+ bottom: 32rpx;
+}
+.t-slider__scale-desc--capsule {
+ bottom: 46rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/tool.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/tool.d.ts
new file mode 100644
index 0000000..b9383e6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/tool.d.ts
@@ -0,0 +1,2 @@
+export declare const trimSingleValue: (value: any, min: number, max: number) => number;
+export declare const trimValue: (value: number | number[], props: any) => number | number[];
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/tool.js b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/tool.js
new file mode 100644
index 0000000..84ca6fe
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/tool.js
@@ -0,0 +1,26 @@
+export const trimSingleValue = (value, min, max) => {
+ if (typeof value !== 'number') {
+ return min;
+ }
+ if (value < min) {
+ return min;
+ }
+ if (value > max) {
+ return max;
+ }
+ return value;
+};
+export const trimValue = (value, props) => {
+ const { min, max, range } = props;
+ if (range && Array.isArray(value)) {
+ value[0] = trimSingleValue(value[0], min, max);
+ value[1] = trimSingleValue(value[1], min, max);
+ return value[0] <= value[1] ? value : [value[1], value[0]];
+ }
+ if (range) {
+ return [min, max];
+ }
+ if (!range) {
+ return trimSingleValue(value, min, max);
+ }
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/type.d.ts
new file mode 100644
index 0000000..2d7ef24
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/type.d.ts
@@ -0,0 +1,55 @@
+export interface TdSliderProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-bar', 't-class-bar-active', 't-class-bar-disabled', 't-class-cursor'];
+ };
+ label?: {
+ type: null;
+ value?: string | boolean;
+ };
+ marks?: {
+ type: null;
+ value?: Record | Array;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ min?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ range?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showExtremeValue?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ step?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'capsule';
+ };
+ value?: {
+ type: null;
+ value?: SliderValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: SliderValue;
+ };
+}
+export declare type SliderValue = number | Array;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/slider/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/slider/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/props.d.ts
new file mode 100644
index 0000000..d941a41
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStepItemProps } from './type';
+declare const props: TdStepItemProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/props.js
new file mode 100644
index 0000000..3308e91
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/props.js
@@ -0,0 +1,25 @@
+const props = {
+ content: {
+ type: String,
+ value: '',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: String,
+ },
+ status: {
+ type: String,
+ value: 'default',
+ },
+ subStepItems: {
+ type: Array,
+ value: [],
+ },
+ title: {
+ type: String,
+ value: '',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.d.ts
new file mode 100644
index 0000000..b1b81b7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.d.ts
@@ -0,0 +1,22 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class StepItem extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ relations: RelationsOptions;
+ externalClasses: string[];
+ properties: import("./type").TdStepItemProps;
+ data: {
+ classPrefix: string;
+ prefix: string;
+ index: number;
+ isDot: boolean;
+ curStatus: string;
+ layout: string;
+ isLastChild: boolean;
+ };
+ methods: {
+ updateStatus(current: any, currentStatus: any, index: any, theme: any, layout: any, steps: any): void;
+ onTap(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.js b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.js
new file mode 100644
index 0000000..54b0744
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.js
@@ -0,0 +1,69 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-steps-item`;
+let StepItem = class StepItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.relations = {
+ '../steps/steps': {
+ type: 'parent',
+ },
+ };
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-content`,
+ `${prefix}-class-title`,
+ `${prefix}-class-description`,
+ `${prefix}-class-extra`,
+ ];
+ this.properties = props;
+ this.data = {
+ classPrefix: name,
+ prefix,
+ index: 0,
+ isDot: false,
+ curStatus: '',
+ layout: 'vertical',
+ isLastChild: false,
+ };
+ this.methods = {
+ updateStatus(current, currentStatus, index, theme, layout, steps) {
+ let curStatus = this.data.status;
+ if (curStatus === 'default') {
+ if (index < Number(current)) {
+ curStatus = 'finish';
+ }
+ else if (index === Number(current)) {
+ curStatus = currentStatus;
+ }
+ }
+ this.setData({
+ curStatus,
+ index,
+ isDot: theme === 'dot',
+ layout,
+ theme,
+ isLastChild: steps.length - 1 === index,
+ });
+ },
+ onTap() {
+ this.$parent.handleClick(this.data.index);
+ },
+ };
+ }
+};
+StepItem = __decorate([
+ wxComponent()
+], StepItem);
+export default StepItem;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.json b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxml
new file mode 100644
index 0000000..4472edc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{index + 1}}
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxs
new file mode 100644
index 0000000..491902c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxs
@@ -0,0 +1,7 @@
+function getAriaLabel(index, title, content) {
+ return '第' + (index + 1) + '步,' + title + ',' + content;
+}
+
+module.exports = {
+ getAriaLabel: getAriaLabel,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxss
new file mode 100644
index 0000000..eec5828
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/step-item.wxss
@@ -0,0 +1,211 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-steps-item {
+ flex: 1;
+ vertical-align: top;
+ position: relative;
+ display: flex;
+}
+.t-steps-item__circle--default {
+ color: var(--td-step-item-default-circle-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ background-color: var(--td-step-item-default-circle-bg, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-steps-item__title--default {
+ color: var(--td-step-item-default-title-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-steps-item__icon--default {
+ color: var(--td-step-item-default-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-steps-item__dot--default {
+ border-color: var(--td-step-item-default-dot-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-steps-item__circle--process {
+ color: var(--td-step-item-process-circle-color, var(--td-font-white-1, #ffffff));
+ background-color: var(--td-step-item-process-circle-bg, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__title--process {
+ color: var(--td-step-item-process-title-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__icon--process {
+ color: var(--td-step-item-process-icon-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__dot--process {
+ border-color: var(--td-step-item-process-dot-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__circle--finish {
+ color: var(--td-step-item-finish-circle-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-step-item-finish-circle-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-steps-item__title--finish {
+ color: var(--td-step-item-finish-title-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-steps-item__icon--finish {
+ color: var(--td-step-item-finish-icon-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__dot--finish {
+ border-color: var(--td-step-item-finish-dot-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__circle--error {
+ color: var(--td-step-item-error-circle-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-step-item-error-circle-bg, var(--td-error-color-1, #fff0ed));
+}
+.t-steps-item__title--error {
+ color: var(--td-step-item-error-title-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item__icon--error {
+ color: var(--td-step-item-error-icon-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item__dot--error {
+ border-color: var(--td-step-item-error-dot-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item--horizontal {
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+.t-steps-item__anchor {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-steps-item__anchor--vertical {
+ width: var(--td-step-item-circle-size, 44rpx);
+ height: var(--td-step-item-circle-size, 44rpx);
+}
+.t-steps-item__circle {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: var(--td-step-item-circle-size, 44rpx);
+ height: var(--td-step-item-circle-size, 44rpx);
+ text-align: center;
+ border-radius: 50%;
+ font-size: var(--td-step-item-circle-font-size, 28rpx);
+}
+.t-steps-item__icon {
+ z-index: 1;
+ vertical-align: top;
+ font-size: var(--td-font-size-base, 28rpx);
+ position: relative;
+}
+.t-steps-item__icon--finsh,
+.t-steps-item__icon--process {
+ color: var(--td-brand-color, var(--td-primary-color-7, #0052d9));
+}
+.t-steps-item__dot {
+ width: var(--td-step-item-dot-size, 16rpx);
+ height: var(--td-step-item-dot-size, 16rpx);
+ border-radius: 50%;
+ border-width: 1px;
+ border-style: solid;
+ box-sizing: border-box;
+}
+.t-steps-item__dot--finish {
+ background-color: var(--td-step-item-process-dot-border-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__dot--error {
+ background-color: var(--td-step-item-error-dot-border-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-steps-item__content {
+ text-align: center;
+}
+.t-steps-item__content--horizontal {
+ max-width: 80px;
+ margin-top: 16rpx;
+}
+.t-steps-item__content--vertical {
+ margin-left: 16rpx;
+ flex: 1;
+ padding-bottom: 32rpx;
+}
+.t-steps-item__content--vertical.t-steps-item__content--last {
+ padding-bottom: 0;
+}
+.t-steps-item__title {
+ position: relative;
+ line-height: var(--td-step-item-circle-size, 44rpx);
+ font-size: var(--td-font-size-base, 28rpx);
+}
+.t-steps-item__title--process {
+ font-weight: 600;
+}
+.t-steps-item__title--vertical {
+ text-align: left;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 8rpx;
+}
+.t-steps-item__description {
+ color: var(--td-step-item-descrition-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ line-height: 40rpx;
+ font-size: var(--td-font-size-s, 24rpx);
+}
+.t-steps-item__description--vertical {
+ text-align: left;
+}
+.t-steps-item__extra:not(:empty) {
+ margin-top: 16rpx;
+}
+.t-steps-item__line {
+ background-color: var(--td-step-item-line-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ content: '';
+ display: block;
+ position: absolute;
+}
+.t-steps-item__line--horizontal {
+ height: 1px;
+ transform: translateY(-50%);
+ width: calc(100% - 32rpx - var(--td-step-item-circle-size, 44rpx));
+ top: calc(var(--td-step-item-circle-size, 44rpx) / 2 + 1px);
+ left: calc(50% + var(--td-step-item-circle-size, 44rpx) / 2 + 16rpx);
+}
+.t-steps-item__line--horizontal.t-steps-item__line--dot {
+ top: calc(var(--td-step-item-dot-size, 16rpx) / 2);
+}
+.t-steps-item__line--finish {
+ background-color: var(--td-step-item-finish-line-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-steps-item__line--vertical {
+ height: calc(100% - 32rpx - var(--td-step-item-circle-size, 44rpx));
+ width: 1px;
+ transform: translateX(-50%);
+ left: calc(var(--td-step-item-circle-size, 44rpx) / 2);
+ top: calc(var(--td-step-item-circle-size, 44rpx) + 16rpx);
+}
+.t-steps-item__line--vertical.t-steps-item__line--dot {
+ top: var(--td-step-item-circle-size, 44rpx);
+ height: calc(100% - var(--td-step-item-circle-size, 44rpx));
+}
+:host {
+ flex: 1;
+ vertical-align: top;
+ position: relative;
+ align-self: flex-start;
+ width: inherit;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/type.d.ts
new file mode 100644
index 0000000..c9029fb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/type.d.ts
@@ -0,0 +1,35 @@
+export interface TdStepItemProps {
+ content?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-content', 't-class-title', 't-class-description', 't-class-extra'];
+ };
+ icon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ status?: {
+ type: StringConstructor;
+ value?: StepStatus;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ subStepItems?: {
+ type: ArrayConstructor;
+ value?: SubStepItem[];
+ };
+ title?: {
+ type: StringConstructor;
+ value?: string;
+ };
+}
+export declare type StepStatus = 'default' | 'process' | 'finish' | 'error';
+export interface SubStepItem {
+ status: StepStatus;
+ title: string;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/step-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/README.en-US.md
new file mode 100644
index 0000000..1529485
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/README.en-US.md
@@ -0,0 +1,26 @@
+:: BASE_DOC ::
+
+## API
+
+### Stepper Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disable-input | Boolean | false | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-input', 't-class-add', 't-class-minus']` | N
+input-width | Number | - | \- | N
+max | Number | 100 | \- | N
+min | Number | 0 | \- | N
+step | Number | 1 | \- | N
+theme | String | normal | stylish。options:normal/grey | N
+value | String / Number | 0 | \- | N
+default-value | String / Number | undefined | uncontrolled property | N
+
+### Stepper Events
+
+name | params | description
+-- | -- | --
+blur | `({ type: string \| number })` | \-
+change | `({ value: string \| number })` | \-
+overlimit | `({type: 'minus' \| 'plus'})` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/README.md
new file mode 100644
index 0000000..903d9c0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/README.md
@@ -0,0 +1,71 @@
+---
+title: Stepper 步进器
+description: 用于数量的增减。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-stepper": "tdesign-miniprogram/stepper/stepper"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础步进器
+
+{{ base }}
+
+### 组件状态
+
+最大最小状态
+
+{{ min-max }}
+
+禁用状态
+
+{{ status }}
+
+### 组件样式
+
+步进器样式
+
+{{ theme }}
+
+步进器尺寸
+
+{{ size }}
+
+
+## API
+### Stepper Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disable-input | Boolean | false | 禁用输入框 | N
+disabled | Boolean | false | 禁用全部操作 | N
+external-classes | Array | - | 组件类名,分别用于表示组件外层元素、输入框、右侧递增号、左侧递减号等元素类名。`['t-class', 't-class-input', 't-class-add', 't-class-minus']` | N
+input-width | Number | - | 输入框宽度,默认单位 `px` | N
+max | Number | 100 | 最大值 | N
+min | Number | 0 | 最小值 | N
+step | Number | 1 | 步长 | N
+size | String | medium | 组件尺寸。可选项:small/medium/large。TS 类型:`SizeEnum` | N
+theme | String | normal | 组件风格。可选项:normal/filled/outline | N
+value | String / Number | 0 | 值 | N
+default-value | String / Number | undefined | 值。非受控属性 | N
+
+### Stepper Events
+
+名称 | 参数 | 描述
+-- | -- | --
+blur | `({ type: string \| number })` | 输入框失去焦点时触发
+change | `({ value: string \| number })` | 数值发生变更时触发
+overlimit | `({type: 'minus' \| 'plus'})` | 数值超出限制时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/props.d.ts
new file mode 100644
index 0000000..7f9e104
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStepperProps } from './type';
+declare const props: TdStepperProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/props.js
new file mode 100644
index 0000000..9a970fe
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/props.js
@@ -0,0 +1,47 @@
+const props = {
+ disableInput: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ inputWidth: {
+ type: Number,
+ },
+ max: {
+ type: Number,
+ value: 100,
+ },
+ min: {
+ type: Number,
+ value: 0,
+ },
+ step: {
+ type: Number,
+ value: 1,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ theme: {
+ type: String,
+ value: 'normal',
+ },
+ value: {
+ type: String,
+ optionalTypes: [Number],
+ value: null,
+ },
+ defaultValue: {
+ type: String,
+ optionalTypes: [Number],
+ value: 0,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.d.ts
new file mode 100644
index 0000000..65aad00
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.d.ts
@@ -0,0 +1,81 @@
+import { SuperComponent } from '../common/src/index';
+export default class Stepper extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ addGlobalClass: boolean;
+ };
+ properties: {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disableInput?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ["t-class", "t-class-input", "t-class-add", "t-class-minus"];
+ };
+ inputWidth?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ min?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ step?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: "outline" | "normal" | "filled";
+ };
+ value?: {
+ type: StringConstructor;
+ optionalTypes: NumberConstructor[];
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ optionalTypes: NumberConstructor[];
+ value?: string | number;
+ };
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(v: any): void;
+ };
+ data: {
+ currentValue: number;
+ classPrefix: string;
+ prefix: string;
+ };
+ attached(): void;
+ isDisabled(type: any): boolean;
+ format(value: any): number;
+ setValue(value: any): void;
+ minusValue(): boolean;
+ plusValue(): boolean;
+ changeValue(e: any): string | 0;
+ focusHandle(e: any): void;
+ inputHandle(e: any): void;
+ blurHandle(e: any): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.js b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.js
new file mode 100644
index 0000000..1c3c167
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-stepper`;
+let Stepper = class Stepper extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-input`, `${prefix}-class-minus`, `${prefix}-class-plus`];
+ this.options = {
+ addGlobalClass: true,
+ };
+ this.properties = Object.assign({}, props);
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(v) {
+ this.setData({
+ currentValue: Number(v),
+ });
+ },
+ };
+ this.data = {
+ currentValue: 0,
+ classPrefix: name,
+ prefix,
+ };
+ }
+ attached() {
+ const { value, min } = this.properties;
+ this.setData({
+ currentValue: value ? Number(value) : min,
+ });
+ }
+ isDisabled(type) {
+ const { min, max, disabled } = this.properties;
+ const { currentValue } = this.data;
+ if (disabled) {
+ return true;
+ }
+ if (type === 'minus' && currentValue <= min) {
+ return true;
+ }
+ if (type === 'plus' && currentValue >= max) {
+ return true;
+ }
+ return false;
+ }
+ format(value) {
+ const { min, max } = this.properties;
+ return Math.max(Math.min(max, value, Number.MAX_SAFE_INTEGER), min, Number.MIN_SAFE_INTEGER);
+ }
+ setValue(value) {
+ this._trigger('change', { value });
+ }
+ minusValue() {
+ if (this.isDisabled('minus')) {
+ this.triggerEvent('overlimit', { type: 'minus' });
+ return false;
+ }
+ const { currentValue, step } = this.data;
+ this.setValue(this.format(currentValue - step));
+ }
+ plusValue() {
+ if (this.isDisabled('plus')) {
+ this.triggerEvent('overlimit', { type: 'plus' });
+ return false;
+ }
+ const { currentValue, step } = this.data;
+ this.setValue(this.format(currentValue + step));
+ }
+ changeValue(e) {
+ const value = String(e.detail.value)
+ .split('.')[0]
+ .replace(/[^-0-9]/g, '') || 0;
+ this.setValue(this.format(Number(value)));
+ return value;
+ }
+ focusHandle(e) {
+ const value = this.changeValue(e);
+ this.triggerEvent('focus', { value });
+ }
+ inputHandle(e) {
+ const value = this.changeValue(e);
+ this.triggerEvent('input', { value });
+ }
+ blurHandle(e) {
+ const value = this.changeValue(e);
+ this.triggerEvent('blur', { value });
+ }
+};
+Stepper = __decorate([
+ wxComponent()
+], Stepper);
+export default Stepper;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.json b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.json
new file mode 100644
index 0000000..dfd59ed
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-cell": "../cell/cell",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.wxml
new file mode 100644
index 0000000..2e5dbfb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.wxml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.wxss
new file mode 100644
index 0000000..f9f70a5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/stepper.wxss
@@ -0,0 +1,128 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-stepper {
+ display: flex;
+ align-items: center;
+ color: var(--td-stepper-input-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-stepper__input {
+ margin: 0 8rpx;
+ text-align: center;
+ vertical-align: top;
+ height: inherit;
+ min-height: inherit;
+}
+.t-stepper__minus,
+.t-stepper__plus {
+ padding: 8rpx;
+ box-sizing: border-box;
+}
+.t-stepper__input,
+.t-stepper__minus-icon,
+.t-stepper__plus-icon {
+ color: inherit;
+}
+.t-stepper__input--normal,
+.t-stepper__input--filled,
+.t-stepper__input--outline {
+ height: inherit;
+ box-sizing: border-box;
+}
+.t-stepper--small {
+ height: 40rpx;
+ font-size: 20rpx;
+}
+.t-stepper--medium {
+ height: 48rpx;
+ font-size: 24rpx;
+}
+.t-stepper--large {
+ height: 56rpx;
+ font-size: 32rpx;
+}
+.t-stepper__input--small {
+ width: 68rpx;
+}
+.t-stepper__input--medium {
+ height: 48rpx;
+ width: 76rpx;
+}
+.t-stepper__input--large {
+ width: 90rpx;
+}
+.t-stepper__icon--small {
+ width: 40rpx;
+ height: 40rpx;
+ font-size: 24rpx;
+}
+.t-stepper__icon--medium {
+ width: 48rpx;
+ height: 48rpx;
+ font-size: 32rpx;
+}
+.t-stepper__icon--large {
+ width: 56rpx;
+ height: 56rpx;
+ font-size: 40rpx;
+}
+.t-stepper__minus--outline,
+.t-stepper__plus--outline {
+ border: 2rpx solid var(--td-stepper-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-stepper__input--outline {
+ border: none;
+ border-top: 2rpx solid var(--td-stepper-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+ border-bottom: 2rpx solid var(--td-stepper-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
+.t-stepper__minus--outline,
+.t-stepper__minus--filled {
+ border-radius: var(--td-stepper-border-radius, var(--td-radius-small, 6rpx)) 0 0 var(--td-stepper-border-radius, var(--td-radius-small, 6rpx));
+}
+.t-stepper__plus--outline,
+.t-stepper__plus--filled {
+ border-radius: 0 var(--td-stepper-border-radius, var(--td-radius-small, 6rpx)) var(--td-stepper-border-radius, var(--td-radius-small, 6rpx)) 0;
+}
+.t-stepper__minus--filled,
+.t-stepper__plus--filled {
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+}
+.t-stepper__input--filled {
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+ margin: 0 8rpx;
+}
+.t-stepper__input--filled .t-stepper__input {
+ margin: 0;
+}
+.t-stepper--normal-disabled {
+ color: var(--td-stepper-input-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-stepper--filled-disabled,
+.t-stepper--outline-disabled {
+ color: var(--td-stepper-input-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-stepper-input-disabled-bg, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/type.d.ts
new file mode 100644
index 0000000..0dff895
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/type.d.ts
@@ -0,0 +1,52 @@
+export interface TdStepperProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disableInput?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-input', 't-class-add', 't-class-minus'];
+ };
+ inputWidth?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ min?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ step?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'normal' | 'filled' | 'outline';
+ };
+ value?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ optionalTypes: Array;
+ value?: string | number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/stepper/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/README.en-US.md
new file mode 100644
index 0000000..197f123
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/README.en-US.md
@@ -0,0 +1,34 @@
+:: BASE_DOC ::
+
+## API
+### Steps Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+current | String / Number | - | \- | N
+default-current | String / Number | undefined | uncontrolled property | N
+current-status | String | process | options:default/process/finish/error | N
+external-classes | Array | - | `['t-class']` | N
+layout | String | horizontal | options:horizontal/vertical | N
+readonly | Boolean | false | \- | N
+separator | String | line | options:line/dashed/arrow | N
+style | String | - | \- | N
+theme | String | default | options:default/dot | N
+
+### Steps Events
+
+name | params | description
+-- | -- | --
+change | `({current: string \| number, previous: string \| number})` | \-
+
+### StepItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+content | String / Slot | '' | \- | N
+external-classes | Array | - | `['t-class', 't-class-content', 't-class-title', 't-class-description', 't-class-extra']` | N
+icon | String / Slot | - | \- | N
+status | String | default | options:default/process/finish/error。Typescript:`StepStatus` `type StepStatus = 'default' \| 'process' \| 'finish' \| 'error'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/step-item/type.ts) | N
+style | String | - | \- | N
+sub-step-items | Array | [] | Typescript:`SubStepItem[]` `interface SubStepItem { status: StepStatus, title: string }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/step-item/type.ts) | N
+title | String / Slot | '' | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/README.md
new file mode 100644
index 0000000..9f852b8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/README.md
@@ -0,0 +1,88 @@
+---
+title: Steps 步骤条
+description: 用于任务步骤展示或任务进度展示。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-steps": "tdesign-miniprogram/steps/steps",
+ "t-step-item": "tdesign-miniprogram/step-item/step-item",
+}
+```
+
+## 代码演示
+
+步骤条,方向可以横向和纵向,可以自定义步骤条显示内容以及是否可写
+
+### 组件类型
+
+#### 水平步骤条
+
+支持三种类型:序号、图标、简略
+
+{{ horizontal }}
+
+#### 垂直步骤条
+
+支持三种类型:序号、图标、简略
+
+{{ vertical }}
+
+### 组件状态
+
+#### 选项卡状态
+
+共支持 4 种状态:未完成(default)、已完成(finish)、进行中(process)、错误(error)
+
+{{ status }}
+
+### 特殊类型
+
+通过已有特性,改造出两种常见类型:
+
+- 垂直自定义(在 Cascader 中使用)
+- 纯展示步骤条
+
+可以参考以下代码实现
+
+{{ special }}
+
+## API
+### Steps Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+current | String / Number | - | 当前步骤,即整个步骤条进度。默认根据步骤下标判断步骤的完成状态,当前步骤为进行中,当前步骤之前的步骤为已完成,当前步骤之后的步骤为未开始。如果每个步骤没有设置 value,current 值为步骤长度则表示所有步骤已完成。如果每个步骤设置了自定义 value,则 current = 'FINISH' 表示所有状态完成 | N
+default-current | String / Number | undefined | 当前步骤,即整个步骤条进度。默认根据步骤下标判断步骤的完成状态,当前步骤为进行中,当前步骤之前的步骤为已完成,当前步骤之后的步骤为未开始。如果每个步骤没有设置 value,current 值为步骤长度则表示所有步骤已完成。如果每个步骤设置了自定义 value,则 current = 'FINISH' 表示所有状态完成。非受控属性 | N
+current-status | String | process | 用于控制 current 指向的步骤条的状态。可选项:default/process/finish/error | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素元素类名。`['t-class']` | N
+layout | String | horizontal | 步骤条方向,有两种:横向和纵向。可选项:horizontal/vertical | N
+readonly | Boolean | false | 只读状态 | N
+separator | String | line | 步骤条分割符。可选项:line/dashed/arrow | N
+style | String | - | 自定义组件样式 | N
+theme | String | default | 步骤条风格。可选项:default/dot | N
+
+### Steps Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `({current: string \| number, previous: string \| number})` | 当前步骤发生变化时触发
+
+### StepItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+content | String / Slot | '' | 步骤描述 | N
+external-classes | Array | - | 组件类名,用于设置组件外层元素元素类名。`['t-class', 't-class-content', 't-class-title', 't-class-description', 't-class-extra']` | N
+icon | String / Slot | - | 图标。传入 slot 代表使用插槽,其他字符串代表使用内置图标 | N
+status | String | default | 当前步骤的状态:默认状态(未开始)、进行中状态、完成状态、错误状态。可选项:default/process/finish/error。TS 类型:`StepStatus` `type StepStatus = 'default' \| 'process' \| 'finish' \| 'error'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/step-item/type.ts) | N
+style | String | - | 自定义组件样式 | N
+sub-step-items | Array | [] | 废弃。子步骤条,仅支持 layout = 'vertical' 时 | N
+title | String / Slot | '' | 标题 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/props.d.ts
new file mode 100644
index 0000000..fef4049
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStepsProps } from './type';
+declare const props: TdStepsProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/props.js
new file mode 100644
index 0000000..5b2a542
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/props.js
@@ -0,0 +1,33 @@
+const props = {
+ current: {
+ type: null,
+ value: null,
+ },
+ defaultCurrent: {
+ type: null,
+ },
+ currentStatus: {
+ type: String,
+ value: 'process',
+ },
+ externalClasses: {
+ type: Array,
+ },
+ layout: {
+ type: String,
+ value: 'horizontal',
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ },
+ separator: {
+ type: String,
+ value: 'line',
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.d.ts
new file mode 100644
index 0000000..140370f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.d.ts
@@ -0,0 +1,22 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Steps extends SuperComponent {
+ relations: RelationsOptions;
+ externalClasses: string[];
+ properties: import("./type").TdStepsProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ observers: {
+ current(): void;
+ };
+ methods: {
+ updateChildren(): void;
+ updateLastChid(): void;
+ handleClick(index: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.js b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.js
new file mode 100644
index 0000000..5584daf
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.js
@@ -0,0 +1,74 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-steps`;
+let Steps = class Steps extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.relations = {
+ '../step-item/step-item': {
+ type: 'child',
+ linked(child) {
+ this.updateChildren();
+ const { readonly } = this.data;
+ child.setData({
+ readonly,
+ });
+ },
+ unlinked() {
+ this.updateLastChid();
+ },
+ },
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'current',
+ event: 'change',
+ },
+ ];
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.observers = {
+ current() {
+ this.updateChildren();
+ },
+ };
+ this.methods = {
+ updateChildren() {
+ const { current, currentStatus, readonly, theme, layout } = this.data;
+ const items = this.$children;
+ items.forEach((item, index) => {
+ item.updateStatus(current, currentStatus, index, theme, layout, items, readonly);
+ });
+ },
+ updateLastChid() {
+ const items = this.$children;
+ items.forEach((child, index) => child.setData({ isLastChild: index === items.length - 1 }));
+ },
+ handleClick(index) {
+ if (!this.data.readonly) {
+ const preIndex = this.data.current;
+ this._trigger('change', {
+ previous: preIndex,
+ current: index,
+ });
+ }
+ },
+ };
+ }
+};
+Steps = __decorate([
+ wxComponent()
+], Steps);
+export default Steps;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.json b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.json
new file mode 100644
index 0000000..94bcc8b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-step": "../step-item/step-item"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.wxml
new file mode 100644
index 0000000..b2c24b1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.wxml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.wxss
new file mode 100644
index 0000000..d0a636c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/steps.wxss
@@ -0,0 +1,40 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+:host {
+ display: flex;
+}
+.t-step--vertical {
+ padding-right: 32rpx;
+}
+.t-steps {
+ display: flex;
+ width: 100%;
+}
+.t-steps--vertical {
+ flex-direction: column;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/type.d.ts
new file mode 100644
index 0000000..df12f6f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/type.d.ts
@@ -0,0 +1,38 @@
+export interface TdStepsProps {
+ current?: {
+ type: null;
+ value?: string | number;
+ };
+ defaultCurrent?: {
+ type: null;
+ value?: string | number;
+ };
+ currentStatus?: {
+ type: StringConstructor;
+ value?: 'default' | 'process' | 'finish' | 'error';
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ layout?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ readonly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ separator?: {
+ type: StringConstructor;
+ value?: 'line' | 'dashed' | 'arrow';
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'dot';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/steps/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/steps/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/README.en-US.md
new file mode 100644
index 0000000..4b36d15
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/README.en-US.md
@@ -0,0 +1,19 @@
+:: BASE_DOC ::
+
+## API
+
+### Sticky Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+container | Function | - | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class']` | N
+offset-top | String / Number | 0 | \- | N
+z-index | Number | 99 | \- | N
+
+### Sticky Events
+
+name | params | description
+-- | -- | --
+scroll | `(detail: { scrollTop: number, isFixed: boolean })` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/README.md
new file mode 100644
index 0000000..aff6695
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/README.md
@@ -0,0 +1,55 @@
+---
+title: Sticky 吸顶
+description: 用于常驻页面顶部的信息、操作展示。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-sticky": "tdesign-miniprogram/sticky/sticky"
+}
+```
+
+## 代码演示
+
+将内容包裹在 `Sticky` 组件内
+
+
+
+### 基础吸顶
+
+{{ base }}
+
+
+### 吸顶距离
+
+{{ offset }}
+
+### 指定容器
+
+{{ container }}
+
+
+
+## API
+### Sticky Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+container | Function | - | 函数返回容器对应的 NodesRef 节点,将对应节点指定为组件的外部容器,滚动时组件会始终保持在容器范围内,当组件即将超出容器底部时,会返回原位置。 | N
+disabled | Boolean | false | 是否禁用组件 | N
+external-classes | Array | - | 根结点外部样式。`['t-class']` | N
+offset-top | String / Number | 0 | 吸顶时与顶部的距离,单位`px` | N
+z-index | Number | 99 | 吸顶时的 z-index | N
+
+### Sticky Events
+
+名称 | 参数 | 描述
+-- | -- | --
+scroll | `(detail: { scrollTop: number, isFixed: boolean })` | 滚动时触发,scrollTop: 距离顶部位置,isFixed: 是否吸顶
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/index.d.ts
new file mode 100644
index 0000000..a6df66d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/index.d.ts
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './sticky';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/index.js
new file mode 100644
index 0000000..a6df66d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/index.js
@@ -0,0 +1,3 @@
+export * from './props';
+export * from './type';
+export * from './sticky';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/props.d.ts
new file mode 100644
index 0000000..175af72
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/props.d.ts
@@ -0,0 +1,3 @@
+import { TdStickyProps } from './type';
+declare const props: TdStickyProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/props.js
new file mode 100644
index 0000000..7e5cb71
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/props.js
@@ -0,0 +1,21 @@
+const props = {
+ container: {
+ type: null,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ offsetTop: {
+ type: Number,
+ value: 0,
+ },
+ zIndex: {
+ type: Number,
+ value: 99,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.d.ts
new file mode 100644
index 0000000..89ba546
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.d.ts
@@ -0,0 +1,30 @@
+import { SuperComponent } from '../common/src/index';
+import type { TdStickyProps } from './type';
+export interface StickyProps extends TdStickyProps {
+}
+export default class Sticky extends SuperComponent {
+ externalClasses: string[];
+ properties: TdStickyProps;
+ behaviors: string[];
+ observers: {
+ 'offsetTop, disabled, container'(): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ containerStyle: string;
+ contentStyle: string;
+ };
+ ready(): void;
+ methods: {
+ onScroll(event?: {
+ scrollTop: number;
+ }): void;
+ setDataAfterDiff(data: {
+ isFixed: boolean;
+ height?: number;
+ transform?: number;
+ }): void;
+ getContainerRect(): Promise;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.js b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.js
new file mode 100644
index 0000000..9272792
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.js
@@ -0,0 +1,120 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import pageScrollMixin from '../mixins/page-scroll';
+import { getRect } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-sticky`;
+const ContainerClass = `.${name}`;
+let Sticky = class Sticky extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = props;
+ this.behaviors = [
+ pageScrollMixin(function (event) {
+ this.onScroll(event);
+ }),
+ ];
+ this.observers = {
+ 'offsetTop, disabled, container'() {
+ this.onScroll();
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ containerStyle: '',
+ contentStyle: '',
+ };
+ this.methods = {
+ onScroll(event) {
+ const { scrollTop } = event || {};
+ const { container, offsetTop, disabled } = this.properties;
+ if (disabled) {
+ this.setDataAfterDiff({
+ isFixed: false,
+ transform: 0,
+ });
+ return;
+ }
+ this.scrollTop = scrollTop || this.scrollTop;
+ if (typeof container === 'function') {
+ Promise.all([getRect(this, ContainerClass), this.getContainerRect()]).then(([root, container]) => {
+ if (!root || !container)
+ return;
+ if (offsetTop + root.height > container.height + container.top) {
+ this.setDataAfterDiff({
+ isFixed: false,
+ transform: container.height - root.height,
+ });
+ }
+ else if (offsetTop >= root.top) {
+ this.setDataAfterDiff({
+ isFixed: true,
+ height: root.height,
+ transform: 0,
+ });
+ }
+ else {
+ this.setDataAfterDiff({ isFixed: false, transform: 0 });
+ }
+ });
+ return;
+ }
+ getRect(this, ContainerClass).then((root) => {
+ if (!root)
+ return;
+ if (offsetTop >= root.top) {
+ this.setDataAfterDiff({ isFixed: true, height: root.height });
+ this.transform = 0;
+ }
+ else {
+ this.setDataAfterDiff({ isFixed: false });
+ }
+ });
+ },
+ setDataAfterDiff(data) {
+ const { offsetTop } = this.properties;
+ const { containerStyle: prevContainerStyle, contentStyle: prevContentStyle } = this.data;
+ const { isFixed, height, transform } = data;
+ wx.nextTick(() => {
+ let containerStyle = '';
+ let contentStyle = '';
+ if (isFixed) {
+ containerStyle += `height:${height}px;`;
+ contentStyle += `position:fixed;top:${offsetTop}px;`;
+ }
+ if (transform) {
+ const translate = `translate3d(0, ${transform}px, 0)`;
+ contentStyle += `-webkit-transform:${translate};transform:${translate};`;
+ }
+ if (prevContainerStyle !== containerStyle || prevContentStyle !== contentStyle) {
+ this.setData({ containerStyle, contentStyle });
+ }
+ this.triggerEvent('scroll', {
+ scrollTop: this.scrollTop,
+ isFixed,
+ });
+ });
+ },
+ getContainerRect() {
+ const nodesRef = this.properties.container();
+ return new Promise((resolve) => nodesRef.boundingClientRect(resolve).exec());
+ },
+ };
+ }
+ ready() {
+ this.onScroll();
+ }
+};
+Sticky = __decorate([
+ wxComponent()
+], Sticky);
+export default Sticky;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.json b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.wxml
new file mode 100644
index 0000000..8f0181c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.wxml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.wxss
new file mode 100644
index 0000000..730de8a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/sticky.wxss
@@ -0,0 +1,33 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-sticky {
+ position: relative;
+}
+.t-sticky__content {
+ width: 100%;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/type.d.ts
new file mode 100644
index 0000000..40a7712
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdStickyProps {
+ container?: {
+ type: undefined;
+ value?: null;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ offsetTop?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ zIndex?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/sticky/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/README.en-US.md
new file mode 100644
index 0000000..584359b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/README.en-US.md
@@ -0,0 +1,18 @@
+:: BASE_DOC ::
+
+## API
+
+### SwipeCell Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+disabled | Boolean | - | \- | N
+opened | Boolean / Array | false | \- | N
+left | Array / Slot | - | Typescript:`Array` | N
+right | Array / Slot | - | Typescript:`Array` `interface SwipeActionItem {text?: string; icon?: string | object; className?: string; style?: string; onClick?: () => void; [key: string]: any }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts) | N
+
+### SwipeCell Events
+
+name | params | description
+-- | -- | --
+click | `(action: SwipeActionItem, source: SwipeSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts)。
`type SwipeSource = 'left' \| 'right'`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/README.md
new file mode 100644
index 0000000..b0c80d5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/README.md
@@ -0,0 +1,51 @@
+---
+title: SwipeCell 滑动操作
+description: 用于承载列表中的更多操作,通过左右滑动来展示,按钮的宽度固定高度根据列表高度而变化。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-swipe-cell": "tdesign-miniprogram/swipe-cell/swipe-cell"
+}
+```
+
+### 组件类型
+
+左滑单操作
+
+{{ left }}
+
+右滑单操作
+
+{{ right }}
+
+左右滑操作
+
+{{ double }}
+
+带图标的滑动操作
+
+{{ icon }}
+
+## API
+### SwipeCell Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+disabled | Boolean | - | 是否禁用滑动 | N
+opened | Boolean / Array | false | 操作项是否呈现为打开态,值为数组时表示分别控制左右滑动的展开和收起状态。TS 类型:`boolean \| Array` | N |
+left | Array / Slot | - | 左侧滑动操作项。所有行为同 `right`。TS 类型:`Array` | N
+right | Array / Slot | - | 右侧滑动操作项。有两种定义方式,一种是使用数组,二种是使用插槽。`right.text` 表示操作文本,`right.className` 表示操作项类名,`right.style` 表示操作项样式,`right.onClick` 表示点击操作项后执行的回调函数。示例:`[{ text: '删除', icon: 'delete', style: 'background-color: red', onClick: () => {} }]`。TS 类型:`Array` `interface SwipeActionItem {text?: string; icon?: string \| object, className?: string; style?: string; onClick?: () => void; [key: string]: any }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts) | N
+
+### SwipeCell Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | `(action: SwipeActionItem, source: SwipeSource)` | 操作项点击时触发(插槽写法组件不触发,业务侧自定义内容和事件)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swipe-cell/type.ts)。
`type SwipeSource = 'left' \| 'right'`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/props.d.ts
new file mode 100644
index 0000000..9a3159c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwipeCellProps } from './type';
+declare const props: TdSwipeCellProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/props.js
new file mode 100644
index 0000000..5298eef
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/props.js
@@ -0,0 +1,17 @@
+const props = {
+ disabled: {
+ type: Boolean,
+ },
+ left: {
+ type: Array,
+ },
+ opened: {
+ type: Boolean,
+ optionalTypes: [Array],
+ value: false,
+ },
+ right: {
+ type: Array,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.d.ts
new file mode 100644
index 0000000..b1400ab
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent } from '../common/src/index';
+export default class SwiperCell extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdSwipeCellProps;
+ data: {
+ prefix: string;
+ wrapperStyle: string;
+ closed: boolean;
+ classPrefix: string;
+ };
+ attached(): void;
+ ready(): void;
+ setSwipeWidth(): void;
+ detached(): void;
+ open(): void;
+ close(): void;
+ closeOther(): void;
+ onTap(): void;
+ onActionTap(event: any): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.js
new file mode 100644
index 0000000..f785d95
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.js
@@ -0,0 +1,67 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect } from '../common/utils';
+let ARRAY = [];
+const { prefix } = config;
+const name = `${prefix}-swipe-cell`;
+const ContainerClass = `.${name}`;
+let SwiperCell = class SwiperCell extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ wrapperStyle: '',
+ closed: true,
+ classPrefix: name,
+ };
+ }
+ attached() {
+ ARRAY.push(this);
+ }
+ ready() {
+ this.setSwipeWidth();
+ }
+ setSwipeWidth() {
+ Promise.all([getRect(this, `${ContainerClass}__left`), getRect(this, `${ContainerClass}__right`)]).then(([leftRect, rightRect]) => {
+ this.setData({
+ leftWidth: leftRect.width,
+ rightWidth: rightRect.width,
+ });
+ });
+ }
+ detached() {
+ ARRAY = ARRAY.filter((item) => item !== this);
+ }
+ open() {
+ this.setData({ opened: true });
+ }
+ close() {
+ this.setData({ opened: false });
+ }
+ closeOther() {
+ ARRAY.filter((item) => item !== this).forEach((item) => item.close());
+ }
+ onTap() {
+ this.close();
+ }
+ onActionTap(event) {
+ const { currentTarget: { dataset: { action }, }, } = event;
+ this.triggerEvent('click', action);
+ }
+};
+SwiperCell = __decorate([
+ wxComponent()
+], SwiperCell);
+export default SwiperCell;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.json b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.json
new file mode 100644
index 0000000..049940c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxml
new file mode 100644
index 0000000..9b97d91
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxs
new file mode 100644
index 0000000..dbb7fec
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxs
@@ -0,0 +1,176 @@
+var THRESHOLD = 0.3;
+var MIN_DISTANCE = 10;
+var owner;
+var state;
+
+var getState = function (ownerInstance) {
+ owner = ownerInstance;
+ state = owner.getState();
+ state.leftWidth = state.leftWidth || 0;
+ state.rightWidth = state.rightWidth || 0;
+ state.offset = state.offset || 0;
+ state.startOffset = state.startOffset || 0;
+ state.opened = state.opened || false;
+};
+
+var initRightWidth = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ state.rightWidth = newVal;
+ initOpen(ownerInstance);
+};
+
+var initLeftWidth = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ state.leftWidth = newVal;
+ initOpen(ownerInstance);
+};
+
+var initOpen = function (ownerInstance) {
+ getState(ownerInstance);
+ if (state.opened.constructor === 'Boolean') {
+ // opened为boolen类型,判断默认打开
+ if (state.opened && state.rightWidth > 0) {
+ swipeMove(-state.rightWidth);
+ } else if (state.opened && state.leftWidth > 0) {
+ swipeMove(state.leftWidth);
+ }
+ }
+
+ if (state.opened.constructor === 'Array') {
+ // opened为array类型,判断默认打开,同时设定左右action时优先打开右边
+ if (state.opened[1] && state.rightWidth > 0) {
+ swipeMove(-state.rightWidth);
+ } else if (state.opened[0] && state.leftWidth > 0) {
+ swipeMove(state.leftWidth);
+ }
+ }
+};
+
+var resetTouchStatus = function () {
+ state.direction = '';
+ state.deltaX = 0;
+ state.deltaY = 0;
+ state.offsetX = 0;
+ state.offsetY = 0;
+};
+
+var touchMove = function (event) {
+ var touchPoint = event.touches[0];
+ state.deltaX = touchPoint.clientX - state.startX;
+ state.deltaY = touchPoint.clientY - state.startY;
+ state.offsetX = Math.abs(state.deltaX);
+ state.offsetY = Math.abs(state.deltaY);
+ state.direction = state.direction || getDirection(state.offsetX, state.offsetY);
+};
+
+var getDirection = function (x, y) {
+ if (x > y && x > MIN_DISTANCE) {
+ return 'horizontal';
+ }
+ if (y > x && y > MIN_DISTANCE) {
+ return 'vertical';
+ }
+ return '';
+};
+
+var range = function (num, min, max) {
+ return Math.min(Math.max(num, min), max);
+};
+
+var swipeMove = function (_offset) {
+ if (_offset === undefined) _offset = 0;
+ state.offset = range(_offset, -state.rightWidth, +state.leftWidth);
+ var transform = 'translate3d(' + state.offset + 'px, 0, 0)';
+ var transition = state.dragging ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)';
+ owner.selectComponent('#wrapper').setStyle({
+ '-webkit-transform': transform,
+ '-webkit-transition': transition,
+ transform: transform,
+ transition: transition,
+ });
+};
+
+var close = function () {
+ swipeMove(0);
+};
+
+var onCloseChange = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ if (newVal === oldVal) return;
+ if (newVal) {
+ close();
+ }
+};
+
+var onOpenedChange = function (newVal, oldVal, ownerInstance) {
+ getState(ownerInstance);
+ state.opened = newVal;
+ if (newVal === oldVal) return;
+ if (!newVal) {
+ close();
+ }
+};
+
+var touchStart = function (event) {
+ resetTouchStatus();
+ state.startOffset = state.offset;
+ var touchPoint = event.touches[0];
+ state.startX = touchPoint.clientX;
+ state.startY = touchPoint.clientY;
+ owner.callMethod('closeOther');
+};
+
+var startDrag = function (event, ownerInstance) {
+ getState(ownerInstance);
+ touchStart(event);
+};
+
+var onDrag = function (event, ownerInstance) {
+ getState(ownerInstance);
+ touchMove(event);
+ if (state.direction !== 'horizontal') {
+ return;
+ }
+ state.dragging = true;
+ swipeMove(state.startOffset + state.deltaX);
+};
+
+var open = function (position) {
+ var _offset = position === 'left' ? +state.leftWidth : -state.rightWidth;
+ owner.callMethod('open', { position: position });
+ swipeMove(_offset);
+};
+
+var endDrag = function (event, ownerInstance) {
+ getState(ownerInstance);
+ state.dragging = false;
+ // 左/右侧有可滑动区域,且当前不是已open状态,且滑动幅度超过阈值时open左/右侧(滚动到该侧的最边上)
+ if (
+ +state.rightWidth > 0 &&
+ -state.startOffset < +state.rightWidth &&
+ -state.offset > +state.rightWidth * THRESHOLD
+ ) {
+ open('right');
+ } else if (
+ +state.leftWidth > 0 &&
+ state.startOffset < +state.leftWidth &&
+ state.offset > +state.leftWidth * THRESHOLD
+ ) {
+ open('left');
+ } else {
+ // 仅在有发生侧滑的情况下自动关闭(由js控制是否异步关闭)
+ if (state.startOffset !== state.offset) {
+ close();
+ }
+ }
+};
+
+module.exports = {
+ initLeftWidth: initLeftWidth,
+ initRightWidth: initRightWidth,
+ startDrag: startDrag,
+ onDrag: onDrag,
+ endDrag: endDrag,
+ onCloseChange: onCloseChange,
+ onOpenedChange: onOpenedChange,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxss
new file mode 100644
index 0000000..dd4086f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/swipe-cell.wxss
@@ -0,0 +1,59 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-swipe-cell {
+ position: relative;
+ overflow: hidden;
+}
+.t-swipe-cell__left,
+.t-swipe-cell__right {
+ position: absolute;
+ top: 0;
+ height: 100%;
+}
+.t-swipe-cell__left {
+ left: 0;
+ transform: translate3d(-100%, 0, 0);
+}
+.t-swipe-cell__right {
+ right: 0;
+ transform: translate3d(100%, 0, 0);
+}
+.t-swipe-cell__content {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 var(--td-spacer-2, 32rpx);
+}
+.t-swipe-cell__icon {
+ font-size: var(--td-font-size-l, 40rpx);
+}
+.t-swipe-cell__icon + .t-swipe-cell__text:not(:empty) {
+ margin-left: var(--td-spacer, 16rpx);
+ font-size: var(--td-font-size-base, 28rpx);
+ line-height: 44rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/type.d.ts
new file mode 100644
index 0000000..43614d3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/type.d.ts
@@ -0,0 +1,31 @@
+export interface TdSwipeCellProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ left?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ opened?: {
+ type: BooleanConstructor;
+ optionalTypes: Array;
+ value?: boolean | Array;
+ required?: boolean;
+ };
+ right?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+}
+export interface SwipeActionItem {
+ text: string;
+ className?: string;
+ style?: string;
+ onClick?: () => void;
+ [key: string]: any;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swipe-cell/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/index.d.ts
new file mode 100644
index 0000000..5dcaf6b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/index.d.ts
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './swiper-nav';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/index.js
new file mode 100644
index 0000000..5dcaf6b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/index.js
@@ -0,0 +1,3 @@
+export * from './type';
+export * from './props';
+export * from './swiper-nav';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/props.d.ts
new file mode 100644
index 0000000..70971ea
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwiperNavProps } from './type';
+declare const props: TdSwiperNavProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/props.js
new file mode 100644
index 0000000..04f2f55
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/props.js
@@ -0,0 +1,31 @@
+const props = {
+ current: {
+ type: Number,
+ value: 0,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ minShowNum: {
+ type: Number,
+ value: 2,
+ },
+ paginationPosition: {
+ type: String,
+ value: 'bottom',
+ },
+ showControls: {
+ type: Boolean,
+ value: false,
+ },
+ total: {
+ type: Number,
+ value: 0,
+ },
+ type: {
+ type: String,
+ value: 'dots',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.d.ts
new file mode 100644
index 0000000..ce01166
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.d.ts
@@ -0,0 +1,45 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import { TdSwiperNavProps } from './type';
+export interface SwiperNavProps extends TdSwiperNavProps {
+}
+export default class SwiperNav extends SuperComponent {
+ externalClasses: string[];
+ properties: {
+ current: {
+ type: NumberConstructor;
+ value: number;
+ };
+ total: {
+ type: NumberConstructor;
+ value: number;
+ };
+ type: {
+ type: StringConstructor;
+ value: string;
+ };
+ minShowNum: {
+ type: NumberConstructor;
+ value: number;
+ };
+ showControls: {
+ type: BooleanConstructor;
+ value: boolean;
+ };
+ direction: {
+ type: StringConstructor;
+ value: string;
+ };
+ paginationPosition: {
+ type: StringConstructor;
+ value: string;
+ };
+ };
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ methods: {
+ nav(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.js
new file mode 100644
index 0000000..991c5af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.js
@@ -0,0 +1,70 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-swiper-nav`;
+let SwiperNav = class SwiperNav extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.properties = {
+ current: {
+ type: Number,
+ value: 0,
+ },
+ total: {
+ type: Number,
+ value: 0,
+ },
+ type: {
+ type: String,
+ value: 'dots',
+ },
+ minShowNum: {
+ type: Number,
+ value: 2,
+ },
+ showControls: {
+ type: Boolean,
+ value: false,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ paginationPosition: {
+ type: String,
+ value: 'bottom',
+ },
+ };
+ this.relations = {
+ '../swiper/swiper': {
+ type: 'parent',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.methods = {
+ nav(e) {
+ var _a;
+ const { dir } = e.target.dataset;
+ const source = 'nav';
+ this.triggerEvent('nav-btn-change', { dir, source });
+ if (this.$parent) {
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.doNavBtnChange(dir, source);
+ }
+ },
+ };
+ }
+};
+SwiperNav = __decorate([
+ wxComponent()
+], SwiperNav);
+export default SwiperNav;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.json b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.json
new file mode 100644
index 0000000..467ce29
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.json
@@ -0,0 +1,3 @@
+{
+ "component": true
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.wxml
new file mode 100644
index 0000000..2067b05
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.wxss
new file mode 100644
index 0000000..1463dba
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/swiper-nav.wxss
@@ -0,0 +1,152 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-swiper-nav__dots,
+.t-swiper-nav__dots-bar {
+ display: flex;
+ flex-direction: row;
+}
+.t-swiper-nav__dots-item,
+.t-swiper-nav__dots-bar-item {
+ width: var(--td-swiper-nav-dot-size, 12rpx);
+ height: var(--td-swiper-nav-dot-size, 12rpx);
+ background: var(--td-swiper-nav-dot-color, var(--td-font-white-2, rgba(255, 255, 255, 0.55)));
+ border-radius: 50%;
+ margin: 0 10rpx;
+ transition: all 0.4s ease-in;
+}
+.t-swiper-nav__dots-item--vertical,
+.t-swiper-nav__dots-bar-item--vertical {
+ margin: 10rpx 0;
+}
+.t-swiper-nav__dots-item--active,
+.t-swiper-nav__dots-bar-item--active {
+ background-color: var(--td-swiper-nav-dot-active-color, var(--td-font-white-1, #ffffff));
+}
+.t-swiper-nav__dots-bar-item--vertical.t-swiper-nav__dots-bar-item--active {
+ width: var(--td-swiper-nav-dot-size, 12rpx);
+ height: var(--td-swiper-nav-dots-bar-active-width, 40rpx);
+}
+.t-swiper-nav__dots-bar-item--active {
+ width: var(--td-swiper-nav-dots-bar-active-width, 40rpx);
+ border-radius: calc(var(--td-swiper-nav-dot-size, 12rpx) / 2);
+ background-color: var(--td-swiper-nav-dot-active-color, var(--td-font-white-1, #ffffff));
+}
+.t-swiper-nav--left {
+ position: absolute;
+ left: 24rpx;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-swiper-nav--right {
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.t-swiper-nav--top-left {
+ position: absolute;
+ top: 24rpx;
+ left: 24rpx;
+}
+.t-swiper-nav--top {
+ position: absolute;
+ left: 50%;
+ top: 24rpx;
+ transform: translateX(-50%);
+}
+.t-swiper-nav--top-right {
+ position: absolute;
+ top: 24rpx;
+ right: 24rpx;
+}
+.t-swiper-nav--bottom-left {
+ position: absolute;
+ left: 24rpx;
+ bottom: 24rpx;
+}
+.t-swiper-nav--bottom {
+ position: absolute;
+ left: 50%;
+ bottom: 24rpx;
+ transform: translateX(-50%);
+}
+.t-swiper-nav--bottom-right {
+ position: absolute;
+ right: 24rpx;
+ bottom: 24rpx;
+}
+.t-swiper-nav--vertical {
+ flex-direction: column;
+}
+.t-swiper-nav__fraction {
+ padding: 0 16rpx;
+ height: var(--td-swiper-nav-fraction-height, 48rpx);
+ line-height: var(--td-swiper-nav-fraction-height, 48rpx);
+ border-radius: calc(var(--td-swiper-nav-fraction-height, 48rpx) / 2);
+ background: var(--td-swiper-nav-fraction-bg-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ color: var(--td-swiper-nav-fraction-color, var(--td-font-white-1, #ffffff));
+ font-size: var(--td-swiper-nav-fraction-font-size, 24rpx);
+}
+.t-swiper-nav__btn--prev,
+.t-swiper-nav__btn--next {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ width: var(--td-swiper-nav-btn-size, 48rpx);
+ height: var(--td-swiper-nav-btn-size, 48rpx);
+ border-radius: 50%;
+ background: var(--td-swiper-nav-btn-bg-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-swiper-nav__btn--prev::after,
+.t-swiper-nav__btn--next::after {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ display: block;
+ content: '';
+ width: 12rpx;
+ height: 12rpx;
+ border-color: var(--td-swiper-nav-btn-color, var(--td-font-white-1, #ffffff));
+ border-style: solid;
+}
+.t-swiper-nav__btn--prev {
+ left: 30rpx;
+}
+.t-swiper-nav__btn--prev::after {
+ margin-left: 4rpx;
+ border-width: 2rpx 0 0 2rpx;
+ transform: translate(-50%, -50%) rotateZ(-45deg);
+}
+.t-swiper-nav__btn--next {
+ right: 30rpx;
+}
+.t-swiper-nav__btn--next::after {
+ margin-left: -4rpx;
+ border-width: 2rpx 2rpx 0 0;
+ transform: translate(-50%, -50%) rotateZ(45deg);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/type.d.ts
new file mode 100644
index 0000000..2cc2a19
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/type.d.ts
@@ -0,0 +1,35 @@
+export interface TdSwiperNavProps {
+ current?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ minShowNum?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ paginationPosition?: {
+ type: StringConstructor;
+ value?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right';
+ };
+ showControls?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ total?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ type?: {
+ type: StringConstructor;
+ value?: SwiperNavigationType;
+ };
+}
+export declare type SwiperNavigationType = 'dots' | 'dots-bar' | 'fraction';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper-nav/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/README.en-US.md
new file mode 100644
index 0000000..d827dbb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/README.en-US.md
@@ -0,0 +1,42 @@
+:: BASE_DOC ::
+
+## API
+### Swiper Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+autoplay | Boolean | true | \- | N
+current | Number | 0 | \- | N
+direction | String | horizontal | options:horizontal/vertical | N
+display-multiple-items | Number | 1 | `0.32.0` | N
+duration | Number | 300 | \- | N
+easing-function | String | default | `0.32.0`。options:default/linear/easeInCubic/easeOutCubic/easeInOutCubic | N
+height | String / Number | 192 | \- | N
+image-props | Object | - | `0.34.0` | N
+interval | Number | 5000 | \- | N
+list | Array | - | `0.32.0`。Typescript:`string[]` | N
+loop | Boolean | true | \- | N
+navigation | Boolean / Object / Slot | true | Typescript:`SwiperNavProps \| boolean`,[SwiperNav API Documents](./swiper-nav?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts) | N
+next-margin | String / Number | 0 | `0.32.0` | N
+pagination-position | String | bottom | options:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+previous-margin | String / Number | 0 | `0.32.0` | N
+snap-to-edge | Boolean | false | `0.32.0` | N
+
+### Swiper Events
+
+name | params | description
+-- | -- | --
+change | `(current: number, source: SwiperChangeSource)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts)。
`type SwiperChangeSource = 'autoplay' \| 'touch' \| 'nav'`
+click | `(index: number)` | `0.34.0`
+
+### SwiperNav Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+current | Number | 0 | `0.34.0` | N
+direction | String | horizontal | `0.34.0`。options:horizontal/vertical | N
+min-show-num | Number | 2 | \- | N
+pagination-position | String | bottom | `0.34.0`。options:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+show-controls | Boolean | false | `0.32.0` | N
+total | Number | 0 | `0.34.0` | N
+type | String | dots | Typescript:`SwiperNavigationType` `type SwiperNavigationType = 'dots' \| 'dots-bar' \| 'fraction'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper-nav/type.ts) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/README.md
new file mode 100644
index 0000000..37bd573
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/README.md
@@ -0,0 +1,97 @@
+---
+title: Swiper 轮播图
+description: 用于循环轮播一组图片或内容,也可以滑动进行切换,轮播动效时间可以设置。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-swiper": "tdesign-miniprogram/swiper/swiper",
+ "t-swiper-nav": "tdesign-miniprogram/swiper-nav/swiper-nav",
+}
+```
+
+### 组件说明
+
+从 `0.32.0` 版本开始,依赖原生 `swiper` 组件实现,移除了 `swiper-item` 组件,新增了 `list` 属性;
+
+## 代码演示
+
+多种轮播样式,通过 `navigation` 设置导航样式,没有值则不显示,也可以自定义 `nav` 组件
+
+
+
+### 组件类型
+
+#### 点状(dots)轮播图
+
+{{ base }}
+
+#### 点条状(dots-bar)轮播图
+
+{{ custom }}
+
+#### 分式(fraction)导航器轮播图
+
+{{ fraction }}
+
+#### 切换按钮(controls)轮播图
+
+{{ nav-btn }}
+
+#### 卡片式(cards)轮播图
+
+{{ cards }}
+
+### 组件样式
+
+#### 垂直模式
+
+{{ vertical }}
+
+## API
+### Swiper Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+autoplay | Boolean | true | 是否自动播放 | N
+current | Number | 0 | 当前轮播在哪一项(下标) | N
+direction | String | horizontal | 轮播滑动方向,包括横向滑动和纵向滑动两个方向。可选项:horizontal/vertical | N
+display-multiple-items | Number | 1 | `0.32.0`。同时显示的滑块数量 | N
+duration | Number | 300 | 滑动动画时长 | N
+easing-function | String | default | `0.32.0`。指定 swiper 切换缓动动画类型。可选项:default/linear/easeInCubic/easeOutCubic/easeInOutCubic | N
+height | String / Number | 192 | 轮播的高度;默认单位 `px` | N
+image-props | Object | - | `0.34.0`。透传至 Image 组件 | N
+interval | Number | 5000 | 轮播间隔时间 | N
+list | Array | - | `0.32.0`。图片列表。TS 类型:`string[]` | N
+loop | Boolean | true | 是否循环播放 | N
+navigation | Boolean / Object / Slot | true | 导航器全部配置,true 的话使用默认配置。TS 类型:`SwiperNavProps \| boolean`,[SwiperNav API Documents](./swiper-nav?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts) | N
+next-margin | String / Number | 0 | `0.32.0`。后边距,可用于露出后一项的一小部分。默认单位 `px` | N
+pagination-position | String | bottom | 页码信息展示位置。可选项:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+previous-margin | String / Number | 0 | `0.32.0`。前边距,可用于露出前一项的一小部分。默认单位 `px` | N
+snap-to-edge | Boolean | false | `0.32.0`。当 swiper-item 的个数大于等于 2,关闭 circular 并且开启 previous-margin 或 next-margin 的时候,可以指定这个边距是否应用到第一个、最后一个元素 | N
+
+### Swiper Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(current: number, source: SwiperChangeSource)` | 轮播切换时触发。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper/type.ts)。
`type SwiperChangeSource = 'autoplay' \| 'touch' \| 'nav'`
+click | `(index: number)` | `0.34.0`。点击轮播项时触发
+
+### SwiperNav Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+current | Number | 0 | `0.34.0`。当前轮播在哪一项(下标) | N
+direction | String | horizontal | `0.34.0`。轮播滑动方向,包括横向滑动和纵向滑动两个方向。可选项:horizontal/vertical | N
+min-show-num | Number | 2 | 小于这个数字不会显示导航器 | N
+pagination-position | String | bottom | `0.34.0`。页码信息展示位置。可选项:top-left/top/top-right/bottom-left/bottom/bottom-right | N
+show-controls | Boolean | false | `0.32.0`。是否显示两侧的控制按钮 | N
+total | Number | 0 | `0.34.0`。总共的项数 | N
+type | String | dots | 导航器类型,点状(dots)、点条状(dots-bar)、分式(fraction)等。TS 类型:`SwiperNavigationType` `type SwiperNavigationType = 'dots' \| 'dots-bar' \| 'fraction'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/swiper-nav/type.ts) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/index.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/index.wxs
new file mode 100644
index 0000000..b5206a6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/index.wxs
@@ -0,0 +1,25 @@
+function isPrev(current, index, list) {
+ return (current - 1 + list.length) % list.length === index;
+}
+
+function isNext(current, index, list) {
+ return (current + 1 + list.length) % list.length === index;
+}
+
+function getImageClass(prefix, current, index, list) {
+ var arr = [prefix + '-swiper__image', prefix + '-class-image'];
+
+ if (isPrev(current, index, list)) {
+ arr.push(prefix + '-class-prev-image')
+ }
+
+ if (isNext(current, index, list)) {
+ arr.push(prefix + '-class-next-image')
+ }
+
+ return arr.join(' ');
+}
+
+module.exports.isPrev = isPrev;
+module.exports.isNext = isNext;
+module.exports.getImageClass = getImageClass;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/props.d.ts
new file mode 100644
index 0000000..399c9af
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwiperProps } from './type';
+declare const props: TdSwiperProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/props.js
new file mode 100644
index 0000000..84d0499
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/props.js
@@ -0,0 +1,65 @@
+const props = {
+ autoplay: {
+ type: Boolean,
+ value: true,
+ },
+ current: {
+ type: Number,
+ value: 0,
+ },
+ direction: {
+ type: String,
+ value: 'horizontal',
+ },
+ displayMultipleItems: {
+ type: Number,
+ value: 1,
+ },
+ duration: {
+ type: Number,
+ value: 300,
+ },
+ easingFunction: {
+ type: String,
+ value: 'default',
+ },
+ height: {
+ type: null,
+ value: 192,
+ },
+ imageProps: {
+ type: Object,
+ },
+ interval: {
+ type: Number,
+ value: 5000,
+ },
+ list: {
+ type: Array,
+ },
+ loop: {
+ type: Boolean,
+ value: true,
+ },
+ navigation: {
+ type: null,
+ value: true,
+ },
+ nextMargin: {
+ type: null,
+ value: 0,
+ },
+ paginationPosition: {
+ type: String,
+ value: 'bottom',
+ },
+ previousMargin: {
+ type: null,
+ value: 0,
+ },
+ snapToEdge: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.d.ts
new file mode 100644
index 0000000..03a5202
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.d.ts
@@ -0,0 +1,27 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Swiper extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdSwiperProps;
+ observers: {
+ navCurrent(v: any): void;
+ };
+ $nav: any;
+ relations: RelationsOptions;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ updateNav(currentValue: any): void;
+ onTap(e: any): void;
+ onChange(e: any): void;
+ onNavBtnChange(e: any): void;
+ doNavBtnChange(dir: any, source: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.js
new file mode 100644
index 0000000..327c7f1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.js
@@ -0,0 +1,101 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-swiper`;
+let Swiper = class Swiper extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-nav`,
+ `${prefix}-class-image`,
+ `${prefix}-class-prev-image`,
+ `${prefix}-class-next-image`,
+ ];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.observers = {
+ navCurrent(v) {
+ this.updateNav(v);
+ },
+ };
+ this.$nav = null;
+ this.relations = {
+ '../swiper-nav/swiper-nav': {
+ type: 'child',
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ };
+ this.lifetimes = {
+ ready() {
+ const { current } = this.properties;
+ this.setData({ navCurrent: current });
+ },
+ };
+ this.methods = {
+ updateNav(currentValue) {
+ var _a;
+ if (this.data.navigation)
+ return;
+ const $nav = (_a = this.getRelationNodes('./swiper-nav')) === null || _a === void 0 ? void 0 : _a[0];
+ if (!$nav)
+ return;
+ const { direction, paginationPosition, list } = this.properties;
+ $nav.setData({
+ current: currentValue,
+ total: list.length,
+ direction,
+ paginationPosition,
+ });
+ },
+ onTap(e) {
+ const { index } = e.currentTarget.dataset;
+ this.triggerEvent('click', { index });
+ },
+ onChange(e) {
+ const { current, source } = e.detail;
+ this.setData({
+ navCurrent: current,
+ });
+ this.triggerEvent('change', { current, source });
+ },
+ onNavBtnChange(e) {
+ const { dir, source } = e.detail;
+ this.doNavBtnChange(dir, source);
+ },
+ doNavBtnChange(dir, source) {
+ const { current, list, loop } = this.data;
+ const count = list.length;
+ let nextPos = dir === 'next' ? current + 1 : current - 1;
+ if (loop) {
+ nextPos = dir === 'next' ? (current + 1) % count : (current - 1 + count) % count;
+ }
+ else {
+ nextPos = nextPos < 0 || nextPos >= count ? current : nextPos;
+ }
+ if (nextPos === current)
+ return;
+ this.setData({
+ current: nextPos,
+ });
+ this.triggerEvent('change', { current: nextPos, source });
+ },
+ };
+ }
+};
+Swiper = __decorate([
+ wxComponent()
+], Swiper);
+export default Swiper;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.json b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.json
new file mode 100644
index 0000000..e565961
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-swiper-nav": "../swiper-nav/swiper-nav",
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.wxml
new file mode 100644
index 0000000..22add26
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.wxml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.wxss
new file mode 100644
index 0000000..6509860
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/swiper.wxss
@@ -0,0 +1,49 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-swiper {
+ position: relative;
+}
+.t-swiper-host {
+ border-radius: var(--td-swiper-radius, var(--td-radius-large, 18rpx));
+ overflow: hidden;
+ transform: translateY(0);
+}
+.t-swiper__item {
+ display: flex;
+ align-items: center;
+ box-sizing: border-box;
+ padding: var(--td-swiper-item-padding, 0);
+}
+.t-swiper__image {
+ width: 100%;
+ transition: all 0.3s ease;
+}
+.t-swiper__image-host {
+ display: block;
+ width: 100%;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/type.d.ts
new file mode 100644
index 0000000..6b6eb8a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/type.d.ts
@@ -0,0 +1,71 @@
+import { SwiperNavProps } from '../swiper-nav/index';
+export interface TdSwiperProps {
+ autoplay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ current?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'horizontal' | 'vertical';
+ };
+ displayMultipleItems?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ easingFunction?: {
+ type: StringConstructor;
+ value?: 'default' | 'linear' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic';
+ };
+ height?: {
+ type: null;
+ value?: string | number;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ interval?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ list?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ loop?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ navigation?: {
+ type: null;
+ value?: SwiperNavProps | boolean;
+ };
+ nextMargin?: {
+ type: null;
+ value?: string | number;
+ };
+ paginationPosition?: {
+ type: StringConstructor;
+ value?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right';
+ };
+ previousMargin?: {
+ type: null;
+ value?: string | number;
+ };
+ snapToEdge?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/swiper/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/README.en-US.md
new file mode 100644
index 0000000..5785a01
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/README.en-US.md
@@ -0,0 +1,22 @@
+:: BASE_DOC ::
+
+## API
+### Switch Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+custom-value | Array | [true, false] | Typescript:`Array` | N
+disabled | Boolean | false | \- | N
+icon | Array | [] | Typescript:`string[]` | N
+label | Array | [] | Typescript:`string[]` | N
+loading | Boolean | false | \- | N
+size | String | medium | options:small/medium/large | N
+style | String | - | \- | N
+value | String / Number / Boolean | null | Typescript:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+default-value | String / Number / Boolean | undefined | uncontrolled property。Typescript:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+
+### Switch Events
+
+name | params | description
+-- | -- | --
+change | `(value: SwitchValue)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/README.md
new file mode 100644
index 0000000..baa96b2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/README.md
@@ -0,0 +1,59 @@
+---
+title: Switch 开关
+description: 用于控制某个功能的开启和关闭。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-switch": "tdesign-miniprogram/switch/switch"
+}
+```
+
+## 代码演示
+
+### 基础开关
+
+{{ base }}
+
+### 带描述开关
+
+{{ label }}
+
+### 自定义颜色
+
+{{ color }}
+
+### 开关状态
+
+{{ status }}
+
+### 尺寸
+
+{{ size }}
+
+## API
+### Switch Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+custom-value | Array | [true, false] | 用于自定义开关的值,[打开时的值,关闭时的值]。默认为 [true, false]。示例:[1, 0]、['open', 'close']。TS 类型:`Array` | N
+disabled | Boolean | false | 是否禁用组件 | N
+icon `v0.27.0` | Array | [] | 开关的图标;[打开时的图标,关闭时的图标]。TS 类型:`string[]` | N
+label `v0.27.0` | Array | [] | 开关的标签;[打开时的标签,关闭时的标签]。TS 类型:`string[]` | N
+loading `v0.27.0` | Boolean | false | 是否处于加载中状态 | N
+size `v0.27.0` | String | medium | 开关尺寸。可选项:small/medium/large | N
+value | String / Number / Boolean | null | 开关值。TS 类型:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+default-value | String / Number / Boolean | undefined | 开关值。非受控属性。TS 类型:`SwitchValue` `type SwitchValue = string \| number \| boolean`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/switch/type.ts) | N
+
+### Switch Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: SwitchValue)` | 数据发生变化时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/props.d.ts
new file mode 100644
index 0000000..489f18a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/props.d.ts
@@ -0,0 +1,3 @@
+import { TdSwitchProps } from './type';
+declare const props: TdSwitchProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/props.js
new file mode 100644
index 0000000..eb61ffb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/props.js
@@ -0,0 +1,35 @@
+const props = {
+ customValue: {
+ type: Array,
+ value: [true, false],
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: Array,
+ value: [],
+ },
+ label: {
+ type: Array,
+ value: [],
+ },
+ loading: {
+ type: Boolean,
+ value: false,
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.d.ts
new file mode 100644
index 0000000..6e43804
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.d.ts
@@ -0,0 +1,21 @@
+import { SuperComponent } from '../common/src/index';
+export default class Switch extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ properties: import("./type").TdSwitchProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ checked: boolean;
+ };
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(val: any): void;
+ };
+ methods: {
+ handleSwitch(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.js b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.js
new file mode 100644
index 0000000..6702e2a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.js
@@ -0,0 +1,53 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-switch`;
+let Switch = class Switch extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = ['t-class', 't-class-label', 't-class-body', 't-class-dot'];
+ this.behaviors = ['wx://form-field'];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ checked: false,
+ };
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(val) {
+ const [activeValue] = this.data.customValue;
+ this.setData({
+ checked: val === activeValue,
+ });
+ },
+ };
+ this.methods = {
+ handleSwitch() {
+ const { disabled, value, customValue } = this.data;
+ const [activeValue, inactiveValue] = customValue;
+ if (disabled)
+ return;
+ this._trigger('change', {
+ value: value === activeValue ? inactiveValue : activeValue,
+ });
+ },
+ };
+ }
+};
+Switch = __decorate([
+ wxComponent()
+], Switch);
+export default Switch;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.json b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.json
new file mode 100644
index 0000000..708bd1b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-loading": "../loading/loading"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.wxml
new file mode 100644
index 0000000..9aa2cd7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.wxml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ {{checked ? label[0] : label[1]}}
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.wxss
new file mode 100644
index 0000000..f69c959
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/switch.wxss
@@ -0,0 +1,161 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-switch {
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+}
+.t-switch__label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: nowrap;
+ font-size: var(--td-swtich-label-font-size, 28rpx);
+ color: var(--td-switch-label-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ overflow: hidden;
+}
+.t-switch__label--checked {
+ color: var(--td-switch-label-checked-color, var(--td-switch-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-switch__label--disabled {
+ color: var(--td-switch-unchecked-disabled-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-switch__label--checked.t-switch__label--disabled {
+ color: var(--td-switch-checked-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-switch__label--large {
+ font-size: var(--td-swtich-label-font-size, 32rpx);
+}
+.t-switch__label--small {
+ font-size: var(--td-swtich-label-font-size, 24rpx);
+}
+.t-switch__label:empty {
+ display: none;
+}
+.t-switch__icon {
+ font-size: var(--td-switch-icon-size, 40rpx);
+}
+.t-switch__icon--large {
+ font-size: var(--td-switch-icon-large-size, 48rpx);
+}
+.t-switch__icon--small {
+ font-size: var(--td-switch-icon-small-size, 32rpx);
+}
+.t-switch__loading {
+ color: var(--td-switch-label-checked-color, var(--td-switch-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9))));
+}
+.t-switch__body {
+ vertical-align: middle;
+ width: var(--td-switch-width, 90rpx);
+ height: var(--td-switch-height, 56rpx);
+ border-radius: var(--td-switch-radius, calc(var(--td-switch-height, 56rpx) / 2));
+ background-color: var(--td-switch-unchecked-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ position: relative;
+ transition: all 0.3s ease;
+ overflow: hidden;
+}
+.t-switch__body--checked {
+ background-color: var(--td-switch-checked-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-switch__body--disabled {
+ background-color: var(--td-switch-unchecked-disabled-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+}
+.t-switch__body--checked.t-switch__body--disabled {
+ background-color: var(--td-switch-checked-disabled-color, var(--td-brand-color-disabled, var(--td-primary-color-3, #b5c7ff)));
+}
+.t-switch__body--large {
+ width: var(--td-switch-large-width, 104rpx);
+ height: var(--td-switch-large-height, 64rpx);
+ border-radius: var(--td-switch-large-radius, calc(var(--td-switch-large-height, 64rpx) / 2));
+}
+.t-switch__body--small {
+ width: var(--td-switch-small-width, 78rpx);
+ height: var(--td-switch-small-height, 48rpx);
+ border-radius: var(--td-switch-small-radius, calc(var(--td-switch-small-height, 48rpx) / 2));
+}
+.t-switch__dot {
+ position: absolute;
+ left: var(--td-switch-dot-horizontal-margin, 6rpx);
+ top: 50%;
+ width: var(--td-switch-dot-size, 44rpx);
+ height: var(--td-switch-dot-size, 44rpx);
+ border-radius: 50%;
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ transition: all 0.3s;
+ transform: translateY(-50%);
+ box-shadow: var(--td-switch-dot-shadow, var(--td-shadow-1, 0 1px 10px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.12)));
+}
+.t-switch__dot:after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 200%;
+ height: 200%;
+ border: 1px solid var(--td-switch-dot-border-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ border-radius: 50%;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ box-sizing: border-box;
+}
+.t-switch__dot--large {
+ width: var(--td-switch-dot-large-size, 52rpx);
+ height: var(--td-switch-dot-large-size, 52rpx);
+}
+.t-switch__dot--small {
+ width: var(--td-switch-dot-small-size, 36rpx);
+ height: var(--td-switch-dot-small-size, 36rpx);
+}
+.t-switch__dot--checked {
+ left: calc(var(--td-switch-width, 90rpx) - var(--td-switch-dot-size, 44rpx) - var(--td-switch-dot-horizontal-margin, 6rpx));
+}
+.t-switch__dot--large.t-switch__dot--checked {
+ left: calc(var(--td-switch-large-width, 104rpx) - var(--td-switch-dot-large-size, 52rpx) - var(--td-switch-dot-horizontal-margin, 6rpx));
+}
+.t-switch__dot--small.t-switch__dot--checked {
+ left: calc(var(--td-switch-small-width, 78rpx) - var(--td-switch-dot-small-size, 36rpx) - var(--td-switch-dot-horizontal-margin, 6rpx));
+}
+.t-switch__dot--plain:not(.t-switch__dot--checked) {
+ width: var(--td-switch-dot-plain-size, 36rpx);
+ height: var(--td-switch-dot-plain-size, 36rpx);
+ left: var(--td-switch-dot-plain-horizontal-margin, 10rpx);
+}
+.t-switch__dot--large.t-switch__dot--plain:not(.t-switch__dot--checked) {
+ width: var(--td-switch-dot-plain-large-size, 44rpx);
+ height: var(--td-switch-dot-plain-large-size, 44rpx);
+}
+.t-switch__dot--small.t-switch__dot--plain:not(.t-switch__dot--checked) {
+ width: var(--td-switch-dot-plain-small-size, 28rpx);
+ height: var(--td-switch-dot-plain-small-size, 28rpx);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/type.d.ts
new file mode 100644
index 0000000..8ca8e81
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/type.d.ts
@@ -0,0 +1,39 @@
+export interface TdSwitchProps {
+ customValue?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ label?: {
+ type: ArrayConstructor;
+ value?: string[];
+ };
+ loading?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ size?: {
+ type: StringConstructor;
+ value?: 'small' | 'medium' | 'large';
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: SwitchValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: SwitchValue;
+ };
+}
+export declare type SwitchValue = string | number | boolean;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/switch/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/switch/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/props.d.ts
new file mode 100644
index 0000000..026ee8b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabBarItemProps } from './type';
+declare const props: TdTabBarItemProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/props.js
new file mode 100644
index 0000000..5af83e4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/props.js
@@ -0,0 +1,15 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ },
+ icon: {
+ type: null,
+ },
+ subTabBar: {
+ type: Array,
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.d.ts
new file mode 100644
index 0000000..4efd9f7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.d.ts
@@ -0,0 +1,37 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class TabBarItem extends SuperComponent {
+ externalClasses: string[];
+ parent: any;
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ isSpread: boolean;
+ isChecked: boolean;
+ hasChildren: boolean;
+ currentName: string;
+ split: boolean;
+ iconOnly: boolean;
+ theme: string;
+ crowded: boolean;
+ shape: string;
+ };
+ properties: import("./type").TdTabBarItemProps;
+ observers: {
+ subTabBar(value: Record[]): void;
+ icon(v: any): void;
+ };
+ lifetimes: {
+ attached(): Promise;
+ };
+ methods: {
+ showSpread(): void;
+ toggle(): void;
+ selectChild(event: any): void;
+ checkActive(value: any): void;
+ closeSpread(): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.js
new file mode 100644
index 0000000..87752d0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.js
@@ -0,0 +1,120 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getRect, calcIcon } from '../common/utils';
+const { prefix } = config;
+const classPrefix = `${prefix}-tab-bar-item`;
+let TabBarItem = class TabBarItem extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.parent = null;
+ this.relations = {
+ '../tab-bar/tab-bar': {
+ type: 'ancestor',
+ linked(parent) {
+ const { theme, split, shape } = parent.data;
+ this.setData({
+ theme,
+ split,
+ shape,
+ currentName: this.properties.value ? this.properties.value : parent.initName(),
+ });
+ parent.updateChildren();
+ },
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ classPrefix,
+ isSpread: false,
+ isChecked: false,
+ hasChildren: false,
+ currentName: '',
+ split: true,
+ iconOnly: false,
+ theme: '',
+ crowded: false,
+ shape: 'normal',
+ };
+ this.properties = props;
+ this.observers = {
+ subTabBar(value) {
+ this.setData({
+ hasChildren: value.length > 0,
+ });
+ },
+ icon(v) {
+ this.setData({
+ _icon: calcIcon(v),
+ });
+ },
+ };
+ this.lifetimes = {
+ attached() {
+ return __awaiter(this, void 0, void 0, function* () {
+ const res = yield getRect(this, `.${classPrefix}__text`);
+ this.setData({ iconOnly: res.height === 0 });
+ });
+ },
+ };
+ this.methods = {
+ showSpread() {
+ this.setData({
+ isSpread: true,
+ });
+ },
+ toggle() {
+ const { currentName, hasChildren, isSpread } = this.data;
+ if (hasChildren) {
+ this.setData({
+ isSpread: !isSpread,
+ });
+ }
+ this.$parent.updateValue(currentName);
+ this.$parent.changeOtherSpread(currentName);
+ },
+ selectChild(event) {
+ const { value } = event.target.dataset;
+ this.$parent.updateValue(value);
+ this.setData({
+ isSpread: false,
+ });
+ },
+ checkActive(value) {
+ const { currentName, subTabBar } = this.data;
+ const isChecked = (subTabBar === null || subTabBar === void 0 ? void 0 : subTabBar.some((item) => item.value === value)) || currentName === value;
+ this.setData({
+ isChecked,
+ });
+ },
+ closeSpread() {
+ this.setData({
+ isSpread: false,
+ });
+ },
+ };
+ }
+};
+TabBarItem = __decorate([
+ wxComponent()
+], TabBarItem);
+export default TabBarItem;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.json b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.json
new file mode 100644
index 0000000..69017ce
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.json
@@ -0,0 +1,7 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-badge": "../badge/badge"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.wxml
new file mode 100644
index 0000000..8854807
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.wxml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ child.label }}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.wxss
new file mode 100644
index 0000000..1d86356
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/tab-bar-item.wxss
@@ -0,0 +1,141 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tab-bar-item {
+ flex: 1;
+ height: var(--td-tab-bar-height, 80rpx);
+ box-sizing: border-box;
+ user-select: none;
+ position: relative;
+ margin: 16rpx 0;
+ background-color: var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ padding: 0 24rpx;
+}
+.t-tab-bar-item--text-only {
+ font-size: 32rpx;
+}
+.t-tab-bar-item--split:before {
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ border-left: 1px solid var(--td-tab-bar-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleX(0.5);
+ top: 16rpx;
+ bottom: 16rpx;
+}
+.t-tab-bar-item--crowded {
+ padding: 0 16rpx;
+}
+.t-tab-bar-item--round {
+ border-radius: 99px;
+}
+.t-tab-bar-item__content {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-radius: 16rpx;
+ color: var(--td-tab-bar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tab-bar-item__content--checked {
+ color: var(--td-tab-bar-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ font-weight: 600;
+}
+.t-tab-bar-item__content--tag {
+ border-radius: 99px;
+}
+.t-tab-bar-item__content--tag.t-tab-bar-item__content--checked {
+ background-color: var(--td-tab-bar-active-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tab-bar-item .t-badge-class {
+ transform: translate(50%, -10%) !important;
+}
+.t-tab-bar-item__text {
+ display: flex;
+ align-items: center;
+}
+.t-tab-bar-item__text--small {
+ font-size: 20rpx;
+ line-height: 32rpx;
+}
+.t-tab-bar-item__icon-menu {
+ margin-right: 8rpx;
+}
+.t-tab-bar-item__spread {
+ position: absolute;
+ top: 0;
+ left: 7%;
+ width: 86%;
+ background-color: var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ transform: translate3d(0, calc(-100% - 32rpx), 0);
+ z-index: 1;
+ border-radius: 12rpx;
+ color: var(--td-tab-bar-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ box-shadow: var(--td-tab-bar-spread-shadow, var(--td-shadow-3, 0 6px 30px 5px rgba(0, 0, 0, 0.05), 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 8px 10px -5px rgba(0, 0, 0, 0.08)));
+}
+.t-tab-bar-item__spread::before {
+ display: block;
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ width: 0;
+ height: 0;
+ border: 16rpx solid transparent;
+ border-top: 16rpx solid var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ transform: translate3d(-50%, 32rpx, 0);
+}
+.t-tab-bar-item__spread-item {
+ width: 100%;
+ height: 96rpx;
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ position: relative;
+ flex-direction: column;
+}
+.t-tab-bar-item__spread-item--active {
+ background-color: var(--td-tab-bar-hover-bg-color, rgba(0, 0, 0, 0.05));
+}
+.t-tab-bar-item__spread-item-split {
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ background-color: var(--td-tab-bar-spread-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ width: 80%;
+ height: 1px;
+ transform: translateY(0.5);
+}
+.t-tab-bar-item__spread-item-text {
+ padding-top: 24rpx;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/type.d.ts
new file mode 100644
index 0000000..aa63763
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/type.d.ts
@@ -0,0 +1,27 @@
+import { BadgeProps } from '../badge/index';
+export interface TdTabBarItemProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: BadgeProps;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ icon?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ subTabBar?: {
+ type: ArrayConstructor;
+ value?: SubTabBarItem[];
+ };
+ value?: {
+ type: null;
+ value?: string | number;
+ };
+}
+export interface SubTabBarItem {
+ value: string;
+ label: string;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar-item/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/README.en-US.md
new file mode 100644
index 0000000..f97ee85
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/README.en-US.md
@@ -0,0 +1,31 @@
+:: BASE_DOC ::
+
+## API
+### TabBar Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+bordered | Boolean | true | \- | N
+external-classes | Array | - | `['t-class']` | N
+fixed | Boolean | true | \- | N
+safe-area-inset-bottom | Boolean | true | \- | N
+shape | String | normal | options:normal/round | N
+split | Boolean | true | \- | N
+theme | String | normal | options:normal/tag | N
+value | String / Number / Array | null | Typescript:`string \| number \| Array` | N
+default-value | String / Number / Array | undefined | uncontrolled property。Typescript:`string \| number \| Array` | N
+
+### TabBar Events
+
+name | params | description
+-- | -- | --
+change | `(value: string \| number)` | \-
+
+### TabBarItem Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | - | Typescript:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+icon | String / Slot | - | \- | N
+sub-tab-bar | Array | - | Typescript:`SubTabBarItem[] ` `interface SubTabBarItem { value: string; label: string }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+value | String / Number | - | \- | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/README.md
new file mode 100644
index 0000000..69aa9f3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/README.md
@@ -0,0 +1,81 @@
+---
+title: TabBar 标签栏
+description: 用于在不同功能模块之间进行快速切换,位于页面底部。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tab-bar": "tdesign-miniprogram/tab-bar/tab-bar",
+ "t-tab-bar-item": "tdesign-miniprogram/tab-bar-item/tab-bar-item"
+}
+```
+
+## 代码演示
+
+### 组件类型
+#### 纯文本标签栏
+
+{{ text-only }}
+
+#### 图标加文字标签栏
+
+{{ base }}
+
+#### 纯图标标签栏
+
+{{ text-only }}
+
+#### 双层级纯文本标签栏
+
+{{ sub }}
+
+### 组件样式
+
+#### 弱选中标签栏
+
+{{ badge }}
+
+#### 悬浮胶囊标签栏
+
+{{ round }}
+
+#### 自定义主题
+
+{{ custom }}
+
+## API
+### TabBar Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+bordered | Boolean | true | 是否显示外边框 | N
+external-classes | Array | - | 组件类名,用于设置外层元素类名。`['t-class']` | N
+fixed | Boolean | true | 是否固定在底部 | N
+safe-area-inset-bottom | Boolean | true | 是否为 iPhoneX 留出底部安全距离 | N
+shape | String | normal | 标签栏的形状。可选项:normal/round | N
+split | Boolean | true | 是否需要分割线 | N
+theme | String | normal | 选项风格。可选项:normal/tag | N
+value | String / Number / Array | null | 当前选中标签的索引。TS 类型:`string \| number \| Array` | N
+default-value | String / Number / Array | undefined | 当前选中标签的索引。非受控属性。TS 类型:`string \| number \| Array` | N
+
+### TabBar Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: string \| number)` | 选中标签切换时触发
+
+### TabBarItem Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | - | 图标右上角提示信息。TS 类型:`BadgeProps`,[Badge API Documents](./badge?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+icon | String / Object / Slot | - | 图标名称。传入对象时透传至 Icon 组件 | N
+sub-tab-bar | Array | - | 二级菜单。TS 类型:`SubTabBarItem[] ` `interface SubTabBarItem { value: string; label: string }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-bar-item/type.ts) | N
+value | String / Number | - | 标识符 | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/props.d.ts
new file mode 100644
index 0000000..338c35e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabBarProps } from './type';
+declare const props: TdTabBarProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/props.js
new file mode 100644
index 0000000..85d7f7f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/props.js
@@ -0,0 +1,38 @@
+const props = {
+ bordered: {
+ type: Boolean,
+ value: true,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ fixed: {
+ type: Boolean,
+ value: true,
+ },
+ safeAreaInsetBottom: {
+ type: Boolean,
+ value: true,
+ },
+ shape: {
+ type: String,
+ value: 'normal',
+ },
+ split: {
+ type: Boolean,
+ value: true,
+ },
+ theme: {
+ type: String,
+ value: 'normal',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ value: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.d.ts
new file mode 100644
index 0000000..13e2da6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class Tabbar extends SuperComponent {
+ relations: RelationsOptions;
+ externalClasses: string[];
+ backupValue: number;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ };
+ properties: import("./type").TdTabBarProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ showChildren(): void;
+ updateChildren(): void;
+ updateValue(value: any): void;
+ changeOtherSpread(value: any): void;
+ initName(): any;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.js
new file mode 100644
index 0000000..0d449e2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.js
@@ -0,0 +1,78 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const classPrefix = `${prefix}-tab-bar`;
+let Tabbar = class Tabbar extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.relations = {
+ '../tab-bar-item/tab-bar-item': {
+ type: 'descendant',
+ },
+ };
+ this.externalClasses = [`${prefix}-class`];
+ this.backupValue = -1;
+ this.data = {
+ prefix,
+ classPrefix,
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value() {
+ this.updateChildren();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.showChildren();
+ },
+ };
+ this.methods = {
+ showChildren() {
+ const { value } = this.data;
+ this.$children.forEach((child) => {
+ if (child.properties.value === value) {
+ child.showSpread();
+ child.setData({ crowded: this.$children > 3 });
+ }
+ });
+ },
+ updateChildren() {
+ const { value } = this.data;
+ this.$children.forEach((child) => {
+ child.checkActive(value);
+ });
+ },
+ updateValue(value) {
+ this._trigger('change', { value });
+ },
+ changeOtherSpread(value) {
+ this.$children.forEach((child) => {
+ if (child.properties.value !== value) {
+ child.closeSpread();
+ }
+ });
+ },
+ initName() {
+ return (this.backupValue += 1);
+ },
+ };
+ }
+};
+Tabbar = __decorate([
+ wxComponent()
+], Tabbar);
+export default Tabbar;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.json b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.wxml
new file mode 100644
index 0000000..64e2043
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.wxml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.wxss
new file mode 100644
index 0000000..4c44250
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/tab-bar.wxss
@@ -0,0 +1,72 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tab-bar {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+ position: relative;
+ font-size: 16px;
+ background-color: var(--td-tab-bar-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+ box-sizing: border-box;
+}
+.t-tab-bar--normal.t-tab-bar--border::before {
+ z-index: 1;
+ position: absolute;
+ box-sizing: border-box;
+ content: ' ';
+ pointer-events: none;
+ right: 0;
+ left: 0;
+ top: 0;
+ border-top: 1px solid var(--td-tab-bar-border-color, var(--td-border-color, var(--td-gray-color-3, #e7e7e7)));
+ transform: scaleY(0.5);
+}
+.t-tab-bar--fixed {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+.t-tab-bar--normal.t-tab-bar--safe {
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+}
+.t-tab-bar--round {
+ margin-left: 32rpx;
+ margin-right: 32rpx;
+ border-radius: 999px;
+ box-shadow: var(--td-tab-bar-round-shadow, var(--td-shadow-3, 0 6px 30px 5px rgba(0, 0, 0, 0.05), 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 8px 10px -5px rgba(0, 0, 0, 0.08)));
+}
+.t-tab-bar--fixed.t-tab-bar--round.t-tab-bar--safe {
+ bottom: constant(safe-area-inset-bottom);
+ bottom: env(safe-area-inset-bottom);
+}
+.t-tab-bar--fixed.t-tab-bar--round.t-tab-bar--safe {
+ bottom: constant(safe-area-inset-bottom);
+ bottom: env(safe-area-inset-bottom);
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/type.d.ts
new file mode 100644
index 0000000..39e05ee
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/type.d.ts
@@ -0,0 +1,42 @@
+export interface TdTabBarProps {
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ safeAreaInsetBottom?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'normal' | 'round';
+ };
+ split?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'normal' | 'tag';
+ };
+ value?: {
+ type: null;
+ value?: string | number | Array;
+ };
+ defaultValue?: {
+ type: null;
+ value?: string | number | Array;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-bar/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/props.d.ts
new file mode 100644
index 0000000..9329be0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabPanelProps } from './type';
+declare const props: TdTabPanelProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/props.js
new file mode 100644
index 0000000..b9e29e0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/props.js
@@ -0,0 +1,28 @@
+const props = {
+ badgeProps: {
+ type: Object,
+ value: null,
+ },
+ destroyOnHide: {
+ type: Boolean,
+ value: true,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ icon: {
+ type: null,
+ },
+ label: {
+ type: String,
+ value: '',
+ },
+ panel: {
+ type: String,
+ },
+ value: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.d.ts
new file mode 100644
index 0000000..789414c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.d.ts
@@ -0,0 +1,23 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+export default class TabPanel extends SuperComponent {
+ externalClasses: string[];
+ relations: RelationsOptions;
+ options: {
+ multipleSlots: boolean;
+ };
+ properties: import("./type").TdTabPanelProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ active: boolean;
+ hide: boolean;
+ id: string;
+ };
+ setId(id: any): void;
+ observers: {
+ 'label, badgeProps, disabled, icon, panel, value'(): void;
+ };
+ getComputedName(): string;
+ update(): void;
+ render(active: Boolean, parent: any): void;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.js
new file mode 100644
index 0000000..11bedd8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.js
@@ -0,0 +1,61 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-tab-panel`;
+let TabPanel = class TabPanel extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.relations = {
+ '../tabs/tabs': {
+ type: 'ancestor',
+ },
+ };
+ this.options = {
+ multipleSlots: true,
+ };
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ active: false,
+ hide: true,
+ id: '',
+ };
+ this.observers = {
+ 'label, badgeProps, disabled, icon, panel, value'() {
+ this.update();
+ },
+ };
+ }
+ setId(id) {
+ this.setData({ id });
+ }
+ getComputedName() {
+ if (this.properties.value != null) {
+ return `${this.properties.value}`;
+ }
+ return `${this.index}`;
+ }
+ update() {
+ var _a;
+ (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.updateTabs();
+ }
+ render(active, parent) {
+ this.setData({
+ active,
+ hide: !parent.data.animation && !active,
+ });
+ }
+};
+TabPanel = __decorate([
+ wxComponent()
+], TabPanel);
+export default TabPanel;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.json b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.wxml
new file mode 100644
index 0000000..7bcb902
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.wxml
@@ -0,0 +1,12 @@
+
+
+
+ {{panel}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.wxss
new file mode 100644
index 0000000..65ceb3e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/tab-panel.wxss
@@ -0,0 +1,33 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tab-panel {
+ flex-shrink: 0;
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/type.d.ts
new file mode 100644
index 0000000..cc98410
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/type.d.ts
@@ -0,0 +1,35 @@
+import { TabValue } from '../tabs/index';
+export interface TdTabPanelProps {
+ badgeProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ destroyOnHide?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ panel?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ value?: {
+ type: null;
+ value?: TabValue;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tab-panel/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/README.en-US.md
new file mode 100644
index 0000000..32aa3a4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/README.en-US.md
@@ -0,0 +1,37 @@
+:: BASE_DOC ::
+
+## API
+### Tabs Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+animation | Object | - | Typescript:`TabAnimation` `type TabAnimation = { duration: number } & Record`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+external-classes | Array | - | `['t-class', 't-class-item', 't-class-active', 't-class-track']` | N
+show-bottom-line | Boolean | true | \- | N
+space-evenly | Boolean | true | \- | N
+sticky | Boolean | false | \- | N
+sticky-props | Object | - | Typescript:`StickyProps`,[Sticky API Documents](./sticky?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+swipeable | Boolean | true | \- | N
+theme | String | line | options:line/tag/card | N
+value | String / Number | - | Typescript:`TabValue` `type TabValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+default-value | String / Number | undefined | uncontrolled property。Typescript:`TabValue` `type TabValue = string \| number`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+
+### Tabs Events
+
+name | params | description
+-- | -- | --
+change | `(value: TabValue, label: string)` | \-
+click | `(value: TabValue, label: string)` | \-
+scroll | `(scrollTop: number, isFixed: boolean)` | \-
+
+### TabPanel Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+badge-props | Object | null | \- | N
+destroy-on-hide | Boolean | true | \- | N
+disabled | Boolean | false | \- | N
+icon | String / Object | - | `1.0.0-rc.1` | N
+label | String | - | \- | N
+panel | String / Slot | - | \- | N
+value | String / Number | - | Typescript:`TabValue`,[Tabs API Documents](./tabs?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-panel/type.ts) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/README.md
new file mode 100644
index 0000000..6176aea
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/README.md
@@ -0,0 +1,144 @@
+---
+title: Tabs 选项卡
+description: 用于内容分类后的展示切换。
+spline: navigation
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tabs": "tdesign-miniprogram/tabs/tabs",
+ "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
+}
+```
+
+## 代码演示
+
+### 基础选项卡
+
+{{ base }}
+
+### 等距选项卡
+
+{{ scroll }}
+
+### 带图标选项卡
+
+{{ with-icon }}
+
+### 带徽章选项卡
+
+{{ with-badge }}
+
+### 带内容区选项卡
+
+{{ with-content }}
+
+### 选项卡状态
+
+{{ status }}
+
+### 选项卡尺寸
+
+{{ size }}
+
+### 选项卡样式
+
+使用 theme 属性可以变换风格,支持 line = 线条(默认);tag = 标签;card = 卡片
+
+{{ theme }}
+
+
+
+
+
+
+### 受控用法
+
+```html
+
+ 标签一内容
+ 标签二内容
+
+```
+
+```js
+Page({
+ data: {
+ value: '0',
+ },
+ onTabsChange(e) {
+ this.setData({ value: e.detail.value })
+ },
+});
+```
+
+### 与 Popup 使用
+
+```html
+
+
+ 标签一内容
+ 标签二内容
+ 标签三内容
+
+
+```
+
+```js
+Page({
+ data: {
+ visible: false
+ },
+ showPopup() {
+ this.setData({
+ visible: true
+ }, () => {
+ const tabs = this.selectComponent('tabs');
+
+ tabs.setTrack(); // 这一步很重要,因为小程序的无法正确执行生命周期,所以需要手动设置下 tabs 的滑块
+ })
+ }
+})
+```
+
+## API
+### Tabs Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+animation | Object | - | 动画效果设置。其中 duration 表示动画时长。(单位秒)TS 类型:`TabAnimation` `type TabAnimation = { duration: number } & Record`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+external-classes | Array | - | 组件类名,分别用于设置 组件外层元素、选项卡单项、选项卡激活态、滚动条样式类名 等类名。`['t-class', 't-class-item', 't-class-active', 't-class-track']` | N
+show-bottom-line | Boolean | true | 是否展示底部激活线条 | N
+space-evenly | Boolean | true | 选项卡头部空间是否均分 | N
+sticky | Boolean | false | 是否开启粘性布局 | N
+sticky-props | Object | - | 透传至 Sticky 组件。TS 类型:`StickyProps`,[Sticky API Documents](./sticky?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+swipeable | Boolean | true | 是否可以滑动切换 | N
+theme | String | line | 标签的样式。可选项:line/tag/card | N
+value | String / Number | - | 激活的选项卡值。TS 类型:`TabValue` `type TabValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+default-value | String / Number | undefined | 激活的选项卡值。非受控属性。TS 类型:`TabValue` `type TabValue = string \| number`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tabs/type.ts) | N
+
+### Tabs Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: TabValue, label: string)` | 激活的选项卡发生变化时触发
+click | `(value: TabValue, label: string)` | 点击选项卡时触发
+scroll | `(scrollTop: number, isFixed: boolean)` | 页面滚动时触发
+
+### TabPanel Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+badge-props | Object | null | 透传至 Badge 组件 | N
+destroy-on-hide | Boolean | true | 【实现有误,暂不支持】选项卡内容隐藏时是否销毁 | N
+disabled | Boolean | false | 是否禁用当前选项卡 | N
+icon | String / Object | - | `1.0.0-rc.1`。图标,传对象则透传至 Icon | N
+label | String | - | 选项卡名称 | N
+panel | String / Slot | - | 用于自定义选项卡面板内容 | N
+value | String / Number | - | 选项卡的值,唯一标识。TS 类型:`TabValue`,[Tabs API Documents](./tabs?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tab-panel/type.ts) | N
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/index.d.ts
new file mode 100644
index 0000000..2f91d15
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/index.d.ts
@@ -0,0 +1,3 @@
+export * from './tabs';
+export * from './type';
+export * from './props';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/index.js
new file mode 100644
index 0000000..2f91d15
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/index.js
@@ -0,0 +1,3 @@
+export * from './tabs';
+export * from './type';
+export * from './props';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/props.d.ts
new file mode 100644
index 0000000..215fa49
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTabsProps } from './type';
+declare const props: TdTabsProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/props.js
new file mode 100644
index 0000000..9d515f7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/props.js
@@ -0,0 +1,39 @@
+const props = {
+ animation: {
+ type: Object,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ showBottomLine: {
+ type: Boolean,
+ value: true,
+ },
+ spaceEvenly: {
+ type: Boolean,
+ value: true,
+ },
+ sticky: {
+ type: Boolean,
+ value: false,
+ },
+ stickyProps: {
+ type: Object,
+ },
+ swipeable: {
+ type: Boolean,
+ value: true,
+ },
+ theme: {
+ type: String,
+ value: 'line',
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.d.ts
new file mode 100644
index 0000000..65f61ae
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.d.ts
@@ -0,0 +1,50 @@
+import { SuperComponent, RelationsOptions } from '../common/src/index';
+import { TdTabsProps } from './type';
+export interface TabsProps extends TdTabsProps {
+}
+export default class Tabs extends SuperComponent {
+ behaviors: string[];
+ externalClasses: string[];
+ relations: RelationsOptions;
+ properties: TdTabsProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(name: any): void;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ tabs: any[];
+ currentIndex: number;
+ trackStyle: string;
+ isScrollX: boolean;
+ direction: string;
+ offset: number;
+ tabID: string;
+ placement: string;
+ };
+ lifetimes: {
+ created(): void;
+ attached(): void;
+ };
+ initChildId(): void;
+ methods: {
+ updateTabs(cb: any): void;
+ setCurrentIndexByName(name: any): void;
+ setCurrentIndex(index: number): void;
+ getCurrentName(): any;
+ calcScrollOffset(containerWidth: number, targetLeft: number, targetWidth: number, offset: number): number;
+ getTrackSize(): Promise;
+ setTrack(): Promise;
+ onTabTap(event: any): void;
+ onTouchStart(event: any): void;
+ onTouchMove(event: any): void;
+ onTouchEnd(): void;
+ onTouchScroll(event: WechatMiniprogram.CustomEvent): void;
+ changeIndex(index: any): void;
+ getAvailableTabIndex(deltaX: number): any;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.js
new file mode 100644
index 0000000..76f51c9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.js
@@ -0,0 +1,260 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import touch from '../mixins/touch';
+import { getRect, uniqueFactory } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-tabs`;
+const getUniqueID = uniqueFactory('tabs');
+let Tabs = class Tabs extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.behaviors = [touch];
+ this.externalClasses = [`${prefix}-class`, `${prefix}-class-item`, `${prefix}-class-active`, `${prefix}-class-track`];
+ this.relations = {
+ '../tab-panel/tab-panel': {
+ type: 'descendant',
+ linked(target) {
+ this.children.push(target);
+ this.initChildId();
+ target.index = this.children.length - 1;
+ this.updateTabs();
+ },
+ unlinked(target) {
+ this.children = this.children.filter((item) => item.index !== target.index);
+ this.updateTabs(() => this.setTrack());
+ this.initChildId();
+ },
+ },
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value(name) {
+ if (name !== this.getCurrentName()) {
+ this.setCurrentIndexByName(name);
+ }
+ },
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ tabs: [],
+ currentIndex: -1,
+ trackStyle: '',
+ isScrollX: true,
+ direction: 'X',
+ offset: 0,
+ tabID: '',
+ placement: 'top',
+ };
+ this.lifetimes = {
+ created() {
+ this.children = this.children || [];
+ },
+ attached() {
+ wx.nextTick(() => {
+ this.setTrack();
+ });
+ getRect(this, `.${name}`).then((rect) => {
+ this.containerWidth = rect.width;
+ });
+ this.setData({
+ tabID: getUniqueID(),
+ });
+ },
+ };
+ this.methods = {
+ updateTabs(cb) {
+ const { children } = this;
+ const tabs = children.map((child) => child.data);
+ tabs.forEach((item) => {
+ if (typeof item.icon === 'string') {
+ item.icon = { name: item.icon };
+ }
+ });
+ this.setData({ tabs }, cb);
+ this.setCurrentIndexByName(this.properties.value);
+ },
+ setCurrentIndexByName(name) {
+ const { children } = this;
+ const index = children.findIndex((child) => child.getComputedName() === `${name}`);
+ if (index > -1) {
+ this.setCurrentIndex(index);
+ }
+ },
+ setCurrentIndex(index) {
+ if (index <= -1 || index >= this.children.length)
+ return;
+ this.children.forEach((child, idx) => {
+ const isActive = index === idx;
+ if (isActive !== child.data.active) {
+ child.render(isActive, this);
+ }
+ });
+ if (this.data.currentIndex === index)
+ return;
+ this.setData({
+ currentIndex: index,
+ });
+ this.setTrack();
+ },
+ getCurrentName() {
+ if (this.children) {
+ const activeTab = this.children[this.data.currentIndex];
+ if (activeTab) {
+ return activeTab.getComputedName();
+ }
+ }
+ },
+ calcScrollOffset(containerWidth, targetLeft, targetWidth, offset) {
+ return offset + targetLeft - (1 / 2) * containerWidth + targetWidth / 2;
+ },
+ getTrackSize() {
+ return new Promise((resolve, reject) => {
+ if (this.trackWidth) {
+ resolve(this.trackWidth);
+ return;
+ }
+ getRect(this, `.${prefix}-tabs__track`)
+ .then((res) => {
+ if (res) {
+ this.trackWidth = res.width;
+ resolve(this.trackWidth);
+ }
+ })
+ .catch(reject);
+ });
+ },
+ setTrack() {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (!this.properties.showBottomLine)
+ return;
+ const { children } = this;
+ if (!children)
+ return;
+ const { currentIndex, isScrollX, direction } = this.data;
+ if (currentIndex <= -1)
+ return;
+ try {
+ const res = yield getRect(this, `.${prefix}-tabs__item`, true);
+ const rect = res[currentIndex];
+ if (!rect)
+ return;
+ let count = 0;
+ let distance = 0;
+ let totalSize = 0;
+ res.forEach((item) => {
+ if (count < currentIndex) {
+ distance += isScrollX ? item.width : item.height;
+ count += 1;
+ }
+ totalSize += isScrollX ? item.width : item.height;
+ });
+ if (this.containerWidth) {
+ const offset = this.calcScrollOffset(this.containerWidth, rect.left, rect.width, this.data.offset);
+ const maxOffset = totalSize - this.containerWidth;
+ this.setData({
+ offset: Math.min(Math.max(offset, 0), maxOffset),
+ });
+ }
+ if (isScrollX && this.data.theme === 'line') {
+ const trackLineWidth = yield this.getTrackSize();
+ distance += (rect.width - trackLineWidth) / 2;
+ }
+ let trackStyle = `-webkit-transform: translate${direction}(${distance}px);
+ transform: translate${direction}(${distance}px);
+ `;
+ if (!isScrollX) {
+ trackStyle += `height: ${rect.height}px;`;
+ }
+ this.setData({
+ trackStyle,
+ });
+ }
+ catch (err) {
+ this.triggerEvent('error', err);
+ }
+ });
+ },
+ onTabTap(event) {
+ const { index } = event.currentTarget.dataset;
+ this.changeIndex(index);
+ },
+ onTouchStart(event) {
+ if (!this.properties.swipeable)
+ return;
+ this.touchStart(event);
+ },
+ onTouchMove(event) {
+ if (!this.properties.swipeable)
+ return;
+ this.touchMove(event);
+ },
+ onTouchEnd() {
+ if (!this.properties.swipeable)
+ return;
+ const { direction, deltaX, offsetX } = this;
+ const minSwipeDistance = 50;
+ if (direction === 'horizontal' && offsetX >= minSwipeDistance) {
+ const index = this.getAvailableTabIndex(deltaX);
+ if (index !== -1) {
+ this.changeIndex(index);
+ }
+ }
+ },
+ onTouchScroll(event) {
+ this._trigger('scroll', event.detail);
+ },
+ changeIndex(index) {
+ const currentTab = this.data.tabs[index];
+ const { value, label } = currentTab;
+ if (!(currentTab === null || currentTab === void 0 ? void 0 : currentTab.disabled) && index !== this.data.currentIndex) {
+ this._trigger('change', { value, label });
+ }
+ this._trigger('click', { value, label });
+ },
+ getAvailableTabIndex(deltaX) {
+ const step = deltaX > 0 ? -1 : 1;
+ const { currentIndex, tabs } = this.data;
+ const len = tabs.length;
+ for (let i = step; currentIndex + step >= 0 && currentIndex + step < len; i += step) {
+ const newIndex = currentIndex + i;
+ if (newIndex >= 0 && newIndex < len && tabs[newIndex] && !tabs[newIndex].disabled) {
+ return newIndex;
+ }
+ }
+ return -1;
+ },
+ };
+ }
+ initChildId() {
+ this.children.forEach((item, index) => {
+ item.setId(`${this.data.tabID}_panel_${index}`);
+ });
+ }
+};
+Tabs = __decorate([
+ wxComponent()
+], Tabs);
+export default Tabs;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.json b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.json
new file mode 100644
index 0000000..0570f9a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-sticky": "../sticky/sticky",
+ "t-badge": "../badge/badge",
+ "t-icon": "../icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxml
new file mode 100644
index 0000000..33479e2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxs
new file mode 100644
index 0000000..cb51149
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxs
@@ -0,0 +1,20 @@
+/* eslint-disable */
+
+function animate(options) {
+ var result = [];
+
+ if (options.duration) {
+ result.push('transition-duration: ' + options.duration + 's');
+ result.push(
+ options.direction === 'Y'
+ ? ';transform: translate3d( 0,' + -100 * options.currentIndex + '%, 0)'
+ : ';transform: translate3d( ' + -100 * options.currentIndex + '%,0, 0)',
+ );
+ }
+
+ return result.join(';');
+}
+
+module.exports = {
+ animate: animate,
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxss
new file mode 100644
index 0000000..61458e2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/tabs.wxss
@@ -0,0 +1,217 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tabs {
+ position: relative;
+ font-size: var(--tab-font-size, 28rpx);
+ background: var(--td-tab-nav-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tabs__wrapper {
+ display: flex;
+ overflow: hidden;
+ background: var(--td-tab-nav-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tabs__wrapper--card {
+ background: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+ --td-tab-border-color: transparent;
+}
+.t-tabs__item {
+ position: relative;
+ display: flex;
+ flex: none;
+ align-items: center;
+ justify-content: center;
+ font-weight: 400;
+ color: var(--td-tab-item-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ padding: 0 32rpx;
+ box-sizing: border-box;
+ white-space: nowrap;
+ overflow: hidden;
+}
+.t-tabs__item--active {
+ font-weight: 600;
+ color: var(--td-tab-item-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tabs__item--disabled {
+ color: var(--td-tab-item-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
+.t-tabs__item--evenly {
+ flex: 1;
+}
+.t-tabs__item--top,
+.t-tabs__item--bottom {
+ height: var(--td-tab-item-height, 96rpx);
+}
+.t-tabs__item-inner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-tabs__item-inner--tag {
+ width: 100%;
+ text-align: center;
+ padding: 0 32rpx;
+ line-height: var(--td-tab-item-tag-height, 64rpx);
+ border-radius: calc(var(--td-tab-item-tag-height, 64rpx) / 2);
+ background-color: var(--td-tab-item-tag-bg, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tabs__item-inner--active.t-tabs__item-inner--tag {
+ background-color: var(--td-tab-item-tag-active-bg, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tabs__item--tag:not(.t-tabs__item--evenly) {
+ padding: 0 8rpx;
+}
+.t-tabs__item--tag:not(.t-tabs__item--evenly):first-child {
+ margin-left: 16rpx;
+}
+.t-tabs__item--tag:not(.t-tabs__item--evenly):last-child {
+ padding-right: 24rpx;
+}
+.t-tabs__item--tag {
+ padding: 0 16rpx;
+}
+.t-tabs__item--card.t-tabs__item--active {
+ background-color: var(--td-bg-color-container, var(--td-font-white-1, #ffffff));
+ border-radius: 18rpx 18rpx 0 0;
+}
+.t-tabs__item--card.t-tabs__item--active:first-child {
+ border-top-left-radius: 0;
+}
+.t-tabs__item--card.t-tabs__item--active:last-child {
+ border-top-right-radius: 0;
+}
+.t-tabs__item--card.t-tabs__item--pre {
+ border-bottom-right-radius: 18rpx;
+}
+.t-tabs__item-prefix,
+.t-tabs__item-suffix {
+ position: absolute;
+ bottom: 0;
+ width: 36rpx;
+ height: 36rpx;
+ background: #fff;
+}
+.t-tabs__item-prefix::after,
+.t-tabs__item-suffix::after {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 100%;
+ background-color: var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3));
+}
+.t-tabs__item-prefix {
+ right: 0;
+}
+.t-tabs__item-prefix::after {
+ border-bottom-right-radius: 18rpx;
+}
+.t-tabs__item-suffix {
+ left: 0;
+}
+.t-tabs__item-suffix::after {
+ border-bottom-left-radius: 18rpx;
+}
+.t-tabs__icon {
+ font-size: var(--td-tab-icon-size, 36rpx);
+ margin-right: 4rpx;
+}
+.t-tabs__content {
+ overflow: hidden;
+}
+.t-tabs__nav {
+ position: relative;
+ user-select: none;
+ width: 100%;
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+}
+.t-tabs__track {
+ position: absolute;
+ font-weight: 600;
+ z-index: 1;
+ transition-duration: 0.3s;
+ background-color: var(--td-tab-track-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tabs__track--top,
+.t-tabs__track--bottom {
+ left: 0;
+ bottom: 1rpx;
+ width: var(--td-tab-track-width, 32rpx);
+ height: var(--td-tab-track-thickness, 6rpx);
+ border-radius: var(--td-tab-track-radius, 8rpx);
+}
+.t-tabs__scroll::-webkit-scrollbar {
+ display: none;
+}
+.t-tabs__scroll--top,
+.t-tabs__scroll--bottom {
+ height: var(--td-tab-item-height, 96rpx);
+ position: relative;
+}
+.t-tabs__scroll--top {
+ position: relative;
+}
+.t-tabs__scroll--top::after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: unset;
+ bottom: 0;
+ left: unset;
+ right: unset;
+ background-color: var(--td-tab-border-color, var(--td-component-stroke, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-tabs__scroll--top::after {
+ height: 1px;
+ left: 0;
+ right: 0;
+ transform: scaleY(0.5);
+}
+.t-tabs__content-inner {
+ display: block;
+}
+.t-tabs--top,
+.t-tabs--bottom {
+ flex-wrap: wrap;
+}
+.t-tabs--top .t-tabs__content,
+.t-tabs--bottom .t-tabs__content {
+ width: 100%;
+}
+.t-tabs--top .t-tabs__content--animated .t-tabs__content-inner,
+.t-tabs--bottom .t-tabs__content--animated .t-tabs__content-inner {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ will-change: left;
+ transition-property: transform;
+}
+.t-tabs--bottom {
+ flex-direction: column-reverse;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/type.d.ts
new file mode 100644
index 0000000..d3343bb
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/type.d.ts
@@ -0,0 +1,51 @@
+import { StickyProps } from '../sticky/index';
+export interface TdTabsProps {
+ animation?: {
+ type: ObjectConstructor;
+ value?: TabAnimation;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-item', 't-class-active', 't-class-track'];
+ };
+ showBottomLine?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ spaceEvenly?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ sticky?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ stickyProps?: {
+ type: ObjectConstructor;
+ value?: StickyProps;
+ };
+ swipeable?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'line' | 'tag' | 'card';
+ };
+ value?: {
+ type: null;
+ value?: TabValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: TabValue;
+ };
+}
+export declare type TabAnimation = {
+ duration: number;
+} & Record;
+export declare type TabValue = string | number;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tabs/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/README.en-US.md
new file mode 100644
index 0000000..99fa354
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/README.en-US.md
@@ -0,0 +1,45 @@
+:: BASE_DOC ::
+
+## API
+### Tag Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+closable | Boolean | false | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class']` | N
+icon | String / Object / Slot | - | \- | N
+max-width | String / Number | - | \- | N
+shape | String | square | options:square/round/mark | N
+size | String | medium | options:small/medium/large/extra-large。Typescript:`SizeEnum` | N
+theme | String | default | options:default/primary/warning/danger/success | N
+variant | String | dark | options:dark/light/outline/light-outline | N
+
+### Tag Events
+
+name | params | description
+-- | -- | --
+click | - | \-
+close | - | \-
+
+### CheckTag Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+checked | Boolean | undefined | \- | N
+default-checked | Boolean | undefined | uncontrolled property | N
+closable | Boolean | false | `deprecated` | N
+content | String / Number / Array / Slot | - | Typescript:`string \| number \| string[]` | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class']` | N
+icon | String / Object / Slot | - | \- | N
+shape | String | square | `deprecated`。options:square/round/mark | N
+size | String | medium | options:small/medium/large。Typescript:`SizeEnum` | N
+variant | String | dark | `0.26.0`。options:dark/light/outline/light-outline | N
+
+### CheckTag Events
+
+name | params | description
+-- | -- | --
+change | `(checked: boolean)` | \-
+click | - | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/README.md
new file mode 100644
index 0000000..fe426df
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/README.md
@@ -0,0 +1,87 @@
+---
+title: Tag 标签
+description: 用于表明主体的类目,属性或状态。
+spline: data
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tag": "tdesign-miniprogram/tag/tag",
+ "t-check-tag": "tdesign-miniprogram/check-tag/check-tag"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+{{ type }}
+
+可关闭的标签
+
+{{ closable }}
+
+可点击的标签
+
+{{ checkable }}
+
+### 组件状态
+
+展示型标签
+
+{{ theme }}
+
+### 组件尺寸
+
+{{ size }}
+
+
+## API
+### Tag Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+closable | Boolean | false | 标签是否可关闭 | N
+disabled | Boolean | false | 标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态 | N
+external-classes | Array | - | 组件类名,用于设置 组件外层元素元素类名。`['t-class']` | N
+icon | String / Object / Slot | - | 标签中的图标,可自定义图标呈现 | N
+max-width | String / Number | - | 标签最大宽度,宽度超出后会出现省略号。示例:'50px' / 80 | N
+shape | String | square | 标签类型,有三种:方形、圆角方形、标记型。可选项:square/round/mark | N
+size | String | medium | 标签尺寸。可选项:small/medium/large/extra-large。TS 类型:`SizeEnum` | N
+theme | String | default | 组件风格,用于描述组件不同的应用场景。可选项:default/primary/warning/danger/success | N
+variant | String | dark | 标签风格变体。可选项:dark/light/outline/light-outline | N
+
+### Tag Events
+
+名称 | 参数 | 描述
+-- | -- | --
+click | - | 点击时触发
+close | - | 如果关闭按钮存在,点击关闭按钮时触发
+
+### CheckTag Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+checked | Boolean | undefined | 标签选中的状态,默认风格(theme=default)才有选中态 | N
+default-checked | Boolean | undefined | 标签选中的状态,默认风格(theme=default)才有选中态。非受控属性 | N
+closable | Boolean | false | 已废弃。标签是否可关闭 | N
+content | String / Number / Array / Slot | - | 组件子元素;传入数组时:[选中内容,非选中内容]。TS 类型:`string \| number \| string[]` | N
+disabled | Boolean | false | 标签禁用态,失效标签不能触发事件。默认风格(theme=default)才有禁用态 | N
+external-classes | Array | - | 组件类名,用于设置 组件外层元素元素类名。`['t-class']` | N
+icon | String / Object / Slot | - | 标签图标 | N
+shape | String | square | 已废弃。标签类型,有三种:方形、圆角方形、标记型。可选项:square/round/mark | N
+size | String | medium | 标签尺寸。可选项:small/medium/large。TS 类型:`SizeEnum` | N
+variant | String | dark | `0.26.0`。标签风格变体。可选项:dark/light/outline/light-outline | N
+
+### CheckTag Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(checked: boolean)` | 状态切换时触发
+click | - | 点击标签时触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/props.d.ts
new file mode 100644
index 0000000..8074655
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTagProps } from './type';
+declare const props: TdTagProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/props.js
new file mode 100644
index 0000000..39d5453
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/props.js
@@ -0,0 +1,36 @@
+const props = {
+ closable: {
+ type: Boolean,
+ value: false,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ maxWidth: {
+ type: null,
+ },
+ shape: {
+ type: String,
+ value: 'square',
+ },
+ size: {
+ type: String,
+ value: 'medium',
+ },
+ theme: {
+ type: String,
+ value: 'default',
+ },
+ variant: {
+ type: String,
+ value: 'dark',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.d.ts
new file mode 100644
index 0000000..ca813c5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.d.ts
@@ -0,0 +1,27 @@
+///
+import { SuperComponent } from '../common/src/index';
+export default class Tag extends SuperComponent {
+ data: {
+ prefix: string;
+ classPrefix: string;
+ className: string;
+ tagStyle: string;
+ };
+ properties: import("./type").TdTagProps;
+ externalClasses: string[];
+ options: WechatMiniprogram.Component.ComponentOptions;
+ lifetimes: {
+ attached(): void;
+ };
+ observers: {
+ 'size, shape, theme, variant, closable, disabled'(): void;
+ maxWidth(): void;
+ icon(v: any): void;
+ };
+ methods: {
+ setClass(): void;
+ setTagStyle(): string;
+ handleClick(e: WechatMiniprogram.BaseEvent): void;
+ handleClose(e: WechatMiniprogram.BaseEvent): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.js
new file mode 100644
index 0000000..777a81c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.js
@@ -0,0 +1,89 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { wxComponent, SuperComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { classNames, isNumber, calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-tag`;
+let Tag = class Tag extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.data = {
+ prefix,
+ classPrefix: name,
+ className: '',
+ tagStyle: '',
+ };
+ this.properties = props;
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ styleIsolation: 'apply-shared',
+ };
+ this.lifetimes = {
+ attached() {
+ this.setClass();
+ this.setTagStyle();
+ },
+ };
+ this.observers = {
+ 'size, shape, theme, variant, closable, disabled'() {
+ this.setClass();
+ },
+ maxWidth() {
+ this.setTagStyle();
+ },
+ icon(v) {
+ this.setData({
+ _icon: calcIcon(v),
+ });
+ },
+ };
+ this.methods = {
+ setClass() {
+ const { prefix, classPrefix } = this.data;
+ const { size, shape, theme, variant, closable, disabled } = this.properties;
+ const tagClass = [
+ classPrefix,
+ `${classPrefix}--${theme || 'default'}`,
+ `${classPrefix}--${variant}`,
+ closable ? `${classPrefix}--closable ${prefix}-is-closable` : '',
+ disabled ? `${classPrefix}--disabled ${prefix}-is-disabled` : '',
+ `${classPrefix}--${size}`,
+ `${classPrefix}--${shape}`,
+ ];
+ const className = classNames(tagClass);
+ this.setData({
+ className,
+ });
+ },
+ setTagStyle() {
+ const { maxWidth } = this.properties;
+ if (!maxWidth) {
+ return '';
+ }
+ const width = isNumber(maxWidth) ? `${maxWidth}px` : maxWidth;
+ this.setData({ tagStyle: `max-width:${width};` });
+ },
+ handleClick(e) {
+ if (this.data.disabled)
+ return;
+ this.triggerEvent('click', e);
+ },
+ handleClose(e) {
+ if (this.data.disabled)
+ return;
+ this.triggerEvent('close', e);
+ },
+ };
+ }
+};
+Tag = __decorate([
+ wxComponent()
+], Tag);
+export default Tag;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.json b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.json
new file mode 100644
index 0000000..fc075a1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.json
@@ -0,0 +1,6 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": ".././icon/icon"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.wxml
new file mode 100644
index 0000000..f107a8c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.wxss
new file mode 100644
index 0000000..95e7e21
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/tag.wxss
@@ -0,0 +1,242 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tag {
+ display: inline-flex;
+ align-items: center;
+ border: 2rpx solid transparent;
+ box-sizing: border-box;
+ border-radius: var(--td-tag-square-border-radius, 8rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+ user-select: none;
+ vertical-align: middle;
+}
+.t-tag__text {
+ word-wrap: normal;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.t-tag__icon,
+.t-tag__icon-close {
+ display: flex;
+ align-items: center;
+}
+.t-tag__icon-close {
+ color: var(--td-tag-close-icon-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+}
+.t-tag__icon:not(:empty) + .t-tag__text:not(:empty),
+.t-tag__text:not(:empty) + .t-tag__icon-close:not(:empty) {
+ margin-left: 8rpx;
+}
+.t-tag.t-tag--small {
+ height: var(--td-tag-small-height, 40rpx);
+ line-height: var(--td-tag-small-height, 40rpx);
+ padding: 0 var(--td-tag-small-padding, 11rpx);
+ font-size: var(--td-tag-small-font-size, var(--td-font-size, 20rpx));
+}
+.t-tag.t-tag--small .t-icon,
+.t-tag.t-tag--small .t-icon-close {
+ font-size: var(--td-tag-small-icon-size, 24rpx);
+}
+.t-tag.t-tag--small .t-tag__icon:not(:empty) + .t-tag__text:not(:empty),
+.t-tag.t-tag--small .t-tag__text:not(:empty) + .t-tag__icon-close:not(:empty) {
+ margin-left: 4rpx;
+}
+.t-tag.t-tag--medium {
+ height: var(--td-tag-medium-height, 48rpx);
+ line-height: var(--td-tag-medium-height, 48rpx);
+ padding: 0 var(--td-tag-medium-padding, 15rpx);
+ font-size: var(--td-tag-medium-font-size, var(--td-font-size-s, 24rpx));
+}
+.t-tag.t-tag--medium .t-icon,
+.t-tag.t-tag--medium .t-icon-close {
+ font-size: var(--td-tag-medium-icon-size, 28rpx);
+}
+.t-tag.t-tag--large {
+ height: var(--td-tag-large-height, 56rpx);
+ line-height: var(--td-tag-large-height, 56rpx);
+ padding: 0 var(--td-tag-large-padding, 15rpx);
+ font-size: var(--td-tag-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag.t-tag--large .t-icon,
+.t-tag.t-tag--large .t-icon-close {
+ font-size: var(--td-tag-large-icon-size, 32rpx);
+}
+.t-tag.t-tag--extra-large {
+ height: var(--td-tag-extra-large-height, 80rpx);
+ line-height: var(--td-tag-extra-large-height, 80rpx);
+ padding: 0 var(--td-tag-extra-large-padding, 31rpx);
+ font-size: var(--td-tag-extra-large-font-size, var(--td-font-size-base, 28rpx));
+}
+.t-tag.t-tag--extra-large .t-icon,
+.t-tag.t-tag--extra-large .t-icon-close {
+ font-size: var(--td-tag-extra-large-icon-size, 32rpx);
+}
+.t-tag.t-tag--square {
+ border-radius: var(--td-tag-square-border-radius, 8rpx);
+}
+.t-tag.t-tag--round {
+ border-radius: var(--td-tag-round-border-radius, 999px);
+}
+.t-tag.t-tag--mark {
+ border-radius: 0 var(--td-tag-mark-border-radius, var(--td-tag-round-border-radius, 999px)) var(--td-tag-mark-border-radius, var(--td-tag-round-border-radius, 999px)) 0;
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+}
+.t-tag--dark.t-tag--primary {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tag--dark.t-tag--success {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+}
+.t-tag--dark.t-tag--warning {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+}
+.t-tag--dark.t-tag--danger {
+ color: var(--td-font-white-1, #ffffff);
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+}
+.t-tag--dark.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--outline.t-tag--default {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--primary {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--success {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--warning {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--outline.t-tag--danger {
+ background-color: var(--td-tag-outline-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ border-color: var(--td-tag-default-color, var(--td-bg-color-component, var(--td-gray-color-3, #e7e7e7)));
+ background-color: var(--td-tag-default-light-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tag--light-outline.t-tag--primary {
+ color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ border-color: var(--td-tag-primary-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+ background-color: var(--td-tag-primary-light-color, var(--td-brand-color-light, var(--td-primary-color-1, #f2f3ff)));
+}
+.t-tag--light-outline.t-tag--success {
+ color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ border-color: var(--td-tag-success-color, var(--td-success-color, var(--td-success-color-5, #2ba471)));
+ background-color: var(--td-tag-success-light-color, var(--td-success-color-1, #e3f9e9));
+}
+.t-tag--light-outline.t-tag--warning {
+ color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ border-color: var(--td-tag-warning-color, var(--td-warning-color, var(--td-warning-color-5, #e37318)));
+ background-color: var(--td-tag-warning-light-color, var(--td-warning-color-1, #fff1e9));
+}
+.t-tag--light-outline.t-tag--danger {
+ color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ border-color: var(--td-tag-danger-color, var(--td-error-color, var(--td-error-color-6, #d54941)));
+ background-color: var(--td-tag-danger-light-color, var(--td-error-color-1, #fff0ed));
+}
+.t-tag--light-outline.t-tag--default {
+ color: var(--td-tag-default-font-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ border-color: var(--td-component-border, var(--td-gray-color-4, #dcdcdc));
+}
+.t-tag.t-tag--closable.t-tag--disabled {
+ cursor: not-allowed;
+ color: var(--td-tag-disabled-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+ background-color: var(--td-tag-disabled-background-color, var(--td-bg-color-component-disabled, var(--td-gray-color-2, #eeeeee)));
+ border-color: var(--td-tag-disabled-border-color, var(--td-component-border, var(--td-gray-color-4, #dcdcdc)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/type.d.ts
new file mode 100644
index 0000000..c256e91
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/type.d.ts
@@ -0,0 +1,43 @@
+import { SizeEnum } from '../common/common';
+export interface TdTagProps {
+ closable?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ icon?: {
+ type: null;
+ value?: string | object;
+ };
+ maxWidth?: {
+ type: null;
+ value?: string | number;
+ };
+ shape?: {
+ type: StringConstructor;
+ value?: 'square' | 'round' | 'mark';
+ };
+ size?: {
+ type: StringConstructor;
+ value?: SizeEnum;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'default' | 'primary' | 'warning' | 'danger' | 'success';
+ };
+ variant?: {
+ type: StringConstructor;
+ value?: 'dark' | 'light' | 'outline' | 'light-outline';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tag/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tag/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/README.en-US.md
new file mode 100644
index 0000000..2e6a5b7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/README.en-US.md
@@ -0,0 +1,32 @@
+:: BASE_DOC ::
+
+## API
+### Textarea Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+adjust-position | Boolean | true | \- | N
+autofocus | Boolean | false | \- | N
+autosize | Boolean | false | \- | N
+confirm-hold | Boolean | false | \- | N
+confirm-type | String | done | options:send/search/next/go/done。Typescript:`'send' \| 'search' \| 'next' \| 'go' \| 'done'` | N
+cursor-spacing | Number | 0 | \- | N
+disabled | Boolean | false | \- | N
+external-classes | Array | - | `['t-class', 't-class-textarea', 't-class-label']` | N
+focus | Boolean | false | \- | N
+label | String / Slot | - | \- | N
+maxcharacter | Number | - | \- | N
+maxlength | Number | - | \- | N
+placeholder | String | undefined | \- | N
+value | String | - | \- | N
+default-value | String | undefined | uncontrolled property | N
+
+### Textarea Events
+
+name | params | description
+-- | -- | --
+blur | `(value: TextareaValue)` | \-
+change | `(value: TextareaValue)` | \-
+enter | `(value: TextareaValue)` | \-
+focus | `(value: TextareaValue)` | \-
+line-change | `(value: TextareaValue)` | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/README.md
new file mode 100644
index 0000000..74ad736
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/README.md
@@ -0,0 +1,99 @@
+---
+title: Textarea 多行文本框
+description: 用于多行文本信息输入。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-textarea": "tdesign-miniprogram/textarea/textarea"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+基础多行文本框
+
+{{ base }}
+
+带标题多行文本框
+
+{{ label }}
+
+自动增高多行文本框
+
+{{ autosize }}
+
+设置最大字符个数
+
+{{ maxlength }}
+
+设置最大字符个数,一个汉字表示两个字符
+
+{{ maxcharacter }}
+
+### 组件状态
+
+禁用多行文本框
+
+{{ disabled }}
+
+### 自定义组件样式
+
+标签外置输入框
+
+{{ custom }}
+
+## 提示
+
+- 如果需要在页面中调整 `textarea` 中 `placeholder` 样式,请使用名称为`t-textarea__placeholder`的Class选择器,直接覆盖组件内部样式(注意权重)。
+
+## API
+### Textarea Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+adjust-position | Boolean | true | 键盘弹起时,是否自动上推页面 | N
+autofocus | Boolean | false | 自动聚焦,拉起键盘 | N
+autosize | Boolean | false | 是否自动增高,值为 autosize 时,style.height 不生效 | N
+confirm-hold | Boolean | false | 点击键盘右下角按钮时是否保持键盘不收起点 | N
+confirm-type | String | done | 设置键盘右下角按钮的文字,仅在 type='text'时生效。可选项:send/search/next/go/done。TS 类型:`'return' \| 'send' \| 'search' \| 'next' \| 'go' \| 'done'` | N
+cursor-spacing | Number | 0 | 指定光标与键盘的距离。取textarea距离底部的距离和cursor-spacing指定的距离的最小值作为光标与键盘的距离 | N
+disabled | Boolean | false | 是否禁用文本框 | N
+external-classes | Array | - | 组件类名,分别用于表示组件外层元素、输入框、占位符、标签名等元素类名。`['t-class', 't-class-textarea', 't-class-label, 't-class-indicator]` | N
+focus | Boolean | false | 自动聚焦 | N
+label | String / Slot | - | 左侧文本 | N
+maxcharacter | Number | - | 用户最多可以输入的字符个数,一个中文汉字表示两个字符长度 | N
+maxlength | Number | -1 | 用户最多可以输入的字符个数。默认为 -1,不限制输入长度 | N
+indicator | Boolean | false | 显示文本计数器,如 0/140。当 `maxlength < 0 && maxcharacter < 0` 成立时, indicator无效 | N
+placeholder | String | undefined | 占位符 | N
+placeholderStyle | String | '' | 指定 placeholder 的样式,目前仅支持 color ,font-size和font-weight | N
+value | String | - | 文本框值 | N
+default-value | String | undefined | 文本框值。非受控属性 | N
+fixed | Boolean | false | 如果 textarea 是在一个 `position:fixed` 的区域,需要显示指定属性 fixed 为 true | N
+bordered | Boolean | false | 是否显示外边框 | N
+cursor | Number | -1 | 指定 focus 时的光标位置 | N
+disable-default-padding | Boolean | false | 是否去掉 iOS 下的默认内边距 | N
+show-confirm-bar | Boolean | true | 是否显示键盘上方带有”完成“按钮那一栏 | N
+selection-start | Number | -1 | 光标起始位置,自动聚集时有效,需与 selection-end 搭配使用 | N
+selection-end | Number | -1 | 光标结束位置,自动聚集时有效,需与 selection-start 搭配使用 | N
+hold-keyboard | Boolean | false | focus时,点击页面的时候不收起键盘 | N
+
+### Textarea Events
+
+名称 | 参数 | 描述
+-- | -- | --
+blur | `(value: TextareaValue)` | 失去焦点时触发
+change | `(value: TextareaValue)` | 输入内容变化时触发
+enter | `(value: TextareaValue)` | 点击完成时触发
+focus | `(value: TextareaValue)` | 获得焦点时触发
+line-change | `(value: TextareaValue)` | 行高发生变化时触发
+keyboardheightchange | `(height: number, duration: number)` | 键盘高度发生变化的时候触发此事件
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/props.d.ts
new file mode 100644
index 0000000..83213f6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTextareaProps } from './type';
+declare const props: TdTextareaProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/props.js
new file mode 100644
index 0000000..448b8df
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/props.js
@@ -0,0 +1,100 @@
+const props = {
+ adjustPosition: {
+ type: Boolean,
+ value: true,
+ },
+ autofocus: {
+ type: Boolean,
+ value: false,
+ },
+ autosize: {
+ type: Boolean,
+ value: false,
+ },
+ confirmHold: {
+ type: Boolean,
+ value: false,
+ },
+ confirmType: {
+ type: String,
+ value: 'return',
+ },
+ cursorSpacing: {
+ type: Number,
+ value: 0,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ focus: {
+ type: Boolean,
+ value: false,
+ },
+ label: {
+ type: String,
+ },
+ fixed: {
+ type: Boolean,
+ value: false,
+ },
+ maxcharacter: {
+ type: Number,
+ },
+ maxlength: {
+ type: Number,
+ value: -1,
+ },
+ placeholder: {
+ type: String,
+ value: undefined,
+ },
+ placeholderStyle: {
+ type: String,
+ value: '',
+ },
+ value: {
+ type: String,
+ value: null,
+ },
+ defaultValue: {
+ type: String,
+ value: '',
+ },
+ bordered: {
+ type: Boolean,
+ value: false,
+ },
+ indicator: {
+ type: Boolean,
+ value: false,
+ },
+ cursor: {
+ type: Number,
+ value: -1,
+ },
+ showConfirmBar: {
+ type: Boolean,
+ value: true,
+ },
+ selectionStart: {
+ type: Number,
+ value: -1,
+ },
+ selectionEnd: {
+ type: Number,
+ value: -1,
+ },
+ disableDefaultPadding: {
+ type: Boolean,
+ value: false,
+ },
+ holdKeyboard: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.d.ts
new file mode 100644
index 0000000..a3d8ec2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.d.ts
@@ -0,0 +1,34 @@
+import { SuperComponent } from '../common/src/index';
+export default class Textarea extends SuperComponent {
+ options: {
+ multipleSlots: boolean;
+ };
+ behaviors: string[];
+ externalClasses: string[];
+ properties: import("./type").TdTextareaProps;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ count: number;
+ };
+ observers: {
+ value(val: any): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ methods: {
+ updateCount(val: any): void;
+ updateValue(val: any): void;
+ calculateValue(value: any, maxcharacter: any, maxlength: any): {
+ value: any;
+ count: number;
+ };
+ onInput(event: any): void;
+ onFocus(event: any): void;
+ onBlur(event: any): void;
+ onConfirm(event: any): void;
+ onLineChange(event: any): void;
+ onKeyboardHeightChange(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.js b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.js
new file mode 100644
index 0000000..6dc87dc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.js
@@ -0,0 +1,105 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import { getCharacterLength } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-textarea`;
+let Textarea = class Textarea extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.options = {
+ multipleSlots: true,
+ };
+ this.behaviors = ['wx://form-field'];
+ this.externalClasses = [
+ `${prefix}-class`,
+ `${prefix}-class-textarea`,
+ `${prefix}-class-label`,
+ `${prefix}-class-indicator`,
+ ];
+ this.properties = props;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ count: 0,
+ };
+ this.observers = {
+ value(val) {
+ this.updateCount(val);
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ const { value } = this.properties;
+ this.updateValue(value == null ? '' : value);
+ },
+ };
+ this.methods = {
+ updateCount(val) {
+ const { maxcharacter, maxlength } = this.properties;
+ const { count } = this.calculateValue(val, maxcharacter, maxlength);
+ this.setData({
+ count,
+ });
+ },
+ updateValue(val) {
+ const { maxcharacter, maxlength } = this.properties;
+ const { value, count } = this.calculateValue(val, maxcharacter, maxlength);
+ this.setData({
+ value,
+ count,
+ });
+ },
+ calculateValue(value, maxcharacter, maxlength) {
+ if (maxcharacter > 0 && !Number.isNaN(maxcharacter)) {
+ const { length, characters } = getCharacterLength('maxcharacter', value, maxcharacter);
+ return {
+ value: characters,
+ count: length,
+ };
+ }
+ if (maxlength > 0 && !Number.isNaN(maxlength)) {
+ const { length, characters } = getCharacterLength('maxlength', value, maxlength);
+ return {
+ value: characters,
+ count: length,
+ };
+ }
+ return {
+ value,
+ count: value ? String(value).length : 0,
+ };
+ },
+ onInput(event) {
+ const { value } = event.detail;
+ this.updateValue(value);
+ this.triggerEvent('change', { value: this.data.value });
+ },
+ onFocus(event) {
+ this.triggerEvent('focus', Object.assign({}, event.detail));
+ },
+ onBlur(event) {
+ this.triggerEvent('blur', Object.assign({}, event.detail));
+ },
+ onConfirm(event) {
+ this.triggerEvent('enter', Object.assign({}, event.detail));
+ },
+ onLineChange(event) {
+ this.triggerEvent('line-change', Object.assign({}, event.detail));
+ },
+ onKeyboardHeightChange(e) {
+ this.triggerEvent('keyboardheightchange', e.detail);
+ },
+ };
+ }
+};
+Textarea = __decorate([
+ wxComponent()
+], Textarea);
+export default Textarea;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.json b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.wxml
new file mode 100644
index 0000000..1403b3c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.wxml
@@ -0,0 +1,48 @@
+
+
+
+
+ {{ label }}
+
+
+
+
+
+ {{count}} / {{maxcharacter || maxlength}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.wxss
new file mode 100644
index 0000000..f76799d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/textarea.wxss
@@ -0,0 +1,85 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-textarea {
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ padding: 32rpx 32rpx;
+ background-color: var(--td-textarea-background-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-textarea__label:not(:empty) {
+ font-size: var(--td-font-size-base, 28rpx);
+ color: var(--td-textarea-label-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ flex-shrink: 0;
+ line-height: 44rpx;
+ padding-bottom: var(--td-spacer, 16rpx);
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.t-textarea__wrapper {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ flex: 1 1 auto;
+ overflow: hidden;
+}
+.t-textarea__wrapper-inner {
+ flex: 1 1 auto;
+ box-sizing: border-box;
+ width: inherit;
+ min-width: 0;
+ min-height: 20px;
+ margin: 0;
+ padding: 0;
+ text-align: left;
+ background-color: transparent;
+ border: 0;
+ resize: none;
+ font-size: var(--td-font-size-m, 32rpx);
+ color: var(--td-textarea-text-color, var(--td-font-gray-1, rgba(0, 0, 0, 0.9)));
+ line-height: 48rpx;
+}
+.t-textarea__placeholder {
+ color: var(--td-textarea-placeholder-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-font-size-m, 32rpx);
+}
+.t-textarea__indicator:not(:empty) {
+ color: var(--td-textarea-indicator-text-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ font-size: var(--td-spacer-1, 24rpx);
+ text-align: right;
+ line-height: 40rpx;
+ padding-top: var(--td-spacer, 16rpx);
+}
+.t-textarea--border {
+ border-radius: var(--td-textarea-border-radius, var(--td-radius-default, 12rpx));
+ border: 2rpx solid var(--td-textarea-border-color, #dcdcdc);
+}
+.t-textarea .t-is-disabled {
+ color: var(--td-textarea-disabled-text-color, var(--td-font-gray-4, rgba(0, 0, 0, 0.26)));
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/type.d.ts
new file mode 100644
index 0000000..3678ee4
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/type.d.ts
@@ -0,0 +1,106 @@
+export interface TdTextareaProps {
+ adjustPosition?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ autofocus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ autosize?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmHold?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ confirmType?: {
+ type: StringConstructor;
+ value?: 'return' | 'send' | 'search' | 'next' | 'go' | 'done';
+ };
+ cursorSpacing?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ disabled?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class', 't-class-textarea', 't-class-label'];
+ };
+ fixed?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ focus?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ label?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ maxcharacter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ maxlength?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ placeholder?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ placeholderStyle: {
+ type: StringConstructor;
+ value: string;
+ };
+ value?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ defaultValue?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ bordered?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ indicator?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ cursor: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ showConfirmBar: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ selectionStart?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ selectionEnd?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ disableDefaultPadding?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ holdKeyboard?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/textarea/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/README.en-US.md
new file mode 100644
index 0000000..a3f5848
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/README.en-US.md
@@ -0,0 +1,24 @@
+:: BASE_DOC ::
+
+## API
+### Toast Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+direction | String | row | options:row/column | N
+duration | Number | 2000 | \- | N
+external-classes | Array | - | `['t-class']` | N
+icon | String | - | \- | N
+message | String / Slot | - | \- | N
+overlay-props | Object | {} | \- | N
+placement | String | middle | options: top/middle/bottom | N
+prevent-scroll-through | Boolean | false | \- | N
+show-overlay | Boolean | false | \- | N
+theme | String | - | options:loading/success/error | N
+
+### Toast Events
+
+name | params | description
+-- | -- | --
+close | \- | \-
+destory | \- | \-
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/README.md
new file mode 100644
index 0000000..4fc7cd7
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/README.md
@@ -0,0 +1,55 @@
+---
+title: Toast 轻提示
+description: 用于轻量级反馈或提示,不会打断用户操作。
+spline: message
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-toast": "tdesign-miniprogram/toast/toast"
+}
+```
+
+## 代码演示
+
+### 基础提示
+
+{{ base }}
+
+### 组件状态
+
+{{ theme }}
+
+### 显示遮罩
+{{ cover }}
+
+### 手动关闭
+{{ close }}
+## API
+### Toast Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+direction | String | row | 图标排列方式。可选项:row/column | N
+duration | Number | 2000 | 弹窗显示毫秒数 | N
+external-classes | Array | - | 组件类名。`['t-class']` | N
+icon | String / Object / Slot | - | 自定义图标。传入对象则透传至 Icon 组件 | N
+message | String / Slot | - | 弹窗显示文字 | N
+overlay-props | Object | {} | 遮罩层属性,透传至 Overlay | N
+placement | String | middle | 弹窗展示位置。可选项: top/middle/bottom | N
+prevent-scroll-through | Boolean | false | 防止滚动穿透,即不允许点击和滚动 | N
+show-overlay | Boolean | false | 是否显示遮罩层 | N
+theme | String | - | 提示类型。可选项:loading/success/error | N
+
+### Toast Events
+
+名称 | 参数 | 描述
+-- | -- | --
+close | \- | 轻提示隐藏的时候触发
+destory | \- | 轻提示销毁的时候触发
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/index.d.ts
new file mode 100644
index 0000000..0a196fd
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/index.d.ts
@@ -0,0 +1,22 @@
+///
+///
+declare type Context = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+declare type ToastType = 'loading' | 'success' | 'error';
+declare type ToastPositionType = 'top' | 'middle' | 'bottom';
+declare type ToastDirectionType = 'row' | 'column';
+export declare type ToastOptionsType = {
+ context?: Context;
+ selector?: string;
+ icon?: string;
+ message?: string;
+ duration?: number;
+ theme?: ToastType;
+ placement?: ToastPositionType;
+ preventScrollThrough?: boolean;
+ direction?: ToastDirectionType;
+ close?: () => T;
+};
+declare function Toast(options: ToastOptionsType): void;
+declare function showToast(options?: ToastOptionsType): void;
+declare function hideToast(options?: ToastOptionsType): void;
+export { Toast as default, showToast, hideToast };
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/index.js
new file mode 100644
index 0000000..216f208
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/index.js
@@ -0,0 +1,31 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { getInstance } from '../common/utils';
+function Toast(options) {
+ var _a;
+ const { context, selector = '#t-toast' } = options, Options = __rest(options, ["context", "selector"]);
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.show(Object.assign(Object.assign({}, Options), { duration: (_a = Options.duration) !== null && _a !== void 0 ? _a : 2000 }));
+ }
+}
+function showToast(options = {}) {
+ Toast(options);
+}
+function hideToast(options = {}) {
+ const { context, selector = '#t-toast' } = options;
+ const instance = getInstance(context, selector);
+ if (instance) {
+ instance.hide();
+ }
+}
+export { Toast as default, showToast, hideToast };
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/props.d.ts
new file mode 100644
index 0000000..c6b0f86
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/props.d.ts
@@ -0,0 +1,3 @@
+import { TdToastProps } from './type';
+declare const props: TdToastProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/props.js
new file mode 100644
index 0000000..a0ade2b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/props.js
@@ -0,0 +1,39 @@
+const props = {
+ direction: {
+ type: String,
+ value: 'row',
+ },
+ duration: {
+ type: Number,
+ value: 2000,
+ },
+ externalClasses: {
+ type: Array,
+ },
+ icon: {
+ type: null,
+ },
+ message: {
+ type: String,
+ },
+ overlayProps: {
+ type: Object,
+ value: {},
+ },
+ placement: {
+ type: String,
+ value: 'middle',
+ },
+ preventScrollThrough: {
+ type: Boolean,
+ value: false,
+ },
+ showOverlay: {
+ type: Boolean,
+ value: false,
+ },
+ theme: {
+ type: String,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.d.ts
new file mode 100644
index 0000000..04613f0
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.d.ts
@@ -0,0 +1,26 @@
+///
+import { SuperComponent } from '../common/src/index';
+import { ToastOptionsType } from './index';
+declare type Timer = NodeJS.Timeout | null;
+export default class Toast extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ behaviors: string[];
+ hideTimer: Timer;
+ data: {
+ prefix: string;
+ classPrefix: string;
+ typeMapIcon: string;
+ };
+ properties: import("./type").TdToastProps;
+ detached(): void;
+ methods: {
+ show(options: ToastOptionsType): void;
+ hide(): void;
+ destroyed(): void;
+ loop(): void;
+ };
+}
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.js b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.js
new file mode 100644
index 0000000..e10d300
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.js
@@ -0,0 +1,81 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+import transition from '../mixins/transition';
+import { calcIcon } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-toast`;
+let Toast = class Toast extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.behaviors = [transition()];
+ this.hideTimer = null;
+ this.data = {
+ prefix,
+ classPrefix: name,
+ typeMapIcon: '',
+ };
+ this.properties = props;
+ this.methods = {
+ show(options) {
+ if (this.hideTimer)
+ clearTimeout(this.hideTimer);
+ const iconMap = {
+ loading: 'loading',
+ success: 'check-circle',
+ warning: 'error-circle',
+ error: 'close-circle',
+ };
+ const typeMapIcon = iconMap[options === null || options === void 0 ? void 0 : options.theme];
+ const defaultOptions = {
+ direction: props.direction.value,
+ duration: props.duration.value,
+ icon: props.icon.value,
+ message: props.message.value,
+ placement: props.placement.value,
+ preventScrollThrough: props.preventScrollThrough.value,
+ theme: props.theme.value,
+ };
+ const data = Object.assign(Object.assign(Object.assign({}, defaultOptions), options), { visible: true, isLoading: (options === null || options === void 0 ? void 0 : options.theme) === 'loading', _icon: calcIcon(typeMapIcon !== null && typeMapIcon !== void 0 ? typeMapIcon : options.icon) });
+ const { duration } = data;
+ this.setData(data);
+ if (duration > 0) {
+ this.hideTimer = setTimeout(() => {
+ this.hide();
+ }, duration);
+ }
+ },
+ hide() {
+ var _a, _b;
+ this.setData({ visible: false });
+ (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.close) === null || _b === void 0 ? void 0 : _b.call(_a);
+ this.triggerEvent('close');
+ },
+ destroyed() {
+ if (this.hideTimer) {
+ clearTimeout(this.hideTimer);
+ this.hideTimer = null;
+ }
+ this.triggerEvent('destory');
+ },
+ loop() { },
+ };
+ }
+ detached() {
+ this.destroyed();
+ }
+};
+Toast = __decorate([
+ wxComponent()
+], Toast);
+export default Toast;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.json b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.json
new file mode 100644
index 0000000..b60dbbc
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.json
@@ -0,0 +1,8 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-icon": "../icon/icon",
+ "t-loading": "../loading/loading",
+ "t-overlay": "../overlay/overlay"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.wxml
new file mode 100644
index 0000000..fcf0680
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.wxml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+ {{message}}
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.wxss
new file mode 100644
index 0000000..cb4c126
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/toast.wxss
@@ -0,0 +1,98 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-toast {
+ position: fixed;
+ right: -50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 12001;
+ opacity: 1;
+ transition: opacity 300ms ease;
+ background-color: var(--td-toast-bg-color, var(--td-font-gray-2, rgba(0, 0, 0, 0.6)));
+ border-radius: var(--td-toast-radius, 8rpx);
+ font-size: 28rpx;
+ color: var(--td-toast-color, var(--td-font-white-1, #ffffff));
+ max-width: var(--td-toast-max-width, 374rpx);
+ width: fit-content;
+ box-sizing: border-box;
+}
+.t-toast--column {
+ padding: 48rpx;
+ min-width: 160rpx;
+ min-height: 160rpx;
+ border-radius: 16rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.t-toast--loading.t-toast--with-text {
+ min-width: 204rpx;
+ min-height: 204rpx;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+.t-toast__content {
+ align-items: center;
+ line-height: 44rpx;
+}
+.t-toast__content--row {
+ display: flex;
+ text-align: left;
+ padding: 28rpx 44rpx;
+}
+.t-toast__content--column {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+.t-toast__icon--row {
+ display: flex;
+ font-size: var(--td-toast-row-icon-size, 48rpx);
+}
+.t-toast__icon--column {
+ font-size: var(--td-toast-column-icon-size, 64rpx);
+}
+.t-toast__text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -webkit-line-clamp: 3;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ white-space: pre-line;
+}
+.t-toast__text--column:not(:empty):not(:only-child) {
+ margin-top: 16rpx;
+}
+.t-toast__text--row:not(:empty):not(:only-child) {
+ margin-left: 16rpx;
+}
+.t-toast.t-fade-enter,
+.t-toast.t-fade-leave-to {
+ opacity: 0;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/type.d.ts
new file mode 100644
index 0000000..82eeba6
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/type.d.ts
@@ -0,0 +1,46 @@
+export interface TdToastProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ direction?: {
+ type: StringConstructor;
+ value?: 'row' | 'column';
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ externalClasses?: {
+ type: ArrayConstructor;
+ value?: ['t-class'];
+ };
+ icon?: {
+ type: null;
+ value?: string;
+ };
+ message?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ overlayProps?: {
+ type: ObjectConstructor;
+ value?: object;
+ };
+ placement?: {
+ type: StringConstructor;
+ value?: 'top' | 'middle' | 'bottom';
+ };
+ preventScrollThrough?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ showOverlay?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ theme?: {
+ type: StringConstructor;
+ value?: 'loading' | 'success' | 'error';
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/toast/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/toast/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/README.md
new file mode 100644
index 0000000..c262753
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/README.md
@@ -0,0 +1,53 @@
+---
+title: Transition 过渡
+description: 过渡组件。
+spline: message
+isComponent: true
+---
+
+## 引入
+
+### 引入组件
+
+在 `app.json` 或 `page.json` 中引入组件:
+
+```json
+"usingComponents": {
+ "t-transition": "tdesign-miniprogram/transition/transition"
+}
+```
+
+## 用法
+
+### 组件方式
+
+```xml
+
+
+
+
+```
+
+## API
+
+### `` 组件
+
+组件路径:`tdesign-miniprogram/transition/transition`
+
+### 过渡类名
+
+过渡类名指定格式同 vue,enter/enter-to leave/leave-to
+
+#### Props
+
+| 属性 | 值类型 | 默认值 | 说明 |
+| ------------- | ---------------- | -------------- | --------------------------- |
+| name | String | 't-transition' | 过渡类名,类似 vue 过渡类名 |
+| visible | Boolean | false | 是否显示 |
+| customClass | String | false | 自定义容器类名 |
+| destoryOnHide | Boolean | false | 隐藏之后是否渲染 slot 内容 |
+| appear | Boolean | false | 首次出现是否展示动画 |
+| durations | Number / Boolean | | 手动指定过渡时间 |
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/index.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/index.d.ts
new file mode 100644
index 0000000..e5ac999
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/index.d.ts
@@ -0,0 +1,2 @@
+export * from './props';
+export * from './type';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/index.js b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/index.js
new file mode 100644
index 0000000..e5ac999
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/index.js
@@ -0,0 +1,2 @@
+export * from './props';
+export * from './type';
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/props.d.ts
new file mode 100644
index 0000000..0343aed
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTransitionProps } from './type';
+declare const props: TdTransitionProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/props.js
new file mode 100644
index 0000000..d79a9a9
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/props.js
@@ -0,0 +1,26 @@
+const props = {
+ appear: {
+ type: Boolean,
+ value: false,
+ },
+ customClass: {
+ type: String,
+ value: '',
+ },
+ destoryOnClose: {
+ type: Boolean,
+ value: false,
+ },
+ duration: {
+ type: Number,
+ },
+ name: {
+ type: String,
+ value: 't-transition',
+ },
+ visible: {
+ type: Boolean,
+ value: false,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.d.ts
new file mode 100644
index 0000000..e487bd5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.d.ts
@@ -0,0 +1,8 @@
+import { SuperComponent } from '../common/src/index';
+export default class Transition extends SuperComponent {
+ externalClasses: string[];
+ behaviors: string[];
+ data: {
+ classPrefix: string;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.js b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.js
new file mode 100644
index 0000000..b24f56a
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.js
@@ -0,0 +1,25 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import transition from '../mixins/transition';
+import config from '../common/config';
+const { prefix } = config;
+const name = `${prefix}-transition`;
+let Transition = class Transition extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.behaviors = [transition()];
+ this.data = {
+ classPrefix: name,
+ };
+ }
+};
+Transition = __decorate([
+ wxComponent()
+], Transition);
+export default Transition;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.json b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.json
new file mode 100644
index 0000000..a89ef4d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.wxml
new file mode 100644
index 0000000..d8390d8
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.wxml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.wxss
new file mode 100644
index 0000000..aa8777f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/transition.wxss
@@ -0,0 +1,14 @@
+.t-transition-enter {
+ opacity: 0;
+}
+.t-transition-enter-to {
+ opacity: 1;
+ transition: opacity 1s;
+}
+.t-transition-leave {
+ opacity: 1;
+}
+.t-transition-leave-to {
+ opacity: 0;
+ transition: opacity 1s;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/type.d.ts
new file mode 100644
index 0000000..f9996e5
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/type.d.ts
@@ -0,0 +1,26 @@
+export interface TdTransitionProps {
+ appear?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ customClass?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ destoryOnClose?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ duration?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ name?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ visible?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/transition/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/type.js
new file mode 100644
index 0000000..95da36c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/transition/type.js
@@ -0,0 +1,2 @@
+;
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/README.en-US.md
new file mode 100644
index 0000000..2622720
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/README.en-US.md
@@ -0,0 +1,19 @@
+:: BASE_DOC ::
+
+## API
+### TreeSelect Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+height | String / Number | 336 | \- | N
+keys | Object | - | Typescript:`KeysType` | N
+multiple | Boolean | false | \- | N
+options | Array | [] | Typescript:`Array` | N
+value | String / Number / Array | - | Typescript:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+default-value | String / Number / Array | undefined | uncontrolled property。Typescript:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+
+### TreeSelect Events
+
+name | params | description
+-- | -- | --
+change | `(value: TreeSelectValue, level: TreeLevel) ` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts)。
`type TreeLevel: 0 \| 1 \| 2`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/README.md
new file mode 100644
index 0000000..0faf9ab
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/README.md
@@ -0,0 +1,59 @@
+---
+title: TreeSelect 树形选择
+description: 适用于选择树形的数据结构。
+spline: form
+isComponent: true
+---
+
+
+
+ 该组件于 0.32.0 版本上线,请留意版本。
+
+
+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-tree-select": "tdesign-miniprogram/tree-select/tree-select"
+}
+```
+
+## 代码演示
+
+### 组件类型
+
+#### 基础树形选择
+
+{{ base }}
+
+#### 多选树形选择
+
+{{ multiple }}
+
+### 组件状态
+
+#### 三级树形选择
+
+{{ normal }}
+
+## API
+### TreeSelect Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+height | String / Number | 336 | 高度,默认单位为 px | N
+keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N
+multiple | Boolean | false | 是否多选 | N
+options | Array | [] | 选项。TS 类型:`Array` | N
+value | String / Number / Array | - | 选中值。TS 类型:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+default-value | String / Number / Array | undefined | 选中值。非受控属性。TS 类型:`TreeSelectValue` `type TreeSelectValue = string \| number \| Array`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts) | N
+
+### TreeSelect Events
+
+名称 | 参数 | 描述
+-- | -- | --
+change | `(value: TreeSelectValue, level: TreeLevel) ` | 点击任何节点均会触发;level 代表当前点击的层级,0 代表最左侧,依次递进。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts)。
`type TreeLevel: 0 \| 1 \| 2`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/index.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/index.wxs
new file mode 100644
index 0000000..dc28a9d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/index.wxs
@@ -0,0 +1,7 @@
+var getTreeClass = function (level, total) {
+ if (level === 0) return 'right';
+ if (level === 1 && level !== total - 1) return 'middle';
+ return 'left';
+};
+
+module.exports.getTreeClass = getTreeClass;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/props.d.ts
new file mode 100644
index 0000000..465bea2
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/props.d.ts
@@ -0,0 +1,3 @@
+import { TdTreeSelectProps } from './type';
+declare const props: TdTreeSelectProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/props.js
new file mode 100644
index 0000000..bca5d9e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/props.js
@@ -0,0 +1,25 @@
+const props = {
+ height: {
+ type: null,
+ value: 336,
+ },
+ keys: {
+ type: Object,
+ },
+ multiple: {
+ type: Boolean,
+ value: false,
+ },
+ options: {
+ type: Array,
+ value: [],
+ },
+ value: {
+ type: null,
+ value: null,
+ },
+ defaultValue: {
+ type: null,
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.d.ts
new file mode 100644
index 0000000..b887c92
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.d.ts
@@ -0,0 +1,28 @@
+import { SuperComponent } from '../common/src/index';
+export default class TreeSelect extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ prefix: string;
+ classPrefix: string;
+ labelAlias: string;
+ valueAlias: string;
+ };
+ properties: import("./type").TdTreeSelectProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ value(): void;
+ keys(obj: any): void;
+ };
+ methods: {
+ buildTreeOptions(): void;
+ onRootChange(e: any): void;
+ handleTreeClick(e: any): void;
+ handleRadioChange(e: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.js
new file mode 100644
index 0000000..ecebade
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.js
@@ -0,0 +1,100 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+import { SuperComponent, wxComponent } from '../common/src/index';
+import config from '../common/config';
+import props from './props';
+const { prefix } = config;
+const name = `${prefix}-tree-select`;
+let TreeSelect = class TreeSelect extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ prefix,
+ classPrefix: name,
+ labelAlias: 'label',
+ valueAlias: 'value',
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'value',
+ event: 'change',
+ },
+ ];
+ this.observers = {
+ value() {
+ this.buildTreeOptions();
+ },
+ keys(obj) {
+ this.setData({
+ labelAlias: obj.label || 'label',
+ valueAlias: obj.value || 'value',
+ });
+ },
+ };
+ this.methods = {
+ buildTreeOptions() {
+ const { options, value, multiple } = this.data;
+ const treeOptions = [];
+ let level = -1;
+ let node = { children: options };
+ while (node && node.children) {
+ level += 1;
+ const list = node.children;
+ const thisValue = value === null || value === void 0 ? void 0 : value[level];
+ treeOptions.push([...list]);
+ if (thisValue == null) {
+ const [firstChild] = list;
+ node = firstChild;
+ }
+ else {
+ const child = list.find((child) => child.value === thisValue);
+ node = child !== null && child !== void 0 ? child : list[0];
+ }
+ }
+ const leafLevel = Math.max(0, level);
+ if (multiple) {
+ const finalValue = this.data.value || this.data.defaultValue;
+ if (!Array.isArray(finalValue[leafLevel])) {
+ throw TypeError('应传入数组类型的 value');
+ }
+ }
+ this.setData({
+ leafLevel,
+ treeOptions,
+ });
+ },
+ onRootChange(e) {
+ const { value } = this.data;
+ const { value: itemValue } = e.detail;
+ value[0] = itemValue;
+ this._trigger('change', { value, level: 0 });
+ },
+ handleTreeClick(e) {
+ const { level, value: itemValue } = e.currentTarget.dataset;
+ const { value } = this.data;
+ value[level] = itemValue;
+ this._trigger('change', { value, level: 1 });
+ },
+ handleRadioChange(e) {
+ const { value } = this.data;
+ const { value: itemValue } = e.detail;
+ const { level } = e.target.dataset;
+ value[level] = itemValue;
+ this._trigger('change', { value, level });
+ },
+ };
+ }
+};
+TreeSelect = __decorate([
+ wxComponent()
+], TreeSelect);
+export default TreeSelect;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.json b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.json
new file mode 100644
index 0000000..0083bb1
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.json
@@ -0,0 +1,11 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-radio": "../radio/radio",
+ "t-radio-group": "../radio-group/radio-group",
+ "t-checkbox": "../checkbox/checkbox",
+ "t-checkbox-group": "../checkbox-group/checkbox-group",
+ "t-side-bar": "../side-bar/side-bar",
+ "t-side-bar-item": "../side-bar-item/side-bar-item"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.wxml
new file mode 100644
index 0000000..4ffc465
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.wxml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+ {{item[labelAlias]}}
+
+
+
+ {{item[labelAlias]}}
+
+
+ {{item[labelAlias]}}
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.wxss
new file mode 100644
index 0000000..8e5cb32
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/tree-select.wxss
@@ -0,0 +1,59 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-tree-select {
+ display: flex;
+ background-color: var(--td-tree-bg-color, var(--td-bg-color-container, var(--td-font-white-1, #ffffff)));
+}
+.t-tree-select__column {
+ width: var(--td-tree-colum-width, 206rpx);
+}
+.t-tree-select__column--left {
+ background: var(--td-tree-root-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+}
+.t-tree-select__column--right {
+ flex: 1;
+}
+.t-tree-select__column ::-webkit-scrollbar {
+ display: none;
+ width: 0;
+ height: 0;
+ color: transparent;
+}
+.t-tree-select__item {
+ height: var(--td-tree-item-height, 112rpx);
+ line-height: var(--td-tree-item-height, 112rpx);
+ font-size: var(--td-tree-item-font-size, 32rpx);
+ padding-left: 32rpx;
+}
+.t-tree-select__item--active {
+ font-weight: 600;
+ color: var(--td-tree-item-active-color, var(--td-brand-color, var(--td-primary-color-7, #0052d9)));
+}
+.t-tree-select-column {
+ width: 100%;
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/type.d.ts
new file mode 100644
index 0000000..d0a4b7d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/type.d.ts
@@ -0,0 +1,32 @@
+import { TreeOptionData, KeysType } from '../common/common';
+export interface TdTreeSelectProps {
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ height?: {
+ type: null;
+ value?: string | number;
+ };
+ keys?: {
+ type: ObjectConstructor;
+ value?: KeysType;
+ };
+ multiple?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ options?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ value?: {
+ type: null;
+ value?: TreeSelectValue;
+ };
+ defaultValue?: {
+ type: null;
+ value?: TreeSelectValue;
+ };
+}
+export declare type TreeSelectValue = string | number | Array;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/tree-select/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/README.en-US.md b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/README.en-US.md
new file mode 100644
index 0000000..2fc525d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/README.en-US.md
@@ -0,0 +1,32 @@
+:: BASE_DOC ::
+
+## API
+### Upload Props
+
+name | type | default | description | required
+-- | -- | -- | -- | --
+add-content | String / Slot | - | \- | N
+allow-upload-duplicate-file | Boolean | false | \- | N
+config | Object | - | Typescript:`UploadMpConfig` `type UploadMpConfig = ImageConfig \| VideoConfig` `interface ImageConfig { count?: number; sizeType?: Array; sourceType?: Array }` `type SizeTypeValues = 'original' \| 'compressed'` `type SourceTypeValues = 'album' \| 'camera'` `interface VideoConfig { sourceType?: Array; compressed?: boolean; maxDuration?: number; camera?: 'back' \| 'front' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+file-list-display | Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+files | Array | - | Typescript:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+default-files | Array | undefined | uncontrolled property。Typescript:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+grid-config | Object | - | Typescript:`{column?: number; width?: number; height?: number;}` | N
+gutter | Number | 16 | \- | N
+image-props | Object | - | Typescript:`ImageProps`,[Image API Documents](./image?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+max | Number | 0 | \- | N
+media-type | Array | ['image', 'video'] | Typescript:`Array` `type MediaType = 'image' \| 'video'`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+request-method | Function | - | \- | N
+size-limit | Number / Object | - | Typescript:`number \| SizeLimitObj` `interface SizeLimitObj { size: number; unit: SizeUnit ; message?: string }` `type SizeUnitArray = ['B', 'KB', 'MB', 'GB']` `type SizeUnit = SizeUnitArray[number]`。[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+source | String | media | options:media/messageFile | N
+
+### Upload Events
+
+name | params | description
+-- | -- | --
+add | `(files: MediaContext)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
+complete | \- | \-
+fail | \- | \-
+remove | `(index: number; file: UploadFile)` | \-
+select-change | `(currentSelectedFiles: MediaContext[])` | \-
+success | `(files: MediaContext)` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/README.md b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/README.md
new file mode 100644
index 0000000..aa2a495
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/README.md
@@ -0,0 +1,79 @@
+---
+title: Upload 上传
+description: 用于相册读取或拉起拍照的图片上传功能。
+spline: form
+isComponent: true
+---
+
+


+## 引入
+
+全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。
+
+```json
+"usingComponents": {
+ "t-upload": "tdesign-miniprogram/upload/upload",
+}
+```
+
+## 代码演示
+
+### 单选上传图片
+
+图片上传有两种方式:
+
+1 选择完所有图片之后,统一上传,因此选择完就直接展示
+
+2 每次选择图片都上传,展示每次上传图片的进度
+
+{{ single }}
+
+### 多选上传图片
+
+{{ multiple }}
+
+### 加载状态
+
+支持多种状态:`loading`、`reload`、`failed`;
+
+其中 `loading` 还可以通过传入 `percent` 来区分是否展示进度。
+
+{{ status }}
+
+### 从聊天记录上选
+
+使用 `wx.chooseMessageFile` 实现,需要基础版本库 `2.5.0+`
+
+{{ messageFile }}
+
+## API
+### Upload Props
+
+名称 | 类型 | 默认值 | 说明 | 必传
+-- | -- | -- | -- | --
+add-content | String / Slot | - | 添加按钮内容 | N
+allow-upload-duplicate-file | Boolean | false | 【开发中】是否允许重复上传相同文件名的文件 | N
+config | Object | - | 图片上传配置,视频上传配置,文件上传配置等,包含图片尺寸、图片来源、视频来源、视频拍摄最长时间等。更多细节查看小程序官网。[图片上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)。[视频上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)。TS 类型:`UploadMpConfig` `type UploadMpConfig = ImageConfig \| VideoConfig` `interface ImageConfig { count?: number; sizeType?: Array; sourceType?: Array }` `type SizeTypeValues = 'original' \| 'compressed'` `type SourceTypeValues = 'album' \| 'camera'` `interface VideoConfig { sourceType?: Array; compressed?: boolean; maxDuration?: number; camera?: 'back' \| 'front' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+file-list-display | Slot | - | 【开发中】用于完全自定义文件列表内容。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+files | Array | - | 已上传文件列表。TS 类型:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+default-files | Array | undefined | 已上传文件列表。非受控属性。TS 类型:`Array` `interface UploadFile { url: string; name?: string; size?: number; type?: 'image' \| 'video'; percent?: number; status: 'loading' \| 'reload' \| 'failed' \| 'done' }`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+grid-config | Object | - | upload组件每行上传图片列数以及图片的宽度和高度。TS 类型:`{column?: number; width?: number; height?: number;}` | N
+gutter | Number | 16 | 预览窗格的 `gutter` 大小,单位 rpx | N
+image-props | Object | - | 透传 Image 组件全部属性。TS 类型:`ImageProps`,[Image API Documents](./image?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+max | Number | 0 | 用于控制文件上传数量,值为 0 则不限制 | N
+media-type | Array | ['image', 'video'] | 支持上传的文件类型,图片或视频。TS 类型:`Array` `type MediaType = 'image' \| 'video'`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+request-method | Function | - | 自定义上传方法 | N
+size-limit | Number / Object | - | 图片文件大小限制,单位 KB。可选单位有:`'B' \| 'KB' \| 'MB' \| 'GB'`。示例一:`1000`。示例二:`{ size: 2, unit: 'MB', message: '图片大小不超过 {sizeLimit} MB' }`。TS 类型:`number \| SizeLimitObj` `interface SizeLimitObj { size: number; unit: SizeUnit ; message?: string }` `type SizeUnitArray = ['B', 'KB', 'MB', 'GB']` `type SizeUnit = SizeUnitArray[number]`。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts) | N
+source | String | media | 来源。可选项:media/messageFile | N
+
+### Upload Events
+
+名称 | 参数 | 描述
+-- | -- | --
+add | `(files: MediaContext)` | 选择后触发,仅包含本次选择的照片;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
+complete | \- | 上传成功或失败后触发
+fail | \- | 上传失败后触发
+remove | `(index: number; file: UploadFile)` | 移除文件时触发
+select-change | `(files: MediaContext[]; currentSelectedFiles: MediaContext[])` | 选择文件或图片之后,上传之前,触发该事件。
`files` 表示之前已经上传完成的文件列表。
`currentSelectedFiles` 表示本次上传选中的文件列表
+success | `(files: MediaContext)` | 上传成功后触发,包含所有上传的文件;`url` 表示选定视频的临时文件路径 (本地路径)。`duration` 表示选定视频的时间长度。`size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/upload/type.ts)。
`type MediaContext = VideoContext[] \| ImageContext[]`
`interface VideoContext { name?: string; type?: string; url?: string; duration?: number; size?: number; width?: number; height?: number; thumb: string; progress: number }`
`interface ImageContext { name: string; type: string; url: string; size: number; width: number; height: number; progress: number }`
+click | `(file: VideoContext \| ImageContext)` | 点击已选文件时触发;常用于重新上传
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/props.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/props.d.ts
new file mode 100644
index 0000000..2f7371c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/props.d.ts
@@ -0,0 +1,3 @@
+import { TdUploadProps } from './type';
+declare const props: TdUploadProps;
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/props.js b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/props.js
new file mode 100644
index 0000000..fbf07c3
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/props.js
@@ -0,0 +1,48 @@
+const props = {
+ addContent: {
+ type: String,
+ },
+ allowUploadDuplicateFile: {
+ type: Boolean,
+ value: false,
+ },
+ config: {
+ type: Object,
+ },
+ files: {
+ type: Array,
+ value: null,
+ },
+ defaultFiles: {
+ type: Array,
+ },
+ gridConfig: {
+ type: Object,
+ },
+ gutter: {
+ type: Number,
+ value: 16,
+ },
+ imageProps: {
+ type: Object,
+ },
+ max: {
+ type: Number,
+ value: 0,
+ },
+ mediaType: {
+ type: Array,
+ value: ['image', 'video'],
+ },
+ requestMethod: {
+ type: null,
+ },
+ sizeLimit: {
+ type: null,
+ },
+ source: {
+ type: String,
+ value: 'media',
+ },
+};
+export default props;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/type.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/type.d.ts
new file mode 100644
index 0000000..d06319f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/type.d.ts
@@ -0,0 +1,99 @@
+import { ImageProps } from '../image/index';
+export interface TdUploadProps {
+ addContent?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ allowUploadDuplicateFile?: {
+ type: BooleanConstructor;
+ value?: boolean;
+ };
+ config?: {
+ type: ObjectConstructor;
+ value?: UploadMpConfig;
+ };
+ style?: {
+ type: StringConstructor;
+ value?: string;
+ };
+ files?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ defaultFiles?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ gridConfig?: {
+ type: ObjectConstructor;
+ value?: {
+ column?: number;
+ width?: number;
+ height?: number;
+ };
+ };
+ gutter?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ imageProps?: {
+ type: ObjectConstructor;
+ value?: ImageProps;
+ };
+ max?: {
+ type: NumberConstructor;
+ value?: number;
+ };
+ mediaType?: {
+ type: ArrayConstructor;
+ value?: Array;
+ };
+ requestMethod?: {
+ type: null;
+ value?: null;
+ };
+ sizeLimit?: {
+ type: null;
+ value?: number | SizeLimitObj;
+ };
+ source?: {
+ type: StringConstructor;
+ value?: 'media' | 'messageFile';
+ };
+}
+export declare type UploadMpConfig = ImageConfig | VideoConfig;
+export interface ImageConfig {
+ count?: number;
+ sizeType?: Array;
+ sourceType?: Array;
+}
+export declare type SizeTypeValues = 'original' | 'compressed';
+export declare type SourceTypeValues = 'album' | 'camera';
+export interface VideoConfig {
+ sourceType?: Array;
+ compressed?: boolean;
+ maxDuration?: number;
+ camera?: 'back' | 'front';
+}
+export interface UploadDisplayDragEvents {
+ onDrop?: (event: DragEvent) => void;
+ onDragenter?: (event: DragEvent) => void;
+ onDragover?: (event: DragEvent) => void;
+ onDragleave?: (event: DragEvent) => void;
+}
+export interface UploadFile {
+ url: string;
+ name?: string;
+ size?: number;
+ type?: 'image' | 'video';
+ percent?: number;
+ status: 'loading' | 'reload' | 'failed' | 'done';
+}
+export declare type MediaType = 'image' | 'video';
+export interface SizeLimitObj {
+ size: number;
+ unit: SizeUnit;
+ message?: string;
+}
+export declare type SizeUnitArray = ['B', 'KB', 'MB', 'GB'];
+export declare type SizeUnit = SizeUnitArray[number];
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/type.js b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/type.js
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/type.js
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload-info.json b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload-info.json
new file mode 100644
index 0000000..a71eeef
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload-info.json
@@ -0,0 +1,123 @@
+{
+ "key": "Upload",
+ "label": "上传",
+ "icon": "",
+ "properties": [
+ {
+ "key": "addContent",
+ "type": ["String", "TNode"],
+ "defaultValue": "",
+ "desc": "添加按钮内容。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "config",
+ "type": ["Object"],
+ "defaultValue": "",
+ "desc": "图片上传配置,视频上传配置,文件上传配置等,包含图片尺寸、图片来源、视频来源、视频拍摄最长时间等。更多细节查看小程序官网。[图片上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)。[视频上传](https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html)",
+ "label": ""
+ },
+ {
+ "key": "deleteBtn",
+ "type": ["String", "TNode"],
+ "defaultValue": "",
+ "desc": "删除图标。值为空,使用默认图标渲染;值为 slot 则表示使用插槽渲染;其他值无效。",
+ "label": ""
+ },
+ {
+ "key": "fileListDisplay",
+ "type": ["TNode"],
+ "defaultValue": "",
+ "desc": "【开发中】用于完全自定义文件列表内容",
+ "label": ""
+ },
+ {
+ "key": "files",
+ "type": ["Array"],
+ "defaultValue": "",
+ "desc": "已上传文件列表",
+ "label": ""
+ },
+ {
+ "key": "gridConfig",
+ "type": ["Object"],
+ "defaultValue": "",
+ "desc": "upload组件每行上传图片列数以及图片的宽度和高度",
+ "label": ""
+ },
+ {
+ "key": "gutter",
+ "type": ["Number"],
+ "defaultValue": "16",
+ "desc": "预览窗格的 gutter 大小,单位 rpx",
+ "label": ""
+ },
+ {
+ "key": "imageProps",
+ "type": ["Object"],
+ "defaultValue": "",
+ "desc": "透传 Image 组件全部属性",
+ "label": ""
+ },
+ {
+ "key": "max",
+ "type": ["Number"],
+ "defaultValue": "0",
+ "desc": "用于控制文件上传数量,值为 0 则不限制",
+ "label": ""
+ },
+ {
+ "key": "mediaType",
+ "type": ["Array"],
+ "defaultValue": "['image', 'video']",
+ "desc": "支持上传的文件类型,图片或视频",
+ "label": ""
+ },
+ {
+ "key": "requestMethod",
+ "type": ["Function"],
+ "defaultValue": "",
+ "desc": "自定义上传方法",
+ "label": ""
+ },
+ {
+ "key": "sizeLimit",
+ "type": ["Number", "Object"],
+ "defaultValue": "",
+ "desc": "图片文件大小限制,单位 KB。可选单位有:`'B' | 'KB' | 'MB' | 'GB'`。示例一:`1000`。示例二:`{ size: 2, unit: 'MB', message: '图片大小不超过 {sizeLimit} MB' }`",
+ "label": ""
+ }
+ ],
+ "events": [
+ {
+ "key": "add",
+ "desc": "上传成功后触发,仅包含本次选择的照片;`context.url` 表示选定视频的临时文件路径 (本地路径)。`context.duration` 表示选定视频的时间长度。`context.size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ },
+ {
+ "key": "complete",
+ "desc": "上传成功或失败后触发",
+ "label": ""
+ },
+ {
+ "key": "fail",
+ "desc": "上传失败后触发",
+ "label": ""
+ },
+ {
+ "key": "remove",
+ "desc": "移除文件时触发",
+ "label": ""
+ },
+ {
+ "key": "selectChange",
+ "desc": "选择文件或图片之后,上传之前,触发该事件。
`params.value` 表示之前已经上传完成的文件列表。
`params.currentSelectedFiles` 表示本次上传选中的文件列表",
+ "label": ""
+ },
+ {
+ "key": "success",
+ "desc": "上传成功后触发,包含所有上传的文件;`context.url` 表示选定视频的临时文件路径 (本地路径)。`context.duration` 表示选定视频的时间长度。`context.size`选定视频的数据量大小。更多描述参考 wx.chooseMedia 小程序官网描述",
+ "label": ""
+ }
+ ]
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.d.ts b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.d.ts
new file mode 100644
index 0000000..3dcc153
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.d.ts
@@ -0,0 +1,48 @@
+import { SuperComponent } from '../common/src/index';
+import { UploadFile } from './type';
+export default class Upload extends SuperComponent {
+ externalClasses: string[];
+ options: {
+ multipleSlots: boolean;
+ };
+ data: {
+ classPrefix: string;
+ prefix: string;
+ current: boolean;
+ proofs: any[];
+ customFiles: UploadFile[];
+ customLimit: number;
+ column: number;
+ };
+ properties: import("./type").TdUploadProps;
+ controlledProps: {
+ key: string;
+ event: string;
+ }[];
+ observers: {
+ files(files: UploadFile): void;
+ max(max: any): void;
+ gridConfig(): void;
+ };
+ lifetimes: {
+ ready(): void;
+ };
+ onProofTap(e: any): void;
+ handleLimit(customFiles: UploadFile[], max: number): void;
+ triggerSuccessEvent(files: any): void;
+ triggerFailEvent(err: any): void;
+ onFileClick(e: any): void;
+ getFileType(mediaType: string[], tempFilePath: string, fileType?: string): string;
+ getRandFileName(filePath: any): string;
+ onDelete(e: any): void;
+ deleteHandle(index: number): void;
+ updateGrid(): void;
+ methods: {
+ uploadFiles(files: UploadFile[]): Promise;
+ startUpload(files: UploadFile[]): any;
+ onAddTap(): void;
+ chooseMedia(mediaType: any): void;
+ chooseMessageFile(mediaType: any): void;
+ afterSelect(files: any): void;
+ };
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.js b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.js
new file mode 100644
index 0000000..cd4902e
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.js
@@ -0,0 +1,231 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import { isObject, SuperComponent, wxComponent } from '../common/src/index';
+import props from './props';
+import config from '../common/config';
+import { isOverSize } from '../common/utils';
+const { prefix } = config;
+const name = `${prefix}-upload`;
+let Upload = class Upload extends SuperComponent {
+ constructor() {
+ super(...arguments);
+ this.externalClasses = [`${prefix}-class`];
+ this.options = {
+ multipleSlots: true,
+ };
+ this.data = {
+ classPrefix: name,
+ prefix,
+ current: false,
+ proofs: [],
+ customFiles: [],
+ customLimit: 0,
+ column: 4,
+ };
+ this.properties = props;
+ this.controlledProps = [
+ {
+ key: 'files',
+ event: 'success',
+ },
+ ];
+ this.observers = {
+ files(files) {
+ this.handleLimit(files, this.data.max);
+ },
+ max(max) {
+ this.handleLimit(this.data.customFiles, max);
+ },
+ gridConfig() {
+ this.updateGrid();
+ },
+ };
+ this.lifetimes = {
+ ready() {
+ this.handleLimit(this.data.customFiles, this.data.max);
+ this.updateGrid();
+ },
+ };
+ this.methods = {
+ uploadFiles(files) {
+ return new Promise((resolve) => {
+ const task = this.data.requestMethod(files);
+ if (task instanceof Promise) {
+ return task;
+ }
+ resolve({});
+ });
+ },
+ startUpload(files) {
+ if (typeof this.data.requestMethod === 'function') {
+ return this.uploadFiles(files)
+ .then(() => {
+ files.forEach((file) => {
+ file.percent = 100;
+ });
+ this.triggerSuccessEvent(files);
+ })
+ .catch((err) => {
+ this.triggerFailEvent(err);
+ });
+ }
+ this.triggerSuccessEvent(files);
+ this.handleLimit(this.data.customFiles, this.data.max);
+ return Promise.resolve();
+ },
+ onAddTap() {
+ const { mediaType, source } = this.properties;
+ if (source === 'media') {
+ this.chooseMedia(mediaType);
+ }
+ else {
+ this.chooseMessageFile(mediaType);
+ }
+ },
+ chooseMedia(mediaType) {
+ const { config, sizeLimit, customLimit } = this.data;
+ wx.chooseMedia(Object.assign(Object.assign({ count: customLimit, mediaType }, config), { success: (res) => {
+ const files = [];
+ res.tempFiles.forEach((temp) => {
+ const { size, fileType, tempFilePath, width, height, duration, thumbTempFilePath } = temp, res = __rest(temp, ["size", "fileType", "tempFilePath", "width", "height", "duration", "thumbTempFilePath"]);
+ if (isOverSize(size, sizeLimit)) {
+ let title = `${fileType === 'image' ? '图片' : '视频'}大小超过限制`;
+ if (typeof sizeLimit !== 'number') {
+ title = sizeLimit.message.replace('{sizeLimit}', sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.size);
+ }
+ wx.showToast({ icon: 'none', title });
+ return;
+ }
+ const name = this.getRandFileName(tempFilePath);
+ files.push(Object.assign({ name, type: this.getFileType(mediaType, tempFilePath, fileType), url: tempFilePath, size: size, width: width, height: height, duration: duration, thumb: thumbTempFilePath, percent: 0 }, res));
+ });
+ this.afterSelect(files);
+ }, fail: (err) => {
+ this.triggerFailEvent(err);
+ }, complete: (res) => {
+ this.triggerEvent('complete', res);
+ } }));
+ },
+ chooseMessageFile(mediaType) {
+ const { max, config, sizeLimit } = this.properties;
+ wx.chooseMessageFile(Object.assign(Object.assign({ count: max, type: Array.isArray(mediaType) ? 'all' : mediaType }, config), { success: (res) => {
+ const files = [];
+ res.tempFiles.forEach((temp) => {
+ const { size, type: fileType, path: tempFilePath } = temp, res = __rest(temp, ["size", "type", "path"]);
+ if (isOverSize(size, sizeLimit)) {
+ let title = `${fileType === 'image' ? '图片' : '视频'}大小超过限制`;
+ if (typeof sizeLimit !== 'number') {
+ title = sizeLimit.message.replace('{sizeLimit}', sizeLimit === null || sizeLimit === void 0 ? void 0 : sizeLimit.size);
+ }
+ wx.showToast({ icon: 'none', title });
+ return;
+ }
+ const name = this.getRandFileName(tempFilePath);
+ files.push(Object.assign({ name, type: this.getFileType(mediaType, tempFilePath, fileType), url: tempFilePath, size: size, percent: 0 }, res));
+ });
+ this.afterSelect(files);
+ }, fail: (err) => this.triggerFailEvent(err), complete: (res) => this.triggerEvent('complete', res) }));
+ },
+ afterSelect(files) {
+ this._trigger('select-change', {
+ files: [...this.data.customFiles],
+ currentSelectedFiles: [files],
+ });
+ this._trigger('add', { files });
+ this.startUpload(files);
+ },
+ };
+ }
+ onProofTap(e) {
+ var _a;
+ this.onFileClick(e);
+ const { index } = e.currentTarget.dataset;
+ wx.previewImage({
+ urls: this.data.customFiles.filter((file) => file.percent !== -1).map((file) => file.url),
+ current: (_a = this.data.customFiles[index]) === null || _a === void 0 ? void 0 : _a.url,
+ });
+ }
+ handleLimit(customFiles, max) {
+ while (max !== 0 && customFiles.length - max > 0) {
+ customFiles.pop();
+ }
+ const proofs = [];
+ customFiles.forEach((item) => {
+ if (item.type !== 'video') {
+ proofs.push(item.url);
+ }
+ });
+ this.setData({
+ customFiles,
+ proofs,
+ customLimit: max === 0 ? Number.MAX_SAFE_INTEGER : max - customFiles.length,
+ });
+ }
+ triggerSuccessEvent(files) {
+ this._trigger('success', { files: [...this.data.customFiles, ...files] });
+ }
+ triggerFailEvent(err) {
+ this.triggerEvent('fail', err);
+ }
+ onFileClick(e) {
+ const { file } = e.currentTarget.dataset;
+ this.triggerEvent('click', { file });
+ }
+ getFileType(mediaType, tempFilePath, fileType) {
+ if (fileType)
+ return fileType;
+ if (mediaType.length === 1) {
+ return mediaType[0];
+ }
+ const videoType = ['avi', 'wmv', 'mkv', 'mp4', 'mov', 'rm', '3gp', 'flv', 'mpg', 'rmvb'];
+ const temp = tempFilePath.split('.');
+ const postfix = temp[temp.length - 1];
+ if (videoType.includes(postfix.toLocaleLowerCase())) {
+ return 'video';
+ }
+ return 'image';
+ }
+ getRandFileName(filePath) {
+ const extIndex = filePath.lastIndexOf('.');
+ const extName = extIndex === -1 ? '' : filePath.substr(extIndex);
+ return parseInt(`${Date.now()}${Math.floor(Math.random() * 900 + 100)}`, 10).toString(36) + extName;
+ }
+ onDelete(e) {
+ const { index } = e.currentTarget.dataset;
+ this.deleteHandle(index);
+ }
+ deleteHandle(index) {
+ const { customFiles } = this.data;
+ const delFile = customFiles[index];
+ this.triggerEvent('remove', { index, file: delFile });
+ }
+ updateGrid() {
+ let { gridConfig = {} } = this.properties;
+ if (!isObject(gridConfig))
+ gridConfig = {};
+ const { column = 4, width = 160, height = 160 } = gridConfig;
+ this.setData({
+ gridItemStyle: `width:${width}rpx;height:${height}rpx`,
+ column: column,
+ });
+ }
+};
+Upload = __decorate([
+ wxComponent()
+], Upload);
+export default Upload;
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.json b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.json
new file mode 100644
index 0000000..010327d
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.json
@@ -0,0 +1,9 @@
+{
+ "component": true,
+ "usingComponents": {
+ "t-grid": "../grid/grid",
+ "t-grid-item": "../grid-item/grid-item",
+ "t-icon": "../icon/icon",
+ "t-image": "../image/image"
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxml b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxml
new file mode 100644
index 0000000..0a96c4b
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{file.percent ? file.percent + '%' : '上传中...'}}
+
+
+
+ {{file.status == 'reload' ? '重新上传' : '上传失败'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{addContent}}
+
+
+
+
+
+
+
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxs b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxs
new file mode 100644
index 0000000..03b321f
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxs
@@ -0,0 +1,15 @@
+module.exports.getWrapperAriaRole = function (file) {
+ return file.status && file.status != 'done' ? 'text' : 'button';
+};
+
+module.exports.getWrapperAriaLabel = function (file) {
+ if (file.status && file.status != 'done') {
+ if (file.status == 'loading') {
+ return file.percent ? '上传中:' + file.percent + '%' : '上传中';
+ } else {
+ return file.status == 'reload' ? '重新上传' : '上传失败';
+ }
+ } else {
+ return file.type === 'video' ? '视频' : '图像';
+ }
+};
diff --git a/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxss b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxss
new file mode 100644
index 0000000..cd82c55
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/miniprogram_dist/upload/upload.wxss
@@ -0,0 +1,101 @@
+.t-float-left {
+ float: left;
+}
+.t-float-right {
+ float: right;
+}
+@keyframes tdesign-fade-out {
+ from {
+ opacity: 1;
+ }
+ to {
+ opacity: 0;
+ }
+}
+.hotspot-expanded.relative {
+ position: relative;
+}
+.hotspot-expanded::after {
+ content: '';
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ transform: scale(1.5);
+}
+.t-upload__grid-content {
+ padding: 0;
+}
+.t-upload__grid-file {
+ position: relative;
+}
+.t-upload__add-icon {
+ width: 100%;
+ height: 100%;
+ display: none;
+ align-items: center;
+ justify-content: center;
+ font-size: var(--td-upload-add-icon-font-size, 56rpx);
+ background-color: var(--td-upload-add-bg-color, var(--td-bg-color-secondarycontainer, var(--td-gray-color-1, #f3f3f3)));
+ color: var(--td-upload-add-color, var(--td-font-gray-3, rgba(0, 0, 0, 0.4)));
+ border-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+}
+.t-upload__add-icon:only-child {
+ display: flex;
+}
+.t-upload__thumbnail {
+ width: 100%;
+ height: 100%;
+ max-height: 100%;
+ overflow: hidden;
+}
+.t-upload__wrapper {
+ position: relative;
+ border-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ overflow: hidden;
+}
+.t-upload__close-btn {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 40rpx;
+ height: 40rpx;
+ border-top-right-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ border-bottom-left-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ background-color: var(--td-font-gray-3, rgba(0, 0, 0, 0.4));
+}
+.t-upload__progress-mask {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: var(--td-font-gray-3, rgba(0, 0, 0, 0.4));
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ border-radius: var(--td-upload-radius, var(--td-radius-default, 12rpx));
+ color: var(--td-font-white-1, #ffffff);
+ padding: 32rpx 0;
+}
+.t-upload__progress-text {
+ font-size: 24rpx;
+ line-height: 40rpx;
+ margin-top: 8rpx;
+}
+.t-upload__progress-loading {
+ animation: spin infinite linear 0.6s;
+}
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
diff --git a/node_modules/tdesign-miniprogram/package.json b/node_modules/tdesign-miniprogram/package.json
new file mode 100644
index 0000000..e29e542
--- /dev/null
+++ b/node_modules/tdesign-miniprogram/package.json
@@ -0,0 +1,128 @@
+{
+ "name": "tdesign-miniprogram",
+ "purename": "tdesign",
+ "version": "1.1.1",
+ "description": "tdesign-miniprogram",
+ "title": "tdesign-ßminiprogram",
+ "main": "miniprogram_dist/index.js",
+ "miniprogram": "miniprogram_dist",
+ "keywords": [
+ "tdesign",
+ "miniprogram"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Tencent/tdesign-miniprogram"
+ },
+ "homepage": "https://tdesign.tencent.com/miniprogram",
+ "scripts": {
+ "start": "npm run dev",
+ "dev": "cross-env NODE_ENV=development gulp dev --gulpfile script/gulpfile.js --cwd ./",
+ "build": "cross-env NODE_ENV=production gulp build --gulpfile script/gulpfile.js --cwd ./",
+ "build:dist": "gulp --gulpfile script/gulpfile.dist.js --cwd ./",
+ "build:example": "gulp --gulpfile script/gulpfile.example.js --cwd ./",
+ "build:assets": "cross-env NODE_ENV=production gulp assets:build --gulpfile script/gulpfile.dist.js --cwd ./",
+ "update:icons": "node script/update-icons.js",
+ "lintfix": "eslint '{src,example}/**/*.{js,ts}' --fix",
+ "lint": "eslint '{src,example}/**/*.{js,ts}'",
+ "format": "prettier {src,example,script}/**/*.{js,ts,wxss,less,wxml,html,json,md,wxs} --write",
+ "site": "cd site && vite build",
+ "site:dev": "cd site && vite",
+ "site:intranet": "cd site && vite build --mode intranet",
+ "site:prerender": "node script/prerender.mjs",
+ "cover": "jest --coverage",
+ "test": "jest && jest -c jest.virtualHost.config.js && jest -c jest.e2e.config.js",
+ "test:virtualHost": "jest -c jest.virtualHost.config.js",
+ "test:snap-update": "npm run test:virtualHost -- -u && npm run test:unit -- -u",
+ "test:demo": "node gen-demo-test.js",
+ "test:unit": "jest",
+ "test:e2e": "jest -c jest.e2e.config.js",
+ "badge": "node script/coverage-badge.js",
+ "prepare": "husky install",
+ "generate": "gulp generate --gulpfile script/gulpfile.js --cwd ./",
+ "changelog": "node script/generate-changelog.js",
+ "robot": "publish-cli robot-msg",
+ "qrcode": "node script/qrcode/index.js"
+ },
+ "author": "tdesign",
+ "license": "MIT",
+ "devDependencies": {
+ "@babel/core": "^7.12.10",
+ "@babel/plugin-proposal-decorators": "^7.18.9",
+ "@babel/preset-env": "^7.12.11",
+ "@babel/preset-typescript": "^7.12.7",
+ "@commitlint/cli": "^16.0.2",
+ "@commitlint/config-conventional": "^16.0.0",
+ "@rollup/plugin-node-resolve": "^13.0.5",
+ "@types/jest": "^27.0.3",
+ "@typescript-eslint/eslint-plugin": "^5.6.0",
+ "@typescript-eslint/parser": "~5.35.0",
+ "@vitejs/plugin-vue": "^2.3.3",
+ "@vitejs/plugin-vue-jsx": "^1.1.7",
+ "@vue/compiler-sfc": "^3.2.4",
+ "axios": "^1.1.3",
+ "babel-jest": "^26.6.3",
+ "commitizen": "^4.2.4",
+ "cross-env": "^7.0.2",
+ "cz-conventional-changelog": "^3.3.0",
+ "del": "^6.1.1",
+ "eslint": "^7.0.0",
+ "eslint-config-airbnb-base": "^14.2.1",
+ "eslint-config-prettier": "^6.11.0",
+ "eslint-plugin-import": "^2.24.2",
+ "eslint-plugin-prettier": "^4.0.0",
+ "glob": "^8.1.0",
+ "gray-matter": "^4.0.3",
+ "gulp": "^4.0.2",
+ "gulp-changed": "^4.0.2",
+ "gulp-if": "^3.0.0",
+ "gulp-less": "^5.0.0",
+ "gulp-mp-npm": "^1.9.7",
+ "gulp-plumber": "^1.2.1",
+ "gulp-rename": "^2.0.0",
+ "gulp-replace": "^1.0.0",
+ "gulp-replace-task": "^2.0.1",
+ "gulp-sourcemaps": "^3.0.0",
+ "gulp-typescript": "^6.0.0-alpha.1",
+ "husky": "^7.0.4",
+ "jest": "^26.6.3",
+ "jest-html-reporter": "^3.3.0",
+ "jsdom": "^20.0.0",
+ "less": "^4.1.1",
+ "lint-staged": "^10.0.0-1",
+ "lodash": "^4.17.21",
+ "miniprogram-api-typings": "^3.4.6",
+ "miniprogram-automator": "^0.10.0",
+ "miniprogram-simulate": "^1.5.7",
+ "npm-run-all": "^4.1.5",
+ "playwright": "^1.19.1",
+ "prettier": "^2.0.5",
+ "prismjs": "^1.24.1",
+ "standard-changelog": "^2.0.27",
+ "stylelint": "^13.13.1",
+ "tdesign-icons-view": "^0.1.0",
+ "tdesign-publish-cli": "^0.0.12",
+ "tdesign-site-components": "^0.12.2",
+ "typescript": "~4.7.2",
+ "vite": "^2.7.6",
+ "vite-plugin-tdoc": "^2.0.1",
+ "vue": "^3.2.4",
+ "vue-router": "^4.0.11"
+ },
+ "config": {
+ "commitizen": {
+ "path": "./node_modules/cz-conventional-changelog"
+ }
+ },
+ "lint-staged": {
+ "{src,example,script}/**/*.{js,ts,wxml,html,json,less}": [
+ "prettier --write"
+ ],
+ "{src,example}/**/*.{js,ts}": [
+ "eslint --fix"
+ ]
+ },
+ "dependencies": {
+ "dayjs": "^1.10.7"
+ }
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..cfbd3a8
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,29 @@
+{
+ "name": "xzjl_ui",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "xzjl_ui",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "tdesign-miniprogram": "^1.1.1"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.7",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
+ "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+ },
+ "node_modules/tdesign-miniprogram": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/tdesign-miniprogram/-/tdesign-miniprogram-1.1.1.tgz",
+ "integrity": "sha512-35RuAfR74Hq3HEsOS3NRHyP9S1vdMI8/JSXgtPNV805KEtD9rHRK3Rn9gD08UqvGyemVOoB1IVzwk63fie4t2A==",
+ "dependencies": {
+ "dayjs": "^1.10.7"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..4590d6d
--- /dev/null
+++ b/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "xzjl_ui",
+ "version": "1.0.0",
+ "description": "xxx",
+ "main": ".eslintrc.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "lsl",
+ "license": "ISC",
+ "dependencies": {
+ "tdesign-miniprogram": "^1.1.1"
+ }
+}
diff --git a/pages/home/jl/index.js b/pages/home/jl/index.js
new file mode 100644
index 0000000..f0b0184
--- /dev/null
+++ b/pages/home/jl/index.js
@@ -0,0 +1,84 @@
+// pages/home/jl/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ },
+
+ ToastDialog(e) {
+ const { item } = e.currentTarget.dataset;
+
+ this.setData(
+ {
+ },
+ () => {
+ this.setData({ visible: true });
+ },
+ );
+ }
+ ,
+ onVisibleChange(e) {
+ this.setData({
+ visible: e.detail.visible,
+ });
+ }
+})
\ No newline at end of file
diff --git a/pages/home/jl/index.json b/pages/home/jl/index.json
new file mode 100644
index 0000000..8ed80a2
--- /dev/null
+++ b/pages/home/jl/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "t-progress": "tdesign-miniprogram/progress/progress",
+ "t-popup": "tdesign-miniprogram/popup/popup",
+ "t-rate": "tdesign-miniprogram/rate/rate"
+ }
+}
\ No newline at end of file
diff --git a/pages/home/jl/index.wxml b/pages/home/jl/index.wxml
new file mode 100644
index 0000000..323d027
--- /dev/null
+++ b/pages/home/jl/index.wxml
@@ -0,0 +1,126 @@
+
+
+
+ 为七个字的头像
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+70%
+
+
+
+
+水晶能量
+能量注入
+
+
+
+
+
+
+ 七个字的头像
+
+
+ 为七个字的头像
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 祈祷
+
+
+
+
+ 70%
+ 79%
+
+
+
+
+
+
+ 为七个字的头像
+
+
+
+
+
+
+
+
+
+ 幸运数字
+ Ta的运势
+ 幸运颜色
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/home/jl/index.wxss b/pages/home/jl/index.wxss
new file mode 100644
index 0000000..696f883
--- /dev/null
+++ b/pages/home/jl/index.wxss
@@ -0,0 +1,607 @@
+/* pages/home/jl/index.wxss */
+.tx{
+ position:absolute;
+ width:72rpx;
+ height:72rpx;
+ margin-top:142.67rpx;
+ margin-left:249.33rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/tx.png);
+}
+
+.txtext{
+ position:absolute;
+ width:772rpx;
+ height:72rpx;
+ line-height:72rpx;
+ color: #9a9a9a;
+ margin-top:142.67rpx;
+ margin-left:338rpx;
+}
+
+.dcleft{
+ position:absolute;
+ width:116.67rpx;
+ height:116.67rpx;
+ margin-left: 122rpx;
+ margin-top:1232rpx;
+}
+.dcleft1{
+ position:absolute;
+}
+
+
+.t-progress__canvas--circle{
+ width:125.67rpx!important;
+ height:125.67rpx !important;
+}
+
+.dcright{
+ position:absolute;
+ width:116.67rpx;
+ height:116.67rpx;
+ margin-left: 520rpx;
+ margin-top:1232rpx;
+ background-color: #f76229;
+ border-radius: 58.335rpx;
+}
+
+.dclefttxt{
+ position:absolute;
+ width:116.67rpx;
+ height:116.67rpx;
+ margin-left: 122rpx;
+ margin-top:1365.33rpx;
+ text-align: center;
+ color: #9a9a9a;
+ font-size: 27rpx;
+}
+
+.dcrighttxt{
+ position:absolute;
+ width:116.67rpx;
+ height:116.67rpx;
+ margin-left: 520rpx;
+ margin-top:1365.33rpx;
+ text-align: center;
+ color: #9a9a9a;
+ font-size: 27rpx;
+}
+.dcrightwjx{
+ position:absolute;
+ width:68rpx;
+ height:78.67rpx;
+ margin-left:24rpx;
+ margin-top:18.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/wjx.png);
+}
+
+.dchx{
+ position:absolute;
+ width:200rpx;
+ height:16rpx;
+ margin-top:1282rpx;
+ margin-left: 275.33rpx;
+}
+
+.dchxtxt{
+ position:absolute;
+ width:200rpx;
+ height:16rpx;
+ margin-top:1320.67rpx;
+ margin-left: 275.33rpx;
+ text-align: center;
+ color: #f76229;
+ font-size: 27rpx;
+}
+
+.dcbs{
+ position:absolute;
+ width:62.67rpx;
+ height:72rpx;
+ margin-top:26.30rpx;
+ margin-left: 29.33rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/bs.png);
+}
+
+
+.gh{
+ position:absolute;
+ width:750rpx;
+ height:182rpx;
+ margin-top:1070.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/gh.png);
+}
+
+
+.call{
+ margin: 0;
+ padding: 0;
+ width:750rpx;
+ height:1624rpx;
+ overflow: hidden;
+}
+
+.call1{
+ margin-top:-50rpx;
+ padding: 0!important;
+ width:750rpx;
+ height:1624rpx;
+ overflow: hidden;
+}
+
+.dcrightql{
+ position:absolute;
+ width:116.67rpx;
+ height:116.67rpx;
+ margin-left: 520rpx;
+ margin-top:1232rpx;
+ border-radius: 58.335rpx;
+}
+.dcrightql1{
+ position:absolute;
+}
+
+.dcrbs{
+ position:absolute;
+ width:62.67rpx;
+ height:72rpx;
+ margin-top:29.30rpx;
+ margin-left: 32.33rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/rbs.png);
+}
+
+.lovepic{
+ position: absolute;
+ width:290rpx;
+ height:50.67rpx;
+ margin-top:1264.67rpx;
+ margin-left:235.33rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/pulse.png);
+}
+
+.dchxtxtql{
+ position:absolute;
+ width:200rpx;
+ height:16rpx;
+ margin-top:1320.67rpx;
+ margin-left: 275.33rpx;
+ text-align: center;
+ color: #9a9a9a;
+ font-size: 27rpx;
+}
+
+
+.txl{
+ position:absolute;
+ width:72rpx;
+ height:72rpx;
+ margin-top:142.67rpx;
+ margin-left:218rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/tx.png);
+}
+
+.txr{
+ position:absolute;
+ width:72rpx;
+ height:72rpx;
+ margin-top:142.67rpx;
+ margin-left:400.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/tx.png);
+}
+
+.txtextl{
+ position:absolute;
+ width:772rpx;
+ height:72rpx;
+ line-height:72rpx;
+ color: #9a9a9a;
+ margin-top:142.67rpx;
+ margin-left:36rpx;
+ font-size: 27rpx;
+}
+.jiuchan{
+ position: absolute;
+ width:47.33rpx;
+ height:26rpx;
+ margin-top: 169.33rpx;
+ margin-left: 322.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/jiuchan.png);
+
+}
+
+.txtextr{
+ position:absolute;
+ width:772rpx;
+ height:72rpx;
+ line-height:72rpx;
+ color: #9a9a9a;
+ margin-top:142.67rpx;
+ margin-left:493.33rpx;
+ font-size: 27rpx;
+}
+
+.bkg3{
+ position: absolute;
+ width:47.33rpx;
+ height:26rpx;
+ margin-top: 169.33rpx;
+ margin-left: 322.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/bkg3.png);
+}
+
+.xxt{
+ position: absolute;
+ width:326.67rpx;
+ height:771.33rpx;
+ margin-top: 326.67rpx;
+ margin-left: 212rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/szn.png);
+}
+
+.yan1{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 837.33rpx;
+ margin-left:118.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+.yan2{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 837.33rpx;
+ margin-left:318rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+.yan3{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ margin-top: 837.33rpx;
+ margin-left:517.33rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+
+.bkg1{
+ position: absolute;
+ width:684.67rpx;
+ height:988rpx;
+ margin-top: 169.33rpx;
+ margin-left:46rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/bkg1.png);
+}
+
+.bkg3{
+ position: absolute;
+ width:660rpx;
+ height:952rpx;
+ margin-top: 205.33rpx;
+ margin-left:42rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/bkg3.png);
+}
+
+.yan11{
+ position: absolute;
+ width:46.67rpx;
+ height:46.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 33.33rpx;
+ margin-left:34.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/paw.png);
+}
+
+.yan12{
+ position: absolute;
+ width:46.67rpx;
+ height:46.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 33.33rpx;
+ margin-left:34.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/male.png);
+}
+
+.yan13{
+ position: absolute;
+ width:46.67rpx;
+ height:46.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 33.33rpx;
+ margin-left:34.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/female.png);
+}
+
+.xxtl{
+ position: absolute;
+ width:326.67rpx;
+ height:771.33rpx;
+ margin-top: 326.67rpx;
+ margin-left: 88rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/szn.png);
+}
+
+.xxtr{
+ position: absolute;
+ width:323.33rpx;
+ height:787.33rpx;
+ margin-top: 308.67rpx;
+ margin-left: 355.33rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/xxtr.png);
+}
+
+.yanql1{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 492rpx;
+ margin-left:86.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+
+.yanql2{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 663.33rpx;
+ margin-left:38.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+
+.yanql4{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 492rpx;
+ margin-left:550.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+
+.yanql5{
+ position: absolute;
+ width:114rpx;
+ height:116.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 663.33rpx;
+ margin-left:598rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+}
+
+.xxtq{
+ position: absolute;
+ width:326.67rpx;
+ height:771.33rpx;
+ margin-top: 326.67rpx;
+ margin-left: 212rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/xxtr.png);
+}
+
+.k1{
+ position: absolute;
+ width:116rpx;
+ height:116rpx;
+ line-height:116rpx;
+ text-align: center;
+ margin-top: 1232.67rpx;
+ margin-left: 114.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/circle.png);
+
+}
+
+.k2{
+ position: absolute;
+ width:116rpx;
+ height:116rpx;
+ margin-top: 1232.67rpx;
+ margin-left: 318rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yan.png);
+
+}
+
+.k3{
+ position: absolute;
+ width:116rpx;
+ height:116rpx;
+ line-height:116rpx;
+ text-align: center;
+ margin-top: 1232.67rpx;
+ margin-left: 520.67rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/circle.png);
+
+}
+
+.k11{
+ position: absolute;
+ width:46rpx;
+ height:46rpx;
+ margin-top: 34rpx;
+ margin-left: 36rpx;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/jl/yst.png);
+
+}
+
+.ktext1{
+ position: absolute;
+ width:116rpx;
+ height:116rpx;
+ margin-top: 1366rpx;
+ margin-left: 114.67rpx;
+ text-align: center;
+ color: #9a9a9a;
+ font-size: 27rpx;
+}
+
+.ktext2{
+ position: absolute;
+ width:116rpx;
+ height:116rpx;
+ margin-top: 1366rpx;
+ margin-left: 318rpx;
+ text-align: center;
+ color: #9a9a9a;
+ font-size: 27rpx;
+}
+
+.ktext3{
+ position: absolute;
+ width:116rpx;
+ height:116rpx;
+ margin-top: 1366rpx;
+ margin-left: 520.67rpx;
+ text-align: center;
+ color: #9a9a9a;
+ font-size: 27rpx;
+}
+
+.ttpopup{
+ width: 659.33rpx;
+ height:804rpx;
+ background:rgba(255, 255, 255, 0.9);
+ border-radius: 36rpx;
+}
+
+.ztys{
+ position: absolute;
+ width: 542.67rpx;
+ height: 290rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ left: 0;
+ right: 0;
+ margin: 84rpx auto;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xzt/ztys.png);
+}
+
+.jkzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:97.33rpx;
+ margin-top: 589.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/jkzs.png);
+}
+
+.aqzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:97.33rpx;
+ margin-top: 653.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/aqzs.png);
+}
+
+.cyzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:97.33rpx;
+ margin-top: 717.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/cyzs.png);
+}
+
+.rjkzs{
+ position: absolute;
+ width: 311.33rpx;
+ height: 26.67rpx;
+ line-height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ margin-left:279.33rpx;
+ margin-top: 580.33rpx;
+}
+
+.raqzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ line-height:26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:279.33rpx;
+ margin-top: 644.33rpx;
+}
+
+.rcyzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ line-height:26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:279.33rpx;
+ margin-top: 708.33rpx;
+}
+
diff --git a/pages/home/me/indexx.js b/pages/home/me/indexx.js
new file mode 100644
index 0000000..1e9c21f
--- /dev/null
+++ b/pages/home/me/indexx.js
@@ -0,0 +1,66 @@
+// pages/home/me/indexx.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/home/me/indexx.json b/pages/home/me/indexx.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/home/me/indexx.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/home/me/indexx.wxml b/pages/home/me/indexx.wxml
new file mode 100644
index 0000000..ca544fe
--- /dev/null
+++ b/pages/home/me/indexx.wxml
@@ -0,0 +1,2 @@
+
+pages/home/me/indexx.wxml
diff --git a/pages/home/me/indexx.wxss b/pages/home/me/indexx.wxss
new file mode 100644
index 0000000..725140b
--- /dev/null
+++ b/pages/home/me/indexx.wxss
@@ -0,0 +1 @@
+/* pages/home/me/indexx.wxss */
\ No newline at end of file
diff --git a/pages/home/xx/index.js b/pages/home/xx/index.js
new file mode 100644
index 0000000..a1cf8c9
--- /dev/null
+++ b/pages/home/xx/index.js
@@ -0,0 +1,71 @@
+// pages/home/xx/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ },
+ toSend(){
+ wx.redirectTo({
+ url: 'xz/xz'
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/home/xx/index.json b/pages/home/xx/index.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/home/xx/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/home/xx/index.wxml b/pages/home/xx/index.wxml
new file mode 100644
index 0000000..a4e1324
--- /dev/null
+++ b/pages/home/xx/index.wxml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/pages/home/xx/index.wxss b/pages/home/xx/index.wxss
new file mode 100644
index 0000000..8adab9d
--- /dev/null
+++ b/pages/home/xx/index.wxss
@@ -0,0 +1,97 @@
+/* pages/home/xx/index.wxss */
+
+
+.bkg{
+ position: absolute;
+ width: 691.33rpx;
+ height: 1326rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:29.33rpx;
+ margin-top: 98rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/bkg.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+.xzt{
+ position: absolute;
+ width: 398rpx;
+ height: 314rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:146.67rpx;
+ margin-top: 234rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/xzt.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.fgx{
+ position: absolute;
+ width: 398rpx;
+ height: 16rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:146.67rpx;
+ margin-top: 702rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/fgx.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.xzbtn{
+ position: absolute;
+ width: 234rpx;
+ height: 96.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:228.67rpx;
+ margin-top: 558.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/xzbtn.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.jbbtn{
+ position: absolute;
+ width: 234rpx;
+ height: 96.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:228.67rpx;
+ margin-top: 1108.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/jbbtn.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.jbt{
+ position: absolute;
+ width: 398rpx;
+ height: 314rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:146.67rpx;
+ margin-top: 784rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/jbt.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
\ No newline at end of file
diff --git a/pages/home/xx/xz/index.js b/pages/home/xx/xz/index.js
new file mode 100644
index 0000000..22ff72c
--- /dev/null
+++ b/pages/home/xx/xz/index.js
@@ -0,0 +1,66 @@
+// pages/home/xx/xz/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/home/xx/xz/index.json b/pages/home/xx/xz/index.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/home/xx/xz/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/home/xx/xz/index.wxml b/pages/home/xx/xz/index.wxml
new file mode 100644
index 0000000..7eae438
--- /dev/null
+++ b/pages/home/xx/xz/index.wxml
@@ -0,0 +1,2 @@
+
+pages/home/xx/xz/index.wxml
diff --git a/pages/home/xx/xz/index.wxss b/pages/home/xx/xz/index.wxss
new file mode 100644
index 0000000..6713907
--- /dev/null
+++ b/pages/home/xx/xz/index.wxss
@@ -0,0 +1 @@
+/* pages/home/xx/xz/index.wxss */
\ No newline at end of file
diff --git a/pages/home/xx/xz/xz.js b/pages/home/xx/xz/xz.js
new file mode 100644
index 0000000..aaa1b26
--- /dev/null
+++ b/pages/home/xx/xz/xz.js
@@ -0,0 +1,66 @@
+// pages/home/xx/xz/xz.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/home/xx/xz/xz.json b/pages/home/xx/xz/xz.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/home/xx/xz/xz.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/home/xx/xz/xz.wxml b/pages/home/xx/xz/xz.wxml
new file mode 100644
index 0000000..2f7880a
--- /dev/null
+++ b/pages/home/xx/xz/xz.wxml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/pages/home/xx/xz/xz.wxss b/pages/home/xx/xz/xz.wxss
new file mode 100644
index 0000000..b705aad
--- /dev/null
+++ b/pages/home/xx/xz/xz.wxss
@@ -0,0 +1,45 @@
+/* pages/home/xx/xz/xz.wxss */
+.bgt1{
+ position: absolute;
+ width: 690rpx;
+ height: 227.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:30rpx;
+ margin-top: 104.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/xz/bgt1.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.bgt2{
+ position: absolute;
+ width: 750rpx;
+ height: 1081.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 608.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xx/xz/bgt2.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.xinfo{
+ background-color: #FFFCF3;
+ position: absolute;
+ width: 615.33rpx;
+ height: 1242rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 132rpx;
+ margin-left: 64.67rpx;
+ border-radius: 6.67rpx;
+}
\ No newline at end of file
diff --git a/pages/home/xy/index.js b/pages/home/xy/index.js
new file mode 100644
index 0000000..364f9be
--- /dev/null
+++ b/pages/home/xy/index.js
@@ -0,0 +1,104 @@
+// pages/home/xy/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ },
+ ToastDialog(e) {
+ const { item } = e.currentTarget.dataset;
+
+ this.setData(
+ {
+ },
+ () => {
+ this.setData({ visible: true });
+ },
+ );
+ }
+ ,
+ onVisibleChange(e) {
+ this.setData({
+ visible: e.detail.visible,
+ });
+ }
+
+ // ,
+ // methods:{
+ // ToastDialog(e) {
+ // console.log('999999999')
+ // const { item } = e.currentTarget.dataset;
+
+ // this.setData(
+ // {
+ // cur: item,
+ // },
+ // () => {
+ // this.setData({ visible: true });
+ // },
+ // );
+ // },
+ // onVisibleChange(e) {
+ // this.setData({
+ // visible: e.detail.visible,
+ // });
+ // }
+ // }
+})
\ No newline at end of file
diff --git a/pages/home/xy/index.json b/pages/home/xy/index.json
new file mode 100644
index 0000000..3623e08
--- /dev/null
+++ b/pages/home/xy/index.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {
+ "t-popup": "tdesign-miniprogram/popup/popup",
+ "t-rate": "tdesign-miniprogram/rate/rate"
+ }
+}
\ No newline at end of file
diff --git a/pages/home/xy/index.wxml b/pages/home/xy/index.wxml
new file mode 100644
index 0000000..aa25b7b
--- /dev/null
+++ b/pages/home/xy/index.wxml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+7
+
+
+幸运数字
+白羊座
+幸运颜色
+能量 +10%
+银币 +0.1枚
+
+
diff --git a/pages/home/xy/index.wxss b/pages/home/xy/index.wxss
new file mode 100644
index 0000000..d39685c
--- /dev/null
+++ b/pages/home/xy/index.wxss
@@ -0,0 +1,334 @@
+/* pages/home/xy/index.wxss */
+.jrys{
+ position: absolute;
+ width: 142rpx;
+ height: 34rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:136rpx;
+ margin-left: 304rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/xy/jrys.png);
+ }
+
+ .gold{
+ position: absolute;
+ width: 750rpx;
+ height: 744rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:240.67rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/xy/gold.png);
+ }
+
+ .gold1{
+ position: absolute;
+ width: 608.22rpx;
+ height: 487.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/xy/gold1.png);
+ }
+
+ .gold2{
+ position: absolute;
+ width: 608.22rpx;
+ height: 487.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/gold22.png);
+ }
+
+ .gold3{
+ position: absolute;
+ width: 354.67rpx;
+ height: 327.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 192.67rpx;
+ margin-left:198.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/gold3.png);
+ }
+
+ .book{
+ position: absolute;
+ width: 750rpx;
+ height: 364.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top: 797.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/book.png);
+ }
+
+ .gold2{
+ position: absolute;
+ width: 608.22rpx;
+ height: 487.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/gold22.png);
+ }
+
+ .star{
+ position: absolute;
+ width: 631.22rpx;
+ height: 258rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ left: 0;
+ right: 0;
+ margin: 802.67rpx auto;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/star.png);
+ }
+
+ .xyszy{
+ position: absolute;
+ width: 116rpx;
+ height: 116rpx;
+ line-height: 116rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1232rpx;
+ margin-left:114rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/xyszy.png);
+ text-align: center;
+ font-size: 90rpx;
+ color: #6C6C6C;
+ }
+
+ .xzy{
+ position: absolute;
+ width: 116rpx;
+ height: 116rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1232rpx;
+ margin-left:316.67rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xzt/byz.png);
+ }
+
+ .xyysy{
+ position: absolute;
+ width: 116rpx;
+ height: 116rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1232rpx;
+ margin-left:520rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/xyszy.png);
+ }
+ .text1{
+ position: absolute;
+ width: 116rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1348rpx;
+ margin-left:114rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color:#6C6C6C;
+ }
+
+ .text2{
+ position: absolute;
+ width: 116rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1348rpx;
+ margin-left:316.67rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color:#6C6C6C;
+ }
+
+ .text3{
+ position: absolute;
+ width: 116rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1348rpx;
+ margin-left:520rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color:#6C6C6C;
+ }
+
+ .ttpopup{
+ width: 659.33rpx;
+ height:804rpx;
+ background:rgba(255, 255, 255, 0.9);
+ border-radius: 36rpx;
+ }
+
+ .ztys{
+ position: absolute;
+ width: 542.67rpx;
+ height: 290rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ left: 0;
+ right: 0;
+ margin: 84rpx auto;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xzt/ztys.png);
+ }
+
+ .jkzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:97.33rpx;
+ margin-top: 589.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/jkzs.png);
+ }
+
+ .aqzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:97.33rpx;
+ margin-top: 653.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/aqzs.png);
+ }
+
+ .cyzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:97.33rpx;
+ margin-top: 717.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/cyzs.png);
+ }
+
+ .rjkzs{
+ position: absolute;
+ width: 311.33rpx;
+ height: 26.67rpx;
+ line-height: 26.67rpx;
+ display: flex;
+ flex-direction: column;
+ margin-left:279.33rpx;
+ margin-top: 580.33rpx;
+ }
+
+ .raqzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ line-height:26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:279.33rpx;
+ margin-top: 644.33rpx;
+ }
+
+ .rcyzs{
+ position: absolute;
+ width: 111.33rpx;
+ height: 26.67rpx;
+ line-height:26.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:279.33rpx;
+ margin-top: 708.33rpx;
+ }
+
+
+ .nlj{
+ position: absolute;
+ width: 240rpx;
+ height: 70rpx;
+ line-height: 70rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:71.33rpx;
+ margin-top: 206.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/btn.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+ }
+
+ .xyj{
+ position: absolute;
+ width: 240rpx;
+ height: 70rpx;
+ line-height: 70rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:452rpx;
+ margin-top: 206.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/btn.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+ }
diff --git a/pages/home/xyc/index.js b/pages/home/xyc/index.js
new file mode 100644
index 0000000..51f4ee8
--- /dev/null
+++ b/pages/home/xyc/index.js
@@ -0,0 +1,66 @@
+// pages/home/xyc/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/home/xyc/index.json b/pages/home/xyc/index.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/home/xyc/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/home/xyc/index.wxml b/pages/home/xyc/index.wxml
new file mode 100644
index 0000000..6aed468
--- /dev/null
+++ b/pages/home/xyc/index.wxml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/pages/home/xyc/index.wxss b/pages/home/xyc/index.wxss
new file mode 100644
index 0000000..6f68b62
--- /dev/null
+++ b/pages/home/xyc/index.wxss
@@ -0,0 +1,48 @@
+/* pages/home/xyc/index.wxss */
+.xyk{
+ position: absolute;
+ width: 690rpx;
+ height: 227.34rpx;
+ line-height: 70rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:30rpx;
+ margin-top: 1194rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xyc/xyk.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+.xybtn{
+ position: absolute;
+ width: 234rpx;
+ height: 96.67rpx;
+ display: flex;
+ text-align: center;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-left:452rpx;
+ margin-top: 206.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/btn.png);
+ color:#9A9A9A;
+ text-align: center;
+ font-size: 27rpx;
+}
+
+
+.xybtn1{
+ position: absolute;
+ margin-left: 158rpx;
+ margin-top: 279rpx;
+ width: 234rpx;
+ height: 96.67rpx;
+ border-radius: 30rpx;
+ background: linear-gradient(233.49deg, rgba(248,99,42,1) 10.48%,rgba(249,135,89,1) 89.2%);
+ text-align: center;
+ box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
+ border: 20rpx solid rgba(255, 255, 255, 1);
+}
\ No newline at end of file
diff --git a/pages/index/index.js b/pages/index/index.js
new file mode 100644
index 0000000..4f47223
--- /dev/null
+++ b/pages/index/index.js
@@ -0,0 +1,77 @@
+// pages/index/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ },
+ toUrl(){
+ wx.switchTab({
+ url: '/pages/home/xy/index'
+ })
+ },
+ go2Get(){
+ wx.navigateTo({
+ url: '/pages/index/out/out'
+ })
+
+ }
+})
\ No newline at end of file
diff --git a/pages/index/index.json b/pages/index/index.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/index/index.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
new file mode 100644
index 0000000..fa03f1e
--- /dev/null
+++ b/pages/index/index.wxml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+ 获取晶石
+
+
+
diff --git a/pages/index/index.wxss b/pages/index/index.wxss
new file mode 100644
index 0000000..dd6383e
--- /dev/null
+++ b/pages/index/index.wxss
@@ -0,0 +1,112 @@
+/* pages/index/index.wxss */
+.bg{
+ position: absolute;
+ width: 750rpx;
+ height: 1419rpx;
+ display: flex;
+ flex-direction: column;
+ margin-top: 112.67rpx;
+ margin-left: 37.33rpx;
+ background-image: url(https://xzjl-1257436036.cos.ap-nanjing.myqcloud.com/xy/bkg.png);
+ background-repeat: no-repeat;
+ background-size: 675.34rpx 100%;
+ }
+
+ .quest{
+ position: absolute;
+ width: 50rpx;
+ height: 50rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size: 50rpx 50rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/question.png);
+ }
+
+ .alb{
+ position: absolute;
+ width: 432rpx;
+ height: 192.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:234.67rpx;
+ margin-left: 121.67rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/alb.png);
+ }
+
+ .qr{
+ position: absolute;
+ width: 150.67rpx;
+ height: 150.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:540.67rpx;
+ margin-left: 262.33rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/qr.png);
+ }
+
+ .js{
+ position: absolute;
+ width: 115.33rpx;
+ height: 173.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:535.33rpx;
+ margin-left: 280rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/js.png);
+ }
+
+ .yw{
+ position: absolute;
+ width: 399.33rpx;
+ height: 53.33rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:718rpx;
+ margin-left: 138rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/yw.png);
+ }
+
+ .jstext{
+ position: absolute;
+ width: 399.33rpx;
+ height: 216rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:891.33rpx;
+ margin-left: 138rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/jstext.png);
+ }
+
+ .yx{
+ position: absolute;
+ width: 272rpx;
+ height: 170.67rpx;
+ display: flex;
+ flex-direction: column;
+ background-repeat: no-repeat;
+ background-size:100% 100%;
+ margin-top:1158rpx;
+ margin-left: 201.67rpx;
+ background-image: url(https://gitee.com/lsltsl/zodiac-elf/raw/master/xzjl/index/yx.png);
+ }
+
+ .hqjs{
+ width: 272rpx;
+ text-align: center;
+ height: 170.67rpx;
+ line-height: 170.67rpx;
+ color: cornsilk;
+ font-size: 40rpx;
+ font-weight: bold;
+ }
diff --git a/pages/index/out/out.js b/pages/index/out/out.js
new file mode 100644
index 0000000..c867bce
--- /dev/null
+++ b/pages/index/out/out.js
@@ -0,0 +1,66 @@
+// pages/index/out/out.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/index/out/out.json b/pages/index/out/out.json
new file mode 100644
index 0000000..3928faa
--- /dev/null
+++ b/pages/index/out/out.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/index/out/out.wxml b/pages/index/out/out.wxml
new file mode 100644
index 0000000..5ac033d
--- /dev/null
+++ b/pages/index/out/out.wxml
@@ -0,0 +1,2 @@
+
+
diff --git a/pages/index/out/out.wxss b/pages/index/out/out.wxss
new file mode 100644
index 0000000..61ba898
--- /dev/null
+++ b/pages/index/out/out.wxss
@@ -0,0 +1 @@
+/* pages/index/out/out.wxss */
\ No newline at end of file
diff --git a/pages/logs/logs.js b/pages/logs/logs.js
new file mode 100644
index 0000000..85f6aac
--- /dev/null
+++ b/pages/logs/logs.js
@@ -0,0 +1,18 @@
+// logs.js
+const util = require('../../utils/util.js')
+
+Page({
+ data: {
+ logs: []
+ },
+ onLoad() {
+ this.setData({
+ logs: (wx.getStorageSync('logs') || []).map(log => {
+ return {
+ date: util.formatTime(new Date(log)),
+ timeStamp: log
+ }
+ })
+ })
+ }
+})
diff --git a/pages/logs/logs.json b/pages/logs/logs.json
new file mode 100644
index 0000000..3ee76c1
--- /dev/null
+++ b/pages/logs/logs.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "查看启动日志",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/logs/logs.wxml b/pages/logs/logs.wxml
new file mode 100644
index 0000000..0b6b645
--- /dev/null
+++ b/pages/logs/logs.wxml
@@ -0,0 +1,6 @@
+
+
+
+ {{index + 1}}. {{log.date}}
+
+
diff --git a/pages/logs/logs.wxss b/pages/logs/logs.wxss
new file mode 100644
index 0000000..94d4b88
--- /dev/null
+++ b/pages/logs/logs.wxss
@@ -0,0 +1,8 @@
+.log-list {
+ display: flex;
+ flex-direction: column;
+ padding: 40rpx;
+}
+.log-item {
+ margin: 10rpx;
+}
diff --git a/project.config.json b/project.config.json
new file mode 100644
index 0000000..1bad225
--- /dev/null
+++ b/project.config.json
@@ -0,0 +1,54 @@
+{
+ "description": "项目配置文件",
+ "packOptions": {
+ "ignore": [],
+ "include": []
+ },
+ "setting": {
+ "bundle": false,
+ "userConfirmedBundleSwitch": false,
+ "urlCheck": true,
+ "scopeDataCheck": false,
+ "coverView": true,
+ "es6": true,
+ "postcss": true,
+ "compileHotReLoad": false,
+ "lazyloadPlaceholderEnable": false,
+ "preloadBackgroundData": false,
+ "minified": true,
+ "autoAudits": false,
+ "newFeature": false,
+ "uglifyFileName": false,
+ "uploadWithSourceMap": true,
+ "useIsolateContext": true,
+ "nodeModules": false,
+ "enhance": true,
+ "useMultiFrameRuntime": true,
+ "useApiHook": true,
+ "useApiHostProcess": true,
+ "showShadowRootInWxmlPanel": true,
+ "packNpmManually": false,
+ "enableEngineNative": false,
+ "packNpmRelationList": [],
+ "minifyWXSS": true,
+ "showES6CompileOption": false,
+ "minifyWXML": true,
+ "babelSetting": {
+ "ignore": [],
+ "disablePlugins": [],
+ "outputPath": ""
+ },
+ "condition": false,
+ "ignoreDevUnusedFiles": false,
+ "ignoreUploadUnusedFiles": false
+ },
+ "compileType": "miniprogram",
+ "libVersion": "2.19.4",
+ "appid": "wx0a5f61e439e70c4a",
+ "projectname": "miniprogram-92",
+ "condition": {},
+ "editorSetting": {
+ "tabIndent": "insertSpaces",
+ "tabSize": 4
+ }
+}
\ No newline at end of file
diff --git a/project.private.config.json b/project.private.config.json
new file mode 100644
index 0000000..38150a3
--- /dev/null
+++ b/project.private.config.json
@@ -0,0 +1,7 @@
+{
+ "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
+ "projectname": "xzjl-ui",
+ "setting": {
+ "compileHotReLoad": true
+ }
+}
\ No newline at end of file
diff --git a/sitemap.json b/sitemap.json
new file mode 100644
index 0000000..ca02add
--- /dev/null
+++ b/sitemap.json
@@ -0,0 +1,7 @@
+{
+ "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
+ "rules": [{
+ "action": "allow",
+ "page": "*"
+ }]
+}
\ No newline at end of file
diff --git a/utils/util.js b/utils/util.js
new file mode 100644
index 0000000..764bc2c
--- /dev/null
+++ b/utils/util.js
@@ -0,0 +1,19 @@
+const formatTime = date => {
+ const year = date.getFullYear()
+ const month = date.getMonth() + 1
+ const day = date.getDate()
+ const hour = date.getHours()
+ const minute = date.getMinutes()
+ const second = date.getSeconds()
+
+ return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
+}
+
+const formatNumber = n => {
+ n = n.toString()
+ return n[1] ? n : `0${n}`
+}
+
+module.exports = {
+ formatTime
+}