UNPKG

taro-ui-vue3

Version:

Taro UI Rewritten in Vue 3.0

1,432 lines (1,323 loc) 382 kB
import { defineComponent, ref, reactive, computed, watch, h, mergeProps, warn, onMounted, nextTick, toRefs, onUnmounted, onBeforeMount, TransitionGroup } from 'vue'; import { View, Text, OpenData, Image, Button, Form, Swiper, SwiperItem, Picker, Switch, ScrollView, Label, Input, Slider, Textarea } from '@tarojs/components'; import Taro from '@tarojs/taro'; var getEnv = Taro.getEnv, ENV_TYPE = Taro.ENV_TYPE; var ENV$3 = Taro.getEnv(); var getEnvs = function () { var env = getEnv(); return { isWEAPP: env === ENV_TYPE.WEAPP, isALIPAY: env === ENV_TYPE.ALIPAY, isWEB: env === ENV_TYPE.WEB, }; }; function pxTransform(size, designWidth) { if (!size) return ''; if (!designWidth) { designWidth = 750; } return Taro.pxTransform(size, designWidth); } function delay(delayTime) { if (delayTime === void 0) { delayTime = 500; } return new Promise(function (resolve) { setTimeout(function () { resolve(); }, delayTime); }); } function delayQuerySelector(_, selectorStr, delayTime) { if (delayTime === void 0) { delayTime = 500; } var selector = Taro.createSelectorQuery(); return new Promise(function (resolve) { delay(delayTime).then(function () { selector .select(selectorStr) .boundingClientRect() .exec(function (res) { resolve(res); }); }); }); } var objectToString$1 = function (style) { if (style && typeof style === 'object') { var styleStr_1 = ''; Object.keys(style).forEach(function (key) { var lowerCaseKey = key.replace(/([A-Z])/g, '-$1').toLowerCase(); styleStr_1 += lowerCaseKey + ":" + style[key] + ";"; }); return styleStr_1; } else if (style && typeof style === 'string') { return style; } return ''; }; function mergeStyle(style1, style2) { if (style1 && typeof style1 === 'object' && style2 && typeof style2 === 'object') { return Object.assign({}, style1, style2); } return objectToString$1(style1) + objectToString$1(style2); } var scrollTop = 0; function handleTouchScroll(flag) { if (ENV$3 !== Taro.ENV_TYPE.WEB) { return; } if (flag) { scrollTop = document.documentElement.scrollTop; // 使body脱离文档流 document.body.classList.add('at-frozen'); // 把脱离文档流的body拉上去!否则页面会回到顶部! document.body.style.top = -scrollTop + "px"; } else { document.body.style.top = ''; document.body.classList.remove('at-frozen'); document.documentElement.scrollTop = scrollTop; } } function uuid(len, radix) { if (len === void 0) { len = 8; } if (radix === void 0) { radix = 16; } var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var value = []; var i = 0; radix = radix || chars.length; if (len) { // Compact form for (i = 0; i < len; i++) value[i] = chars[0 | (Math.random() * radix)]; } else { // rfc4122, version 4 form var r // rfc4122 requires these characters /* eslint-disable-next-line */ = void 0; // rfc4122 requires these characters /* eslint-disable-next-line */ value[8] = value[13] = value[18] = value[23] = '-'; value[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!value[i]) { r = 0 | (Math.random() * 16); value[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r]; } } } return value.join(''); } function isTest() { return process.env.NODE_ENV === 'test'; } function getEventDetail(event) { var detail; switch (ENV$3) { case Taro.ENV_TYPE.WEB: detail = { pageX: event.pageX, pageY: event.pageY, clientX: event.clientX, clientY: event.clientY, offsetX: event.offsetX, offsetY: event.offsetY, x: event.x, y: event.y }; break; case Taro.ENV_TYPE.WEAPP: detail = { pageX: event.touches[0].pageX, pageY: event.touches[0].pageY, clientX: event.touches[0].clientX, clientY: event.touches[0].clientY, offsetX: event.target.offsetLeft, offsetY: event.target.offsetTop, x: event.target.x, y: event.target.y }; break; case Taro.ENV_TYPE.ALIPAY: detail = { pageX: event.target.pageX, pageY: event.target.pageY, clientX: event.target.clientX, clientY: event.target.clientY, offsetX: event.target.offsetLeft, offsetY: event.target.offsetTop, x: event.target.x, y: event.target.y }; break; case Taro.ENV_TYPE.SWAN: detail = { pageX: event.changedTouches[0].pageX, pageY: event.changedTouches[0].pageY, clientX: event.target.clientX, clientY: event.target.clientY, offsetX: event.target.offsetLeft, offsetY: event.target.offsetTop, x: event.detail.x, y: event.detail.y }; break; default: detail = { pageX: 0, pageY: 0, clientX: 0, clientY: 0, offsetX: 0, offsetY: 0, x: 0, y: 0 }; console.warn('getEventDetail暂未支持该环境'); break; } return detail; } function delayGetScrollOffset(_a) { var _b = _a.delayTime, delayTime = _b === void 0 ? 500 : _b; return new Promise(function (resolve) { delay(delayTime).then(function () { Taro.createSelectorQuery() .selectViewport() .scrollOffset() .exec(function (res) { resolve(res); }); }); }); } function delayGetClientRect(_a) { var selectorStr = _a.selectorStr, _b = _a.delayTime, delayTime = _b === void 0 ? 500 : _b; var selector = Taro.createSelectorQuery(); return new Promise(function (resolve) { delay(delayTime).then(function () { selector .select(selectorStr) .boundingClientRect() .exec(function (res) { resolve(res); }); }); }); } function convertToUnit(str, unit) { if (unit === void 0) { unit = 'px'; } if (str == null || str === '') { return undefined; } else if (isNaN(+str)) { return String(str); } else { return "" + Number(str) + unit; } } function keys(o) { return Object.keys(o); } var AtAccordion = defineComponent({ name: "AtAccordion", props: { open: Boolean, title: { type: String, default: '' }, icon: { type: Object, default: function () { return ({ value: '' }); } }, hasBorder: { type: Boolean, default: true }, isAnimation: { type: Boolean, default: true }, note: { type: String, default: '' }, onClick: Function }, setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; var isCompleted = ref(true); var startOpen = ref(false); var contentID = ref('content'); var state = reactive({ wrapperHeight: 'unset' }); var iconClass = computed(function () { var _a; return (_a = {}, _a["" + (props.icon.prefixClass || 'at-icon')] = Boolean(props.icon), _a[(props.icon.prefixClass || 'at-icon') + "-" + props.icon.value] = Boolean(props.icon && props.icon.value), _a['at-accordion__icon'] = true, _a); }); var headerClass = computed(function () { return ({ 'at-accordion__header': true, 'at-accordion__header--noborder': !props.hasBorder }); }); var arrowClass = computed(function () { return ({ 'at-accordion__arrow': true, 'at-accordion__arrow--folded': !!props.open }); }); var contentClass = computed(function () { return ({ 'at-accordion__content': true, 'at-accordion__content--inactive': (!props.open && isCompleted.value) || startOpen.value }); }); var iconStyle = computed(function () { return ({ color: (props.icon && props.icon.color) ? props.icon.color : '', fontSize: (props.icon && props.icon.size) ? props.icon.size + "px" : '' }); }); var contentStyle = computed(function () { return ({ height: isCompleted.value ? '' : state.wrapperHeight === 'unset' ? state.wrapperHeight : state.wrapperHeight + "px" }); }); watch(function () { return props.open; }, function (val) { startOpen.value = !!val && !!props.isAnimation; toggleWithAnimation(); }); function handleClick(e) { contentID.value = 'content' + String(e.timeStamp).replace('.', ''); if (!isCompleted.value) return; props.onClick && props.onClick(!props.open, e); } function toggleWithAnimation() { if (!isCompleted.value || !props.isAnimation) return; isCompleted.value = false; delayQuerySelector(this, "#" + contentID.value + ".at-accordion__body", 30).then(function (rect) { // @ts-ignore var height = parseInt(rect[0].height.toString()); var startHeight = props.open ? 0 : height; var endHeight = props.open ? height : 0; startOpen.value = false; state.wrapperHeight = startHeight; setTimeout(function () { state.wrapperHeight = endHeight; }, 100); setTimeout(function () { isCompleted.value = true; }, 700); }); } return function () { return (h(View, mergeProps(attrs, { class: 'at-accordion' }), { default: function () { return [ h(View, { class: headerClass.value, onTap: handleClick }, { default: function () { return [ props.icon && props.icon.value && (h(Text, { class: iconClass.value, style: iconStyle.value })), h(View, { class: 'at-accordion__info' }, { default: function () { return [ h(View, { class: 'at-accordion__info__title' }, { default: function () { return props.title; } }), h(View, { class: 'at-accordion__info__note' }, { default: function () { return props.note; } }) ]; } }), h(View, { class: arrowClass.value }, { default: function () { return [ h(Text, { class: 'at-icon at-icon-chevron-down' }) ]; } }) ]; } }), h(View, { class: contentClass.value, style: contentStyle.value }, { default: function () { return [ h(View, { id: contentID.value, class: 'at-accordion__body' }, { default: function () { return slots.default && slots.default(); } }) ]; } }) ]; } })); }; } }); var AtActionSheetHeader = defineComponent({ name: "AtActionSheetHeader", setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; return function () { return (h(View, mergeProps(attrs, { class: 'at-action-sheet__header' }), { default: function () { return slots.default && slots.default(); } })); }; } }); var AtActionSheetBody = defineComponent({ name: "AtActionSheetBody", setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; return function () { return (h(View, mergeProps(attrs, { class: 'at-action-sheet__body' }), { default: function () { return slots.default && slots.default(); } })); }; } }); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __awaiter(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()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spreadArray(to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; } var AtActionSheetFooter = defineComponent({ name: "AtActionSheetFooter", props: { onClick: Function }, setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; function handleClick() { var _a; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call.apply(_a, __spreadArray([props], __read(args))); } return function () { return (h(View, mergeProps(attrs, { class: 'at-action-sheet__footer', onTap: handleClick }), { default: function () { var _a; return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots); } })); }; } }); var AtActionSheet = defineComponent({ name: "AtActionSheet", props: { isOpened: { type: Boolean, default: false }, title: { type: String, default: '' }, cancelText: { type: String, default: '' }, onClose: Function, onCancel: Function }, setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; var _isOpened = ref(props.isOpened); var rootClasses = computed(function () { return ({ 'at-action-sheet': true, 'at-action-sheet--active': _isOpened.value, }); }); watch(function () { return props.isOpened; }, function (val) { if (val !== _isOpened.value) { _isOpened.value = val; } !val && handleClose(); }); function handleClose() { var _a; (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props); } function handleCancel() { var _a; (_a = props.onCancel) === null || _a === void 0 ? void 0 : _a.call(props); close(); } function close() { _isOpened.value = false; handleClose(); } function handleTouchMove(e) { e.stopPropagation(); e.preventDefault(); } return function () { return (h(View, mergeProps(attrs, { class: rootClasses.value, catchMove: true, onTouchmove: handleTouchMove }), { default: function () { return [ h(View, { class: 'at-action-sheet__overlay', onTap: close }), h(View, { class: 'at-action-sheet__container' }, { default: function () { return [ props.title && (h(AtActionSheetHeader, null, { default: function () { return props.title; } })), h(AtActionSheetBody, null, { default: function () { var _a; return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots); } }), props.cancelText && (h(AtActionSheetFooter, { onClick: handleCancel }, { default: function () { return props.cancelText; } })) ]; } }), ]; } })); }; } }); var AtActionSheetItem = defineComponent({ name: "AtActionSheetItem", props: { onClick: Function }, setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; function handleClick(e) { var _a; (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, e); } return function () { return (h(View, mergeProps(attrs, { class: 'at-action-sheet__item', onTap: handleClick }), { default: function () { var _a; return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots); } })); }; } }); var AtLoading = defineComponent({ name: "AtLoading", props: { size: { type: [String, Number], default: 0 }, color: { type: [String, Number], default: '' } }, setup: function (props, _a) { var attrs = _a.attrs; var loadingSize = typeof props.size === 'string' ? props.size : String(props.size); var sizeStyle = computed(function () { return ({ width: props.size ? "" + pxTransform(parseInt(loadingSize)) : '', height: props.size ? "" + pxTransform(parseInt(loadingSize)) : '', }); }); var ringStyle = computed(function () { return (__assign(__assign({}, sizeStyle.value), { border: props.color ? "1px solid " + props.color : '', 'border-color': props.color ? props.color + " transparent transparent transparent" : '' })); }); return function () { return (h(View, mergeProps(attrs, { class: 'at-loading', style: sizeStyle.value }), { default: function () { return Array.apply(null, { length: 3 }).map(function (_, index) { return (h(View, { key: index, class: 'at-loading__ring', style: ringStyle.value })); }); } })); }; } }); var AtActivityIndicator = defineComponent({ name: "AtActivityIndicator", props: { size: { type: Number, default: 48 }, mode: { type: String, default: 'normal' }, color: { type: String, default: '#6190E8' }, content: { type: String, default: '' }, isOpened: { type: Boolean, default: true }, }, setup: function (props, _a) { var attrs = _a.attrs; var rootClasses = computed(function () { return ({ 'at-activity-indicator': true, 'at-activity-indicator--center': props.mode === 'center', 'at-activity-indicator--isopened': props.isOpened, }); }); return function () { return (h(View, mergeProps(attrs, { class: rootClasses.value }), { default: function () { return [ h(View, { class: 'at-activity-indicator__body' }, { default: function () { return [ h(AtLoading, { size: props.size, color: props.color }) ]; } }), props.content && h(Text, { class: 'at-activity-indicator__content' }, { default: function () { return props.content; } }), ]; } })); }; } }); var SIZE_CLASS$2 = { large: 'large', normal: 'normal', small: 'small' }; var AtAvatar = defineComponent({ name: "AtAvatar", props: { size: { type: String, default: 'normal', validator: function (prop) { return ['large', 'normal', 'small'].includes(prop); } }, circle: { type: Boolean, default: false }, text: { type: String, default: '' }, image: { type: String, default: '' }, openData: { type: Object, default: undefined } }, setup: function (props, _a) { var attrs = _a.attrs; var isWEAPP = getEnvs().isWEAPP; var letter = computed(function () { return props.text ? props.text[0] : ''; }); var iconSize = SIZE_CLASS$2[props.size]; if (!Boolean(iconSize)) { warn("Prop size must be of PropType<'large' | 'normal' | 'small'>, actual: ", props.size, "\nThe size is now set to 'normal' as fallback."); iconSize = 'normal'; } var rootClasses = computed(function () { var _a; return (_a = { 'at-avatar': true }, _a["at-avatar--" + iconSize] = iconSize, _a['at-avatar--circle'] = props.circle, _a); }); var children = isWEAPP && props.openData && props.openData.type === 'userAvatarUrl' ? h(OpenData, { type: props.openData.type }) : props.image ? h(Image, { class: 'at-avatar__img', src: props.image }) : h(Text, { class: 'at-avatar__text' }, { default: function () { return letter.value; } }); return function () { return (h(View, mergeProps(attrs, { class: rootClasses.value }), { default: function () { return [children]; } })); }; } }); var AtBadge = defineComponent({ name: "AtBadge", props: { dot: { type: Boolean, default: false }, value: { type: [String, Number], default: '' }, maxValue: { type: Number, default: 99 } }, setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; var formatedValue = computed(function () { return formatValue(props.value, props.maxValue); }); function formatValue(value, maxValue) { if (value === '' || value === null || value === undefined) return ''; var numValue = +value; if (Number.isNaN(numValue)) { return value; } return numValue > maxValue ? maxValue + "+" : numValue; } return function () { return (h(View, mergeProps(attrs, { class: 'at-badge' }), { default: function () { return [ slots.default && slots.default(), props.dot ? h(View, { class: 'at-badge__dot' }) : formatedValue.value !== '' && (h(View, { class: 'at-badge__num' }, { default: function () { return formatedValue.value; } })) ]; } })); }; } }); var SIZE_CLASS$1 = { normal: 'normal', small: 'small' }; var TYPE_CLASS$1 = { primary: 'primary', secondary: 'secondary', }; var AtButton = defineComponent({ name: "AtButton", components: { AtLoading: AtLoading }, props: { size: { type: String, default: 'normal', validator: function (prop) { return ['normal', 'small'].includes(prop); } }, type: { type: String, default: '', validator: function (prop) { return ['primary', 'secondary', ''].includes(prop); } }, circle: Boolean, full: Boolean, loading: Boolean, disabled: Boolean, onClick: Function, // Taro Button Props formType: { type: String, default: '', validator: function (prop) { return ['submit', 'reset', ''].includes(prop); } }, openType: { type: String, validator: function (prop) { return [ 'contact', "contactShare", 'share', "getRealnameAuthInfo", "getAuthorize", "getPhoneNumber", "getUserInfo", "lifestyle", "launchApp", "openSetting", "feedback", ].includes(prop); }, }, lang: { type: String, default: 'en' }, sessionFrom: String, sendMessageTitle: String, sendMessagePath: String, sendMessageImg: String, showMessageCard: Boolean, appParameter: String, scope: String, // Taro Button Events onGetUserInfo: Function, onGetAuthorize: Function, onContact: Function, onGetPhoneNumber: Function, onGetRealnameAuthInfo: Function, onError: Function, onOpenSetting: Function, onLaunchapp: Function, }, setup: function (props, _a) { var attrs = _a.attrs, slots = _a.slots; var _b = getEnvs(), isWEAPP = _b.isWEAPP, isALIPAY = _b.isALIPAY, isWEB = _b.isWEB; var rootClasses = computed(function () { var _a; return (_a = {}, _a["at-button--" + SIZE_CLASS$1[props.size]] = SIZE_CLASS$1[props.size], _a["at-button--" + props.type] = TYPE_CLASS$1[props.type ? props.type : ''], _a['at-button--circle'] = props.circle, _a['at-button--disabled'] = props.disabled, _a['at-button--full'] = props.full, _a['at-button--icon'] = props.loading, _a['at-button'] = true, _a); }); var loadingColor = computed(function () { return props.type === 'primary' ? '#fff' : ''; }); var loadingSize = computed(function () { return props.size === 'small' ? '30' : '0'; }); function handleClick(event) { var _a; if (Boolean(attrs['onTap'])) { warn('AtButton 绑定的点击事件应为 `click`, 而非 `tap`。', '正确示例:`<at-button @click="eventHandler"/>`'); } if (!props.disabled) { (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event); } } function handleGetUserInfo(event) { var _a; warn("2021 年 4 月 13 日后发布的新版本小程序,", "开发者调用 `wx.getUserInfo` 或 `<button open-type=\"getUserInfo\"/>` 将不再弹出弹窗,", "直接返回匿名的用户个人信息。", "详情见:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?idescene=6&page=10,", "请使用 `getUserProfile` 进行适配。"); (_a = props.onGetUserInfo) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleGetPhoneNumber(event) { var _a; (_a = props.onGetPhoneNumber) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleOpenSetting(event) { var _a; (_a = props.onOpenSetting) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleError(event) { var _a; (_a = props.onError) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleContact(event) { var _a; (_a = props.onContact) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleLaunchapp(event) { var _a; (_a = props.onLaunchapp) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleGetAuthorize(event) { var _a; (_a = props.onGetAuthorize) === null || _a === void 0 ? void 0 : _a.call(props, event); } function handleSubmit(event) { if (isWEAPP || isWEB) { // 已知问题:https://github.com/NervJS/taro-ui/issues/96 Taro.eventCenter.trigger('submit', event.detail, { bubbles: true, composed: true, }); } } function handleReset(event) { if (isWEAPP || isWEB) { // 已知问题:https://github.com/NervJS/taro-ui/issues/96 Taro.eventCenter.trigger('reset', event.detail, { bubbles: true, composed: true, }); } } function getWxButtonProps() { if (!props.openType) return {}; var wxButtonProps = {}; switch (props.openType) { case 'contact': wxButtonProps.onContact = handleContact; break; case 'openSetting': wxButtonProps.onOpensetting = handleOpenSetting; break; case 'getPhoneNumber': wxButtonProps.onGetphonenumber = handleGetPhoneNumber; break; case 'getUserInfo': wxButtonProps.onGetuserinfo = handleGetUserInfo; break; case 'getAuthorize': wxButtonProps.onGetauthorize = handleGetAuthorize; break; case 'launchApp': wxButtonProps.onLaunchapp = handleLaunchapp; wxButtonProps.onError = handleError; break; } return wxButtonProps; } var webButton = h(Button, { class: 'at-button__wxbutton', lang: props.lang, formType: props.formType === 'submit' || props.formType === 'reset' ? props.formType : undefined }); var miniAppButton = h(Button, __assign({ class: 'at-button__wxbutton', formType: props.formType, openType: props.openType, lang: props.lang, sessionFrom: props.sessionFrom, sendMessageTitle: props.sendMessageTitle, sendMessagePath: props.sendMessagePath, sendMessageImg: props.sendMessageImg, showMessageCard: props.showMessageCard, appParameter: props.appParameter }, getWxButtonProps())); return function () { return (h(View, mergeProps(attrs, { class: rootClasses.value, onTap: handleClick }), { default: function () { return [ // web button isWEB && !props.disabled && webButton, // weapp button isWEAPP && !props.disabled && h(Form, { onSubmit: handleSubmit, onReset: handleReset }, { default: function () { return [miniAppButton]; } }), // alipay button isALIPAY && !props.disabled && miniAppButton, // loading icon props.loading && h(View, { class: 'at-button__icon' }, { default: function () { return [ h(AtLoading, { color: loadingColor.value, size: loadingSize.value }) ]; } }), // button text h(View, { class: 'at-button__text' }, { default: function () { var _a; return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots); } }) ]; } })); }; } }); var SECONDS_A_MINUTE = 60; var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60; var SECONDS_A_DAY = SECONDS_A_HOUR * 24; var SECONDS_A_WEEK = SECONDS_A_DAY * 7; var MILLISECONDS_A_SECOND = 1e3; var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND; var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND; var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND; var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales var MS = 'millisecond'; var S = 'second'; var MIN = 'minute'; var H = 'hour'; var D = 'day'; var W = 'week'; var M = 'month'; var Q = 'quarter'; var Y = 'year'; var DATE = 'date'; var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ'; var INVALID_DATE_STRING = 'Invalid Date'; // regex var REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/; var REGEX_FORMAT = /\[([^\]]+)]|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; // English [en] // We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale var en = { 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('_') }; 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, M); var c = b - anchor < 0; var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), 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: M, y: Y, w: W, d: D, D: DATE, h: H, m: MIN, s: S, ms: MS, Q: Q }; return special[u] || String(u || '').toLowerCase().replace(/s$/, ''); }; var isUndefined = function isUndefined(s) { return s === undefined; }; var U = { s: padStart, z: padZoneStr, m: monthDiff, a: absFloor, p: prettyUnit, u: isUndefined }; 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') { if (Ls[preset]) { l = preset; } if (object) { Ls[preset] = object; l = preset; } } 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(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() === 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(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 Y: return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11); case M: return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1); case 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 D: case DATE: return instanceFactorySet(utcPad + "Hours", 0); case H: return instanceFactorySet(utcPad + "Minutes", 1); case MIN: return instanceFactorySet(utcPad + "Seconds", 2); case 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[D] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[DATE] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[M] = utcPad + "Month", _C$D$C$DATE$C$M$C$Y$C[Y] = utcPad + "FullYear", _C$D$C$DATE$C$M$C$Y$C[H] = utcPad + "Hours", _C$D$C$DATE$C$M$C$Y$C[MIN] = utcPad + "Minutes", _C$D$C$DATE$C$M$C$Y$C[S] = utcPad + "Seconds", _C$D$C$DATE$C$M$C$Y$C[MS] = utcPad + "Milliseconds", _C$D$C$DATE$C$M$C$Y$C)[unit]; var arg = unit === D ? this.$D + (_int - this.$W) : _int; if (unit === M || unit === Y) { // clone is for badMutable plugin var date = this.clone().set(DATE, 1); date.$d[name](arg); date.init(); this.$d = date.set(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 === M) { return this.set(M, this.$M + number); } if (unit === Y) { return this.set(Y, this.$y + number); } if (unit === D) { return instanceFactorySet(1); } if (unit === W) { return instanceFactorySet(7); } var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[MIN] = MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[H] = MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[S] = 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; if (!this.isValid()) return INVALID_DATE_STRING; var str = formatStr || FORMAT_DEFAULT; var zoneStr = Utils.z(this); var locale = this.$locale(); 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].substr(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(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()) * 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$