@activecollab/components 2.0.178 → 2.0.180

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
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('classnames'), require('styled-components'), require('resize-observer-polyfill'), require('react-focus-lock'), require('react-remove-scroll'), require('react-dom'), require('@popperjs/core'), require('react-transition-group'), require('moment'), require('date-fns'), require('react-day-picker'), require('moment-timezone'), require('lodash.debounce'), require('react-custom-scrollbars-2'), require('country-explorer'), require('compromise'), require('compromise-dates')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react', 'classnames', 'styled-components', 'resize-observer-polyfill', 'react-focus-lock', 'react-remove-scroll', 'react-dom', '@popperjs/core', 'react-transition-group', 'moment', 'date-fns', 'react-day-picker', 'moment-timezone', 'lodash.debounce', 'react-custom-scrollbars-2', 'country-explorer', 'compromise', 'compromise-dates'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.components = {}, global.React, global.classNames, global.styled, global.ResizeObserver, global.FocusLock, global.reactRemoveScroll, global.ReactDOM, global.PopperJS, global.reactTransitionGroup, global.moment, global.DateFns, global.DayPicker, global["moment-timezone"], global.debounce, global.reactCustomScrollbars, global.countryExplorer, global.compromise, global.compromiseDates));
5
- })(this, (function (exports, React, classNames, styled, ResizeObserver, FocusLock, reactRemoveScroll, ReactDOM, core, reactTransitionGroup, moment, dateFns, reactDayPicker, moment$1, debounce, reactCustomScrollbars2, countryExplorer, nlp, plg) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('classnames'), require('styled-components'), require('resize-observer-polyfill'), require('react-focus-lock'), require('react-remove-scroll'), require('react-dom'), require('@popperjs/core'), require('react-transition-group'), require('moment'), require('date-fns'), require('react-day-picker'), require('moment-timezone'), require('react-custom-scrollbars-2'), require('country-explorer'), require('compromise'), require('compromise-dates')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'react', 'classnames', 'styled-components', 'resize-observer-polyfill', 'react-focus-lock', 'react-remove-scroll', 'react-dom', '@popperjs/core', 'react-transition-group', 'moment', 'date-fns', 'react-day-picker', 'moment-timezone', 'react-custom-scrollbars-2', 'country-explorer', 'compromise', 'compromise-dates'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.components = {}, global.React, global.classNames, global.styled, global.ResizeObserver, global.FocusLock, global.reactRemoveScroll, global.ReactDOM, global.PopperJS, global.reactTransitionGroup, global.moment, global.DateFns, global.DayPicker, global["moment-timezone"], global.reactCustomScrollbars, global.countryExplorer, global.compromise, global.compromiseDates));
5
+ })(this, (function (exports, React, classNames, styled, ResizeObserver, FocusLock, reactRemoveScroll, ReactDOM, core, reactTransitionGroup, moment, dateFns, reactDayPicker, moment$1, reactCustomScrollbars2, countryExplorer, nlp, plg) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -14,7 +14,6 @@
14
14
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
15
15
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
16
16
  var moment__default$1 = /*#__PURE__*/_interopDefaultLegacy(moment$1);
17
- var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
18
17
  var nlp__default = /*#__PURE__*/_interopDefaultLegacy(nlp);
19
18
  var plg__default = /*#__PURE__*/_interopDefaultLegacy(plg);
20
19
 
@@ -13606,7 +13605,7 @@
13606
13605
  var StyledNav = styled__default["default"].nav.withConfig({
13607
13606
  displayName: "Styles__StyledNav",
13608
13607
  componentId: "sc-1khiypw-0"
13609
- })(["", " height:100%;overflow:clip visible;", " ", " ", " ", ""], {
13608
+ })(["", " height:100%;width:100%;overflow:clip visible;", " ", " ", " ", ""], {
13610
13609
  "display": "flex"
13611
13610
  }, function (props) {
13612
13611
  return props.$align === "left" && styled.css(["", ""], {
@@ -15677,75 +15676,75 @@
15677
15676
  Select.displayName = "Select";
15678
15677
 
15679
15678
  var Nav = function Nav(_ref) {
15679
+ var _dimensions$width, _childDimensions$widt;
15680
15680
  var children = _ref.children,
15681
15681
  _ref$alignment = _ref.alignment,
15682
15682
  alignment = _ref$alignment === void 0 ? "left" : _ref$alignment,
15683
15683
  onSelect = _ref.onSelect,
15684
- onMoreOptionSelect = _ref.onMoreOptionSelect,
15685
15684
  className = _ref.className,
15686
15685
  _ref$role = _ref.role,
15687
- role = _ref$role === void 0 ? "bold" : _ref$role,
15688
- moreLabel = _ref.moreLabel,
15689
- _ref$type = _ref.type,
15690
- type = _ref$type === void 0 ? "inline" : _ref$type;
15686
+ role = _ref$role === void 0 ? "bold" : _ref$role;
15691
15687
  var _useState = React.useState(0),
15692
15688
  _useState2 = _slicedToArray(_useState, 2),
15693
15689
  active = _useState2[0],
15694
15690
  setActive = _useState2[1];
15695
- var _useState3 = React.useState([]),
15691
+ var _useState3 = React.useState(false),
15696
15692
  _useState4 = _slicedToArray(_useState3, 2),
15697
- visibleTabIndexes = _useState4[0],
15698
- setVisibleTabIndexes = _useState4[1];
15699
- var _useState5 = React.useState(false),
15693
+ moreOpened = _useState4[0],
15694
+ setMoreOpened = _useState4[1];
15695
+ var _useState5 = React.useState("inline"),
15700
15696
  _useState6 = _slicedToArray(_useState5, 2),
15701
- measuringRender = _useState6[0],
15702
- setMeasuringRender = _useState6[1];
15703
- var _useState7 = React.useState(false),
15704
- _useState8 = _slicedToArray(_useState7, 2),
15705
- moreVisible = _useState8[0],
15706
- setMoreVisible = _useState8[1];
15707
- var _useState9 = React.useState(false),
15708
- _useState10 = _slicedToArray(_useState9, 2),
15709
- renderNavAsSelect = _useState10[0],
15710
- setRenderNavAsSelect = _useState10[1];
15711
- var _useState11 = React.useState([]),
15712
- _useState12 = _slicedToArray(_useState11, 2),
15713
- options = _useState12[0],
15714
- setOptions = _useState12[1];
15715
- var _useState13 = React.useState(false),
15716
- _useState14 = _slicedToArray(_useState13, 2),
15717
- moreOpened = _useState14[0],
15718
- setMoreOpened = _useState14[1];
15719
- var _useState15 = React.useState(false),
15720
- _useState16 = _slicedToArray(_useState15, 2),
15721
- isMounted = _useState16[0],
15722
- setIsMounted = _useState16[1];
15697
+ type = _useState6[0],
15698
+ setType = _useState6[1];
15699
+ var setMoreOpen = React.useCallback(function () {
15700
+ return setMoreOpened(true);
15701
+ }, []);
15702
+ var setMoreClose = React.useCallback(function () {
15703
+ return setMoreOpened(false);
15704
+ }, []);
15723
15705
  var navItemNames = React.useMemo(function () {
15724
- return children.map(function (item) {
15725
- return item.props.name;
15726
- });
15706
+ return children ? React.Children.toArray(children).map(function (item) {
15707
+ var _item$props;
15708
+ return item === null || item === void 0 || (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.name;
15709
+ }) : [];
15727
15710
  }, [children]);
15728
15711
  var allOptions = React.useMemo(function () {
15729
- return navItemNames.map(function (name, index) {
15712
+ return navItemNames === null || navItemNames === void 0 ? void 0 : navItemNames.map(function (name, index) {
15730
15713
  return {
15731
15714
  id: index,
15732
15715
  name: name
15733
15716
  };
15734
15717
  });
15735
15718
  }, [navItemNames]);
15736
-
15737
- // REFS
15738
15719
  var navRef = React.useRef(null);
15739
- var navItemsRefs = React.useRef({});
15740
- var moreItemRef = React.useRef(null);
15720
+ var wrapRef = React.useRef(null);
15721
+ var dimensions = useResizeObserver$1(wrapRef);
15722
+ var childDimensions = useResizeObserver$1(navRef);
15723
+ var parentWidth = (_dimensions$width = dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) !== null && _dimensions$width !== void 0 ? _dimensions$width : 0;
15724
+ var childWidth = (_childDimensions$widt = childDimensions === null || childDimensions === void 0 ? void 0 : childDimensions.width) !== null && _childDimensions$widt !== void 0 ? _childDimensions$widt : 0;
15725
+ var _useState7 = React.useState(childWidth),
15726
+ _useState8 = _slicedToArray(_useState7, 2),
15727
+ childrenWidth = _useState8[0],
15728
+ setChildrenWidth = _useState8[1];
15729
+ React.useLayoutEffect(function () {
15730
+ if (type === "inline") setChildrenWidth(childWidth);
15731
+ }, [childWidth, type]);
15741
15732
  var onClick = React.useCallback(function (e) {
15733
+ if (e.metaKey || e.ctrlKey) {
15734
+ return;
15735
+ }
15742
15736
  if (e.target && e.currentTarget.dataset.index && !e.currentTarget.dataset.disabled) {
15743
15737
  var _index = Number(e.currentTarget.dataset.index);
15744
15738
  setActive(_index);
15745
15739
  if (onSelect) {
15746
15740
  onSelect(_index);
15747
15741
  }
15748
- setMeasuringRender(true);
15742
+ }
15743
+ }, [onSelect]);
15744
+ var onMoreOptionClick = React.useCallback(function (id) {
15745
+ setActive(id);
15746
+ if (onSelect) {
15747
+ onSelect(id);
15749
15748
  }
15750
15749
  }, [onSelect]);
15751
15750
  React.useMemo(function () {
@@ -15755,190 +15754,52 @@
15755
15754
  }
15756
15755
  });
15757
15756
  }, [children]);
15758
- React.useLayoutEffect(function () {
15759
- if (type === "inline" && measuringRender && isMounted) {
15760
- var _navRef$current;
15761
- var containerWidth = ((_navRef$current = navRef.current) === null || _navRef$current === void 0 ? void 0 : _navRef$current.offsetWidth) || 0;
15762
- var itemsWidth = Object.values(navItemsRefs.current).reduce(function (acc, item) {
15763
- var itemEl = item;
15764
- return acc + (itemEl ? itemEl.offsetWidth : 0);
15765
- }, 0);
15766
-
15767
- // all tabs are visible
15768
- if (containerWidth >= itemsWidth) {
15769
- setVisibleTabIndexes(Array.from(navItemNames.keys()));
15770
- setMoreVisible(false);
15771
- setRenderNavAsSelect(false);
15772
- return setMeasuringRender(false);
15773
- }
15774
- setMoreVisible(true);
15775
- if (moreVisible) {
15776
- var _moreItemRef$current;
15777
- var moreItemWidth = ((_moreItemRef$current = moreItemRef.current) === null || _moreItemRef$current === void 0 ? void 0 : _moreItemRef$current.offsetWidth) || 0;
15778
- var firstItemWidth = navItemsRefs.current[0].offsetWidth;
15779
-
15780
- // collapse Nav to Select, there is no enough room
15781
- if (containerWidth < moreItemWidth + firstItemWidth) {
15782
- setVisibleTabIndexes([]);
15783
- var _options = navItemNames.map(function (name, index) {
15784
- return {
15785
- id: index,
15786
- name: name
15787
- };
15788
- });
15789
- setOptions(_options);
15790
- setRenderNavAsSelect(true);
15791
- setMoreVisible(false);
15792
- return setMeasuringRender(false);
15793
- }
15794
-
15795
- // item(s) + More...
15796
- var visible = [];
15797
- var allWidth = 0;
15798
- Object.values(navItemsRefs.current).forEach(function (item, index) {
15799
- var liItem = item;
15800
- allWidth += liItem.offsetWidth;
15801
- if (moreItemWidth + allWidth <= containerWidth) {
15802
- visible.push(index);
15803
- }
15804
- });
15805
- setVisibleTabIndexes(visible);
15806
- var _options2 = navItemNames.map(function (name, index) {
15807
- return {
15808
- id: index,
15809
- name: name
15810
- };
15811
- }).filter(function (item) {
15812
- return !visible.includes(item.id);
15813
- });
15814
- setOptions(_options2);
15815
- setRenderNavAsSelect(false);
15816
- setMeasuringRender(false);
15817
- }
15818
- }
15819
- }, [children, isMounted, measuringRender, moreVisible, navItemNames, type, visibleTabIndexes]);
15820
- React.useEffect(function () {
15821
- if (type === "inline") {
15822
- var handleResize = debounce__default["default"](function () {
15823
- setMeasuringRender(true);
15824
- }, 300);
15825
- window.addEventListener("resize", handleResize);
15826
- return function () {
15827
- window.removeEventListener("resize", handleResize);
15828
- };
15829
- }
15830
- }, [type]);
15831
-
15832
- // we are using observer to solve the problem of the initial rendering
15833
- React.useEffect(function () {
15834
- if (type === "inline" && navRef.current) {
15835
- var resizeObserver = new ResizeObserver__default["default"](function (entries) {
15836
- for (var entry of entries) {
15837
- var contentRect = entry.contentRect;
15838
- var _contentRect$width = contentRect.width,
15839
- width = _contentRect$width === void 0 ? 0 : _contentRect$width;
15840
- if (width > 0) {
15841
- setMeasuringRender(true);
15842
- }
15843
- }
15844
- });
15845
- resizeObserver.observe(navRef.current);
15846
- setTimeout(function () {
15847
- if (navRef.current) {
15848
- resizeObserver.unobserve(navRef.current);
15849
- }
15850
- }, 2000);
15851
- return function () {
15852
- resizeObserver.disconnect();
15853
- };
15854
- }
15855
- }, [type]);
15856
- React.useEffect(function () {
15857
- setMeasuringRender(true);
15858
- setIsMounted(true);
15859
- }, []);
15860
- var visibleTabs = React.useMemo(function () {
15861
- var tabs = React.Children.toArray(children);
15862
- if (measuringRender || !isMounted) {
15863
- return tabs;
15864
- } else {
15865
- return tabs.filter(function (child, index) {
15866
- return visibleTabIndexes.includes(index);
15867
- });
15868
- }
15869
- }, [children, isMounted, measuringRender, visibleTabIndexes]);
15870
- var onMoreOptionClick = React.useCallback(function (id) {
15871
- setActive(id);
15872
- if (onMoreOptionSelect) {
15873
- onMoreOptionSelect(id);
15874
- }
15875
- setMeasuringRender(true);
15876
- }, [onMoreOptionSelect]);
15877
15757
  var navAsSelect = React.useMemo(function () {
15878
15758
  return /*#__PURE__*/React__default["default"].createElement(StyledNavAsSelect, null, /*#__PURE__*/React__default["default"].createElement("span", null, navItemNames[active]), /*#__PURE__*/React__default["default"].createElement(ExpandSingle, {
15879
15759
  expanded: moreOpened,
15880
15760
  fill: "currentColor"
15881
15761
  }));
15882
15762
  }, [active, moreOpened, navItemNames]);
15883
- var setMoreOpen = React.useCallback(function () {
15884
- return setMoreOpened(true);
15885
- }, []);
15886
- var setMoreClose = React.useCallback(function () {
15887
- return setMoreOpened(false);
15888
- }, []);
15763
+ React.useEffect(function () {
15764
+ if (!navRef.current || !wrapRef.current) return;
15765
+ if (childrenWidth >= parentWidth) {
15766
+ setType("dropdown");
15767
+ } else {
15768
+ setType("inline");
15769
+ }
15770
+ }, [childrenWidth, parentWidth]);
15771
+ if (!children) return;
15889
15772
  return /*#__PURE__*/React__default["default"].createElement(StyledNav, {
15890
15773
  className: classNames__default["default"]("c-nav", className),
15891
15774
  $align: alignment,
15892
- $role: role
15775
+ $role: role,
15776
+ ref: wrapRef
15893
15777
  }, /*#__PURE__*/React__default["default"].createElement(StyledNavList, {
15894
15778
  ref: navRef
15895
- }, type === "inline" && visibleTabs.map(function (child, index) {
15779
+ }, type === "inline" && React.Children.toArray(children).map(function (child, index) {
15896
15780
  var element = child;
15897
15781
  return /*#__PURE__*/React.cloneElement(element, {
15898
15782
  active: index === active,
15899
15783
  role,
15900
- ref: function ref(el) {
15901
- navItemsRefs.current[index] = el;
15902
- },
15903
15784
  onClick,
15904
15785
  "data-index": index,
15905
15786
  "data-disabled": element.props.disabled
15906
15787
  });
15907
- }), type === "inline" && moreVisible ? /*#__PURE__*/React__default["default"].createElement(StyledNavListItemMore, {
15908
- ref: moreItemRef,
15909
- name: "More",
15910
- active: visibleTabIndexes.indexOf(active) === -1,
15911
- role: role
15912
- }, /*#__PURE__*/React__default["default"].createElement(Select, {
15913
- selected: active,
15914
- target: /*#__PURE__*/React__default["default"].createElement(StyledNavAsMoreTarget, {
15915
- $role: role
15916
- }, moreLabel),
15917
- disabledInternalSort: true,
15918
- onChange: onMoreOptionClick,
15919
- options: options,
15920
- type: "single",
15921
- mode: "normal",
15922
- forceCloseMenu: true,
15923
- disableSearch: true,
15924
- keepSameOptionsOrder: true,
15925
- onSelectOpen: setMoreOpen,
15926
- onSelectClose: setMoreClose
15927
- })) : null, type === "dropdown" || renderNavAsSelect ? /*#__PURE__*/React__default["default"].createElement(StyledNavListItemMore, {
15788
+ }), type === "dropdown" ? /*#__PURE__*/React__default["default"].createElement(StyledNavListItemMore, {
15928
15789
  name: "More",
15929
- active: visibleTabIndexes.indexOf(active) === -1,
15790
+ active: Array.from(navItemNames.keys()).indexOf(active) === -1,
15930
15791
  role: role
15931
15792
  }, /*#__PURE__*/React__default["default"].createElement(Select, {
15932
15793
  selected: active,
15933
15794
  target: navAsSelect,
15934
15795
  disabledInternalSort: true,
15935
- onChange: onMoreOptionClick,
15936
15796
  options: allOptions,
15937
15797
  type: "single",
15938
15798
  mode: "normal",
15939
15799
  forceCloseMenu: true,
15940
15800
  disableSearch: true,
15941
15801
  keepSameOptionsOrder: true,
15802
+ onChange: onMoreOptionClick,
15942
15803
  onSelectOpen: setMoreOpen,
15943
15804
  onSelectClose: setMoreClose
15944
15805
  })) : null));