@zohodesk/components 1.0.0-temp-203.2 → 1.0.0-temp-204
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 +25 -0
- package/es/CheckBox/CheckBox.js +3 -2
- package/es/CheckBox/props/propTypes.js +2 -1
- package/es/DateTime/DateWidget.js +8 -3
- package/es/DateTime/DateWidget.module.css +1 -0
- package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +3 -3
- package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +1 -1
- package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +3 -3
- package/es/DropBox/DropBoxElement/DropBoxElement.js +1 -1
- package/es/DropBox/DropBoxPositionMapping.js +142 -0
- package/es/ListItem/ListItemWithAvatar.js +9 -5
- package/es/ListItem/props/defaultProps.js +1 -0
- package/es/ListItem/props/propTypes.js +4 -1
- package/es/MultiSelect/MultiSelect.js +11 -3
- package/es/MultiSelect/MultiSelect.module.css +4 -0
- package/es/MultiSelect/Suggestions.js +2 -0
- package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +1 -1
- package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +1 -1
- package/es/MultiSelect/props/defaultProps.js +2 -1
- package/es/MultiSelect/props/propTypes.js +5 -1
- package/es/Popup/Popup.js +1 -1
- package/es/Popup/PositionMapping.js +72 -0
- package/es/Provider/LibraryContext.js +15 -3
- package/es/Provider/LibraryContextInit.js +1 -1
- package/es/Tab/Tabs.js +124 -20
- package/es/Tab/Tabs.module.css +33 -2
- package/es/Tab/props/defaultProps.js +3 -1
- package/es/Tab/props/propTypes.js +6 -1
- package/es/Tag/Tag.js +3 -1
- package/es/Tag/__tests__/Tag.spec.js +10 -0
- package/es/Tag/__tests__/__snapshots__/Tag.spec.js.snap +20 -0
- package/es/Tag/props/defaultProps.js +1 -0
- package/es/Tag/props/propTypes.js +1 -0
- package/es/TextBoxIcon/TextBoxIcon.js +13 -3
- package/es/TextBoxIcon/props/defaultProps.js +1 -0
- package/es/TextBoxIcon/props/propTypes.js +3 -1
- package/es/{Select → select}/Select.js +13 -8
- package/es/{Select → select}/Select.module.css +3 -0
- package/es/{Select → select}/SelectWithIcon.js +24 -4
- package/es/{Select → select}/__tests__/__snapshots__/Select.spec.js.snap +1 -1
- package/{lib/Select → es/select}/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +1 -1
- package/es/{Select → select}/props/defaultProps.js +2 -1
- package/es/{Select → select}/props/propTypes.js +7 -1
- package/es/v1/DropBox/DropBoxElement/DropBoxElement.js +1 -1
- package/es/v1/ListItem/ListItemWithAvatar.js +9 -5
- package/es/v1/ListItem/props/defaultProps.js +1 -0
- package/es/v1/ListItem/props/propTypes.js +4 -1
- package/es/v1/MultiSelect/Suggestions.js +2 -0
- package/es/v1/MultiSelect/props/propTypes.js +1 -0
- package/es/v1/Popup/Popup.js +1 -1
- package/es/v1/Select/Select.js +3 -1
- package/es/v1/Select/props/propTypes.js +1 -0
- package/es/v1/Tag/Tag.js +3 -1
- package/es/v1/Tag/props/defaultProps.js +1 -0
- package/es/v1/Tag/props/propTypes.js +1 -0
- package/es/v1/TextBoxIcon/TextBoxIcon.js +9 -1
- package/es/v1/TextBoxIcon/props/defaultProps.js +1 -0
- package/es/v1/TextBoxIcon/props/propTypes.js +1 -0
- package/lib/CheckBox/CheckBox.js +3 -2
- package/lib/CheckBox/props/propTypes.js +2 -1
- package/lib/DateTime/DateWidget.js +11 -4
- package/lib/DateTime/DateWidget.module.css +1 -0
- package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +3 -3
- package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +1 -1
- package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +3 -3
- package/lib/DropBox/DropBoxElement/DropBoxElement.js +1 -1
- package/lib/DropBox/DropBoxPositionMapping.js +149 -0
- package/lib/ListItem/ListItemWithAvatar.js +9 -5
- package/lib/ListItem/props/defaultProps.js +1 -0
- package/lib/ListItem/props/propTypes.js +4 -2
- package/lib/MultiSelect/MultiSelect.js +12 -4
- package/lib/MultiSelect/MultiSelect.module.css +4 -0
- package/lib/MultiSelect/Suggestions.js +2 -0
- package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +1 -1
- package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +1 -1
- package/lib/MultiSelect/props/defaultProps.js +2 -1
- package/lib/MultiSelect/props/propTypes.js +5 -1
- package/lib/Popup/Popup.js +1 -1
- package/lib/Popup/PositionMapping.js +81 -0
- package/lib/Provider/LibraryContext.js +15 -5
- package/lib/Provider/LibraryContextInit.js +1 -1
- package/lib/Tab/Tabs.js +125 -27
- package/lib/Tab/Tabs.module.css +33 -2
- package/lib/Tab/props/defaultProps.js +3 -1
- package/lib/Tab/props/propTypes.js +6 -1
- package/lib/Tag/Tag.js +5 -2
- package/lib/Tag/__tests__/Tag.spec.js +10 -0
- package/lib/Tag/__tests__/__snapshots__/Tag.spec.js.snap +20 -0
- package/lib/Tag/props/defaultProps.js +1 -0
- package/lib/Tag/props/propTypes.js +1 -0
- package/lib/TextBoxIcon/TextBoxIcon.js +14 -3
- package/lib/TextBoxIcon/props/defaultProps.js +1 -0
- package/lib/TextBoxIcon/props/propTypes.js +3 -1
- package/lib/{Select → select}/Select.js +14 -9
- package/lib/{Select → select}/Select.module.css +3 -0
- package/lib/{Select → select}/SelectWithIcon.js +33 -6
- package/lib/{Select → select}/__tests__/__snapshots__/Select.spec.js.snap +1 -1
- package/{es/Select → lib/select}/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +1 -1
- package/lib/{Select → select}/props/defaultProps.js +1 -1
- package/lib/{Select → select}/props/propTypes.js +7 -1
- package/lib/v1/DropBox/DropBoxElement/DropBoxElement.js +1 -1
- package/lib/v1/ListItem/ListItemWithAvatar.js +9 -5
- package/lib/v1/ListItem/props/defaultProps.js +1 -0
- package/lib/v1/ListItem/props/propTypes.js +4 -2
- package/lib/v1/MultiSelect/Suggestions.js +2 -0
- package/lib/v1/MultiSelect/props/propTypes.js +1 -0
- package/lib/v1/Popup/Popup.js +1 -1
- package/lib/v1/Select/Select.js +4 -2
- package/lib/v1/Select/props/propTypes.js +1 -0
- package/lib/v1/Tag/Tag.js +5 -2
- package/lib/v1/Tag/props/defaultProps.js +1 -0
- package/lib/v1/Tag/props/propTypes.js +1 -0
- package/lib/v1/TextBoxIcon/TextBoxIcon.js +9 -1
- package/lib/v1/TextBoxIcon/props/defaultProps.js +1 -0
- package/lib/v1/TextBoxIcon/props/propTypes.js +1 -0
- package/package.json +1 -1
- package/propValidationArg.json +1 -1
- package/result.json +1 -1
- package/es/DropBox/DropBoxPositionMapping.json +0 -145
- package/es/Popup/PositionMapping.json +0 -74
- package/lib/DropBox/DropBoxPositionMapping.json +0 -145
- package/lib/Popup/PositionMapping.json +0 -74
- /package/es/{Select → select}/GroupSelect.js +0 -0
- /package/es/{Select → select}/SelectWithAvatar.js +0 -0
- /package/es/{Select → select}/__tests__/GroupSelect.spec.js +0 -0
- /package/es/{Select → select}/__tests__/Select.spec.js +0 -0
- /package/es/{Select → select}/__tests__/SelectWithAvatar.spec.js +0 -0
- /package/es/{Select → select}/__tests__/SelectWithIcon.spec.js +0 -0
- /package/es/{Select → select}/__tests__/__snapshots__/GroupSelect.spec.js.snap +0 -0
- /package/es/{Select → select}/__tests__/__snapshots__/SelectWithAvatar.spec.js.snap +0 -0
- /package/es/{Select → select}/index.js +0 -0
- /package/lib/{Select → select}/GroupSelect.js +0 -0
- /package/lib/{Select → select}/SelectWithAvatar.js +0 -0
- /package/lib/{Select → select}/__tests__/GroupSelect.spec.js +0 -0
- /package/lib/{Select → select}/__tests__/Select.spec.js +0 -0
- /package/lib/{Select → select}/__tests__/SelectWithAvatar.spec.js +0 -0
- /package/lib/{Select → select}/__tests__/SelectWithIcon.spec.js +0 -0
- /package/lib/{Select → select}/__tests__/__snapshots__/GroupSelect.spec.js.snap +0 -0
- /package/lib/{Select → select}/__tests__/__snapshots__/SelectWithAvatar.spec.js.snap +0 -0
- /package/lib/{Select → select}/index.js +0 -0
package/es/Tab/Tabs.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
}]
|
|
9
9
|
*/
|
|
10
10
|
import React from 'react';
|
|
11
|
+
import EmptySearch from '@zohodesk/svg/lib/emptystate/version3/EmptySearch';
|
|
11
12
|
import Tab from './Tab';
|
|
12
13
|
import { Tabs_defaultProps } from './props/defaultProps';
|
|
13
14
|
import { Tabs_propTypes } from './props/propTypes';
|
|
@@ -18,6 +19,7 @@ import ListItem from '../ListItem/ListItem';
|
|
|
18
19
|
import { Icon } from '@zohodesk/icons';
|
|
19
20
|
import tabsStyle from './Tabs.module.css';
|
|
20
21
|
import Popup from '../Popup/Popup';
|
|
22
|
+
import TextBoxIcon from '../TextBoxIcon/TextBoxIcon';
|
|
21
23
|
import ResponsiveDropBox from '../ResponsiveDropBox/ResponsiveDropBox';
|
|
22
24
|
import { ResponsiveReceiver } from '../Responsive/CustomResponsive';
|
|
23
25
|
import btnstyle from '../semantic/Button/semanticButton.module.css';
|
|
@@ -30,9 +32,10 @@ class Tabs extends React.Component {
|
|
|
30
32
|
tabDimensions: {},
|
|
31
33
|
highlightInitialDimension: null,
|
|
32
34
|
renderVirtualTabs: true,
|
|
33
|
-
tabKeys: []
|
|
35
|
+
tabKeys: [],
|
|
36
|
+
searchValue: ''
|
|
34
37
|
};
|
|
35
|
-
bind.apply(this, ['moreTabSelect', 'onResize', 'onTabResize', 'getHighlightRef', 'getTabsRef', 'getTabRef', 'getHighlightDim', 'onSizeChange', 'onScroll', 'togglePopup', 'setMaxDim']);
|
|
38
|
+
bind.apply(this, ['moreTabSelect', 'onResize', 'onTabResize', 'getHighlightRef', 'getTabsRef', 'getTabRef', 'getHighlightDim', 'onSizeChange', 'onScroll', 'togglePopup', 'setMaxDim', 'handleChange', 'handleSearchValueClear', 'getMoreList', 'renderEmptyState']);
|
|
36
39
|
this.tabsObserver = new ResizeObserver(this.onResize);
|
|
37
40
|
this.tabObserver = {};
|
|
38
41
|
}
|
|
@@ -130,12 +133,14 @@ class Tabs extends React.Component {
|
|
|
130
133
|
let {
|
|
131
134
|
children,
|
|
132
135
|
selectedTab,
|
|
133
|
-
childType
|
|
136
|
+
childType,
|
|
137
|
+
isPopupOpen
|
|
134
138
|
} = this.props;
|
|
135
139
|
let {
|
|
136
140
|
tabDimensions,
|
|
137
141
|
totalDimension,
|
|
138
|
-
tabKeys
|
|
142
|
+
tabKeys,
|
|
143
|
+
searchValue
|
|
139
144
|
} = this.state;
|
|
140
145
|
|
|
141
146
|
if (prevProps.children && children) {
|
|
@@ -169,6 +174,10 @@ class Tabs extends React.Component {
|
|
|
169
174
|
if (prevProps.selectedTab !== selectedTab || newTabKeys.length === 1) {
|
|
170
175
|
this.moveHighlight();
|
|
171
176
|
}
|
|
177
|
+
|
|
178
|
+
if (prevProps.isPopupOpen != isPopupOpen && searchValue.length) {
|
|
179
|
+
this.handleSearchValueClear();
|
|
180
|
+
}
|
|
172
181
|
}
|
|
173
182
|
}
|
|
174
183
|
|
|
@@ -373,6 +382,7 @@ class Tabs extends React.Component {
|
|
|
373
382
|
|
|
374
383
|
e.preventDefault();
|
|
375
384
|
onSelect(tab);
|
|
385
|
+
this.togglePopup();
|
|
376
386
|
}
|
|
377
387
|
|
|
378
388
|
onScroll(e) {
|
|
@@ -407,6 +417,69 @@ class Tabs extends React.Component {
|
|
|
407
417
|
};
|
|
408
418
|
}
|
|
409
419
|
|
|
420
|
+
handleChange(value, e) {
|
|
421
|
+
this.setState({
|
|
422
|
+
searchValue: value
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
handleSearchValueClear(e) {
|
|
427
|
+
this.setState({
|
|
428
|
+
searchValue: ''
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
getMoreList(_ref2) {
|
|
433
|
+
let {
|
|
434
|
+
moreTabs
|
|
435
|
+
} = _ref2;
|
|
436
|
+
const valideElements = [];
|
|
437
|
+
{
|
|
438
|
+
React.Children.map(moreTabs, child => {
|
|
439
|
+
const isValidElement = /*#__PURE__*/React.isValidElement(child);
|
|
440
|
+
|
|
441
|
+
if (isValidElement) {
|
|
442
|
+
valideElements.push(child.props);
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
return valideElements;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
handleFilterSuggestions(_ref3) {
|
|
450
|
+
let {
|
|
451
|
+
moreTabs
|
|
452
|
+
} = _ref3;
|
|
453
|
+
const {
|
|
454
|
+
searchValue
|
|
455
|
+
} = this.state;
|
|
456
|
+
const options = this.getMoreList({
|
|
457
|
+
moreTabs
|
|
458
|
+
});
|
|
459
|
+
const filteredOptions = options.filter(list => {
|
|
460
|
+
const {
|
|
461
|
+
id = ''
|
|
462
|
+
} = list;
|
|
463
|
+
const value = id;
|
|
464
|
+
return value.toLowerCase().includes(searchValue);
|
|
465
|
+
});
|
|
466
|
+
return filteredOptions;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
renderEmptyState() {
|
|
470
|
+
const {
|
|
471
|
+
searchErrorText
|
|
472
|
+
} = this.props;
|
|
473
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
474
|
+
className: tabsStyle.emptyStateContainer
|
|
475
|
+
}, /*#__PURE__*/React.createElement(EmptySearch, {
|
|
476
|
+
size: "small"
|
|
477
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
478
|
+
className: tabsStyle.emptyStateTitle
|
|
479
|
+
}, searchErrorText));
|
|
480
|
+
return ''; // return <EmptySearch size='small' />;
|
|
481
|
+
}
|
|
482
|
+
|
|
410
483
|
renderTabs(mainTabs, moreTabs, isVirtual) {
|
|
411
484
|
let {
|
|
412
485
|
selectedTab,
|
|
@@ -434,14 +507,26 @@ class Tabs extends React.Component {
|
|
|
434
507
|
customProps,
|
|
435
508
|
getCustomDropBoxHeaderPlaceHolder,
|
|
436
509
|
dataSelectorId,
|
|
437
|
-
dataId
|
|
510
|
+
dataId,
|
|
511
|
+
placeHolderText,
|
|
512
|
+
searchBoxSize,
|
|
513
|
+
ariaTitleId,
|
|
514
|
+
TextBoxIconProps,
|
|
515
|
+
removeClose
|
|
438
516
|
} = this.props;
|
|
517
|
+
const {
|
|
518
|
+
searchValue
|
|
519
|
+
} = this.state;
|
|
439
520
|
let {
|
|
440
521
|
DropBoxProps = {},
|
|
441
522
|
ListItemProps = {},
|
|
442
523
|
MoreButtonProps = {}
|
|
443
524
|
} = customProps;
|
|
444
525
|
let popupClass = align === 'vertical' ? tabsStyle[position] ? tabsStyle[position] : '' : '';
|
|
526
|
+
const listItemArray = this.handleFilterSuggestions({
|
|
527
|
+
moreTabs
|
|
528
|
+
});
|
|
529
|
+
const isSearch = moreTabs.length > 4;
|
|
445
530
|
return /*#__PURE__*/React.createElement(React.Fragment, null, React.Children.map(mainTabs, child => {
|
|
446
531
|
if (!child) {
|
|
447
532
|
return null;
|
|
@@ -491,10 +576,10 @@ class Tabs extends React.Component {
|
|
|
491
576
|
})), isPopupOpen && /*#__PURE__*/React.createElement(ResponsiveReceiver, {
|
|
492
577
|
query: this.responsiveFunc,
|
|
493
578
|
responsiveId: "Helmet"
|
|
494
|
-
},
|
|
579
|
+
}, _ref4 => {
|
|
495
580
|
let {
|
|
496
581
|
tabletMode
|
|
497
|
-
} =
|
|
582
|
+
} = _ref4;
|
|
498
583
|
return /*#__PURE__*/React.createElement(ResponsiveDropBox, {
|
|
499
584
|
isActive: isPopupReady,
|
|
500
585
|
isAnimate: true,
|
|
@@ -504,25 +589,44 @@ class Tabs extends React.Component {
|
|
|
504
589
|
},
|
|
505
590
|
boxPosition: position,
|
|
506
591
|
getRef: getContainerRef,
|
|
507
|
-
isBoxPaddingNeed:
|
|
592
|
+
isBoxPaddingNeed: false,
|
|
508
593
|
isArrow: false,
|
|
509
594
|
...DropBoxProps,
|
|
510
595
|
isResponsivePadding: true,
|
|
511
596
|
needFocusScope: true,
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
}, getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(this.props), /*#__PURE__*/React.createElement(Box, {
|
|
597
|
+
dataId: `${dataId}_dropbox`,
|
|
598
|
+
onClick: removeClose
|
|
599
|
+
}, getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(this.props), isSearch ? /*#__PURE__*/React.createElement(Box, {
|
|
600
|
+
className: tabsStyle.search
|
|
601
|
+
}, /*#__PURE__*/React.createElement(TextBoxIcon, {
|
|
602
|
+
placeHolder: placeHolderText,
|
|
603
|
+
onChange: this.handleChange,
|
|
604
|
+
value: searchValue,
|
|
605
|
+
onClear: this.handleSearchValueClear,
|
|
606
|
+
size: searchBoxSize,
|
|
607
|
+
customProps: {
|
|
608
|
+
TextBoxProps: {
|
|
609
|
+
'data-a11y-autofocus': true
|
|
610
|
+
}
|
|
611
|
+
} //search
|
|
612
|
+
,
|
|
613
|
+
dataId: `${dataId}_search`,
|
|
614
|
+
a11y: {
|
|
615
|
+
role: 'combobox',
|
|
616
|
+
ariaOwns: ariaTitleId,
|
|
617
|
+
ariaAutocomplete: 'list',
|
|
618
|
+
ariaHaspopup: true,
|
|
619
|
+
ariaExpanded: true
|
|
620
|
+
},
|
|
621
|
+
...TextBoxIconProps
|
|
622
|
+
})) : null, /*#__PURE__*/React.createElement(Box, {
|
|
515
623
|
flexible: true,
|
|
516
624
|
shrink: true,
|
|
517
625
|
scroll: "vertical",
|
|
518
|
-
className: `${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
|
|
626
|
+
className: `${tabsStyle.listWrapper} ${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
|
|
519
627
|
onScroll: this.onScroll,
|
|
520
628
|
dataId: `${dataId}_Tabs`
|
|
521
|
-
},
|
|
522
|
-
if (!child) {
|
|
523
|
-
return null;
|
|
524
|
-
}
|
|
525
|
-
|
|
629
|
+
}, listItemArray.length ? listItemArray.map(data => {
|
|
526
630
|
let {
|
|
527
631
|
text,
|
|
528
632
|
id,
|
|
@@ -531,9 +635,9 @@ class Tabs extends React.Component {
|
|
|
531
635
|
href,
|
|
532
636
|
children,
|
|
533
637
|
dataId
|
|
534
|
-
} =
|
|
638
|
+
} = data;
|
|
535
639
|
const value = text ? text : showTitleInMoreOptions ? title : null;
|
|
536
|
-
return /*#__PURE__*/React.
|
|
640
|
+
return /*#__PURE__*/React.createElement(ListItem, {
|
|
537
641
|
key: id,
|
|
538
642
|
value: value,
|
|
539
643
|
onClick: this.moreTabSelect,
|
|
@@ -549,7 +653,7 @@ class Tabs extends React.Component {
|
|
|
549
653
|
dataId: `${dataId}_Tab`,
|
|
550
654
|
...ListItemProps
|
|
551
655
|
}, !showTitleInMoreOptions ? children : null);
|
|
552
|
-
})));
|
|
656
|
+
}) : this.renderEmptyState()));
|
|
553
657
|
})) : null);
|
|
554
658
|
}
|
|
555
659
|
|
package/es/Tab/Tabs.module.css
CHANGED
|
@@ -123,15 +123,46 @@
|
|
|
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_size25);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.emptyStateTitle {
|
|
148
|
+
font-family: var(--zd_semibold);
|
|
149
|
+
color: var(--zdt_commonEmptyState_default_title);
|
|
150
|
+
word-wrap: break-word;
|
|
151
|
+
font-size: var(--zd_font_size16) ;
|
|
152
|
+
max-width: var(--zd_size430) ;
|
|
153
|
+
text-align: center;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
[dir=ltr] .emptyStateTitle {
|
|
157
|
+
margin-left: auto ;
|
|
158
|
+
margin-right: auto ;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
[dir=rtl] .emptyStateTitle {
|
|
162
|
+
margin-right: auto ;
|
|
163
|
+
margin-left: auto ;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.listWrapper {
|
|
167
|
+
padding: var(--zd_size10) 0 ;
|
|
137
168
|
}
|
|
@@ -30,7 +30,9 @@ export const Tabs_defaultProps = {
|
|
|
30
30
|
iconSize: '7',
|
|
31
31
|
containerClass: '',
|
|
32
32
|
customProps: {},
|
|
33
|
-
dataSelectorId: 'tabs'
|
|
33
|
+
dataSelectorId: 'tabs',
|
|
34
|
+
searchBoxSize: 'small',
|
|
35
|
+
searchErrorText: 'No results'
|
|
34
36
|
};
|
|
35
37
|
export const TabWrapper_defaultProps = {
|
|
36
38
|
hookToDisableInternalState: false,
|
|
@@ -89,7 +89,12 @@ export const Tabs_propTypes = {
|
|
|
89
89
|
MoreButtonProps: PropTypes.object
|
|
90
90
|
}),
|
|
91
91
|
getCustomDropBoxHeaderPlaceHolder: PropTypes.func,
|
|
92
|
-
dataSelectorId: PropTypes.string
|
|
92
|
+
dataSelectorId: PropTypes.string,
|
|
93
|
+
placeHolderText: PropTypes.string,
|
|
94
|
+
searchBoxSize: PropTypes.string,
|
|
95
|
+
ariaTitleId: PropTypes.string,
|
|
96
|
+
TextBoxIconProps: PropTypes.object,
|
|
97
|
+
searchErrorText: PropTypes.string
|
|
93
98
|
};
|
|
94
99
|
export const TabWrapper_propTypes = {
|
|
95
100
|
align: PropTypes.oneOf(['vertical', 'horizontal']),
|
package/es/Tag/Tag.js
CHANGED
|
@@ -80,6 +80,7 @@ export default class Tag extends PureComponent {
|
|
|
80
80
|
tooltip,
|
|
81
81
|
avatarPalette,
|
|
82
82
|
customClass,
|
|
83
|
+
customAttributes,
|
|
83
84
|
a11y,
|
|
84
85
|
needEffect,
|
|
85
86
|
isReadOnly
|
|
@@ -105,7 +106,8 @@ export default class Tag extends PureComponent {
|
|
|
105
106
|
"data-title": tooltip ? tooltip : text,
|
|
106
107
|
tabIndex: disabled ? '-1' : '0',
|
|
107
108
|
"aria-labelledby": getAriaId,
|
|
108
|
-
"data-selector-id": dataSelectorId
|
|
109
|
+
"data-selector-id": dataSelectorId,
|
|
110
|
+
...customAttributes
|
|
109
111
|
}, hasAvatar ? /*#__PURE__*/React.createElement("div", {
|
|
110
112
|
className: style.avatar
|
|
111
113
|
}, /*#__PURE__*/React.createElement(Avatar, {
|
|
@@ -232,4 +232,14 @@ describe('Tag component', () => {
|
|
|
232
232
|
}));
|
|
233
233
|
expect(asFragment()).toMatchSnapshot();
|
|
234
234
|
});
|
|
235
|
+
test('rendering with customAttributes prop', () => {
|
|
236
|
+
const {
|
|
237
|
+
asFragment
|
|
238
|
+
} = render( /*#__PURE__*/React.createElement(Tag, {
|
|
239
|
+
customAttributes: {
|
|
240
|
+
'data-custom-attribute': 'true'
|
|
241
|
+
}
|
|
242
|
+
}));
|
|
243
|
+
expect(asFragment()).toMatchSnapshot();
|
|
244
|
+
});
|
|
235
245
|
});
|
|
@@ -3052,3 +3052,23 @@ exports[`Tag component rendering the Custom class 1`] = `
|
|
|
3052
3052
|
</div>
|
|
3053
3053
|
</DocumentFragment>
|
|
3054
3054
|
`;
|
|
3055
|
+
|
|
3056
|
+
exports[`Tag component rendering with customAttributes prop 1`] = `
|
|
3057
|
+
<DocumentFragment>
|
|
3058
|
+
<div
|
|
3059
|
+
aria-labelledby="1"
|
|
3060
|
+
class="container effect medium lgRadius default "
|
|
3061
|
+
data-custom-attribute="true"
|
|
3062
|
+
data-id="tag_Tag"
|
|
3063
|
+
data-selector-id="tag"
|
|
3064
|
+
data-test-id="tag_Tag"
|
|
3065
|
+
tabindex="0"
|
|
3066
|
+
>
|
|
3067
|
+
<div
|
|
3068
|
+
aria-hidden="true"
|
|
3069
|
+
class="text mediumtext"
|
|
3070
|
+
id="1"
|
|
3071
|
+
/>
|
|
3072
|
+
</div>
|
|
3073
|
+
</DocumentFragment>
|
|
3074
|
+
`;
|
|
@@ -18,6 +18,7 @@ export default class TextBoxIcon extends React.Component {
|
|
|
18
18
|
this.handleBlur = this.handleBlur.bind(this);
|
|
19
19
|
this.handleRef = this.handleRef.bind(this);
|
|
20
20
|
this.handleClear = this.handleClear.bind(this);
|
|
21
|
+
this.handleInputFocusOnClick = this.handleInputFocusOnClick.bind(this);
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
handleRef(ele) {
|
|
@@ -63,6 +64,12 @@ export default class TextBoxIcon extends React.Component {
|
|
|
63
64
|
onBlur && onBlur(e);
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
handleInputFocusOnClick() {
|
|
68
|
+
this.inputEle && this.inputEle.focus({
|
|
69
|
+
preventScroll: true
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
66
73
|
render() {
|
|
67
74
|
const {
|
|
68
75
|
type,
|
|
@@ -100,7 +107,9 @@ export default class TextBoxIcon extends React.Component {
|
|
|
100
107
|
isFocus,
|
|
101
108
|
onClearMouseDown,
|
|
102
109
|
isScrollPrevent,
|
|
103
|
-
customProps
|
|
110
|
+
customProps,
|
|
111
|
+
needInputFocusOnWrapperClick,
|
|
112
|
+
renderRightPlaceholderNode
|
|
104
113
|
} = this.props;
|
|
105
114
|
const {
|
|
106
115
|
isActive
|
|
@@ -122,7 +131,8 @@ export default class TextBoxIcon extends React.Component {
|
|
|
122
131
|
isCover: false,
|
|
123
132
|
className: `${style.container} ${isDisabled ? style.disabled : isReadOnly ? needEffect ? style.effect : style.readonly : style.effect} ${isActive || isFocus ? style.effectFocused : ''} ${customTBoxWrap} ${iconOnHover && (isReadOnly || isDisabled) ? style.iconOnHoverReadonly : iconOnHover && !(isReadOnly || isDisabled) ? style.iconOnHoverStyle : ''}`,
|
|
124
133
|
dataSelectorId: dataSelectorId,
|
|
125
|
-
"data-title": isDisabled ? title : null
|
|
134
|
+
"data-title": isDisabled ? title : null,
|
|
135
|
+
onClick: needInputFocusOnWrapperClick && !isDisabled ? this.handleInputFocusOnClick : null
|
|
126
136
|
}, /*#__PURE__*/React.createElement(Box, {
|
|
127
137
|
flexible: true
|
|
128
138
|
}, /*#__PURE__*/React.createElement(TextBox, { ...this.props,
|
|
@@ -172,7 +182,7 @@ export default class TextBoxIcon extends React.Component {
|
|
|
172
182
|
size: "14"
|
|
173
183
|
}))) : null, children ? /*#__PURE__*/React.createElement(Box, {
|
|
174
184
|
className: `${style.icon} ${iconRotated ? style.rotated : ''}`
|
|
175
|
-
}, children) : null)), needBorder && /*#__PURE__*/React.createElement("div", {
|
|
185
|
+
}, children) : null, renderRightPlaceholderNode ? /*#__PURE__*/React.createElement(Box, null, renderRightPlaceholderNode) : null)), needBorder && /*#__PURE__*/React.createElement("div", {
|
|
176
186
|
className: `${style.line} ${style[`borderColor_${borderColor}`]} ${customTBoxLine}`
|
|
177
187
|
}));
|
|
178
188
|
}
|
|
@@ -20,6 +20,7 @@ export const propTypes = { ...TextBox_propTypes,
|
|
|
20
20
|
needBorder: PropTypes.bool,
|
|
21
21
|
needEffect: PropTypes.bool,
|
|
22
22
|
needReadOnlyStyle: PropTypes.bool,
|
|
23
|
+
needInputFocusOnWrapperClick: PropTypes.bool,
|
|
23
24
|
onBlur: PropTypes.func,
|
|
24
25
|
onChange: PropTypes.func,
|
|
25
26
|
onClear: PropTypes.func,
|
|
@@ -48,5 +49,6 @@ export const propTypes = { ...TextBox_propTypes,
|
|
|
48
49
|
isScrollPrevent: PropTypes.bool,
|
|
49
50
|
customProps: PropTypes.shape({
|
|
50
51
|
TextBoxProps: PropTypes.object
|
|
51
|
-
})
|
|
52
|
+
}),
|
|
53
|
+
renderRightPlaceholderNode: PropTypes.node
|
|
52
54
|
};
|
|
@@ -749,7 +749,8 @@ export class SelectComponent extends Component {
|
|
|
749
749
|
let {
|
|
750
750
|
TextBoxProps = {},
|
|
751
751
|
DropdownSearchTextBoxProps = {},
|
|
752
|
-
SuggestionsProps = {}
|
|
752
|
+
SuggestionsProps = {},
|
|
753
|
+
TextBoxIconProps = {}
|
|
753
754
|
} = customProps;
|
|
754
755
|
return /*#__PURE__*/React.createElement("div", {
|
|
755
756
|
className: `${isParentBased || isReadOnly || isDisabled ? style.container : ''} ${style[`box_${size}`]} ${isReadOnly ? style.readonly : ''} ${borderColor === 'transparent' ? style.transparentContainer : ''} ${iconOnHover && (isReadOnly || isDisabled) ? style.iconOnHoverReadonly : iconOnHover && !(isReadOnly || isDisabled) ? style.iconOnHoverStyle : ''}`,
|
|
@@ -803,14 +804,15 @@ export class SelectComponent extends Component {
|
|
|
803
804
|
'data-title': title || selected,
|
|
804
805
|
...TextBoxProps
|
|
805
806
|
}
|
|
806
|
-
}
|
|
807
|
+
},
|
|
808
|
+
...TextBoxIconProps
|
|
807
809
|
}, /*#__PURE__*/React.createElement(Container, {
|
|
810
|
+
isInline: true,
|
|
811
|
+
isCover: false,
|
|
808
812
|
alignBox: "row",
|
|
809
|
-
align: "both"
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
dataId: `${dataId}_children`
|
|
813
|
-
}, children) : null, /*#__PURE__*/React.createElement(Container, {
|
|
813
|
+
align: "both",
|
|
814
|
+
className: style.rightPlaceholder
|
|
815
|
+
}, /*#__PURE__*/React.createElement(Container, {
|
|
814
816
|
align: "both",
|
|
815
817
|
dataId: `${dataId}_downIcon`,
|
|
816
818
|
"aria-hidden": true,
|
|
@@ -818,7 +820,10 @@ export class SelectComponent extends Component {
|
|
|
818
820
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
819
821
|
name: "ZD-down",
|
|
820
822
|
size: "7"
|
|
821
|
-
}))
|
|
823
|
+
})), children ? /*#__PURE__*/React.createElement(Box, {
|
|
824
|
+
className: isPopupOpen ? style.rotate : '',
|
|
825
|
+
dataId: `${dataId}_children`
|
|
826
|
+
}, children) : null)) : /*#__PURE__*/React.createElement(Textbox, {
|
|
822
827
|
a11y: {
|
|
823
828
|
role: 'Menuitem',
|
|
824
829
|
ariaLabel: TextBox_ally_label,
|
|
@@ -345,7 +345,8 @@ class SelectWithIcon extends Component {
|
|
|
345
345
|
i18nKeys,
|
|
346
346
|
htmlId,
|
|
347
347
|
isLoading,
|
|
348
|
-
dataSelectorId
|
|
348
|
+
dataSelectorId,
|
|
349
|
+
customProps
|
|
349
350
|
} = this.props;
|
|
350
351
|
i18nKeys = Object.assign({}, i18nKeys, {
|
|
351
352
|
emptyText: i18nKeys.emptyText || emptyMessage,
|
|
@@ -359,6 +360,11 @@ class SelectWithIcon extends Component {
|
|
|
359
360
|
} = this.state;
|
|
360
361
|
let setAriaId = this.getNextAriaId();
|
|
361
362
|
let ariaErrorId = this.getNextAriaId();
|
|
363
|
+
let {
|
|
364
|
+
TextBoxProps = {},
|
|
365
|
+
DropdownSearchTextBoxProps = {},
|
|
366
|
+
TextBoxIconProps = {}
|
|
367
|
+
} = customProps;
|
|
362
368
|
return /*#__PURE__*/React.createElement("div", {
|
|
363
369
|
className: `${style.container} ${style[`box_${size}`]} ${isReadOnly ? style.readonly : ''} ${borderColor === 'transparent' ? style.transparentContainer : ''}`,
|
|
364
370
|
"data-title": isDisabled ? title : null,
|
|
@@ -413,10 +419,21 @@ class SelectWithIcon extends Component {
|
|
|
413
419
|
needEffect: isReadOnly || isDisabled ? false : true,
|
|
414
420
|
borderColor: borderColor,
|
|
415
421
|
autoComplete: false,
|
|
416
|
-
isFocus: isPopupReady
|
|
422
|
+
isFocus: isPopupReady,
|
|
423
|
+
customProps: {
|
|
424
|
+
TextBoxProps: {
|
|
425
|
+
'data-title': title || selectedValue,
|
|
426
|
+
...TextBoxProps
|
|
427
|
+
}
|
|
428
|
+
},
|
|
429
|
+
...TextBoxIconProps
|
|
417
430
|
}, /*#__PURE__*/React.createElement(Container, {
|
|
431
|
+
isInline: true,
|
|
432
|
+
isCover: false,
|
|
418
433
|
align: "both",
|
|
419
|
-
dataId: `${dataId}_downIcon
|
|
434
|
+
dataId: `${dataId}_downIcon`,
|
|
435
|
+
alignBox: "both",
|
|
436
|
+
className: style.rightPlaceholder
|
|
420
437
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
421
438
|
name: "ZD-down",
|
|
422
439
|
size: "7"
|
|
@@ -467,7 +484,10 @@ class SelectWithIcon extends Component {
|
|
|
467
484
|
a11y: {
|
|
468
485
|
ariaDescribedby: ariaErrorId
|
|
469
486
|
},
|
|
470
|
-
autoComplete: false
|
|
487
|
+
autoComplete: false,
|
|
488
|
+
customProps: {
|
|
489
|
+
TextBoxProps: DropdownSearchTextBoxProps
|
|
490
|
+
}
|
|
471
491
|
}))) : null, /*#__PURE__*/React.createElement(CardContent, {
|
|
472
492
|
customClass: `${tabletMode ? style.responsivedropBoxList : style.dropBoxList} ${!tabletMode && dropBoxSize ? style[dropBoxSize] : ''}`,
|
|
473
493
|
shrink: true,
|
|
@@ -62,7 +62,7 @@ exports[`Select rendering the defult props 1`] = `
|
|
|
62
62
|
data-test-id="boxComponent"
|
|
63
63
|
>
|
|
64
64
|
<div
|
|
65
|
-
class="
|
|
65
|
+
class="rightPlaceholder inflex rowdir both"
|
|
66
66
|
data-id="containerComponent"
|
|
67
67
|
data-selector-id="container"
|
|
68
68
|
data-test-id="containerComponent"
|
|
@@ -79,7 +79,7 @@ exports[`SelectWithIcon rendering the defult props 1`] = `
|
|
|
79
79
|
data-test-id="boxComponent"
|
|
80
80
|
>
|
|
81
81
|
<div
|
|
82
|
-
class="
|
|
82
|
+
class="rightPlaceholder inflex both"
|
|
83
83
|
data-id="selectWithIcon_downIcon"
|
|
84
84
|
data-selector-id="container"
|
|
85
85
|
data-test-id="selectWithIcon_downIcon"
|
|
@@ -80,6 +80,7 @@ export const Select_propTypes = {
|
|
|
80
80
|
iconOnHover: PropTypes.bool,
|
|
81
81
|
customProps: PropTypes.shape({
|
|
82
82
|
TextBoxProps: PropTypes.object,
|
|
83
|
+
TextBoxIconProps: PropTypes.object,
|
|
83
84
|
DropdownSearchTextBoxProps: PropTypes.object,
|
|
84
85
|
listItemProps: PropTypes.object,
|
|
85
86
|
SuggestionsProps: PropTypes.object
|
|
@@ -284,5 +285,10 @@ export const SelectWithIcon_propTypes = {
|
|
|
284
285
|
searchBoxSize: PropTypes.string,
|
|
285
286
|
needResponsive: PropTypes.bool,
|
|
286
287
|
boxSize: PropTypes.string,
|
|
287
|
-
emptyMessage: PropTypes.string
|
|
288
|
+
emptyMessage: PropTypes.string,
|
|
289
|
+
customProps: PropTypes.shape({
|
|
290
|
+
TextBoxProps: PropTypes.object,
|
|
291
|
+
DropdownSearchTextBoxProps: PropTypes.object,
|
|
292
|
+
TextBoxIconProps: PropTypes.object
|
|
293
|
+
})
|
|
288
294
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import useDropboxPosCalc from '../../../DropBox/DropBoxElement/useDropboxPosCalc';
|
|
3
3
|
import cssJSLogic from '../../../DropBox/DropBoxElement/css/cssJSLogic';
|
|
4
|
-
import { positionMapping } from '../../../DropBox/DropBoxPositionMapping.
|
|
4
|
+
import { positionMapping } from '../../../DropBox/DropBoxPositionMapping.js';
|
|
5
5
|
import { DropBoxElementDefaultProps } from './props/defaultProps';
|
|
6
6
|
import { DropBoxElementPropTypes } from './props/propTypes';
|
|
7
7
|
import { mergeStyle } from '@zohodesk/utils';
|