@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,6 +1,6 @@
|
|
|
1
|
-
import { includesLooseSearch } from './chunk-
|
|
1
|
+
import { includesLooseSearch } from './chunk-QDCP6P3K.js';
|
|
2
2
|
import { OverlayLayer } from './chunk-R2ORCOTG.js';
|
|
3
|
-
import { Button, Dialog, Input, Tag, Checkbox } from './chunk-
|
|
3
|
+
import { Button, Dialog, Input, Tag, Checkbox } from './chunk-45GIMFRP.js';
|
|
4
4
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
5
5
|
import React, { useMemo, useState } from 'react';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Disclosure } from './chunk-
|
|
2
|
-
import { Icon } from './chunk-
|
|
1
|
+
import { Disclosure } from './chunk-BBA7KKG4.js';
|
|
2
|
+
import { Icon } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -1268,6 +1268,92 @@ var ICON_NODES = {
|
|
|
1268
1268
|
{ t: "line", x1: "8", x2: "14", y1: "11", y2: "11" }
|
|
1269
1269
|
]
|
|
1270
1270
|
};
|
|
1271
|
+
|
|
1272
|
+
// src/number-text.ts
|
|
1273
|
+
function halfWidth(ch) {
|
|
1274
|
+
const code = ch.charCodeAt(0);
|
|
1275
|
+
if (code >= 65296 && code <= 65305) return String.fromCharCode(code - 65296 + 48);
|
|
1276
|
+
if (code === 65294) return ".";
|
|
1277
|
+
if (code === 65293 || code === 8722) return "-";
|
|
1278
|
+
return ch;
|
|
1279
|
+
}
|
|
1280
|
+
function sanitizeNumberText(text) {
|
|
1281
|
+
let out = "";
|
|
1282
|
+
let dot = false;
|
|
1283
|
+
for (const raw of text) {
|
|
1284
|
+
const ch = halfWidth(raw);
|
|
1285
|
+
if (ch >= "0" && ch <= "9") {
|
|
1286
|
+
if (!dot && (out === "0" || out === "-0")) out = out.slice(0, -1);
|
|
1287
|
+
out += ch;
|
|
1288
|
+
} else if (ch === "." && !dot) {
|
|
1289
|
+
dot = true;
|
|
1290
|
+
out += ch;
|
|
1291
|
+
} else if (ch === "-" && out === "") out += ch;
|
|
1292
|
+
}
|
|
1293
|
+
return out;
|
|
1294
|
+
}
|
|
1295
|
+
function groupNumberText(clean) {
|
|
1296
|
+
const negative = clean.startsWith("-");
|
|
1297
|
+
const body = negative ? clean.slice(1) : clean;
|
|
1298
|
+
const dotAt = body.indexOf(".");
|
|
1299
|
+
const integer = dotAt === -1 ? body : body.slice(0, dotAt);
|
|
1300
|
+
const tail = dotAt === -1 ? "" : body.slice(dotAt);
|
|
1301
|
+
return `${negative ? "-" : ""}${integer.replace(/\B(?=(\d{3})+(?!\d))/g, ",")}${tail}`;
|
|
1302
|
+
}
|
|
1303
|
+
function parseNumberText(clean) {
|
|
1304
|
+
if (!/\d/.test(clean)) return null;
|
|
1305
|
+
const n = Number(clean);
|
|
1306
|
+
if (!Number.isFinite(n)) return null;
|
|
1307
|
+
return n === 0 ? 0 : n;
|
|
1308
|
+
}
|
|
1309
|
+
function plainNumberText(value) {
|
|
1310
|
+
if (!Number.isFinite(value)) return "";
|
|
1311
|
+
const text = String(value === 0 ? 0 : value);
|
|
1312
|
+
if (!/e/i.test(text)) return text;
|
|
1313
|
+
return value.toLocaleString("en-US", { useGrouping: false, maximumFractionDigits: 20 });
|
|
1314
|
+
}
|
|
1315
|
+
function numberInputValue(value) {
|
|
1316
|
+
if (typeof value === "number") return Number.isFinite(value) ? value === 0 ? 0 : value : null;
|
|
1317
|
+
if (typeof value !== "string") return null;
|
|
1318
|
+
const plain = value.replace(/,/g, "").trim();
|
|
1319
|
+
if (/^[+-]?(\d+(\.\d*)?|\.\d+)$/.test(plain)) return parseNumberText(plain.replace(/^\+/, ""));
|
|
1320
|
+
return parseNumberText(sanitizeNumberText(value));
|
|
1321
|
+
}
|
|
1322
|
+
function formatNumberInputValue(value) {
|
|
1323
|
+
const n = numberInputValue(value);
|
|
1324
|
+
return n === null ? "" : groupNumberText(plainNumberText(n));
|
|
1325
|
+
}
|
|
1326
|
+
function significantBefore(text, caret) {
|
|
1327
|
+
return sanitizeNumberText(text.slice(0, Math.max(0, caret))).length;
|
|
1328
|
+
}
|
|
1329
|
+
function caretAfterSignificant(formatted, count) {
|
|
1330
|
+
if (count <= 0) return 0;
|
|
1331
|
+
let seen = 0;
|
|
1332
|
+
for (let i = 0; i < formatted.length; i += 1) {
|
|
1333
|
+
if (formatted[i] === ",") continue;
|
|
1334
|
+
seen += 1;
|
|
1335
|
+
if (seen === count) return i + 1;
|
|
1336
|
+
}
|
|
1337
|
+
return formatted.length;
|
|
1338
|
+
}
|
|
1339
|
+
function editNumberText(raw, caret, previous, inputType) {
|
|
1340
|
+
let source = raw;
|
|
1341
|
+
let at = Math.max(0, Math.min(caret, raw.length));
|
|
1342
|
+
if (previous !== void 0 && raw.length === previous.length - 1 && previous[at] === "," && raw === previous.slice(0, at) + previous.slice(at + 1)) {
|
|
1343
|
+
if (inputType === "deleteContentForward") {
|
|
1344
|
+
source = previous.slice(0, at + 1) + previous.slice(at + 2);
|
|
1345
|
+
} else if (at > 0) {
|
|
1346
|
+
source = previous.slice(0, at - 1) + previous.slice(at);
|
|
1347
|
+
at -= 1;
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
const clean = sanitizeNumberText(source);
|
|
1351
|
+
const text = groupNumberText(clean);
|
|
1352
|
+
return { text, caret: caretAfterSignificant(text, significantBefore(source, at)), value: parseNumberText(clean) };
|
|
1353
|
+
}
|
|
1354
|
+
function sameNumberValue(a, b) {
|
|
1355
|
+
return a === b;
|
|
1356
|
+
}
|
|
1271
1357
|
function asArray(value) {
|
|
1272
1358
|
return Array.isArray(value) ? value : [];
|
|
1273
1359
|
}
|
|
@@ -1367,23 +1453,139 @@ function IconButton({
|
|
|
1367
1453
|
}
|
|
1368
1454
|
);
|
|
1369
1455
|
}
|
|
1370
|
-
function
|
|
1456
|
+
function unitPaddingRight(unit) {
|
|
1457
|
+
let width = 0;
|
|
1458
|
+
for (const ch of unit) {
|
|
1459
|
+
if (/[\u1100-\u11ff\u3000-\u9fff\uac00-\ud7af\uff00-\uffef]/.test(ch)) width += 12;
|
|
1460
|
+
else if (/[A-Z%@#&WM]/.test(ch)) width += 9;
|
|
1461
|
+
else if (ch === " ") width += 3.5;
|
|
1462
|
+
else width += 7;
|
|
1463
|
+
}
|
|
1464
|
+
return `${Math.ceil(width + 18)}px`;
|
|
1465
|
+
}
|
|
1466
|
+
function Input(props) {
|
|
1467
|
+
const {
|
|
1468
|
+
size = "md",
|
|
1469
|
+
icon,
|
|
1470
|
+
invalid = false,
|
|
1471
|
+
mono = false,
|
|
1472
|
+
trailing,
|
|
1473
|
+
unit,
|
|
1474
|
+
thousands,
|
|
1475
|
+
className = "",
|
|
1476
|
+
style,
|
|
1477
|
+
...rest
|
|
1478
|
+
} = props;
|
|
1371
1479
|
const classes = ["wp-input"];
|
|
1372
1480
|
if (size !== "md") classes.push(`wp-input--${size}`);
|
|
1373
1481
|
if (invalid) classes.push("wp-input--invalid");
|
|
1374
1482
|
if (mono) classes.push("wp-input--mono");
|
|
1375
1483
|
if (className) classes.push(className);
|
|
1376
|
-
const
|
|
1377
|
-
if (
|
|
1484
|
+
const unitText = unit === void 0 || unit === null || String(unit) === "" ? void 0 : String(unit);
|
|
1485
|
+
if (unitText !== void 0 && trailing) {
|
|
1486
|
+
warnOnce("input:unit+trailing", "[sdui] Input: unit \uACFC trailing \uC744 \uD568\uAED8 \uC8FC\uBA74 unit \uB9CC \uADF8\uB9BD\uB2C8\uB2E4");
|
|
1487
|
+
}
|
|
1488
|
+
const inputStyle = unitText !== void 0 ? { paddingRight: unitPaddingRight(unitText), ...style } : style;
|
|
1489
|
+
const input = thousands ? /* @__PURE__ */ jsx(
|
|
1490
|
+
ThousandsInput,
|
|
1491
|
+
{
|
|
1492
|
+
className: classes.join(" "),
|
|
1493
|
+
"aria-invalid": invalid || void 0,
|
|
1494
|
+
style: inputStyle,
|
|
1495
|
+
...rest
|
|
1496
|
+
}
|
|
1497
|
+
) : /* @__PURE__ */ jsx(
|
|
1498
|
+
"input",
|
|
1499
|
+
{
|
|
1500
|
+
className: classes.join(" "),
|
|
1501
|
+
"aria-invalid": invalid || void 0,
|
|
1502
|
+
style: inputStyle,
|
|
1503
|
+
...rest
|
|
1504
|
+
}
|
|
1505
|
+
);
|
|
1506
|
+
const trail = unitText !== void 0 ? /* @__PURE__ */ jsx(
|
|
1507
|
+
"span",
|
|
1508
|
+
{
|
|
1509
|
+
className: "wp-inputwrap__trail",
|
|
1510
|
+
"data-unit": "",
|
|
1511
|
+
style: { fontSize: "var(--wp-size-xs)", color: "var(--wp-text-muted)", whiteSpace: "nowrap", lineHeight: 1 },
|
|
1512
|
+
children: unitText
|
|
1513
|
+
}
|
|
1514
|
+
) : trailing ? /* @__PURE__ */ jsx("span", { className: "wp-inputwrap__trail", children: typeof trailing === "string" ? /* @__PURE__ */ jsx(Icon, { name: trailing, size: 15 }) : trailing }) : null;
|
|
1515
|
+
if (!icon && !trail) return input;
|
|
1378
1516
|
const wrap = ["wp-inputwrap"];
|
|
1379
1517
|
if (icon) wrap.push("wp-inputwrap--lead");
|
|
1380
|
-
if (
|
|
1518
|
+
if (trail) wrap.push("wp-inputwrap--trail");
|
|
1381
1519
|
return /* @__PURE__ */ jsxs("div", { className: wrap.join(" "), children: [
|
|
1382
1520
|
icon ? /* @__PURE__ */ jsx("span", { className: "wp-inputwrap__lead", children: /* @__PURE__ */ jsx(Icon, { name: icon, size: 15 }) }) : null,
|
|
1383
1521
|
input,
|
|
1384
|
-
|
|
1522
|
+
trail
|
|
1385
1523
|
] });
|
|
1386
1524
|
}
|
|
1525
|
+
function ThousandsInput({
|
|
1526
|
+
value,
|
|
1527
|
+
defaultValue,
|
|
1528
|
+
onChange,
|
|
1529
|
+
onBlur,
|
|
1530
|
+
type: _type,
|
|
1531
|
+
min: _min,
|
|
1532
|
+
max: _max,
|
|
1533
|
+
step: _step,
|
|
1534
|
+
inputMode,
|
|
1535
|
+
autoComplete,
|
|
1536
|
+
...rest
|
|
1537
|
+
}) {
|
|
1538
|
+
const controlled = value !== void 0;
|
|
1539
|
+
const [own, setOwn] = React.useState(() => numberInputValue(defaultValue));
|
|
1540
|
+
const external = controlled ? numberInputValue(value) : own;
|
|
1541
|
+
const [draft, setDraft] = React.useState(null);
|
|
1542
|
+
const [seen, setSeen] = React.useState(external);
|
|
1543
|
+
let shown = draft;
|
|
1544
|
+
if (!sameNumberValue(seen, external)) {
|
|
1545
|
+
setSeen(external);
|
|
1546
|
+
if (draft !== null && !sameNumberValue(parseNumberText(sanitizeNumberText(draft)), external)) {
|
|
1547
|
+
setDraft(null);
|
|
1548
|
+
shown = null;
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
const display = shown ?? formatNumberInputValue(controlled ? value : own);
|
|
1552
|
+
const handleChange = (event) => {
|
|
1553
|
+
const el = event.target;
|
|
1554
|
+
const inputType = event.nativeEvent.inputType;
|
|
1555
|
+
const next = editNumberText(
|
|
1556
|
+
el.value,
|
|
1557
|
+
el.selectionStart ?? el.value.length,
|
|
1558
|
+
display,
|
|
1559
|
+
typeof inputType === "string" ? inputType : void 0
|
|
1560
|
+
);
|
|
1561
|
+
if (el.value !== next.text) el.value = next.text;
|
|
1562
|
+
if (el.ownerDocument.activeElement === el) {
|
|
1563
|
+
try {
|
|
1564
|
+
el.setSelectionRange(next.caret, next.caret);
|
|
1565
|
+
} catch {
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
setDraft(next.text);
|
|
1569
|
+
if (next.text === display) return;
|
|
1570
|
+
if (!controlled) setOwn(next.value);
|
|
1571
|
+
onChange?.(next.value);
|
|
1572
|
+
};
|
|
1573
|
+
return /* @__PURE__ */ jsx(
|
|
1574
|
+
"input",
|
|
1575
|
+
{
|
|
1576
|
+
...rest,
|
|
1577
|
+
type: "text",
|
|
1578
|
+
inputMode: inputMode ?? "decimal",
|
|
1579
|
+
autoComplete: autoComplete ?? "off",
|
|
1580
|
+
value: display,
|
|
1581
|
+
onChange: handleChange,
|
|
1582
|
+
onBlur: (event) => {
|
|
1583
|
+
setDraft(null);
|
|
1584
|
+
onBlur?.(event);
|
|
1585
|
+
}
|
|
1586
|
+
}
|
|
1587
|
+
);
|
|
1588
|
+
}
|
|
1387
1589
|
function Textarea({ invalid = false, rows = 3, className = "", ...rest }) {
|
|
1388
1590
|
return /* @__PURE__ */ jsx(
|
|
1389
1591
|
"textarea",
|
|
@@ -2039,4 +2241,4 @@ function Tooltip({ label, shortcut, placement = "top", wrap = false, children, c
|
|
|
2039
2241
|
);
|
|
2040
2242
|
}
|
|
2041
2243
|
|
|
2042
|
-
export { Alert, Avatar, Badge, Breadcrumb, Button, CALC_OPS, Card, Checkbox, Dialog, EmptyState, Field, ICON_NODES, Icon, IconButton, Input, Pagination, ProgressBar, Radio, SegmentedControl, Select, SidebarNav, Spinner, StatCard, Switch, Table, Tabs, Tag, Textarea, Toast, Tooltip, evaluateCalc, fieldOf, formatDateValue, formatDisplayValue, formatNumberValue, isPlainObject, isZonedIsoDateTime, parseNumeric, toNumber, warnOnce };
|
|
2244
|
+
export { Alert, Avatar, Badge, Breadcrumb, Button, CALC_OPS, Card, Checkbox, Dialog, EmptyState, Field, ICON_NODES, Icon, IconButton, Input, Pagination, ProgressBar, Radio, SegmentedControl, Select, SidebarNav, Spinner, StatCard, Switch, Table, Tabs, Tag, Textarea, Toast, Tooltip, evaluateCalc, fieldOf, formatDateValue, formatDisplayValue, formatNumberValue, isPlainObject, isZonedIsoDateTime, parseNumeric, plainNumberText, toNumber, warnOnce };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useSduiAdapter, hostFetchOf } from './chunk-
|
|
2
|
-
import { Badge, Tag } from './chunk-
|
|
1
|
+
import { useSduiAdapter, hostFetchOf } from './chunk-DE7FPWVJ.js';
|
|
2
|
+
import { Badge, Tag } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useRef, useEffect, useMemo, useState } from 'react';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Text } from './chunk-
|
|
2
|
-
import { Switch, Field, Select, Input } from './chunk-
|
|
1
|
+
import { Text } from './chunk-PPOQY3V5.js';
|
|
2
|
+
import { Switch, Field, Select, Input } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import React, { useMemo } from 'react';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OverlayLayer } from './chunk-R2ORCOTG.js';
|
|
2
|
-
import { Dialog, Button, warnOnce } from './chunk-
|
|
2
|
+
import { Dialog, Button, warnOnce } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { createContext, useContext, useMemo, useRef, useCallback, useState } from 'react';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useOverlayLayer, OverlayContainerContext, getOverlayRoot } from './chunk-R2ORCOTG.js';
|
|
2
|
-
import { IconButton } from './chunk-
|
|
2
|
+
import { IconButton } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { useState, useRef, useCallback, useEffect, useContext } from 'react';
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
2
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
2
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
3
3
|
import { MOBILE_MEDIA_QUERY } from './chunk-TAVKGYH5.js';
|
|
4
|
-
import { Icon, Badge, Checkbox, Select, Button } from './chunk-
|
|
4
|
+
import { Icon, Badge, Checkbox, Select, Button } from './chunk-45GIMFRP.js';
|
|
5
5
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
6
6
|
import { useRef, useEffect, useState, useMemo } from 'react';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Textarea, Icon } from './chunk-
|
|
1
|
+
import { Textarea, Icon } from './chunk-45GIMFRP.js';
|
|
2
2
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
3
3
|
import { useState, useRef, useId, useEffect, useCallback } from 'react';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
2
|
-
import { Spinner, Badge, Icon } from './chunk-
|
|
1
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
2
|
+
import { Spinner, Badge, Icon } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useState, useEffect } from 'react';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { buildCascadingTree } from './chunk-
|
|
2
|
-
import { Input, IconButton, EmptyState, Icon, Badge } from './chunk-
|
|
1
|
+
import { buildCascadingTree } from './chunk-QDCP6P3K.js';
|
|
2
|
+
import { Input, IconButton, EmptyState, Icon, Badge } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import React, { useMemo, useState, useRef, useEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ImageLightbox } from './chunk-
|
|
2
|
-
import { useSduiSandbox, useSduiAdapter, hostRawFetchOf, defaultAdapter, useSduiAssetResolver } from './chunk-
|
|
3
|
-
import { Spinner, Icon, IconButton } from './chunk-
|
|
1
|
+
import { ImageLightbox } from './chunk-S4CQTJC6.js';
|
|
2
|
+
import { useSduiSandbox, useSduiAdapter, hostRawFetchOf, defaultAdapter, useSduiAssetResolver } from './chunk-DE7FPWVJ.js';
|
|
3
|
+
import { Spinner, Icon, IconButton } from './chunk-45GIMFRP.js';
|
|
4
4
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
5
5
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
6
6
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DateRangePicker } from './chunk-
|
|
2
|
-
import { SegmentedControl, Select } from './chunk-
|
|
1
|
+
import { DateRangePicker } from './chunk-KMNC3Q4J.js';
|
|
2
|
+
import { SegmentedControl, Select } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useState, useMemo } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IconButton, Input } from './chunk-
|
|
1
|
+
import { IconButton, Input } from './chunk-45GIMFRP.js';
|
|
2
2
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
3
3
|
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OverlayContainerContext, getOverlayRoot, useOverlayLayer } from './chunk-R2ORCOTG.js';
|
|
2
2
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
3
|
-
import { IconButton } from './chunk-
|
|
3
|
+
import { IconButton } from './chunk-45GIMFRP.js';
|
|
4
4
|
import React2, { useState, useRef, useEffect, useLayoutEffect, useCallback } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { KO_CALENDAR_NAV_LOCALE, useDismiss, usePopoverAnchor, usePortalTo, usePanelPointer, AnchoredPopoverStyles, anchorStyle, focusStaysInside, resolveCalendarNavLocale, CalendarZoom, CalendarNav, clampIndex } from './chunk-
|
|
1
|
+
import { KO_CALENDAR_NAV_LOCALE, useDismiss, usePopoverAnchor, usePortalTo, usePanelPointer, AnchoredPopoverStyles, anchorStyle, focusStaysInside, resolveCalendarNavLocale, CalendarZoom, CalendarNav, clampIndex } from './chunk-HNMBEUBO.js';
|
|
2
2
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
3
3
|
import { useIsMobile } from './chunk-TAVKGYH5.js';
|
|
4
|
-
import { Icon } from './chunk-
|
|
4
|
+
import { Icon } from './chunk-45GIMFRP.js';
|
|
5
5
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
6
6
|
import { useState, useRef, useEffect, useMemo, useCallback, useLayoutEffect } from 'react';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { usePanZoomCanvas, MIN_ZOOM, MAX_ZOOM } from './chunk-XDR6HC4U.js';
|
|
2
|
-
import { IconButton, Badge } from './chunk-
|
|
2
|
+
import { IconButton, Badge } from './chunk-45GIMFRP.js';
|
|
3
3
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
4
4
|
import { useState, useMemo, useCallback, useEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { fetchAllJobPositions } from './chunk-XRHR452N.js';
|
|
2
|
-
import { useSduiDispatch, useSduiCan, SduiDialog } from './chunk-
|
|
3
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
4
|
-
import { Card, Input, Button, Icon, Badge, IconButton } from './chunk-
|
|
2
|
+
import { useSduiDispatch, useSduiCan, SduiDialog } from './chunk-77OM6OQG.js';
|
|
3
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
4
|
+
import { Card, Input, Button, Icon, Badge, IconButton } from './chunk-45GIMFRP.js';
|
|
5
5
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
6
6
|
import React, { useState, useEffect, useCallback, useMemo } from 'react';
|
|
7
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { TagMultiSelect } from './chunk-
|
|
2
|
-
import { ApprovalLineEditor, stepTypeIcon, stepLabel } from './chunk-
|
|
3
|
-
import { orderCircleStyle, unwrapRows, uid } from './chunk-
|
|
4
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
5
|
-
import { Card, Icon, Input, IconButton, Field, Button, Badge } from './chunk-
|
|
1
|
+
import { TagMultiSelect } from './chunk-5DLUGN5M.js';
|
|
2
|
+
import { ApprovalLineEditor, stepTypeIcon, stepLabel } from './chunk-ZSKQUIYR.js';
|
|
3
|
+
import { orderCircleStyle, unwrapRows, uid } from './chunk-HR2U2QGN.js';
|
|
4
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
5
|
+
import { Card, Icon, Input, IconButton, Field, Button, Badge } from './chunk-45GIMFRP.js';
|
|
6
6
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
7
7
|
import React, { useRef, useState, useEffect } from 'react';
|
|
8
8
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { fetchAllJobPositions } from './chunk-XRHR452N.js';
|
|
2
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
3
|
-
import { Select, Button } from './chunk-
|
|
2
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
3
|
+
import { Select, Button } from './chunk-45GIMFRP.js';
|
|
4
4
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
5
5
|
import { useRef, useState, useEffect, useMemo } from 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { parseJobPositionRow } from './chunk-XRHR452N.js';
|
|
2
2
|
import { MIN_ZOOM, usePanZoomCanvas } from './chunk-XDR6HC4U.js';
|
|
3
|
-
import { ImageLightbox } from './chunk-
|
|
4
|
-
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-
|
|
3
|
+
import { ImageLightbox } from './chunk-S4CQTJC6.js';
|
|
4
|
+
import { useSduiAdapter, hostFetchOf, defaultAdapter } from './chunk-DE7FPWVJ.js';
|
|
5
5
|
import { useIsTabletDown } from './chunk-TAVKGYH5.js';
|
|
6
|
-
import { warnOnce, Badge, Button, IconButton, Icon } from './chunk-
|
|
6
|
+
import { warnOnce, Badge, Button, IconButton, Icon } from './chunk-45GIMFRP.js';
|
|
7
7
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
8
8
|
import { useState, useMemo, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
|
|
9
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { formatDisplayValue } from './chunk-
|
|
1
|
+
import { formatDisplayValue } from './chunk-45GIMFRP.js';
|
|
2
2
|
import { mergeStyle, containerLayoutStyle, joinClass, columnsClass, typographyStyle, GAP_CSS } from './chunk-3JTBOABA.js';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Badge, Checkbox, IconButton, Icon } from './chunk-
|
|
1
|
+
import { Badge, Checkbox, IconButton, Icon } from './chunk-45GIMFRP.js';
|
|
2
2
|
import { boxed } from './chunk-3JTBOABA.js';
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
4
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DateRangePicker } from './chunk-
|
|
1
|
+
import { DateRangePicker } from './chunk-KMNC3Q4J.js';
|
|
2
2
|
import { useOverlayLayer } from './chunk-R2ORCOTG.js';
|
|
3
3
|
import { HoistedStyle } from './chunk-RIZRM7OO.js';
|
|
4
|
-
import { Input, Button, IconButton, Tag, Field, Checkbox } from './chunk-
|
|
4
|
+
import { Input, Button, IconButton, Tag, Field, Checkbox, plainNumberText, formatNumberValue } from './chunk-45GIMFRP.js';
|
|
5
5
|
import { useRef, useEffect, useState, useMemo } from 'react';
|
|
6
6
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
|
|
@@ -272,9 +272,10 @@ function activeSearchCriteria(fields, values) {
|
|
|
272
272
|
const from = values[fromKey];
|
|
273
273
|
const to = values[toKey];
|
|
274
274
|
if (from || to) {
|
|
275
|
+
const show = (v) => field.type === "numberRange" ? formatNumberValue(v ?? "") : v ?? "";
|
|
275
276
|
criteria.push({
|
|
276
277
|
key: field.key,
|
|
277
|
-
label: `${field.label}: ${from
|
|
278
|
+
label: `${field.label}: ${show(from)}~${show(to)}`,
|
|
278
279
|
clearKeys: [fromKey, toKey]
|
|
279
280
|
});
|
|
280
281
|
}
|
|
@@ -438,26 +439,27 @@ function SearchFieldInput({
|
|
|
438
439
|
if (field.type === "numberRange") {
|
|
439
440
|
const fromKey = field.fromKey ?? `${field.key}Min`;
|
|
440
441
|
const toKey = field.toKey ?? `${field.key}Max`;
|
|
442
|
+
const store = (key) => (next) => onChange({ [key]: next === null ? "" : plainNumberText(next) });
|
|
441
443
|
return /* @__PURE__ */ jsx(Field, { label: field.label, children: /* @__PURE__ */ jsxs("div", { className: "wp-row", children: [
|
|
442
444
|
/* @__PURE__ */ jsx(
|
|
443
445
|
Input,
|
|
444
446
|
{
|
|
445
|
-
|
|
447
|
+
thousands: true,
|
|
446
448
|
mono: true,
|
|
447
449
|
placeholder: field.minPlaceholder ?? "\uCD5C\uC18C",
|
|
448
450
|
value: values[fromKey] ?? "",
|
|
449
|
-
onChange: (
|
|
451
|
+
onChange: store(fromKey)
|
|
450
452
|
}
|
|
451
453
|
),
|
|
452
454
|
/* @__PURE__ */ jsx("span", { className: "wp-caption", children: "~" }),
|
|
453
455
|
/* @__PURE__ */ jsx(
|
|
454
456
|
Input,
|
|
455
457
|
{
|
|
456
|
-
|
|
458
|
+
thousands: true,
|
|
457
459
|
mono: true,
|
|
458
460
|
placeholder: field.maxPlaceholder ?? "\uCD5C\uB300",
|
|
459
461
|
value: values[toKey] ?? "",
|
|
460
|
-
onChange: (
|
|
462
|
+
onChange: store(toKey)
|
|
461
463
|
}
|
|
462
464
|
)
|
|
463
465
|
] }) });
|