zkit-ui 1.0.6 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -11
- package/dist/ZKitCoreProvider.d.ts +13 -0
- package/dist/ZKitCoreProvider.d.ts.map +1 -0
- package/dist/ZKitCoreProvider.js +10 -0
- package/dist/ZKitProvider.d.ts +2 -10
- package/dist/ZKitProvider.d.ts.map +1 -1
- package/dist/ZKitProvider.js +4 -5
- package/dist/all.d.ts +59 -0
- package/dist/all.d.ts.map +1 -0
- package/dist/all.js +92 -0
- package/dist/index.d.ts +2 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -73
- package/dist/services/PermissionPurposeDialogService/index.d.ts +1 -1
- package/dist/services/PermissionPurposeDialogService/index.js +1 -1
- package/dist/services/PickerService/index.d.ts +1 -1
- package/dist/services/PickerService/index.js +1 -1
- package/dist/ui/DatePicker/index.d.ts.map +1 -1
- package/dist/ui/DatePicker/index.js +7 -4
- package/dist/ui/DatePicker/utils.d.ts +5 -1
- package/dist/ui/DatePicker/utils.d.ts.map +1 -1
- package/dist/ui/DatePicker/utils.js +62 -12
- package/package.json +164 -2
- package/src/ZKitCoreProvider.tsx +34 -0
- package/src/ZKitProvider.tsx +25 -33
- package/src/all.ts +397 -0
- package/src/index.ts +5 -374
- package/src/services/ActionDialogService/README.md +3 -2
- package/src/services/CardToastService/README.md +2 -2
- package/src/services/ImagePreviewService/README.md +2 -2
- package/src/services/LoadingService/README.md +1 -1
- package/src/services/PermissionPurposeDialogService/README.md +2 -2
- package/src/services/PermissionPurposeDialogService/index.tsx +1 -1
- package/src/services/PickerService/README.md +2 -2
- package/src/services/PickerService/index.tsx +1 -1
- package/src/ui/Accordion/README.md +2 -2
- package/src/ui/AddressCascader/README.md +4 -2
- package/src/ui/BetweenTime/README.md +12 -12
- package/src/ui/Button/README.md +7 -7
- package/src/ui/Checkbox/README.md +2 -2
- package/src/ui/DatePicker/README.md +2 -1
- package/src/ui/DatePicker/index.tsx +23 -4
- package/src/ui/DatePicker/utils.ts +93 -14
- package/src/ui/LinkedScroll/README.md +2 -1
- package/src/ui/Picker/README.md +2 -1
- package/src/ui/Radio/README.md +2 -1
- package/src/ui/Sheet/README.md +3 -1
- package/src/ui/SliderCaptcha/README.md +1 -1
- package/src/ui/Switch/README.md +1 -1
- package/src/ui/Text/README.md +2 -2
- package/src/ui/TextInput/README.md +6 -6
- package/src/ui/WheelColumn/README.md +1 -1
|
@@ -86,13 +86,16 @@ exports.DatePicker = React.forwardRef(function DatePicker({ value: valueProp, de
|
|
|
86
86
|
const [innerValue, setInnerValue] = React.useState(defaultValue);
|
|
87
87
|
const committedValue = isValueControlled ? valueProp : innerValue;
|
|
88
88
|
const bounds = React.useMemo(() => (0, utils_1.resolveDatePickerBounds)(min, max), [max, min]);
|
|
89
|
-
const
|
|
89
|
+
const optionConfig = React.useMemo(() => ({ bounds, precision, isDateDisabled }), [bounds, isDateDisabled, precision]);
|
|
90
|
+
const options = React.useMemo(() => (0, utils_1.buildDatePickerOptions)(optionConfig), [optionConfig]);
|
|
91
|
+
const getDateOptionChildren = React.useMemo(() => (0, utils_1.createDatePickerOptionChildrenResolver)(optionConfig), [optionConfig]);
|
|
92
|
+
const isDateOptionDisabled = React.useMemo(() => (0, utils_1.createDatePickerOptionDisabledResolver)(optionConfig, getDateOptionChildren), [getDateOptionChildren, optionConfig]);
|
|
90
93
|
const committedDate = React.useMemo(() => (0, utils_1.resolveCommittedDate)(committedValue, bounds, precision), [bounds, committedValue, precision]);
|
|
91
94
|
const pickerDate = React.useMemo(() => (0, utils_1.resolvePickerDate)(committedDate, defaultPickerValue, bounds, precision), [bounds, committedDate, defaultPickerValue, precision]);
|
|
92
95
|
const pickerValue = React.useMemo(() => (0, utils_1.pathFromDate)(pickerDate, precision), [pickerDate, precision]);
|
|
93
96
|
const committedSelection = React.useMemo(() => committedDate
|
|
94
|
-
? (0, utils_1.createDatePickerSelectionFromDate)(committedDate, precision, options, labelFormat)
|
|
95
|
-
: null, [committedDate, labelFormat, options, precision]);
|
|
97
|
+
? (0, utils_1.createDatePickerSelectionFromDate)(committedDate, precision, options, labelFormat, getDateOptionChildren)
|
|
98
|
+
: null, [committedDate, getDateOptionChildren, labelFormat, options, precision]);
|
|
96
99
|
const resolveSelection = React.useCallback((selection) => (0, utils_1.createDatePickerSelection)(selection, precision, labelFormat, selection.label), [labelFormat, precision]);
|
|
97
100
|
const handlePickerChange = React.useCallback((_next, selection) => {
|
|
98
101
|
const nextSelection = resolveSelection(selection);
|
|
@@ -153,5 +156,5 @@ exports.DatePicker = React.forwardRef(function DatePicker({ value: valueProp, de
|
|
|
153
156
|
return children;
|
|
154
157
|
return (pickerContext) => children(createRenderContext(committedSelection, precision, pickerContext, placeholderText));
|
|
155
158
|
}, [children, committedSelection, placeholderText, precision]);
|
|
156
|
-
return ((0, jsx_runtime_1.jsx)(Picker_1.Picker, { ref: ref, options: options, value: pickerValue, onChange: handlePickerChange, valueMode: "path", open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, onDismissComplete: onDismissComplete, title: title !== null && title !== void 0 ? title : t('datePicker.title'), placeholder: placeholderText, cancelText: cancelText, confirmText: confirmText, emptyText: emptyText, formatLabel: formatPickerLabel, renderColumnHeader: handleRenderColumnHeader, maxColumns: (0, utils_1.getColumnCount)(precision), lazyContent: lazyContent, sheetHeight: sheetHeight, disabled: disabled, onCancel: onCancel, onConfirm: handlePickerConfirm, onDraftChange: handlePickerDraftChange, children: pickerChildren }));
|
|
159
|
+
return ((0, jsx_runtime_1.jsx)(Picker_1.Picker, { ref: ref, options: options, value: pickerValue, onChange: handlePickerChange, valueMode: "path", open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, onDismissComplete: onDismissComplete, title: title !== null && title !== void 0 ? title : t('datePicker.title'), placeholder: placeholderText, cancelText: cancelText, confirmText: confirmText, emptyText: emptyText, formatLabel: formatPickerLabel, renderColumnHeader: handleRenderColumnHeader, getOptionChildren: getDateOptionChildren, isOptionDisabled: isDateOptionDisabled, maxColumns: (0, utils_1.getColumnCount)(precision), lazyContent: lazyContent, sheetHeight: sheetHeight, disabled: disabled, onCancel: onCancel, onConfirm: handlePickerConfirm, onDraftChange: handlePickerDraftChange, children: pickerChildren }));
|
|
157
160
|
});
|
|
@@ -15,6 +15,8 @@ type BuildOptionsConfig = {
|
|
|
15
15
|
precision: DatePickerPrecision;
|
|
16
16
|
isDateDisabled?: DatePickerProps['isDateDisabled'];
|
|
17
17
|
};
|
|
18
|
+
export type DatePickerOptionChildrenResolver = (option: DatePickerOption, index: number, path: DatePickerOption[]) => readonly DatePickerOption[] | undefined;
|
|
19
|
+
export type DatePickerOptionDisabledResolver = (option: DatePickerOption, index: number, path: DatePickerOption[]) => boolean;
|
|
18
20
|
export declare function normalizePrecision(input: DatePickerPrecision | undefined): DatePickerPrecision;
|
|
19
21
|
export declare function getColumnCount(precision: DatePickerPrecision): number;
|
|
20
22
|
export declare function formatDatePickerValue(date: Dayjs, precision: DatePickerPrecision): DatePickerValue;
|
|
@@ -25,8 +27,10 @@ export declare function resolveDatePickerBounds(min: DatePickerInput | null | un
|
|
|
25
27
|
export declare function resolveCommittedDate(value: DatePickerValue | null | undefined, bounds: DateBounds, precision: DatePickerPrecision): dayjs.Dayjs | null;
|
|
26
28
|
export declare function resolvePickerDate(committedDate: Dayjs | null, defaultPickerValue: DatePickerInput | null | undefined, bounds: DateBounds, precision: DatePickerPrecision): dayjs.Dayjs;
|
|
27
29
|
export declare function buildDatePickerOptions(config: BuildOptionsConfig): DatePickerOption[];
|
|
30
|
+
export declare function createDatePickerOptionChildrenResolver(config: BuildOptionsConfig): DatePickerOptionChildrenResolver;
|
|
31
|
+
export declare function createDatePickerOptionDisabledResolver(config: BuildOptionsConfig, getOptionChildren: DatePickerOptionChildrenResolver): DatePickerOptionDisabledResolver;
|
|
28
32
|
export declare function createDatePickerSelection(pickerSelection: PickerSelection<DatePickerOption>, precision: DatePickerPrecision, labelFormat?: DatePickerLabelFormat, labelOverride?: string): DatePickerSelection | null;
|
|
29
|
-
export declare function createDatePickerSelectionFromDate(date: Dayjs, precision: DatePickerPrecision, options: DatePickerOption[], labelFormat?: DatePickerLabelFormat): DatePickerSelection;
|
|
33
|
+
export declare function createDatePickerSelectionFromDate(date: Dayjs, precision: DatePickerPrecision, options: DatePickerOption[], labelFormat?: DatePickerLabelFormat, getOptionChildren?: DatePickerOptionChildrenResolver): DatePickerSelection;
|
|
30
34
|
export declare function dateFromOption(option: DatePickerOption | undefined, precision: DatePickerPrecision): dayjs.Dayjs | undefined;
|
|
31
35
|
export {};
|
|
32
36
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/DatePicker/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAEV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,mBAAmB,mCAA0E,CAAC;AAoB3G,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,KAAK,CAAC;IACX,GAAG,EAAE,KAAK,CAAC;CACZ,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,cAAc,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;CACpD,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/DatePicker/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ exports.resolveDatePickerBounds = resolveDatePickerBounds;
|
|
|
14
14
|
exports.resolveCommittedDate = resolveCommittedDate;
|
|
15
15
|
exports.resolvePickerDate = resolvePickerDate;
|
|
16
16
|
exports.buildDatePickerOptions = buildDatePickerOptions;
|
|
17
|
+
exports.createDatePickerOptionChildrenResolver = createDatePickerOptionChildrenResolver;
|
|
18
|
+
exports.createDatePickerOptionDisabledResolver = createDatePickerOptionDisabledResolver;
|
|
17
19
|
exports.createDatePickerSelection = createDatePickerSelection;
|
|
18
20
|
exports.createDatePickerSelectionFromDate = createDatePickerSelectionFromDate;
|
|
19
21
|
exports.dateFromOption = dateFromOption;
|
|
@@ -200,10 +202,6 @@ function buildMonths(year, config) {
|
|
|
200
202
|
const option = createOption('month', parts, precision === 'month'
|
|
201
203
|
? resolveDisabled(optionDate(parts), parts, 'month', precision, isDateDisabled)
|
|
202
204
|
: false);
|
|
203
|
-
if (precision === 'day') {
|
|
204
|
-
option.children = buildDays(year, month, config);
|
|
205
|
-
option.disabled = option.children.length > 0 && option.children.every((child) => child.disabled);
|
|
206
|
-
}
|
|
207
205
|
months.push(option);
|
|
208
206
|
}
|
|
209
207
|
return months;
|
|
@@ -216,14 +214,62 @@ function buildDatePickerOptions(config) {
|
|
|
216
214
|
const option = createOption('year', parts, precision === 'year'
|
|
217
215
|
? resolveDisabled(optionDate(parts), parts, 'year', precision, isDateDisabled)
|
|
218
216
|
: false);
|
|
219
|
-
if (precision !== 'year') {
|
|
220
|
-
option.children = buildMonths(year, config);
|
|
221
|
-
option.disabled = option.children.length > 0 && option.children.every((child) => child.disabled);
|
|
222
|
-
}
|
|
223
217
|
years.push(option);
|
|
224
218
|
}
|
|
225
219
|
return years;
|
|
226
220
|
}
|
|
221
|
+
function createDatePickerOptionChildrenResolver(config) {
|
|
222
|
+
const cache = new Map();
|
|
223
|
+
return (option) => {
|
|
224
|
+
if (option.column === 'year' && config.precision !== 'year') {
|
|
225
|
+
const key = `months:${option.year}`;
|
|
226
|
+
const cached = cache.get(key);
|
|
227
|
+
if (cached)
|
|
228
|
+
return cached;
|
|
229
|
+
const months = buildMonths(option.year, config);
|
|
230
|
+
cache.set(key, months);
|
|
231
|
+
return months;
|
|
232
|
+
}
|
|
233
|
+
if (option.column === 'month' && config.precision === 'day' && option.month != null) {
|
|
234
|
+
const key = `days:${option.year}-${option.month}`;
|
|
235
|
+
const cached = cache.get(key);
|
|
236
|
+
if (cached)
|
|
237
|
+
return cached;
|
|
238
|
+
const days = buildDays(option.year, option.month, config);
|
|
239
|
+
cache.set(key, days);
|
|
240
|
+
return days;
|
|
241
|
+
}
|
|
242
|
+
return [];
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function getOptionPathKey(option) {
|
|
246
|
+
var _a, _b;
|
|
247
|
+
return `${option.column}:${option.year}-${(_a = option.month) !== null && _a !== void 0 ? _a : 0}-${(_b = option.day) !== null && _b !== void 0 ? _b : 0}`;
|
|
248
|
+
}
|
|
249
|
+
function createDatePickerOptionDisabledResolver(config, getOptionChildren) {
|
|
250
|
+
const cache = new Map();
|
|
251
|
+
const resolveOption = (option, index, path) => {
|
|
252
|
+
var _a, _b;
|
|
253
|
+
const key = getOptionPathKey(option);
|
|
254
|
+
const cached = cache.get(key);
|
|
255
|
+
if (cached != null)
|
|
256
|
+
return cached;
|
|
257
|
+
let disabled = false;
|
|
258
|
+
if (option.column === config.precision) {
|
|
259
|
+
disabled =
|
|
260
|
+
(_a = option.disabled) !== null && _a !== void 0 ? _a : resolveDisabled(optionDate(option), option, option.column, config.precision, config.isDateDisabled);
|
|
261
|
+
}
|
|
262
|
+
else if (config.isDateDisabled) {
|
|
263
|
+
const children = (_b = getOptionChildren(option, index, path)) !== null && _b !== void 0 ? _b : [];
|
|
264
|
+
disabled =
|
|
265
|
+
children.length > 0 &&
|
|
266
|
+
children.every((child, childIndex) => resolveOption(child, childIndex, [...path, child]));
|
|
267
|
+
}
|
|
268
|
+
cache.set(key, disabled);
|
|
269
|
+
return disabled;
|
|
270
|
+
};
|
|
271
|
+
return resolveOption;
|
|
272
|
+
}
|
|
227
273
|
function numberValues(values) {
|
|
228
274
|
return values.map((value) => Number(value)).filter((value) => Number.isFinite(value));
|
|
229
275
|
}
|
|
@@ -268,11 +314,13 @@ function createDatePickerSelection(pickerSelection, precision, labelFormat, labe
|
|
|
268
314
|
label: labelOverride !== null && labelOverride !== void 0 ? labelOverride : resolveSelectionLabel(base, labelFormat),
|
|
269
315
|
};
|
|
270
316
|
}
|
|
271
|
-
function findOptionPath(options, values) {
|
|
317
|
+
function findOptionPath(options, values, getOptionChildren) {
|
|
318
|
+
var _a, _b;
|
|
272
319
|
const items = [];
|
|
273
320
|
const columns = [];
|
|
274
321
|
const indices = [];
|
|
275
322
|
let current = options;
|
|
323
|
+
let path = [];
|
|
276
324
|
for (const value of values) {
|
|
277
325
|
columns.push(current);
|
|
278
326
|
const index = current.findIndex((option) => option.value === value);
|
|
@@ -283,13 +331,15 @@ function findOptionPath(options, values) {
|
|
|
283
331
|
break;
|
|
284
332
|
items.push(item);
|
|
285
333
|
indices.push(index);
|
|
286
|
-
|
|
334
|
+
const nextPath = [...path, item];
|
|
335
|
+
current = [...((_b = (_a = getOptionChildren === null || getOptionChildren === void 0 ? void 0 : getOptionChildren(item, index, nextPath)) !== null && _a !== void 0 ? _a : item.children) !== null && _b !== void 0 ? _b : [])];
|
|
336
|
+
path = nextPath;
|
|
287
337
|
}
|
|
288
338
|
return { items, columns, indices };
|
|
289
339
|
}
|
|
290
|
-
function createDatePickerSelectionFromDate(date, precision, options, labelFormat) {
|
|
340
|
+
function createDatePickerSelectionFromDate(date, precision, options, labelFormat, getOptionChildren) {
|
|
291
341
|
const values = pathFromDate(date, precision);
|
|
292
|
-
const { items, columns, indices } = findOptionPath(options, values);
|
|
342
|
+
const { items, columns, indices } = findOptionPath(options, values, getOptionChildren);
|
|
293
343
|
const labels = values.map((value, index) => (index === 0 ? String(value) : pad2(value)));
|
|
294
344
|
const base = {
|
|
295
345
|
value: formatDatePickerValue(date, precision),
|
package/package.json
CHANGED
|
@@ -1,11 +1,171 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zkit-ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"source": "src/index.ts",
|
|
8
8
|
"react-native": "dist/index.js",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"react-native": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./all": {
|
|
16
|
+
"types": "./dist/all.d.ts",
|
|
17
|
+
"react-native": "./dist/all.js",
|
|
18
|
+
"default": "./dist/all.js"
|
|
19
|
+
},
|
|
20
|
+
"./provider": {
|
|
21
|
+
"types": "./dist/ZKitProvider.d.ts",
|
|
22
|
+
"react-native": "./dist/ZKitProvider.js",
|
|
23
|
+
"default": "./dist/ZKitProvider.js"
|
|
24
|
+
},
|
|
25
|
+
"./core-provider": {
|
|
26
|
+
"types": "./dist/ZKitCoreProvider.d.ts",
|
|
27
|
+
"react-native": "./dist/ZKitCoreProvider.js",
|
|
28
|
+
"default": "./dist/ZKitCoreProvider.js"
|
|
29
|
+
},
|
|
30
|
+
"./config": {
|
|
31
|
+
"types": "./dist/config.d.ts",
|
|
32
|
+
"react-native": "./dist/config.js",
|
|
33
|
+
"default": "./dist/config.js"
|
|
34
|
+
},
|
|
35
|
+
"./theme/*": {
|
|
36
|
+
"types": "./dist/theme/*.d.ts",
|
|
37
|
+
"react-native": "./dist/theme/*.js",
|
|
38
|
+
"default": "./dist/theme/*.js"
|
|
39
|
+
},
|
|
40
|
+
"./i18n/locales": {
|
|
41
|
+
"types": "./dist/i18n/locales/index.d.ts",
|
|
42
|
+
"react-native": "./dist/i18n/locales/index.js",
|
|
43
|
+
"default": "./dist/i18n/locales/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./i18n/locales/*": {
|
|
46
|
+
"types": "./dist/i18n/locales/*.d.ts",
|
|
47
|
+
"react-native": "./dist/i18n/locales/*.js",
|
|
48
|
+
"default": "./dist/i18n/locales/*.js"
|
|
49
|
+
},
|
|
50
|
+
"./i18n/*": {
|
|
51
|
+
"types": "./dist/i18n/*.d.ts",
|
|
52
|
+
"react-native": "./dist/i18n/*.js",
|
|
53
|
+
"default": "./dist/i18n/*.js"
|
|
54
|
+
},
|
|
55
|
+
"./accordion": {
|
|
56
|
+
"types": "./dist/ui/Accordion/index.d.ts",
|
|
57
|
+
"react-native": "./dist/ui/Accordion/index.js",
|
|
58
|
+
"default": "./dist/ui/Accordion/index.js"
|
|
59
|
+
},
|
|
60
|
+
"./address-cascader": {
|
|
61
|
+
"types": "./dist/ui/AddressCascader/index.d.ts",
|
|
62
|
+
"react-native": "./dist/ui/AddressCascader/index.js",
|
|
63
|
+
"default": "./dist/ui/AddressCascader/index.js"
|
|
64
|
+
},
|
|
65
|
+
"./between-time": {
|
|
66
|
+
"types": "./dist/ui/BetweenTime/index.d.ts",
|
|
67
|
+
"react-native": "./dist/ui/BetweenTime/index.js",
|
|
68
|
+
"default": "./dist/ui/BetweenTime/index.js"
|
|
69
|
+
},
|
|
70
|
+
"./button": {
|
|
71
|
+
"types": "./dist/ui/Button/index.d.ts",
|
|
72
|
+
"react-native": "./dist/ui/Button/index.js",
|
|
73
|
+
"default": "./dist/ui/Button/index.js"
|
|
74
|
+
},
|
|
75
|
+
"./checkbox": {
|
|
76
|
+
"types": "./dist/ui/Checkbox/index.d.ts",
|
|
77
|
+
"react-native": "./dist/ui/Checkbox/index.js",
|
|
78
|
+
"default": "./dist/ui/Checkbox/index.js"
|
|
79
|
+
},
|
|
80
|
+
"./date-picker": {
|
|
81
|
+
"types": "./dist/ui/DatePicker/index.d.ts",
|
|
82
|
+
"react-native": "./dist/ui/DatePicker/index.js",
|
|
83
|
+
"default": "./dist/ui/DatePicker/index.js"
|
|
84
|
+
},
|
|
85
|
+
"./linked-scroll": {
|
|
86
|
+
"types": "./dist/ui/LinkedScroll/index.d.ts",
|
|
87
|
+
"react-native": "./dist/ui/LinkedScroll/index.js",
|
|
88
|
+
"default": "./dist/ui/LinkedScroll/index.js"
|
|
89
|
+
},
|
|
90
|
+
"./loading-spinner": {
|
|
91
|
+
"types": "./dist/ui/LoadingSpinner/index.d.ts",
|
|
92
|
+
"react-native": "./dist/ui/LoadingSpinner/index.js",
|
|
93
|
+
"default": "./dist/ui/LoadingSpinner/index.js"
|
|
94
|
+
},
|
|
95
|
+
"./picker": {
|
|
96
|
+
"types": "./dist/ui/Picker/index.d.ts",
|
|
97
|
+
"react-native": "./dist/ui/Picker/index.js",
|
|
98
|
+
"default": "./dist/ui/Picker/index.js"
|
|
99
|
+
},
|
|
100
|
+
"./radio": {
|
|
101
|
+
"types": "./dist/ui/Radio/index.d.ts",
|
|
102
|
+
"react-native": "./dist/ui/Radio/index.js",
|
|
103
|
+
"default": "./dist/ui/Radio/index.js"
|
|
104
|
+
},
|
|
105
|
+
"./sheet": {
|
|
106
|
+
"types": "./dist/ui/Sheet/index.d.ts",
|
|
107
|
+
"react-native": "./dist/ui/Sheet/index.js",
|
|
108
|
+
"default": "./dist/ui/Sheet/index.js"
|
|
109
|
+
},
|
|
110
|
+
"./slider-captcha": {
|
|
111
|
+
"types": "./dist/ui/SliderCaptcha/index.d.ts",
|
|
112
|
+
"react-native": "./dist/ui/SliderCaptcha/index.js",
|
|
113
|
+
"default": "./dist/ui/SliderCaptcha/index.js"
|
|
114
|
+
},
|
|
115
|
+
"./switch": {
|
|
116
|
+
"types": "./dist/ui/Switch/index.d.ts",
|
|
117
|
+
"react-native": "./dist/ui/Switch/index.js",
|
|
118
|
+
"default": "./dist/ui/Switch/index.js"
|
|
119
|
+
},
|
|
120
|
+
"./text": {
|
|
121
|
+
"types": "./dist/ui/Text/index.d.ts",
|
|
122
|
+
"react-native": "./dist/ui/Text/index.js",
|
|
123
|
+
"default": "./dist/ui/Text/index.js"
|
|
124
|
+
},
|
|
125
|
+
"./text-input": {
|
|
126
|
+
"types": "./dist/ui/TextInput/index.d.ts",
|
|
127
|
+
"react-native": "./dist/ui/TextInput/index.js",
|
|
128
|
+
"default": "./dist/ui/TextInput/index.js"
|
|
129
|
+
},
|
|
130
|
+
"./wheel-column": {
|
|
131
|
+
"types": "./dist/ui/WheelColumn/index.d.ts",
|
|
132
|
+
"react-native": "./dist/ui/WheelColumn/index.js",
|
|
133
|
+
"default": "./dist/ui/WheelColumn/index.js"
|
|
134
|
+
},
|
|
135
|
+
"./action-dialog": {
|
|
136
|
+
"types": "./dist/services/ActionDialogService/index.d.ts",
|
|
137
|
+
"react-native": "./dist/services/ActionDialogService/index.js",
|
|
138
|
+
"default": "./dist/services/ActionDialogService/index.js"
|
|
139
|
+
},
|
|
140
|
+
"./image-preview": {
|
|
141
|
+
"types": "./dist/services/ImagePreviewService/index.d.ts",
|
|
142
|
+
"react-native": "./dist/services/ImagePreviewService/index.js",
|
|
143
|
+
"default": "./dist/services/ImagePreviewService/index.js"
|
|
144
|
+
},
|
|
145
|
+
"./loading": {
|
|
146
|
+
"types": "./dist/services/LoadingService/index.d.ts",
|
|
147
|
+
"react-native": "./dist/services/LoadingService/index.js",
|
|
148
|
+
"default": "./dist/services/LoadingService/index.js"
|
|
149
|
+
},
|
|
150
|
+
"./permission-purpose-dialog": {
|
|
151
|
+
"types": "./dist/services/PermissionPurposeDialogService/index.d.ts",
|
|
152
|
+
"react-native": "./dist/services/PermissionPurposeDialogService/index.js",
|
|
153
|
+
"default": "./dist/services/PermissionPurposeDialogService/index.js"
|
|
154
|
+
},
|
|
155
|
+
"./picker-service": {
|
|
156
|
+
"types": "./dist/services/PickerService/index.d.ts",
|
|
157
|
+
"react-native": "./dist/services/PickerService/index.js",
|
|
158
|
+
"default": "./dist/services/PickerService/index.js"
|
|
159
|
+
},
|
|
160
|
+
"./toast": {
|
|
161
|
+
"types": "./dist/services/CardToastService/index.d.ts",
|
|
162
|
+
"react-native": "./dist/services/CardToastService/index.js",
|
|
163
|
+
"default": "./dist/services/CardToastService/index.js"
|
|
164
|
+
},
|
|
165
|
+
"./assets/*": "./dist/assets/*",
|
|
166
|
+
"./package.json": "./package.json"
|
|
167
|
+
},
|
|
168
|
+
"sideEffects": false,
|
|
9
169
|
"repository": {
|
|
10
170
|
"type": "git",
|
|
11
171
|
"url": "git+https://github.com/Concur-max/zkit.git",
|
|
@@ -30,7 +190,7 @@
|
|
|
30
190
|
"@vant/area-data": "^2.1.0",
|
|
31
191
|
"dayjs": "^1.11.13",
|
|
32
192
|
"react-native-toast-message": "^2.3.3",
|
|
33
|
-
"zkit-tools": "1.0.
|
|
193
|
+
"zkit-tools": "1.0.1"
|
|
34
194
|
},
|
|
35
195
|
"peerDependencies": {
|
|
36
196
|
"@expo/vector-icons": "*",
|
|
@@ -70,6 +230,8 @@
|
|
|
70
230
|
},
|
|
71
231
|
"scripts": {
|
|
72
232
|
"build": "node scripts/build.cjs",
|
|
233
|
+
"verify:entrypoints": "node scripts/verify-entrypoints.cjs",
|
|
234
|
+
"verify": "pnpm run build && pnpm run verify:entrypoints",
|
|
73
235
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
74
236
|
}
|
|
75
237
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import { I18nProvider } from './i18n/I18nProvider';
|
|
3
|
+
import type { I18nMessages, I18nMissingKeyPolicy } from './i18n/types';
|
|
4
|
+
import { ThemeProvider } from './theme/ThemeProvider';
|
|
5
|
+
import type { Theme, ThemeOverride } from './theme/types';
|
|
6
|
+
|
|
7
|
+
export type ZKitCoreProviderProps = {
|
|
8
|
+
// baseTheme 用于传入完整主题作为基线(例如品牌主题)
|
|
9
|
+
baseTheme?: Theme;
|
|
10
|
+
// theme 用于对 baseTheme 做局部覆盖(例如只改 primary)
|
|
11
|
+
theme?: ThemeOverride;
|
|
12
|
+
locale?: string;
|
|
13
|
+
messages?: I18nMessages;
|
|
14
|
+
missingKeyPolicy?: I18nMissingKeyPolicy;
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// ZKitCoreProvider 只提供轻量核心上下文,不挂载任何全局浮层或选择器服务。
|
|
19
|
+
export function ZKitCoreProvider({
|
|
20
|
+
baseTheme,
|
|
21
|
+
theme,
|
|
22
|
+
locale,
|
|
23
|
+
messages,
|
|
24
|
+
missingKeyPolicy,
|
|
25
|
+
children,
|
|
26
|
+
}: ZKitCoreProviderProps) {
|
|
27
|
+
return (
|
|
28
|
+
<ThemeProvider baseTheme={baseTheme} theme={theme}>
|
|
29
|
+
<I18nProvider locale={locale} messages={messages} missingKeyPolicy={missingKeyPolicy}>
|
|
30
|
+
{children}
|
|
31
|
+
</I18nProvider>
|
|
32
|
+
</ThemeProvider>
|
|
33
|
+
);
|
|
34
|
+
}
|
package/src/ZKitProvider.tsx
CHANGED
|
@@ -1,30 +1,18 @@
|
|
|
1
|
-
import type * as React from 'react';
|
|
2
|
-
import { I18nProvider } from './i18n/I18nProvider';
|
|
3
|
-
import type { I18nMessages, I18nMissingKeyPolicy } from './i18n/types';
|
|
4
1
|
import { ActionDialogProvider } from './services/ActionDialogService/index';
|
|
5
2
|
import { ToastProvider } from './services/CardToastService/index';
|
|
6
3
|
import { ImagePreviewProvider } from './services/ImagePreviewService/index';
|
|
7
4
|
import { LoadingProvider, type LoadingDefaults } from './services/LoadingService/index';
|
|
8
5
|
import { PermissionPurposeDialogProvider } from './services/PermissionPurposeDialogService/index';
|
|
9
6
|
import { PickerServiceProvider } from './services/PickerService/index';
|
|
10
|
-
import {
|
|
11
|
-
import type { Theme, ThemeOverride } from './theme/types';
|
|
7
|
+
import { ZKitCoreProvider, type ZKitCoreProviderProps } from './ZKitCoreProvider';
|
|
12
8
|
|
|
13
|
-
export type ZKitProviderProps = {
|
|
14
|
-
// baseTheme 用于传入完整主题作为基线(例如品牌主题)
|
|
15
|
-
baseTheme?: Theme;
|
|
16
|
-
// theme 用于对 baseTheme 做局部覆盖(例如只改 primary)
|
|
17
|
-
theme?: ThemeOverride;
|
|
18
|
-
locale?: string;
|
|
19
|
-
messages?: I18nMessages;
|
|
20
|
-
missingKeyPolicy?: I18nMissingKeyPolicy;
|
|
9
|
+
export type ZKitProviderProps = ZKitCoreProviderProps & {
|
|
21
10
|
loading?: LoadingDefaults;
|
|
22
|
-
children: React.ReactNode;
|
|
23
11
|
};
|
|
24
12
|
|
|
25
|
-
// ZKitProvider
|
|
13
|
+
// ZKitProvider 是完整应用 Provider:
|
|
26
14
|
// - 同时提供 Theme 与 i18n
|
|
27
|
-
// -
|
|
15
|
+
// - 挂载 Picker / Toast / Dialog / Loading / Permission / ImagePreview 等全局服务
|
|
28
16
|
export function ZKitProvider({
|
|
29
17
|
baseTheme,
|
|
30
18
|
theme,
|
|
@@ -35,22 +23,26 @@ export function ZKitProvider({
|
|
|
35
23
|
children,
|
|
36
24
|
}: ZKitProviderProps) {
|
|
37
25
|
return (
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
26
|
+
<ZKitCoreProvider
|
|
27
|
+
baseTheme={baseTheme}
|
|
28
|
+
theme={theme}
|
|
29
|
+
locale={locale}
|
|
30
|
+
messages={messages}
|
|
31
|
+
missingKeyPolicy={missingKeyPolicy}
|
|
32
|
+
>
|
|
33
|
+
<PickerServiceProvider>
|
|
34
|
+
<ToastProvider>
|
|
35
|
+
<ActionDialogProvider>
|
|
36
|
+
<LoadingProvider defaults={loading}>
|
|
37
|
+
<PermissionPurposeDialogProvider>
|
|
38
|
+
<ImagePreviewProvider>
|
|
39
|
+
{children}
|
|
40
|
+
</ImagePreviewProvider>
|
|
41
|
+
</PermissionPurposeDialogProvider>
|
|
42
|
+
</LoadingProvider>
|
|
43
|
+
</ActionDialogProvider>
|
|
44
|
+
</ToastProvider>
|
|
45
|
+
</PickerServiceProvider>
|
|
46
|
+
</ZKitCoreProvider>
|
|
55
47
|
);
|
|
56
48
|
}
|