@activecollab/components 2.0.179 → 2.0.181

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,76 @@
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
15686
  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;
15687
+ targetId = _ref.targetId;
15691
15688
  var _useState = React.useState(0),
15692
15689
  _useState2 = _slicedToArray(_useState, 2),
15693
15690
  active = _useState2[0],
15694
15691
  setActive = _useState2[1];
15695
- var _useState3 = React.useState([]),
15692
+ var _useState3 = React.useState(false),
15696
15693
  _useState4 = _slicedToArray(_useState3, 2),
15697
- visibleTabIndexes = _useState4[0],
15698
- setVisibleTabIndexes = _useState4[1];
15699
- var _useState5 = React.useState(false),
15694
+ moreOpened = _useState4[0],
15695
+ setMoreOpened = _useState4[1];
15696
+ var _useState5 = React.useState("inline"),
15700
15697
  _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];
15698
+ type = _useState6[0],
15699
+ setType = _useState6[1];
15700
+ var setMoreOpen = React.useCallback(function () {
15701
+ return setMoreOpened(true);
15702
+ }, []);
15703
+ var setMoreClose = React.useCallback(function () {
15704
+ return setMoreOpened(false);
15705
+ }, []);
15723
15706
  var navItemNames = React.useMemo(function () {
15724
- return children.map(function (item) {
15725
- return item.props.name;
15726
- });
15707
+ return children ? React.Children.toArray(children).map(function (item) {
15708
+ var _item$props;
15709
+ return item === null || item === void 0 || (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.name;
15710
+ }) : [];
15727
15711
  }, [children]);
15728
15712
  var allOptions = React.useMemo(function () {
15729
- return navItemNames.map(function (name, index) {
15713
+ return navItemNames === null || navItemNames === void 0 ? void 0 : navItemNames.map(function (name, index) {
15730
15714
  return {
15731
15715
  id: index,
15732
15716
  name: name
15733
15717
  };
15734
15718
  });
15735
15719
  }, [navItemNames]);
15736
-
15737
- // REFS
15738
15720
  var navRef = React.useRef(null);
15739
- var navItemsRefs = React.useRef({});
15740
- var moreItemRef = React.useRef(null);
15721
+ var wrapRef = React.useRef(null);
15722
+ var dimensions = useResizeObserver$1(wrapRef);
15723
+ var childDimensions = useResizeObserver$1(navRef);
15724
+ var parentWidth = (_dimensions$width = dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) !== null && _dimensions$width !== void 0 ? _dimensions$width : 0;
15725
+ var childWidth = (_childDimensions$widt = childDimensions === null || childDimensions === void 0 ? void 0 : childDimensions.width) !== null && _childDimensions$widt !== void 0 ? _childDimensions$widt : 0;
15726
+ var _useState7 = React.useState(childWidth),
15727
+ _useState8 = _slicedToArray(_useState7, 2),
15728
+ childrenWidth = _useState8[0],
15729
+ setChildrenWidth = _useState8[1];
15730
+ React.useLayoutEffect(function () {
15731
+ if (type === "inline") setChildrenWidth(childWidth);
15732
+ }, [childWidth, type]);
15741
15733
  var onClick = React.useCallback(function (e) {
15734
+ if (e.metaKey || e.ctrlKey) {
15735
+ return;
15736
+ }
15742
15737
  if (e.target && e.currentTarget.dataset.index && !e.currentTarget.dataset.disabled) {
15743
15738
  var _index = Number(e.currentTarget.dataset.index);
15744
15739
  setActive(_index);
15745
15740
  if (onSelect) {
15746
15741
  onSelect(_index);
15747
15742
  }
15748
- setMeasuringRender(true);
15743
+ }
15744
+ }, [onSelect]);
15745
+ var onMoreOptionClick = React.useCallback(function (id) {
15746
+ setActive(id);
15747
+ if (onSelect) {
15748
+ onSelect(id);
15749
15749
  }
15750
15750
  }, [onSelect]);
15751
15751
  React.useMemo(function () {
@@ -15755,190 +15755,54 @@
15755
15755
  }
15756
15756
  });
15757
15757
  }, [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
15758
  var navAsSelect = React.useMemo(function () {
15878
- return /*#__PURE__*/React__default["default"].createElement(StyledNavAsSelect, null, /*#__PURE__*/React__default["default"].createElement("span", null, navItemNames[active]), /*#__PURE__*/React__default["default"].createElement(ExpandSingle, {
15759
+ return /*#__PURE__*/React__default["default"].createElement(StyledNavAsSelect, {
15760
+ id: targetId
15761
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, navItemNames[active]), /*#__PURE__*/React__default["default"].createElement(ExpandSingle, {
15879
15762
  expanded: moreOpened,
15880
15763
  fill: "currentColor"
15881
15764
  }));
15882
- }, [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
- }, []);
15765
+ }, [active, moreOpened, navItemNames, targetId]);
15766
+ React.useEffect(function () {
15767
+ if (!navRef.current || !wrapRef.current) return;
15768
+ if (childrenWidth >= parentWidth) {
15769
+ setType("dropdown");
15770
+ } else {
15771
+ setType("inline");
15772
+ }
15773
+ }, [childrenWidth, parentWidth]);
15774
+ if (!children) return;
15889
15775
  return /*#__PURE__*/React__default["default"].createElement(StyledNav, {
15890
15776
  className: classNames__default["default"]("c-nav", className),
15891
15777
  $align: alignment,
15892
- $role: role
15778
+ $role: role,
15779
+ ref: wrapRef
15893
15780
  }, /*#__PURE__*/React__default["default"].createElement(StyledNavList, {
15894
15781
  ref: navRef
15895
- }, type === "inline" && visibleTabs.map(function (child, index) {
15782
+ }, type === "inline" && React.Children.toArray(children).map(function (child, index) {
15896
15783
  var element = child;
15897
15784
  return /*#__PURE__*/React.cloneElement(element, {
15898
15785
  active: index === active,
15899
15786
  role,
15900
- ref: function ref(el) {
15901
- navItemsRefs.current[index] = el;
15902
- },
15903
15787
  onClick,
15904
15788
  "data-index": index,
15905
15789
  "data-disabled": element.props.disabled
15906
15790
  });
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, {
15791
+ }), type === "dropdown" ? /*#__PURE__*/React__default["default"].createElement(StyledNavListItemMore, {
15928
15792
  name: "More",
15929
- active: visibleTabIndexes.indexOf(active) === -1,
15793
+ active: Array.from(navItemNames.keys()).indexOf(active) === -1,
15930
15794
  role: role
15931
15795
  }, /*#__PURE__*/React__default["default"].createElement(Select, {
15932
15796
  selected: active,
15933
15797
  target: navAsSelect,
15934
15798
  disabledInternalSort: true,
15935
- onChange: onMoreOptionClick,
15936
15799
  options: allOptions,
15937
15800
  type: "single",
15938
15801
  mode: "normal",
15939
15802
  forceCloseMenu: true,
15940
15803
  disableSearch: true,
15941
15804
  keepSameOptionsOrder: true,
15805
+ onChange: onMoreOptionClick,
15942
15806
  onSelectOpen: setMoreOpen,
15943
15807
  onSelectClose: setMoreClose
15944
15808
  })) : null));