@charcoal-ui/react 2.7.0 → 3.0.0-beta.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/components/Button/index.d.ts +1 -1
- 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/OptionLi.d.ts +11 -0
- package/dist/components/DropdownSelector/OptionLi.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/index.cjs.js +265 -313
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +248 -296
- package/dist/index.esm.js.map +1 -1
- package/package.json +6 -6
- package/src/components/Button/index.story.tsx +6 -6
- package/src/components/Button/index.tsx +5 -5
- 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/Modal/index.story.tsx +5 -5
- package/src/components/Modal/index.tsx +1 -1
- package/src/index.ts +6 -1
- 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,
|
|
@@ -205,7 +205,7 @@ var Button2 = import_react4.default.forwardRef(function Button3({
|
|
|
205
205
|
children,
|
|
206
206
|
variant = "Default",
|
|
207
207
|
size = "M",
|
|
208
|
-
fixed = false,
|
|
208
|
+
fullWidth: fixed = false,
|
|
209
209
|
disabled = false,
|
|
210
210
|
...rest
|
|
211
211
|
}, ref) {
|
|
@@ -216,7 +216,7 @@ var Button2 = import_react4.default.forwardRef(function Button3({
|
|
|
216
216
|
disabled,
|
|
217
217
|
variant,
|
|
218
218
|
size,
|
|
219
|
-
fixed,
|
|
219
|
+
fullWidth: fixed,
|
|
220
220
|
ref
|
|
221
221
|
},
|
|
222
222
|
children
|
|
@@ -225,10 +225,10 @@ var Button2 = import_react4.default.forwardRef(function Button3({
|
|
|
225
225
|
var Button_default = Button2;
|
|
226
226
|
var StyledButton = (0, import_styled_components4.default)(Clickable_default).withConfig({
|
|
227
227
|
shouldForwardProp(prop) {
|
|
228
|
-
return prop !== "
|
|
228
|
+
return prop !== "fullWidth";
|
|
229
229
|
}
|
|
230
230
|
}).attrs(styledProps)`
|
|
231
|
-
width: ${(p) => p.
|
|
231
|
+
width: ${(p) => p.fullWidth ? "stretch" : "min-content"};
|
|
232
232
|
display: inline-grid;
|
|
233
233
|
align-items: center;
|
|
234
234
|
justify-content: center;
|
|
@@ -1535,156 +1535,21 @@ var LoadingSpinnerIcon = import_react15.default.forwardRef(function LoadingSpinn
|
|
|
1535
1535
|
});
|
|
1536
1536
|
|
|
1537
1537
|
// 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
1538
|
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
1539
|
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
|
-
`;
|
|
1540
|
+
var import_react_stately2 = require("react-stately");
|
|
1541
|
+
var import_utils6 = require("@charcoal-ui/utils");
|
|
1677
1542
|
|
|
1678
1543
|
// src/components/DropdownSelector/DropdownPopover.tsx
|
|
1679
|
-
var
|
|
1544
|
+
var import_react16 = __toESM(require("react"));
|
|
1680
1545
|
var import_overlays3 = require("@react-aria/overlays");
|
|
1681
|
-
var
|
|
1682
|
-
var DropdownPopoverDiv =
|
|
1546
|
+
var import_styled_components14 = __toESM(require("styled-components"));
|
|
1547
|
+
var DropdownPopoverDiv = import_styled_components14.default.div`
|
|
1683
1548
|
width: 100%;
|
|
1684
1549
|
${theme((o) => o.margin.top(4).bottom(4))}
|
|
1685
1550
|
`;
|
|
1686
1551
|
function DropdownPopover({ children, state, ...props }) {
|
|
1687
|
-
const ref = (0,
|
|
1552
|
+
const ref = (0, import_react16.useRef)(null);
|
|
1688
1553
|
const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
|
|
1689
1554
|
{
|
|
1690
1555
|
...props,
|
|
@@ -1693,131 +1558,122 @@ function DropdownPopover({ children, state, ...props }) {
|
|
|
1693
1558
|
},
|
|
1694
1559
|
state
|
|
1695
1560
|
);
|
|
1696
|
-
(0,
|
|
1561
|
+
(0, import_react16.useEffect)(() => {
|
|
1697
1562
|
if (ref.current && props.triggerRef.current) {
|
|
1698
1563
|
ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
|
|
1699
1564
|
}
|
|
1700
1565
|
}, [props.triggerRef]);
|
|
1701
|
-
(0,
|
|
1566
|
+
(0, import_react16.useEffect)(() => {
|
|
1702
1567
|
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
|
-
});
|
|
1568
|
+
const windowScrollY = window.scrollY;
|
|
1569
|
+
const windowScrollX = window.scrollX;
|
|
1570
|
+
const selectedElement = document.querySelector(
|
|
1571
|
+
`[data-key="${props.value.toString()}"]`
|
|
1572
|
+
);
|
|
1573
|
+
selectedElement?.scrollIntoView({ block: "center" });
|
|
1574
|
+
selectedElement?.focus();
|
|
1575
|
+
window.scrollTo(windowScrollX, windowScrollY);
|
|
1714
1576
|
}
|
|
1715
1577
|
}, [props.value, state.isOpen]);
|
|
1716
|
-
return /* @__PURE__ */
|
|
1578
|
+
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
1579
|
}
|
|
1718
1580
|
|
|
1719
1581
|
// 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(
|
|
1582
|
+
var DropdownSelectorContext = (0, import_react17.createContext)({
|
|
1583
|
+
value: "",
|
|
1584
|
+
setValue: (_v) => {
|
|
1585
|
+
}
|
|
1586
|
+
});
|
|
1587
|
+
var defaultRequiredText = "*\u5FC5\u9808";
|
|
1588
|
+
function DropdownSelector(props) {
|
|
1589
|
+
const triggerRef = (0, import_react17.useRef)(null);
|
|
1590
|
+
const state = (0, import_react_stately2.useOverlayTriggerState)({});
|
|
1591
|
+
let preview;
|
|
1592
|
+
const childArray = import_react17.default.Children.toArray(props.children);
|
|
1593
|
+
for (let i = 0; i < childArray.length; i++) {
|
|
1594
|
+
const child = childArray[i];
|
|
1595
|
+
if (import_react17.default.isValidElement(child) && "value" in child.props) {
|
|
1596
|
+
const find = child.props.value === props.value;
|
|
1597
|
+
if (find && "children" in child.props) {
|
|
1598
|
+
preview = child.props.children;
|
|
1599
|
+
break;
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
return /* @__PURE__ */ import_react17.default.createElement(DropdownSelectorRoot, { "aria-disabled": props.disabled }, props.showLabel === true && /* @__PURE__ */ import_react17.default.createElement(
|
|
1764
1604
|
DropdownFieldLabel,
|
|
1765
1605
|
{
|
|
1766
|
-
label,
|
|
1767
|
-
required,
|
|
1768
|
-
requiredText,
|
|
1769
|
-
subLabel
|
|
1770
|
-
...labelProps,
|
|
1771
|
-
...!showLabel ? visuallyHiddenProps : {}
|
|
1606
|
+
label: props.label,
|
|
1607
|
+
required: props.required,
|
|
1608
|
+
requiredText: props.requiredText ?? defaultRequiredText,
|
|
1609
|
+
subLabel: props.subLabel
|
|
1772
1610
|
}
|
|
1773
|
-
), /* @__PURE__ */
|
|
1774
|
-
|
|
1611
|
+
), /* @__PURE__ */ import_react17.default.createElement(
|
|
1612
|
+
DropdownButton,
|
|
1775
1613
|
{
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1614
|
+
invalid: props.invalid,
|
|
1615
|
+
disabled: props.disabled,
|
|
1616
|
+
onClick: () => {
|
|
1617
|
+
if (props.disabled === true)
|
|
1618
|
+
return;
|
|
1619
|
+
state.open();
|
|
1620
|
+
},
|
|
1621
|
+
ref: triggerRef
|
|
1622
|
+
},
|
|
1623
|
+
/* @__PURE__ */ import_react17.default.createElement(DropdownButtonText, null, props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview),
|
|
1624
|
+
/* @__PURE__ */ import_react17.default.createElement(DropdownButtonIcon, { name: "16/Menu" })
|
|
1625
|
+
), state.isOpen && /* @__PURE__ */ import_react17.default.createElement(
|
|
1784
1626
|
DropdownPopover,
|
|
1785
1627
|
{
|
|
1786
1628
|
state,
|
|
1787
1629
|
triggerRef,
|
|
1788
|
-
value: props.value
|
|
1630
|
+
value: props.value
|
|
1789
1631
|
},
|
|
1790
|
-
/* @__PURE__ */
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
}
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1632
|
+
/* @__PURE__ */ import_react17.default.createElement(ListboxRoot, null, /* @__PURE__ */ import_react17.default.createElement(
|
|
1633
|
+
DropdownSelectorContext.Provider,
|
|
1634
|
+
{
|
|
1635
|
+
value: {
|
|
1636
|
+
value: props.value,
|
|
1637
|
+
setValue: (v) => {
|
|
1638
|
+
props.onChange(v);
|
|
1639
|
+
state.close();
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
},
|
|
1643
|
+
props.children
|
|
1644
|
+
))
|
|
1645
|
+
), props.assistiveText !== void 0 && /* @__PURE__ */ import_react17.default.createElement(AssertiveText, { invalid: props.invalid }, props.assistiveText));
|
|
1646
|
+
}
|
|
1647
|
+
var ListboxRoot = import_styled_components15.default.ul`
|
|
1648
|
+
padding-left: 0;
|
|
1649
|
+
margin: 0;
|
|
1650
|
+
box-sizing: border-box;
|
|
1651
|
+
list-style: none;
|
|
1652
|
+
overflow: auto;
|
|
1653
|
+
max-height: inherit;
|
|
1654
|
+
|
|
1655
|
+
${theme((o) => [
|
|
1656
|
+
o.bg.background1,
|
|
1657
|
+
o.border.default,
|
|
1658
|
+
o.borderRadius(8),
|
|
1659
|
+
o.padding.vertical(8)
|
|
1660
|
+
])}
|
|
1661
|
+
`;
|
|
1662
|
+
var DropdownSelectorRoot = import_styled_components15.default.div`
|
|
1804
1663
|
display: inline-block;
|
|
1805
1664
|
width: 100%;
|
|
1806
1665
|
|
|
1807
|
-
${
|
|
1666
|
+
${import_utils6.disabledSelector} {
|
|
1808
1667
|
cursor: default;
|
|
1809
1668
|
${theme((o) => o.disabled)}
|
|
1810
1669
|
}
|
|
1811
1670
|
`;
|
|
1812
|
-
var DropdownFieldLabel = (0,
|
|
1671
|
+
var DropdownFieldLabel = (0, import_styled_components15.default)(FieldLabel_default)`
|
|
1813
1672
|
width: 100%;
|
|
1814
1673
|
|
|
1815
1674
|
${theme((o) => o.margin.bottom(8))}
|
|
1816
1675
|
`;
|
|
1817
|
-
var
|
|
1818
|
-
position: relative;
|
|
1819
|
-
`;
|
|
1820
|
-
var DropdownButton = import_styled_components19.default.button`
|
|
1676
|
+
var DropdownButton = import_styled_components15.default.button`
|
|
1821
1677
|
display: flex;
|
|
1822
1678
|
justify-content: space-between;
|
|
1823
1679
|
align-items: center;
|
|
@@ -1827,7 +1683,7 @@ var DropdownButton = import_styled_components19.default.button`
|
|
|
1827
1683
|
box-sizing: border-box;
|
|
1828
1684
|
cursor: pointer;
|
|
1829
1685
|
|
|
1830
|
-
${
|
|
1686
|
+
${import_utils6.disabledSelector} {
|
|
1831
1687
|
cursor: default;
|
|
1832
1688
|
}
|
|
1833
1689
|
|
|
@@ -1837,52 +1693,148 @@ var DropdownButton = import_styled_components19.default.button`
|
|
|
1837
1693
|
o.outline.default.focus,
|
|
1838
1694
|
o.bg.surface3,
|
|
1839
1695
|
o.borderRadius(4),
|
|
1840
|
-
invalid && o.outline.assertive
|
|
1696
|
+
invalid === true && o.outline.assertive
|
|
1841
1697
|
])}
|
|
1842
1698
|
`;
|
|
1843
|
-
var DropdownButtonText =
|
|
1699
|
+
var DropdownButtonText = import_styled_components15.default.span`
|
|
1844
1700
|
text-align: left;
|
|
1845
1701
|
|
|
1846
1702
|
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1847
1703
|
`;
|
|
1848
|
-
var DropdownButtonIcon = (0,
|
|
1704
|
+
var DropdownButtonIcon = (0, import_styled_components15.default)(Icon_default)`
|
|
1849
1705
|
${theme((o) => [o.font.text2])}
|
|
1850
1706
|
`;
|
|
1851
|
-
var AssertiveText =
|
|
1707
|
+
var AssertiveText = import_styled_components15.default.div`
|
|
1852
1708
|
${({ invalid }) => theme((o) => [
|
|
1853
1709
|
o.typography(14),
|
|
1854
1710
|
o.margin.top(8),
|
|
1855
|
-
invalid ? o.font.assertive : o.font.text2
|
|
1711
|
+
invalid === true ? o.font.assertive : o.font.text2
|
|
1856
1712
|
])}
|
|
1857
1713
|
`;
|
|
1858
1714
|
|
|
1715
|
+
// src/components/DropdownSelector/OptionItem.tsx
|
|
1716
|
+
var import_react18 = __toESM(require("react"));
|
|
1717
|
+
var import_styled_components16 = __toESM(require("styled-components"));
|
|
1718
|
+
var import_utils7 = require("@charcoal-ui/utils");
|
|
1719
|
+
|
|
1720
|
+
// src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx
|
|
1721
|
+
function handleFocusByKeyBoard(element) {
|
|
1722
|
+
const parent = element.parentElement;
|
|
1723
|
+
if (!parent)
|
|
1724
|
+
return;
|
|
1725
|
+
const rect = element.getBoundingClientRect();
|
|
1726
|
+
const parentRect = parent.getBoundingClientRect();
|
|
1727
|
+
if (rect.bottom > parentRect.bottom) {
|
|
1728
|
+
parent.scrollTo({
|
|
1729
|
+
top: parent.scrollTop + rect.bottom - parentRect.bottom
|
|
1730
|
+
});
|
|
1731
|
+
} else if (rect.top < parentRect.top) {
|
|
1732
|
+
parent.scrollTo({
|
|
1733
|
+
top: parent.scrollTop - (parentRect.top - rect.top)
|
|
1734
|
+
});
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
// src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx
|
|
1739
|
+
function focusIfHTMLLIElement(element) {
|
|
1740
|
+
if (element instanceof HTMLLIElement) {
|
|
1741
|
+
element.focus({ preventScroll: true });
|
|
1742
|
+
handleFocusByKeyBoard(element);
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
// src/components/DropdownSelector/OptionItem.tsx
|
|
1747
|
+
function OptionItem(props) {
|
|
1748
|
+
const { value, setValue } = (0, import_react18.useContext)(DropdownSelectorContext);
|
|
1749
|
+
const isSelected = props.value === value;
|
|
1750
|
+
const onSelect = () => {
|
|
1751
|
+
setValue(props.value);
|
|
1752
|
+
};
|
|
1753
|
+
return /* @__PURE__ */ import_react18.default.createElement(
|
|
1754
|
+
OptionRoot,
|
|
1755
|
+
{
|
|
1756
|
+
"data-key": props.value,
|
|
1757
|
+
onMouseMove: (e) => {
|
|
1758
|
+
e.currentTarget.focus({ preventScroll: true });
|
|
1759
|
+
},
|
|
1760
|
+
onKeyDown: (e) => {
|
|
1761
|
+
if (e.key === "Enter") {
|
|
1762
|
+
onSelect();
|
|
1763
|
+
} else if (e.key === "ArrowUp") {
|
|
1764
|
+
e.preventDefault();
|
|
1765
|
+
const prev = e.currentTarget.previousElementSibling;
|
|
1766
|
+
if (prev === null) {
|
|
1767
|
+
focusIfHTMLLIElement(e.currentTarget.parentElement?.lastChild);
|
|
1768
|
+
}
|
|
1769
|
+
focusIfHTMLLIElement(prev);
|
|
1770
|
+
} else if (e.key === "ArrowDown") {
|
|
1771
|
+
e.preventDefault();
|
|
1772
|
+
const next = e.currentTarget.nextElementSibling;
|
|
1773
|
+
if (next === null) {
|
|
1774
|
+
focusIfHTMLLIElement(e.currentTarget.parentElement?.firstChild);
|
|
1775
|
+
}
|
|
1776
|
+
focusIfHTMLLIElement(next);
|
|
1777
|
+
} else if (e.key === " ") {
|
|
1778
|
+
e.preventDefault();
|
|
1779
|
+
}
|
|
1780
|
+
},
|
|
1781
|
+
onClick: onSelect,
|
|
1782
|
+
tabIndex: -1
|
|
1783
|
+
},
|
|
1784
|
+
isSelected && /* @__PURE__ */ import_react18.default.createElement(OptionCheckIcon, { name: "16/Check" }),
|
|
1785
|
+
/* @__PURE__ */ import_react18.default.createElement(OptionText, { isSelected }, props.children)
|
|
1786
|
+
);
|
|
1787
|
+
}
|
|
1788
|
+
var OptionRoot = import_styled_components16.default.li`
|
|
1789
|
+
display: flex;
|
|
1790
|
+
align-items: center;
|
|
1791
|
+
gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
|
|
1792
|
+
height: 40px;
|
|
1793
|
+
cursor: pointer;
|
|
1794
|
+
outline: none;
|
|
1795
|
+
|
|
1796
|
+
${theme((o) => [o.padding.horizontal(8)])}
|
|
1797
|
+
|
|
1798
|
+
:focus {
|
|
1799
|
+
${theme((o) => [o.bg.surface3])}
|
|
1800
|
+
}
|
|
1801
|
+
`;
|
|
1802
|
+
var OptionCheckIcon = (0, import_styled_components16.default)(Icon_default)`
|
|
1803
|
+
${theme((o) => [o.font.text2])}
|
|
1804
|
+
`;
|
|
1805
|
+
var OptionText = import_styled_components16.default.span`
|
|
1806
|
+
display: block;
|
|
1807
|
+
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1808
|
+
margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
|
|
1809
|
+
`;
|
|
1810
|
+
|
|
1859
1811
|
// src/components/SegmentedControl/index.tsx
|
|
1860
|
-
var
|
|
1812
|
+
var import_react20 = __toESM(require("react"));
|
|
1861
1813
|
var import_react_stately3 = require("react-stately");
|
|
1862
1814
|
var import_radio = require("@react-aria/radio");
|
|
1863
|
-
var
|
|
1864
|
-
var
|
|
1815
|
+
var import_styled_components17 = __toESM(require("styled-components"));
|
|
1816
|
+
var import_utils8 = require("@charcoal-ui/utils");
|
|
1865
1817
|
|
|
1866
1818
|
// src/components/SegmentedControl/RadioGroupContext.tsx
|
|
1867
|
-
var
|
|
1868
|
-
var RadioContext = (0,
|
|
1819
|
+
var import_react19 = __toESM(require("react"));
|
|
1820
|
+
var RadioContext = (0, import_react19.createContext)(null);
|
|
1869
1821
|
var RadioProvider = ({
|
|
1870
1822
|
value,
|
|
1871
1823
|
children
|
|
1872
1824
|
}) => {
|
|
1873
|
-
return /* @__PURE__ */
|
|
1825
|
+
return /* @__PURE__ */ import_react19.default.createElement(RadioContext.Provider, { value }, children);
|
|
1874
1826
|
};
|
|
1875
1827
|
var useRadioContext = () => {
|
|
1876
|
-
const state = (0,
|
|
1828
|
+
const state = (0, import_react19.useContext)(RadioContext);
|
|
1877
1829
|
if (state === null)
|
|
1878
1830
|
throw new Error("`<RadioProvider>` is not likely mounted.");
|
|
1879
1831
|
return state;
|
|
1880
1832
|
};
|
|
1881
1833
|
|
|
1882
1834
|
// src/components/SegmentedControl/index.tsx
|
|
1883
|
-
var SegmentedControl = (0,
|
|
1835
|
+
var SegmentedControl = (0, import_react20.forwardRef)(
|
|
1884
1836
|
function SegmentedControlInner(props, ref) {
|
|
1885
|
-
const ariaRadioGroupProps = (0,
|
|
1837
|
+
const ariaRadioGroupProps = (0, import_react20.useMemo)(
|
|
1886
1838
|
() => ({
|
|
1887
1839
|
...props,
|
|
1888
1840
|
isDisabled: props.disabled,
|
|
@@ -1893,12 +1845,12 @@ var SegmentedControl = (0, import_react22.forwardRef)(
|
|
|
1893
1845
|
);
|
|
1894
1846
|
const state = (0, import_react_stately3.useRadioGroupState)(ariaRadioGroupProps);
|
|
1895
1847
|
const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
|
|
1896
|
-
const segmentedControlItems = (0,
|
|
1848
|
+
const segmentedControlItems = (0, import_react20.useMemo)(() => {
|
|
1897
1849
|
return props.data.map(
|
|
1898
1850
|
(d) => typeof d === "string" ? { value: d, label: d } : d
|
|
1899
1851
|
);
|
|
1900
1852
|
}, [props.data]);
|
|
1901
|
-
return /* @__PURE__ */
|
|
1853
|
+
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
1854
|
Segmented,
|
|
1903
1855
|
{
|
|
1904
1856
|
key: item.value,
|
|
@@ -1909,11 +1861,11 @@ var SegmentedControl = (0, import_react22.forwardRef)(
|
|
|
1909
1861
|
))));
|
|
1910
1862
|
}
|
|
1911
1863
|
);
|
|
1912
|
-
var SegmentedControl_default = (0,
|
|
1864
|
+
var SegmentedControl_default = (0, import_react20.memo)(SegmentedControl);
|
|
1913
1865
|
var Segmented = ({ children, ...props }) => {
|
|
1914
1866
|
const state = useRadioContext();
|
|
1915
|
-
const ref = (0,
|
|
1916
|
-
const ariaRadioProps = (0,
|
|
1867
|
+
const ref = (0, import_react20.useRef)(null);
|
|
1868
|
+
const ariaRadioProps = (0, import_react20.useMemo)(
|
|
1917
1869
|
() => ({ ...props, isDisabled: props.disabled }),
|
|
1918
1870
|
[props]
|
|
1919
1871
|
);
|
|
@@ -1922,30 +1874,30 @@ var Segmented = ({ children, ...props }) => {
|
|
|
1922
1874
|
state,
|
|
1923
1875
|
ref
|
|
1924
1876
|
);
|
|
1925
|
-
return /* @__PURE__ */
|
|
1877
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
1926
1878
|
SegmentedRoot,
|
|
1927
1879
|
{
|
|
1928
1880
|
"aria-disabled": isDisabled || state.isReadOnly,
|
|
1929
1881
|
checked: isSelected
|
|
1930
1882
|
},
|
|
1931
|
-
/* @__PURE__ */
|
|
1932
|
-
/* @__PURE__ */
|
|
1883
|
+
/* @__PURE__ */ import_react20.default.createElement(SegmentedInput, { ...inputProps, ref }),
|
|
1884
|
+
/* @__PURE__ */ import_react20.default.createElement(RadioLabel2, null, /* @__PURE__ */ import_react20.default.createElement(SegmentedLabelInner, null, children))
|
|
1933
1885
|
);
|
|
1934
1886
|
};
|
|
1935
|
-
var SegmentedControlRoot =
|
|
1887
|
+
var SegmentedControlRoot = import_styled_components17.default.div`
|
|
1936
1888
|
display: inline-flex;
|
|
1937
1889
|
align-items: center;
|
|
1938
1890
|
|
|
1939
1891
|
${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
|
|
1940
1892
|
`;
|
|
1941
|
-
var SegmentedRoot =
|
|
1893
|
+
var SegmentedRoot = import_styled_components17.default.label`
|
|
1942
1894
|
position: relative;
|
|
1943
1895
|
display: flex;
|
|
1944
1896
|
align-items: center;
|
|
1945
1897
|
cursor: pointer;
|
|
1946
1898
|
height: 32px;
|
|
1947
1899
|
|
|
1948
|
-
${
|
|
1900
|
+
${import_utils8.disabledSelector} {
|
|
1949
1901
|
cursor: default;
|
|
1950
1902
|
}
|
|
1951
1903
|
|
|
@@ -1957,7 +1909,7 @@ var SegmentedRoot = import_styled_components20.default.label`
|
|
|
1957
1909
|
checked === true ? o.font.text5 : o.font.text2
|
|
1958
1910
|
])}
|
|
1959
1911
|
`;
|
|
1960
|
-
var SegmentedInput =
|
|
1912
|
+
var SegmentedInput = import_styled_components17.default.input`
|
|
1961
1913
|
position: absolute;
|
|
1962
1914
|
|
|
1963
1915
|
height: 0px;
|
|
@@ -1971,26 +1923,26 @@ var SegmentedInput = import_styled_components20.default.input`
|
|
|
1971
1923
|
white-space: nowrap;
|
|
1972
1924
|
opacity: 0;
|
|
1973
1925
|
`;
|
|
1974
|
-
var RadioLabel2 =
|
|
1926
|
+
var RadioLabel2 = import_styled_components17.default.div`
|
|
1975
1927
|
background: transparent;
|
|
1976
1928
|
display: flex;
|
|
1977
1929
|
align-items: center;
|
|
1978
1930
|
height: 22px;
|
|
1979
1931
|
`;
|
|
1980
|
-
var SegmentedLabelInner =
|
|
1932
|
+
var SegmentedLabelInner = import_styled_components17.default.div`
|
|
1981
1933
|
${theme((o) => [o.typography(14)])}
|
|
1982
1934
|
`;
|
|
1983
1935
|
|
|
1984
1936
|
// src/components/Checkbox/index.tsx
|
|
1985
|
-
var
|
|
1986
|
-
var
|
|
1937
|
+
var import_react21 = __toESM(require("react"));
|
|
1938
|
+
var import_styled_components18 = __toESM(require("styled-components"));
|
|
1987
1939
|
var import_checkbox = require("@react-aria/checkbox");
|
|
1988
|
-
var
|
|
1940
|
+
var import_utils9 = require("@react-aria/utils");
|
|
1989
1941
|
var import_react_stately4 = require("react-stately");
|
|
1990
|
-
var
|
|
1991
|
-
var Checkbox = (0,
|
|
1942
|
+
var import_utils10 = require("@charcoal-ui/utils");
|
|
1943
|
+
var Checkbox = (0, import_react21.forwardRef)(
|
|
1992
1944
|
function CheckboxInner(props, ref) {
|
|
1993
|
-
const ariaCheckboxProps = (0,
|
|
1945
|
+
const ariaCheckboxProps = (0, import_react21.useMemo)(
|
|
1994
1946
|
() => ({
|
|
1995
1947
|
...props,
|
|
1996
1948
|
isSelected: props.checked,
|
|
@@ -2001,32 +1953,32 @@ var Checkbox = (0, import_react23.forwardRef)(
|
|
|
2001
1953
|
[props]
|
|
2002
1954
|
);
|
|
2003
1955
|
const state = (0, import_react_stately4.useToggleState)(ariaCheckboxProps);
|
|
2004
|
-
const objectRef = (0,
|
|
1956
|
+
const objectRef = (0, import_utils9.useObjectRef)(ref);
|
|
2005
1957
|
const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
|
|
2006
1958
|
const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
|
|
2007
|
-
return /* @__PURE__ */
|
|
1959
|
+
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
1960
|
}
|
|
2009
1961
|
);
|
|
2010
|
-
var Checkbox_default = (0,
|
|
2011
|
-
var hiddenCss =
|
|
1962
|
+
var Checkbox_default = (0, import_react21.memo)(Checkbox);
|
|
1963
|
+
var hiddenCss = import_styled_components18.css`
|
|
2012
1964
|
visibility: hidden;
|
|
2013
1965
|
`;
|
|
2014
|
-
var InputRoot =
|
|
1966
|
+
var InputRoot = import_styled_components18.default.label`
|
|
2015
1967
|
position: relative;
|
|
2016
1968
|
display: flex;
|
|
2017
1969
|
|
|
2018
1970
|
cursor: pointer;
|
|
2019
|
-
${
|
|
1971
|
+
${import_utils10.disabledSelector} {
|
|
2020
1972
|
cursor: default;
|
|
2021
1973
|
}
|
|
2022
1974
|
|
|
2023
|
-
gap: ${({ theme: theme4 }) => (0,
|
|
1975
|
+
gap: ${({ theme: theme4 }) => (0, import_utils10.px)(theme4.spacing[4])};
|
|
2024
1976
|
${theme((o) => [o.disabled])}
|
|
2025
1977
|
`;
|
|
2026
|
-
var CheckboxRoot =
|
|
1978
|
+
var CheckboxRoot = import_styled_components18.default.div`
|
|
2027
1979
|
position: relative;
|
|
2028
1980
|
`;
|
|
2029
|
-
var CheckboxInput =
|
|
1981
|
+
var CheckboxInput = import_styled_components18.default.input`
|
|
2030
1982
|
&[type='checkbox'] {
|
|
2031
1983
|
appearance: none;
|
|
2032
1984
|
display: block;
|
|
@@ -2049,7 +2001,7 @@ var CheckboxInput = import_styled_components21.default.input`
|
|
|
2049
2001
|
transition: all 0.2s !important;
|
|
2050
2002
|
}
|
|
2051
2003
|
`;
|
|
2052
|
-
var CheckboxInputOverlay =
|
|
2004
|
+
var CheckboxInputOverlay = import_styled_components18.default.div`
|
|
2053
2005
|
position: absolute;
|
|
2054
2006
|
top: -2px;
|
|
2055
2007
|
left: -2px;
|
|
@@ -2062,7 +2014,7 @@ var CheckboxInputOverlay = import_styled_components21.default.div`
|
|
|
2062
2014
|
|
|
2063
2015
|
${({ checked }) => checked !== true && hiddenCss};
|
|
2064
2016
|
`;
|
|
2065
|
-
var InputLabel =
|
|
2017
|
+
var InputLabel = import_styled_components18.default.div`
|
|
2066
2018
|
${theme((o) => [o.font.text2])}
|
|
2067
2019
|
|
|
2068
2020
|
font-size: 14px;
|
|
@@ -2071,16 +2023,16 @@ var InputLabel = import_styled_components21.default.div`
|
|
|
2071
2023
|
`;
|
|
2072
2024
|
|
|
2073
2025
|
// src/components/TagItem/index.tsx
|
|
2074
|
-
var
|
|
2075
|
-
var
|
|
2076
|
-
var
|
|
2077
|
-
var
|
|
2078
|
-
var
|
|
2026
|
+
var import_react22 = __toESM(require("react"));
|
|
2027
|
+
var import_utils11 = require("@react-aria/utils");
|
|
2028
|
+
var import_styled_components19 = __toESM(require("styled-components"));
|
|
2029
|
+
var import_utils12 = require("@charcoal-ui/utils");
|
|
2030
|
+
var import_button = require("@react-aria/button");
|
|
2079
2031
|
var sizeMap = {
|
|
2080
2032
|
S: 32,
|
|
2081
2033
|
M: 40
|
|
2082
2034
|
};
|
|
2083
|
-
var TagItem = (0,
|
|
2035
|
+
var TagItem = (0, import_react22.forwardRef)(
|
|
2084
2036
|
function TagItemInner({
|
|
2085
2037
|
label,
|
|
2086
2038
|
translatedLabel,
|
|
@@ -2092,8 +2044,8 @@ var TagItem = (0, import_react24.forwardRef)(
|
|
|
2092
2044
|
className,
|
|
2093
2045
|
...props
|
|
2094
2046
|
}, _ref) {
|
|
2095
|
-
const ref = (0,
|
|
2096
|
-
const ariaButtonProps = (0,
|
|
2047
|
+
const ref = (0, import_utils11.useObjectRef)(_ref);
|
|
2048
|
+
const ariaButtonProps = (0, import_react22.useMemo)(
|
|
2097
2049
|
() => ({
|
|
2098
2050
|
elementType: "a",
|
|
2099
2051
|
isDisabled: disabled,
|
|
@@ -2101,9 +2053,9 @@ var TagItem = (0, import_react24.forwardRef)(
|
|
|
2101
2053
|
}),
|
|
2102
2054
|
[disabled, props]
|
|
2103
2055
|
);
|
|
2104
|
-
const { buttonProps } = (0,
|
|
2056
|
+
const { buttonProps } = (0, import_button.useButton)(ariaButtonProps, ref);
|
|
2105
2057
|
const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
|
|
2106
|
-
return /* @__PURE__ */
|
|
2058
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
2107
2059
|
TagItemRoot,
|
|
2108
2060
|
{
|
|
2109
2061
|
ref,
|
|
@@ -2112,13 +2064,13 @@ var TagItem = (0, import_react24.forwardRef)(
|
|
|
2112
2064
|
...buttonProps,
|
|
2113
2065
|
className
|
|
2114
2066
|
},
|
|
2115
|
-
/* @__PURE__ */
|
|
2116
|
-
/* @__PURE__ */
|
|
2067
|
+
/* @__PURE__ */ import_react22.default.createElement(Background, { bgColor, bgImage, status }),
|
|
2068
|
+
/* @__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
2069
|
);
|
|
2118
2070
|
}
|
|
2119
2071
|
);
|
|
2120
|
-
var TagItem_default = (0,
|
|
2121
|
-
var TagItemRoot =
|
|
2072
|
+
var TagItem_default = (0, import_react22.memo)(TagItem);
|
|
2073
|
+
var TagItemRoot = import_styled_components19.default.a`
|
|
2122
2074
|
isolation: isolate;
|
|
2123
2075
|
position: relative;
|
|
2124
2076
|
height: ${({ size }) => sizeMap[size]}px;
|
|
@@ -2138,12 +2090,12 @@ var TagItemRoot = import_styled_components22.default.a`
|
|
|
2138
2090
|
...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
|
|
2139
2091
|
])}
|
|
2140
2092
|
|
|
2141
|
-
${
|
|
2093
|
+
${import_utils12.disabledSelector} {
|
|
2142
2094
|
${theme((o) => [o.disabled])}
|
|
2143
2095
|
cursor: default;
|
|
2144
2096
|
}
|
|
2145
2097
|
`;
|
|
2146
|
-
var Background =
|
|
2098
|
+
var Background = import_styled_components19.default.div`
|
|
2147
2099
|
position: absolute;
|
|
2148
2100
|
z-index: 1;
|
|
2149
2101
|
top: 0;
|
|
@@ -2154,7 +2106,7 @@ var Background = import_styled_components22.default.div`
|
|
|
2154
2106
|
background-color: ${({ bgColor }) => bgColor};
|
|
2155
2107
|
${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
|
|
2156
2108
|
|
|
2157
|
-
${({ bgImage }) => bgImage !== void 0 &&
|
|
2109
|
+
${({ bgImage }) => bgImage !== void 0 && import_styled_components19.css`
|
|
2158
2110
|
${theme((o) => [o.bg.surface4])}
|
|
2159
2111
|
&::before {
|
|
2160
2112
|
content: '';
|
|
@@ -2170,25 +2122,25 @@ var Background = import_styled_components22.default.div`
|
|
|
2170
2122
|
}
|
|
2171
2123
|
`}
|
|
2172
2124
|
`;
|
|
2173
|
-
var Inner =
|
|
2125
|
+
var Inner = import_styled_components19.default.div`
|
|
2174
2126
|
display: inline-flex;
|
|
2175
|
-
gap: ${({ theme: theme4 }) => (0,
|
|
2127
|
+
gap: ${({ theme: theme4 }) => (0, import_utils12.px)(theme4.spacing[8])};
|
|
2176
2128
|
align-items: center;
|
|
2177
2129
|
z-index: 2;
|
|
2178
2130
|
`;
|
|
2179
|
-
var labelCSS =
|
|
2131
|
+
var labelCSS = import_styled_components19.css`
|
|
2180
2132
|
${theme((o) => [o.typography(14).bold])}
|
|
2181
2133
|
`;
|
|
2182
|
-
var translateLabelCSS =
|
|
2134
|
+
var translateLabelCSS = import_styled_components19.css`
|
|
2183
2135
|
display: flex;
|
|
2184
2136
|
align-items: center;
|
|
2185
2137
|
flex-direction: column;
|
|
2186
2138
|
font-size: 10px;
|
|
2187
2139
|
`;
|
|
2188
|
-
var LabelWrapper =
|
|
2140
|
+
var LabelWrapper = import_styled_components19.default.div`
|
|
2189
2141
|
${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
|
|
2190
2142
|
`;
|
|
2191
|
-
var Label3 =
|
|
2143
|
+
var Label3 = import_styled_components19.default.span`
|
|
2192
2144
|
max-width: 152px;
|
|
2193
2145
|
overflow: hidden;
|
|
2194
2146
|
text-overflow: ellipsis;
|
|
@@ -2197,7 +2149,7 @@ var Label3 = import_styled_components22.default.span`
|
|
|
2197
2149
|
color: inherit;
|
|
2198
2150
|
line-height: inherit;
|
|
2199
2151
|
`;
|
|
2200
|
-
var TranslatedLabel =
|
|
2152
|
+
var TranslatedLabel = import_styled_components19.default.div`
|
|
2201
2153
|
${theme((o) => [o.typography(12).bold])}
|
|
2202
2154
|
`;
|
|
2203
2155
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -2208,7 +2160,6 @@ var TranslatedLabel = import_styled_components22.default.div`
|
|
|
2208
2160
|
Clickable,
|
|
2209
2161
|
ComponentAbstraction,
|
|
2210
2162
|
DropdownSelector,
|
|
2211
|
-
DropdownSelectorItem,
|
|
2212
2163
|
Icon,
|
|
2213
2164
|
IconButton,
|
|
2214
2165
|
LoadingSpinner,
|
|
@@ -2220,6 +2171,7 @@ var TranslatedLabel = import_styled_components22.default.div`
|
|
|
2220
2171
|
ModalHeader,
|
|
2221
2172
|
MultiSelect,
|
|
2222
2173
|
MultiSelectGroup,
|
|
2174
|
+
OptionItem,
|
|
2223
2175
|
OverlayProvider,
|
|
2224
2176
|
Radio,
|
|
2225
2177
|
RadioGroup,
|