@opentinyvue/vue-base-select 3.26.0 → 3.28.0

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.
@@ -1,13 +1,13 @@
1
- import { renderless, api } from '@opentinyvue/vue-renderless/select/vue';
1
+ import { renderless, api } from '@opentinyvue/vue-renderless/base-select/vue';
2
2
  import { defineComponent, directive, props, setup } from '@opentinyvue/vue-common';
3
3
  import Tag from '@opentinyvue/vue-tag';
4
4
  import Input from '@opentinyvue/vue-input';
5
5
  import Option from '@opentinyvue/vue-option';
6
6
  import Scrollbar from '@opentinyvue/vue-scrollbar';
7
7
  import SelectDropdown from '@opentinyvue/vue-select-dropdown';
8
- import { Clickoutside } from '@opentinyvue/vue-directive';
9
- import { iconClose, iconCopy, iconHalfselect, iconCheck, iconCheckedSur, iconLoading, iconChevronRight } from '@opentinyvue/vue-icon';
10
- import Tree from '@opentinyvue/vue-tree';
8
+ import Button from '@opentinyvue/vue-button';
9
+ import { Clickoutside, AutoTip } from '@opentinyvue/vue-directive';
10
+ import { iconClose, iconCopy, iconHalfselect, iconCheck, iconCheckedSur, iconLoading, iconChevronRight, iconDownWard, iconSearch, iconEllipsis, iconChevronUp, iconAddCircle, iconLoadingShadow } from '@opentinyvue/vue-icon';
11
11
  import Tooltip from '@opentinyvue/vue-tooltip';
12
12
  import FilterBox from '@opentinyvue/vue-filter-box';
13
13
  import RecycleScroller from '@opentinyvue/vue-recycle-scroller';
@@ -46,20 +46,11 @@ var _export_sfc = function _export_sfc2(sfc, props) {
46
46
  return target;
47
47
  };
48
48
 
49
- function _extends() {
50
- return _extends = Object.assign ? Object.assign.bind() : function(n) {
51
- for (var e = 1; e < arguments.length; e++) {
52
- var t = arguments[e];
53
- for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
54
- }
55
- return n;
56
- }, _extends.apply(null, arguments);
57
- }
58
49
  var classes = {
59
50
  "caret": "text-base rotate-0 transition-transform duration-300 fill-color-text-placeholder cursor-pointer ",
60
51
  "select-tags": "absolute leading-normal whitespace-normal sm:pl-3 pr-2 z-[1] top-1/2 -translate-y-2/4 flex items-center flex-wrap [&_[data-tag=tiny-tag]]:my-0.5 [&_[data-tag=tiny-tag]]:h-7 [&_[data-tag=tiny-tag]]:sm:h-5 [&_[data-tag=tiny-tag]_svg]:shrink-0",
61
52
  "tags-text": "inline-block w-full whitespace-nowrap text-ellipsis overflow-hidden align-bottom",
62
- "tag-info": "whitespace-nowrap text-ellipsis overflow-hidden inline-flex justify-start items-center border-transparent text-color-text-primary"
53
+ "tag-info": "whitespace-nowrap text-ellipsis overflow-hidden inline-flex justify-start items-center border-transparent text-color-text-primary h-5 cursor-pointer"
63
54
  };
64
55
  var getReference = function getReference2(el, binding, vnode) {
65
56
  var _ref = binding.expression ? binding.value : binding.arg;
@@ -74,9 +65,10 @@ var getReference = function getReference2(el, binding, vnode) {
74
65
  };
75
66
  var _sfc_main = defineComponent({
76
67
  inheritAttrs: false,
77
- emits: ["update:modelValue", "change", "focus", "blur", "clear", "remove-tag", "visible-change", "handleDropdownClick", "dropdown-click", "confirm"],
68
+ emits: ["update:modelValue", "change", "focus", "blur", "clear", "remove-tag", "visible-change", "handleDropdownClick", "dropdown-click", "confirm", "top-create-click"],
78
69
  directives: directive({
79
70
  Clickoutside,
71
+ AutoTip,
80
72
  popover: {
81
73
  bind: function bind(el, binding, vnode) {
82
74
  getReference(el, binding, vnode);
@@ -90,8 +82,8 @@ var _sfc_main = defineComponent({
90
82
  TinyTag: Tag,
91
83
  TinyInput: Input,
92
84
  TinyOption: Option,
93
- TinyTree: Tree,
94
85
  TinyScrollbar: Scrollbar,
86
+ TinyButton: Button,
95
87
  TinyFilterBox: FilterBox,
96
88
  TinyTooltip: Tooltip,
97
89
  IconClose: iconClose(),
@@ -102,9 +94,15 @@ var _sfc_main = defineComponent({
102
94
  IconCheckedSur: iconCheckedSur(),
103
95
  IconLoading: iconLoading(),
104
96
  IconChevronRight: iconChevronRight(),
97
+ IconDownWard: iconDownWard(),
98
+ IconSearch: iconSearch(),
99
+ IconEllipsis: iconEllipsis(),
100
+ IconChevronUp: iconChevronUp(),
101
+ IconAddCircle: iconAddCircle(),
102
+ IconLoadingShadow: iconLoadingShadow(),
105
103
  TinyRecycleScroller: RecycleScroller
106
104
  },
107
- props: [].concat(props, ["id", "multiple", "name", "dataset", "readonly", "tabindex", "dropStyle", "valueField", "textField", "copyable", "size", "options", "showCheck", "showAlloption", "showProportion", "hideDrop", "modelValue", "showOverflowTooltip", "remote", "remoteConfig", "placement", "loading", "disabled", "valueKey", "clearable", "noDataText", "filterable", "loadingText", "noMatchText", "popperClass", "allowCreate", "placeholder", "remoteMethod", "filterMethod", "collapseTags", "autocomplete", "multipleLimit", "reserveKeyword", "automaticDropdown", "defaultFirstOption", "popperAppendToBody", "showDropdown", "expandTags", "renderType", "gridOp", "treeOp", "delay", "cacheOp", "isDropInheritWidth", "tagSelectable", "selectConfig", "radioConfig", "allowCopy", "textSplit", "autoClose", "queryDebounce", "ignoreEnter", "dropdownIcon", "disabledTooltipContent", "hoverExpand", "optimization", "displayOnly", "initQuery", "extraQueryParams", "shape", "label", "tip", "updateDelay", "showTips", "popperOptions", "title", "closeByMask", "searchPlaceholder", "blank", "allText"]),
105
+ props: [].concat(props, ["id", "multiple", "name", "dataset", "readonly", "tabindex", "dropStyle", "valueField", "textField", "copyable", "size", "options", "showCheck", "showAlloption", "showProportion", "hideDrop", "modelValue", "showOverflowTooltip", "remote", "remoteConfig", "placement", "loading", "disabled", "valueKey", "clearable", "noDataText", "filterable", "loadingText", "noMatchText", "popperClass", "allowCreate", "placeholder", "remoteMethod", "filterMethod", "collapseTags", "autocomplete", "multipleLimit", "reserveKeyword", "automaticDropdown", "defaultFirstOption", "popperAppendToBody", "showDropdown", "expandTags", "delay", "cacheOp", "isDropInheritWidth", "tagSelectable", "selectConfig", "radioConfig", "allowCopy", "textSplit", "autoClose", "queryDebounce", "ignoreEnter", "dropdownIcon", "disabledTooltipContent", "optimization", "displayOnly", "initQuery", "extraQueryParams", "shape", "label", "tip", "updateDelay", "showTips", "popperOptions", "title", "closeByMask", "searchPlaceholder", "blank", "allText", "maxTagWidth", "tagType", "clearNoMatchValue", "showAllTextTag", "hoverExpand", "clickExpand", "maxVisibleRows", "initLabel", "inputBoxType", "showEmptyValue"]),
108
106
  setup: function setup$1(props2, context) {
109
107
  return setup({
110
108
  props: props2,
@@ -162,11 +160,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
162
160
  var _component_tiny_filter_box = resolveComponent("tiny-filter-box");
163
161
  var _component_tiny_tooltip = resolveComponent("tiny-tooltip");
164
162
  var _component_tiny_tag = resolveComponent("tiny-tag");
163
+ var _component_icon_ellipsis = resolveComponent("icon-ellipsis");
164
+ var _component_icon_chevron_up = resolveComponent("icon-chevron-up");
165
165
  var _component_icon_copy = resolveComponent("icon-copy");
166
166
  var _component_icon_close = resolveComponent("icon-close");
167
167
  var _component_icon_chevron_right = resolveComponent("icon-chevron-right");
168
168
  var _component_tiny_input = resolveComponent("tiny-input");
169
- var _component_tiny_tree = resolveComponent("tiny-tree");
170
169
  var _component_tiny_option = resolveComponent("tiny-option");
171
170
  var _component_tiny_recycle_scroller = resolveComponent("tiny-recycle-scroller");
172
171
  var _component_tiny_scrollbar = resolveComponent("tiny-scrollbar");
@@ -178,16 +177,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
178
177
  "div",
179
178
  mergeProps({
180
179
  ref: "select",
181
- class: ["inline-block relative w-full outline-0 group [&_[data-tag=tiny-tag]]:max-w-[144px]", [_ctx.hoverExpand ? "align-top" : "", _ctx.$parent.$attrs.class]],
182
- onMouseleave: _cache[34] || (_cache[34] = withModifiers(function() {
180
+ "data-tag": "tiny-base-select",
181
+ class: ["inline-block relative w-full outline-0 group [&_[data-tag=tiny-tag]]:max-w-[144px]", [_ctx.hoverExpand ? "align-top is-hover-expand" : "", _ctx.clickExpand ? "is-click-expand" : "", (_ctx.state.inputHovering || _ctx.state.visible) && !_ctx.clickExpand ? "is-hover" : "", _ctx.state.showCollapseTag ? "collapse-tag-clicked" : "", _ctx.$parent.$attrs.class]],
182
+ onMouseleave: _cache[37] || (_cache[37] = withModifiers(function() {
183
183
  _ctx.state.selectHover = false;
184
184
  _ctx.state.inputHovering = false;
185
185
  }, ["self"])),
186
- onMouseenter: _cache[35] || (_cache[35] = withModifiers(function() {
186
+ onMouseenter: _cache[38] || (_cache[38] = withModifiers(function() {
187
187
  _ctx.state.selectHover = true;
188
188
  _ctx.state.inputHovering = true;
189
189
  }, ["self"])),
190
- onClick: _cache[36] || (_cache[36] = function() {
190
+ onClick: _cache[39] || (_cache[39] = function() {
191
191
  return _ctx.toggleMenu && _ctx.toggleMenu.apply(_ctx, arguments);
192
192
  })
193
193
  }, _ctx.a(_ctx.$attrs, ["class", "style"], true)),
@@ -228,11 +228,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
228
228
  }, {
229
229
  "overflow-y-hidden": (_ctx.state.inputHovering || _ctx.state.visible) && !_ctx.state.selected.length
230
230
  }, {
231
- "h-6 overflow-hidden": _ctx.hoverExpand
231
+ "h-6 overflow-hidden": _ctx.hoverExpand || _ctx.clickExpand
232
232
  }, {
233
233
  "pr-6": _ctx.state.selectDisabled
234
234
  }, {
235
- "overflow-y-auto max-h-28 h-auto": _ctx.hoverExpand && (_ctx.state.inputHovering || _ctx.state.visible)
235
+ "overflow-y-auto max-h-28 h-auto": _ctx.hoverExpand && (_ctx.state.inputHovering || _ctx.state.visible) || _ctx.clickExpand && _ctx.state.showCollapseTag
236
+ }, {
237
+ "overflow-x-hidden": !(_ctx.hoverExpand && (_ctx.state.inputHovering || _ctx.state.visible) || _ctx.clickExpand && _ctx.state.showCollapseTag)
236
238
  })),
237
239
  style: normalizeStyle(_ctx.state.tagsStyle)
238
240
  },
@@ -253,12 +255,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
253
255
  size: _ctx.state.collapseTagSize,
254
256
  hit: _ctx.state.selectedVal[0].state ? _ctx.state.selectedVal[0].state.hitState : _ctx.state.selectedVal[0].hitState,
255
257
  key: _ctx.state.key,
256
- type: "info",
258
+ type: _ctx.state.getTagType,
257
259
  class: normalizeClass(_ctx.gcls("tag-info")),
258
260
  onClose: _cache[1] || (_cache[1] = function($event) {
259
261
  return _ctx.deleteTag($event, _ctx.state.selectedVal[0]);
260
262
  }),
261
- "disable-transitions": ""
263
+ "disable-transitions": "",
264
+ maxWidth: _ctx.maxTagWidth
262
265
  }, {
263
266
  default: withCtx(function() {
264
267
  return [createVNode(
@@ -321,13 +324,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
321
324
  }),
322
325
  _: 3
323
326
  /* FORWARDED */
324
- }, 8, ["closable", "size", "hit", "class"])), _ctx.state.selectedVal.length > 1 ? (openBlock(), createBlock(_component_tiny_tag, {
327
+ }, 8, ["closable", "size", "hit", "type", "class", "maxWidth"])), _ctx.state.selectedVal.length > 1 ? (openBlock(), createBlock(_component_tiny_tag, {
325
328
  key: 0,
326
329
  closable: false,
327
330
  size: _ctx.state.collapseTagSize,
328
331
  class: normalizeClass(["overflow-visible", _ctx.gcls("tag-info")]),
329
- type: "info",
330
- "disable-transitions": ""
332
+ type: _ctx.state.getTagType,
333
+ "disable-transitions": "",
334
+ maxWidth: _ctx.maxTagWidth
331
335
  }, {
332
336
  default: withCtx(function() {
333
337
  return [createElementVNode(
@@ -342,128 +346,184 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
342
346
  }),
343
347
  _: 1
344
348
  /* STABLE */
345
- }, 8, ["size", "class"])) : createCommentVNode("v-if", true)],
349
+ }, 8, ["size", "class", "type", "maxWidth"])) : createCommentVNode("v-if", true)],
346
350
  2
347
351
  /* CLASS */
348
352
  )) : createCommentVNode("v-if", true), !_ctx.collapseTags ? (openBlock(), createElementBlock(
349
353
  "span",
350
354
  _hoisted_1,
351
- [_ctx.hoverExpand ? (openBlock(), createBlock(_component_tiny_tag, {
352
- class: normalizeClass(_ctx.m(_ctx.gcls("tag-info"), {
353
- "visible static": _ctx.hoverExpand
354
- }, {
355
- "invisible absolute": _ctx.hoverExpand && (_ctx.state.inputHovering || _ctx.state.visible || _ctx.state.isHidden)
356
- })),
357
- type: "info",
358
- "data-tag": "tags-collapse",
359
- key: "tags-collapse",
360
- closable: false,
361
- size: _ctx.state.collapseTagSize
355
+ [_ctx.showAllTextTag && _ctx.state.selectCls === "checked-sur" ? (openBlock(), createBlock(_component_tiny_tag, {
356
+ type: _ctx.state.getTagType,
357
+ key: "tags-all-text-tag",
358
+ "data-tag": "tags-all-text-tag",
359
+ disabled: _ctx.state.isDisabled,
360
+ closable: true,
361
+ size: _ctx.state.collapseTagSize,
362
+ onClose: _cache[2] || (_cache[2] = function($event) {
363
+ return _ctx.toggleCheckAll(false);
364
+ }),
365
+ maxWidth: _ctx.maxTagWidth
362
366
  }, {
363
367
  default: withCtx(function() {
364
368
  return [createTextVNode(
365
- "+ " + toDisplayString(_ctx.state.collapseTagsLength),
369
+ toDisplayString(_ctx.allText || _ctx.t("ui.base.all")),
366
370
  1
367
371
  /* TEXT */
368
372
  )];
369
373
  }),
370
374
  _: 1
371
375
  /* STABLE */
372
- }, 8, ["class", "size"])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(
376
+ }, 8, ["type", "disabled", "size", "maxWidth"])) : (openBlock(), createElementBlock(
373
377
  Fragment,
374
- null,
375
- renderList(_ctx.state.selected, function(item, index) {
376
- return openBlock(), createBlock(_component_tiny_tag, {
377
- key: _ctx.getValueKey(item),
378
- closable: !item.selectDisabled && !item.required && _ctx.state.device !== "mb",
379
- size: _ctx.state.collapseTagSize,
380
- hit: item.state ? item.state.hitState : item.hitState,
381
- class: normalizeClass(_ctx.gcls("tag-info")),
382
- type: "info",
383
- onClose: function onClose($event) {
384
- return _ctx.deleteTag($event, item);
385
- },
386
- "disable-transitions": ""
378
+ {
379
+ key: 1
380
+ },
381
+ [(_ctx.hoverExpand || _ctx.clickExpand && !_ctx.state.showCollapseTag) && _ctx.state.selected.length > 1 ? (openBlock(), createBlock(_component_tiny_tag, {
382
+ class: normalizeClass(_ctx.m(_ctx.gcls("tag-info"), {
383
+ "visible static": _ctx.hoverExpand || _ctx.clickExpand && !_ctx.state.showCollapseTag
387
384
  }, {
388
- default: withCtx(function() {
389
- return [createVNode(_component_tiny_tooltip, {
390
- effect: "light",
391
- placement: "top",
392
- onMouseenter: function onMouseenter($event) {
393
- return _ctx.handleEnterTag($event, _ctx.getValueKey(item));
394
- }
395
- }, createSlots({
396
- default: withCtx(function() {
397
- return [!_ctx.state.visible && _ctx.state.overflow === index ? (openBlock(), createElementBlock(
398
- "span",
399
- {
400
- key: 0,
401
- class: normalizeClass(_ctx.gcls("tags-text"))
402
- },
403
- toDisplayString(item.state ? item.state.currentLabel + "... " : item.currentLabel + "... "),
404
- 3
405
- /* TEXT, CLASS */
406
- )) : (openBlock(), createElementBlock(
407
- "span",
408
- {
409
- key: 1,
410
- class: normalizeClass(_ctx.gcls("tags-text"))
411
- },
412
- [renderSlot(_ctx.$slots, "label", {
413
- item: _ctx.getLabelSlotValue(item)
414
- }, function() {
415
- return [createTextVNode(
416
- toDisplayString(item.state ? item.state.currentLabel : item.currentLabel),
417
- 1
418
- /* TEXT */
419
- )];
420
- })],
421
- 2
422
- /* CLASS */
423
- ))];
424
- }),
425
- _: 2
426
- /* DYNAMIC */
427
- }, [_ctx.state.tooltipContent[_ctx.getValueKey(item)] ? {
428
- name: "content",
429
- fn: withCtx(function() {
430
- return [!_ctx.state.visible && _ctx.state.overflow === index ? (openBlock(), createElementBlock(
431
- "span",
432
- {
433
- key: 0,
434
- class: normalizeClass(_ctx.gcls("tags-text"))
435
- },
436
- toDisplayString(item.state ? item.state.currentLabel + "... " : item.currentLabel + "... "),
437
- 3
438
- /* TEXT, CLASS */
439
- )) : (openBlock(), createElementBlock(
440
- "span",
441
- {
442
- key: 1,
443
- class: normalizeClass(_ctx.gcls("tags-text"))
444
- },
445
- [renderSlot(_ctx.$slots, "label", {
446
- item: _ctx.getLabelSlotValue(item)
447
- }, function() {
448
- return [createTextVNode(
449
- toDisplayString(item.state ? item.state.currentLabel : item.currentLabel),
450
- 1
451
- /* TEXT */
452
- )];
453
- })],
454
- 2
455
- /* CLASS */
456
- ))];
457
- }),
458
- key: "0"
459
- } : void 0]), 1032, ["onMouseenter"])];
460
- }),
461
- _: 2
462
- /* DYNAMIC */
463
- }, 1032, ["closable", "size", "hit", "class", "onClose"]);
464
- }),
465
- 128
466
- /* KEYED_FRAGMENT */
385
+ "invisible absolute": _ctx.hoverExpand && (_ctx.state.inputHovering || _ctx.state.visible || _ctx.state.isHidden)
386
+ }, {
387
+ "is-hidden": _ctx.clickExpand && _ctx.state.isHidden || _ctx.state.isDisabled
388
+ })),
389
+ type: _ctx.state.getTagType,
390
+ "data-tag": "tags-collapse",
391
+ key: "tags-collapse",
392
+ closable: false,
393
+ size: _ctx.state.collapseTagSize,
394
+ maxWidth: _ctx.maxTagWidth,
395
+ onClick: _cache[3] || (_cache[3] = function($event) {
396
+ return _ctx.onClickCollapseTag($event);
397
+ })
398
+ }, {
399
+ default: withCtx(function() {
400
+ return [_ctx.hoverExpand ? (openBlock(), createElementBlock(
401
+ Fragment,
402
+ {
403
+ key: 0
404
+ },
405
+ [createTextVNode(
406
+ "+ " + toDisplayString(_ctx.state.collapseTagsLength),
407
+ 1
408
+ /* TEXT */
409
+ )],
410
+ 64
411
+ /* STABLE_FRAGMENT */
412
+ )) : (openBlock(), createBlock(_component_icon_ellipsis, {
413
+ key: 1
414
+ }))];
415
+ }),
416
+ _: 1
417
+ /* STABLE */
418
+ }, 8, ["class", "type", "size", "maxWidth"])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(
419
+ Fragment,
420
+ null,
421
+ renderList(_ctx.state.selected, function(item, index) {
422
+ return openBlock(), createBlock(_component_tiny_tag, {
423
+ key: _ctx.getValueKey(item),
424
+ closable: !item.selectDisabled && !item.required && _ctx.state.device !== "mb",
425
+ size: _ctx.state.collapseTagSize,
426
+ hit: item.state ? item.state.hitState : item.hitState,
427
+ class: normalizeClass(_ctx.gcls("tag-info")),
428
+ type: _ctx.state.getTagType,
429
+ onClose: function onClose($event) {
430
+ return _ctx.deleteTag($event, item);
431
+ },
432
+ "disable-transitions": "",
433
+ maxWidth: _ctx.maxTagWidth
434
+ }, {
435
+ default: withCtx(function() {
436
+ return [createVNode(_component_tiny_tooltip, {
437
+ effect: "light",
438
+ placement: "top",
439
+ onMouseenter: function onMouseenter($event) {
440
+ return _ctx.handleEnterTag($event, _ctx.getValueKey(item));
441
+ }
442
+ }, createSlots({
443
+ default: withCtx(function() {
444
+ return [!_ctx.state.visible && _ctx.state.overflow === index ? (openBlock(), createElementBlock(
445
+ "span",
446
+ {
447
+ key: 0,
448
+ class: normalizeClass(_ctx.gcls("tags-text"))
449
+ },
450
+ toDisplayString(item.state ? item.state.currentLabel + "... " : item.currentLabel + "... "),
451
+ 3
452
+ /* TEXT, CLASS */
453
+ )) : (openBlock(), createElementBlock(
454
+ "span",
455
+ {
456
+ key: 1,
457
+ class: normalizeClass(_ctx.gcls("tags-text"))
458
+ },
459
+ [renderSlot(_ctx.$slots, "label", {
460
+ item: _ctx.getLabelSlotValue(item)
461
+ }, function() {
462
+ return [createTextVNode(
463
+ toDisplayString(item.state ? item.state.currentLabel : item.currentLabel),
464
+ 1
465
+ /* TEXT */
466
+ )];
467
+ })],
468
+ 2
469
+ /* CLASS */
470
+ ))];
471
+ }),
472
+ _: 2
473
+ /* DYNAMIC */
474
+ }, [_ctx.state.tooltipContent[_ctx.getValueKey(item)] ? {
475
+ name: "content",
476
+ fn: withCtx(function() {
477
+ return [!_ctx.state.visible && _ctx.state.overflow === index ? (openBlock(), createElementBlock(
478
+ "span",
479
+ {
480
+ key: 0,
481
+ class: normalizeClass(_ctx.gcls("tags-text"))
482
+ },
483
+ toDisplayString(item.state ? item.state.currentLabel + "... " : item.currentLabel + "... "),
484
+ 3
485
+ /* TEXT, CLASS */
486
+ )) : (openBlock(), createElementBlock(
487
+ "span",
488
+ {
489
+ key: 1,
490
+ class: normalizeClass(_ctx.gcls("tags-text"))
491
+ },
492
+ [renderSlot(_ctx.$slots, "label", {
493
+ item: _ctx.getLabelSlotValue(item)
494
+ }, function() {
495
+ return [createTextVNode(
496
+ toDisplayString(item.state ? item.state.currentLabel : item.currentLabel),
497
+ 1
498
+ /* TEXT */
499
+ )];
500
+ })],
501
+ 2
502
+ /* CLASS */
503
+ ))];
504
+ }),
505
+ key: "0"
506
+ } : void 0]), 1032, ["onMouseenter"])];
507
+ }),
508
+ _: 2
509
+ /* DYNAMIC */
510
+ }, 1032, ["closable", "size", "hit", "class", "type", "onClose", "maxWidth"]);
511
+ }),
512
+ 128
513
+ /* KEYED_FRAGMENT */
514
+ )), _ctx.clickExpand && _ctx.state.showCollapseTag ? (openBlock(), createElementBlock("span", {
515
+ key: 1,
516
+ class: "text-xs text-color-brand cursor-pointer flex items-center",
517
+ onClick: _cache[4] || (_cache[4] = function($event) {
518
+ return _ctx.onClickCollapseTag($event);
519
+ })
520
+ }, [createTextVNode(
521
+ toDisplayString(_ctx.t("ui.select.collapse")) + " ",
522
+ 1
523
+ /* TEXT */
524
+ ), createVNode(_component_icon_chevron_up)])) : createCommentVNode("v-if", true)],
525
+ 64
526
+ /* STABLE_FRAGMENT */
467
527
  ))],
468
528
  512
469
529
  /* NEED_PATCH */
@@ -539,47 +599,47 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
539
599
  )), _ctx.filterable && !_ctx.state.selectDisabled ? withDirectives((openBlock(), createElementBlock("input", {
540
600
  key: 2,
541
601
  ref: "input",
542
- "onUpdate:modelValue": _cache[2] || (_cache[2] = function($event) {
602
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function($event) {
543
603
  return _ctx.state.query = $event;
544
604
  }),
545
605
  type: "text",
546
606
  class: normalizeClass(["hidden sm:inline-block border-none outline-0 p-0 ml-px text-color-text-primary text-xs h-7 appearance-none bg-transparent", [_ctx.state.selectSize === "mini" ? "h-6" : "", _ctx.state.selectSize === "small" ? "h-9" : "", _ctx.state.selectSize === "medium" ? "h-8" : ""]]),
547
607
  disabled: _ctx.state.selectDisabled,
548
608
  autocomplete: _ctx.autocomplete,
549
- onFocus: _cache[3] || (_cache[3] = function() {
609
+ onFocus: _cache[6] || (_cache[6] = function() {
550
610
  return _ctx.handleFocus && _ctx.handleFocus.apply(_ctx, arguments);
551
611
  }),
552
- onBlur: _cache[4] || (_cache[4] = function() {
612
+ onBlur: _cache[7] || (_cache[7] = function() {
553
613
  return _ctx.handleBlur && _ctx.handleBlur.apply(_ctx, arguments);
554
614
  }),
555
- onKeyup: _cache[5] || (_cache[5] = function() {
615
+ onKeyup: _cache[8] || (_cache[8] = function() {
556
616
  return _ctx.managePlaceholder && _ctx.managePlaceholder.apply(_ctx, arguments);
557
617
  }),
558
- onKeydown: [_cache[6] || (_cache[6] = function() {
618
+ onKeydown: [_cache[9] || (_cache[9] = function() {
559
619
  return _ctx.resetInputState && _ctx.resetInputState.apply(_ctx, arguments);
560
- }), _cache[7] || (_cache[7] = withKeys(withModifiers(function($event) {
620
+ }), _cache[10] || (_cache[10] = withKeys(withModifiers(function($event) {
561
621
  return _ctx.navigateOptions("next");
562
- }, ["prevent"]), ["down"])), _cache[8] || (_cache[8] = withKeys(withModifiers(function($event) {
622
+ }, ["prevent"]), ["down"])), _cache[11] || (_cache[11] = withKeys(withModifiers(function($event) {
563
623
  return _ctx.navigateOptions("prev");
564
- }, ["prevent"]), ["up"])), _cache[9] || (_cache[9] = withKeys(withModifiers(function() {
624
+ }, ["prevent"]), ["up"])), _cache[12] || (_cache[12] = withKeys(withModifiers(function() {
565
625
  return _ctx.selectOption && _ctx.selectOption.apply(_ctx, arguments);
566
- }, ["prevent"]), ["enter"])), _cache[10] || (_cache[10] = withKeys(withModifiers(function($event) {
626
+ }, ["prevent"]), ["enter"])), _cache[13] || (_cache[13] = withKeys(withModifiers(function($event) {
567
627
  return _ctx.state.visible = false;
568
- }, ["stop", "prevent"]), ["esc"])), _cache[11] || (_cache[11] = withKeys(function() {
628
+ }, ["stop", "prevent"]), ["esc"])), _cache[14] || (_cache[14] = withKeys(function() {
569
629
  return _ctx.deletePrevTag && _ctx.deletePrevTag.apply(_ctx, arguments);
570
- }, ["delete"])), _cache[12] || (_cache[12] = withKeys(function($event) {
630
+ }, ["delete"])), _cache[15] || (_cache[15] = withKeys(function($event) {
571
631
  return _ctx.state.visible = false;
572
632
  }, ["tab"]))],
573
- onCompositionstart: _cache[13] || (_cache[13] = function() {
633
+ onCompositionstart: _cache[16] || (_cache[16] = function() {
574
634
  return _ctx.handleComposition && _ctx.handleComposition.apply(_ctx, arguments);
575
635
  }),
576
- onCompositionupdate: _cache[14] || (_cache[14] = function() {
636
+ onCompositionupdate: _cache[17] || (_cache[17] = function() {
577
637
  return _ctx.handleComposition && _ctx.handleComposition.apply(_ctx, arguments);
578
638
  }),
579
- onCompositionend: _cache[15] || (_cache[15] = function() {
639
+ onCompositionend: _cache[18] || (_cache[18] = function() {
580
640
  return _ctx.handleComposition && _ctx.handleComposition.apply(_ctx, arguments);
581
641
  }),
582
- onInput: _cache[16] || (_cache[16] = function() {
642
+ onInput: _cache[19] || (_cache[19] = function() {
583
643
  return _ctx.debouncedQueryChange && _ctx.debouncedQueryChange.apply(_ctx, arguments);
584
644
  }),
585
645
  style: normalizeStyle({
@@ -594,8 +654,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
594
654
  )) : createCommentVNode("v-if", true), !_ctx.shape ? (openBlock(), createBlock(_component_tiny_input, {
595
655
  key: 2,
596
656
  ref: "reference",
657
+ tiny_mode: "mobile-first",
597
658
  modelValue: _ctx.state.selectedLabel,
598
- "onUpdate:modelValue": _cache[19] || (_cache[19] = function($event) {
659
+ "onUpdate:modelValue": _cache[22] || (_cache[22] = function($event) {
599
660
  return _ctx.state.selectedLabel = $event;
600
661
  }),
601
662
  type: "text",
@@ -610,17 +671,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
610
671
  "display-only-content": _ctx.state.displayOnlyContent,
611
672
  unselectable: _ctx.state.readonly ? "on" : "off",
612
673
  "validate-event": false,
674
+ "show-empty-value": _ctx.showEmptyValue,
675
+ "input-box-type": _ctx.inputBoxType,
613
676
  tabindex: _ctx.multiple && _ctx.filterable ? "-1" : _ctx.tabindex,
614
677
  onFocus: _ctx.handleFocus,
615
678
  onBlur: _ctx.handleBlur,
616
679
  onKeyup: _ctx.debouncedOnInputChange,
617
- onKeydown: [_cache[20] || (_cache[20] = withKeys(withModifiers(function($event) {
680
+ onKeydown: [_cache[23] || (_cache[23] = withKeys(withModifiers(function($event) {
618
681
  return _ctx.navigateOptions("next");
619
- }, ["stop", "prevent"]), ["down"])), _cache[21] || (_cache[21] = withKeys(withModifiers(function($event) {
682
+ }, ["stop", "prevent"]), ["down"])), _cache[24] || (_cache[24] = withKeys(withModifiers(function($event) {
620
683
  return _ctx.navigateOptions("prev");
621
- }, ["stop", "prevent"]), ["up"])), withKeys(withModifiers(_ctx.selectOption, ["prevent"]), ["enter"]), _cache[22] || (_cache[22] = withKeys(withModifiers(function($event) {
684
+ }, ["stop", "prevent"]), ["up"])), withKeys(withModifiers(_ctx.selectOption, ["prevent"]), ["enter"]), _cache[25] || (_cache[25] = withKeys(withModifiers(function($event) {
622
685
  return _ctx.state.visible = false;
623
- }, ["stop", "prevent"]), ["esc"])), _cache[23] || (_cache[23] = withKeys(function($event) {
686
+ }, ["stop", "prevent"]), ["esc"])), _cache[26] || (_cache[26] = withKeys(function($event) {
624
687
  return _ctx.state.visible = false;
625
688
  }, ["tab"]))],
626
689
  onPaste: _ctx.debouncedOnInputChange,
@@ -632,7 +695,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
632
695
  return [renderSlot(_ctx.$slots, "suffix"), _ctx.state.showCopy ? (openBlock(), createElementBlock("span", {
633
696
  key: 0,
634
697
  class: "h-4 cursor-pointer relative z-[1]",
635
- onClick: _cache[17] || (_cache[17] = withModifiers(function() {
698
+ onClick: _cache[20] || (_cache[20] = withModifiers(function() {
636
699
  return _ctx.handleCopyClick && _ctx.handleCopyClick.apply(_ctx, arguments);
637
700
  }, ["stop"]))
638
701
  }, [createVNode(_component_icon_copy, {
@@ -651,10 +714,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
651
714
  "mr-1": _ctx.multiple && _ctx.state.showClose
652
715
  }]),
653
716
  onClick: _ctx.handleClearClick,
654
- onMouseenter: _cache[18] || (_cache[18] = function($event) {
717
+ onMouseenter: _cache[21] || (_cache[21] = function($event) {
655
718
  return _ctx.state.inputHovering = true;
656
719
  })
657
- }, null, 8, ["class", "onClick"])) : createCommentVNode("v-if", true), withDirectives((openBlock(), createBlock(resolveDynamicComponent(_ctx.dropdownIcon), {
720
+ }, null, 8, ["class", "onClick"])) : createCommentVNode("v-if", true), withDirectives((openBlock(), createBlock(resolveDynamicComponent(_ctx.state.getIcon.icon), {
658
721
  class: normalizeClass(_ctx.m(_ctx.gcls("caret"), "hidden sm:inline-block", _ctx.state.iconClass, {
659
722
  "hidden": _ctx.state.selectDisabled
660
723
  }, {
@@ -674,7 +737,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
674
737
  return [renderSlot(_ctx.$slots, "prefix")];
675
738
  }),
676
739
  key: "0"
677
- } : void 0]), 1032, ["modelValue", "placeholder", "name", "id", "autocomplete", "size", "disabled", "readonly", "display-only", "display-only-content", "unselectable", "tabindex", "onFocus", "onBlur", "onKeyup", "onKeydown", "onPaste", "onMouseenter", "onMouseleave", "onCompositionend"])) : createCommentVNode("v-if", true), createVNode(Transition, {
740
+ } : void 0]), 1032, ["modelValue", "placeholder", "name", "id", "autocomplete", "size", "disabled", "readonly", "display-only", "display-only-content", "unselectable", "show-empty-value", "input-box-type", "tabindex", "onFocus", "onBlur", "onKeyup", "onKeydown", "onPaste", "onMouseenter", "onMouseleave", "onCompositionend"])) : createCommentVNode("v-if", true), createVNode(Transition, {
678
741
  onBeforeEnter: _ctx.handleMenuEnter,
679
742
  onAfterLeave: _ctx.doDestroy,
680
743
  persisted: ""
@@ -703,7 +766,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
703
766
  ref: "input",
704
767
  type: "text",
705
768
  modelValue: _ctx.state.query,
706
- "onUpdate:modelValue": _cache[24] || (_cache[24] = function($event) {
769
+ "onUpdate:modelValue": _cache[27] || (_cache[27] = function($event) {
707
770
  return _ctx.state.query = $event;
708
771
  }),
709
772
  placeholder: _ctx.placeholder,
@@ -713,33 +776,15 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
713
776
  }, null, 8, ["modelValue", "placeholder", "onInput", "onFocus"])],
714
777
  2
715
778
  /* CLASS */
716
- )) : createCommentVNode("v-if", true), _ctx.renderType === "tree" ? (openBlock(), createBlock(_component_tiny_tree, mergeProps({
717
- key: 1,
718
- class: "[&_[data-tag=tiny-checkbox]_>span_>span]:p-1.5 sm:[&_[data-tag=tiny-checkbox]_>span_>span]:p-0",
719
- "filter-node-method": _ctx.filterMethod,
720
- props: _extends({
721
- label: _ctx.textField,
722
- isLeaf: "isLeaf"
723
- }, _ctx.treeOp.props),
724
- "expand-on-click-node": false,
725
- "icon-trigger-click-node": false,
726
- "node-key": _ctx.valueField,
727
- "default-expand-all": _ctx.state.isExpandAll,
728
- "check-strictly": _ctx.treeOp.checkStrictly,
729
- "default-checked-keys": _ctx.multiple ? _ctx.state.defaultCheckedKeys : [],
730
- ref: "selectTree",
731
- "current-node-key": !_ctx.multiple ? _ctx.state.currentKey : "",
732
- "show-checkbox": _ctx.multiple,
733
- onLoadData: _ctx.loadTreeData,
734
- onNodeCollapse: _ctx.nodeCollapse,
735
- onNodeExpand: _ctx.nodeExpand,
736
- onCheck: _ctx.nodeCheckClick,
737
- onNodeClick: _ctx.treeNodeClick,
738
- "show-checked-mark": _ctx.state.device === "mb"
739
- }, _ctx.treeOp), null, 16, ["filter-node-method", "props", "node-key", "default-expand-all", "check-strictly", "default-checked-keys", "current-node-key", "show-checkbox", "onLoadData", "onNodeCollapse", "onNodeExpand", "onCheck", "onNodeClick", "show-checked-mark"])) : createCommentVNode("v-if", true), _ctx.optimization && _ctx.renderType !== "tree" ? (openBlock(), createElementBlock(
779
+ )) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "header"), renderSlot(_ctx.$slots, "panel", {
780
+ methods: {
781
+ updateSelectedData: _ctx.updateSelectedData,
782
+ hidePanel: _ctx.hidePanel
783
+ }
784
+ }), _ctx.optimization ? (openBlock(), createElementBlock(
740
785
  "div",
741
786
  {
742
- key: 2,
787
+ key: 1,
743
788
  style: normalizeStyle({
744
789
  height: _ctx.state.optimizeStore.recycleScrollerHeight + "px"
745
790
  })
@@ -777,7 +822,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
777
822
  required: item.required,
778
823
  "highlight-class": item._highlightClass,
779
824
  events: item.events,
780
- onMousedown: _cache[25] || (_cache[25] = withModifiers(function() {
825
+ onMousedown: _cache[28] || (_cache[28] = withModifiers(function() {
781
826
  }, ["stop"]))
782
827
  }, null, 8, ["label", "value", "disabled", "required", "highlight-class", "events"]))];
783
828
  })];
@@ -787,13 +832,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
787
832
  }, 8, ["key-field", "list-class", "items", "item-size"])), [[vShow, !_ctx.state.emptyFlag && !_ctx.loading]])],
788
833
  4
789
834
  /* STYLE */
790
- )) : createCommentVNode("v-if", true), !_ctx.optimization && _ctx.renderType !== "tree" ? withDirectives((openBlock(), createBlock(_component_tiny_scrollbar, {
791
- key: 3,
835
+ )) : createCommentVNode("v-if", true), !_ctx.optimization ? withDirectives((openBlock(), createBlock(_component_tiny_scrollbar, {
836
+ key: 2,
792
837
  ref: "scrollbar",
793
838
  tag: "ul",
794
839
  "wrap-class": ["tiny-select-dropdown__wrap sm:max-h-56 pb-1 sm:pb-0", _ctx.state.device === "mb" ? "scrollbar-size-0" : ""],
795
840
  "view-class": ["tiny-select-dropdown__list"],
796
- onMousedown: _cache[33] || (_cache[33] = withModifiers(function() {
841
+ onMousedown: _cache[36] || (_cache[36] = withModifiers(function() {
797
842
  }, ["stop"]))
798
843
  }, {
799
844
  default: withCtx(function() {
@@ -801,23 +846,23 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
801
846
  "div",
802
847
  {
803
848
  key: 0,
804
- class: normalizeClass(["whitespace-nowrap box-border py-0 h-10 leading-10 sm:h-8 sm:leading-8 text-sm sm:text-xs pl-0 pr-3 sm:px-3 my-1 sm:m-1 rounded cursor-pointer", [{
849
+ class: normalizeClass(["whitespace-nowrap box-border py-0 h-10 leading-10 sm:h-8 sm:leading-8 text-sm sm:text-xs pl-0 pr-3 sm:px-2 my-1 sm:m-1 rounded cursor-pointer", [{
805
850
  hover: _ctx.state.hoverIndex === -9 && _ctx.state.selectCls !== "checked-sur"
806
851
  }, {
807
852
  "text-color-brand sm:bg-color-fill-6 bg-color-bg-1": _ctx.state.selectCls === "checked-sur"
808
853
  }]]),
809
854
  "data-tag": "tiny-option",
810
- onClick: _cache[26] || (_cache[26] = withModifiers(function($event) {
855
+ onClick: _cache[29] || (_cache[29] = withModifiers(function($event) {
811
856
  return _ctx.toggleCheckAll(false);
812
857
  }, ["stop"])),
813
- onMousedown: _cache[27] || (_cache[27] = withModifiers(function() {
858
+ onMousedown: _cache[30] || (_cache[30] = withModifiers(function() {
814
859
  }, ["stop"])),
815
- onMouseenter: _cache[28] || (_cache[28] = function($event) {
860
+ onMouseenter: _cache[31] || (_cache[31] = function($event) {
816
861
  return _ctx.state.hoverIndex = -9;
817
862
  })
818
863
  },
819
864
  [(openBlock(), createBlock(resolveDynamicComponent("icon-" + _ctx.state.selectCls), {
820
- class: normalizeClass(_ctx.m(["-mt-0.5 mr-2 fill-color-icon-secondary", _ctx.state.selectCls !== "check" && "fill-color-brand"]))
865
+ class: normalizeClass(_ctx.m(["-mt-0.5 mr-2 fill-color-icon-secondary w-3.5 h-3.5", _ctx.state.selectCls !== "check" && "fill-color-brand text-color-brand"]))
821
866
  }, null, 8, ["class"])), createElementVNode(
822
867
  "span",
823
868
  {
@@ -833,18 +878,18 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
833
878
  "div",
834
879
  {
835
880
  key: 1,
836
- class: normalizeClass(["whitespace-nowrap box-border py-0 h-10 leading-10 sm:h-8 sm:leading-8 text-sm sm:text-xs pl-0 pr-3 sm:px-3 my-1 sm:m-1 rounded cursor-pointer", [{
881
+ class: normalizeClass(["whitespace-nowrap box-border py-0 h-10 leading-10 sm:h-8 sm:leading-8 text-sm sm:text-xs pl-0 pr-3 sm:px-2 my-1 sm:m-1 rounded cursor-pointer", [{
837
882
  hover: _ctx.state.hoverIndex === -9 && _ctx.state.filteredSelectCls !== "checked-sur"
838
883
  }, {
839
884
  "text-color-brand sm:bg-color-fill-6 bg-color-bg-1": _ctx.state.filteredSelectCls === "checked-sur"
840
885
  }]]),
841
886
  "data-tag": "tiny-option",
842
- onClick: _cache[29] || (_cache[29] = withModifiers(function($event) {
887
+ onClick: _cache[32] || (_cache[32] = withModifiers(function($event) {
843
888
  return _ctx.toggleCheckAll(true);
844
889
  }, ["stop"])),
845
- onMousedown: _cache[30] || (_cache[30] = withModifiers(function() {
890
+ onMousedown: _cache[33] || (_cache[33] = withModifiers(function() {
846
891
  }, ["stop"])),
847
- onMouseenter: _cache[31] || (_cache[31] = function($event) {
892
+ onMouseenter: _cache[34] || (_cache[34] = function($event) {
848
893
  return _ctx.state.hoverIndex = -9;
849
894
  })
850
895
  },
@@ -879,7 +924,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
879
924
  required: item.required,
880
925
  "highlight-class": item._highlightClass,
881
926
  events: item.events,
882
- onMousedown: _cache[32] || (_cache[32] = withModifiers(function() {
927
+ onMousedown: _cache[35] || (_cache[35] = withModifiers(function() {
883
928
  }, ["stop"]))
884
929
  }, null, 8, ["label", "value", "disabled", "required", "highlight-class", "events"]);
885
930
  }),
@@ -890,10 +935,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
890
935
  }),
891
936
  _: 3
892
937
  /* FORWARDED */
893
- }, 8, ["wrap-class"])), [[vShow, _ctx.state.options.length > 0 && !_ctx.loading]]) : createCommentVNode("v-if", true), _ctx.renderType !== "tree" && _ctx.state.emptyText && (!_ctx.allowCreate || _ctx.loading || _ctx.allowCreate && _ctx.state.emptyFlag) ? (openBlock(), createElementBlock(
938
+ }, 8, ["wrap-class"])), [[vShow, _ctx.state.options.length > 0 && !_ctx.loading]]) : createCommentVNode("v-if", true), !_ctx.slots.panel && _ctx.state.emptyText && (!_ctx.allowCreate || _ctx.loading || _ctx.allowCreate && _ctx.state.emptyFlag) ? (openBlock(), createElementBlock(
894
939
  Fragment,
895
940
  {
896
- key: 4
941
+ key: 3
897
942
  },
898
943
  [_ctx.loadingText || _ctx.slots.empty ? (openBlock(), createElementBlock("div", _hoisted_7, [_ctx.slots.empty ? renderSlot(_ctx.$slots, "empty", {
899
944
  key: 0
@@ -915,11 +960,11 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
915
960
  }))]))],
916
961
  64
917
962
  /* STABLE_FRAGMENT */
918
- )) : createCommentVNode("v-if", true)];
963
+ )) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "footer")];
919
964
  }),
920
965
  _: 3
921
966
  /* FORWARDED */
922
- }, 8, ["title", "close-by-mask", "search-placeholder", "is-drop-inherit-width", "placement", "append-to-body", "style", "popper-options", "class"]), [[vShow, !_ctx.onCopying() && !_ctx.hideDrop && _ctx.state.visible && _ctx.state.emptyText !== false]])];
967
+ }, 8, ["title", "close-by-mask", "search-placeholder", "is-drop-inherit-width", "placement", "append-to-body", "style", "popper-options", "class"]), [[vShow, !_ctx.onCopying() && !_ctx.hideDrop && _ctx.state.visible && (_ctx.slots.panel || _ctx.state.emptyText !== false)]])];
923
968
  }),
924
969
  _: 3
925
970
  /* FORWARDED */