@zohodesk/components 1.2.39 → 1.2.41
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/.cli/propValidation_report.html +1 -1
- package/README.md +9 -0
- package/es/Radio/Radio.js +3 -2
- package/es/Radio/props/propTypes.js +2 -1
- package/es/Tab/Tabs.js +119 -21
- package/es/Tab/Tabs.module.css +32 -2
- package/es/Tab/props/defaultProps.js +4 -1
- package/es/Tab/props/propTypes.js +6 -1
- package/es/v1/Card/props/propTypes.js +1 -1
- package/es/v1/DateTime/props/propTypes.js +1 -1
- package/es/v1/ResponsiveDropBox/props/propTypes.js +1 -1
- package/es/v1/Ribbon/props/propTypes.js +1 -1
- package/es/v1/Tab/Tabs.js +99 -16
- package/es/v1/Tab/props/defaultProps.js +4 -1
- package/es/v1/Tab/props/propTypes.js +6 -1
- package/es/v1/Tab/v1Tabs.module.css +32 -2
- package/lib/Radio/Radio.js +3 -2
- package/lib/Radio/props/propTypes.js +2 -1
- package/lib/Tab/Tabs.js +167 -74
- package/lib/Tab/Tabs.module.css +32 -2
- package/lib/Tab/props/defaultProps.js +4 -1
- package/lib/Tab/props/propTypes.js +6 -1
- package/lib/v1/Card/props/propTypes.js +1 -1
- package/lib/v1/DateTime/props/propTypes.js +1 -1
- package/lib/v1/ResponsiveDropBox/props/propTypes.js +1 -1
- package/lib/v1/Ribbon/props/propTypes.js +1 -1
- package/lib/v1/Tab/Tabs.js +107 -23
- package/lib/v1/Tab/props/defaultProps.js +4 -1
- package/lib/v1/Tab/props/propTypes.js +6 -1
- package/lib/v1/Tab/v1Tabs.module.css +32 -2
- package/package.json +12 -11
- package/result.json +1 -1
package/lib/v1/Tab/Tabs.js
CHANGED
|
@@ -11,6 +11,10 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
var _useEffectCallOnlyAfterState = _interopRequireDefault(require("@zohodesk/hooks/es/utils/useEffectCallOnlyAfterState"));
|
|
13
13
|
|
|
14
|
+
var _TextBoxIcon = _interopRequireDefault(require("../TextBoxIcon/TextBoxIcon"));
|
|
15
|
+
|
|
16
|
+
var _EmptySearch = _interopRequireDefault(require("@zohodesk/svg/lib/emptystate/version3/EmptySearch"));
|
|
17
|
+
|
|
14
18
|
var _Tab = _interopRequireDefault(require("./Tab"));
|
|
15
19
|
|
|
16
20
|
var _defaultProps = require("./props/defaultProps");
|
|
@@ -86,6 +90,11 @@ var Tabs = function Tabs(props) {
|
|
|
86
90
|
tabKeys = _useState8[0],
|
|
87
91
|
setTabKeys = _useState8[1];
|
|
88
92
|
|
|
93
|
+
var _useState9 = (0, _react.useState)(''),
|
|
94
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
95
|
+
searchValue = _useState10[0],
|
|
96
|
+
setSearchValue = _useState10[1];
|
|
97
|
+
|
|
89
98
|
var tabsObserver = (0, _react.useRef)(new _ResizeObserver["default"](onResize));
|
|
90
99
|
var tabObserver = (0, _react.useRef)({});
|
|
91
100
|
var highlight = (0, _react.useRef)(null);
|
|
@@ -114,7 +123,60 @@ var Tabs = function Tabs(props) {
|
|
|
114
123
|
childType = props.childType,
|
|
115
124
|
containerClass = props.containerClass,
|
|
116
125
|
dataSelectorId = props.dataSelectorId,
|
|
117
|
-
selectedTab = props.selectedTab
|
|
126
|
+
selectedTab = props.selectedTab,
|
|
127
|
+
showTitleInMoreOptions = props.showTitleInMoreOptions,
|
|
128
|
+
searchErrorText = props.searchErrorText,
|
|
129
|
+
placeHolderText = props.placeHolderText,
|
|
130
|
+
searchBoxSize = props.searchBoxSize,
|
|
131
|
+
isPopupOpen = props.isPopupOpen,
|
|
132
|
+
closePopupOnly = props.closePopupOnly;
|
|
133
|
+
|
|
134
|
+
function handleChange(value, e) {
|
|
135
|
+
setSearchValue(value);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function handleSearchValueClear(e) {
|
|
139
|
+
setSearchValue('');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function getMoreList(_ref) {
|
|
143
|
+
var moreTabs = _ref.moreTabs;
|
|
144
|
+
var validElements = [];
|
|
145
|
+
|
|
146
|
+
_react["default"].Children.map(moreTabs, function (child) {
|
|
147
|
+
var isValidElement = /*#__PURE__*/_react["default"].isValidElement(child);
|
|
148
|
+
|
|
149
|
+
if (isValidElement) {
|
|
150
|
+
validElements.push(child.props);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
return validElements;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function handleFilterSuggestions(_ref2) {
|
|
158
|
+
var moreTabs = _ref2.moreTabs;
|
|
159
|
+
var options = getMoreList({
|
|
160
|
+
moreTabs: moreTabs
|
|
161
|
+
});
|
|
162
|
+
var filteredOptions = options.filter(function (list) {
|
|
163
|
+
var text = list.text,
|
|
164
|
+
title = list.title;
|
|
165
|
+
var value = text ? text : showTitleInMoreOptions ? title : '';
|
|
166
|
+
return value.toLowerCase().includes(searchValue.toLowerCase());
|
|
167
|
+
});
|
|
168
|
+
return filteredOptions;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function renderEmptyState() {
|
|
172
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
173
|
+
className: _v1TabsModule["default"].emptyStateContainer
|
|
174
|
+
}, /*#__PURE__*/_react["default"].createElement(_EmptySearch["default"], {
|
|
175
|
+
size: "small"
|
|
176
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
177
|
+
className: _v1TabsModule["default"].emptyStateTitle
|
|
178
|
+
}, searchErrorText));
|
|
179
|
+
}
|
|
118
180
|
|
|
119
181
|
function onTabResize(size, target) {
|
|
120
182
|
var newDim = Object.assign({}, tabDimensions);
|
|
@@ -167,6 +229,11 @@ var Tabs = function Tabs(props) {
|
|
|
167
229
|
}
|
|
168
230
|
};
|
|
169
231
|
}, []);
|
|
232
|
+
(0, _react.useEffect)(function () {
|
|
233
|
+
if (searchValue.length) {
|
|
234
|
+
handleSearchValueClear();
|
|
235
|
+
}
|
|
236
|
+
}, [isPopupOpen]);
|
|
170
237
|
|
|
171
238
|
function setMaxDim() {
|
|
172
239
|
var totalDimension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
@@ -393,6 +460,7 @@ var Tabs = function Tabs(props) {
|
|
|
393
460
|
|
|
394
461
|
e.preventDefault();
|
|
395
462
|
onSelect(tab);
|
|
463
|
+
closePopupOnly();
|
|
396
464
|
}
|
|
397
465
|
|
|
398
466
|
function onScrollLocal(e) {
|
|
@@ -407,8 +475,8 @@ var Tabs = function Tabs(props) {
|
|
|
407
475
|
togglePopup(e, boxPosition);
|
|
408
476
|
}
|
|
409
477
|
|
|
410
|
-
function responsiveFunc(
|
|
411
|
-
var mediaQueryOR =
|
|
478
|
+
function responsiveFunc(_ref3) {
|
|
479
|
+
var mediaQueryOR = _ref3.mediaQueryOR;
|
|
412
480
|
return {
|
|
413
481
|
tabletMode: mediaQueryOR([{
|
|
414
482
|
maxWidth: 700
|
|
@@ -445,8 +513,14 @@ var Tabs = function Tabs(props) {
|
|
|
445
513
|
_customProps$ListItem = customProps.ListItemProps,
|
|
446
514
|
ListItemProps = _customProps$ListItem === void 0 ? {} : _customProps$ListItem,
|
|
447
515
|
_customProps$MoreButt = customProps.MoreButtonProps,
|
|
448
|
-
MoreButtonProps = _customProps$MoreButt === void 0 ? {} : _customProps$MoreButt
|
|
516
|
+
MoreButtonProps = _customProps$MoreButt === void 0 ? {} : _customProps$MoreButt,
|
|
517
|
+
_customProps$TextBoxI = customProps.TextBoxIconProps,
|
|
518
|
+
TextBoxIconProps = _customProps$TextBoxI === void 0 ? {} : _customProps$TextBoxI;
|
|
449
519
|
var popupClass = align === 'vertical' ? _v1TabsModule["default"][position] ? _v1TabsModule["default"][position] : '' : '';
|
|
520
|
+
var moreTabsListItems = handleFilterSuggestions({
|
|
521
|
+
moreTabs: moreTabs
|
|
522
|
+
});
|
|
523
|
+
var hasSearch = moreTabs.length > 4;
|
|
450
524
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, _react["default"].Children.map(mainTabs, function (child) {
|
|
451
525
|
if (!child) {
|
|
452
526
|
return null;
|
|
@@ -495,8 +569,8 @@ var Tabs = function Tabs(props) {
|
|
|
495
569
|
})), isPopupOpen && /*#__PURE__*/_react["default"].createElement(_CustomResponsive.ResponsiveReceiver, {
|
|
496
570
|
query: responsiveFunc,
|
|
497
571
|
responsiveId: "Helmet"
|
|
498
|
-
}, function (
|
|
499
|
-
var tabletMode =
|
|
572
|
+
}, function (_ref4) {
|
|
573
|
+
var tabletMode = _ref4.tabletMode;
|
|
500
574
|
return /*#__PURE__*/_react["default"].createElement(_ResponsiveDropBox["default"], _extends({
|
|
501
575
|
isActive: isPopupReady,
|
|
502
576
|
isAnimate: true,
|
|
@@ -512,29 +586,39 @@ var Tabs = function Tabs(props) {
|
|
|
512
586
|
isResponsivePadding: true,
|
|
513
587
|
needFocusScope: true,
|
|
514
588
|
onClose: togglePopupLocal,
|
|
589
|
+
onClick: removeClose,
|
|
515
590
|
dataId: "".concat(dataId, "_dropbox")
|
|
516
|
-
}), getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(props), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
|
|
591
|
+
}), getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(props), hasSearch ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
|
|
592
|
+
className: _v1TabsModule["default"].search
|
|
593
|
+
}, /*#__PURE__*/_react["default"].createElement(_TextBoxIcon["default"], _extends({
|
|
594
|
+
placeHolder: placeHolderText,
|
|
595
|
+
onChange: handleChange,
|
|
596
|
+
value: searchValue,
|
|
597
|
+
onClear: handleSearchValueClear,
|
|
598
|
+
size: searchBoxSize,
|
|
599
|
+
customProps: {
|
|
600
|
+
TextBoxProps: {
|
|
601
|
+
'data-a11y-autofocus': true
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
dataId: "".concat(dataId, "_search")
|
|
605
|
+
}, TextBoxIconProps))) : null, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
|
|
517
606
|
flexible: true,
|
|
518
607
|
shrink: true,
|
|
519
608
|
scroll: "vertical",
|
|
520
|
-
className: "".concat(tabletMode ? '' : _v1TabsModule["default"].menuBox, " ").concat(moreBoxClass),
|
|
609
|
+
className: "".concat(_v1TabsModule["default"].listWrapper, " ").concat(tabletMode ? '' : _v1TabsModule["default"].menuBox, " ").concat(moreBoxClass),
|
|
521
610
|
onScroll: onScrollLocal,
|
|
522
611
|
dataId: "".concat(dataId, "_Tabs")
|
|
523
|
-
},
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
title = _child$props.title,
|
|
532
|
-
isLink = _child$props.isLink,
|
|
533
|
-
href = _child$props.href,
|
|
534
|
-
children = _child$props.children,
|
|
535
|
-
dataId = _child$props.dataId;
|
|
612
|
+
}, moreTabsListItems.length ? moreTabsListItems.map(function (data) {
|
|
613
|
+
var text = data.text,
|
|
614
|
+
id = data.id,
|
|
615
|
+
title = data.title,
|
|
616
|
+
isLink = data.isLink,
|
|
617
|
+
href = data.href,
|
|
618
|
+
children = data.children,
|
|
619
|
+
dataId = data.dataId;
|
|
536
620
|
var value = text ? text : showTitleInMoreOptions ? title : null;
|
|
537
|
-
return /*#__PURE__*/_react["default"].
|
|
621
|
+
return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], _extends({
|
|
538
622
|
key: id,
|
|
539
623
|
value: value,
|
|
540
624
|
onClick: moreTabSelect,
|
|
@@ -549,7 +633,7 @@ var Tabs = function Tabs(props) {
|
|
|
549
633
|
target: "self",
|
|
550
634
|
dataId: "".concat(dataId, "_Tab")
|
|
551
635
|
}, ListItemProps), !showTitleInMoreOptions ? children : null);
|
|
552
|
-
})));
|
|
636
|
+
}) : renderEmptyState()));
|
|
553
637
|
})) : null);
|
|
554
638
|
}
|
|
555
639
|
|
|
@@ -39,7 +39,10 @@ var Tabs_defaultProps = {
|
|
|
39
39
|
iconSize: '7',
|
|
40
40
|
containerClass: '',
|
|
41
41
|
customProps: {},
|
|
42
|
-
dataSelectorId: 'tabs'
|
|
42
|
+
dataSelectorId: 'tabs',
|
|
43
|
+
searchBoxSize: 'small',
|
|
44
|
+
searchErrorText: 'No results',
|
|
45
|
+
placeHolderText: 'Search'
|
|
43
46
|
};
|
|
44
47
|
exports.Tabs_defaultProps = Tabs_defaultProps;
|
|
45
48
|
var TabWrapper_defaultProps = {
|
|
@@ -97,12 +97,17 @@ var Tabs_propTypes = {
|
|
|
97
97
|
getTargetRef: _propTypes["default"].func,
|
|
98
98
|
containerClass: _propTypes["default"].string,
|
|
99
99
|
customProps: _propTypes["default"].shape({
|
|
100
|
+
TextBoxIconProps: _propTypes["default"].object,
|
|
100
101
|
DropBoxProps: _propTypes["default"].object,
|
|
101
102
|
ListItemProps: _propTypes["default"].object,
|
|
102
103
|
MoreButtonProps: _propTypes["default"].object
|
|
103
104
|
}),
|
|
104
105
|
getCustomDropBoxHeaderPlaceHolder: _propTypes["default"].func,
|
|
105
|
-
dataSelectorId: _propTypes["default"].string
|
|
106
|
+
dataSelectorId: _propTypes["default"].string,
|
|
107
|
+
placeHolderText: _propTypes["default"].string,
|
|
108
|
+
searchBoxSize: _propTypes["default"].string,
|
|
109
|
+
searchErrorText: _propTypes["default"].string,
|
|
110
|
+
closePopupOnly: _propTypes["default"].func
|
|
106
111
|
};
|
|
107
112
|
exports.Tabs_propTypes = Tabs_propTypes;
|
|
108
113
|
var TabWrapper_propTypes = {
|
|
@@ -123,15 +123,45 @@
|
|
|
123
123
|
.bottomRightToLeft,
|
|
124
124
|
.topRightToLeft,
|
|
125
125
|
.bottomCenterToLeft {
|
|
126
|
-
right: calc(var(--tab_position_gap) * -1);
|
|
126
|
+
right: calc(var(--tab_position_gap) * -1);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
.bottomLeftToRight,
|
|
130
130
|
.topLeftToRight,
|
|
131
131
|
.bottomCenterToRight {
|
|
132
|
-
left: calc(var(--tab_position_gap) * -1);
|
|
132
|
+
left: calc(var(--tab_position_gap) * -1);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
.hidden {
|
|
136
136
|
visibility: hidden;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.search {
|
|
140
|
+
padding: 0 var(--zd_size20) 0 ;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.emptyStateContainer {
|
|
144
|
+
padding-bottom: var(--zd_size15) ;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.emptyStateTitle {
|
|
148
|
+
font-family: var(--zd_semibold);
|
|
149
|
+
word-wrap: break-word;
|
|
150
|
+
font-size: var(--zd_font_size16) ;
|
|
151
|
+
max-width: var(--zd_size430) ;
|
|
152
|
+
text-align: center;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[dir=ltr] .emptyStateTitle {
|
|
156
|
+
margin-left: auto ;
|
|
157
|
+
margin-right: auto ;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
[dir=rtl] .emptyStateTitle {
|
|
161
|
+
margin-right: auto ;
|
|
162
|
+
margin-left: auto ;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.listWrapper {
|
|
166
|
+
padding-top: var(--zd_size10) ;
|
|
137
167
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zohodesk/components",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.41",
|
|
4
4
|
"main": "es/index.js",
|
|
5
5
|
"module": "es/index.js",
|
|
6
6
|
"private": false,
|
|
@@ -42,7 +42,8 @@
|
|
|
42
42
|
"postpublish": "node postPublish.js",
|
|
43
43
|
"report": "react-cli publish:report",
|
|
44
44
|
"test": "react-cli test",
|
|
45
|
-
"
|
|
45
|
+
"test-clean": "react-cli clean coverage",
|
|
46
|
+
"snap-update": "npm run test-clean && npm run test -- -u",
|
|
46
47
|
"sstest": "npm run init && react-cli sstest",
|
|
47
48
|
"build:external": "npm run clean && npm run init && npm run docsjs:build && npm run build:externalDocCopy && react-cli build:component:umd && npm run externalDocHTMLChange",
|
|
48
49
|
"download": "react-cli clean ./node_modules ./package-lock.json && npm install",
|
|
@@ -69,10 +70,10 @@
|
|
|
69
70
|
"@zohodesk-private/react-prop-validator": "1.2.3",
|
|
70
71
|
"@zohodesk/a11y": "2.2.3",
|
|
71
72
|
"@zohodesk/docstool": "1.0.0-alpha-2",
|
|
72
|
-
"@zohodesk/hooks": "2.0.
|
|
73
|
-
"@zohodesk/icons": "1.0.
|
|
74
|
-
"@zohodesk/svg": "1.1.
|
|
75
|
-
"@zohodesk/utils": "1.3.
|
|
73
|
+
"@zohodesk/hooks": "2.0.5",
|
|
74
|
+
"@zohodesk/icons": "1.0.56",
|
|
75
|
+
"@zohodesk/svg": "1.1.19",
|
|
76
|
+
"@zohodesk/utils": "1.3.14",
|
|
76
77
|
"@zohodesk/variables": "1.0.0",
|
|
77
78
|
"@zohodesk/virtualizer": "1.0.3",
|
|
78
79
|
"react-sortable-hoc": "^0.8.3",
|
|
@@ -85,14 +86,14 @@
|
|
|
85
86
|
"selectn": "1.1.2"
|
|
86
87
|
},
|
|
87
88
|
"peerDependencies": {
|
|
88
|
-
"@zohodesk/icons": "1.0.
|
|
89
|
+
"@zohodesk/icons": "1.0.56",
|
|
89
90
|
"@zohodesk/variables": "1.0.0",
|
|
90
|
-
"@zohodesk/svg": "1.1.
|
|
91
|
+
"@zohodesk/svg": "1.1.19",
|
|
91
92
|
"@zohodesk/virtualizer": "1.0.3",
|
|
92
93
|
"velocity-react": "1.4.3",
|
|
93
94
|
"react-sortable-hoc": "^0.8.3",
|
|
94
|
-
"@zohodesk/hooks": "2.0.
|
|
95
|
-
"@zohodesk/utils": "1.3.
|
|
95
|
+
"@zohodesk/hooks": "2.0.5",
|
|
96
|
+
"@zohodesk/utils": "1.3.14",
|
|
96
97
|
"@zohodesk/a11y": "2.2.3"
|
|
97
98
|
}
|
|
98
|
-
}
|
|
99
|
+
}
|