@uzum-tech/ui 2.0.6 → 2.0.8
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/dist/index.js +159 -87
- package/dist/index.mjs +159 -87
- package/dist/index.prod.js +2 -2
- package/dist/index.prod.mjs +2 -2
- package/es/_internal/icons/index.d.ts +0 -1
- package/es/_internal/icons/index.mjs +0 -1
- package/es/components.d.ts +74 -31
- package/es/tree/src/Tree.d.ts +49 -24
- package/es/tree/src/Tree.mjs +18 -13
- package/es/tree/src/TreeNodeCheckbox.d.ts +4 -0
- package/es/tree/src/TreeNodeSwitcher.mjs +24 -26
- package/es/tree/src/styles/index.cssr.mjs +11 -8
- package/es/tree/styles/light.d.ts +4 -0
- package/es/tree/styles/light.mjs +2 -0
- package/es/tree-select/index.d.ts +1 -1
- package/es/tree-select/src/TreeSelect.d.ts +52 -17
- package/es/tree-select/src/TreeSelect.mjs +78 -45
- package/es/tree-select/src/interface.d.ts +7 -1
- package/es/tree-select/src/scroll-option-end.d.ts +3 -0
- package/es/tree-select/src/scroll-option-end.mjs +28 -0
- package/es/tree-select/styles/light.d.ts +2 -0
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/lib/_internal/icons/index.d.ts +0 -1
- package/lib/_internal/icons/index.js +1 -3
- package/lib/components.d.ts +74 -31
- package/lib/tree/src/Tree.d.ts +49 -24
- package/lib/tree/src/Tree.js +16 -15
- package/lib/tree/src/TreeNodeCheckbox.d.ts +4 -0
- package/lib/tree/src/TreeNodeSwitcher.js +11 -14
- package/lib/tree/src/styles/index.cssr.js +11 -8
- package/lib/tree/styles/light.d.ts +4 -0
- package/lib/tree/styles/light.js +2 -0
- package/lib/tree-select/index.d.ts +1 -1
- package/lib/tree-select/src/TreeSelect.d.ts +52 -17
- package/lib/tree-select/src/TreeSelect.js +79 -49
- package/lib/tree-select/src/interface.d.ts +7 -1
- package/lib/tree-select/src/scroll-option-end.d.ts +3 -0
- package/lib/tree-select/src/scroll-option-end.js +30 -0
- package/lib/tree-select/styles/light.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +5 -4
- package/web-types.json +41 -1
- package/es/_internal/icons/Switcher.d.ts +0 -2
- package/es/_internal/icons/Switcher.mjs +0 -12
- package/lib/_internal/icons/Switcher.d.ts +0 -2
- package/lib/_internal/icons/Switcher.js +0 -10
|
@@ -19,6 +19,7 @@ const Tree_1 = require("../../tree/src/Tree");
|
|
|
19
19
|
const utils_1 = require("../../tree/src/utils");
|
|
20
20
|
const styles_1 = require("../styles");
|
|
21
21
|
const interface_1 = require("./interface");
|
|
22
|
+
const scroll_option_end_1 = require("./scroll-option-end");
|
|
22
23
|
const index_cssr_1 = __importDefault(require("./styles/index.cssr"));
|
|
23
24
|
const utils_2 = require("./utils");
|
|
24
25
|
exports.treeSelectProps = Object.assign(Object.assign(Object.assign(Object.assign({}, _mixins_1.useTheme.props), { bordered: {
|
|
@@ -39,7 +40,7 @@ exports.treeSelectProps = Object.assign(Object.assign(Object.assign(Object.assig
|
|
|
39
40
|
}, filterable: Boolean, checkStrategy: {
|
|
40
41
|
type: String,
|
|
41
42
|
default: 'all'
|
|
42
|
-
}, loading: Boolean, maxTagCount: [String, Number], multiple: Boolean, showPath: Boolean, separator: {
|
|
43
|
+
}, loading: Boolean, maxTagCount: [String, Number], multiple: Boolean, remote: Boolean, showPath: Boolean, separator: {
|
|
43
44
|
type: String,
|
|
44
45
|
default: ' / '
|
|
45
46
|
}, options: {
|
|
@@ -54,7 +55,7 @@ exports.treeSelectProps = Object.assign(Object.assign(Object.assign(Object.assig
|
|
|
54
55
|
}, size: String, value: [String, Number, Array], to: _utils_1.useAdjustedTo.propTo, menuProps: Object, virtualScroll: {
|
|
55
56
|
type: Boolean,
|
|
56
57
|
default: true
|
|
57
|
-
}, status: String, renderTag: Function }), Tree_1.treeSharedProps), { renderLabel: Function, renderPrefix: Function, renderSuffix: Function, nodeProps: Function, onBlur: Function, onFocus: Function, onLoad: Function, onUpdateShow: [Function, Array], onUpdateValue: [Function, Array], 'onUpdate:value': [Function, Array], 'onUpdate:show': [Function, Array],
|
|
58
|
+
}, status: String, renderTag: Function }), Tree_1.treeSharedProps), { renderLabel: Function, renderPrefix: Function, renderSuffix: Function, nodeProps: Function, onBlur: Function, onFocus: Function, onScroll: [Function, Array], onScrollOptionEnd: [Function, Array], onSearch: [Function, Array], onLoad: Function, onUpdateShow: [Function, Array], onUpdateValue: [Function, Array], 'onUpdate:value': [Function, Array], 'onUpdate:show': [Function, Array],
|
|
58
59
|
/**
|
|
59
60
|
* @deprecated
|
|
60
61
|
*/
|
|
@@ -85,20 +86,20 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
85
86
|
const controlledShowRef = (0, vue_1.toRef)(props, 'show');
|
|
86
87
|
const mergedShowRef = (0, vooks_1.useMergedState)(controlledShowRef, uncontrolledShowRef);
|
|
87
88
|
const patternRef = (0, vue_1.ref)('');
|
|
89
|
+
const treePatternRef = (0, vue_1.computed)(() => {
|
|
90
|
+
return props.remote ? '' : patternRef.value;
|
|
91
|
+
});
|
|
88
92
|
const mergedFilterRef = (0, vue_1.computed)(() => {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return filter;
|
|
92
|
-
const { labelField } = props;
|
|
93
|
+
if (props.filter)
|
|
94
|
+
return props.filter;
|
|
93
95
|
return (pattern, node) => {
|
|
94
96
|
if (!pattern.length)
|
|
95
97
|
return true;
|
|
96
|
-
return node[labelField]
|
|
98
|
+
return node[props.labelField]
|
|
97
99
|
.toLowerCase()
|
|
98
100
|
.includes(pattern.toLowerCase());
|
|
99
101
|
};
|
|
100
102
|
});
|
|
101
|
-
// used to resolve selected options
|
|
102
103
|
const dataTreeMateRef = (0, vue_1.computed)(() => (0, treemate_1.createTreeMate)(props.options, (0, Tree_1.createTreeMateOptions)(props.keyField, props.childrenField, props.disabledField, undefined)));
|
|
103
104
|
const { value: initMergedValue } = mergedValueRef;
|
|
104
105
|
const pendingNodeKeyRef = (0, vue_1.ref)(props.checkable
|
|
@@ -117,6 +118,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
117
118
|
const controlledExpandedKeysRef = (0, vue_1.toRef)(props, 'expandedKeys');
|
|
118
119
|
const mergedExpandedKeysRef = (0, vooks_1.useMergedState)(controlledExpandedKeysRef, uncontrolledExpandedKeysRef);
|
|
119
120
|
const focusedRef = (0, vue_1.ref)(false);
|
|
121
|
+
let visibleRootEndKeys = new Set();
|
|
120
122
|
const mergedPlaceholderRef = (0, vue_1.computed)(() => {
|
|
121
123
|
const { placeholder } = props;
|
|
122
124
|
if (placeholder !== undefined)
|
|
@@ -232,17 +234,17 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
232
234
|
}
|
|
233
235
|
uncontrolledExpandedKeysRef.value = keys;
|
|
234
236
|
}
|
|
235
|
-
function doFocus(
|
|
237
|
+
function doFocus(event) {
|
|
236
238
|
const { onFocus } = props;
|
|
237
239
|
if (onFocus)
|
|
238
|
-
onFocus(
|
|
240
|
+
onFocus(event);
|
|
239
241
|
triggerFormFocus();
|
|
240
242
|
}
|
|
241
|
-
function doBlur(
|
|
243
|
+
function doBlur(event) {
|
|
242
244
|
closeMenu();
|
|
243
245
|
const { onBlur } = props;
|
|
244
246
|
if (onBlur)
|
|
245
|
-
onBlur(
|
|
247
|
+
onBlur(event);
|
|
246
248
|
triggerFormBlur();
|
|
247
249
|
}
|
|
248
250
|
function closeMenu() {
|
|
@@ -259,11 +261,12 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
259
261
|
}
|
|
260
262
|
function handleMenuLeave() {
|
|
261
263
|
patternRef.value = '';
|
|
264
|
+
visibleRootEndKeys = new Set();
|
|
262
265
|
}
|
|
263
|
-
function handleMenuClickoutside(
|
|
266
|
+
function handleMenuClickoutside(event) {
|
|
264
267
|
var _a;
|
|
265
268
|
if (mergedShowRef.value) {
|
|
266
|
-
if (!((_a = triggerInstRef.value) === null || _a === void 0 ? void 0 : _a.$el.contains((0, seemly_1.getPreciseEventTarget)(
|
|
269
|
+
if (!((_a = triggerInstRef.value) === null || _a === void 0 ? void 0 : _a.$el.contains((0, seemly_1.getPreciseEventTarget)(event)))) {
|
|
267
270
|
// outside select, don't need to return focus
|
|
268
271
|
closeMenu();
|
|
269
272
|
}
|
|
@@ -316,40 +319,40 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
316
319
|
doUpdateIndeterminateKeys(keys, getOptionsByKeys(keys));
|
|
317
320
|
}
|
|
318
321
|
}
|
|
319
|
-
function handleTriggerFocus(
|
|
322
|
+
function handleTriggerFocus(event) {
|
|
320
323
|
var _a;
|
|
321
|
-
if ((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(
|
|
324
|
+
if ((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget))
|
|
322
325
|
return;
|
|
323
326
|
focusedRef.value = true;
|
|
324
|
-
doFocus(
|
|
327
|
+
doFocus(event);
|
|
325
328
|
}
|
|
326
|
-
function handleTriggerBlur(
|
|
329
|
+
function handleTriggerBlur(event) {
|
|
327
330
|
var _a;
|
|
328
|
-
if ((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(
|
|
331
|
+
if ((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget))
|
|
329
332
|
return;
|
|
330
333
|
focusedRef.value = false;
|
|
331
|
-
doBlur(
|
|
334
|
+
doBlur(event);
|
|
332
335
|
}
|
|
333
|
-
function handleMenuFocusin(
|
|
336
|
+
function handleMenuFocusin(event) {
|
|
334
337
|
var _a, _b, _c;
|
|
335
|
-
if (((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(
|
|
336
|
-
|| ((_c = (_b = triggerInstRef.value) === null || _b === void 0 ? void 0 : _b.$el) === null || _c === void 0 ? void 0 : _c.contains(
|
|
338
|
+
if (((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget))
|
|
339
|
+
|| ((_c = (_b = triggerInstRef.value) === null || _b === void 0 ? void 0 : _b.$el) === null || _c === void 0 ? void 0 : _c.contains(event.relatedTarget))) {
|
|
337
340
|
return;
|
|
338
341
|
}
|
|
339
342
|
focusedRef.value = true;
|
|
340
|
-
doFocus(
|
|
343
|
+
doFocus(event);
|
|
341
344
|
}
|
|
342
|
-
function handleMenuFocusout(
|
|
345
|
+
function handleMenuFocusout(event) {
|
|
343
346
|
var _a, _b, _c;
|
|
344
|
-
if (((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(
|
|
345
|
-
|| ((_c = (_b = triggerInstRef.value) === null || _b === void 0 ? void 0 : _b.$el) === null || _c === void 0 ? void 0 : _c.contains(
|
|
347
|
+
if (((_a = menuElRef.value) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget))
|
|
348
|
+
|| ((_c = (_b = triggerInstRef.value) === null || _b === void 0 ? void 0 : _b.$el) === null || _c === void 0 ? void 0 : _c.contains(event.relatedTarget))) {
|
|
346
349
|
return;
|
|
347
350
|
}
|
|
348
351
|
focusedRef.value = false;
|
|
349
|
-
doBlur(
|
|
352
|
+
doBlur(event);
|
|
350
353
|
}
|
|
351
|
-
function handleClear(
|
|
352
|
-
|
|
354
|
+
function handleClear(event) {
|
|
355
|
+
event.stopPropagation();
|
|
353
356
|
const { multiple } = props;
|
|
354
357
|
if (!multiple && props.filterable) {
|
|
355
358
|
closeMenu();
|
|
@@ -399,20 +402,24 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
399
402
|
}
|
|
400
403
|
}
|
|
401
404
|
}
|
|
402
|
-
function
|
|
403
|
-
|
|
405
|
+
function doSearch(value) {
|
|
406
|
+
props.onSearch && (0, _utils_1.call)(props.onSearch, value);
|
|
407
|
+
}
|
|
408
|
+
function handlePatternInput(event) {
|
|
409
|
+
const { value } = event.target;
|
|
404
410
|
patternRef.value = value;
|
|
411
|
+
doSearch(value);
|
|
405
412
|
}
|
|
406
|
-
function treeHandleKeydown(
|
|
413
|
+
function treeHandleKeydown(event) {
|
|
407
414
|
const { value: treeInst } = treeInstRef;
|
|
408
415
|
if (treeInst) {
|
|
409
|
-
treeInst.handleKeydown(
|
|
416
|
+
treeInst.handleKeydown(event);
|
|
410
417
|
}
|
|
411
418
|
}
|
|
412
|
-
function handleKeydown(
|
|
413
|
-
if (
|
|
419
|
+
function handleKeydown(event) {
|
|
420
|
+
if (event.key === 'Enter') {
|
|
414
421
|
if (mergedShowRef.value) {
|
|
415
|
-
treeHandleKeydown(
|
|
422
|
+
treeHandleKeydown(event);
|
|
416
423
|
if (!props.multiple) {
|
|
417
424
|
closeMenu();
|
|
418
425
|
focusSelection();
|
|
@@ -421,20 +428,20 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
421
428
|
else {
|
|
422
429
|
openMenu();
|
|
423
430
|
}
|
|
424
|
-
|
|
431
|
+
event.preventDefault();
|
|
425
432
|
}
|
|
426
|
-
else if (
|
|
433
|
+
else if (event.key === 'Escape') {
|
|
427
434
|
if (mergedShowRef.value) {
|
|
428
|
-
(0, _utils_1.markEventEffectPerformed)(
|
|
435
|
+
(0, _utils_1.markEventEffectPerformed)(event);
|
|
429
436
|
closeMenu();
|
|
430
437
|
focusSelection();
|
|
431
438
|
}
|
|
432
439
|
}
|
|
433
440
|
else {
|
|
434
441
|
if (mergedShowRef.value) {
|
|
435
|
-
treeHandleKeydown(
|
|
442
|
+
treeHandleKeydown(event);
|
|
436
443
|
}
|
|
437
|
-
else if (
|
|
444
|
+
else if (event.key === 'ArrowDown') {
|
|
438
445
|
openMenu();
|
|
439
446
|
}
|
|
440
447
|
}
|
|
@@ -443,11 +450,33 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
443
450
|
closeMenu();
|
|
444
451
|
focusSelection();
|
|
445
452
|
}
|
|
446
|
-
function handleMenuMousedown(
|
|
453
|
+
function handleMenuMousedown(event) {
|
|
447
454
|
// If there's an action slot later, we need to check if mousedown happens
|
|
448
455
|
// in action panel
|
|
449
|
-
if (!(0, seemly_1.happensIn)(
|
|
450
|
-
|
|
456
|
+
if (!(0, seemly_1.happensIn)(event, 'action'))
|
|
457
|
+
event.preventDefault();
|
|
458
|
+
}
|
|
459
|
+
function doScroll(event) {
|
|
460
|
+
const { onScroll } = props;
|
|
461
|
+
if (onScroll)
|
|
462
|
+
(0, _utils_1.call)(onScroll, event);
|
|
463
|
+
}
|
|
464
|
+
function doScrollOptionEnd(option, event) {
|
|
465
|
+
props.onScrollOptionEnd && (0, _utils_1.call)(props.onScrollOptionEnd, option, event);
|
|
466
|
+
}
|
|
467
|
+
function handleTreeScroll(event) {
|
|
468
|
+
doScroll(event);
|
|
469
|
+
if (!props.onScrollOptionEnd)
|
|
470
|
+
return;
|
|
471
|
+
const scrollElement = (event.currentTarget
|
|
472
|
+
|| event.target);
|
|
473
|
+
if (!scrollElement)
|
|
474
|
+
return;
|
|
475
|
+
const { reachedOptions, visibleKeys } = (0, scroll_option_end_1.scanReachedRootOptions)(scrollElement, dataTreeMateRef.value.treeNodes, mergedExpandedKeysRef.value, visibleRootEndKeys);
|
|
476
|
+
visibleRootEndKeys = visibleKeys;
|
|
477
|
+
for (const reachedOption of reachedOptions) {
|
|
478
|
+
doScrollOptionEnd(reachedOption, event);
|
|
479
|
+
}
|
|
451
480
|
}
|
|
452
481
|
const selectionRenderTagRef = (0, vue_1.computed)(() => {
|
|
453
482
|
const { renderTag } = props;
|
|
@@ -540,7 +569,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
540
569
|
: undefined;
|
|
541
570
|
return Object.assign(Object.assign({}, exposedMethods), { menuElRef, mergedStatus: mergedStatusRef, triggerInstRef,
|
|
542
571
|
followerInstRef,
|
|
543
|
-
treeInstRef, mergedClsPrefix: mergedClsPrefixRef, mergedValue: mergedValueRef, mergedShow: mergedShowRef, namespace: namespaceRef, adjustedTo: (0, _utils_1.useAdjustedTo)(props), isMounted: (0, vooks_1.useIsMounted)(), focused: focusedRef, menuPadding: menuPaddingRef, mergedPlaceholder: mergedPlaceholderRef, mergedExpandedKeys: mergedExpandedKeysRef, treeSelectedKeys: treeSelectedKeysRef, treeCheckedKeys: treeCheckedKeysRef, mergedSize: mergedSizeRef, mergedDisabled: mergedDisabledRef, selectedOption: selectedOptionRef, selectedOptions: selectedOptionsRef, pattern: patternRef, pendingNodeKey: pendingNodeKeyRef, mergedCascade: mergedCascadeRef, mergedFilter: mergedFilterRef, selectionRenderTag: selectionRenderTagRef, handleTriggerOrMenuResize,
|
|
572
|
+
treeInstRef, mergedClsPrefix: mergedClsPrefixRef, mergedValue: mergedValueRef, mergedShow: mergedShowRef, namespace: namespaceRef, adjustedTo: (0, _utils_1.useAdjustedTo)(props), isMounted: (0, vooks_1.useIsMounted)(), focused: focusedRef, menuPadding: menuPaddingRef, mergedPlaceholder: mergedPlaceholderRef, mergedExpandedKeys: mergedExpandedKeysRef, treeSelectedKeys: treeSelectedKeysRef, treeCheckedKeys: treeCheckedKeysRef, mergedSize: mergedSizeRef, mergedDisabled: mergedDisabledRef, selectedOption: selectedOptionRef, selectedOptions: selectedOptionsRef, pattern: patternRef, treePattern: treePatternRef, pendingNodeKey: pendingNodeKeyRef, mergedCascade: mergedCascadeRef, mergedFilter: mergedFilterRef, selectionRenderTag: selectionRenderTagRef, handleTriggerOrMenuResize,
|
|
544
573
|
doUpdateExpandedKeys,
|
|
545
574
|
handleMenuLeave,
|
|
546
575
|
handleTriggerClick,
|
|
@@ -556,7 +585,8 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
556
585
|
handlePatternInput,
|
|
557
586
|
handleKeydown,
|
|
558
587
|
handleTabOut,
|
|
559
|
-
handleMenuMousedown,
|
|
588
|
+
handleMenuMousedown,
|
|
589
|
+
handleTreeScroll, mergedTheme: themeRef, cssVars: inlineThemeDisabled ? undefined : cssVarsRef, themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass, onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender });
|
|
560
590
|
},
|
|
561
591
|
render() {
|
|
562
592
|
const { mergedTheme, mergedClsPrefix, $slots } = this;
|
|
@@ -584,9 +614,9 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
584
614
|
(menuProps === null || menuProps === void 0 ? void 0 : menuProps.style) || '',
|
|
585
615
|
this.cssVars
|
|
586
616
|
], tabindex: 0, onMousedown: this.handleMenuMousedown, onKeydown: this.handleKeydown, onFocusin: this.handleMenuFocusin, onFocusout: this.handleMenuFocusout }),
|
|
587
|
-
(0, vue_1.h)(tree_1.UTree, { ref: "treeInstRef", blockLine: true, allowCheckingNotLoaded: this.allowCheckingNotLoaded, showIrrelevantNodes: false, animated: false, pattern: this.
|
|
617
|
+
(0, vue_1.h)(tree_1.UTree, { ref: "treeInstRef", blockLine: true, allowCheckingNotLoaded: this.allowCheckingNotLoaded, showIrrelevantNodes: false, animated: false, pattern: this.treePattern, filter: this.mergedFilter, data: options, cancelable: multiple, labelField: this.labelField, keyField: this.keyField, disabledField: this.disabledField, childrenField: this.childrenField, theme: mergedTheme.peers.Tree, themeOverrides: mergedTheme.peerOverrides.Tree, defaultExpandAll: this.defaultExpandAll, defaultExpandedKeys: this.defaultExpandedKeys, expandedKeys: this.mergedExpandedKeys, checkedKeys: this.treeCheckedKeys, selectedKeys: this.treeSelectedKeys, checkable: checkable, checkStrategy: this.checkStrategy, cascade: this.mergedCascade, leafOnly: this.leafOnly, multiple: this.multiple, renderLabel: this.renderLabel, renderPrefix: this.renderPrefix, renderSuffix: this.renderSuffix, renderSwitcherIcon: this.renderSwitcherIcon, nodeProps: this.nodeProps, virtualScroll: this.consistentMenuWidth && this.virtualScroll, internalTreeSelect: true, internalUnifySelectCheck: true, internalScrollable: true, internalScrollablePadding: this.menuPadding, internalFocusable: false, internalCheckboxFocusable: false, internalRenderEmpty: () => ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-tree-select-menu__empty` }, (0, _utils_1.resolveSlot)($slots.empty, () => [
|
|
588
618
|
(0, vue_1.h)(empty_1.UEmpty, { theme: mergedTheme.peers.Empty, themeOverrides: mergedTheme.peerOverrides.Empty })
|
|
589
|
-
]))), onLoad: this.onLoad, onUpdateCheckedKeys: this.handleUpdateCheckedKeys, onUpdateIndeterminateKeys: this.handleUpdateIndeterminateKeys, onUpdateExpandedKeys: this.doUpdateExpandedKeys }),
|
|
619
|
+
]))), onLoad: this.onLoad, onUpdateCheckedKeys: this.handleUpdateCheckedKeys, onUpdateIndeterminateKeys: this.handleUpdateIndeterminateKeys, onUpdateExpandedKeys: this.doUpdateExpandedKeys, onScroll: this.handleTreeScroll }),
|
|
590
620
|
(0, _utils_1.resolveWrappedSlot)($slots.action, (children) => {
|
|
591
621
|
return children ? ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-tree-select-menu__action`, "data-action": true }, children)) : null;
|
|
592
622
|
}),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TreeMate, TreeNode } from 'treemate';
|
|
1
|
+
import type { Key, TreeMate, TreeNode } from 'treemate';
|
|
2
2
|
import type { HTMLAttributes, Ref, VNodeChild } from 'vue';
|
|
3
3
|
import type { TreeOption, TreeOptionBase } from '../../tree/src/interface';
|
|
4
4
|
export type TreeSelectOption = Omit<TreeOptionBase, 'checkboxDisabled' | 'isLeaf' | 'children'> & {
|
|
@@ -28,6 +28,12 @@ export type OnUpdateValueImpl = (value: string | number | (string | number) | st
|
|
|
28
28
|
}) => void;
|
|
29
29
|
export type OnUpdateIndeterminateKeysImpl = (value: string | number | (string | number) | string[] | number[] | Array<string | number> | null, option: TreeSelectOption | null | Array<TreeSelectOption | null>) => void;
|
|
30
30
|
export type Value = string | number | Array<string | number> | null;
|
|
31
|
+
export type OnScrollOptionEnd = (option: TreeSelectOption, event: Event) => void;
|
|
32
|
+
export type FilterHandler = (pattern: string, node: TreeSelectOption) => boolean;
|
|
33
|
+
export interface ScrollOptionEndScanResult {
|
|
34
|
+
reachedOptions: TreeSelectOption[];
|
|
35
|
+
visibleKeys: Set<Key>;
|
|
36
|
+
}
|
|
31
37
|
export interface TreeSelectInjection {
|
|
32
38
|
pendingNodeKeyRef: Ref<string | number | null>;
|
|
33
39
|
dataTreeMate: Ref<TreeMate<TreeOption>>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Key } from '../../tree/src/interface';
|
|
2
|
+
import type { ScrollOptionEndScanResult, TreeSelectTmNode } from './interface';
|
|
3
|
+
export declare function scanReachedRootOptions(scrollElement: HTMLElement, rootNodes: TreeSelectTmNode[], expandedKeys: Key[] | undefined, previousVisibleKeys: Set<Key>): ScrollOptionEndScanResult;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scanReachedRootOptions = scanReachedRootOptions;
|
|
4
|
+
const _utils_1 = require("../../_utils");
|
|
5
|
+
function isVerticallyVisibleWithin(element, containerRect) {
|
|
6
|
+
const elementRect = element.getBoundingClientRect();
|
|
7
|
+
return (elementRect.top < containerRect.bottom
|
|
8
|
+
&& elementRect.bottom > containerRect.top);
|
|
9
|
+
}
|
|
10
|
+
function scanReachedRootOptions(scrollElement, rootNodes, expandedKeys, previousVisibleKeys) {
|
|
11
|
+
const containerRect = scrollElement.getBoundingClientRect();
|
|
12
|
+
const visibleKeys = new Set();
|
|
13
|
+
const reachedOptions = [];
|
|
14
|
+
for (const rootNode of rootNodes) {
|
|
15
|
+
const { children } = rootNode;
|
|
16
|
+
if (!(children === null || children === void 0 ? void 0 : children.length) || !(expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.includes(rootNode.key)))
|
|
17
|
+
continue;
|
|
18
|
+
const lastChild = children[children.length - 1];
|
|
19
|
+
const lastChildElement = scrollElement.querySelector(`[data-key="${(0, _utils_1.createDataKey)(lastChild.key)}"]`);
|
|
20
|
+
const isHiddenOrMissing = !lastChildElement
|
|
21
|
+
|| !isVerticallyVisibleWithin(lastChildElement, containerRect);
|
|
22
|
+
if (isHiddenOrMissing)
|
|
23
|
+
continue;
|
|
24
|
+
visibleKeys.add(rootNode.key);
|
|
25
|
+
if (!previousVisibleKeys.has(rootNode.key)) {
|
|
26
|
+
reachedOptions.push(rootNode.rawNode);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return { reachedOptions, visibleKeys };
|
|
30
|
+
}
|
|
@@ -30,6 +30,8 @@ declare const treeSelectLight: import("../../_mixins/use-theme").Theme<"TreeSele
|
|
|
30
30
|
nodeColorPressed: string;
|
|
31
31
|
nodeColorActive: string;
|
|
32
32
|
arrowColor: string;
|
|
33
|
+
switcherColor: string;
|
|
34
|
+
switcherSize: string;
|
|
33
35
|
nodeTextColor: string;
|
|
34
36
|
nodeTextColorDisabled: string;
|
|
35
37
|
loadingColor: string;
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "2.0.
|
|
1
|
+
declare const _default: "2.0.8";
|
|
2
2
|
export default _default;
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uzum-tech/ui",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
|
+
"packageManager": "pnpm@10.33.0",
|
|
4
5
|
"description": "A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast",
|
|
5
6
|
"author": {
|
|
6
7
|
"name": "KapitalLab",
|
|
@@ -57,9 +58,9 @@
|
|
|
57
58
|
"dev": "pnpm run clean && pnpm run gen-version && pnpm run gen-volar-dts && NODE_ENV=development vite",
|
|
58
59
|
"build:package": "pnpm run gen-version && pnpm run clean && pnpm run gen-volar-dts && tsc -b --force tsconfig.esm.json && tsx scripts/pre-build/pre-cjs-build.ts && tsc -b --force tsconfig.cjs.json && rollup -c && pnpm run test:umd && pnpm run test:esm && pnpm run post-build && rimraf {es,lib}/*.tsbuildinfo",
|
|
59
60
|
"build:themes": "tsc -b --force themes/tusimple/tsconfig.esm.json && tsc -b --force themes/tusimple/tsconfig.cjs.json",
|
|
60
|
-
"build:site": "
|
|
61
|
+
"build:site": "sh ./scripts/pre-build-site/pre-build-site.sh && NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && sh ./scripts/post-build-site/post-build-site.sh",
|
|
61
62
|
"clean": "rimraf site lib es dist node_modules/@uzum-tech/ui themes/tusimple/es themes/tusimple/lib",
|
|
62
|
-
"release:package": "pnpm run test && pnpm run build:package && npm publish --no-git-checks",
|
|
63
|
+
"release:package": "npm login && pnpm install && pnpm run test && pnpm run build:package && npm publish --no-git-checks",
|
|
63
64
|
"release:changelog": "tsx scripts/release-changelog.ts",
|
|
64
65
|
"lint": "pnpm run lint:code && pnpm run lint:type",
|
|
65
66
|
"lint:type": "pnpm run lint:src-type && pnpm run lint:demo-type",
|
|
@@ -79,7 +80,7 @@
|
|
|
79
80
|
"gen-version": "tsx scripts/gen-version.ts",
|
|
80
81
|
"gen-volar-dts": "tsx scripts/gen-component-declaration.ts",
|
|
81
82
|
"post-build": "tsx scripts/post-build/index.ts",
|
|
82
|
-
"build:site:ts": "
|
|
83
|
+
"build:site:ts": "sh ./scripts/pre-build-site/pre-build-site.sh && TUSIMPLE=true NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && sh ./scripts/post-build-site/post-build-site.sh",
|
|
83
84
|
"prepare": "husky",
|
|
84
85
|
"transpile-docs": "tsx scripts/md-to-vue.ts data-table",
|
|
85
86
|
"type-check": "vue-tsc --noEmit",
|
package/web-types.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "@uzum-tech/ui",
|
|
5
|
-
"version": "2.0.
|
|
5
|
+
"version": "2.0.8",
|
|
6
6
|
"js-types-syntax": "typescript",
|
|
7
7
|
"contributions": {
|
|
8
8
|
"html": {
|
|
@@ -15731,6 +15731,16 @@
|
|
|
15731
15731
|
"description": "Placeholder.",
|
|
15732
15732
|
"default": "'Please Select'"
|
|
15733
15733
|
},
|
|
15734
|
+
{
|
|
15735
|
+
"name": "remote",
|
|
15736
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/tree-select",
|
|
15737
|
+
"type": "boolean",
|
|
15738
|
+
"description": "Whether to disable client-side filtering when `filterable` is set, so the `search` event can be used to load options remotely.",
|
|
15739
|
+
"default": "false",
|
|
15740
|
+
"description-sections": {
|
|
15741
|
+
"since": "2.0.8"
|
|
15742
|
+
}
|
|
15743
|
+
},
|
|
15734
15744
|
{
|
|
15735
15745
|
"name": "placement",
|
|
15736
15746
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/tree-select",
|
|
@@ -15890,6 +15900,36 @@
|
|
|
15890
15900
|
"since": "2.27.0"
|
|
15891
15901
|
}
|
|
15892
15902
|
},
|
|
15903
|
+
{
|
|
15904
|
+
"name": "scroll",
|
|
15905
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/tree-select",
|
|
15906
|
+
"type": "(e: Event) => void",
|
|
15907
|
+
"description": "Callback fired on every scroll of the options menu. Useful for loading options asynchronously.",
|
|
15908
|
+
"default": "undefined",
|
|
15909
|
+
"description-sections": {
|
|
15910
|
+
"since": "2.0.7"
|
|
15911
|
+
}
|
|
15912
|
+
},
|
|
15913
|
+
{
|
|
15914
|
+
"name": "scroll-option-end",
|
|
15915
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/tree-select",
|
|
15916
|
+
"type": "(option: TreeSelectOption, e: Event) => void",
|
|
15917
|
+
"description": "Callback fired when the last child of a top-level (root) expanded branch becomes visible in the menu. Called per root branch with that root's option.",
|
|
15918
|
+
"default": "undefined",
|
|
15919
|
+
"description-sections": {
|
|
15920
|
+
"since": "2.0.7"
|
|
15921
|
+
}
|
|
15922
|
+
},
|
|
15923
|
+
{
|
|
15924
|
+
"name": "search",
|
|
15925
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/tree-select",
|
|
15926
|
+
"type": "(value: string) => void",
|
|
15927
|
+
"description": "Callback fired when the filter input changes. Used together with `remote` to load options on the server.",
|
|
15928
|
+
"default": "undefined",
|
|
15929
|
+
"description-sections": {
|
|
15930
|
+
"since": "2.0.8"
|
|
15931
|
+
}
|
|
15932
|
+
},
|
|
15893
15933
|
{
|
|
15894
15934
|
"name": "update:expanded-keys",
|
|
15895
15935
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/tree-select",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
-
export default _default;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
-
export default _default;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vue_1 = require("vue");
|
|
4
|
-
exports.default = (0, vue_1.defineComponent)({
|
|
5
|
-
name: 'Switcher',
|
|
6
|
-
render() {
|
|
7
|
-
return ((0, vue_1.h)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32" },
|
|
8
|
-
(0, vue_1.h)("path", { d: "M12 8l10 8l-10 8z" })));
|
|
9
|
-
}
|
|
10
|
-
});
|