@arc-ui/components 11.1.0 → 11.2.0

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/index.js CHANGED
@@ -35785,6 +35785,10 @@ var Select = function (_a) {
35785
35785
  onChange && onChange(value);
35786
35786
  setSelectedValue(value);
35787
35787
  };
35788
+ var getSelectedValueName = function (value) {
35789
+ var _a;
35790
+ return (_a = options.find(function (option) { return option.value === value; })) === null || _a === void 0 ? void 0 : _a.name;
35791
+ };
35788
35792
  return (React__default["default"].createElement(FormControl, { errorMessage: errorMessage, helper: helper, htmlFor: id, label: label, labelSize: labelSize, requirementStatus: isRequired ? "required" : "optional", isDisabled: isDisabled, disclosureText: disclosureText, disclosureTitle: disclosureTitle, onClickDisclosure: onClickDisclosure },
35789
35793
  React__default["default"].createElement($cc7e05a45900e73f$export$be92b6f5f03c0fe9, { name: name, required: isRequired, disabled: isDisabled, defaultOpen: isDefaultOpen, value: selectedValue, onOpenChange: onOpenChange, onValueChange: function (value) { return onValueChange(value); } },
35790
35794
  React__default["default"].createElement($cc7e05a45900e73f$export$41fb9f06171c75f4, { id: id, name: name, onBlur: onBlur, className: classNames("arc-Select-trigger", {
@@ -35792,7 +35796,7 @@ var Select = function (_a) {
35792
35796
  "arc-Select-trigger--onDarkSurface": surface === "dark",
35793
35797
  "arc-Select-trigger--invalid": errorMessage
35794
35798
  }) },
35795
- React__default["default"].createElement($cc7e05a45900e73f$export$4c8d1a57a761ef94, { asChild: true, "aria-label": selectedValue }, !selectedValue ? (React__default["default"].createElement("span", { "aria-hidden": true, className: "arc-Select-placeHolder" }, placeholder)) : (React__default["default"].createElement("span", { className: "arc-Select-valueItem" }, selectedValue))),
35799
+ React__default["default"].createElement($cc7e05a45900e73f$export$4c8d1a57a761ef94, { asChild: true, "aria-label": getSelectedValueName(selectedValue) }, !selectedValue ? (React__default["default"].createElement("span", { "aria-hidden": true, className: "arc-Select-placeHolder" }, placeholder)) : (React__default["default"].createElement("span", { className: "arc-Select-valueItem" }, getSelectedValueName(selectedValue)))),
35796
35800
  React__default["default"].createElement($cc7e05a45900e73f$export$f04a61298a47a40f, { className: "arc-Select-triggerIcon" },
35797
35801
  React__default["default"].createElement(Icon, { icon: BtIconChevronDown2Px_2, size: 20 }))),
35798
35802
  React__default["default"].createElement($cc7e05a45900e73f$export$602eac185826482c, { container: arcRootElement },
@@ -36542,6 +36546,208 @@ SiteHeaderRehydrator.NavItemRehydrator = NavItemRehydrator;
36542
36546
  SiteHeaderRehydrator.NavItemWithSubNavRehydrator = NavItemWithSubNavRehydrator;
36543
36547
  SiteHeaderRehydrator.SubNavItemRehydrator = SubNavItemRehydrator;
36544
36548
 
36549
+ function $db6c3485150b8e66$export$1ab7ae714698c4b8(element) {
36550
+ const [size, setSize] = React$a.useState(undefined);
36551
+ $9f79659886946c16$export$e5c5a5f917a5871c(()=>{
36552
+ if (element) {
36553
+ // provide size as early as possible
36554
+ setSize({
36555
+ width: element.offsetWidth,
36556
+ height: element.offsetHeight
36557
+ });
36558
+ const resizeObserver = new ResizeObserver((entries)=>{
36559
+ if (!Array.isArray(entries)) return;
36560
+ // Since we only observe the one element, we don't need to loop over the
36561
+ // array
36562
+ if (!entries.length) return;
36563
+ const entry = entries[0];
36564
+ let width;
36565
+ let height;
36566
+ if ('borderBoxSize' in entry) {
36567
+ const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers
36568
+ const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
36569
+ width = borderSize['inlineSize'];
36570
+ height = borderSize['blockSize'];
36571
+ } else {
36572
+ // for browsers that don't support `borderBoxSize`
36573
+ // we calculate it ourselves to get the correct border box.
36574
+ width = element.offsetWidth;
36575
+ height = element.offsetHeight;
36576
+ }
36577
+ setSize({
36578
+ width: width,
36579
+ height: height
36580
+ });
36581
+ });
36582
+ resizeObserver.observe(element, {
36583
+ box: 'border-box'
36584
+ });
36585
+ return ()=>resizeObserver.unobserve(element)
36586
+ ;
36587
+ } else // We only want to reset to `undefined` when the element becomes `null`,
36588
+ // not if it changes to another element.
36589
+ setSize(undefined);
36590
+ }, [
36591
+ element
36592
+ ]);
36593
+ return size;
36594
+ }
36595
+
36596
+ /* -------------------------------------------------------------------------------------------------
36597
+ * Switch
36598
+ * -----------------------------------------------------------------------------------------------*/ const $6be4966fd9bbc698$var$SWITCH_NAME = 'Switch';
36599
+ const [$6be4966fd9bbc698$var$createSwitchContext, $6be4966fd9bbc698$export$cf7f5f17f69cbd43] = $c512c27ab02ef895$export$50c7b4e9d9f19c1($6be4966fd9bbc698$var$SWITCH_NAME);
36600
+ const [$6be4966fd9bbc698$var$SwitchProvider, $6be4966fd9bbc698$var$useSwitchContext] = $6be4966fd9bbc698$var$createSwitchContext($6be4966fd9bbc698$var$SWITCH_NAME);
36601
+ const $6be4966fd9bbc698$export$b5d5cf8927ab7262 = /*#__PURE__*/ React$a.forwardRef((props, forwardedRef)=>{
36602
+ const { __scopeSwitch: __scopeSwitch , name: name , checked: checkedProp , defaultChecked: defaultChecked , required: required , disabled: disabled , value: value = 'on' , onCheckedChange: onCheckedChange , ...switchProps } = props;
36603
+ const [button, setButton] = React$a.useState(null);
36604
+ const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, (node)=>setButton(node)
36605
+ );
36606
+ const hasConsumerStoppedPropagationRef = React$a.useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)
36607
+ const isFormControl = button ? Boolean(button.closest('form')) : true;
36608
+ const [checked = false, setChecked] = $71cd76cc60e0454e$export$6f32135080cb4c3({
36609
+ prop: checkedProp,
36610
+ defaultProp: defaultChecked,
36611
+ onChange: onCheckedChange
36612
+ });
36613
+ return /*#__PURE__*/ React$a.createElement($6be4966fd9bbc698$var$SwitchProvider, {
36614
+ scope: __scopeSwitch,
36615
+ checked: checked,
36616
+ disabled: disabled
36617
+ }, /*#__PURE__*/ React$a.createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.button, _extends({
36618
+ type: "button",
36619
+ role: "switch",
36620
+ "aria-checked": checked,
36621
+ "aria-required": required,
36622
+ "data-state": $6be4966fd9bbc698$var$getState(checked),
36623
+ "data-disabled": disabled ? '' : undefined,
36624
+ disabled: disabled,
36625
+ value: value
36626
+ }, switchProps, {
36627
+ ref: composedRefs,
36628
+ onClick: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onClick, (event)=>{
36629
+ setChecked((prevChecked)=>!prevChecked
36630
+ );
36631
+ if (isFormControl) {
36632
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if switch is in a form, stop propagation from the button so that we only propagate
36633
+ // one click event (from the input). We propagate changes from an input so that native
36634
+ // form validation works and form events reflect switch updates.
36635
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
36636
+ }
36637
+ })
36638
+ })), isFormControl && /*#__PURE__*/ React$a.createElement($6be4966fd9bbc698$var$BubbleInput, {
36639
+ control: button,
36640
+ bubbles: !hasConsumerStoppedPropagationRef.current,
36641
+ name: name,
36642
+ value: value,
36643
+ checked: checked,
36644
+ required: required,
36645
+ disabled: disabled // We transform because the input is absolutely positioned but we have
36646
+ ,
36647
+ style: {
36648
+ transform: 'translateX(-100%)'
36649
+ }
36650
+ }));
36651
+ });
36652
+ /* -------------------------------------------------------------------------------------------------
36653
+ * SwitchThumb
36654
+ * -----------------------------------------------------------------------------------------------*/ const $6be4966fd9bbc698$var$THUMB_NAME = 'SwitchThumb';
36655
+ const $6be4966fd9bbc698$export$4d07bf653ea69106 = /*#__PURE__*/ React$a.forwardRef((props, forwardedRef)=>{
36656
+ const { __scopeSwitch: __scopeSwitch , ...thumbProps } = props;
36657
+ const context = $6be4966fd9bbc698$var$useSwitchContext($6be4966fd9bbc698$var$THUMB_NAME, __scopeSwitch);
36658
+ return /*#__PURE__*/ React$a.createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.span, _extends({
36659
+ "data-state": $6be4966fd9bbc698$var$getState(context.checked),
36660
+ "data-disabled": context.disabled ? '' : undefined
36661
+ }, thumbProps, {
36662
+ ref: forwardedRef
36663
+ }));
36664
+ });
36665
+ /* ---------------------------------------------------------------------------------------------- */ const $6be4966fd9bbc698$var$BubbleInput = (props)=>{
36666
+ const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;
36667
+ const ref = React$a.useRef(null);
36668
+ const prevChecked = $010c2913dbd2fe3d$export$5cae361ad82dce8b(checked);
36669
+ const controlSize = $db6c3485150b8e66$export$1ab7ae714698c4b8(control); // Bubble checked change to parents (e.g form change event)
36670
+ React$a.useEffect(()=>{
36671
+ const input = ref.current;
36672
+ const inputProto = window.HTMLInputElement.prototype;
36673
+ const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');
36674
+ const setChecked = descriptor.set;
36675
+ if (prevChecked !== checked && setChecked) {
36676
+ const event = new Event('click', {
36677
+ bubbles: bubbles
36678
+ });
36679
+ setChecked.call(input, checked);
36680
+ input.dispatchEvent(event);
36681
+ }
36682
+ }, [
36683
+ prevChecked,
36684
+ checked,
36685
+ bubbles
36686
+ ]);
36687
+ return /*#__PURE__*/ React$a.createElement("input", _extends({
36688
+ type: "checkbox",
36689
+ "aria-hidden": true,
36690
+ defaultChecked: checked
36691
+ }, inputProps, {
36692
+ tabIndex: -1,
36693
+ ref: ref,
36694
+ style: {
36695
+ ...props.style,
36696
+ ...controlSize,
36697
+ position: 'absolute',
36698
+ pointerEvents: 'none',
36699
+ opacity: 0,
36700
+ margin: 0
36701
+ }
36702
+ }));
36703
+ };
36704
+ function $6be4966fd9bbc698$var$getState(checked) {
36705
+ return checked ? 'checked' : 'unchecked';
36706
+ }
36707
+ const $6be4966fd9bbc698$export$be92b6f5f03c0fe9 = $6be4966fd9bbc698$export$b5d5cf8927ab7262;
36708
+ const $6be4966fd9bbc698$export$6521433ed15a34db = $6be4966fd9bbc698$export$4d07bf653ea69106;
36709
+
36710
+ /**
36711
+ * Use `VerticalSpace` to create vertical space between components.
36712
+ */
36713
+ var VerticalSpace = function (_a) {
36714
+ var _b;
36715
+ var _c = _a.isDebugVisible, isDebugVisible = _c === void 0 ? false : _c, _d = _a.size, size = _d === void 0 ? "24" : _d, props = __rest$2(_a, ["isDebugVisible", "size"]);
36716
+ return (React__default["default"].createElement("div", __assign$2({ className: classNames((_b = {
36717
+ "arc-VerticalSpace": true
36718
+ },
36719
+ _b["arc-VerticalSpace--size".concat(size)] = size && size !== "24",
36720
+ _b["arc-VerticalSpace--debugVisible"] = isDebugVisible,
36721
+ _b)) }, filterDataAttrs(props))));
36722
+ };
36723
+
36724
+ /** Use `Switch` to toggle between checked and not checked. */
36725
+ var Switch = function (_a) {
36726
+ var defaultChecked = _a.defaultChecked, onCheckedChange = _a.onCheckedChange, label = _a.label, name = _a.name, onBlur = _a.onBlur, value = _a.value, _b = _a.isDisabled, isDisabled = _b === void 0 ? false : _b, errorMessage = _a.errorMessage, id = _a.id, _c = _a.labelSize, labelSize = _c === void 0 ? "s" : _c, statusText = _a.statusText, _d = _a.hideLabel, hideLabel = _d === void 0 ? false : _d;
36727
+ var surface = React$a.useContext(Context$3).surface;
36728
+ return (React__default["default"].createElement(FormControl, { errorMessage: errorMessage, htmlFor: id, isDisabled: isDisabled, label: hideLabel ? "" : label, labelSize: labelSize, requirementStatus: "not-applicable" },
36729
+ !hideLabel && React__default["default"].createElement(VerticalSpace, { size: "8" }),
36730
+ React__default["default"].createElement("div", { className: "arc-Switch-container" },
36731
+ React__default["default"].createElement($6be4966fd9bbc698$export$be92b6f5f03c0fe9, { id: id, "aria-label": label, defaultChecked: defaultChecked, name: name, value: value, onBlur: onBlur, onCheckedChange: onCheckedChange, disabled: isDisabled, className: classNames("arc-Switch", {
36732
+ "arc-Switch--large": labelSize === "l",
36733
+ "arc-Switch--isDisabled": isDisabled,
36734
+ "arc-Switch--onDarkSurface": surface === "dark"
36735
+ }) },
36736
+ React__default["default"].createElement("div", { className: "arc-Switch-wrapper" },
36737
+ React__default["default"].createElement($6be4966fd9bbc698$export$6521433ed15a34db, { className: "arc-Switch-thumb" },
36738
+ React__default["default"].createElement("div", { className: "arc-Switch-thumbIcon" },
36739
+ React__default["default"].createElement("div", { className: "arc-Switch-icon", "data-testid": "arc-switch-thumb-icon" },
36740
+ React__default["default"].createElement(Icon, { icon: BtIconTickAlt2Px_2, color: surface === "dark" ? "brand" : "brand", size: labelSize === "l" ? 24 : 16 })))))),
36741
+ React__default["default"].createElement("div", { className: classNames("arc-Switch-statusText", {
36742
+ "arc-Switch-statusText--isDisabled": isDisabled,
36743
+ "arc-Switch-statusText--onDarkSurface": surface === "dark"
36744
+ }) },
36745
+ React__default["default"].createElement(Text, { size: labelSize },
36746
+ " ",
36747
+ statusText,
36748
+ " ")))));
36749
+ };
36750
+
36545
36751
  /** Use `Badge` component to visually display a small amount of information, such as notification counts or status indicators. */
36546
36752
  var Badge = function (_a) {
36547
36753
  var _b, _c;
@@ -36614,20 +36820,6 @@ var Truncate = function (_a) {
36614
36820
  return (React__default["default"].createElement("div", { className: "arc-Truncate", style: { maxWidth: "".concat(maxWidth, "%") }, title: title }, children));
36615
36821
  };
36616
36822
 
36617
- /**
36618
- * Use `VerticalSpace` to create vertical space between components.
36619
- */
36620
- var VerticalSpace = function (_a) {
36621
- var _b;
36622
- var _c = _a.isDebugVisible, isDebugVisible = _c === void 0 ? false : _c, _d = _a.size, size = _d === void 0 ? "24" : _d, props = __rest$2(_a, ["isDebugVisible", "size"]);
36623
- return (React__default["default"].createElement("div", __assign$2({ className: classNames((_b = {
36624
- "arc-VerticalSpace": true
36625
- },
36626
- _b["arc-VerticalSpace--size".concat(size)] = size && size !== "24",
36627
- _b["arc-VerticalSpace--debugVisible"] = isDebugVisible,
36628
- _b)) }, filterDataAttrs(props))));
36629
- };
36630
-
36631
36823
  exports.Align = Align;
36632
36824
  exports.Badge = Badge;
36633
36825
  exports.Base = Base;
@@ -36659,6 +36851,7 @@ exports.SiteHeader = SiteHeader;
36659
36851
  exports.SiteHeaderRehydrator = SiteHeaderRehydrator;
36660
36852
  exports.Surface = Surface;
36661
36853
  exports.SurfaceContext = Context$3;
36854
+ exports.Switch = Switch;
36662
36855
  exports.Text = Text;
36663
36856
  exports.TextInput = TextInput;
36664
36857
  exports.Truncate = Truncate;