@charcoal-ui/react 3.0.0-beta.0 → 3.0.0-beta.2
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/components/Button/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
- package/dist/components/DropdownSelector/OptionItem.d.ts +7 -0
- package/dist/components/DropdownSelector/OptionItem.d.ts.map +1 -0
- package/dist/components/DropdownSelector/index.d.ts +22 -29
- package/dist/components/DropdownSelector/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/index.story.d.ts +5 -18
- package/dist/components/DropdownSelector/index.story.d.ts.map +1 -1
- package/dist/components/DropdownSelector/utils/focusIfHTMLLIElement.d.ts +6 -0
- package/dist/components/DropdownSelector/utils/focusIfHTMLLIElement.d.ts.map +1 -0
- package/dist/components/DropdownSelector/utils/handleFocusByKeyBoard.d.ts +6 -0
- package/dist/components/DropdownSelector/utils/handleFocusByKeyBoard.d.ts.map +1 -0
- package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
- package/dist/components/Modal/index.d.ts +5 -2
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Radio/index.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.story.d.ts.map +1 -1
- package/dist/index.cjs.js +313 -336
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +296 -319
- package/dist/index.esm.js.map +1 -1
- package/package.json +6 -6
- package/src/components/DropdownSelector/DropdownPopover.tsx +9 -15
- package/src/components/DropdownSelector/OptionItem.tsx +85 -0
- package/src/components/DropdownSelector/index.story.tsx +69 -156
- package/src/components/DropdownSelector/index.tsx +110 -140
- package/src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx +12 -0
- package/src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx +20 -0
- package/src/components/LoadingSpinner/index.tsx +1 -0
- package/src/components/Modal/index.tsx +79 -61
- package/src/components/Radio/index.tsx +2 -0
- package/src/components/SegmentedControl/index.story.tsx +2 -0
- package/src/components/SegmentedControl/index.tsx +1 -0
- package/src/components/TextField/index.tsx +1 -0
- package/src/index.ts +7 -2
- package/src/components/DropdownSelector/ListBoxSection.tsx +0 -60
- package/src/components/DropdownSelector/Listbox.tsx +0 -67
- package/src/components/DropdownSelector/Option.tsx +0 -66
package/dist/index.cjs.js
CHANGED
|
@@ -31,8 +31,7 @@ __export(src_exports, {
|
|
|
31
31
|
Checkbox: () => Checkbox_default,
|
|
32
32
|
Clickable: () => Clickable_default,
|
|
33
33
|
ComponentAbstraction: () => ComponentAbstraction,
|
|
34
|
-
DropdownSelector: () =>
|
|
35
|
-
DropdownSelectorItem: () => DropdownSelectorItem,
|
|
34
|
+
DropdownSelector: () => DropdownSelector,
|
|
36
35
|
Icon: () => Icon_default,
|
|
37
36
|
IconButton: () => IconButton_default,
|
|
38
37
|
LoadingSpinner: () => LoadingSpinner,
|
|
@@ -44,6 +43,7 @@ __export(src_exports, {
|
|
|
44
43
|
ModalHeader: () => ModalHeader,
|
|
45
44
|
MultiSelect: () => MultiSelect,
|
|
46
45
|
MultiSelectGroup: () => MultiSelectGroup,
|
|
46
|
+
OptionItem: () => OptionItem,
|
|
47
47
|
OverlayProvider: () => import_overlays.OverlayProvider,
|
|
48
48
|
Radio: () => Radio,
|
|
49
49
|
RadioGroup: () => RadioGroup,
|
|
@@ -437,6 +437,8 @@ var RadioInput = import_styled_components6.default.input.attrs({ type: "radio" }
|
|
|
437
437
|
width: 20px;
|
|
438
438
|
height: 20px;
|
|
439
439
|
|
|
440
|
+
cursor: pointer;
|
|
441
|
+
|
|
440
442
|
${({ hasError = false }) => theme((o) => [
|
|
441
443
|
o.borderRadius("oval"),
|
|
442
444
|
o.bg.surface1.hover.press,
|
|
@@ -1128,6 +1130,7 @@ var PrefixContainer = import_styled_components10.default.span`
|
|
|
1128
1130
|
top: 50%;
|
|
1129
1131
|
left: 8px;
|
|
1130
1132
|
transform: translateY(-50%);
|
|
1133
|
+
z-index: 1;
|
|
1131
1134
|
`;
|
|
1132
1135
|
var SuffixContainer = import_styled_components10.default.span`
|
|
1133
1136
|
position: absolute;
|
|
@@ -1351,7 +1354,7 @@ function Modal({
|
|
|
1351
1354
|
...underlayProps,
|
|
1352
1355
|
style: transitionEnabled ? { backgroundColor } : {}
|
|
1353
1356
|
},
|
|
1354
|
-
/* @__PURE__ */ import_react13.default.createElement(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true }, /* @__PURE__ */ import_react13.default.createElement(
|
|
1357
|
+
/* @__PURE__ */ import_react13.default.createElement(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true }, /* @__PURE__ */ import_react13.default.createElement(DialogContainer, { bottomSheet, size }, /* @__PURE__ */ import_react13.default.createElement(
|
|
1355
1358
|
ModalDialog,
|
|
1356
1359
|
{
|
|
1357
1360
|
ref,
|
|
@@ -1377,7 +1380,7 @@ function Modal({
|
|
|
1377
1380
|
}
|
|
1378
1381
|
)
|
|
1379
1382
|
)
|
|
1380
|
-
))
|
|
1383
|
+
)))
|
|
1381
1384
|
))
|
|
1382
1385
|
);
|
|
1383
1386
|
}
|
|
@@ -1389,6 +1392,8 @@ var ModalContext = import_react13.default.createContext({
|
|
|
1389
1392
|
});
|
|
1390
1393
|
var ModalBackground = (0, import_react_spring.animated)(import_styled_components11.default.div`
|
|
1391
1394
|
z-index: ${({ zIndex }) => zIndex};
|
|
1395
|
+
overflow: scroll;
|
|
1396
|
+
display: flex;
|
|
1392
1397
|
position: fixed;
|
|
1393
1398
|
top: 0;
|
|
1394
1399
|
left: 0;
|
|
@@ -1397,34 +1402,52 @@ var ModalBackground = (0, import_react_spring.animated)(import_styled_components
|
|
|
1397
1402
|
|
|
1398
1403
|
${theme((o) => [o.bg.surface4])}
|
|
1399
1404
|
`);
|
|
1405
|
+
var DialogContainer = import_styled_components11.default.div`
|
|
1406
|
+
position: relative;
|
|
1407
|
+
margin: auto;
|
|
1408
|
+
padding: 24px 0;
|
|
1409
|
+
width: ${(p) => {
|
|
1410
|
+
switch (p.size) {
|
|
1411
|
+
case "S": {
|
|
1412
|
+
return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1413
|
+
}
|
|
1414
|
+
case "M": {
|
|
1415
|
+
return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1416
|
+
}
|
|
1417
|
+
case "L": {
|
|
1418
|
+
return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1419
|
+
}
|
|
1420
|
+
default: {
|
|
1421
|
+
return unreachable(p.size);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
}}px;
|
|
1425
|
+
|
|
1426
|
+
@media ${({ theme: theme4 }) => (0, import_utils5.maxWidth)(theme4.breakpoint.screen1)} {
|
|
1427
|
+
width: calc(100% - 48px);
|
|
1428
|
+
${(p) => p.bottomSheet !== false && import_styled_components11.css`
|
|
1429
|
+
margin: 0;
|
|
1430
|
+
padding: 0;
|
|
1431
|
+
bottom: 0;
|
|
1432
|
+
position: absolute;
|
|
1433
|
+
width: 100%;
|
|
1434
|
+
${p.bottomSheet === "full" ? "height: 100%" : ""};
|
|
1435
|
+
`}
|
|
1436
|
+
}
|
|
1437
|
+
`;
|
|
1400
1438
|
var ModalDialog = (0, import_react_spring.animated)(import_styled_components11.default.div`
|
|
1401
|
-
position:
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
transform: translate(-50%, -50%);
|
|
1405
|
-
width: ${(p) => p.size === "S" ? columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : p.size === "M" ? columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : p.size === "L" ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : unreachable(p.size)}px;
|
|
1439
|
+
position: relative;
|
|
1440
|
+
margin: auto;
|
|
1441
|
+
padding: 24px 0;
|
|
1406
1442
|
|
|
1407
1443
|
${theme((o) => [o.bg.background1, o.borderRadius(24)])}
|
|
1408
|
-
|
|
1409
1444
|
@media ${({ theme: theme4 }) => (0, import_utils5.maxWidth)(theme4.breakpoint.screen1)} {
|
|
1410
|
-
${(p) => p.bottomSheet
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
width: 100%;
|
|
1417
|
-
height: 100%;
|
|
1418
|
-
` : p.bottomSheet ? import_styled_components11.css`
|
|
1419
|
-
top: auto;
|
|
1420
|
-
bottom: 0;
|
|
1421
|
-
left: 0;
|
|
1422
|
-
transform: none;
|
|
1423
|
-
border-radius: 0;
|
|
1424
|
-
width: 100%;
|
|
1425
|
-
` : import_styled_components11.css`
|
|
1426
|
-
width: calc(100% - 48px);
|
|
1427
|
-
`}
|
|
1445
|
+
${(p) => p.bottomSheet !== false && import_styled_components11.css`
|
|
1446
|
+
border-radius: 0;
|
|
1447
|
+
${p.bottomSheet === "full" && import_styled_components11.css`
|
|
1448
|
+
height: 100%;
|
|
1449
|
+
`}
|
|
1450
|
+
`}
|
|
1428
1451
|
}
|
|
1429
1452
|
`);
|
|
1430
1453
|
var ModalCrossButton = (0, import_styled_components11.default)(IconButton_default)`
|
|
@@ -1484,6 +1507,7 @@ function LoadingSpinner({
|
|
|
1484
1507
|
return /* @__PURE__ */ import_react15.default.createElement(LoadingSpinnerRoot, { size, padding, transparent }, /* @__PURE__ */ import_react15.default.createElement(LoadingSpinnerIcon, null));
|
|
1485
1508
|
}
|
|
1486
1509
|
var LoadingSpinnerRoot = import_styled_components13.default.div.attrs({ role: "progressbar" })`
|
|
1510
|
+
box-sizing: content-box;
|
|
1487
1511
|
margin: auto;
|
|
1488
1512
|
padding: ${(props) => props.padding}px;
|
|
1489
1513
|
border-radius: 8px;
|
|
@@ -1535,156 +1559,21 @@ var LoadingSpinnerIcon = import_react15.default.forwardRef(function LoadingSpinn
|
|
|
1535
1559
|
});
|
|
1536
1560
|
|
|
1537
1561
|
// src/components/DropdownSelector/index.tsx
|
|
1538
|
-
var import_react20 = __toESM(require("react"));
|
|
1539
|
-
var import_styled_components19 = __toESM(require("styled-components"));
|
|
1540
|
-
var import_react_stately2 = require("react-stately");
|
|
1541
|
-
var import_utils8 = require("@charcoal-ui/utils");
|
|
1542
|
-
var import_visually_hidden2 = require("@react-aria/visually-hidden");
|
|
1543
|
-
var import_select = require("@react-aria/select");
|
|
1544
|
-
var import_button = require("@react-aria/button");
|
|
1545
|
-
|
|
1546
|
-
// src/components/DropdownSelector/Listbox.tsx
|
|
1547
|
-
var import_react18 = __toESM(require("react"));
|
|
1548
|
-
var import_styled_components17 = __toESM(require("styled-components"));
|
|
1549
|
-
var import_listbox3 = require("@react-aria/listbox");
|
|
1550
|
-
|
|
1551
|
-
// src/components/DropdownSelector/ListBoxSection.tsx
|
|
1552
|
-
var import_listbox2 = require("@react-aria/listbox");
|
|
1553
|
-
var import_separator = require("@react-aria/separator");
|
|
1554
1562
|
var import_react17 = __toESM(require("react"));
|
|
1555
|
-
var import_styled_components16 = __toESM(require("styled-components"));
|
|
1556
|
-
|
|
1557
|
-
// src/components/DropdownSelector/Option.tsx
|
|
1558
|
-
var import_react16 = __toESM(require("react"));
|
|
1559
|
-
var import_styled_components14 = __toESM(require("styled-components"));
|
|
1560
|
-
var import_listbox = require("@react-aria/listbox");
|
|
1561
|
-
var import_utils6 = require("@react-aria/utils");
|
|
1562
|
-
var import_focus2 = require("@react-aria/focus");
|
|
1563
|
-
var import_utils7 = require("@charcoal-ui/utils");
|
|
1564
|
-
function Option({ item, state, mode }) {
|
|
1565
|
-
const ref = (0, import_react16.useRef)(null);
|
|
1566
|
-
const { optionProps, isSelected } = (0, import_listbox.useOption)(item, state, ref);
|
|
1567
|
-
const { focusProps } = (0, import_focus2.useFocusRing)();
|
|
1568
|
-
return /* @__PURE__ */ import_react16.default.createElement(OptionRoot, { ...(0, import_utils6.mergeProps)(optionProps, focusProps), ref, mode }, /* @__PURE__ */ import_react16.default.createElement(OptionCheckIcon, { name: "16/Check", isSelected }), /* @__PURE__ */ import_react16.default.createElement(OptionText, null, item.rendered));
|
|
1569
|
-
}
|
|
1570
|
-
var OptionRoot = import_styled_components14.default.li`
|
|
1571
|
-
display: flex;
|
|
1572
|
-
align-items: center;
|
|
1573
|
-
gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
|
|
1574
|
-
height: 40px;
|
|
1575
|
-
cursor: pointer;
|
|
1576
|
-
outline: none;
|
|
1577
|
-
|
|
1578
|
-
${({ mode }) => theme((o) => [
|
|
1579
|
-
o.padding.horizontal(8),
|
|
1580
|
-
mode === "separator" && o.padding.vertical(4)
|
|
1581
|
-
])}
|
|
1582
|
-
|
|
1583
|
-
&:focus {
|
|
1584
|
-
${theme((o) => [o.bg.surface3])}
|
|
1585
|
-
}
|
|
1586
|
-
`;
|
|
1587
|
-
var OptionCheckIcon = (0, import_styled_components14.default)(Icon_default)`
|
|
1588
|
-
visibility: hidden;
|
|
1589
|
-
${theme((o) => [o.font.text2])}
|
|
1590
|
-
|
|
1591
|
-
${({ isSelected }) => isSelected && import_styled_components14.css`
|
|
1592
|
-
visibility: visible;
|
|
1593
|
-
`}
|
|
1594
|
-
`;
|
|
1595
|
-
var OptionText = import_styled_components14.default.span`
|
|
1596
|
-
display: block;
|
|
1597
|
-
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1598
|
-
`;
|
|
1599
|
-
|
|
1600
|
-
// src/components/DropdownSelector/Divider.tsx
|
|
1601
1563
|
var import_styled_components15 = __toESM(require("styled-components"));
|
|
1602
|
-
var
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
&:before {
|
|
1606
|
-
content: '';
|
|
1607
|
-
display: block;
|
|
1608
|
-
width: 100%;
|
|
1609
|
-
height: 1px;
|
|
1610
|
-
background: #00000014;
|
|
1611
|
-
}
|
|
1612
|
-
`;
|
|
1613
|
-
|
|
1614
|
-
// src/components/DropdownSelector/ListBoxSection.tsx
|
|
1615
|
-
function ListBoxSection(props) {
|
|
1616
|
-
const { state } = props;
|
|
1617
|
-
const { itemProps, headingProps, groupProps } = (0, import_listbox2.useListBoxSection)({
|
|
1618
|
-
heading: props.section.rendered,
|
|
1619
|
-
"aria-label": props.section["aria-label"]
|
|
1620
|
-
});
|
|
1621
|
-
const { separatorProps } = (0, import_separator.useSeparator)({
|
|
1622
|
-
elementType: "li"
|
|
1623
|
-
});
|
|
1624
|
-
return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, props.section.key !== props.state.collection.getFirstKey() && /* @__PURE__ */ import_react17.default.createElement(Divider, { ...separatorProps, role: "separator" }), /* @__PURE__ */ import_react17.default.createElement(StyledLi, { ...itemProps }, props.section.rendered != null && /* @__PURE__ */ import_react17.default.createElement(SectionSpan, { ...headingProps }, props.section.rendered), /* @__PURE__ */ import_react17.default.createElement(StyledUl, { ...groupProps }, [...props.section.childNodes].map((node) => /* @__PURE__ */ import_react17.default.createElement(Option, { key: node.key, item: node, state })))));
|
|
1625
|
-
}
|
|
1626
|
-
var SectionSpan = import_styled_components16.default.span`
|
|
1627
|
-
${theme((o) => [
|
|
1628
|
-
o.font.text3,
|
|
1629
|
-
o.typography(12).bold,
|
|
1630
|
-
o.margin.bottom(8).left(16).top(16)
|
|
1631
|
-
])}
|
|
1632
|
-
`;
|
|
1633
|
-
var StyledUl = import_styled_components16.default.ul`
|
|
1634
|
-
padding-left: 0;
|
|
1635
|
-
margin: 0;
|
|
1636
|
-
box-sizing: border-box;
|
|
1637
|
-
list-style: none;
|
|
1638
|
-
overflow: hidden;
|
|
1639
|
-
`;
|
|
1640
|
-
var StyledLi = import_styled_components16.default.li``;
|
|
1641
|
-
|
|
1642
|
-
// src/components/DropdownSelector/Listbox.tsx
|
|
1643
|
-
var Listbox = ({
|
|
1644
|
-
state,
|
|
1645
|
-
mode = "default",
|
|
1646
|
-
...props
|
|
1647
|
-
}) => {
|
|
1648
|
-
const ref = (0, import_react18.useRef)(null);
|
|
1649
|
-
const { listBoxProps } = (0, import_listbox3.useListBox)(props, state, ref);
|
|
1650
|
-
const collection = (0, import_react18.useMemo)(
|
|
1651
|
-
() => [...state.collection].map((node, index, self) => ({
|
|
1652
|
-
node,
|
|
1653
|
-
first: index === 0,
|
|
1654
|
-
last: index === self.length - 1
|
|
1655
|
-
})),
|
|
1656
|
-
[state.collection]
|
|
1657
|
-
);
|
|
1658
|
-
return /* @__PURE__ */ import_react18.default.createElement(ListboxRoot, { ref, ...listBoxProps }, collection.map(({ node, last }) => /* @__PURE__ */ import_react18.default.createElement(import_react18.Fragment, { key: node.key }, node.type === "section" ? /* @__PURE__ */ import_react18.default.createElement(ListBoxSection, { section: node, state }) : /* @__PURE__ */ import_react18.default.createElement(Option, { item: node, state, mode }), !last && mode === "separator" && /* @__PURE__ */ import_react18.default.createElement(Divider, null))));
|
|
1659
|
-
};
|
|
1660
|
-
var Listbox_default = (0, import_react18.memo)(Listbox);
|
|
1661
|
-
var ListboxRoot = import_styled_components17.default.ul`
|
|
1662
|
-
padding-left: 0;
|
|
1663
|
-
margin: 0;
|
|
1664
|
-
box-sizing: border-box;
|
|
1665
|
-
list-style: none;
|
|
1666
|
-
overflow: auto;
|
|
1667
|
-
max-height: inherit;
|
|
1668
|
-
|
|
1669
|
-
${theme((o) => [
|
|
1670
|
-
o.bg.background1,
|
|
1671
|
-
o.border.default,
|
|
1672
|
-
o.borderRadius(8),
|
|
1673
|
-
o.padding.vertical(8),
|
|
1674
|
-
o.outline.default.focus
|
|
1675
|
-
])}
|
|
1676
|
-
`;
|
|
1564
|
+
var import_react_stately2 = require("react-stately");
|
|
1565
|
+
var import_utils6 = require("@charcoal-ui/utils");
|
|
1677
1566
|
|
|
1678
1567
|
// src/components/DropdownSelector/DropdownPopover.tsx
|
|
1679
|
-
var
|
|
1568
|
+
var import_react16 = __toESM(require("react"));
|
|
1680
1569
|
var import_overlays3 = require("@react-aria/overlays");
|
|
1681
|
-
var
|
|
1682
|
-
var DropdownPopoverDiv =
|
|
1570
|
+
var import_styled_components14 = __toESM(require("styled-components"));
|
|
1571
|
+
var DropdownPopoverDiv = import_styled_components14.default.div`
|
|
1683
1572
|
width: 100%;
|
|
1684
1573
|
${theme((o) => o.margin.top(4).bottom(4))}
|
|
1685
1574
|
`;
|
|
1686
1575
|
function DropdownPopover({ children, state, ...props }) {
|
|
1687
|
-
const ref = (0,
|
|
1576
|
+
const ref = (0, import_react16.useRef)(null);
|
|
1688
1577
|
const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
|
|
1689
1578
|
{
|
|
1690
1579
|
...props,
|
|
@@ -1693,131 +1582,122 @@ function DropdownPopover({ children, state, ...props }) {
|
|
|
1693
1582
|
},
|
|
1694
1583
|
state
|
|
1695
1584
|
);
|
|
1696
|
-
(0,
|
|
1585
|
+
(0, import_react16.useEffect)(() => {
|
|
1697
1586
|
if (ref.current && props.triggerRef.current) {
|
|
1698
1587
|
ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
|
|
1699
1588
|
}
|
|
1700
1589
|
}, [props.triggerRef]);
|
|
1701
|
-
(0,
|
|
1590
|
+
(0, import_react16.useEffect)(() => {
|
|
1702
1591
|
if (state.isOpen && props.value !== void 0) {
|
|
1703
|
-
window.
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
selectedElement?.scrollIntoView({ block: "center" });
|
|
1712
|
-
window.scrollTo(windowScrollX, windowScrollY);
|
|
1713
|
-
});
|
|
1592
|
+
const windowScrollY = window.scrollY;
|
|
1593
|
+
const windowScrollX = window.scrollX;
|
|
1594
|
+
const selectedElement = document.querySelector(
|
|
1595
|
+
`[data-key="${props.value.toString()}"]`
|
|
1596
|
+
);
|
|
1597
|
+
selectedElement?.scrollIntoView({ block: "center" });
|
|
1598
|
+
selectedElement?.focus();
|
|
1599
|
+
window.scrollTo(windowScrollX, windowScrollY);
|
|
1714
1600
|
}
|
|
1715
1601
|
}, [props.value, state.isOpen]);
|
|
1716
|
-
return /* @__PURE__ */
|
|
1602
|
+
return /* @__PURE__ */ import_react16.default.createElement(import_overlays3.Overlay, { portalContainer: document.body }, /* @__PURE__ */ import_react16.default.createElement("div", { ...underlayProps, style: { position: "fixed", inset: 0 } }), /* @__PURE__ */ import_react16.default.createElement(DropdownPopoverDiv, { ...popoverProps, ref }, /* @__PURE__ */ import_react16.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() }), children, /* @__PURE__ */ import_react16.default.createElement(import_overlays3.DismissButton, { onDismiss: () => state.close() })));
|
|
1717
1603
|
}
|
|
1718
1604
|
|
|
1719
1605
|
// src/components/DropdownSelector/index.tsx
|
|
1720
|
-
var
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
isDisabled: disabled,
|
|
1743
|
-
isRequired: required,
|
|
1744
|
-
errorMessage: invalid && assertiveText,
|
|
1745
|
-
validationState: invalid ? "invalid" : "valid",
|
|
1746
|
-
onSelectionChange: props.onChange,
|
|
1747
|
-
selectedKey: props.value,
|
|
1748
|
-
defaultSelectedKey: props.defaultValue
|
|
1749
|
-
}),
|
|
1750
|
-
[assertiveText, disabled, invalid, label, open, props, required]
|
|
1751
|
-
);
|
|
1752
|
-
const state = (0, import_react_stately2.useSelectState)(selectProps);
|
|
1753
|
-
const {
|
|
1754
|
-
labelProps,
|
|
1755
|
-
triggerProps,
|
|
1756
|
-
valueProps,
|
|
1757
|
-
menuProps,
|
|
1758
|
-
errorMessageProps,
|
|
1759
|
-
descriptionProps
|
|
1760
|
-
} = (0, import_select.useSelect)(selectProps, state, triggerRef);
|
|
1761
|
-
const { buttonProps } = (0, import_button.useButton)(triggerProps, triggerRef);
|
|
1762
|
-
const hasAssertiveText = assertiveText !== void 0 && assertiveText.length > 0;
|
|
1763
|
-
return /* @__PURE__ */ import_react20.default.createElement(DropdownSelectorRoot, { "aria-disabled": disabled, className }, /* @__PURE__ */ import_react20.default.createElement(
|
|
1606
|
+
var DropdownSelectorContext = (0, import_react17.createContext)({
|
|
1607
|
+
value: "",
|
|
1608
|
+
setValue: (_v) => {
|
|
1609
|
+
}
|
|
1610
|
+
});
|
|
1611
|
+
var defaultRequiredText = "*\u5FC5\u9808";
|
|
1612
|
+
function DropdownSelector(props) {
|
|
1613
|
+
const triggerRef = (0, import_react17.useRef)(null);
|
|
1614
|
+
const state = (0, import_react_stately2.useOverlayTriggerState)({});
|
|
1615
|
+
let preview;
|
|
1616
|
+
const childArray = import_react17.default.Children.toArray(props.children);
|
|
1617
|
+
for (let i = 0; i < childArray.length; i++) {
|
|
1618
|
+
const child = childArray[i];
|
|
1619
|
+
if (import_react17.default.isValidElement(child) && "value" in child.props) {
|
|
1620
|
+
const find = child.props.value === props.value;
|
|
1621
|
+
if (find && "children" in child.props) {
|
|
1622
|
+
preview = child.props.children;
|
|
1623
|
+
break;
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
return /* @__PURE__ */ import_react17.default.createElement(DropdownSelectorRoot, { "aria-disabled": props.disabled }, props.showLabel === true && /* @__PURE__ */ import_react17.default.createElement(
|
|
1764
1628
|
DropdownFieldLabel,
|
|
1765
1629
|
{
|
|
1766
|
-
label,
|
|
1767
|
-
required,
|
|
1768
|
-
requiredText,
|
|
1769
|
-
subLabel
|
|
1770
|
-
...labelProps,
|
|
1771
|
-
...!showLabel ? visuallyHiddenProps : {}
|
|
1630
|
+
label: props.label,
|
|
1631
|
+
required: props.required,
|
|
1632
|
+
requiredText: props.requiredText ?? defaultRequiredText,
|
|
1633
|
+
subLabel: props.subLabel
|
|
1772
1634
|
}
|
|
1773
|
-
), /* @__PURE__ */
|
|
1774
|
-
|
|
1635
|
+
), /* @__PURE__ */ import_react17.default.createElement(
|
|
1636
|
+
DropdownButton,
|
|
1775
1637
|
{
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1638
|
+
invalid: props.invalid,
|
|
1639
|
+
disabled: props.disabled,
|
|
1640
|
+
onClick: () => {
|
|
1641
|
+
if (props.disabled === true)
|
|
1642
|
+
return;
|
|
1643
|
+
state.open();
|
|
1644
|
+
},
|
|
1645
|
+
ref: triggerRef
|
|
1646
|
+
},
|
|
1647
|
+
/* @__PURE__ */ import_react17.default.createElement(DropdownButtonText, null, props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview),
|
|
1648
|
+
/* @__PURE__ */ import_react17.default.createElement(DropdownButtonIcon, { name: "16/Menu" })
|
|
1649
|
+
), state.isOpen && /* @__PURE__ */ import_react17.default.createElement(
|
|
1784
1650
|
DropdownPopover,
|
|
1785
1651
|
{
|
|
1786
1652
|
state,
|
|
1787
1653
|
triggerRef,
|
|
1788
|
-
value: props.value
|
|
1654
|
+
value: props.value
|
|
1789
1655
|
},
|
|
1790
|
-
/* @__PURE__ */
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
}
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1656
|
+
/* @__PURE__ */ import_react17.default.createElement(ListboxRoot, null, /* @__PURE__ */ import_react17.default.createElement(
|
|
1657
|
+
DropdownSelectorContext.Provider,
|
|
1658
|
+
{
|
|
1659
|
+
value: {
|
|
1660
|
+
value: props.value,
|
|
1661
|
+
setValue: (v) => {
|
|
1662
|
+
props.onChange(v);
|
|
1663
|
+
state.close();
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
},
|
|
1667
|
+
props.children
|
|
1668
|
+
))
|
|
1669
|
+
), props.assistiveText !== void 0 && /* @__PURE__ */ import_react17.default.createElement(AssertiveText, { invalid: props.invalid }, props.assistiveText));
|
|
1670
|
+
}
|
|
1671
|
+
var ListboxRoot = import_styled_components15.default.ul`
|
|
1672
|
+
padding-left: 0;
|
|
1673
|
+
margin: 0;
|
|
1674
|
+
box-sizing: border-box;
|
|
1675
|
+
list-style: none;
|
|
1676
|
+
overflow: auto;
|
|
1677
|
+
max-height: inherit;
|
|
1678
|
+
|
|
1679
|
+
${theme((o) => [
|
|
1680
|
+
o.bg.background1,
|
|
1681
|
+
o.border.default,
|
|
1682
|
+
o.borderRadius(8),
|
|
1683
|
+
o.padding.vertical(8)
|
|
1684
|
+
])}
|
|
1685
|
+
`;
|
|
1686
|
+
var DropdownSelectorRoot = import_styled_components15.default.div`
|
|
1804
1687
|
display: inline-block;
|
|
1805
1688
|
width: 100%;
|
|
1806
1689
|
|
|
1807
|
-
${
|
|
1690
|
+
${import_utils6.disabledSelector} {
|
|
1808
1691
|
cursor: default;
|
|
1809
1692
|
${theme((o) => o.disabled)}
|
|
1810
1693
|
}
|
|
1811
1694
|
`;
|
|
1812
|
-
var DropdownFieldLabel = (0,
|
|
1695
|
+
var DropdownFieldLabel = (0, import_styled_components15.default)(FieldLabel_default)`
|
|
1813
1696
|
width: 100%;
|
|
1814
1697
|
|
|
1815
1698
|
${theme((o) => o.margin.bottom(8))}
|
|
1816
1699
|
`;
|
|
1817
|
-
var
|
|
1818
|
-
position: relative;
|
|
1819
|
-
`;
|
|
1820
|
-
var DropdownButton = import_styled_components19.default.button`
|
|
1700
|
+
var DropdownButton = import_styled_components15.default.button`
|
|
1821
1701
|
display: flex;
|
|
1822
1702
|
justify-content: space-between;
|
|
1823
1703
|
align-items: center;
|
|
@@ -1827,7 +1707,7 @@ var DropdownButton = import_styled_components19.default.button`
|
|
|
1827
1707
|
box-sizing: border-box;
|
|
1828
1708
|
cursor: pointer;
|
|
1829
1709
|
|
|
1830
|
-
${
|
|
1710
|
+
${import_utils6.disabledSelector} {
|
|
1831
1711
|
cursor: default;
|
|
1832
1712
|
}
|
|
1833
1713
|
|
|
@@ -1837,68 +1717,165 @@ var DropdownButton = import_styled_components19.default.button`
|
|
|
1837
1717
|
o.outline.default.focus,
|
|
1838
1718
|
o.bg.surface3,
|
|
1839
1719
|
o.borderRadius(4),
|
|
1840
|
-
invalid && o.outline.assertive
|
|
1720
|
+
invalid === true && o.outline.assertive
|
|
1841
1721
|
])}
|
|
1842
1722
|
`;
|
|
1843
|
-
var DropdownButtonText =
|
|
1723
|
+
var DropdownButtonText = import_styled_components15.default.span`
|
|
1844
1724
|
text-align: left;
|
|
1845
1725
|
|
|
1846
1726
|
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1847
1727
|
`;
|
|
1848
|
-
var DropdownButtonIcon = (0,
|
|
1728
|
+
var DropdownButtonIcon = (0, import_styled_components15.default)(Icon_default)`
|
|
1849
1729
|
${theme((o) => [o.font.text2])}
|
|
1850
1730
|
`;
|
|
1851
|
-
var AssertiveText =
|
|
1731
|
+
var AssertiveText = import_styled_components15.default.div`
|
|
1852
1732
|
${({ invalid }) => theme((o) => [
|
|
1853
1733
|
o.typography(14),
|
|
1854
1734
|
o.margin.top(8),
|
|
1855
|
-
invalid ? o.font.assertive : o.font.text2
|
|
1735
|
+
invalid === true ? o.font.assertive : o.font.text2
|
|
1856
1736
|
])}
|
|
1857
1737
|
`;
|
|
1858
1738
|
|
|
1739
|
+
// src/components/DropdownSelector/OptionItem.tsx
|
|
1740
|
+
var import_react18 = __toESM(require("react"));
|
|
1741
|
+
var import_styled_components16 = __toESM(require("styled-components"));
|
|
1742
|
+
var import_utils7 = require("@charcoal-ui/utils");
|
|
1743
|
+
|
|
1744
|
+
// src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx
|
|
1745
|
+
function handleFocusByKeyBoard(element) {
|
|
1746
|
+
const parent = element.parentElement;
|
|
1747
|
+
if (!parent)
|
|
1748
|
+
return;
|
|
1749
|
+
const rect = element.getBoundingClientRect();
|
|
1750
|
+
const parentRect = parent.getBoundingClientRect();
|
|
1751
|
+
if (rect.bottom > parentRect.bottom) {
|
|
1752
|
+
parent.scrollTo({
|
|
1753
|
+
top: parent.scrollTop + rect.bottom - parentRect.bottom
|
|
1754
|
+
});
|
|
1755
|
+
} else if (rect.top < parentRect.top) {
|
|
1756
|
+
parent.scrollTo({
|
|
1757
|
+
top: parent.scrollTop - (parentRect.top - rect.top)
|
|
1758
|
+
});
|
|
1759
|
+
}
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
// src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx
|
|
1763
|
+
function focusIfHTMLLIElement(element) {
|
|
1764
|
+
if (element instanceof HTMLLIElement) {
|
|
1765
|
+
element.focus({ preventScroll: true });
|
|
1766
|
+
handleFocusByKeyBoard(element);
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
// src/components/DropdownSelector/OptionItem.tsx
|
|
1771
|
+
function OptionItem(props) {
|
|
1772
|
+
const { value, setValue } = (0, import_react18.useContext)(DropdownSelectorContext);
|
|
1773
|
+
const isSelected = props.value === value;
|
|
1774
|
+
const onSelect = () => {
|
|
1775
|
+
setValue(props.value);
|
|
1776
|
+
};
|
|
1777
|
+
return /* @__PURE__ */ import_react18.default.createElement(
|
|
1778
|
+
OptionRoot,
|
|
1779
|
+
{
|
|
1780
|
+
"data-key": props.value,
|
|
1781
|
+
onMouseMove: (e) => {
|
|
1782
|
+
e.currentTarget.focus({ preventScroll: true });
|
|
1783
|
+
},
|
|
1784
|
+
onKeyDown: (e) => {
|
|
1785
|
+
if (e.key === "Enter") {
|
|
1786
|
+
onSelect();
|
|
1787
|
+
} else if (e.key === "ArrowUp") {
|
|
1788
|
+
e.preventDefault();
|
|
1789
|
+
const prev = e.currentTarget.previousElementSibling;
|
|
1790
|
+
if (prev === null) {
|
|
1791
|
+
focusIfHTMLLIElement(e.currentTarget.parentElement?.lastChild);
|
|
1792
|
+
}
|
|
1793
|
+
focusIfHTMLLIElement(prev);
|
|
1794
|
+
} else if (e.key === "ArrowDown") {
|
|
1795
|
+
e.preventDefault();
|
|
1796
|
+
const next = e.currentTarget.nextElementSibling;
|
|
1797
|
+
if (next === null) {
|
|
1798
|
+
focusIfHTMLLIElement(e.currentTarget.parentElement?.firstChild);
|
|
1799
|
+
}
|
|
1800
|
+
focusIfHTMLLIElement(next);
|
|
1801
|
+
} else if (e.key === " ") {
|
|
1802
|
+
e.preventDefault();
|
|
1803
|
+
}
|
|
1804
|
+
},
|
|
1805
|
+
onClick: onSelect,
|
|
1806
|
+
tabIndex: -1
|
|
1807
|
+
},
|
|
1808
|
+
isSelected && /* @__PURE__ */ import_react18.default.createElement(OptionCheckIcon, { name: "16/Check" }),
|
|
1809
|
+
/* @__PURE__ */ import_react18.default.createElement(OptionText, { isSelected }, props.children)
|
|
1810
|
+
);
|
|
1811
|
+
}
|
|
1812
|
+
var OptionRoot = import_styled_components16.default.li`
|
|
1813
|
+
display: flex;
|
|
1814
|
+
align-items: center;
|
|
1815
|
+
gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
|
|
1816
|
+
height: 40px;
|
|
1817
|
+
cursor: pointer;
|
|
1818
|
+
outline: none;
|
|
1819
|
+
|
|
1820
|
+
${theme((o) => [o.padding.horizontal(8)])}
|
|
1821
|
+
|
|
1822
|
+
:focus {
|
|
1823
|
+
${theme((o) => [o.bg.surface3])}
|
|
1824
|
+
}
|
|
1825
|
+
`;
|
|
1826
|
+
var OptionCheckIcon = (0, import_styled_components16.default)(Icon_default)`
|
|
1827
|
+
${theme((o) => [o.font.text2])}
|
|
1828
|
+
`;
|
|
1829
|
+
var OptionText = import_styled_components16.default.span`
|
|
1830
|
+
display: block;
|
|
1831
|
+
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1832
|
+
margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
|
|
1833
|
+
`;
|
|
1834
|
+
|
|
1859
1835
|
// src/components/SegmentedControl/index.tsx
|
|
1860
|
-
var
|
|
1836
|
+
var import_react20 = __toESM(require("react"));
|
|
1861
1837
|
var import_react_stately3 = require("react-stately");
|
|
1862
1838
|
var import_radio = require("@react-aria/radio");
|
|
1863
|
-
var
|
|
1864
|
-
var
|
|
1839
|
+
var import_styled_components17 = __toESM(require("styled-components"));
|
|
1840
|
+
var import_utils8 = require("@charcoal-ui/utils");
|
|
1865
1841
|
|
|
1866
1842
|
// src/components/SegmentedControl/RadioGroupContext.tsx
|
|
1867
|
-
var
|
|
1868
|
-
var RadioContext = (0,
|
|
1843
|
+
var import_react19 = __toESM(require("react"));
|
|
1844
|
+
var RadioContext = (0, import_react19.createContext)(null);
|
|
1869
1845
|
var RadioProvider = ({
|
|
1870
1846
|
value,
|
|
1871
1847
|
children
|
|
1872
1848
|
}) => {
|
|
1873
|
-
return /* @__PURE__ */
|
|
1849
|
+
return /* @__PURE__ */ import_react19.default.createElement(RadioContext.Provider, { value }, children);
|
|
1874
1850
|
};
|
|
1875
1851
|
var useRadioContext = () => {
|
|
1876
|
-
const state = (0,
|
|
1852
|
+
const state = (0, import_react19.useContext)(RadioContext);
|
|
1877
1853
|
if (state === null)
|
|
1878
1854
|
throw new Error("`<RadioProvider>` is not likely mounted.");
|
|
1879
1855
|
return state;
|
|
1880
1856
|
};
|
|
1881
1857
|
|
|
1882
1858
|
// src/components/SegmentedControl/index.tsx
|
|
1883
|
-
var SegmentedControl = (0,
|
|
1859
|
+
var SegmentedControl = (0, import_react20.forwardRef)(
|
|
1884
1860
|
function SegmentedControlInner(props, ref) {
|
|
1885
|
-
const ariaRadioGroupProps = (0,
|
|
1861
|
+
const ariaRadioGroupProps = (0, import_react20.useMemo)(
|
|
1886
1862
|
() => ({
|
|
1887
1863
|
...props,
|
|
1888
1864
|
isDisabled: props.disabled,
|
|
1889
1865
|
isReadOnly: props.readonly,
|
|
1890
|
-
isRequired: props.required
|
|
1866
|
+
isRequired: props.required,
|
|
1867
|
+
"aria-label": props.name
|
|
1891
1868
|
}),
|
|
1892
1869
|
[props]
|
|
1893
1870
|
);
|
|
1894
1871
|
const state = (0, import_react_stately3.useRadioGroupState)(ariaRadioGroupProps);
|
|
1895
1872
|
const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
|
|
1896
|
-
const segmentedControlItems = (0,
|
|
1873
|
+
const segmentedControlItems = (0, import_react20.useMemo)(() => {
|
|
1897
1874
|
return props.data.map(
|
|
1898
1875
|
(d) => typeof d === "string" ? { value: d, label: d } : d
|
|
1899
1876
|
);
|
|
1900
1877
|
}, [props.data]);
|
|
1901
|
-
return /* @__PURE__ */
|
|
1878
|
+
return /* @__PURE__ */ import_react20.default.createElement(SegmentedControlRoot, { ref, ...radioGroupProps }, /* @__PURE__ */ import_react20.default.createElement(RadioProvider, { value: state }, segmentedControlItems.map((item) => /* @__PURE__ */ import_react20.default.createElement(
|
|
1902
1879
|
Segmented,
|
|
1903
1880
|
{
|
|
1904
1881
|
key: item.value,
|
|
@@ -1909,11 +1886,11 @@ var SegmentedControl = (0, import_react22.forwardRef)(
|
|
|
1909
1886
|
))));
|
|
1910
1887
|
}
|
|
1911
1888
|
);
|
|
1912
|
-
var SegmentedControl_default = (0,
|
|
1889
|
+
var SegmentedControl_default = (0, import_react20.memo)(SegmentedControl);
|
|
1913
1890
|
var Segmented = ({ children, ...props }) => {
|
|
1914
1891
|
const state = useRadioContext();
|
|
1915
|
-
const ref = (0,
|
|
1916
|
-
const ariaRadioProps = (0,
|
|
1892
|
+
const ref = (0, import_react20.useRef)(null);
|
|
1893
|
+
const ariaRadioProps = (0, import_react20.useMemo)(
|
|
1917
1894
|
() => ({ ...props, isDisabled: props.disabled }),
|
|
1918
1895
|
[props]
|
|
1919
1896
|
);
|
|
@@ -1922,30 +1899,30 @@ var Segmented = ({ children, ...props }) => {
|
|
|
1922
1899
|
state,
|
|
1923
1900
|
ref
|
|
1924
1901
|
);
|
|
1925
|
-
return /* @__PURE__ */
|
|
1902
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
1926
1903
|
SegmentedRoot,
|
|
1927
1904
|
{
|
|
1928
1905
|
"aria-disabled": isDisabled || state.isReadOnly,
|
|
1929
1906
|
checked: isSelected
|
|
1930
1907
|
},
|
|
1931
|
-
/* @__PURE__ */
|
|
1932
|
-
/* @__PURE__ */
|
|
1908
|
+
/* @__PURE__ */ import_react20.default.createElement(SegmentedInput, { ...inputProps, ref }),
|
|
1909
|
+
/* @__PURE__ */ import_react20.default.createElement(RadioLabel2, null, /* @__PURE__ */ import_react20.default.createElement(SegmentedLabelInner, null, children))
|
|
1933
1910
|
);
|
|
1934
1911
|
};
|
|
1935
|
-
var SegmentedControlRoot =
|
|
1912
|
+
var SegmentedControlRoot = import_styled_components17.default.div`
|
|
1936
1913
|
display: inline-flex;
|
|
1937
1914
|
align-items: center;
|
|
1938
1915
|
|
|
1939
1916
|
${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
|
|
1940
1917
|
`;
|
|
1941
|
-
var SegmentedRoot =
|
|
1918
|
+
var SegmentedRoot = import_styled_components17.default.label`
|
|
1942
1919
|
position: relative;
|
|
1943
1920
|
display: flex;
|
|
1944
1921
|
align-items: center;
|
|
1945
1922
|
cursor: pointer;
|
|
1946
1923
|
height: 32px;
|
|
1947
1924
|
|
|
1948
|
-
${
|
|
1925
|
+
${import_utils8.disabledSelector} {
|
|
1949
1926
|
cursor: default;
|
|
1950
1927
|
}
|
|
1951
1928
|
|
|
@@ -1957,7 +1934,7 @@ var SegmentedRoot = import_styled_components20.default.label`
|
|
|
1957
1934
|
checked === true ? o.font.text5 : o.font.text2
|
|
1958
1935
|
])}
|
|
1959
1936
|
`;
|
|
1960
|
-
var SegmentedInput =
|
|
1937
|
+
var SegmentedInput = import_styled_components17.default.input`
|
|
1961
1938
|
position: absolute;
|
|
1962
1939
|
|
|
1963
1940
|
height: 0px;
|
|
@@ -1971,26 +1948,26 @@ var SegmentedInput = import_styled_components20.default.input`
|
|
|
1971
1948
|
white-space: nowrap;
|
|
1972
1949
|
opacity: 0;
|
|
1973
1950
|
`;
|
|
1974
|
-
var RadioLabel2 =
|
|
1951
|
+
var RadioLabel2 = import_styled_components17.default.div`
|
|
1975
1952
|
background: transparent;
|
|
1976
1953
|
display: flex;
|
|
1977
1954
|
align-items: center;
|
|
1978
1955
|
height: 22px;
|
|
1979
1956
|
`;
|
|
1980
|
-
var SegmentedLabelInner =
|
|
1957
|
+
var SegmentedLabelInner = import_styled_components17.default.div`
|
|
1981
1958
|
${theme((o) => [o.typography(14)])}
|
|
1982
1959
|
`;
|
|
1983
1960
|
|
|
1984
1961
|
// src/components/Checkbox/index.tsx
|
|
1985
|
-
var
|
|
1986
|
-
var
|
|
1962
|
+
var import_react21 = __toESM(require("react"));
|
|
1963
|
+
var import_styled_components18 = __toESM(require("styled-components"));
|
|
1987
1964
|
var import_checkbox = require("@react-aria/checkbox");
|
|
1988
|
-
var
|
|
1965
|
+
var import_utils9 = require("@react-aria/utils");
|
|
1989
1966
|
var import_react_stately4 = require("react-stately");
|
|
1990
|
-
var
|
|
1991
|
-
var Checkbox = (0,
|
|
1967
|
+
var import_utils10 = require("@charcoal-ui/utils");
|
|
1968
|
+
var Checkbox = (0, import_react21.forwardRef)(
|
|
1992
1969
|
function CheckboxInner(props, ref) {
|
|
1993
|
-
const ariaCheckboxProps = (0,
|
|
1970
|
+
const ariaCheckboxProps = (0, import_react21.useMemo)(
|
|
1994
1971
|
() => ({
|
|
1995
1972
|
...props,
|
|
1996
1973
|
isSelected: props.checked,
|
|
@@ -2001,32 +1978,32 @@ var Checkbox = (0, import_react23.forwardRef)(
|
|
|
2001
1978
|
[props]
|
|
2002
1979
|
);
|
|
2003
1980
|
const state = (0, import_react_stately4.useToggleState)(ariaCheckboxProps);
|
|
2004
|
-
const objectRef = (0,
|
|
1981
|
+
const objectRef = (0, import_utils9.useObjectRef)(ref);
|
|
2005
1982
|
const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
|
|
2006
1983
|
const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
|
|
2007
|
-
return /* @__PURE__ */
|
|
1984
|
+
return /* @__PURE__ */ import_react21.default.createElement(InputRoot, { "aria-disabled": isDisabled }, /* @__PURE__ */ import_react21.default.createElement(CheckboxRoot, null, /* @__PURE__ */ import_react21.default.createElement(CheckboxInput, { type: "checkbox", ...inputProps }), /* @__PURE__ */ import_react21.default.createElement(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked }, /* @__PURE__ */ import_react21.default.createElement(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }))), "children" in props && /* @__PURE__ */ import_react21.default.createElement(InputLabel, null, props.children));
|
|
2008
1985
|
}
|
|
2009
1986
|
);
|
|
2010
|
-
var Checkbox_default = (0,
|
|
2011
|
-
var hiddenCss =
|
|
1987
|
+
var Checkbox_default = (0, import_react21.memo)(Checkbox);
|
|
1988
|
+
var hiddenCss = import_styled_components18.css`
|
|
2012
1989
|
visibility: hidden;
|
|
2013
1990
|
`;
|
|
2014
|
-
var InputRoot =
|
|
1991
|
+
var InputRoot = import_styled_components18.default.label`
|
|
2015
1992
|
position: relative;
|
|
2016
1993
|
display: flex;
|
|
2017
1994
|
|
|
2018
1995
|
cursor: pointer;
|
|
2019
|
-
${
|
|
1996
|
+
${import_utils10.disabledSelector} {
|
|
2020
1997
|
cursor: default;
|
|
2021
1998
|
}
|
|
2022
1999
|
|
|
2023
|
-
gap: ${({ theme: theme4 }) => (0,
|
|
2000
|
+
gap: ${({ theme: theme4 }) => (0, import_utils10.px)(theme4.spacing[4])};
|
|
2024
2001
|
${theme((o) => [o.disabled])}
|
|
2025
2002
|
`;
|
|
2026
|
-
var CheckboxRoot =
|
|
2003
|
+
var CheckboxRoot = import_styled_components18.default.div`
|
|
2027
2004
|
position: relative;
|
|
2028
2005
|
`;
|
|
2029
|
-
var CheckboxInput =
|
|
2006
|
+
var CheckboxInput = import_styled_components18.default.input`
|
|
2030
2007
|
&[type='checkbox'] {
|
|
2031
2008
|
appearance: none;
|
|
2032
2009
|
display: block;
|
|
@@ -2049,7 +2026,7 @@ var CheckboxInput = import_styled_components21.default.input`
|
|
|
2049
2026
|
transition: all 0.2s !important;
|
|
2050
2027
|
}
|
|
2051
2028
|
`;
|
|
2052
|
-
var CheckboxInputOverlay =
|
|
2029
|
+
var CheckboxInputOverlay = import_styled_components18.default.div`
|
|
2053
2030
|
position: absolute;
|
|
2054
2031
|
top: -2px;
|
|
2055
2032
|
left: -2px;
|
|
@@ -2062,7 +2039,7 @@ var CheckboxInputOverlay = import_styled_components21.default.div`
|
|
|
2062
2039
|
|
|
2063
2040
|
${({ checked }) => checked !== true && hiddenCss};
|
|
2064
2041
|
`;
|
|
2065
|
-
var InputLabel =
|
|
2042
|
+
var InputLabel = import_styled_components18.default.div`
|
|
2066
2043
|
${theme((o) => [o.font.text2])}
|
|
2067
2044
|
|
|
2068
2045
|
font-size: 14px;
|
|
@@ -2071,16 +2048,16 @@ var InputLabel = import_styled_components21.default.div`
|
|
|
2071
2048
|
`;
|
|
2072
2049
|
|
|
2073
2050
|
// src/components/TagItem/index.tsx
|
|
2074
|
-
var
|
|
2075
|
-
var
|
|
2076
|
-
var
|
|
2077
|
-
var
|
|
2078
|
-
var
|
|
2051
|
+
var import_react22 = __toESM(require("react"));
|
|
2052
|
+
var import_utils11 = require("@react-aria/utils");
|
|
2053
|
+
var import_styled_components19 = __toESM(require("styled-components"));
|
|
2054
|
+
var import_utils12 = require("@charcoal-ui/utils");
|
|
2055
|
+
var import_button = require("@react-aria/button");
|
|
2079
2056
|
var sizeMap = {
|
|
2080
2057
|
S: 32,
|
|
2081
2058
|
M: 40
|
|
2082
2059
|
};
|
|
2083
|
-
var TagItem = (0,
|
|
2060
|
+
var TagItem = (0, import_react22.forwardRef)(
|
|
2084
2061
|
function TagItemInner({
|
|
2085
2062
|
label,
|
|
2086
2063
|
translatedLabel,
|
|
@@ -2092,8 +2069,8 @@ var TagItem = (0, import_react24.forwardRef)(
|
|
|
2092
2069
|
className,
|
|
2093
2070
|
...props
|
|
2094
2071
|
}, _ref) {
|
|
2095
|
-
const ref = (0,
|
|
2096
|
-
const ariaButtonProps = (0,
|
|
2072
|
+
const ref = (0, import_utils11.useObjectRef)(_ref);
|
|
2073
|
+
const ariaButtonProps = (0, import_react22.useMemo)(
|
|
2097
2074
|
() => ({
|
|
2098
2075
|
elementType: "a",
|
|
2099
2076
|
isDisabled: disabled,
|
|
@@ -2101,9 +2078,9 @@ var TagItem = (0, import_react24.forwardRef)(
|
|
|
2101
2078
|
}),
|
|
2102
2079
|
[disabled, props]
|
|
2103
2080
|
);
|
|
2104
|
-
const { buttonProps } = (0,
|
|
2081
|
+
const { buttonProps } = (0, import_button.useButton)(ariaButtonProps, ref);
|
|
2105
2082
|
const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
|
|
2106
|
-
return /* @__PURE__ */
|
|
2083
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
2107
2084
|
TagItemRoot,
|
|
2108
2085
|
{
|
|
2109
2086
|
ref,
|
|
@@ -2112,13 +2089,13 @@ var TagItem = (0, import_react24.forwardRef)(
|
|
|
2112
2089
|
...buttonProps,
|
|
2113
2090
|
className
|
|
2114
2091
|
},
|
|
2115
|
-
/* @__PURE__ */
|
|
2116
|
-
/* @__PURE__ */
|
|
2092
|
+
/* @__PURE__ */ import_react22.default.createElement(Background, { bgColor, bgImage, status }),
|
|
2093
|
+
/* @__PURE__ */ import_react22.default.createElement(Inner, null, /* @__PURE__ */ import_react22.default.createElement(LabelWrapper, { isTranslate: hasTranslatedLabel }, hasTranslatedLabel && /* @__PURE__ */ import_react22.default.createElement(TranslatedLabel, null, /* @__PURE__ */ import_react22.default.createElement(Label3, null, translatedLabel)), /* @__PURE__ */ import_react22.default.createElement(Label3, null, label)), status === "active" && /* @__PURE__ */ import_react22.default.createElement(Icon_default, { name: "16/Remove" }))
|
|
2117
2094
|
);
|
|
2118
2095
|
}
|
|
2119
2096
|
);
|
|
2120
|
-
var TagItem_default = (0,
|
|
2121
|
-
var TagItemRoot =
|
|
2097
|
+
var TagItem_default = (0, import_react22.memo)(TagItem);
|
|
2098
|
+
var TagItemRoot = import_styled_components19.default.a`
|
|
2122
2099
|
isolation: isolate;
|
|
2123
2100
|
position: relative;
|
|
2124
2101
|
height: ${({ size }) => sizeMap[size]}px;
|
|
@@ -2138,12 +2115,12 @@ var TagItemRoot = import_styled_components22.default.a`
|
|
|
2138
2115
|
...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
|
|
2139
2116
|
])}
|
|
2140
2117
|
|
|
2141
|
-
${
|
|
2118
|
+
${import_utils12.disabledSelector} {
|
|
2142
2119
|
${theme((o) => [o.disabled])}
|
|
2143
2120
|
cursor: default;
|
|
2144
2121
|
}
|
|
2145
2122
|
`;
|
|
2146
|
-
var Background =
|
|
2123
|
+
var Background = import_styled_components19.default.div`
|
|
2147
2124
|
position: absolute;
|
|
2148
2125
|
z-index: 1;
|
|
2149
2126
|
top: 0;
|
|
@@ -2154,7 +2131,7 @@ var Background = import_styled_components22.default.div`
|
|
|
2154
2131
|
background-color: ${({ bgColor }) => bgColor};
|
|
2155
2132
|
${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
|
|
2156
2133
|
|
|
2157
|
-
${({ bgImage }) => bgImage !== void 0 &&
|
|
2134
|
+
${({ bgImage }) => bgImage !== void 0 && import_styled_components19.css`
|
|
2158
2135
|
${theme((o) => [o.bg.surface4])}
|
|
2159
2136
|
&::before {
|
|
2160
2137
|
content: '';
|
|
@@ -2170,25 +2147,25 @@ var Background = import_styled_components22.default.div`
|
|
|
2170
2147
|
}
|
|
2171
2148
|
`}
|
|
2172
2149
|
`;
|
|
2173
|
-
var Inner =
|
|
2150
|
+
var Inner = import_styled_components19.default.div`
|
|
2174
2151
|
display: inline-flex;
|
|
2175
|
-
gap: ${({ theme: theme4 }) => (0,
|
|
2152
|
+
gap: ${({ theme: theme4 }) => (0, import_utils12.px)(theme4.spacing[8])};
|
|
2176
2153
|
align-items: center;
|
|
2177
2154
|
z-index: 2;
|
|
2178
2155
|
`;
|
|
2179
|
-
var labelCSS =
|
|
2156
|
+
var labelCSS = import_styled_components19.css`
|
|
2180
2157
|
${theme((o) => [o.typography(14).bold])}
|
|
2181
2158
|
`;
|
|
2182
|
-
var translateLabelCSS =
|
|
2159
|
+
var translateLabelCSS = import_styled_components19.css`
|
|
2183
2160
|
display: flex;
|
|
2184
2161
|
align-items: center;
|
|
2185
2162
|
flex-direction: column;
|
|
2186
2163
|
font-size: 10px;
|
|
2187
2164
|
`;
|
|
2188
|
-
var LabelWrapper =
|
|
2165
|
+
var LabelWrapper = import_styled_components19.default.div`
|
|
2189
2166
|
${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
|
|
2190
2167
|
`;
|
|
2191
|
-
var Label3 =
|
|
2168
|
+
var Label3 = import_styled_components19.default.span`
|
|
2192
2169
|
max-width: 152px;
|
|
2193
2170
|
overflow: hidden;
|
|
2194
2171
|
text-overflow: ellipsis;
|
|
@@ -2197,7 +2174,7 @@ var Label3 = import_styled_components22.default.span`
|
|
|
2197
2174
|
color: inherit;
|
|
2198
2175
|
line-height: inherit;
|
|
2199
2176
|
`;
|
|
2200
|
-
var TranslatedLabel =
|
|
2177
|
+
var TranslatedLabel = import_styled_components19.default.div`
|
|
2201
2178
|
${theme((o) => [o.typography(12).bold])}
|
|
2202
2179
|
`;
|
|
2203
2180
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -2208,7 +2185,6 @@ var TranslatedLabel = import_styled_components22.default.div`
|
|
|
2208
2185
|
Clickable,
|
|
2209
2186
|
ComponentAbstraction,
|
|
2210
2187
|
DropdownSelector,
|
|
2211
|
-
DropdownSelectorItem,
|
|
2212
2188
|
Icon,
|
|
2213
2189
|
IconButton,
|
|
2214
2190
|
LoadingSpinner,
|
|
@@ -2220,6 +2196,7 @@ var TranslatedLabel = import_styled_components22.default.div`
|
|
|
2220
2196
|
ModalHeader,
|
|
2221
2197
|
MultiSelect,
|
|
2222
2198
|
MultiSelectGroup,
|
|
2199
|
+
OptionItem,
|
|
2223
2200
|
OverlayProvider,
|
|
2224
2201
|
Radio,
|
|
2225
2202
|
RadioGroup,
|