sard 1.0.16 → 1.0.18

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,40 @@ 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
+ }
20
+ /**
21
+ * 将 validator 返回的 promise 与 abort 信号竞速:
22
+ * 信号一旦 abort 就自动以 CancelError 结束,validator 无需手动 reject。
23
+ */
24
+ function raceWithAbort(promise, signal) {
25
+ if (!signal) return promise;
26
+ if (signal.aborted) return Promise.reject(new CancelError());
27
+ return new Promise((resolve, reject) => {
28
+ const onAbort = () => {
29
+ reject(new CancelError());
30
+ };
31
+ signal.addEventListener("abort", onAbort, { once: true });
32
+ promise.then((value) => {
33
+ signal.removeEventListener("abort", onAbort);
34
+ resolve(value);
35
+ }, (error) => {
36
+ signal.removeEventListener("abort", onAbort);
37
+ reject(error);
38
+ });
39
+ });
40
+ }
7
41
  function getMessage(message) {
8
42
  return isFunction(message) ? message() : message;
9
43
  }
@@ -91,18 +125,28 @@ var Validator = class {
91
125
  const { validateFirst, value } = options;
92
126
  return new Promise((resolve, reject) => {
93
127
  if (validateFirst) Promise.all(rules.map((rule) => {
94
- return this.validateRule(value, rule);
128
+ return this.validateRule(value, rule, options);
95
129
  })).then(() => {
96
130
  resolve();
97
- }).catch(({ error, rule }) => {
131
+ }).catch((reason) => {
132
+ if (isCancelError(reason)) {
133
+ reject(reason);
134
+ return;
135
+ }
136
+ const { error, rule } = reason;
98
137
  reject([this.replaceSymbol(error, rule, options)]);
99
138
  });
100
139
  else Promise.allSettled(rules.map((rule) => {
101
- return this.validateRule(value, rule);
140
+ return this.validateRule(value, rule, options);
102
141
  })).then((values) => {
103
142
  const rejected = values.filter(({ status }) => {
104
143
  return status === "rejected";
105
144
  });
145
+ const cancel = rejected.find((result) => isCancelError(result.reason));
146
+ if (cancel) {
147
+ reject(cancel.reason);
148
+ return;
149
+ }
106
150
  if (rejected.length === 0) resolve();
107
151
  else reject(rejected.map((result) => {
108
152
  const { error, rule } = result.reason;
@@ -111,7 +155,7 @@ var Validator = class {
111
155
  });
112
156
  });
113
157
  }
114
- validateRule(value, rule) {
158
+ validateRule(value, rule, options = {}) {
115
159
  if (rule.transform) value = rule.transform(value);
116
160
  return new Promise((resolve, reject) => {
117
161
  const handleReject = (error) => {
@@ -126,11 +170,16 @@ var Validator = class {
126
170
  return;
127
171
  }
128
172
  if (rule.validator) {
129
- const result = rule.validator(value, rule);
130
- if (result instanceof Promise) result.then(() => {
173
+ const result = rule.validator({
174
+ value,
175
+ rule,
176
+ signal: options.signal
177
+ });
178
+ if (result instanceof Promise) raceWithAbort(result, options.signal).then(() => {
131
179
  resolve();
132
180
  }).catch((error) => {
133
- handleReject(error);
181
+ if (isCancelError(error)) reject(error);
182
+ else handleReject(error);
134
183
  });
135
184
  else if (result === true) resolve();
136
185
  else if (isString(result)) handleReject(result);
@@ -182,4 +231,4 @@ var Validator = class {
182
231
  }
183
232
  };
184
233
  //#endregion
185
- export { Validator };
234
+ 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.18",
4
4
  "description": "sard 是基于 Vue3 的 Web 移动端 UI 组件库",
5
5
  "keywords": [
6
6
  "UI",