@ariakit/react-core 0.4.3 → 0.4.5
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/CHANGELOG.md +58 -0
- package/cjs/__chunks/{7DQ2LBH2.cjs → 3HMQOCLF.cjs} +23 -5
- package/cjs/__chunks/{AJF5DT5A.cjs → AY5J25V7.cjs} +2 -2
- package/cjs/__chunks/{HFNM6QV4.cjs → DAOFDKV2.cjs} +1 -1
- package/cjs/__chunks/{GYHP7IYG.cjs → DFXPO2ED.cjs} +2 -2
- package/cjs/__chunks/{3C4RFBCG.cjs → EYZZO5IT.cjs} +1 -1
- package/cjs/__chunks/{3MKOUH5M.cjs → GZ2NNSLV.cjs} +4 -4
- package/cjs/__chunks/ISJGSS4S.cjs +16 -0
- package/cjs/__chunks/{A356CGND.cjs → JDCTLYQ4.cjs} +1 -1
- package/cjs/__chunks/{T5BWR4CB.cjs → KDTFHBKU.cjs} +2 -2
- package/cjs/__chunks/{NZSB7HSZ.cjs → LY4LCJM6.cjs} +2 -2
- package/cjs/__chunks/{DCTXNU2X.cjs → N43E53E6.cjs} +3 -3
- package/cjs/__chunks/{IHFGURUM.cjs → NRPEUNJB.cjs} +2 -2
- package/cjs/__chunks/PVLZGFP6.cjs +34 -0
- package/cjs/__chunks/{CWS5RZSU.cjs → QJDA4LG6.cjs} +28 -17
- package/cjs/__chunks/{NDVZ37O3.cjs → RG6U7KAS.cjs} +22 -4
- package/cjs/__chunks/YWAHOWYE.cjs +25 -0
- package/cjs/__chunks/{3XXW4Y4D.cjs → Z2VL7JHX.cjs} +2 -2
- package/cjs/checkbox/checkbox-check.cjs +2 -2
- package/cjs/collection/collection-renderer.d.cts +0 -2
- package/cjs/collection/collection-renderer.d.ts +0 -2
- package/cjs/combobox/combobox-cancel.cjs +4 -4
- package/cjs/combobox/combobox-disclosure.cjs +4 -4
- package/cjs/combobox/combobox-item-check.cjs +2 -2
- package/cjs/combobox/combobox-item.cjs +19 -9
- package/cjs/combobox/combobox-item.d.cts +22 -12
- package/cjs/combobox/combobox-item.d.ts +22 -12
- package/cjs/combobox/combobox-popover.cjs +41 -16
- package/cjs/combobox/combobox-provider.cjs +3 -2
- package/cjs/combobox/combobox-store.cjs +6 -2
- package/cjs/combobox/combobox-store.d.cts +12 -4
- package/cjs/combobox/combobox-store.d.ts +12 -4
- package/cjs/combobox/combobox-value.cjs +32 -0
- package/cjs/combobox/combobox-value.d.cts +41 -0
- package/cjs/combobox/combobox-value.d.ts +41 -0
- package/cjs/combobox/combobox.cjs +79 -32
- package/cjs/combobox/combobox.d.cts +20 -0
- package/cjs/combobox/combobox.d.ts +20 -0
- package/cjs/composite/composite-input.cjs +91 -6
- package/cjs/composite/composite-input.d.cts +2 -0
- package/cjs/composite/composite-input.d.ts +2 -0
- package/cjs/composite/composite-item.cjs +3 -3
- package/cjs/composite/composite-overflow-disclosure.cjs +3 -3
- package/cjs/composite/composite-overflow.cjs +12 -12
- package/cjs/composite/composite-renderer.d.cts +0 -2
- package/cjs/composite/composite-renderer.d.ts +0 -2
- package/cjs/dialog/dialog-backdrop.cjs +3 -3
- package/cjs/dialog/dialog-dismiss.cjs +2 -2
- package/cjs/dialog/dialog.cjs +11 -11
- package/cjs/dialog/dialog.d.cts +4 -0
- package/cjs/dialog/dialog.d.ts +4 -0
- package/cjs/dialog/utils/disable-tree.cjs +3 -3
- package/cjs/dialog/utils/use-prevent-body-scroll.cjs +3 -3
- package/cjs/form/form-checkbox.cjs +1 -1
- package/cjs/form/form-push.cjs +1 -1
- package/cjs/form/form-radio.cjs +4 -4
- package/cjs/hovercard/hovercard-disclosure.cjs +1 -1
- package/cjs/hovercard/hovercard-dismiss.cjs +4 -4
- package/cjs/hovercard/hovercard.cjs +13 -13
- package/cjs/menu/menu-button-arrow.cjs +2 -2
- package/cjs/menu/menu-dismiss.cjs +4 -4
- package/cjs/menu/menu-item-check.cjs +2 -2
- package/cjs/menu/menu-item-checkbox.cjs +4 -4
- package/cjs/menu/menu-item-radio.cjs +7 -7
- package/cjs/menu/menu-item.cjs +4 -4
- package/cjs/menu/menu.cjs +14 -14
- package/cjs/popover/popover-disclosure-arrow.cjs +2 -2
- package/cjs/popover/popover-dismiss.cjs +3 -3
- package/cjs/popover/popover.cjs +12 -12
- package/cjs/radio/radio.cjs +4 -4
- package/cjs/select/select-arrow.cjs +3 -3
- package/cjs/select/select-item-check.cjs +2 -2
- package/cjs/select/select-item.cjs +4 -4
- package/cjs/select/select-popover.cjs +13 -13
- package/cjs/select/select-value.d.cts +8 -7
- package/cjs/select/select-value.d.ts +8 -7
- package/cjs/select/select.cjs +4 -4
- package/cjs/tab/tab-panel.cjs +2 -2
- package/cjs/tab/tab.cjs +7 -7
- package/cjs/tag/tag-context.cjs +25 -0
- package/cjs/tag/tag-context.d.cts +21 -0
- package/cjs/tag/tag-context.d.ts +21 -0
- package/cjs/tag/tag-input.cjs +191 -0
- package/cjs/tag/tag-input.d.cts +122 -0
- package/cjs/tag/tag-input.d.ts +122 -0
- package/cjs/tag/tag-list-label.cjs +56 -0
- package/cjs/tag/tag-list-label.d.cts +55 -0
- package/cjs/tag/tag-list-label.d.ts +55 -0
- package/cjs/tag/tag-list.cjs +141 -0
- package/cjs/tag/tag-list.d.cts +58 -0
- package/cjs/tag/tag-list.d.ts +58 -0
- package/cjs/tag/tag-provider.cjs +26 -0
- package/cjs/tag/tag-provider.d.cts +29 -0
- package/cjs/tag/tag-provider.d.ts +29 -0
- package/cjs/tag/tag-remove.cjs +119 -0
- package/cjs/tag/tag-remove.d.cts +67 -0
- package/cjs/tag/tag-remove.d.ts +67 -0
- package/cjs/tag/tag-store.cjs +15 -0
- package/cjs/tag/tag-store.d.cts +49 -0
- package/cjs/tag/tag-store.d.ts +49 -0
- package/cjs/tag/tag-value.cjs +29 -0
- package/cjs/tag/tag-value.d.cts +41 -0
- package/cjs/tag/tag-value.d.ts +41 -0
- package/cjs/tag/tag-values.cjs +29 -0
- package/cjs/tag/tag-values.d.cts +52 -0
- package/cjs/tag/tag-values.d.ts +52 -0
- package/cjs/tag/tag.cjs +130 -0
- package/cjs/tag/tag.d.cts +74 -0
- package/cjs/tag/tag.d.ts +74 -0
- package/cjs/tag/utils.cjs +8 -0
- package/cjs/tag/utils.d.cts +1 -0
- package/cjs/tag/utils.d.ts +1 -0
- package/cjs/toolbar/toolbar-container.cjs +4 -4
- package/cjs/toolbar/toolbar-input.cjs +4 -8
- package/cjs/toolbar/toolbar-input.d.cts +3 -2
- package/cjs/toolbar/toolbar-input.d.ts +3 -2
- package/cjs/toolbar/toolbar-item.cjs +4 -4
- package/cjs/tooltip/tooltip.cjs +14 -14
- package/combobox/combobox-value/package.json +8 -0
- package/esm/__chunks/{LABIXQLW.js → 44PDY2W5.js} +1 -1
- package/esm/__chunks/{FYNSL2D5.js → 5H3YXAUC.js} +1 -1
- package/esm/__chunks/{6VDNHSLX.js → 65LF6MEO.js} +2 -2
- package/esm/__chunks/{X3V2DT2U.js → 6YVAEELE.js} +1 -1
- package/esm/__chunks/{JCOBPKEI.js → BY6P32UK.js} +1 -1
- package/esm/__chunks/{ZFEEEZVE.js → DLLQM6DZ.js} +22 -4
- package/esm/__chunks/{NN4HLGKS.js → F2RFUFO2.js} +1 -1
- package/esm/__chunks/{NQ4PTILT.js → FGHVVLPU.js} +29 -18
- package/esm/__chunks/{2VWKZYYT.js → H5N72W37.js} +1 -1
- package/esm/__chunks/L7IM35RU.js +16 -0
- package/esm/__chunks/{HW63KLP5.js → M354SEUF.js} +1 -1
- package/esm/__chunks/{RAKW656I.js → Q4PZFBSW.js} +1 -1
- package/esm/__chunks/QNNHZL3W.js +25 -0
- package/esm/__chunks/{C5HA76JU.js → QZJOXZKA.js} +1 -1
- package/esm/__chunks/{XK6CE2M5.js → UKDZLPKH.js} +1 -1
- package/esm/__chunks/{ONUY4D7O.js → VGORKDMQ.js} +26 -8
- package/esm/__chunks/WYDDZRWN.js +34 -0
- package/esm/checkbox/checkbox-check.js +1 -1
- package/esm/collection/collection-renderer.d.ts +0 -2
- package/esm/combobox/combobox-cancel.js +4 -4
- package/esm/combobox/combobox-disclosure.js +4 -4
- package/esm/combobox/combobox-item-check.js +1 -1
- package/esm/combobox/combobox-item.d.ts +22 -12
- package/esm/combobox/combobox-item.js +19 -9
- package/esm/combobox/combobox-popover.js +40 -15
- package/esm/combobox/combobox-provider.js +2 -1
- package/esm/combobox/combobox-store.d.ts +12 -4
- package/esm/combobox/combobox-store.js +5 -1
- package/esm/combobox/combobox-value.d.ts +41 -0
- package/esm/combobox/combobox-value.js +32 -0
- package/esm/combobox/combobox.d.ts +20 -0
- package/esm/combobox/combobox.js +80 -33
- package/esm/composite/composite-input.d.ts +2 -0
- package/esm/composite/composite-input.js +92 -7
- package/esm/composite/composite-item.js +2 -2
- package/esm/composite/composite-overflow-disclosure.js +2 -2
- package/esm/composite/composite-overflow.js +11 -11
- package/esm/composite/composite-renderer.d.ts +0 -2
- package/esm/dialog/dialog-backdrop.js +2 -2
- package/esm/dialog/dialog-dismiss.js +1 -1
- package/esm/dialog/dialog.d.ts +4 -0
- package/esm/dialog/dialog.js +10 -10
- package/esm/dialog/utils/disable-tree.js +2 -2
- package/esm/dialog/utils/use-prevent-body-scroll.js +2 -2
- package/esm/form/form-checkbox.js +1 -1
- package/esm/form/form-push.js +1 -1
- package/esm/form/form-radio.js +3 -3
- package/esm/hovercard/hovercard-disclosure.js +1 -1
- package/esm/hovercard/hovercard-dismiss.js +3 -3
- package/esm/hovercard/hovercard.js +12 -12
- package/esm/menu/menu-button-arrow.js +1 -1
- package/esm/menu/menu-dismiss.js +3 -3
- package/esm/menu/menu-item-check.js +1 -1
- package/esm/menu/menu-item-checkbox.js +3 -3
- package/esm/menu/menu-item-radio.js +5 -5
- package/esm/menu/menu-item.js +3 -3
- package/esm/menu/menu.js +12 -12
- package/esm/popover/popover-disclosure-arrow.js +1 -1
- package/esm/popover/popover-dismiss.js +2 -2
- package/esm/popover/popover.js +11 -11
- package/esm/radio/radio.js +3 -3
- package/esm/select/select-arrow.js +2 -2
- package/esm/select/select-item-check.js +1 -1
- package/esm/select/select-item.js +4 -4
- package/esm/select/select-popover.js +11 -11
- package/esm/select/select-value.d.ts +8 -7
- package/esm/select/select.js +3 -3
- package/esm/tab/tab-panel.js +3 -3
- package/esm/tab/tab.js +5 -5
- package/esm/tag/tag-context.d.ts +21 -0
- package/esm/tag/tag-context.js +25 -0
- package/esm/tag/tag-input.d.ts +122 -0
- package/esm/tag/tag-input.js +191 -0
- package/esm/tag/tag-list-label.d.ts +55 -0
- package/esm/tag/tag-list-label.js +56 -0
- package/esm/tag/tag-list.d.ts +58 -0
- package/esm/tag/tag-list.js +141 -0
- package/esm/tag/tag-provider.d.ts +29 -0
- package/esm/tag/tag-provider.js +26 -0
- package/esm/tag/tag-remove.d.ts +67 -0
- package/esm/tag/tag-remove.js +119 -0
- package/esm/tag/tag-store.d.ts +49 -0
- package/esm/tag/tag-store.js +15 -0
- package/esm/tag/tag-value.d.ts +41 -0
- package/esm/tag/tag-value.js +29 -0
- package/esm/tag/tag-values.d.ts +52 -0
- package/esm/tag/tag-values.js +29 -0
- package/esm/tag/tag.d.ts +74 -0
- package/esm/tag/tag.js +130 -0
- package/esm/tag/utils.d.ts +1 -0
- package/esm/tag/utils.js +8 -0
- package/esm/toolbar/toolbar-container.js +3 -3
- package/esm/toolbar/toolbar-input.d.ts +3 -2
- package/esm/toolbar/toolbar-input.js +3 -7
- package/esm/toolbar/toolbar-item.js +3 -3
- package/esm/tooltip/tooltip.js +12 -12
- package/package.json +86 -2
- package/tag/tag/package.json +8 -0
- package/tag/tag-context/package.json +8 -0
- package/tag/tag-input/package.json +8 -0
- package/tag/tag-list/package.json +8 -0
- package/tag/tag-list-label/package.json +8 -0
- package/tag/tag-provider/package.json +8 -0
- package/tag/tag-remove/package.json +8 -0
- package/tag/tag-store/package.json +8 -0
- package/tag/tag-value/package.json +8 -0
- package/tag/tag-values/package.json +8 -0
- package/tag/utils/package.json +8 -0
- package/cjs/__chunks/WGZQRLXV.cjs +0 -84
- package/esm/__chunks/RPGNBKKU.js +0 -84
- package/cjs/__chunks/{37BRXQN7.cjs → BX2QEIBH.cjs} +3 -3
- package/cjs/__chunks/{PVYTX5U5.cjs → SL55T4ZB.cjs} +2 -2
- package/cjs/__chunks/{TSEXNK3K.cjs → VR6GCLOV.cjs} +2 -2
- package/esm/__chunks/{PTPUIM7N.js → 3TEK3C5Q.js} +3 -3
- package/esm/__chunks/{U2L67A6K.js → BC72XE6E.js} +3 -3
- package/esm/__chunks/{GOXKZAQI.js → CMFBAHKI.js} +3 -3
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useCompositeItem
|
|
4
|
+
} from "../__chunks/VGORKDMQ.js";
|
|
5
|
+
import "../__chunks/IFMAUEA7.js";
|
|
6
|
+
import "../__chunks/PJ7ERAIM.js";
|
|
7
|
+
import {
|
|
8
|
+
useTagContext
|
|
9
|
+
} from "../__chunks/WYDDZRWN.js";
|
|
10
|
+
import "../__chunks/3IEDWLST.js";
|
|
11
|
+
import "../__chunks/QFI3MCMR.js";
|
|
12
|
+
import "../__chunks/6LTHW2TQ.js";
|
|
13
|
+
import "../__chunks/7JCFLN3D.js";
|
|
14
|
+
import "../__chunks/SHA3WOPI.js";
|
|
15
|
+
import {
|
|
16
|
+
createElement,
|
|
17
|
+
createHook,
|
|
18
|
+
forwardRef
|
|
19
|
+
} from "../__chunks/GUCZNEAD.js";
|
|
20
|
+
import "../__chunks/PWUXK5IM.js";
|
|
21
|
+
import {
|
|
22
|
+
useBooleanEvent,
|
|
23
|
+
useEvent,
|
|
24
|
+
useMergeRefs
|
|
25
|
+
} from "../__chunks/WOWUAP42.js";
|
|
26
|
+
import "../__chunks/XM66DUTO.js";
|
|
27
|
+
import {
|
|
28
|
+
__objRest,
|
|
29
|
+
__spreadProps,
|
|
30
|
+
__spreadValues
|
|
31
|
+
} from "../__chunks/4R3V3JGP.js";
|
|
32
|
+
|
|
33
|
+
// src/tag/tag-input.tsx
|
|
34
|
+
import { toArray } from "@ariakit/core/utils/array";
|
|
35
|
+
import {
|
|
36
|
+
getTextboxSelection,
|
|
37
|
+
setSelectionRange
|
|
38
|
+
} from "@ariakit/core/utils/dom";
|
|
39
|
+
import { getInputType } from "@ariakit/core/utils/events";
|
|
40
|
+
import { invariant } from "@ariakit/core/utils/misc";
|
|
41
|
+
import { UndoManager } from "@ariakit/core/utils/undo";
|
|
42
|
+
var TagName = "input";
|
|
43
|
+
var DEFAULT_DELIMITER = ["\n", ";", ",", /\s/];
|
|
44
|
+
function getDelimiters(delimiter, defaultDelimiter = DEFAULT_DELIMITER) {
|
|
45
|
+
const finalDelimiter = delimiter === void 0 ? defaultDelimiter : delimiter;
|
|
46
|
+
if (!finalDelimiter)
|
|
47
|
+
return [];
|
|
48
|
+
return toArray(finalDelimiter);
|
|
49
|
+
}
|
|
50
|
+
function splitValueByDelimiter(value, delimiters) {
|
|
51
|
+
for (const delimiter of delimiters) {
|
|
52
|
+
let match = value.match(delimiter);
|
|
53
|
+
while ((match == null ? void 0 : match.index) === 0) {
|
|
54
|
+
value = value.slice(match[0].length);
|
|
55
|
+
match = value.match(delimiter);
|
|
56
|
+
}
|
|
57
|
+
if (!match)
|
|
58
|
+
continue;
|
|
59
|
+
return value.split(delimiter);
|
|
60
|
+
}
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
var useTagInput = createHook(
|
|
64
|
+
function useTagInput2(_a) {
|
|
65
|
+
var _b = _a, {
|
|
66
|
+
store,
|
|
67
|
+
tabbable = true,
|
|
68
|
+
delimiter,
|
|
69
|
+
addValueOnPaste = true,
|
|
70
|
+
addValueOnChange = true,
|
|
71
|
+
setValueOnChange = true,
|
|
72
|
+
removeOnBackspace = true
|
|
73
|
+
} = _b, props = __objRest(_b, [
|
|
74
|
+
"store",
|
|
75
|
+
"tabbable",
|
|
76
|
+
"delimiter",
|
|
77
|
+
"addValueOnPaste",
|
|
78
|
+
"addValueOnChange",
|
|
79
|
+
"setValueOnChange",
|
|
80
|
+
"removeOnBackspace"
|
|
81
|
+
]);
|
|
82
|
+
const context = useTagContext();
|
|
83
|
+
store = store || context;
|
|
84
|
+
invariant(
|
|
85
|
+
store,
|
|
86
|
+
process.env.NODE_ENV !== "production" && "TagInput must receive a `store` prop or be wrapped in a TagProvider component."
|
|
87
|
+
);
|
|
88
|
+
const value = store.useState("value");
|
|
89
|
+
const onPasteProp = props.onPaste;
|
|
90
|
+
const addValueOnPasteProp = useBooleanEvent(addValueOnPaste);
|
|
91
|
+
const onPaste = useEvent((event) => {
|
|
92
|
+
onPasteProp == null ? void 0 : onPasteProp(event);
|
|
93
|
+
if (event.defaultPrevented)
|
|
94
|
+
return;
|
|
95
|
+
const text = event.clipboardData.getData("text");
|
|
96
|
+
const delimiters = getDelimiters(delimiter);
|
|
97
|
+
const values = splitValueByDelimiter(text, delimiters).map((value2) => value2.trim()).filter((value2) => value2 !== "");
|
|
98
|
+
const eventWithValues = Object.assign(event, { values });
|
|
99
|
+
if (!addValueOnPasteProp(eventWithValues))
|
|
100
|
+
return;
|
|
101
|
+
if (!values.length)
|
|
102
|
+
return;
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
for (const tagValue of values) {
|
|
105
|
+
store.addValue(tagValue);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const onChangeProp = props.onChange;
|
|
109
|
+
const setValueOnChangeProp = useBooleanEvent(setValueOnChange);
|
|
110
|
+
const addValueOnChangeProp = useBooleanEvent(addValueOnChange);
|
|
111
|
+
const onChange = useEvent((event) => {
|
|
112
|
+
onChangeProp == null ? void 0 : onChangeProp(event);
|
|
113
|
+
if (event.defaultPrevented)
|
|
114
|
+
return;
|
|
115
|
+
if (!store)
|
|
116
|
+
return;
|
|
117
|
+
const { value: prevValue } = store.getState();
|
|
118
|
+
const inputType = getInputType(event);
|
|
119
|
+
const currentTarget = event.currentTarget;
|
|
120
|
+
const { start, end } = getTextboxSelection(currentTarget);
|
|
121
|
+
const { value: value2 } = currentTarget;
|
|
122
|
+
if (setValueOnChangeProp(event)) {
|
|
123
|
+
UndoManager.execute(() => {
|
|
124
|
+
store.setValue(value2);
|
|
125
|
+
queueMicrotask(() => {
|
|
126
|
+
setSelectionRange(currentTarget, start, end);
|
|
127
|
+
});
|
|
128
|
+
if (value2 === prevValue)
|
|
129
|
+
return;
|
|
130
|
+
return () => store.setValue(prevValue);
|
|
131
|
+
}, inputType);
|
|
132
|
+
}
|
|
133
|
+
const isTrailingCaret = start === end && start === value2.length;
|
|
134
|
+
if (isTrailingCaret) {
|
|
135
|
+
const delimiters = getDelimiters(delimiter);
|
|
136
|
+
let values = splitValueByDelimiter(value2, delimiters);
|
|
137
|
+
const trailingvalue = values.pop() || "";
|
|
138
|
+
values = values.map((value3) => value3.trim()).filter((value3) => value3 !== "");
|
|
139
|
+
const eventWithValues = Object.assign(event, { values });
|
|
140
|
+
if (values.length && addValueOnChangeProp(eventWithValues)) {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
for (const tagValue of values) {
|
|
143
|
+
store.addValue(tagValue);
|
|
144
|
+
}
|
|
145
|
+
UndoManager.execute(() => {
|
|
146
|
+
store.setValue(trailingvalue);
|
|
147
|
+
if (trailingvalue === prevValue)
|
|
148
|
+
return;
|
|
149
|
+
return () => store.setValue(prevValue);
|
|
150
|
+
}, inputType);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
const onKeyDownProp = props.onKeyDown;
|
|
155
|
+
const removeOnBackspaceProp = useBooleanEvent(removeOnBackspace);
|
|
156
|
+
const onKeyDown = useEvent((event) => {
|
|
157
|
+
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
|
|
158
|
+
if (event.defaultPrevented)
|
|
159
|
+
return;
|
|
160
|
+
if (event.key === "Backspace" && removeOnBackspaceProp(event)) {
|
|
161
|
+
const { start, end } = getTextboxSelection(event.currentTarget);
|
|
162
|
+
const isLeadingCaret = start === end && start === 0;
|
|
163
|
+
if (!isLeadingCaret)
|
|
164
|
+
return;
|
|
165
|
+
store.setValues((values) => {
|
|
166
|
+
if (!values.length)
|
|
167
|
+
return values;
|
|
168
|
+
return values.slice(0, -1);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
props = __spreadProps(__spreadValues({
|
|
173
|
+
value
|
|
174
|
+
}, props), {
|
|
175
|
+
ref: useMergeRefs(store.setInputElement, props.ref),
|
|
176
|
+
onPaste,
|
|
177
|
+
onChange,
|
|
178
|
+
onKeyDown
|
|
179
|
+
});
|
|
180
|
+
props = useCompositeItem(__spreadValues({ store, tabbable }, props));
|
|
181
|
+
return props;
|
|
182
|
+
}
|
|
183
|
+
);
|
|
184
|
+
var TagInput = forwardRef(function TagInput2(props) {
|
|
185
|
+
const htmlProps = useTagInput(props);
|
|
186
|
+
return createElement(TagName, htmlProps);
|
|
187
|
+
});
|
|
188
|
+
export {
|
|
189
|
+
TagInput,
|
|
190
|
+
useTagInput
|
|
191
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ElementType } from "react";
|
|
2
|
+
import type { CompositeOptions } from "../composite/composite.jsx";
|
|
3
|
+
import type { Props } from "../utils/types.js";
|
|
4
|
+
import type { TagStore } from "./tag-store.js";
|
|
5
|
+
declare const TagName = "label";
|
|
6
|
+
type TagName = typeof TagName;
|
|
7
|
+
/**
|
|
8
|
+
* Returns props to create a `TagListLabel` component.
|
|
9
|
+
* @see https://ariakit.org/components/tag
|
|
10
|
+
* @example
|
|
11
|
+
* ```jsx
|
|
12
|
+
* const props = useTagListLabel();
|
|
13
|
+
* <Role.label {...props} />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare const useTagListLabel: import("../utils/types.js").Hook<"label", TagListLabelOptions<"label">>;
|
|
17
|
+
/**
|
|
18
|
+
* Renders a label element for the
|
|
19
|
+
* [`TagInput`](https://ariakit.org/reference/tag-input) and also acts as the
|
|
20
|
+
* accessible name for the listbox element rendered by
|
|
21
|
+
* [`TagList`](https://ariakit.org/reference/tag-list).
|
|
22
|
+
* @see https://ariakit.org/components/tag
|
|
23
|
+
* @example
|
|
24
|
+
* ```jsx {2}
|
|
25
|
+
* <TagProvider>
|
|
26
|
+
* <TagListLabel>Invitees</TagListLabel>
|
|
27
|
+
* <TagList>
|
|
28
|
+
* <TagValues>
|
|
29
|
+
* {(values) =>
|
|
30
|
+
* values.map((value) => (
|
|
31
|
+
* <Tag key={value} value={value}>
|
|
32
|
+
* {value}
|
|
33
|
+
* <TagRemove />
|
|
34
|
+
* </Tag>
|
|
35
|
+
* ))
|
|
36
|
+
* }
|
|
37
|
+
* </TagValues>
|
|
38
|
+
* <TagInput />
|
|
39
|
+
* </TagList>
|
|
40
|
+
* </TagProvider>
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare const TagListLabel: (props: TagListLabelProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
44
|
+
export interface TagListLabelOptions<T extends ElementType = TagName> extends CompositeOptions<T> {
|
|
45
|
+
/**
|
|
46
|
+
* Object returned by the
|
|
47
|
+
* [`useTagStore`](https://ariakit.org/reference/use-tag-store) hook. If not
|
|
48
|
+
* provided, the closest
|
|
49
|
+
* [`TagProvider`](https://ariakit.org/reference/tag-provider) component's
|
|
50
|
+
* context will be used.
|
|
51
|
+
*/
|
|
52
|
+
store?: TagStore;
|
|
53
|
+
}
|
|
54
|
+
export type TagListLabelProps<T extends ElementType = TagName> = Props<T, TagListLabelOptions<T>>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useTagContext
|
|
4
|
+
} from "../__chunks/WYDDZRWN.js";
|
|
5
|
+
import "../__chunks/QFI3MCMR.js";
|
|
6
|
+
import "../__chunks/6LTHW2TQ.js";
|
|
7
|
+
import {
|
|
8
|
+
createElement,
|
|
9
|
+
createHook,
|
|
10
|
+
forwardRef
|
|
11
|
+
} from "../__chunks/GUCZNEAD.js";
|
|
12
|
+
import {
|
|
13
|
+
useId,
|
|
14
|
+
useMergeRefs
|
|
15
|
+
} from "../__chunks/WOWUAP42.js";
|
|
16
|
+
import "../__chunks/XM66DUTO.js";
|
|
17
|
+
import {
|
|
18
|
+
__objRest,
|
|
19
|
+
__spreadProps,
|
|
20
|
+
__spreadValues
|
|
21
|
+
} from "../__chunks/4R3V3JGP.js";
|
|
22
|
+
|
|
23
|
+
// src/tag/tag-list-label.tsx
|
|
24
|
+
import { invariant } from "@ariakit/core/utils/misc";
|
|
25
|
+
var TagName = "label";
|
|
26
|
+
var useTagListLabel = createHook(
|
|
27
|
+
function useTagListLabel2(_a) {
|
|
28
|
+
var _b = _a, { store } = _b, props = __objRest(_b, ["store"]);
|
|
29
|
+
const context = useTagContext();
|
|
30
|
+
store = store || context;
|
|
31
|
+
invariant(
|
|
32
|
+
store,
|
|
33
|
+
process.env.NODE_ENV !== "production" && "TagListLabel must receive a `store` prop or be wrapped in a TagProvider component."
|
|
34
|
+
);
|
|
35
|
+
const id = useId(props.id);
|
|
36
|
+
const htmlFor = store.useState((state) => {
|
|
37
|
+
var _a2;
|
|
38
|
+
return (_a2 = state.inputElement) == null ? void 0 : _a2.id;
|
|
39
|
+
});
|
|
40
|
+
props = __spreadProps(__spreadValues({
|
|
41
|
+
id,
|
|
42
|
+
htmlFor
|
|
43
|
+
}, props), {
|
|
44
|
+
ref: useMergeRefs(store.setLabelElement, props.ref)
|
|
45
|
+
});
|
|
46
|
+
return props;
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
var TagListLabel = forwardRef(function TagListLabel2(props) {
|
|
50
|
+
const htmlProps = useTagListLabel(props);
|
|
51
|
+
return createElement(TagName, htmlProps);
|
|
52
|
+
});
|
|
53
|
+
export {
|
|
54
|
+
TagListLabel,
|
|
55
|
+
useTagListLabel
|
|
56
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ElementType } from "react";
|
|
2
|
+
import type { CompositeOptions } from "../composite/composite.js";
|
|
3
|
+
import type { Props } from "../utils/types.js";
|
|
4
|
+
import type { TagStore } from "./tag-store.js";
|
|
5
|
+
declare const TagName = "div";
|
|
6
|
+
type TagName = typeof TagName;
|
|
7
|
+
/**
|
|
8
|
+
* Returns props to create a `TagList` component.
|
|
9
|
+
* @see https://ariakit.org/components/tag
|
|
10
|
+
* @example
|
|
11
|
+
* ```jsx
|
|
12
|
+
* const props = useTagList();
|
|
13
|
+
* <Role.div {...props} />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare const useTagList: import("../utils/types.js").Hook<"div", TagListOptions<"div">>;
|
|
17
|
+
/**
|
|
18
|
+
* Renders a wrapper for [`Tag`](https://ariakit.org/reference/tag) and
|
|
19
|
+
* [`TagInput`](https://ariakit.org/reference/tag-input) components. This
|
|
20
|
+
* component is typically styled as an input field.
|
|
21
|
+
*
|
|
22
|
+
* The [`TagListLabel`](https://ariakit.org/reference/tag-list-label) component
|
|
23
|
+
* can be used to provide an accessible name for the listbox element that owns
|
|
24
|
+
* the tags.
|
|
25
|
+
* @see https://ariakit.org/components/tag
|
|
26
|
+
* @example
|
|
27
|
+
* ```jsx {3-15}
|
|
28
|
+
* <TagProvider>
|
|
29
|
+
* <TagListLabel>Invitees</TagListLabel>
|
|
30
|
+
* <TagList>
|
|
31
|
+
* <TagValues>
|
|
32
|
+
* {(values) =>
|
|
33
|
+
* values.map((value) => (
|
|
34
|
+
* <Tag key={value} value={value}>
|
|
35
|
+
* {value}
|
|
36
|
+
* <TagRemove />
|
|
37
|
+
* </Tag>
|
|
38
|
+
* ))
|
|
39
|
+
* }
|
|
40
|
+
* </TagValues>
|
|
41
|
+
* <TagInput />
|
|
42
|
+
* </TagList>
|
|
43
|
+
* </TagProvider>
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare const TagList: (props: TagListProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
47
|
+
export interface TagListOptions<T extends ElementType = TagName> extends CompositeOptions<T> {
|
|
48
|
+
/**
|
|
49
|
+
* Object returned by the
|
|
50
|
+
* [`useTagStore`](https://ariakit.org/reference/use-tag-store) hook. If not
|
|
51
|
+
* provided, the closest
|
|
52
|
+
* [`TagProvider`](https://ariakit.org/reference/tag-provider) component's
|
|
53
|
+
* context will be used.
|
|
54
|
+
*/
|
|
55
|
+
store?: TagStore;
|
|
56
|
+
}
|
|
57
|
+
export type TagListProps<T extends ElementType = TagName> = Props<T, TagListOptions<T>>;
|
|
58
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useTouchDevice
|
|
4
|
+
} from "../__chunks/L7IM35RU.js";
|
|
5
|
+
import {
|
|
6
|
+
TagScopedContextProvider,
|
|
7
|
+
useTagProviderContext
|
|
8
|
+
} from "../__chunks/WYDDZRWN.js";
|
|
9
|
+
import {
|
|
10
|
+
useComposite
|
|
11
|
+
} from "../__chunks/CDZXDIC7.js";
|
|
12
|
+
import "../__chunks/3IEDWLST.js";
|
|
13
|
+
import "../__chunks/QFI3MCMR.js";
|
|
14
|
+
import "../__chunks/6LTHW2TQ.js";
|
|
15
|
+
import "../__chunks/7JCFLN3D.js";
|
|
16
|
+
import "../__chunks/SHA3WOPI.js";
|
|
17
|
+
import {
|
|
18
|
+
createElement,
|
|
19
|
+
createHook,
|
|
20
|
+
forwardRef
|
|
21
|
+
} from "../__chunks/GUCZNEAD.js";
|
|
22
|
+
import {
|
|
23
|
+
useEvent,
|
|
24
|
+
useWrapElement
|
|
25
|
+
} from "../__chunks/WOWUAP42.js";
|
|
26
|
+
import "../__chunks/XM66DUTO.js";
|
|
27
|
+
import {
|
|
28
|
+
__objRest,
|
|
29
|
+
__spreadProps,
|
|
30
|
+
__spreadValues
|
|
31
|
+
} from "../__chunks/4R3V3JGP.js";
|
|
32
|
+
|
|
33
|
+
// src/tag/tag-list.tsx
|
|
34
|
+
import { queueBeforeEvent } from "@ariakit/core/utils/events";
|
|
35
|
+
import { getClosestFocusable } from "@ariakit/core/utils/focus";
|
|
36
|
+
import { invariant } from "@ariakit/core/utils/misc";
|
|
37
|
+
import { isApple } from "@ariakit/core/utils/platform";
|
|
38
|
+
import { UndoManager } from "@ariakit/core/utils/undo";
|
|
39
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
40
|
+
var TagName = "div";
|
|
41
|
+
var useTagList = createHook(
|
|
42
|
+
function useTagList2(_a) {
|
|
43
|
+
var _b = _a, { store } = _b, props = __objRest(_b, ["store"]);
|
|
44
|
+
const context = useTagProviderContext();
|
|
45
|
+
store = store || context;
|
|
46
|
+
invariant(
|
|
47
|
+
store,
|
|
48
|
+
process.env.NODE_ENV !== "production" && "TagList must receive a `store` prop or be wrapped in a TagProvider component."
|
|
49
|
+
);
|
|
50
|
+
const onMouseDownProp = props.onMouseDown;
|
|
51
|
+
const onMouseDown = useEvent((event) => {
|
|
52
|
+
onMouseDownProp == null ? void 0 : onMouseDownProp(event);
|
|
53
|
+
if (event.defaultPrevented)
|
|
54
|
+
return;
|
|
55
|
+
const target = event.target;
|
|
56
|
+
const currentTarget = event.currentTarget;
|
|
57
|
+
const focusableTarget = getClosestFocusable(target);
|
|
58
|
+
const isSelfFocusable = focusableTarget === currentTarget;
|
|
59
|
+
if (!isSelfFocusable && currentTarget.contains(focusableTarget))
|
|
60
|
+
return;
|
|
61
|
+
const { inputElement } = store.getState();
|
|
62
|
+
queueBeforeEvent(event.currentTarget, "mouseup", () => {
|
|
63
|
+
inputElement == null ? void 0 : inputElement.focus();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
const onKeyDownProp = props.onKeyDown;
|
|
67
|
+
const onKeyDown = useEvent((event) => {
|
|
68
|
+
onKeyDownProp == null ? void 0 : onKeyDownProp(event);
|
|
69
|
+
if (event.defaultPrevented)
|
|
70
|
+
return;
|
|
71
|
+
const pc = !isApple();
|
|
72
|
+
const z = event.key === "z" || event.key === "Z";
|
|
73
|
+
const mod = pc ? event.ctrlKey : event.metaKey;
|
|
74
|
+
const shiftZ = event.shiftKey && z || pc && event.key === "y";
|
|
75
|
+
if (mod && shiftZ) {
|
|
76
|
+
event.preventDefault();
|
|
77
|
+
UndoManager.redo();
|
|
78
|
+
} else if (mod && z) {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
UndoManager.undo();
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
props = useWrapElement(
|
|
84
|
+
props,
|
|
85
|
+
(element) => /* @__PURE__ */ jsx(TagScopedContextProvider, { value: store, children: element }),
|
|
86
|
+
[store]
|
|
87
|
+
);
|
|
88
|
+
props = __spreadProps(__spreadValues({}, props), {
|
|
89
|
+
onMouseDown,
|
|
90
|
+
onKeyDown
|
|
91
|
+
});
|
|
92
|
+
props = useComposite(__spreadValues({ store }, props));
|
|
93
|
+
const orientation = store.useState(
|
|
94
|
+
(state) => state.orientation === "both" ? void 0 : state.orientation
|
|
95
|
+
);
|
|
96
|
+
const items = store.useState((state) => state.renderedItems);
|
|
97
|
+
const itemIds = items.filter((item) => !!item.value).map((item) => item.id);
|
|
98
|
+
const labelId = store.useState((state) => {
|
|
99
|
+
var _a2;
|
|
100
|
+
return (_a2 = state.labelElement) == null ? void 0 : _a2.id;
|
|
101
|
+
});
|
|
102
|
+
const listboxProps = {};
|
|
103
|
+
for (const key in props) {
|
|
104
|
+
if (key === "role" || key.startsWith("aria-")) {
|
|
105
|
+
const prop = key;
|
|
106
|
+
listboxProps[prop] = props[prop];
|
|
107
|
+
delete props[prop];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const touchDevice = useTouchDevice();
|
|
111
|
+
const children = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
112
|
+
/* @__PURE__ */ jsx(
|
|
113
|
+
"div",
|
|
114
|
+
__spreadProps(__spreadValues({
|
|
115
|
+
role: touchDevice ? "list" : "listbox",
|
|
116
|
+
"aria-live": "polite",
|
|
117
|
+
"aria-relevant": "all",
|
|
118
|
+
"aria-atomic": true,
|
|
119
|
+
"aria-labelledby": labelId,
|
|
120
|
+
"aria-orientation": orientation,
|
|
121
|
+
"aria-owns": itemIds.join(" ")
|
|
122
|
+
}, listboxProps), {
|
|
123
|
+
style: { position: "fixed" }
|
|
124
|
+
})
|
|
125
|
+
),
|
|
126
|
+
props.children
|
|
127
|
+
] });
|
|
128
|
+
props = __spreadProps(__spreadValues({}, props), {
|
|
129
|
+
children
|
|
130
|
+
});
|
|
131
|
+
return props;
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
var TagList = forwardRef(function TagList2(props) {
|
|
135
|
+
const htmlProps = useTagList(props);
|
|
136
|
+
return createElement(TagName, htmlProps);
|
|
137
|
+
});
|
|
138
|
+
export {
|
|
139
|
+
TagList,
|
|
140
|
+
useTagList
|
|
141
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { TagStoreProps } from "./tag-store.js";
|
|
3
|
+
/**
|
|
4
|
+
* Provides a tag store to [Tag](https://ariakit.org/components/tag) components.
|
|
5
|
+
* @see https://ariakit.org/components/tag
|
|
6
|
+
* @example
|
|
7
|
+
* ```jsx
|
|
8
|
+
* <TagProvider>
|
|
9
|
+
* <TagListLabel>Invitees</TagListLabel>
|
|
10
|
+
* <TagList>
|
|
11
|
+
* <TagValues>
|
|
12
|
+
* {(values) =>
|
|
13
|
+
* values.map((value) => (
|
|
14
|
+
* <Tag key={value} value={value}>
|
|
15
|
+
* {value}
|
|
16
|
+
* <TagRemove />
|
|
17
|
+
* </Tag>
|
|
18
|
+
* ))
|
|
19
|
+
* }
|
|
20
|
+
* </TagValues>
|
|
21
|
+
* <TagInput />
|
|
22
|
+
* </TagList>
|
|
23
|
+
* </TagProvider>
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function TagProvider(props?: TagProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export interface TagProviderProps extends TagStoreProps {
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useTagStore
|
|
4
|
+
} from "../__chunks/QNNHZL3W.js";
|
|
5
|
+
import {
|
|
6
|
+
TagContextProvider
|
|
7
|
+
} from "../__chunks/WYDDZRWN.js";
|
|
8
|
+
import "../__chunks/ZR5N62ZV.js";
|
|
9
|
+
import "../__chunks/LGWSZOP2.js";
|
|
10
|
+
import "../__chunks/QFI3MCMR.js";
|
|
11
|
+
import "../__chunks/6LTHW2TQ.js";
|
|
12
|
+
import "../__chunks/GUCZNEAD.js";
|
|
13
|
+
import "../__chunks/PWUXK5IM.js";
|
|
14
|
+
import "../__chunks/WOWUAP42.js";
|
|
15
|
+
import "../__chunks/XM66DUTO.js";
|
|
16
|
+
import "../__chunks/4R3V3JGP.js";
|
|
17
|
+
|
|
18
|
+
// src/tag/tag-provider.tsx
|
|
19
|
+
import { jsx } from "react/jsx-runtime";
|
|
20
|
+
function TagProvider(props = {}) {
|
|
21
|
+
const store = useTagStore(props);
|
|
22
|
+
return /* @__PURE__ */ jsx(TagContextProvider, { value: store, children: props.children });
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
TagProvider
|
|
26
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ElementType, MouseEvent } from "react";
|
|
2
|
+
import type { BooleanOrCallback } from "@ariakit/core/utils/types";
|
|
3
|
+
import type { Options, Props } from "../utils/types.js";
|
|
4
|
+
import type { TagStore } from "./tag-store.js";
|
|
5
|
+
declare const TagName = "button";
|
|
6
|
+
type TagName = typeof TagName;
|
|
7
|
+
type HTMLType = HTMLElementTagNameMap[TagName];
|
|
8
|
+
/**
|
|
9
|
+
* Returns props to create a `TagRemove` component.
|
|
10
|
+
* @see https://ariakit.org/components/tag
|
|
11
|
+
* @example
|
|
12
|
+
* ```jsx
|
|
13
|
+
* const props = useTagRemove();
|
|
14
|
+
* <Role.button {...props} />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const useTagRemove: import("../utils/types.js").Hook<"button", TagRemoveOptions<"button">>;
|
|
18
|
+
/**
|
|
19
|
+
* Renders a `Backspace` icon inside a
|
|
20
|
+
* [`Tag`](https://ariakit.org/reference/tag) component that removes the tag
|
|
21
|
+
* when clicked with a mouse.
|
|
22
|
+
* @see https://ariakit.org/components/tag
|
|
23
|
+
* @example
|
|
24
|
+
* ```jsx {9}
|
|
25
|
+
* <TagProvider>
|
|
26
|
+
* <TagListLabel>Invitees</TagListLabel>
|
|
27
|
+
* <TagList>
|
|
28
|
+
* <TagValues>
|
|
29
|
+
* {(values) =>
|
|
30
|
+
* values.map((value) => (
|
|
31
|
+
* <Tag key={value} value={value}>
|
|
32
|
+
* {value}
|
|
33
|
+
* <TagRemove />
|
|
34
|
+
* </Tag>
|
|
35
|
+
* ))
|
|
36
|
+
* }
|
|
37
|
+
* </TagValues>
|
|
38
|
+
* <TagInput />
|
|
39
|
+
* </TagList>
|
|
40
|
+
* </TagProvider>
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare const TagRemove: (props: TagRemoveProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
44
|
+
export interface TagRemoveOptions<_T extends ElementType = TagName> extends Options {
|
|
45
|
+
/**
|
|
46
|
+
* Object returned by the
|
|
47
|
+
* [`useTagStore`](https://ariakit.org/reference/use-tag-store) hook. If not
|
|
48
|
+
* provided, the closest
|
|
49
|
+
* [`TagProvider`](https://ariakit.org/reference/tag-provider) component's
|
|
50
|
+
* context will be used.
|
|
51
|
+
*/
|
|
52
|
+
store?: TagStore;
|
|
53
|
+
/**
|
|
54
|
+
* The value of the tag to remove. If not provided, the value will be inferred
|
|
55
|
+
* from the parent [`Tag`](https://ariakit.org/reference/tag) component.
|
|
56
|
+
*/
|
|
57
|
+
value?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Determines if the tag should be removed when clicked with a mouse. If a
|
|
60
|
+
* function is provided, it will be called with the click event and should
|
|
61
|
+
* return a boolean.
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
64
|
+
removeOnClick?: BooleanOrCallback<MouseEvent<HTMLType>>;
|
|
65
|
+
}
|
|
66
|
+
export type TagRemoveProps<T extends ElementType = TagName> = Props<T, TagRemoveOptions<T>>;
|
|
67
|
+
export {};
|