@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.es.js CHANGED
@@ -35759,6 +35759,10 @@ var Select = function (_a) {
35759
35759
  onChange && onChange(value);
35760
35760
  setSelectedValue(value);
35761
35761
  };
35762
+ var getSelectedValueName = function (value) {
35763
+ var _a;
35764
+ return (_a = options.find(function (option) { return option.value === value; })) === null || _a === void 0 ? void 0 : _a.name;
35765
+ };
35762
35766
  return (React__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 },
35763
35767
  React__default.createElement($cc7e05a45900e73f$export$be92b6f5f03c0fe9, { name: name, required: isRequired, disabled: isDisabled, defaultOpen: isDefaultOpen, value: selectedValue, onOpenChange: onOpenChange, onValueChange: function (value) { return onValueChange(value); } },
35764
35768
  React__default.createElement($cc7e05a45900e73f$export$41fb9f06171c75f4, { id: id, name: name, onBlur: onBlur, className: classNames("arc-Select-trigger", {
@@ -35766,7 +35770,7 @@ var Select = function (_a) {
35766
35770
  "arc-Select-trigger--onDarkSurface": surface === "dark",
35767
35771
  "arc-Select-trigger--invalid": errorMessage
35768
35772
  }) },
35769
- React__default.createElement($cc7e05a45900e73f$export$4c8d1a57a761ef94, { asChild: true, "aria-label": selectedValue }, !selectedValue ? (React__default.createElement("span", { "aria-hidden": true, className: "arc-Select-placeHolder" }, placeholder)) : (React__default.createElement("span", { className: "arc-Select-valueItem" }, selectedValue))),
35773
+ React__default.createElement($cc7e05a45900e73f$export$4c8d1a57a761ef94, { asChild: true, "aria-label": getSelectedValueName(selectedValue) }, !selectedValue ? (React__default.createElement("span", { "aria-hidden": true, className: "arc-Select-placeHolder" }, placeholder)) : (React__default.createElement("span", { className: "arc-Select-valueItem" }, getSelectedValueName(selectedValue)))),
35770
35774
  React__default.createElement($cc7e05a45900e73f$export$f04a61298a47a40f, { className: "arc-Select-triggerIcon" },
35771
35775
  React__default.createElement(Icon, { icon: BtIconChevronDown2Px_2, size: 20 }))),
35772
35776
  React__default.createElement($cc7e05a45900e73f$export$602eac185826482c, { container: arcRootElement },
@@ -36516,6 +36520,208 @@ SiteHeaderRehydrator.NavItemRehydrator = NavItemRehydrator;
36516
36520
  SiteHeaderRehydrator.NavItemWithSubNavRehydrator = NavItemWithSubNavRehydrator;
36517
36521
  SiteHeaderRehydrator.SubNavItemRehydrator = SubNavItemRehydrator;
36518
36522
 
36523
+ function $db6c3485150b8e66$export$1ab7ae714698c4b8(element) {
36524
+ const [size, setSize] = useState(undefined);
36525
+ $9f79659886946c16$export$e5c5a5f917a5871c(()=>{
36526
+ if (element) {
36527
+ // provide size as early as possible
36528
+ setSize({
36529
+ width: element.offsetWidth,
36530
+ height: element.offsetHeight
36531
+ });
36532
+ const resizeObserver = new ResizeObserver((entries)=>{
36533
+ if (!Array.isArray(entries)) return;
36534
+ // Since we only observe the one element, we don't need to loop over the
36535
+ // array
36536
+ if (!entries.length) return;
36537
+ const entry = entries[0];
36538
+ let width;
36539
+ let height;
36540
+ if ('borderBoxSize' in entry) {
36541
+ const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers
36542
+ const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
36543
+ width = borderSize['inlineSize'];
36544
+ height = borderSize['blockSize'];
36545
+ } else {
36546
+ // for browsers that don't support `borderBoxSize`
36547
+ // we calculate it ourselves to get the correct border box.
36548
+ width = element.offsetWidth;
36549
+ height = element.offsetHeight;
36550
+ }
36551
+ setSize({
36552
+ width: width,
36553
+ height: height
36554
+ });
36555
+ });
36556
+ resizeObserver.observe(element, {
36557
+ box: 'border-box'
36558
+ });
36559
+ return ()=>resizeObserver.unobserve(element)
36560
+ ;
36561
+ } else // We only want to reset to `undefined` when the element becomes `null`,
36562
+ // not if it changes to another element.
36563
+ setSize(undefined);
36564
+ }, [
36565
+ element
36566
+ ]);
36567
+ return size;
36568
+ }
36569
+
36570
+ /* -------------------------------------------------------------------------------------------------
36571
+ * Switch
36572
+ * -----------------------------------------------------------------------------------------------*/ const $6be4966fd9bbc698$var$SWITCH_NAME = 'Switch';
36573
+ const [$6be4966fd9bbc698$var$createSwitchContext, $6be4966fd9bbc698$export$cf7f5f17f69cbd43] = $c512c27ab02ef895$export$50c7b4e9d9f19c1($6be4966fd9bbc698$var$SWITCH_NAME);
36574
+ const [$6be4966fd9bbc698$var$SwitchProvider, $6be4966fd9bbc698$var$useSwitchContext] = $6be4966fd9bbc698$var$createSwitchContext($6be4966fd9bbc698$var$SWITCH_NAME);
36575
+ const $6be4966fd9bbc698$export$b5d5cf8927ab7262 = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
36576
+ const { __scopeSwitch: __scopeSwitch , name: name , checked: checkedProp , defaultChecked: defaultChecked , required: required , disabled: disabled , value: value = 'on' , onCheckedChange: onCheckedChange , ...switchProps } = props;
36577
+ const [button, setButton] = useState(null);
36578
+ const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, (node)=>setButton(node)
36579
+ );
36580
+ const hasConsumerStoppedPropagationRef = useRef(false); // We set this to true by default so that events bubble to forms without JS (SSR)
36581
+ const isFormControl = button ? Boolean(button.closest('form')) : true;
36582
+ const [checked = false, setChecked] = $71cd76cc60e0454e$export$6f32135080cb4c3({
36583
+ prop: checkedProp,
36584
+ defaultProp: defaultChecked,
36585
+ onChange: onCheckedChange
36586
+ });
36587
+ return /*#__PURE__*/ createElement($6be4966fd9bbc698$var$SwitchProvider, {
36588
+ scope: __scopeSwitch,
36589
+ checked: checked,
36590
+ disabled: disabled
36591
+ }, /*#__PURE__*/ createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.button, _extends({
36592
+ type: "button",
36593
+ role: "switch",
36594
+ "aria-checked": checked,
36595
+ "aria-required": required,
36596
+ "data-state": $6be4966fd9bbc698$var$getState(checked),
36597
+ "data-disabled": disabled ? '' : undefined,
36598
+ disabled: disabled,
36599
+ value: value
36600
+ }, switchProps, {
36601
+ ref: composedRefs,
36602
+ onClick: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onClick, (event)=>{
36603
+ setChecked((prevChecked)=>!prevChecked
36604
+ );
36605
+ if (isFormControl) {
36606
+ hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(); // if switch is in a form, stop propagation from the button so that we only propagate
36607
+ // one click event (from the input). We propagate changes from an input so that native
36608
+ // form validation works and form events reflect switch updates.
36609
+ if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();
36610
+ }
36611
+ })
36612
+ })), isFormControl && /*#__PURE__*/ createElement($6be4966fd9bbc698$var$BubbleInput, {
36613
+ control: button,
36614
+ bubbles: !hasConsumerStoppedPropagationRef.current,
36615
+ name: name,
36616
+ value: value,
36617
+ checked: checked,
36618
+ required: required,
36619
+ disabled: disabled // We transform because the input is absolutely positioned but we have
36620
+ ,
36621
+ style: {
36622
+ transform: 'translateX(-100%)'
36623
+ }
36624
+ }));
36625
+ });
36626
+ /* -------------------------------------------------------------------------------------------------
36627
+ * SwitchThumb
36628
+ * -----------------------------------------------------------------------------------------------*/ const $6be4966fd9bbc698$var$THUMB_NAME = 'SwitchThumb';
36629
+ const $6be4966fd9bbc698$export$4d07bf653ea69106 = /*#__PURE__*/ forwardRef((props, forwardedRef)=>{
36630
+ const { __scopeSwitch: __scopeSwitch , ...thumbProps } = props;
36631
+ const context = $6be4966fd9bbc698$var$useSwitchContext($6be4966fd9bbc698$var$THUMB_NAME, __scopeSwitch);
36632
+ return /*#__PURE__*/ createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.span, _extends({
36633
+ "data-state": $6be4966fd9bbc698$var$getState(context.checked),
36634
+ "data-disabled": context.disabled ? '' : undefined
36635
+ }, thumbProps, {
36636
+ ref: forwardedRef
36637
+ }));
36638
+ });
36639
+ /* ---------------------------------------------------------------------------------------------- */ const $6be4966fd9bbc698$var$BubbleInput = (props)=>{
36640
+ const { control: control , checked: checked , bubbles: bubbles = true , ...inputProps } = props;
36641
+ const ref = useRef(null);
36642
+ const prevChecked = $010c2913dbd2fe3d$export$5cae361ad82dce8b(checked);
36643
+ const controlSize = $db6c3485150b8e66$export$1ab7ae714698c4b8(control); // Bubble checked change to parents (e.g form change event)
36644
+ useEffect(()=>{
36645
+ const input = ref.current;
36646
+ const inputProto = window.HTMLInputElement.prototype;
36647
+ const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked');
36648
+ const setChecked = descriptor.set;
36649
+ if (prevChecked !== checked && setChecked) {
36650
+ const event = new Event('click', {
36651
+ bubbles: bubbles
36652
+ });
36653
+ setChecked.call(input, checked);
36654
+ input.dispatchEvent(event);
36655
+ }
36656
+ }, [
36657
+ prevChecked,
36658
+ checked,
36659
+ bubbles
36660
+ ]);
36661
+ return /*#__PURE__*/ createElement("input", _extends({
36662
+ type: "checkbox",
36663
+ "aria-hidden": true,
36664
+ defaultChecked: checked
36665
+ }, inputProps, {
36666
+ tabIndex: -1,
36667
+ ref: ref,
36668
+ style: {
36669
+ ...props.style,
36670
+ ...controlSize,
36671
+ position: 'absolute',
36672
+ pointerEvents: 'none',
36673
+ opacity: 0,
36674
+ margin: 0
36675
+ }
36676
+ }));
36677
+ };
36678
+ function $6be4966fd9bbc698$var$getState(checked) {
36679
+ return checked ? 'checked' : 'unchecked';
36680
+ }
36681
+ const $6be4966fd9bbc698$export$be92b6f5f03c0fe9 = $6be4966fd9bbc698$export$b5d5cf8927ab7262;
36682
+ const $6be4966fd9bbc698$export$6521433ed15a34db = $6be4966fd9bbc698$export$4d07bf653ea69106;
36683
+
36684
+ /**
36685
+ * Use `VerticalSpace` to create vertical space between components.
36686
+ */
36687
+ var VerticalSpace = function (_a) {
36688
+ var _b;
36689
+ 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"]);
36690
+ return (React__default.createElement("div", __assign$2({ className: classNames((_b = {
36691
+ "arc-VerticalSpace": true
36692
+ },
36693
+ _b["arc-VerticalSpace--size".concat(size)] = size && size !== "24",
36694
+ _b["arc-VerticalSpace--debugVisible"] = isDebugVisible,
36695
+ _b)) }, filterDataAttrs(props))));
36696
+ };
36697
+
36698
+ /** Use `Switch` to toggle between checked and not checked. */
36699
+ var Switch = function (_a) {
36700
+ 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;
36701
+ var surface = useContext(Context$3).surface;
36702
+ return (React__default.createElement(FormControl, { errorMessage: errorMessage, htmlFor: id, isDisabled: isDisabled, label: hideLabel ? "" : label, labelSize: labelSize, requirementStatus: "not-applicable" },
36703
+ !hideLabel && React__default.createElement(VerticalSpace, { size: "8" }),
36704
+ React__default.createElement("div", { className: "arc-Switch-container" },
36705
+ React__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", {
36706
+ "arc-Switch--large": labelSize === "l",
36707
+ "arc-Switch--isDisabled": isDisabled,
36708
+ "arc-Switch--onDarkSurface": surface === "dark"
36709
+ }) },
36710
+ React__default.createElement("div", { className: "arc-Switch-wrapper" },
36711
+ React__default.createElement($6be4966fd9bbc698$export$6521433ed15a34db, { className: "arc-Switch-thumb" },
36712
+ React__default.createElement("div", { className: "arc-Switch-thumbIcon" },
36713
+ React__default.createElement("div", { className: "arc-Switch-icon", "data-testid": "arc-switch-thumb-icon" },
36714
+ React__default.createElement(Icon, { icon: BtIconTickAlt2Px_2, color: surface === "dark" ? "brand" : "brand", size: labelSize === "l" ? 24 : 16 })))))),
36715
+ React__default.createElement("div", { className: classNames("arc-Switch-statusText", {
36716
+ "arc-Switch-statusText--isDisabled": isDisabled,
36717
+ "arc-Switch-statusText--onDarkSurface": surface === "dark"
36718
+ }) },
36719
+ React__default.createElement(Text, { size: labelSize },
36720
+ " ",
36721
+ statusText,
36722
+ " ")))));
36723
+ };
36724
+
36519
36725
  /** Use `Badge` component to visually display a small amount of information, such as notification counts or status indicators. */
36520
36726
  var Badge = function (_a) {
36521
36727
  var _b, _c;
@@ -36588,19 +36794,5 @@ var Truncate = function (_a) {
36588
36794
  return (React__default.createElement("div", { className: "arc-Truncate", style: { maxWidth: "".concat(maxWidth, "%") }, title: title }, children));
36589
36795
  };
36590
36796
 
36591
- /**
36592
- * Use `VerticalSpace` to create vertical space between components.
36593
- */
36594
- var VerticalSpace = function (_a) {
36595
- var _b;
36596
- 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"]);
36597
- return (React__default.createElement("div", __assign$2({ className: classNames((_b = {
36598
- "arc-VerticalSpace": true
36599
- },
36600
- _b["arc-VerticalSpace--size".concat(size)] = size && size !== "24",
36601
- _b["arc-VerticalSpace--debugVisible"] = isDebugVisible,
36602
- _b)) }, filterDataAttrs(props))));
36603
- };
36604
-
36605
- export { Align, Badge, Base, BrandLogo, Breadcrumbs, Button, Card, Checkbox, Clock, Clock_rehydrator as ClockRehydrator, Columns, Curve, Disclosure, Elevation, FormControl, Group, Heading, Icon, Image, Markup, Poster, RadioGroup, Rule, Section, Select, SiteFooter, SiteFooter_rehydrator as SiteFooterRehydrator, SiteHeader, SiteHeaderRehydrator, Surface, Context$3 as SurfaceContext, Text, TextInput, Truncate, UniversalHeader, VerticalSpace, VisuallyHidden };
36797
+ export { Align, Badge, Base, BrandLogo, Breadcrumbs, Button, Card, Checkbox, Clock, Clock_rehydrator as ClockRehydrator, Columns, Curve, Disclosure, Elevation, FormControl, Group, Heading, Icon, Image, Markup, Poster, RadioGroup, Rule, Section, Select, SiteFooter, SiteFooter_rehydrator as SiteFooterRehydrator, SiteHeader, SiteHeaderRehydrator, Surface, Context$3 as SurfaceContext, Switch, Text, TextInput, Truncate, UniversalHeader, VerticalSpace, VisuallyHidden };
36606
36798
  //# sourceMappingURL=index.es.js.map