@majoo-ui/react 1.53.1 → 1.53.2

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.
Files changed (3) hide show
  1. package/index.esm.js +146 -16
  2. package/index.umd.js +144 -14
  3. package/package.json +2 -2
package/index.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as React from 'react';
2
- import React__default, { useState, createContext, useContext, useEffect, useRef, createElement as createElement$2, forwardRef, cloneElement, useCallback, useReducer } from 'react';
2
+ import React__default, { useState, createContext, useContext, useEffect, useRef, createElement as createElement$2, forwardRef, cloneElement, useLayoutEffect, useCallback, useReducer } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { createStitches, styled as styled$1 } from '@stitches/react';
5
5
  import { foundations } from '@majoo-ui/core';
6
- import { CloseOutline, UserFilled, CircleQuestionOutline, SearchOutline, CloseFilled, CircleInfoOutline, CaretDownOutline, CirclePlusOutline, MinusOutline, PlusOutline, ChevronDownOutline, ChevronLeftOutline, ChevronRightOutline, ChevronUpOutline, TimeOutline, CalendarOutline, ArrowLeftOutline, ArrowRightOutline, EllipsisHorizontalOutline, EyeOutline, UploadOutline, ImageOutline, ChevronLgLeftOutline, ChevronUpDownOutline, CheckFilled, RemoveOutline, LocationOutline } from '@majoo-ui/icons';
6
+ import { CloseOutline, UserFilled, CircleQuestionOutline, SearchOutline, CloseFilled, CircleInfoOutline, CaretDownOutline, CirclePlusOutline, MinusOutline, PlusOutline, ChevronLgLeftOutline, ChevronLgRightOutline, ChevronDownOutline, ChevronLeftOutline, ChevronRightOutline, ChevronUpOutline, TimeOutline, CalendarOutline, ArrowLeftOutline, ArrowRightOutline, EllipsisHorizontalOutline, EyeOutline, UploadOutline, ImageOutline, ChevronUpDownOutline, CheckFilled, RemoveOutline, LocationOutline } from '@majoo-ui/icons';
7
7
  import { Transition } from 'react-transition-group';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { Portal } from '@majoo-ui/helpers';
@@ -3922,7 +3922,10 @@ const ButtonTableMenu = {
3922
3922
  }
3923
3923
  };
3924
3924
  const StyledIcon$2 = styled('div', {
3925
- verticalAlign: 'middle'
3925
+ verticalAlign: 'middle',
3926
+ '& svg': {
3927
+ verticalAlign: 'middle'
3928
+ }
3926
3929
  });
3927
3930
  const StyledIconLeft$4 = styled('div', {
3928
3931
  marginRight: '$spacing-03',
@@ -11740,7 +11743,15 @@ const StyledList = styled(TabsPrimitive.List, {
11740
11743
  flexShrink: 0,
11741
11744
  display: 'flex',
11742
11745
  borderBottom: '$medium',
11743
- boxShadow: '$medium'
11746
+ boxShadow: '$medium',
11747
+ overflowX: 'auto',
11748
+ overflowY: 'hidden',
11749
+ scrollBehavior: 'smooth',
11750
+ '-ms-overflow-style': 'none',
11751
+ scrollbarWidth: 'none',
11752
+ '&::-webkit-scrollbar': {
11753
+ display: 'none'
11754
+ }
11744
11755
  });
11745
11756
  const StyledTrigger$1 = styled(TabsPrimitive.Trigger, {
11746
11757
  all: 'unset',
@@ -11807,6 +11818,47 @@ const StyledContent$5 = styled(TabsPrimitive.Content, {
11807
11818
  outline: 'none',
11808
11819
  boxShadow: '$medium'
11809
11820
  });
11821
+ const ScrollButton = styled(Button$3, {
11822
+ width: '28px',
11823
+ '&:hover': {
11824
+ boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.07), 0px 2px 4px rgba(0, 0, 0, 0.05), 0px 4px 10px rgba(0, 0, 0, 0.05)'
11825
+ },
11826
+ variants: {
11827
+ position: {
11828
+ left: {
11829
+ '& svg': {
11830
+ marginTop: '-1px',
11831
+ marginLeft: '-2px'
11832
+ }
11833
+ },
11834
+ right: {
11835
+ '& svg': {
11836
+ marginTop: 0,
11837
+ marginLeft: 0
11838
+ }
11839
+ }
11840
+ }
11841
+ }
11842
+ });
11843
+ const ScrollButtonContainer = styled(Box, {
11844
+ size: '28px',
11845
+ position: 'absolute',
11846
+ zIndex: '$sticky',
11847
+ borderRadius: '$md',
11848
+ top: '8px',
11849
+ variants: {
11850
+ position: {
11851
+ left: {
11852
+ left: '8px',
11853
+ boxShadow: '10px 0 8px 2px rgba(255,255,255,1), -6px 0 8px 2px rgba(255,255,255,1)'
11854
+ },
11855
+ right: {
11856
+ right: '8px',
11857
+ boxShadow: '6px 0 8px 2px rgba(255,255,255,1), -10px 0 8px 2px rgba(255,255,255,1)'
11858
+ }
11859
+ }
11860
+ }
11861
+ });
11810
11862
  const Tabs$1 = _ref => {
11811
11863
  let {
11812
11864
  children
@@ -11822,7 +11874,7 @@ const Tabs$1 = _ref => {
11822
11874
  __self: undefined,
11823
11875
  __source: {
11824
11876
  fileName: _jsxFileName$p,
11825
- lineNumber: 108,
11877
+ lineNumber: 162,
11826
11878
  columnNumber: 5
11827
11879
  }
11828
11880
  }), addPropsToChildren(children, {
@@ -11836,16 +11888,94 @@ const TabsList$1 = _ref2 => {
11836
11888
  } = _ref2,
11837
11889
  props = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
11838
11890
 
11839
- return /*#__PURE__*/React__default.createElement(StyledList, _extends({}, props, {
11891
+ const [listContainerScrollPosition, setlistContainerScrollPosition] = useState(0);
11892
+ const [scrollAreaWidth, setScrollAreaWidth] = useState(0);
11893
+ const listContainerRef = useRef();
11894
+ useLayoutEffect(() => {
11895
+ if (listContainerRef && listContainerRef.current) {
11896
+ setScrollAreaWidth(listContainerRef.current.scrollWidth - listContainerRef.current.clientWidth);
11897
+ }
11898
+ }, [listContainerRef, activeTabs]);
11899
+ return /*#__PURE__*/React__default.createElement(Box, {
11900
+ css: {
11901
+ position: 'relative'
11902
+ },
11840
11903
  __self: undefined,
11841
11904
  __source: {
11842
11905
  fileName: _jsxFileName$p,
11843
- lineNumber: 121,
11844
- columnNumber: 10
11906
+ lineNumber: 184,
11907
+ columnNumber: 5
11908
+ }
11909
+ }, /*#__PURE__*/React__default.createElement(StyledList, _extends({}, props, {
11910
+ ref: listContainerRef,
11911
+ onScroll: e => setlistContainerScrollPosition(e.target.scrollLeft),
11912
+ __self: undefined,
11913
+ __source: {
11914
+ fileName: _jsxFileName$p,
11915
+ lineNumber: 185,
11916
+ columnNumber: 7
11845
11917
  }
11846
11918
  }), addPropsToChildren(children, {
11847
11919
  activeTabs
11848
- }));
11920
+ })), listContainerScrollPosition > 10 && /*#__PURE__*/React__default.createElement(ScrollButtonContainer, {
11921
+ position: "left",
11922
+ __self: undefined,
11923
+ __source: {
11924
+ fileName: _jsxFileName$p,
11925
+ lineNumber: 189,
11926
+ columnNumber: 9
11927
+ }
11928
+ }, /*#__PURE__*/React__default.createElement(ScrollButton, {
11929
+ position: "left",
11930
+ type: "button",
11931
+ buttonType: "ghost",
11932
+ size: "xs",
11933
+ icon: true,
11934
+ onClick: () => listContainerRef.current.scrollLeft -= scrollAreaWidth / 2,
11935
+ __self: undefined,
11936
+ __source: {
11937
+ fileName: _jsxFileName$p,
11938
+ lineNumber: 190,
11939
+ columnNumber: 11
11940
+ }
11941
+ }, /*#__PURE__*/React__default.createElement(ChevronLgLeftOutline, {
11942
+ color: colors$4.iconGreen,
11943
+ __self: undefined,
11944
+ __source: {
11945
+ fileName: _jsxFileName$p,
11946
+ lineNumber: 198,
11947
+ columnNumber: 13
11948
+ }
11949
+ }))), listContainerScrollPosition < scrollAreaWidth - 10 && /*#__PURE__*/React__default.createElement(ScrollButtonContainer, {
11950
+ position: "right",
11951
+ __self: undefined,
11952
+ __source: {
11953
+ fileName: _jsxFileName$p,
11954
+ lineNumber: 203,
11955
+ columnNumber: 9
11956
+ }
11957
+ }, /*#__PURE__*/React__default.createElement(ScrollButton, {
11958
+ position: "right",
11959
+ type: "button",
11960
+ buttonType: "ghost",
11961
+ size: "xs",
11962
+ icon: true,
11963
+ onClick: () => listContainerRef.current.scrollLeft += scrollAreaWidth / 2,
11964
+ __self: undefined,
11965
+ __source: {
11966
+ fileName: _jsxFileName$p,
11967
+ lineNumber: 204,
11968
+ columnNumber: 11
11969
+ }
11970
+ }, /*#__PURE__*/React__default.createElement(ChevronLgRightOutline, {
11971
+ color: colors$4.iconGreen,
11972
+ __self: undefined,
11973
+ __source: {
11974
+ fileName: _jsxFileName$p,
11975
+ lineNumber: 212,
11976
+ columnNumber: 13
11977
+ }
11978
+ }))));
11849
11979
  };
11850
11980
  const TabsTrigger$1 = _ref3 => {
11851
11981
  let {
@@ -11863,7 +11993,7 @@ const TabsTrigger$1 = _ref3 => {
11863
11993
  __self: undefined,
11864
11994
  __source: {
11865
11995
  fileName: _jsxFileName$p,
11866
- lineNumber: 127,
11996
+ lineNumber: 223,
11867
11997
  columnNumber: 5
11868
11998
  }
11869
11999
  }), /*#__PURE__*/React__default.createElement(ConditionalWrapper, {
@@ -11876,14 +12006,14 @@ const TabsTrigger$1 = _ref3 => {
11876
12006
  __self: undefined,
11877
12007
  __source: {
11878
12008
  fileName: _jsxFileName$p,
11879
- lineNumber: 131,
12009
+ lineNumber: 227,
11880
12010
  columnNumber: 11
11881
12011
  }
11882
12012
  }, wrappedChildren),
11883
12013
  __self: undefined,
11884
12014
  __source: {
11885
12015
  fileName: _jsxFileName$p,
11886
- lineNumber: 128,
12016
+ lineNumber: 224,
11887
12017
  columnNumber: 7
11888
12018
  }
11889
12019
  }, /*#__PURE__*/React__default.createElement(Flex$1, {
@@ -11895,7 +12025,7 @@ const TabsTrigger$1 = _ref3 => {
11895
12025
  __self: undefined,
11896
12026
  __source: {
11897
12027
  fileName: _jsxFileName$p,
11898
- lineNumber: 136,
12028
+ lineNumber: 232,
11899
12029
  columnNumber: 9
11900
12030
  }
11901
12031
  }, icon && /*#__PURE__*/React__default.cloneElement(icon, {
@@ -11909,7 +12039,7 @@ const TabsContent$1 = _ref4 => {
11909
12039
  __self: undefined,
11910
12040
  __source: {
11911
12041
  fileName: _jsxFileName$p,
11912
- lineNumber: 154,
12042
+ lineNumber: 250,
11913
12043
  columnNumber: 58
11914
12044
  }
11915
12045
  }));
@@ -23668,12 +23798,12 @@ const Device = props => {
23668
23798
  };
23669
23799
 
23670
23800
  React.useEffect(() => {
23671
- if (props.withComponent) {
23801
+ if (props.withComponent || (props === null || props === void 0 ? void 0 : props.variant)) {
23672
23802
  setTimeout(() => {
23673
23803
  setRender(prev => prev + 1);
23674
23804
  }, 100);
23675
23805
  }
23676
- }, [props.withComponent]);
23806
+ }, [props.withComponent, props === null || props === void 0 ? void 0 : props.variant]);
23677
23807
 
23678
23808
  const renderVariant = variant => {
23679
23809
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
package/index.umd.js CHANGED
@@ -4000,7 +4000,10 @@
4000
4000
  }
4001
4001
  };
4002
4002
  var StyledIcon$2 = styled('div', {
4003
- verticalAlign: 'middle'
4003
+ verticalAlign: 'middle',
4004
+ '& svg': {
4005
+ verticalAlign: 'middle'
4006
+ }
4004
4007
  });
4005
4008
  var StyledIconLeft$4 = styled('div', {
4006
4009
  marginRight: '$spacing-03',
@@ -11915,7 +11918,15 @@
11915
11918
  flexShrink: 0,
11916
11919
  display: 'flex',
11917
11920
  borderBottom: '$medium',
11918
- boxShadow: '$medium'
11921
+ boxShadow: '$medium',
11922
+ overflowX: 'auto',
11923
+ overflowY: 'hidden',
11924
+ scrollBehavior: 'smooth',
11925
+ '-ms-overflow-style': 'none',
11926
+ scrollbarWidth: 'none',
11927
+ '&::-webkit-scrollbar': {
11928
+ display: 'none'
11929
+ }
11919
11930
  });
11920
11931
  const StyledTrigger$1 = styled(TabsPrimitive__namespace.Trigger, {
11921
11932
  all: 'unset',
@@ -11982,6 +11993,47 @@
11982
11993
  outline: 'none',
11983
11994
  boxShadow: '$medium'
11984
11995
  });
11996
+ const ScrollButton = styled(Button$3, {
11997
+ width: '28px',
11998
+ '&:hover': {
11999
+ boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.07), 0px 2px 4px rgba(0, 0, 0, 0.05), 0px 4px 10px rgba(0, 0, 0, 0.05)'
12000
+ },
12001
+ variants: {
12002
+ position: {
12003
+ left: {
12004
+ '& svg': {
12005
+ marginTop: '-1px',
12006
+ marginLeft: '-2px'
12007
+ }
12008
+ },
12009
+ right: {
12010
+ '& svg': {
12011
+ marginTop: 0,
12012
+ marginLeft: 0
12013
+ }
12014
+ }
12015
+ }
12016
+ }
12017
+ });
12018
+ const ScrollButtonContainer = styled(Box, {
12019
+ size: '28px',
12020
+ position: 'absolute',
12021
+ zIndex: '$sticky',
12022
+ borderRadius: '$md',
12023
+ top: '8px',
12024
+ variants: {
12025
+ position: {
12026
+ left: {
12027
+ left: '8px',
12028
+ boxShadow: '10px 0 8px 2px rgba(255,255,255,1), -6px 0 8px 2px rgba(255,255,255,1)'
12029
+ },
12030
+ right: {
12031
+ right: '8px',
12032
+ boxShadow: '6px 0 8px 2px rgba(255,255,255,1), -10px 0 8px 2px rgba(255,255,255,1)'
12033
+ }
12034
+ }
12035
+ }
12036
+ });
11985
12037
  const Tabs$1 = _ref => {
11986
12038
  let {
11987
12039
  children
@@ -11997,7 +12049,7 @@
11997
12049
  __self: undefined,
11998
12050
  __source: {
11999
12051
  fileName: _jsxFileName$p,
12000
- lineNumber: 108,
12052
+ lineNumber: 162,
12001
12053
  columnNumber: 5
12002
12054
  }
12003
12055
  }), addPropsToChildren(children, {
@@ -12011,16 +12063,94 @@
12011
12063
  } = _ref2,
12012
12064
  props = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
12013
12065
 
12014
- return /*#__PURE__*/React__default["default"].createElement(StyledList, _extends({}, props, {
12066
+ const [listContainerScrollPosition, setlistContainerScrollPosition] = React.useState(0);
12067
+ const [scrollAreaWidth, setScrollAreaWidth] = React.useState(0);
12068
+ const listContainerRef = React.useRef();
12069
+ React.useLayoutEffect(() => {
12070
+ if (listContainerRef && listContainerRef.current) {
12071
+ setScrollAreaWidth(listContainerRef.current.scrollWidth - listContainerRef.current.clientWidth);
12072
+ }
12073
+ }, [listContainerRef, activeTabs]);
12074
+ return /*#__PURE__*/React__default["default"].createElement(Box, {
12075
+ css: {
12076
+ position: 'relative'
12077
+ },
12015
12078
  __self: undefined,
12016
12079
  __source: {
12017
12080
  fileName: _jsxFileName$p,
12018
- lineNumber: 121,
12019
- columnNumber: 10
12081
+ lineNumber: 184,
12082
+ columnNumber: 5
12083
+ }
12084
+ }, /*#__PURE__*/React__default["default"].createElement(StyledList, _extends({}, props, {
12085
+ ref: listContainerRef,
12086
+ onScroll: e => setlistContainerScrollPosition(e.target.scrollLeft),
12087
+ __self: undefined,
12088
+ __source: {
12089
+ fileName: _jsxFileName$p,
12090
+ lineNumber: 185,
12091
+ columnNumber: 7
12020
12092
  }
12021
12093
  }), addPropsToChildren(children, {
12022
12094
  activeTabs
12023
- }));
12095
+ })), listContainerScrollPosition > 10 && /*#__PURE__*/React__default["default"].createElement(ScrollButtonContainer, {
12096
+ position: "left",
12097
+ __self: undefined,
12098
+ __source: {
12099
+ fileName: _jsxFileName$p,
12100
+ lineNumber: 189,
12101
+ columnNumber: 9
12102
+ }
12103
+ }, /*#__PURE__*/React__default["default"].createElement(ScrollButton, {
12104
+ position: "left",
12105
+ type: "button",
12106
+ buttonType: "ghost",
12107
+ size: "xs",
12108
+ icon: true,
12109
+ onClick: () => listContainerRef.current.scrollLeft -= scrollAreaWidth / 2,
12110
+ __self: undefined,
12111
+ __source: {
12112
+ fileName: _jsxFileName$p,
12113
+ lineNumber: 190,
12114
+ columnNumber: 11
12115
+ }
12116
+ }, /*#__PURE__*/React__default["default"].createElement(icons.ChevronLgLeftOutline, {
12117
+ color: colors$4.iconGreen,
12118
+ __self: undefined,
12119
+ __source: {
12120
+ fileName: _jsxFileName$p,
12121
+ lineNumber: 198,
12122
+ columnNumber: 13
12123
+ }
12124
+ }))), listContainerScrollPosition < scrollAreaWidth - 10 && /*#__PURE__*/React__default["default"].createElement(ScrollButtonContainer, {
12125
+ position: "right",
12126
+ __self: undefined,
12127
+ __source: {
12128
+ fileName: _jsxFileName$p,
12129
+ lineNumber: 203,
12130
+ columnNumber: 9
12131
+ }
12132
+ }, /*#__PURE__*/React__default["default"].createElement(ScrollButton, {
12133
+ position: "right",
12134
+ type: "button",
12135
+ buttonType: "ghost",
12136
+ size: "xs",
12137
+ icon: true,
12138
+ onClick: () => listContainerRef.current.scrollLeft += scrollAreaWidth / 2,
12139
+ __self: undefined,
12140
+ __source: {
12141
+ fileName: _jsxFileName$p,
12142
+ lineNumber: 204,
12143
+ columnNumber: 11
12144
+ }
12145
+ }, /*#__PURE__*/React__default["default"].createElement(icons.ChevronLgRightOutline, {
12146
+ color: colors$4.iconGreen,
12147
+ __self: undefined,
12148
+ __source: {
12149
+ fileName: _jsxFileName$p,
12150
+ lineNumber: 212,
12151
+ columnNumber: 13
12152
+ }
12153
+ }))));
12024
12154
  };
12025
12155
  const TabsTrigger$1 = _ref3 => {
12026
12156
  let {
@@ -12038,7 +12168,7 @@
12038
12168
  __self: undefined,
12039
12169
  __source: {
12040
12170
  fileName: _jsxFileName$p,
12041
- lineNumber: 127,
12171
+ lineNumber: 223,
12042
12172
  columnNumber: 5
12043
12173
  }
12044
12174
  }), /*#__PURE__*/React__default["default"].createElement(ConditionalWrapper, {
@@ -12051,14 +12181,14 @@
12051
12181
  __self: undefined,
12052
12182
  __source: {
12053
12183
  fileName: _jsxFileName$p,
12054
- lineNumber: 131,
12184
+ lineNumber: 227,
12055
12185
  columnNumber: 11
12056
12186
  }
12057
12187
  }, wrappedChildren),
12058
12188
  __self: undefined,
12059
12189
  __source: {
12060
12190
  fileName: _jsxFileName$p,
12061
- lineNumber: 128,
12191
+ lineNumber: 224,
12062
12192
  columnNumber: 7
12063
12193
  }
12064
12194
  }, /*#__PURE__*/React__default["default"].createElement(Flex$1, {
@@ -12070,7 +12200,7 @@
12070
12200
  __self: undefined,
12071
12201
  __source: {
12072
12202
  fileName: _jsxFileName$p,
12073
- lineNumber: 136,
12203
+ lineNumber: 232,
12074
12204
  columnNumber: 9
12075
12205
  }
12076
12206
  }, icon && /*#__PURE__*/React__default["default"].cloneElement(icon, {
@@ -12084,7 +12214,7 @@
12084
12214
  __self: undefined,
12085
12215
  __source: {
12086
12216
  fileName: _jsxFileName$p,
12087
- lineNumber: 154,
12217
+ lineNumber: 250,
12088
12218
  columnNumber: 58
12089
12219
  }
12090
12220
  }));
@@ -24067,14 +24197,14 @@
24067
24197
  };
24068
24198
 
24069
24199
  React__namespace.useEffect(function () {
24070
- if (props.withComponent) {
24200
+ if (props.withComponent || (props === null || props === void 0 ? void 0 : props.variant)) {
24071
24201
  setTimeout(function () {
24072
24202
  setRender(function (prev) {
24073
24203
  return prev + 1;
24074
24204
  });
24075
24205
  }, 100);
24076
24206
  }
24077
- }, [props.withComponent]);
24207
+ }, [props.withComponent, props === null || props === void 0 ? void 0 : props.variant]);
24078
24208
 
24079
24209
  var renderVariant = function renderVariant(variant) {
24080
24210
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@majoo-ui/react",
3
- "version": "1.53.1",
3
+ "version": "1.53.2",
4
4
  "dependencies": {
5
5
  "@majoo-ui/core": "^1.31.1",
6
6
  "@majoo-ui/helpers": "^1.30.5",
7
- "@majoo-ui/icons": "^1.38.0",
7
+ "@majoo-ui/icons": "^1.38.1",
8
8
  "@stitches/react": "^1.2.8",
9
9
  "@radix-ui/react-alert-dialog": "^1.0.0",
10
10
  "@radix-ui/react-avatar": "^1.0.0",