sard 1.0.16 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,7 +46,7 @@ export interface ValidateMessages {
46
46
  };
47
47
  }
48
48
  export interface Rule {
49
- validator?: (value: any, rule: Rule) => Promise<any> | boolean | string | undefined;
49
+ validator?: (context: ValidateContext) => Promise<any> | boolean | string | undefined;
50
50
  pattern?: RegExp;
51
51
  message?: string | (() => string);
52
52
  trigger?: string | string[];
@@ -59,14 +59,31 @@ export interface Rule {
59
59
  required?: boolean;
60
60
  whitespace?: boolean;
61
61
  }
62
+ export interface ValidateContext {
63
+ /** 被校验的值 */
64
+ value: any;
65
+ /** 当前规则 */
66
+ rule: Rule;
67
+ /** 本次校验的中止信号:被新一轮校验顶替时触发 abort,可用于中止底层请求 */
68
+ signal?: AbortSignal;
69
+ }
62
70
  export interface ValidateOptions {
63
71
  validateFirst?: boolean;
64
72
  value?: any;
65
73
  name?: string | number | (string | number)[];
66
74
  label?: string;
67
75
  trigger?: string | string[];
76
+ signal?: AbortSignal;
68
77
  }
69
78
  export type VdaliteFailResult = string[];
79
+ /**
80
+ * 校验被新一轮校验顶替时,validator 可通过 context.signal 感知并 reject 该错误;
81
+ * 表单内部识别后静默结束本次校验(不改状态、不计入错误)。
82
+ */
83
+ export declare class CancelError extends Error {
84
+ constructor(message?: string);
85
+ }
86
+ export declare function isCancelError(error: unknown): error is CancelError;
70
87
  declare const typeStrategies: {
71
88
  string(value: any, rule: Rule): string | boolean;
72
89
  number(value: any, rule: Rule): string | boolean;
@@ -88,7 +105,7 @@ export declare class Validator {
88
105
  setValidateMessages(validateMessages: ValidateMessages): void;
89
106
  getValidTriggerRules(rules: Rule[], trigger?: string | string[]): Rule[];
90
107
  validate(rules: Rule[], options?: ValidateOptions): Promise<void>;
91
- protected validateRule(value: any, rule: Rule): Promise<void>;
108
+ protected validateRule(value: any, rule: Rule, options?: ValidateOptions): Promise<void>;
92
109
  protected validateInternal(type: keyof typeof typeStrategies, value: any, rule: Rule): Promise<void>;
93
110
  protected replaceSymbol(string: string | Error, rule: Rule, options?: ValidateOptions): string;
94
111
  }
@@ -4,6 +4,19 @@ import { chainGet } from "../../utils/object.js";
4
4
  import { toArray } from "../../utils/array.js";
5
5
  import getUrlRegexp_default from "./getUrlRegexp.js";
6
6
  //#region packages/sard/components/form/Validator.ts
7
+ /**
8
+ * 校验被新一轮校验顶替时,validator 可通过 context.signal 感知并 reject 该错误;
9
+ * 表单内部识别后静默结束本次校验(不改状态、不计入错误)。
10
+ */
11
+ var CancelError = class extends Error {
12
+ constructor(message = "Validation cancelled") {
13
+ super(message);
14
+ this.name = "CancelError";
15
+ }
16
+ };
17
+ function isCancelError(error) {
18
+ return error instanceof CancelError || error?.name === "CancelError";
19
+ }
7
20
  function getMessage(message) {
8
21
  return isFunction(message) ? message() : message;
9
22
  }
@@ -91,18 +104,28 @@ var Validator = class {
91
104
  const { validateFirst, value } = options;
92
105
  return new Promise((resolve, reject) => {
93
106
  if (validateFirst) Promise.all(rules.map((rule) => {
94
- return this.validateRule(value, rule);
107
+ return this.validateRule(value, rule, options);
95
108
  })).then(() => {
96
109
  resolve();
97
- }).catch(({ error, rule }) => {
110
+ }).catch((reason) => {
111
+ if (isCancelError(reason)) {
112
+ reject(reason);
113
+ return;
114
+ }
115
+ const { error, rule } = reason;
98
116
  reject([this.replaceSymbol(error, rule, options)]);
99
117
  });
100
118
  else Promise.allSettled(rules.map((rule) => {
101
- return this.validateRule(value, rule);
119
+ return this.validateRule(value, rule, options);
102
120
  })).then((values) => {
103
121
  const rejected = values.filter(({ status }) => {
104
122
  return status === "rejected";
105
123
  });
124
+ const cancel = rejected.find((result) => isCancelError(result.reason));
125
+ if (cancel) {
126
+ reject(cancel.reason);
127
+ return;
128
+ }
106
129
  if (rejected.length === 0) resolve();
107
130
  else reject(rejected.map((result) => {
108
131
  const { error, rule } = result.reason;
@@ -111,7 +134,7 @@ var Validator = class {
111
134
  });
112
135
  });
113
136
  }
114
- validateRule(value, rule) {
137
+ validateRule(value, rule, options = {}) {
115
138
  if (rule.transform) value = rule.transform(value);
116
139
  return new Promise((resolve, reject) => {
117
140
  const handleReject = (error) => {
@@ -126,11 +149,16 @@ var Validator = class {
126
149
  return;
127
150
  }
128
151
  if (rule.validator) {
129
- const result = rule.validator(value, rule);
152
+ const result = rule.validator({
153
+ value,
154
+ rule,
155
+ signal: options.signal
156
+ });
130
157
  if (result instanceof Promise) result.then(() => {
131
158
  resolve();
132
159
  }).catch((error) => {
133
- handleReject(error);
160
+ if (isCancelError(error)) reject(error);
161
+ else handleReject(error);
134
162
  });
135
163
  else if (result === true) resolve();
136
164
  else if (isString(result)) handleReject(result);
@@ -182,4 +210,4 @@ var Validator = class {
182
210
  }
183
211
  };
184
212
  //#endregion
185
- export { Validator };
213
+ export { CancelError, Validator, isCancelError };
@@ -6,3 +6,4 @@ export declare const FormItem: EnhancedComponent<typeof _FormItem>;
6
6
  export default Form;
7
7
  export { type FormRules, type FieldName, type ValidateState, type TriggerType, type FieldValidateError, type FormProps, type FormSlots, type FormExpose, type FormItemProps, type FormItemSlots, type FormItemExpose, type FormContext, type FormItemContext, useFormContext, useFormItemContext, } from './common';
8
8
  export { useFormItem } from './useFormItem';
9
+ export { CancelError, isCancelError, type ValidateContext, type ValidateMessages, type ValidateOptions, type Rule, } from './Validator';
@@ -1,5 +1,6 @@
1
1
  import { enhanceComponent } from "../../utils/component.js";
2
2
  import { useFormContext, useFormItemContext } from "./common.js";
3
+ import { CancelError, isCancelError } from "./Validator.js";
3
4
  import form_default from "./form.vue.js";
4
5
  import { useFormItem } from "./useFormItem.js";
5
6
  import form_item_default from "./form-item.vue.js";
@@ -7,4 +8,4 @@ import form_item_default from "./form-item.vue.js";
7
8
  const Form = enhanceComponent(form_default);
8
9
  const FormItem = enhanceComponent(form_item_default);
9
10
  //#endregion
10
- export { Form, Form as default, FormItem, useFormContext, useFormItem, useFormItemContext };
11
+ export { CancelError, Form, Form as default, FormItem, isCancelError, useFormContext, useFormItem, useFormItemContext };
@@ -3,12 +3,14 @@ import { noop } from "../../utils/utils.js";
3
3
  import { chainGet, chainSet, deepClone } from "../../utils/object.js";
4
4
  import { toArray } from "../../utils/array.js";
5
5
  import { formItemContextKey, useFormContext } from "./common.js";
6
+ import { isCancelError } from "./Validator.js";
6
7
  import { computed, nextTick, onBeforeUnmount, onMounted, provide, reactive, ref, toRef, useTemplateRef, watch } from "vue";
7
8
  //#region packages/sard/components/form/useFormItem.ts
8
9
  function useFormItem(props) {
9
10
  const formContext = useFormContext();
10
11
  if (!formContext) throw new Error("FormItem must be included in Form.");
11
12
  let isResetting = false;
13
+ let abortController = null;
12
14
  const fieldValue = computed({
13
15
  get() {
14
16
  const model = formContext.model;
@@ -84,6 +86,8 @@ function useFormItem(props) {
84
86
  const validate = async (trigger) => {
85
87
  if (isResetting || !props.name) return;
86
88
  if (formContext.validator.getValidTriggerRules(mergedRules.value, trigger).length === 0) return;
89
+ abortController?.abort();
90
+ abortController = new AbortController();
87
91
  validateState.value = "validating";
88
92
  try {
89
93
  await formContext.validator.validate(mergedRules.value, {
@@ -91,11 +95,13 @@ function useFormItem(props) {
91
95
  value: fieldValue.value,
92
96
  name: props.name,
93
97
  label: props.label,
94
- trigger
98
+ trigger,
99
+ signal: abortController.signal
95
100
  });
96
101
  validateState.value = "success";
97
102
  validateMessage.value = "";
98
103
  } catch (messages) {
104
+ if (isCancelError(messages)) return;
99
105
  validateState.value = "error";
100
106
  validateMessage.value = messages[0];
101
107
  throw {
@@ -106,6 +112,8 @@ function useFormItem(props) {
106
112
  }
107
113
  };
108
114
  const clearValidate = () => {
115
+ abortController?.abort();
116
+ abortController = null;
109
117
  validateState.value = "";
110
118
  validateMessage.value = "";
111
119
  isResetting = false;
@@ -144,6 +152,8 @@ function useFormItem(props) {
144
152
  }
145
153
  });
146
154
  onBeforeUnmount(() => {
155
+ abortController?.abort();
156
+ abortController = null;
147
157
  formContext.removeField(context);
148
158
  });
149
159
  const direction = computed(() => props.direction || formContext.direction);
@@ -6,7 +6,7 @@ declare const __VLS_base: import("vue").DefineComponent<FormItemPlainProps, Form
6
6
  error: string;
7
7
  direction: "horizontal" | "vertical";
8
8
  required: boolean;
9
- rules: import("../form/Validator").Rule | import("../form/Validator").Rule[];
9
+ rules: import("..").Rule | import("..").Rule[];
10
10
  validateTrigger: import("..").TriggerType;
11
11
  labelWidth: string;
12
12
  labelAlign: "start" | "center" | "end";
@@ -54,6 +54,7 @@ import { Empty } from "./empty/index.js";
54
54
  import { Fab, FabItem } from "./fab/index.js";
55
55
  import { FloatingBubble } from "./floating-bubble/index.js";
56
56
  import { FloatingPanel } from "./floating-panel/index.js";
57
+ import { CancelError, isCancelError } from "./form/Validator.js";
57
58
  import { useFormItem } from "./form/useFormItem.js";
58
59
  import { Form, FormItem } from "./form/index.js";
59
60
  import { FormItemPlain, FormPlain } from "./form-plain/index.js";
@@ -139,4 +140,4 @@ import { Tree, TreeBranch, TreeNode } from "./tree/index.js";
139
140
  import { Upload, UploadPreview } from "./upload/index.js";
140
141
  import { Waterfall, WaterfallItem, WaterfallLoad } from "./waterfall/index.js";
141
142
  import { Watermark } from "./watermark/index.js";
142
- export { ADD_SWIPER_CONTEXT_KEY, Accordion, AccordionItem, ActionSheet, ActionSheetItem, Alert, Avatar, AvatarGroup, BackTop, Badge, Barcode, Button, Calendar, CalendarInput, CalendarPopout, Card, Cascader, CascaderInput, CascaderPopout, Checkbox, CheckboxGroup, CheckboxInput, CheckboxPopout, Col, Collapse, ColorPicker, ColorPickerInput, ColorPickerPopout, Compact, CoolIcon, CountDown, CountTo, CropImage, DateStrip, DatetimePicker, DatetimePickerInput, DatetimePickerPopout, DatetimeRangePicker, DatetimeRangePickerInput, DatetimeRangePickerPopout, Descriptions, DescriptionsItem, Dialog, Divider, Dnd, DndHandle, DndItem, Dropdown, DropdownItem, Ellipsis, Empty, Fab, FabItem, FloatingBubble, FloatingPanel, Form, FormItem, FormItemPlain, FormPlain, Grid, GridItem, Image, Indexes, IndexesAnchor, IndexesNav, Input, Keyboard, KeyboardPopout, List, ListItem, LoadMore, LoadMoreStatus, Loading, Marquee, Menu, MenuItem, Motion, Navbar, NavbarItem, NavbarPit, NoticeBar, Notify, Overlay, Pagination, PasswordInput, Picker, PickerInput, PickerPopout, PickerView, PickerViewColumn, Popout, PopoutInput, Popover, Popup, PreviewImage, ProgressBar, ProgressCircle, PullDownRefresh, PuzzleVerify, Qrcode, REMOVE_SWIPER_CONTEXT_KEY, Radio, RadioGroup, RadioInput, RadioPopout, Rate, ReadMore, Result, RotateVerify, Row, SWIPER_AUTO_HEIGHT_KEY, ScrollList, ScrollSpy, ScrollSpyAnchor, Search, Segmented, SegmentedItem, Select, SelectInput, SelectOption, SelectOptionGroup, SelectPopout, ShareSheet, ShareSheetIcon, ShareSheetItem, ShareSheetRow, Sidebar, SidebarItem, Signature, Skeleton, SkeletonAvatar, SkeletonBlock, SkeletonParagraph, SkeletonTitle, SlideVerify, Slider, Space, StatusBar, Step, Stepper, Steps, Sticky, StickyBox, SwipeAction, Swiper, SwiperItem, Switch, Tab, Tabbar, TabbarItem, TabbarPit, Table, Tabs, Tag, Text, Timeline, TimelineItem, Toast, Tree, TreeBranch, TreeNode, Upload, UploadPreview, Waterfall, WaterfallItem, WaterfallLoad, Watermark, actionSheet, createActionSheet, createCropImage, createDialog, createNotify, createPreviewImage, createToast, cropImage, dialog, formatTime, getCurrentTime, notify, omitFormPopoutProps, partitionPopoutInputProps, plateEnglishLetterKeys, plateProvinceKeys, plateSuffixKeys, popupManager, previewImage, safeAreaInsets, spaceSizes, toast, useCountDown, useElementBackTop, useFormContext, useFormItem, useFormItemContext, useFormPopout, useInPopup, useMotioning, usePageBackTop, usePopoutInput, usePopupEnter, usePopupVisibleHookProvide, windowInfo };
143
+ export { ADD_SWIPER_CONTEXT_KEY, Accordion, AccordionItem, ActionSheet, ActionSheetItem, Alert, Avatar, AvatarGroup, BackTop, Badge, Barcode, Button, Calendar, CalendarInput, CalendarPopout, CancelError, Card, Cascader, CascaderInput, CascaderPopout, Checkbox, CheckboxGroup, CheckboxInput, CheckboxPopout, Col, Collapse, ColorPicker, ColorPickerInput, ColorPickerPopout, Compact, CoolIcon, CountDown, CountTo, CropImage, DateStrip, DatetimePicker, DatetimePickerInput, DatetimePickerPopout, DatetimeRangePicker, DatetimeRangePickerInput, DatetimeRangePickerPopout, Descriptions, DescriptionsItem, Dialog, Divider, Dnd, DndHandle, DndItem, Dropdown, DropdownItem, Ellipsis, Empty, Fab, FabItem, FloatingBubble, FloatingPanel, Form, FormItem, FormItemPlain, FormPlain, Grid, GridItem, Image, Indexes, IndexesAnchor, IndexesNav, Input, Keyboard, KeyboardPopout, List, ListItem, LoadMore, LoadMoreStatus, Loading, Marquee, Menu, MenuItem, Motion, Navbar, NavbarItem, NavbarPit, NoticeBar, Notify, Overlay, Pagination, PasswordInput, Picker, PickerInput, PickerPopout, PickerView, PickerViewColumn, Popout, PopoutInput, Popover, Popup, PreviewImage, ProgressBar, ProgressCircle, PullDownRefresh, PuzzleVerify, Qrcode, REMOVE_SWIPER_CONTEXT_KEY, Radio, RadioGroup, RadioInput, RadioPopout, Rate, ReadMore, Result, RotateVerify, Row, SWIPER_AUTO_HEIGHT_KEY, ScrollList, ScrollSpy, ScrollSpyAnchor, Search, Segmented, SegmentedItem, Select, SelectInput, SelectOption, SelectOptionGroup, SelectPopout, ShareSheet, ShareSheetIcon, ShareSheetItem, ShareSheetRow, Sidebar, SidebarItem, Signature, Skeleton, SkeletonAvatar, SkeletonBlock, SkeletonParagraph, SkeletonTitle, SlideVerify, Slider, Space, StatusBar, Step, Stepper, Steps, Sticky, StickyBox, SwipeAction, Swiper, SwiperItem, Switch, Tab, Tabbar, TabbarItem, TabbarPit, Table, Tabs, Tag, Text, Timeline, TimelineItem, Toast, Tree, TreeBranch, TreeNode, Upload, UploadPreview, Waterfall, WaterfallItem, WaterfallLoad, Watermark, actionSheet, createActionSheet, createCropImage, createDialog, createNotify, createPreviewImage, createToast, cropImage, dialog, formatTime, getCurrentTime, isCancelError, notify, omitFormPopoutProps, partitionPopoutInputProps, plateEnglishLetterKeys, plateProvinceKeys, plateSuffixKeys, popupManager, previewImage, safeAreaInsets, spaceSizes, toast, useCountDown, useElementBackTop, useFormContext, useFormItem, useFormItemContext, useFormPopout, useInPopup, useMotioning, usePageBackTop, usePopoutInput, usePopupEnter, usePopupVisibleHookProvide, windowInfo };
package/index.js CHANGED
@@ -116,6 +116,7 @@ import { Empty } from "./components/empty/index.js";
116
116
  import { Fab, FabItem } from "./components/fab/index.js";
117
117
  import { FloatingBubble } from "./components/floating-bubble/index.js";
118
118
  import { FloatingPanel } from "./components/floating-panel/index.js";
119
+ import { CancelError, isCancelError } from "./components/form/Validator.js";
119
120
  import { useFormItem } from "./components/form/useFormItem.js";
120
121
  import { Form, FormItem } from "./components/form/index.js";
121
122
  import { FormItemPlain, FormPlain } from "./components/form-plain/index.js";
@@ -216,4 +217,4 @@ function prepareEnvironment() {
216
217
  });
217
218
  }
218
219
  //#endregion
219
- export { ADD_SWIPER_CONTEXT_KEY, ALPHANUMERIC_CHARS, Accordion, AccordionItem, ActionSheet, ActionSheetItem, Alert, Avatar, AvatarGroup, BackTop, Badge, Barcode, BarcodeFormatList, BarcodeTextPositionList, Button, Calendar, CalendarInput, CalendarPopout, Card, Cascader, CascaderInput, CascaderPopout, Checkbox, CheckboxGroup, CheckboxInput, CheckboxPopout, Col, Collapse, ColorPicker, ColorPickerInput, ColorPickerPopout, Compact, CoolIcon, CountDown, CountTo, CropImage, DateStrip, DatetimePicker, DatetimePickerInput, DatetimePickerPopout, DatetimeRangePicker, DatetimeRangePickerInput, DatetimeRangePickerPopout, Descriptions, DescriptionsItem, Dialog, Divider, Dnd, DndHandle, DndItem, Dropdown, DropdownItem, ECLList, Ellipsis, Empty, Fab, FabItem, FloatingBubble, FloatingPanel, Form, FormItem, FormItemPlain, FormPlain, Friction, Grid, GridItem, Image, Indexes, IndexesAnchor, IndexesNav, Input, Keyboard, KeyboardPopout, List, ListItem, LoadMore, LoadMoreStatus, Loading, Marquee, Menu, MenuItem, Motion, Navbar, NavbarItem, NavbarPit, NoticeBar, Notify, OnlyChild, Overlay, Pagination, PasswordInput, Picker, PickerInput, PickerPopout, PickerView, PickerViewColumn, Popout, PopoutInput, Popover, Popup, PreviewImage, ProgressBar, ProgressCircle, PullDownRefresh, PuzzleVerify, Qrcode, REMOVE_SWIPER_CONTEXT_KEY, Radio, RadioGroup, RadioInput, RadioPopout, Rate, ReadMore, Result, RotateVerify, Row, SWIPER_AUTO_HEIGHT_KEY, ScrollList, ScrollSpy, ScrollSpyAnchor, Search, Segmented, SegmentedItem, Select, SelectInput, SelectOption, SelectOptionGroup, SelectPopout, ShareSheet, ShareSheetIcon, ShareSheetItem, ShareSheetRow, Sidebar, SidebarItem, Signature, Skeleton, SkeletonAvatar, SkeletonBlock, SkeletonParagraph, SkeletonTitle, SlideVerify, Slider, Space, Spring, StatusBar, Step, Stepper, Steps, Sticky, StickyBox, SwipeAction, Swiper, SwiperItem, Switch, Tab, Tabbar, TabbarItem, TabbarPit, Table, Tabs, Tag, Text, Timeline, TimelineItem, Toast, Tree, TreeBranch, TreeNode, Upload, UploadPreview, Waterfall, WaterfallItem, WaterfallLoad, Watermark, actionSheet, addSeparator, addUnit, arrayEqual, arrayMove, autoUpdate, barcode, baseLunarYear, calculateBarcodeLayout, camelCase, capitalize, chainGet, chainSet, checkRtl, chooseFile, clamp, clipboard, computePosition, createActionSheet, createBem, createBemStruct, createCropImage, createDialog, createInertialAnimate, createNotify, createPreviewImage, createToast, cropImage, cssVar, cssVarName, currentLocale, debounce, deepClone, defaultBemConfig, defaultColorPickerPresets, defaultColorPickerValue, defaultOptionKeys, defineSetupFnComponent, dialog, earthlyBranches, enhanceComponent, extend, flatVNode, formatColor, formatDate, formatNumber, formatTime, getAllImperatives, getAspectFillSize, getAspectFitSize, getAvailableImperative, getCurrentTime, getDampingValue, getDayOfYear, getDaysAfterLastDay, getDaysBeforeFirstDay, getDaysInMonth, getDaysSinceUnixEpoch, getDecimalsLength, getFileName, getFirstDayWeekday, getGridCenterSize, getGridIndex, getGridPrizeCount, getImperatives, getInBoundValue, getLeafNodes, getLunarDayName, getLunarHourName, getLunarLeapMonth, getLunarLeapMonthDays, getLunarMonthDays, getLunarMonthName, getLunarYearDays, getLunarYearName, getNextMonthDate, getNextMonthHeadDays, getNodeLevel, getOverflowRangeInArea, getPageRange, getPrevMonthDate, getPrevMonthTailDays, getPreviewColor, getRectDampingValue, getRotatedRect, getScrollIntoViewValue, getScrollTop, getTouchPoint, getTransformOrigin, getTreeCheckedKeys, getTreeHalfCheckedKeys, getTwoPointsDistance, heavenlyStems, hslToHsv, hslToHwb, hslToRgb, hsvToHsl, hwbToHsl, imageDataToDataURL, inRange, initializeCheckNodes, installer, isBoolean, isColorScheme, isConfigObject, isDate, isEmptyArray, isEmptyBinding, isEmptyValue, isFileUrl, isFunction, isImageFile, isImageUrl, isKorean, isLeapYear, isNoEmptyArray, isNullish, isNumber, isObject, isPlainObject, isPrimitive, isRectEqual, isRenderVisible, isSizeEqual, isString, isUndefined, isVideoFile, isVideoUrl, isVisibleEmpty, kebabCase, loadImage, localeContextKey, logError, looseToNumber, lowerFirst, lunarDayNames, lunarInfo, lunarMonthNames, lunarToSolar, lunarYearNames, mapTreeToGrid, matchScrollVisible, measureTextWidth, minmaxDate, mround, nestedToMulti, noop, normalizeBarcodeOptions, normalizeHsla, normalizeHsva, notify, omit, omitFormPopoutProps, parseColor, parseDate, partition, partitionPopoutInputProps, pascalCase, pick, plateEnglishLetterKeys, plateProvinceKeys, plateSuffixKeys, popupManager, prepareEnvironment, previewImage, provideColorScheme, provideLocale, qrcode, random, reactiveComputed, readFileContent, rgbToHsl, round, safeAreaInsets, scrollToTarget, setCheckedRecursively, setLocale, shuffle, sleep, snakeCase, solarToLunar, spaceSizes, splitUnit, spreadEach, springFestivals, throttle, toArray, toDate, toDateNumber, toDateString, toMonthNumber, toReactive, toTouchEvent, toast, treeToMap, uniqid, updateAncestorsChecked, upperFirst, useClickOutside, useColorScheme, useComposition, useCountDown, useDragPinch, useElementBackTop, useElementScroll, useFormContext, useFormItem, useFormItemContext, useFormPopout, useImperative, useInPopup, useIndeterminate, useInitialVelocity, useIntersectionObserver, useKeyList, useLocale, useLockScroll, useLuckyDraw, useLuckyGrid, useLuckyWheel, useMotioning, useOptionKeys, usePageBackTop, usePageScroll, usePointerDown, usePopoutInput, usePopper, usePopupEnter, usePopupVisibleHookProvide, useReachBottom, useResizeObserver, useRtl, useScrollSide, useScrollSpy, useScroller, useSimulatedClick, useSimulatedDblClick, useSimulatedPress, useSingleTask, useSlotMachine, useStopMovedClick, useTimeout, useTimeoutLoading, useTranslate, useTranslateWithPrefix, useWindowResize, useZIndex, walkAncestor, walkDescendant, walkNodes, windowInfo, withResolvers };
220
+ export { ADD_SWIPER_CONTEXT_KEY, ALPHANUMERIC_CHARS, Accordion, AccordionItem, ActionSheet, ActionSheetItem, Alert, Avatar, AvatarGroup, BackTop, Badge, Barcode, BarcodeFormatList, BarcodeTextPositionList, Button, Calendar, CalendarInput, CalendarPopout, CancelError, Card, Cascader, CascaderInput, CascaderPopout, Checkbox, CheckboxGroup, CheckboxInput, CheckboxPopout, Col, Collapse, ColorPicker, ColorPickerInput, ColorPickerPopout, Compact, CoolIcon, CountDown, CountTo, CropImage, DateStrip, DatetimePicker, DatetimePickerInput, DatetimePickerPopout, DatetimeRangePicker, DatetimeRangePickerInput, DatetimeRangePickerPopout, Descriptions, DescriptionsItem, Dialog, Divider, Dnd, DndHandle, DndItem, Dropdown, DropdownItem, ECLList, Ellipsis, Empty, Fab, FabItem, FloatingBubble, FloatingPanel, Form, FormItem, FormItemPlain, FormPlain, Friction, Grid, GridItem, Image, Indexes, IndexesAnchor, IndexesNav, Input, Keyboard, KeyboardPopout, List, ListItem, LoadMore, LoadMoreStatus, Loading, Marquee, Menu, MenuItem, Motion, Navbar, NavbarItem, NavbarPit, NoticeBar, Notify, OnlyChild, Overlay, Pagination, PasswordInput, Picker, PickerInput, PickerPopout, PickerView, PickerViewColumn, Popout, PopoutInput, Popover, Popup, PreviewImage, ProgressBar, ProgressCircle, PullDownRefresh, PuzzleVerify, Qrcode, REMOVE_SWIPER_CONTEXT_KEY, Radio, RadioGroup, RadioInput, RadioPopout, Rate, ReadMore, Result, RotateVerify, Row, SWIPER_AUTO_HEIGHT_KEY, ScrollList, ScrollSpy, ScrollSpyAnchor, Search, Segmented, SegmentedItem, Select, SelectInput, SelectOption, SelectOptionGroup, SelectPopout, ShareSheet, ShareSheetIcon, ShareSheetItem, ShareSheetRow, Sidebar, SidebarItem, Signature, Skeleton, SkeletonAvatar, SkeletonBlock, SkeletonParagraph, SkeletonTitle, SlideVerify, Slider, Space, Spring, StatusBar, Step, Stepper, Steps, Sticky, StickyBox, SwipeAction, Swiper, SwiperItem, Switch, Tab, Tabbar, TabbarItem, TabbarPit, Table, Tabs, Tag, Text, Timeline, TimelineItem, Toast, Tree, TreeBranch, TreeNode, Upload, UploadPreview, Waterfall, WaterfallItem, WaterfallLoad, Watermark, actionSheet, addSeparator, addUnit, arrayEqual, arrayMove, autoUpdate, barcode, baseLunarYear, calculateBarcodeLayout, camelCase, capitalize, chainGet, chainSet, checkRtl, chooseFile, clamp, clipboard, computePosition, createActionSheet, createBem, createBemStruct, createCropImage, createDialog, createInertialAnimate, createNotify, createPreviewImage, createToast, cropImage, cssVar, cssVarName, currentLocale, debounce, deepClone, defaultBemConfig, defaultColorPickerPresets, defaultColorPickerValue, defaultOptionKeys, defineSetupFnComponent, dialog, earthlyBranches, enhanceComponent, extend, flatVNode, formatColor, formatDate, formatNumber, formatTime, getAllImperatives, getAspectFillSize, getAspectFitSize, getAvailableImperative, getCurrentTime, getDampingValue, getDayOfYear, getDaysAfterLastDay, getDaysBeforeFirstDay, getDaysInMonth, getDaysSinceUnixEpoch, getDecimalsLength, getFileName, getFirstDayWeekday, getGridCenterSize, getGridIndex, getGridPrizeCount, getImperatives, getInBoundValue, getLeafNodes, getLunarDayName, getLunarHourName, getLunarLeapMonth, getLunarLeapMonthDays, getLunarMonthDays, getLunarMonthName, getLunarYearDays, getLunarYearName, getNextMonthDate, getNextMonthHeadDays, getNodeLevel, getOverflowRangeInArea, getPageRange, getPrevMonthDate, getPrevMonthTailDays, getPreviewColor, getRectDampingValue, getRotatedRect, getScrollIntoViewValue, getScrollTop, getTouchPoint, getTransformOrigin, getTreeCheckedKeys, getTreeHalfCheckedKeys, getTwoPointsDistance, heavenlyStems, hslToHsv, hslToHwb, hslToRgb, hsvToHsl, hwbToHsl, imageDataToDataURL, inRange, initializeCheckNodes, installer, isBoolean, isCancelError, isColorScheme, isConfigObject, isDate, isEmptyArray, isEmptyBinding, isEmptyValue, isFileUrl, isFunction, isImageFile, isImageUrl, isKorean, isLeapYear, isNoEmptyArray, isNullish, isNumber, isObject, isPlainObject, isPrimitive, isRectEqual, isRenderVisible, isSizeEqual, isString, isUndefined, isVideoFile, isVideoUrl, isVisibleEmpty, kebabCase, loadImage, localeContextKey, logError, looseToNumber, lowerFirst, lunarDayNames, lunarInfo, lunarMonthNames, lunarToSolar, lunarYearNames, mapTreeToGrid, matchScrollVisible, measureTextWidth, minmaxDate, mround, nestedToMulti, noop, normalizeBarcodeOptions, normalizeHsla, normalizeHsva, notify, omit, omitFormPopoutProps, parseColor, parseDate, partition, partitionPopoutInputProps, pascalCase, pick, plateEnglishLetterKeys, plateProvinceKeys, plateSuffixKeys, popupManager, prepareEnvironment, previewImage, provideColorScheme, provideLocale, qrcode, random, reactiveComputed, readFileContent, rgbToHsl, round, safeAreaInsets, scrollToTarget, setCheckedRecursively, setLocale, shuffle, sleep, snakeCase, solarToLunar, spaceSizes, splitUnit, spreadEach, springFestivals, throttle, toArray, toDate, toDateNumber, toDateString, toMonthNumber, toReactive, toTouchEvent, toast, treeToMap, uniqid, updateAncestorsChecked, upperFirst, useClickOutside, useColorScheme, useComposition, useCountDown, useDragPinch, useElementBackTop, useElementScroll, useFormContext, useFormItem, useFormItemContext, useFormPopout, useImperative, useInPopup, useIndeterminate, useInitialVelocity, useIntersectionObserver, useKeyList, useLocale, useLockScroll, useLuckyDraw, useLuckyGrid, useLuckyWheel, useMotioning, useOptionKeys, usePageBackTop, usePageScroll, usePointerDown, usePopoutInput, usePopper, usePopupEnter, usePopupVisibleHookProvide, useReachBottom, useResizeObserver, useRtl, useScrollSide, useScrollSpy, useScroller, useSimulatedClick, useSimulatedDblClick, useSimulatedPress, useSingleTask, useSlotMachine, useStopMovedClick, useTimeout, useTimeoutLoading, useTranslate, useTranslateWithPrefix, useWindowResize, useZIndex, walkAncestor, walkDescendant, walkNodes, windowInfo, withResolvers };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sard",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "description": "sard 是基于 Vue3 的 Web 移动端 UI 组件库",
5
5
  "keywords": [
6
6
  "UI",