@wipco/sdui 1.8.3 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-H7RLEDKJ.js → chunk-35GI6LM5.js} +2 -2
- package/dist/{chunk-YJJMK5R5.js → chunk-3L4EXK3X.js} +2 -2
- package/dist/{chunk-LGKLA22B.js → chunk-3XUHKSJM.js} +1 -1
- package/dist/{chunk-KIHN7DGA.js → chunk-45GIMFRP.js} +208 -6
- package/dist/{chunk-TCHXA35K.js → chunk-5DLUGN5M.js} +2 -2
- package/dist/{chunk-TK3WS7XE.js → chunk-5N4ESLPX.js} +2 -2
- package/dist/{chunk-O3SD2HS6.js → chunk-77OM6OQG.js} +1 -1
- package/dist/{chunk-PN5IJPA5.js → chunk-7NQBV77N.js} +1 -1
- package/dist/{chunk-LONXOEZY.js → chunk-BBA7KKG4.js} +1 -1
- package/dist/{chunk-DNUO63VZ.js → chunk-BOL536MN.js} +2 -2
- package/dist/{chunk-PGAP2RLS.js → chunk-BT5P3DW6.js} +1 -1
- package/dist/{chunk-WW65XEEE.js → chunk-CBY6ACMR.js} +2 -2
- package/dist/{chunk-OI2GPBIL.js → chunk-CRSNVEUE.js} +2 -2
- package/dist/{chunk-XFNHHGFR.js → chunk-DE7FPWVJ.js} +1 -1
- package/dist/{chunk-ITFSPOOB.js → chunk-EH5QJJQE.js} +1 -1
- package/dist/{chunk-CFFSCGDV.js → chunk-FPEOYSK4.js} +3 -3
- package/dist/{chunk-UNQ6VAVD.js → chunk-FVONSLW3.js} +2 -2
- package/dist/{chunk-FXEKHHEA.js → chunk-GAABHPGR.js} +1 -1
- package/dist/{chunk-KJDHF6VU.js → chunk-HNMBEUBO.js} +1 -1
- package/dist/{chunk-YOLT2TPX.js → chunk-HR2U2QGN.js} +1 -1
- package/dist/{chunk-5JXXCRXA.js → chunk-KMNC3Q4J.js} +2 -2
- package/dist/{chunk-HAK2YXSF.js → chunk-LRDGT4T4.js} +1 -1
- package/dist/{chunk-K7K6WOIG.js → chunk-M4CZZMZJ.js} +3 -3
- package/dist/{chunk-ZDWCLHIY.js → chunk-MBROAHA6.js} +5 -5
- package/dist/{chunk-37CLBWCE.js → chunk-MLWNI4HI.js} +1 -1
- package/dist/{chunk-B6U2YWUP.js → chunk-MY7VBYHI.js} +2 -2
- package/dist/{chunk-6TWP3E2L.js → chunk-NP4VOH2M.js} +3 -3
- package/dist/{chunk-YK7ZNV2C.js → chunk-PPOQY3V5.js} +1 -1
- package/dist/{chunk-CUAGMSSG.js → chunk-Q6V7E2H5.js} +1 -1
- package/dist/{chunk-I2URQNZZ.js → chunk-QDCP6P3K.js} +9 -7
- package/dist/{chunk-DTCZPXOT.js → chunk-QHSUTI55.js} +199 -21
- package/dist/{chunk-DDX7KJAW.js → chunk-QZMMW3JC.js} +1 -1
- package/dist/{chunk-JDTVNS3H.js → chunk-S4CQTJC6.js} +1 -1
- package/dist/{chunk-JRCHWX2B.js → chunk-T5ZHEXGK.js} +1 -1
- package/dist/{chunk-3PGKBTBZ.js → chunk-TVJS5JAK.js} +2 -2
- package/dist/{chunk-QP7AQEGZ.js → chunk-VGWOOPHH.js} +3 -3
- package/dist/{chunk-ZW42VDR3.js → chunk-WIQIJDEC.js} +1 -1
- package/dist/{chunk-TQV4M3SB.js → chunk-WS3QZIYN.js} +2 -2
- package/dist/{chunk-AMKIMOTU.js → chunk-WZS7KYOS.js} +2 -2
- package/dist/{chunk-UDJVLMDH.js → chunk-YSRJPBMO.js} +2 -2
- package/dist/{chunk-KVQXQLAP.js → chunk-ZAESY6NX.js} +2 -2
- package/dist/{chunk-4SVSS7VO.js → chunk-ZSKQUIYR.js} +4 -4
- package/dist/index.d.ts +40 -5
- package/dist/index.js +16 -16
- package/dist/meta.js +59 -6
- package/dist/rich/ExcelUploadCard.js +3 -3
- package/dist/rich.js +5 -5
- package/dist/widgets/ApprovalLineEditor.js +7 -7
- package/dist/widgets/ApprovalOverridesEditor.js +9 -9
- package/dist/widgets/ApprovalStepper.js +2 -2
- package/dist/widgets/AutocompleteField.d.ts +29 -3
- package/dist/widgets/AutocompleteField.js +7 -7
- package/dist/widgets/ColumnBoard.js +2 -2
- package/dist/widgets/DiffView.js +2 -2
- package/dist/widgets/Disclosure.js +2 -2
- package/dist/widgets/EventCalendar.js +3 -3
- package/dist/widgets/FileDropzone.js +5 -5
- package/dist/widgets/ImageLightbox.js +3 -3
- package/dist/widgets/InlineEdit.js +2 -2
- package/dist/widgets/JsonField.js +2 -2
- package/dist/widgets/OptionSchemaEditor.js +3 -3
- package/dist/widgets/OptionValueFields.js +3 -3
- package/dist/widgets/OrgChart.js +2 -2
- package/dist/widgets/OrgChartBoard.js +5 -5
- package/dist/widgets/PeriodFilter.js +4 -4
- package/dist/widgets/PermissionMatrixEditor.js +3 -3
- package/dist/widgets/PositionSelect.js +3 -3
- package/dist/widgets/PrintSheet.js +2 -2
- package/dist/widgets/ProfileEditDiffCard.js +3 -3
- package/dist/widgets/QRDisplay.js +3 -3
- package/dist/widgets/RankBoard.js +4 -4
- package/dist/widgets/RoleMemberPicker.js +4 -4
- package/dist/widgets/SearchableMultiPicker.js +5 -5
- package/dist/widgets/SecureScreen.js +2 -2
- package/dist/widgets/StagePeriodEditor.js +4 -4
- package/dist/widgets/TagInput.js +2 -2
- package/dist/widgets/TagMultiSelect.js +3 -3
- package/dist/widgets/Timeline.js +3 -3
- package/dist/widgets/TreePicker.js +6 -6
- package/dist/widgets/TreeView.js +5 -5
- package/dist/widgets/index.js +71 -71
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ellipsisStyle, unwrapRows } from './chunk-
|
|
2
|
-
import { includesLooseSearch } from './chunk-
|
|
3
|
-
import { useSduiAdapter, hostFetchOf } from './chunk-
|
|
4
|
-
import { Icon,
|
|
1
|
+
import { ellipsisStyle, unwrapRows } from './chunk-HR2U2QGN.js';
|
|
2
|
+
import { includesLooseSearch } from './chunk-QDCP6P3K.js';
|
|
3
|
+
import { useSduiAdapter, hostFetchOf } from './chunk-DE7FPWVJ.js';
|
|
4
|
+
import { Icon, Input, Spinner, Button } from './chunk-45GIMFRP.js';
|
|
5
5
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
6
6
|
import { useId, useRef, useMemo, useState, useEffect } from 'react';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -32,6 +32,25 @@ function pickText(option, key) {
|
|
|
32
32
|
var statusRowStyle = {
|
|
33
33
|
padding: "var(--wp-space-2) var(--wp-space-3)"
|
|
34
34
|
};
|
|
35
|
+
function optionRowStyle(active) {
|
|
36
|
+
return {
|
|
37
|
+
display: "block",
|
|
38
|
+
width: "100%",
|
|
39
|
+
textAlign: "left",
|
|
40
|
+
padding: "var(--wp-space-2) var(--wp-space-3)",
|
|
41
|
+
border: 0,
|
|
42
|
+
borderRadius: "var(--wp-radius-sm)",
|
|
43
|
+
background: active ? "var(--wp-surface-hover)" : "transparent",
|
|
44
|
+
color: "var(--wp-text-default)",
|
|
45
|
+
font: "inherit",
|
|
46
|
+
cursor: "pointer"
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
var DEFAULT_CREATE_LABEL = '\uC9C1\uC811\uC785\uB825: "{value}"';
|
|
50
|
+
function freeTextCreateLabel(template, text) {
|
|
51
|
+
const source = typeof template === "string" && template !== "" ? template : DEFAULT_CREATE_LABEL;
|
|
52
|
+
return source.split("{value}").join(text);
|
|
53
|
+
}
|
|
35
54
|
function AutocompleteFieldImpl({
|
|
36
55
|
search,
|
|
37
56
|
endpoint,
|
|
@@ -47,7 +66,11 @@ function AutocompleteFieldImpl({
|
|
|
47
66
|
minChars = 1,
|
|
48
67
|
debounceMs = 300,
|
|
49
68
|
invalid = false,
|
|
50
|
-
disabled = false
|
|
69
|
+
disabled = false,
|
|
70
|
+
onSelect,
|
|
71
|
+
freeText = false,
|
|
72
|
+
selected,
|
|
73
|
+
createLabel
|
|
51
74
|
}) {
|
|
52
75
|
const listId = useId();
|
|
53
76
|
const hostRef = useRef(null);
|
|
@@ -69,6 +92,8 @@ function AutocompleteFieldImpl({
|
|
|
69
92
|
const [internalValue, setInternalValue] = useState("");
|
|
70
93
|
const committed = (isControlled ? value : internalValue) ?? "";
|
|
71
94
|
const hasSelection = committed !== "";
|
|
95
|
+
const cardMode = !freeText && hasSelection;
|
|
96
|
+
const freeTextValue = isControlled ? String(value ?? "") : internalValue;
|
|
72
97
|
const [picked, setPicked] = useState(null);
|
|
73
98
|
const [query, setQuery] = useState("");
|
|
74
99
|
const [open, setOpen] = useState(false);
|
|
@@ -77,6 +102,13 @@ function AutocompleteFieldImpl({
|
|
|
77
102
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
78
103
|
const [focusPending, setFocusPending] = useState(false);
|
|
79
104
|
const listRef = useRef(null);
|
|
105
|
+
const [typedSeq, setTypedSeq] = useState(0);
|
|
106
|
+
const [ownLinked, setOwnLinked] = useState(false);
|
|
107
|
+
const linked = freeText && (selected ?? ownLinked);
|
|
108
|
+
const unlinkSentRef = useRef(false);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (linked) unlinkSentRef.current = false;
|
|
111
|
+
}, [linked]);
|
|
80
112
|
useEffect(() => {
|
|
81
113
|
if (!open) return;
|
|
82
114
|
const box = listRef.current;
|
|
@@ -88,7 +120,7 @@ function AutocompleteFieldImpl({
|
|
|
88
120
|
else if (bottom > box.scrollTop + box.clientHeight) box.scrollTop = bottom - box.clientHeight;
|
|
89
121
|
}, [open, activeIndex, listId, results]);
|
|
90
122
|
useEffect(() => {
|
|
91
|
-
if (disabled ||
|
|
123
|
+
if (disabled || cardMode) return;
|
|
92
124
|
const keyword = query.trim();
|
|
93
125
|
if (keyword.length < minChars) {
|
|
94
126
|
seqRef.current += 1;
|
|
@@ -129,7 +161,7 @@ function AutocompleteFieldImpl({
|
|
|
129
161
|
clearTimeout(timer);
|
|
130
162
|
controller.abort();
|
|
131
163
|
};
|
|
132
|
-
}, [query, hasSearch, labelKey, subKey, minChars, debounceMs, disabled,
|
|
164
|
+
}, [query, typedSeq, hasSearch, labelKey, subKey, minChars, debounceMs, disabled, cardMode]);
|
|
133
165
|
useEffect(() => {
|
|
134
166
|
if (!open) return;
|
|
135
167
|
const closeOnOutsideClick = (event) => {
|
|
@@ -160,6 +192,7 @@ function AutocompleteFieldImpl({
|
|
|
160
192
|
setStatus("idle");
|
|
161
193
|
setResults([]);
|
|
162
194
|
onChange?.(nextValue, option);
|
|
195
|
+
onSelect?.(option);
|
|
163
196
|
};
|
|
164
197
|
const clearSelection = () => {
|
|
165
198
|
setPicked(null);
|
|
@@ -169,6 +202,71 @@ function AutocompleteFieldImpl({
|
|
|
169
202
|
setResults([]);
|
|
170
203
|
setFocusPending(true);
|
|
171
204
|
onChange?.(null);
|
|
205
|
+
onSelect?.(null);
|
|
206
|
+
};
|
|
207
|
+
const closeFreeList = () => {
|
|
208
|
+
setQuery("");
|
|
209
|
+
setOpen(false);
|
|
210
|
+
};
|
|
211
|
+
const typeFreeText = (text) => {
|
|
212
|
+
if (linked && !unlinkSentRef.current) {
|
|
213
|
+
unlinkSentRef.current = true;
|
|
214
|
+
setOwnLinked(false);
|
|
215
|
+
onSelect?.(null);
|
|
216
|
+
}
|
|
217
|
+
if (!isControlled) setInternalValue(text);
|
|
218
|
+
setQuery(text);
|
|
219
|
+
setTypedSeq((n) => n + 1);
|
|
220
|
+
setActiveIndex(0);
|
|
221
|
+
onChange?.(text);
|
|
222
|
+
};
|
|
223
|
+
const pickFreeOption = (option) => {
|
|
224
|
+
const label = pickText(option, labelKey) || pickText(option, valueKey);
|
|
225
|
+
if (!isControlled) setInternalValue(label);
|
|
226
|
+
unlinkSentRef.current = false;
|
|
227
|
+
setOwnLinked(true);
|
|
228
|
+
closeFreeList();
|
|
229
|
+
onChange?.(label);
|
|
230
|
+
onSelect?.(option);
|
|
231
|
+
};
|
|
232
|
+
const chooseFreeRow = (index) => {
|
|
233
|
+
const option = index > 0 && status === "ready" ? results[index - 1] : void 0;
|
|
234
|
+
if (option) {
|
|
235
|
+
pickFreeOption(option);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (linked) {
|
|
239
|
+
unlinkSentRef.current = true;
|
|
240
|
+
setOwnLinked(false);
|
|
241
|
+
onSelect?.(null);
|
|
242
|
+
}
|
|
243
|
+
closeFreeList();
|
|
244
|
+
};
|
|
245
|
+
const freeRowCount = 1 + (status === "ready" ? results.length : 0);
|
|
246
|
+
const handleFreeKeyDown = (event) => {
|
|
247
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
248
|
+
event.preventDefault();
|
|
249
|
+
if (!open) return;
|
|
250
|
+
const delta = event.key === "ArrowDown" ? 1 : -1;
|
|
251
|
+
setActiveIndex((index) => (index + delta + freeRowCount) % freeRowCount);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (event.key === "Enter") {
|
|
255
|
+
if (!open) return;
|
|
256
|
+
event.preventDefault();
|
|
257
|
+
chooseFreeRow(activeIndex);
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
if (event.key === "Tab") {
|
|
261
|
+
if (!open) return;
|
|
262
|
+
if (activeIndex > 0 && status === "ready" && results[activeIndex - 1]) {
|
|
263
|
+
pickFreeOption(results[activeIndex - 1]);
|
|
264
|
+
} else {
|
|
265
|
+
closeFreeList();
|
|
266
|
+
}
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
if (event.key === "Escape") setOpen(false);
|
|
172
270
|
};
|
|
173
271
|
const handleKeyDown = (event) => {
|
|
174
272
|
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
@@ -197,7 +295,98 @@ function AutocompleteFieldImpl({
|
|
|
197
295
|
const cardOption = pickedMatches ? picked : staticMatch;
|
|
198
296
|
const cardLabel = (pickedMatches ? pickText(picked, labelKey) : "") || selectedLabel || (cardOption ? pickText(cardOption, labelKey) : "") || committed;
|
|
199
297
|
const cardSub = cardOption ? pickText(cardOption, subKey) : "";
|
|
200
|
-
if (
|
|
298
|
+
if (freeText) {
|
|
299
|
+
const createText = freeTextCreateLabel(createLabel, freeTextValue);
|
|
300
|
+
return /* @__PURE__ */ jsxs("div", { ref: hostRef, className: "erp-popover-host", children: [
|
|
301
|
+
/* @__PURE__ */ jsxs("div", { className: "wp-inputwrap wp-inputwrap--lead", children: [
|
|
302
|
+
/* @__PURE__ */ jsx(
|
|
303
|
+
"span",
|
|
304
|
+
{
|
|
305
|
+
className: "wp-inputwrap__lead",
|
|
306
|
+
style: linked ? { color: "var(--wp-text-success)" } : void 0,
|
|
307
|
+
children: /* @__PURE__ */ jsx(Icon, { name: linked ? "circle-check" : "search", size: 15, title: linked ? "\uC120\uD0DD\uB428" : void 0 })
|
|
308
|
+
}
|
|
309
|
+
),
|
|
310
|
+
/* @__PURE__ */ jsx(
|
|
311
|
+
Input,
|
|
312
|
+
{
|
|
313
|
+
role: "combobox",
|
|
314
|
+
"aria-expanded": open,
|
|
315
|
+
"aria-controls": listId,
|
|
316
|
+
"aria-autocomplete": "list",
|
|
317
|
+
"aria-activedescendant": open ? `${listId}-opt-${activeIndex}` : void 0,
|
|
318
|
+
autoComplete: "off",
|
|
319
|
+
invalid,
|
|
320
|
+
disabled,
|
|
321
|
+
placeholder,
|
|
322
|
+
value: freeTextValue,
|
|
323
|
+
onChange: (event) => typeFreeText(event.target.value),
|
|
324
|
+
onKeyDown: handleFreeKeyDown
|
|
325
|
+
}
|
|
326
|
+
)
|
|
327
|
+
] }),
|
|
328
|
+
open ? /* @__PURE__ */ jsx("div", { className: "erp-popover erp-popover--left", style: { width: "100%" }, children: /* @__PURE__ */ jsxs(
|
|
329
|
+
"div",
|
|
330
|
+
{
|
|
331
|
+
id: listId,
|
|
332
|
+
ref: listRef,
|
|
333
|
+
role: "listbox",
|
|
334
|
+
className: "erp-popover__body",
|
|
335
|
+
style: {
|
|
336
|
+
maxHeight: 280,
|
|
337
|
+
overflowY: "auto",
|
|
338
|
+
overscrollBehavior: "contain",
|
|
339
|
+
padding: "var(--wp-space-1)"
|
|
340
|
+
},
|
|
341
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
342
|
+
children: [
|
|
343
|
+
/* @__PURE__ */ jsx(
|
|
344
|
+
"button",
|
|
345
|
+
{
|
|
346
|
+
id: `${listId}-opt-0`,
|
|
347
|
+
type: "button",
|
|
348
|
+
role: "option",
|
|
349
|
+
"aria-selected": activeIndex === 0,
|
|
350
|
+
"data-create-row": "",
|
|
351
|
+
onClick: () => chooseFreeRow(0),
|
|
352
|
+
onPointerEnter: () => setActiveIndex(0),
|
|
353
|
+
style: optionRowStyle(activeIndex === 0),
|
|
354
|
+
children: /* @__PURE__ */ jsx("span", { className: "wp-body-sm", style: ellipsisStyle, children: createText })
|
|
355
|
+
}
|
|
356
|
+
),
|
|
357
|
+
status === "loading" ? /* @__PURE__ */ jsx("div", { className: "wp-row", style: statusRowStyle, children: /* @__PURE__ */ jsx(Spinner, { size: "sm", label: "\uAC80\uC0C9 \uC911\u2026" }) }) : status === "offline" ? /* @__PURE__ */ jsxs("div", { className: "wp-row", style: statusRowStyle, children: [
|
|
358
|
+
/* @__PURE__ */ jsx(Icon, { name: "unplug", size: 16, style: { color: "var(--wp-text-muted)", flex: "none" } }),
|
|
359
|
+
/* @__PURE__ */ jsx("span", { className: "wp-caption", children: "\uBC31\uC5D4\uB4DC \uBBF8\uC5F0\uB3D9 \u2014 \uAC80\uC0C9 \uACB0\uACFC\uB97C \uBD88\uB7EC\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4" })
|
|
360
|
+
] }) : status === "error" ? /* @__PURE__ */ jsxs("div", { className: "wp-row", style: statusRowStyle, children: [
|
|
361
|
+
/* @__PURE__ */ jsx(Icon, { name: "circle-alert", size: 16, style: { color: "var(--wp-text-danger)", flex: "none" } }),
|
|
362
|
+
/* @__PURE__ */ jsx("span", { className: "wp-caption", children: "\uAC80\uC0C9 \uC2E4\uD328 \u2014 \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694" })
|
|
363
|
+
] }) : status === "ready" && results.length === 0 ? /* @__PURE__ */ jsx("div", { className: "wp-caption", style: { ...statusRowStyle, color: "var(--wp-text-subtle)" }, children: "\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9 \uC5C6\uC74C" }) : status === "ready" ? results.map((option, index) => {
|
|
364
|
+
const row = index + 1;
|
|
365
|
+
const optionSub = pickText(option, subKey);
|
|
366
|
+
return /* @__PURE__ */ jsxs(
|
|
367
|
+
"button",
|
|
368
|
+
{
|
|
369
|
+
id: `${listId}-opt-${row}`,
|
|
370
|
+
type: "button",
|
|
371
|
+
role: "option",
|
|
372
|
+
"aria-selected": row === activeIndex,
|
|
373
|
+
onClick: () => chooseFreeRow(row),
|
|
374
|
+
onPointerEnter: () => setActiveIndex(row),
|
|
375
|
+
style: optionRowStyle(row === activeIndex),
|
|
376
|
+
children: [
|
|
377
|
+
/* @__PURE__ */ jsx("span", { className: "wp-body-sm", style: ellipsisStyle, children: pickText(option, labelKey) || pickText(option, valueKey) }),
|
|
378
|
+
optionSub ? /* @__PURE__ */ jsx("span", { className: "wp-caption", style: ellipsisStyle, children: optionSub }) : null
|
|
379
|
+
]
|
|
380
|
+
},
|
|
381
|
+
`${pickText(option, valueKey)}-${index}`
|
|
382
|
+
);
|
|
383
|
+
}) : null
|
|
384
|
+
]
|
|
385
|
+
}
|
|
386
|
+
) }) : null
|
|
387
|
+
] });
|
|
388
|
+
}
|
|
389
|
+
if (cardMode) {
|
|
201
390
|
return /* @__PURE__ */ jsxs(
|
|
202
391
|
"div",
|
|
203
392
|
{
|
|
@@ -282,18 +471,7 @@ function AutocompleteFieldImpl({
|
|
|
282
471
|
"aria-selected": index === activeIndex,
|
|
283
472
|
onClick: () => selectOption(option),
|
|
284
473
|
onPointerEnter: () => setActiveIndex(index),
|
|
285
|
-
style:
|
|
286
|
-
display: "block",
|
|
287
|
-
width: "100%",
|
|
288
|
-
textAlign: "left",
|
|
289
|
-
padding: "var(--wp-space-2) var(--wp-space-3)",
|
|
290
|
-
border: 0,
|
|
291
|
-
borderRadius: "var(--wp-radius-sm)",
|
|
292
|
-
background: index === activeIndex ? "var(--wp-surface-hover)" : "transparent",
|
|
293
|
-
color: "var(--wp-text-default)",
|
|
294
|
-
font: "inherit",
|
|
295
|
-
cursor: "pointer"
|
|
296
|
-
},
|
|
474
|
+
style: optionRowStyle(index === activeIndex),
|
|
297
475
|
children: [
|
|
298
476
|
/* @__PURE__ */ jsx("span", { className: "wp-body-sm", style: ellipsisStyle, children: pickText(option, labelKey) || pickText(option, valueKey) }),
|
|
299
477
|
optionSub ? /* @__PURE__ */ jsx("span", { className: "wp-caption", style: ellipsisStyle, children: optionSub }) : null
|
|
@@ -308,4 +486,4 @@ function AutocompleteFieldImpl({
|
|
|
308
486
|
}
|
|
309
487
|
var AutocompleteField = boxed(AutocompleteFieldImpl, "AutocompleteField");
|
|
310
488
|
|
|
311
|
-
export { AutocompleteField, endpointSearchFn, toAutocompleteOptions };
|
|
489
|
+
export { AutocompleteField, endpointSearchFn, freeTextCreateLabel, toAutocompleteOptions };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DatePicker, TimePicker } from './chunk-
|
|
2
|
-
import { Field } from './chunk-
|
|
1
|
+
import { DatePicker, TimePicker } from './chunk-KMNC3Q4J.js';
|
|
2
|
+
import { Field } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useState, useRef, useEffect, useMemo } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { fetchAllPages } from './chunk-
|
|
2
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
3
|
-
import { Alert, Badge, Spinner, Button, Input, Checkbox } from './chunk-
|
|
1
|
+
import { fetchAllPages } from './chunk-HR2U2QGN.js';
|
|
2
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
3
|
+
import { Alert, Badge, Spinner, Button, Input, Checkbox } from './chunk-45GIMFRP.js';
|
|
4
4
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
5
5
|
import { useRef, useMemo, useState, useCallback, useEffect } from 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
2
|
-
import { Tag } from './chunk-
|
|
2
|
+
import { Tag } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useState, useMemo, useRef, useEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useSduiAssetResolver } from './chunk-
|
|
2
|
-
import { Spinner, Icon } from './chunk-
|
|
1
|
+
import { useSduiAssetResolver } from './chunk-DE7FPWVJ.js';
|
|
2
|
+
import { Spinner, Icon } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useState, useEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Text } from './chunk-
|
|
2
|
-
import { Field, Input, Select, IconButton, Button } from './chunk-
|
|
1
|
+
import { Text } from './chunk-PPOQY3V5.js';
|
|
2
|
+
import { Field, Input, Select, IconButton, Button } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { resolveTreeNodes, TreeView } from './chunk-
|
|
1
|
+
import { resolveTreeNodes, TreeView } from './chunk-CRSNVEUE.js';
|
|
2
2
|
import { OverlayLayer } from './chunk-R2ORCOTG.js';
|
|
3
|
-
import { Field, Dialog, Icon, Button, Input } from './chunk-
|
|
3
|
+
import { Field, Dialog, Icon, Button, Input } from './chunk-45GIMFRP.js';
|
|
4
4
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
5
5
|
import { useState, useMemo } from 'react';
|
|
6
6
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useDismiss, usePopoverAnchor, usePanelPointer, usePortalTo, CalendarNav, KO_CALENDAR_NAV_LOCALE, CalendarZoom, anchorStyle, AnchoredPopoverStyles } from './chunk-
|
|
1
|
+
import { useDismiss, usePopoverAnchor, usePanelPointer, usePortalTo, CalendarNav, KO_CALENDAR_NAV_LOCALE, CalendarZoom, anchorStyle, AnchoredPopoverStyles } from './chunk-HNMBEUBO.js';
|
|
2
2
|
import { tabbablesIn } from './chunk-R2ORCOTG.js';
|
|
3
3
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
4
4
|
import { useIsMobile } from './chunk-TAVKGYH5.js';
|
|
5
|
-
import { SegmentedControl, Button, Tag, EmptyState, Icon, Badge } from './chunk-
|
|
5
|
+
import { SegmentedControl, Button, Tag, EmptyState, Icon, Badge } from './chunk-45GIMFRP.js';
|
|
6
6
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
7
7
|
import { useState, useMemo, useRef, useCallback } from 'react';
|
|
8
8
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { orderCircleStyle, ellipsisStyle, unwrapRows, uid } from './chunk-
|
|
2
|
-
import { includesLooseSearch } from './chunk-
|
|
3
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
4
|
-
import { Icon, Badge, IconButton, Field, Select, Input, Tag, Spinner, Button, isPlainObject } from './chunk-
|
|
1
|
+
import { orderCircleStyle, ellipsisStyle, unwrapRows, uid } from './chunk-HR2U2QGN.js';
|
|
2
|
+
import { includesLooseSearch } from './chunk-QDCP6P3K.js';
|
|
3
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
4
|
+
import { Icon, Badge, IconButton, Field, Select, Input, Tag, Spinner, Button, isPlainObject } from './chunk-45GIMFRP.js';
|
|
5
5
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
6
6
|
import React, { useState, useId, useRef, useEffect } from 'react';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
package/dist/index.d.ts
CHANGED
|
@@ -351,7 +351,7 @@ interface IconButtonProps extends React__default.ButtonHTMLAttributes<HTMLButton
|
|
|
351
351
|
disabled?: boolean;
|
|
352
352
|
}
|
|
353
353
|
declare function IconButton({ icon, label, size, tone, variant, pressed, disabled, className, type, ...rest }: IconButtonProps): React__default.JSX.Element;
|
|
354
|
-
interface
|
|
354
|
+
interface InputBaseProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'size' | 'onChange'> {
|
|
355
355
|
/** sm 28 · md 32(기본) · lg 40 px */
|
|
356
356
|
size?: 'sm' | 'md' | 'lg';
|
|
357
357
|
/** 선행 아이콘 이름 (예: "search") */
|
|
@@ -364,12 +364,47 @@ interface InputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputEl
|
|
|
364
364
|
* 입력 오른쪽 끝에 겹쳐 그리는 후행 표시.
|
|
365
365
|
*
|
|
366
366
|
* **문자열은 아이콘 이름으로 읽는다** — `trailing="eye"`(비밀번호 보기)가 원래 용례다.
|
|
367
|
-
* 등록되지 않은 이름이면 Icon이 null을 내므로 자리만 남는다. 단위 글자("원", "mm")
|
|
368
|
-
*
|
|
367
|
+
* 등록되지 않은 이름이면 Icon이 null을 내므로 자리만 남는다. 단위 글자("원", "mm")는
|
|
368
|
+
* `unit` 으로 준다(1.9.0) — 스펙은 노드를 넘길 수 없으니 그쪽이 유일한 글자 통로다.
|
|
369
|
+
* `unit` 과 함께 오면 `unit` 이 자리를 차지하고 이쪽은 무시된다(경고 한 번).
|
|
369
370
|
*/
|
|
370
371
|
trailing?: React__default.ReactNode;
|
|
372
|
+
/**
|
|
373
|
+
* 입력 오른쪽 끝의 **글자** 단위 — "원", "%", "km"(1.9.0).
|
|
374
|
+
*
|
|
375
|
+
* `trailing` 은 문자열을 아이콘 이름으로 읽어서 `trailing:"원"` 이라 쓴 스펙은 아무것도 그리지 않았다.
|
|
376
|
+
* 같은 `.wp-inputwrap__trail` 자리에 글자로 그리고, 값이 단위 밑으로 들어가지 않게 입력의 오른쪽 안쪽
|
|
377
|
+
* 여백을 단위 길이만큼 인라인으로 준다(스펙의 `style.paddingRight` 가 있으면 그쪽이 이긴다).
|
|
378
|
+
* 새 CSS 클래스를 쓰지 않는다 — 자체 미러 CSS 를 둔 소비 앱(ERP)도 옮길 규칙이 없다.
|
|
379
|
+
*/
|
|
380
|
+
unit?: string;
|
|
381
|
+
}
|
|
382
|
+
/** `thousands` 를 켜지 않은 칸 — onChange 는 예전 그대로 DOM 이벤트를 받는다. */
|
|
383
|
+
interface InputTextProps extends InputBaseProps {
|
|
384
|
+
thousands?: false;
|
|
385
|
+
onChange?: React__default.ChangeEventHandler<HTMLInputElement>;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* `thousands` 칸 — 3자리마다 쉼표를 그어 보이고, onChange 는 **이벤트가 아니라 값**을 받는다:
|
|
389
|
+
* 숫자, 또는 비었거나 미완성(`-`)이면 null. 렌더러의 `fromEvent`·`{"$event":true}` 는 이벤트가 아닌 인자를
|
|
390
|
+
* 그대로 넘기므로(SduiRenderer `eventValue`) 스펙은 그대로 숫자를 받는다.
|
|
391
|
+
*/
|
|
392
|
+
interface InputThousandsProps extends InputBaseProps {
|
|
393
|
+
/**
|
|
394
|
+
* 3자리마다 쉼표(1.9.0). 켜면 `type` 과 무관하게 `<input type="text" inputMode="decimal">` 로 그린다
|
|
395
|
+
* (number 칸은 쉼표를 값으로 받지 못한다 — number-text.ts 머리 주석). `min`·`max`·`step` 은 글자 칸에서
|
|
396
|
+
* 뜻이 없어 DOM 에 내리지 않는다. 소수는 그대로 받는다(반올림하지 않는다).
|
|
397
|
+
*/
|
|
398
|
+
thousands: true;
|
|
399
|
+
onChange?: (value: number | null) => void;
|
|
371
400
|
}
|
|
372
|
-
|
|
401
|
+
/**
|
|
402
|
+
* 판별 합집합으로 둔 까닭: onChange 의 인자가 `thousands` 에 따라 다르다. 하나의 함수 합집합으로 두면
|
|
403
|
+
* `onChange={(e) => …}` 처럼 타입을 안 적은 기존 호출부(편집기에 여럿)가 매개변수 타입을 잃는다 —
|
|
404
|
+
* `thousands` 가 없거나 false 면 예전 타입으로 좁혀진다.
|
|
405
|
+
*/
|
|
406
|
+
type InputProps = InputTextProps | InputThousandsProps;
|
|
407
|
+
declare function Input(props: InputProps): React__default.JSX.Element;
|
|
373
408
|
interface TextareaProps extends React__default.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
374
409
|
invalid?: boolean;
|
|
375
410
|
rows?: number;
|
|
@@ -2540,4 +2575,4 @@ interface ImageViewerProps {
|
|
|
2540
2575
|
*/
|
|
2541
2576
|
declare function ImageViewer({ src, alt, open, onClose }: ImageViewerProps): React__default.ReactPortal | null;
|
|
2542
2577
|
|
|
2543
|
-
export { Actions, type ActionsProps, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, CALC_OPS, Can, type CanProps, Card, type CardProps, type CascadingSearchOption, Checkbox, type CheckboxProps, Col, type ColProps, type CustomActionHandler, type CustomValidator, DatePickerProps, DateRangePickerProps, Dialog, type DialogProps, Divider, EmptyState, type EmptyStateProps, Field, type FieldProps, Grid, type GridCardConfig, type GridCardRow, type GridProps, ICON_NAMES, Icon, IconButton, type IconButtonProps, type IconProps, ImageViewer, type ImageViewerProps, Input, type InputProps, type Justify, type KeyValueItem, KeyValueList, type KeyValueListProps, MOBILE_MEDIA_QUERY, type MeterTone, NodeErrorBoundary, ORDER_PARAM, OverlayContainerContext, OverlayLayer, PageHead, type PageHeadProps, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, type RemotePageState, RemoteSearchResults, type RemoteSearchResultsProps, type RemoteSummaryState, type ResolvedPatternSpec, ResultEmptyState, type ResultEmptyStateProps, ResultTable, type ResultTableColumn, type ResultTableProps, Row, type RowProps, SORT_PARAM, SduiAction, type SduiAdapter, type SduiAssetContext, type SduiAssetResolver, type SduiBadgeCell, SduiBoxProps, type SduiCanFn, type SduiCanQuery, type SduiCanSetting, type SduiCell, SduiColumnsScale, SduiContainerLayoutProps, type SduiContainerRoleProps, type SduiDateCell, type SduiDateFormat, SduiDialog, type SduiDispatch, type SduiDisplayFormat, SduiForm, type SduiFormConfig, type SduiFormProps, SduiGapScale, type SduiGridCard, type SduiGridCardAction, type SduiGridCardRow, type SduiIconCell, type SduiImageCell, type SduiLinkCell, type SduiNumberCell, SduiPage, SduiPermissionProvider, type SduiProgressCell, SduiPropValue, type SduiRegistry, SduiRenderer, type SduiRendererProps, type SduiRowCondition, SduiRule, type SduiRuntime, type SduiSearchAction, type SduiSearchColumn, SduiSearchDataProvider, SduiSearchInvalidationProvider, SduiSearchResults, type SduiSearchResultsProps, type SduiSearchSummary, type SduiSearchSummaryItem, type SduiTagCell, SduiTextAlignScale, type SduiTextCell, type SduiUseSpec, SduiWeightScale, type SearchAction, type SearchColumn, type SearchFetcher, type SearchField, type SearchFilter, type SearchInvalidator, type SearchOption, type SearchPage, SearchResults, type SearchResultsProps, type SearchRow, SearchSummaryCards, type SearchSummaryCardsProps, type SearchTabs, SearchToolbar, type SearchValues, type SearchViewItem, Section, type SectionProps, SegmentedControl, type SegmentedControlProps, type SegmentedItem, Select, type SelectOption, type SelectOptionRecord, type SelectProps, type ServerSortMemory, type ServerUnsortable, Show, type ShowProps, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SidebarNavSection, type SortDir, type SortEcho, SortHandle, type SortHandleProps, type SortState, SortableList, type SortableListProps, Spacer, type SpacerProps, type SpecIdCandidate, type SpecIssue, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextPreset, type TextProps, Textarea, type TextareaProps, TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, boxed, cascadingValuePaths, cellRenderer, cleanSearchValues, conditionParams, createRegistry, createSearchInvalidator, createServerSortMemory, defaultAdapter, defaultRegistry, formatDateValue, formatDisplayValue, formatNumberValue, getOverlayRoot, imageRenderer, includesLooseSearch, isValidSpecId, isZonedIsoDateTime, joinMultiValue, loadOptionalModule, mapActions, mapCardRows, mapColumns, mapGridCard, mapViews, matchesCondition, nextSort, normalizePageSizes, normalizeSearchText, parseNumeric, patternSpecCandidates, resolvePatternSpec, searchFieldKeys, searchValuesFromParams, serverSortMemory, sortEchoOf, sortFromParams, sortableDropIndex, sortableMove, splitMultiValue, summaryParams, useAnyModalOpen, useIsMobile, useOverlayLayer, useRemoteSearchPage, useRemoteSearchSummary, useSduiAssetResolver, useSduiCan, useSduiDispatch, useSduiRuntime, useSduiSandbox, useSearchFetcher, validateSpec, withProps, withoutSort };
|
|
2578
|
+
export { Actions, type ActionsProps, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, CALC_OPS, Can, type CanProps, Card, type CardProps, type CascadingSearchOption, Checkbox, type CheckboxProps, Col, type ColProps, type CustomActionHandler, type CustomValidator, DatePickerProps, DateRangePickerProps, Dialog, type DialogProps, Divider, EmptyState, type EmptyStateProps, Field, type FieldProps, Grid, type GridCardConfig, type GridCardRow, type GridProps, ICON_NAMES, Icon, IconButton, type IconButtonProps, type IconProps, ImageViewer, type ImageViewerProps, Input, type InputBaseProps, type InputProps, type InputTextProps, type InputThousandsProps, type Justify, type KeyValueItem, KeyValueList, type KeyValueListProps, MOBILE_MEDIA_QUERY, type MeterTone, NodeErrorBoundary, ORDER_PARAM, OverlayContainerContext, OverlayLayer, PageHead, type PageHeadProps, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, type RemotePageState, RemoteSearchResults, type RemoteSearchResultsProps, type RemoteSummaryState, type ResolvedPatternSpec, ResultEmptyState, type ResultEmptyStateProps, ResultTable, type ResultTableColumn, type ResultTableProps, Row, type RowProps, SORT_PARAM, SduiAction, type SduiAdapter, type SduiAssetContext, type SduiAssetResolver, type SduiBadgeCell, SduiBoxProps, type SduiCanFn, type SduiCanQuery, type SduiCanSetting, type SduiCell, SduiColumnsScale, SduiContainerLayoutProps, type SduiContainerRoleProps, type SduiDateCell, type SduiDateFormat, SduiDialog, type SduiDispatch, type SduiDisplayFormat, SduiForm, type SduiFormConfig, type SduiFormProps, SduiGapScale, type SduiGridCard, type SduiGridCardAction, type SduiGridCardRow, type SduiIconCell, type SduiImageCell, type SduiLinkCell, type SduiNumberCell, SduiPage, SduiPermissionProvider, type SduiProgressCell, SduiPropValue, type SduiRegistry, SduiRenderer, type SduiRendererProps, type SduiRowCondition, SduiRule, type SduiRuntime, type SduiSearchAction, type SduiSearchColumn, SduiSearchDataProvider, SduiSearchInvalidationProvider, SduiSearchResults, type SduiSearchResultsProps, type SduiSearchSummary, type SduiSearchSummaryItem, type SduiTagCell, SduiTextAlignScale, type SduiTextCell, type SduiUseSpec, SduiWeightScale, type SearchAction, type SearchColumn, type SearchFetcher, type SearchField, type SearchFilter, type SearchInvalidator, type SearchOption, type SearchPage, SearchResults, type SearchResultsProps, type SearchRow, SearchSummaryCards, type SearchSummaryCardsProps, type SearchTabs, SearchToolbar, type SearchValues, type SearchViewItem, Section, type SectionProps, SegmentedControl, type SegmentedControlProps, type SegmentedItem, Select, type SelectOption, type SelectOptionRecord, type SelectProps, type ServerSortMemory, type ServerUnsortable, Show, type ShowProps, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SidebarNavSection, type SortDir, type SortEcho, SortHandle, type SortHandleProps, type SortState, SortableList, type SortableListProps, Spacer, type SpacerProps, type SpecIdCandidate, type SpecIssue, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextPreset, type TextProps, Textarea, type TextareaProps, TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, boxed, cascadingValuePaths, cellRenderer, cleanSearchValues, conditionParams, createRegistry, createSearchInvalidator, createServerSortMemory, defaultAdapter, defaultRegistry, formatDateValue, formatDisplayValue, formatNumberValue, getOverlayRoot, imageRenderer, includesLooseSearch, isValidSpecId, isZonedIsoDateTime, joinMultiValue, loadOptionalModule, mapActions, mapCardRows, mapColumns, mapGridCard, mapViews, matchesCondition, nextSort, normalizePageSizes, normalizeSearchText, parseNumeric, patternSpecCandidates, resolvePatternSpec, searchFieldKeys, searchValuesFromParams, serverSortMemory, sortEchoOf, sortFromParams, sortableDropIndex, sortableMove, splitMultiValue, summaryParams, useAnyModalOpen, useIsMobile, useOverlayLayer, useRemoteSearchPage, useRemoteSearchSummary, useSduiAssetResolver, useSduiCan, useSduiDispatch, useSduiRuntime, useSduiSandbox, useSearchFetcher, validateSpec, withProps, withoutSort };
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
export { loadOptionalModule } from './chunk-
|
|
2
|
-
import { useSduiDispatch, SduiDialog, useSduiCan, useSduiRuntime, SduiDirtyRegistryContext, SduiLeaveRegistryContext, SduiFormScopeContext, SduiDispatchContext, SduiRuntimeContext, SduiPermissionProvider } from './chunk-
|
|
3
|
-
export { SduiDialog, SduiPermissionProvider, useSduiCan, useSduiDispatch, useSduiRuntime } from './chunk-
|
|
4
|
-
import { Text, Spacer, Show, Section, Row, PageHead, KeyValueList, Grid, Divider, Col, Actions } from './chunk-
|
|
5
|
-
export { Actions, Col, Divider, Grid, KeyValueList, PageHead, Row, Section, Show, Spacer, Text } from './chunk-
|
|
6
|
-
import { ImageViewer } from './chunk-
|
|
7
|
-
export { ImageViewer } from './chunk-
|
|
8
|
-
import { normalizeSearchFields, searchValuesFromParams, splitMultiValue, includesLooseSearch, cascadingValuePaths, SearchToolbar, searchFieldKeys, Popover } from './chunk-
|
|
9
|
-
export { SearchToolbar, cascadingValuePaths, cleanSearchValues, includesLooseSearch, joinMultiValue, normalizeSearchText, searchFieldKeys, searchValuesFromParams, splitMultiValue } from './chunk-
|
|
10
|
-
import { parseYmd, YMD_RE, TimePicker, DateRangePicker, DatePicker } from './chunk-
|
|
11
|
-
export { DatePicker, DateRangePicker, TimePicker } from './chunk-
|
|
12
|
-
import './chunk-
|
|
1
|
+
export { loadOptionalModule } from './chunk-T5ZHEXGK.js';
|
|
2
|
+
import { useSduiDispatch, SduiDialog, useSduiCan, useSduiRuntime, SduiDirtyRegistryContext, SduiLeaveRegistryContext, SduiFormScopeContext, SduiDispatchContext, SduiRuntimeContext, SduiPermissionProvider } from './chunk-77OM6OQG.js';
|
|
3
|
+
export { SduiDialog, SduiPermissionProvider, useSduiCan, useSduiDispatch, useSduiRuntime } from './chunk-77OM6OQG.js';
|
|
4
|
+
import { Text, Spacer, Show, Section, Row, PageHead, KeyValueList, Grid, Divider, Col, Actions } from './chunk-PPOQY3V5.js';
|
|
5
|
+
export { Actions, Col, Divider, Grid, KeyValueList, PageHead, Row, Section, Show, Spacer, Text } from './chunk-PPOQY3V5.js';
|
|
6
|
+
import { ImageViewer } from './chunk-7NQBV77N.js';
|
|
7
|
+
export { ImageViewer } from './chunk-7NQBV77N.js';
|
|
8
|
+
import { normalizeSearchFields, searchValuesFromParams, splitMultiValue, includesLooseSearch, cascadingValuePaths, SearchToolbar, searchFieldKeys, Popover } from './chunk-QDCP6P3K.js';
|
|
9
|
+
export { SearchToolbar, cascadingValuePaths, cleanSearchValues, includesLooseSearch, joinMultiValue, normalizeSearchText, searchFieldKeys, searchValuesFromParams, splitMultiValue } from './chunk-QDCP6P3K.js';
|
|
10
|
+
import { parseYmd, YMD_RE, TimePicker, DateRangePicker, DatePicker } from './chunk-KMNC3Q4J.js';
|
|
11
|
+
export { DatePicker, DateRangePicker, TimePicker } from './chunk-KMNC3Q4J.js';
|
|
12
|
+
import './chunk-HNMBEUBO.js';
|
|
13
13
|
import { OverlayContainerContext, OverlayLayer, useAnyModalOpen } from './chunk-R2ORCOTG.js';
|
|
14
14
|
export { OverlayContainerContext, OverlayLayer, getOverlayRoot, useAnyModalOpen, useOverlayLayer } from './chunk-R2ORCOTG.js';
|
|
15
15
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
16
|
-
import { useSduiAdapter, hostFetchOf, isSafeNavigationTarget, useSduiSandbox, resolveAdapter, assetResolverOf, SduiAdapterContext } from './chunk-
|
|
17
|
-
export { defaultAdapter, useSduiAssetResolver, useSduiSandbox } from './chunk-
|
|
16
|
+
import { useSduiAdapter, hostFetchOf, isSafeNavigationTarget, useSduiSandbox, resolveAdapter, assetResolverOf, SduiAdapterContext } from './chunk-DE7FPWVJ.js';
|
|
17
|
+
export { defaultAdapter, useSduiAssetResolver, useSduiSandbox } from './chunk-DE7FPWVJ.js';
|
|
18
18
|
import { DEV, useIsMobile } from './chunk-TAVKGYH5.js';
|
|
19
19
|
export { MOBILE_MEDIA_QUERY, useIsMobile } from './chunk-TAVKGYH5.js';
|
|
20
|
-
import { EmptyState, Button, Checkbox, Select, Tabs, SegmentedControl, Spinner, Pagination, fieldOf, StatCard, isZonedIsoDateTime, formatDateValue, Icon, Card, Badge, ProgressBar, Tag, Toast, Textarea, Table, Switch, Input, IconButton, Field, Alert, warnOnce, isPlainObject, CALC_OPS, evaluateCalc, Dialog, ICON_NODES, toNumber } from './chunk-
|
|
21
|
-
export { Alert, Avatar, Badge, Breadcrumb, Button, CALC_OPS, Card, Checkbox, Dialog, EmptyState, Field, Icon, IconButton, Input, Pagination, ProgressBar, Radio, SegmentedControl, Select, SidebarNav, Spinner, StatCard, Switch, Table, Tabs, Tag, Textarea, Toast, Tooltip, formatDateValue, formatDisplayValue, formatNumberValue, isZonedIsoDateTime, parseNumeric } from './chunk-
|
|
20
|
+
import { EmptyState, Button, Checkbox, Select, Tabs, SegmentedControl, Spinner, Pagination, fieldOf, StatCard, isZonedIsoDateTime, formatDateValue, Icon, Card, Badge, ProgressBar, Tag, Toast, Textarea, Table, Switch, Input, IconButton, Field, Alert, warnOnce, isPlainObject, CALC_OPS, evaluateCalc, Dialog, ICON_NODES, toNumber } from './chunk-45GIMFRP.js';
|
|
21
|
+
export { Alert, Avatar, Badge, Breadcrumb, Button, CALC_OPS, Card, Checkbox, Dialog, EmptyState, Field, Icon, IconButton, Input, Pagination, ProgressBar, Radio, SegmentedControl, Select, SidebarNav, Spinner, StatCard, Switch, Table, Tabs, Tag, Textarea, Toast, Tooltip, formatDateValue, formatDisplayValue, formatNumberValue, isZonedIsoDateTime, parseNumeric } from './chunk-45GIMFRP.js';
|
|
22
22
|
import { boxed, LAYOUT_CSS, childLayoutFrom, CHILD_LAYOUT_PROPS } from './chunk-3JTBOABA.js';
|
|
23
23
|
export { CHILD_LAYOUT_PROPS, LAYOUT_CSS, boxed, childLayoutFrom, columnsClass, containerLayoutStyle, joinClass, mergeStyle, typographyStyle } from './chunk-3JTBOABA.js';
|
|
24
24
|
import React9, { createContext, useState, useMemo, useEffect, useRef, useContext, useCallback, useSyncExternalStore } from 'react';
|
package/dist/meta.js
CHANGED
|
@@ -1414,15 +1414,37 @@ var InputMeta = {
|
|
|
1414
1414
|
icon: "pencil",
|
|
1415
1415
|
description: "\uD55C \uC904 \uC785\uB825. \uB098\uBA38\uC9C0 \uD504\uB86D\uC740 <input>\uC5D0 \uADF8\uB300\uB85C \uC804\uB2EC\uB41C\uB2E4.",
|
|
1416
1416
|
props: [
|
|
1417
|
-
{
|
|
1417
|
+
{
|
|
1418
|
+
name: "value",
|
|
1419
|
+
kind: "string",
|
|
1420
|
+
label: "\uAC12",
|
|
1421
|
+
bindable: true,
|
|
1422
|
+
description: "thousands \uCE78\uC740 \uC22B\uC790\xB7\uC22B\uC790 \uAE00\uC790\uB97C \uBC1B\uC544 \uC27C\uD45C\uB97C \uADF8\uC5B4 \uBCF4\uC778\uB2E4.",
|
|
1423
|
+
group: "data"
|
|
1424
|
+
},
|
|
1418
1425
|
{
|
|
1419
1426
|
name: "onChange",
|
|
1420
1427
|
kind: "action",
|
|
1421
1428
|
label: "\uBCC0\uACBD",
|
|
1422
|
-
eventArg:
|
|
1429
|
+
eventArg: '\uC785\uB825 \uAC12(\uBB38\uC790\uC5F4). type=number \uBA74 \uC22B\uC790(\uBE44\uC6B0\uBA74 null), thousands \uBA74 \uC22B\uC790(\uBE44\uC5C8\uAC70\uB098 "-" \uCC98\uB7FC \uBBF8\uC644\uC131\uC774\uBA74 null)',
|
|
1423
1430
|
description: '{ "action": "setState", "key": "\uD3FCid.\uD544\uB4DC", "fromEvent": true }',
|
|
1424
1431
|
group: "behavior"
|
|
1425
1432
|
},
|
|
1433
|
+
{
|
|
1434
|
+
name: "thousands",
|
|
1435
|
+
kind: "boolean",
|
|
1436
|
+
label: "\uCC9C \uB2E8\uC704 \uC27C\uD45C",
|
|
1437
|
+
default: false,
|
|
1438
|
+
description: '3\uC790\uB9AC\uB9C8\uB2E4 \uC27C\uD45C\uB97C \uADF8\uC5B4 \uBCF4\uC778\uB2E4(1,234,567.5). type \uACFC \uBB34\uAD00\uD558\uAC8C \uAE00\uC790 \uCE78(inputMode=decimal)\uC73C\uB85C \uADF8\uB9AC\uACE0, onChange \uAC12\uC740 \uC22B\uC790(\uBE44\uC6B0\uBA74 null) \u2014 \uC27C\uD45C\uB294 \uD654\uBA74\uC5D0\uB9CC \uC788\uB2E4. \uBD99\uC5EC\uB123\uC740 "1,234\uC6D0" \uC740 1234. \uC18C\uC218\uB294 \uBC18\uC62C\uB9BC\uD558\uC9C0 \uC54A\uB294\uB2E4. min\xB7max\xB7step \uC740 \uC774 \uCE78\uC5D0\uC11C \uC4F0\uC9C0 \uC54A\uB294\uB2E4.',
|
|
1439
|
+
group: "behavior"
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
name: "unit",
|
|
1443
|
+
kind: "string",
|
|
1444
|
+
label: "\uB2E8\uC704",
|
|
1445
|
+
description: '\uC785\uB825 \uC624\uB978\uCABD \uB05D\uC5D0 \uBD99\uB294 \uAE00\uC790 \uB2E8\uC704 \u2014 "\uC6D0", "%", "km". trailing \uACFC \uD568\uAED8 \uC8FC\uBA74 unit \uB9CC \uADF8\uB9B0\uB2E4.',
|
|
1446
|
+
group: "content"
|
|
1447
|
+
},
|
|
1426
1448
|
{
|
|
1427
1449
|
name: "type",
|
|
1428
1450
|
kind: "enum",
|
|
@@ -1478,7 +1500,7 @@ var InputMeta = {
|
|
|
1478
1500
|
name: "trailing",
|
|
1479
1501
|
kind: "icon",
|
|
1480
1502
|
label: "\uD6C4\uD589 \uC544\uC774\uCF58",
|
|
1481
|
-
description: '\uC785\uB825 \uC624\uB978\uCABD \uB05D\uC5D0 \uACB9\uCCD0 \uADF8\uB9AC\uB294 \uD45C\uC2DC. **\uC544\uC774\uCF58 \uC774\uB984\uC73C\uB85C \uC77D\uB294\uB2E4**(\uC608: "eye" = \uBE44\uBC00\uBC88\uD638 \uBCF4\uAE30). \uB4F1\uB85D\uB418\uC9C0 \uC54A\uC740 \uC774\uB984\uC774\uBA74 \uC544\uBB34\uAC83\uB3C4 \uADF8\uB9AC\uC9C0 \uC54A\uB294\uB2E4 \u2014 "\uC6D0"\xB7"mm" \uAC19\uC740 \uB2E8\uC704 \uAE00\uC790\uB294 \uC5EC\uAE30 \
|
|
1503
|
+
description: '\uC785\uB825 \uC624\uB978\uCABD \uB05D\uC5D0 \uACB9\uCCD0 \uADF8\uB9AC\uB294 \uD45C\uC2DC. **\uC544\uC774\uCF58 \uC774\uB984\uC73C\uB85C \uC77D\uB294\uB2E4**(\uC608: "eye" = \uBE44\uBC00\uBC88\uD638 \uBCF4\uAE30). \uB4F1\uB85D\uB418\uC9C0 \uC54A\uC740 \uC774\uB984\uC774\uBA74 \uC544\uBB34\uAC83\uB3C4 \uADF8\uB9AC\uC9C0 \uC54A\uB294\uB2E4 \u2014 "\uC6D0"\xB7"mm" \uAC19\uC740 \uB2E8\uC704 \uAE00\uC790\uB294 \uC5EC\uAE30\uAC00 \uC544\uB2C8\uB77C unit \uC5D0 \uB123\uB294\uB2E4.',
|
|
1482
1504
|
group: "content"
|
|
1483
1505
|
},
|
|
1484
1506
|
styleProp,
|
|
@@ -4871,7 +4893,7 @@ var AutocompleteFieldMeta = {
|
|
|
4871
4893
|
label: "\uC790\uB3D9\uC644\uC131",
|
|
4872
4894
|
category: "input",
|
|
4873
4895
|
icon: "search",
|
|
4874
|
-
description: "\uAC80\uC0C9\uD574\uC11C \uD558\uB098\uB97C \uACE0\uB974\uB294 \uC785\uB825. \uACE0\uB978 \uB4A4\uC5D0\uB294 \uC120\uD0DD \uCE74\uB4DC\uB85C \uC811\uD78C\uB2E4. \uAC80\uC0C9 \uACBD\uB85C\uB97C \uC8FC\uBA74 \uC6D0\uACA9 \uC870\uD68C\uAE4C\uC9C0 \uD55C\uB2E4.",
|
|
4896
|
+
description: "\uAC80\uC0C9\uD574\uC11C \uD558\uB098\uB97C \uACE0\uB974\uB294 \uC785\uB825. \uACE0\uB978 \uB4A4\uC5D0\uB294 \uC120\uD0DD \uCE74\uB4DC\uB85C \uC811\uD78C\uB2E4. \uAC80\uC0C9 \uACBD\uB85C\uB97C \uC8FC\uBA74 \uC6D0\uACA9 \uC870\uD68C\uAE4C\uC9C0 \uD55C\uB2E4. freeText \uB97C \uCF1C\uBA74 \uC785\uB825\uD55C \uAE00\uC790 \uC790\uCCB4\uAC00 \uAC12\uC774\uACE0(\uC9C1\uC811\uC785\uB825), \uBAA9\uB85D\uC740 \uC9C1\uC811\uC785\uB825 \uC904 + \uC774\uB984 \uB9E4\uCE6D \uD6C4\uBCF4\uB2E4.",
|
|
4875
4897
|
props: [
|
|
4876
4898
|
{
|
|
4877
4899
|
name: "options",
|
|
@@ -4905,7 +4927,7 @@ var AutocompleteFieldMeta = {
|
|
|
4905
4927
|
kind: "string",
|
|
4906
4928
|
label: "\uC120\uD0DD\uB41C \uAC12",
|
|
4907
4929
|
bindable: true,
|
|
4908
|
-
description: "\uBE48 \uBB38\uC790\uC5F4\uC774\uBA74 \uBBF8\uC120\uD0DD\uC73C\uB85C \uBCF8\uB2E4.",
|
|
4930
|
+
description: "\uBE48 \uBB38\uC790\uC5F4\uC774\uBA74 \uBBF8\uC120\uD0DD\uC73C\uB85C \uBCF8\uB2E4. freeText \uC5D0\uC11C\uB294 \uCE78\uC758 \uAE00\uC790 \uADF8 \uC790\uCCB4.",
|
|
4909
4931
|
group: "data"
|
|
4910
4932
|
},
|
|
4911
4933
|
{
|
|
@@ -4920,9 +4942,40 @@ var AutocompleteFieldMeta = {
|
|
|
4920
4942
|
name: "onChange",
|
|
4921
4943
|
kind: "action",
|
|
4922
4944
|
label: "\uC120\uD0DD \uBCC0\uACBD",
|
|
4923
|
-
eventArg: "\uC120\uD0DD\uB41C \uAC12(\uBB38\uC790\uC5F4), \uD574\uC81C\uD558\uBA74 null",
|
|
4945
|
+
eventArg: "\uC120\uD0DD\uB41C \uAC12(\uBB38\uC790\uC5F4), \uD574\uC81C\uD558\uBA74 null. freeText \uC5D0\uC11C\uB294 \uCE58\uB294 \uAE00\uC790\uB9C8\uB2E4 \uADF8 \uAE00\uC790, \uD6C4\uBCF4\uB97C \uACE0\uB974\uBA74 \uADF8 \uB77C\uBCA8",
|
|
4924
4946
|
group: "behavior"
|
|
4925
4947
|
},
|
|
4948
|
+
{
|
|
4949
|
+
name: "onSelect",
|
|
4950
|
+
kind: "action",
|
|
4951
|
+
label: "\uD56D\uBAA9 \uACE0\uB984",
|
|
4952
|
+
eventArg: "\uACE0\uB978 \uD56D\uBAA9(\uC9C1\uC811\uC785\uB825\xB7\uC5F0\uACB0 \uD574\uC81C\uB294 null)",
|
|
4953
|
+
description: `\uACE0\uB978 \uD56D\uBAA9 \uD1B5\uC9F8\uB85C \u2014 {"$event":"business_no"} \uCC98\uB7FC \uD56D\uBAA9\uC758 \uB2E4\uB978 \uCE78\uC744 \uC77D\uC5B4 \uD568\uAED8 \uCC44\uC6B4\uB2E4. \uACE0\uB978 \uB4A4 \uAE00\uC790\uB97C \uACE0\uCE58\uAC70\uB098(freeText) '\uBCC0\uACBD'\uC73C\uB85C \uD480\uBA74 null \uC774 \uD55C \uBC88 \uC628\uB2E4.`,
|
|
4954
|
+
group: "behavior"
|
|
4955
|
+
},
|
|
4956
|
+
{
|
|
4957
|
+
name: "freeText",
|
|
4958
|
+
kind: "boolean",
|
|
4959
|
+
label: "\uC9C1\uC811\uC785\uB825",
|
|
4960
|
+
default: false,
|
|
4961
|
+
description: "\uC785\uB825\uD55C \uAE00\uC790 \uC790\uCCB4\uAC00 \uAC12(onChange \uAC00 \uAE00\uC790\uB9C8\uB2E4 \uC628\uB2E4). \uC120\uD0DD \uCE74\uB4DC \uC5C6\uC74C. \uBAA9\uB85D \uCCAB \uC904\uC740 \uC5B8\uC81C\uB098 \uC9C1\uC811\uC785\uB825 \uC904\uC774\uACE0 Enter \uB97C \uADF8\uB0E5 \uB204\uB974\uBA74 \uCE5C \uAE00\uC790\uAC00 \uB0A8\uB294\uB2E4. \uD6C4\uBCF4\uB97C \uACE0\uB974\uBA74(Enter\xB7Tab\xB7\uD074\uB9AD) onChange(\uB77C\uBCA8) \uB2E4\uC74C onSelect(\uD56D\uBAA9). \uBAA9\uB85D\uC740 \uC0AC\uC6A9\uC790\uAC00 \uCE60 \uB54C\uB9CC \uC5F4\uB9B0\uB2E4.",
|
|
4962
|
+
group: "behavior"
|
|
4963
|
+
},
|
|
4964
|
+
{
|
|
4965
|
+
name: "selected",
|
|
4966
|
+
kind: "boolean",
|
|
4967
|
+
label: "\uD56D\uBAA9 \uC5F0\uACB0\uB428",
|
|
4968
|
+
bindable: true,
|
|
4969
|
+
description: "freeText \uC5D0\uC11C \uC9C0\uAE08 \uAE00\uC790\uAC00 \uACE0\uB978 \uD56D\uBAA9\uC5D0 \uC5F0\uACB0\uB3FC \uC788\uB294\uAC00(\uC608: \uBC1C\uC8FC\uCC98 id \uAC00 \uBE44\uC9C0 \uC54A\uC558\uB098). \uCC38\uC774\uBA74 \uC55E \uC544\uC774\uCF58\uC774 \uCCB4\uD06C\uB85C \uBC14\uB00C\uACE0, \uAE00\uC790\uB97C \uACE0\uCE58\uBA74 onSelect(null) \uC774 \uBA3C\uC800 \uAC04\uB2E4. \uC0DD\uB7B5\uD558\uBA74 \uC704\uC82F\uC774 \uC2A4\uC2A4\uB85C \uAE30\uC5B5\uD55C\uB2E4.",
|
|
4970
|
+
group: "data"
|
|
4971
|
+
},
|
|
4972
|
+
{
|
|
4973
|
+
name: "createLabel",
|
|
4974
|
+
kind: "string",
|
|
4975
|
+
label: "\uC9C1\uC811\uC785\uB825 \uC904 \uBB38\uAD6C",
|
|
4976
|
+
description: 'freeText \uBAA9\uB85D \uCCAB \uC904. {value} \uAC00 \uC9C0\uAE08 \uAE00\uC790\uB85C \uBC14\uB010\uB2E4. \uAE30\uBCF8 \uC9C1\uC811\uC785\uB825: "{value}".',
|
|
4977
|
+
group: "content"
|
|
4978
|
+
},
|
|
4926
4979
|
{ name: "labelKey", kind: "string", label: "\uB77C\uBCA8 \uD0A4", default: "label", description: "\uC635\uC158\uC5D0\uC11C \uD45C\uC2DC \uB77C\uBCA8\uC744 \uC77D\uC744 \uD0A4.", group: "data" },
|
|
4927
4980
|
{ name: "valueKey", kind: "string", label: "\uAC12 \uD0A4", default: "value", description: "\uC635\uC158\uC5D0\uC11C \uAC12\uC744 \uC77D\uC744 \uD0A4.", group: "data" },
|
|
4928
4981
|
{ name: "subKey", kind: "string", label: "\uBCF4\uC870 \uC815\uBCF4 \uD0A4", description: "\uBAA9\uB85D \uB458\uC9F8 \uC904\uC5D0 \uC4F8 \uD0A4. \uC5C6\uC73C\uBA74 \uD55C \uC904\uB9CC \uADF8\uB9B0\uB2E4.", group: "data" },
|