@zohodesk/components 1.0.0-temp-253 → 1.0.0-temp-252.1

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/README.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  Dot UI is a customizable React component library built to deliver a clean, accessible, and developer-friendly UI experience. It offers a growing set of reusable components designed to align with modern design systems and streamline application development across projects.
4
4
 
5
+ # 1.6.13
6
+
7
+ - **Select**
8
+ - Added `renderCustomDropBoxHeader` prop to render a custom node at the top of the dropdown, above the suggestions list.
9
+ - Added `customDropBoxHeader` key under the `customClass` prop to style the custom header wrapper.
10
+
5
11
  # 1.6.12
6
12
 
7
13
  - v1/Button/_shared/SuccessTick/SuccessTick.module.css file renamed to SuccessTick_v1.module.css
@@ -27,7 +27,6 @@ export default function DropBoxElement(props) {
27
27
  tabIndex,
28
28
  palette,
29
29
  subContainerRef,
30
- getSubContainerRef,
31
30
  customStyle,
32
31
  animationStyle
33
32
  } = props;
@@ -55,14 +54,6 @@ export default function DropBoxElement(props) {
55
54
  }
56
55
  };
57
56
 
58
- const setSubContainerRef = ele => {
59
- if (subContainerRef) {
60
- subContainerRef.current = ele;
61
- }
62
-
63
- getSubContainerRef && getSubContainerRef(ele);
64
- };
65
-
66
57
  if (!isAbsolutePositioningNeeded && size === 'default' && !isActive) {
67
58
  isAbsolute = true;
68
59
  }
@@ -129,7 +120,7 @@ export default function DropBoxElement(props) {
129
120
  "data-id": `${dataId}_subcontainer`,
130
121
  "data-test-id": `${dataId}_subcontainer`,
131
122
  "data-selector-id": `${dataSelectorId}_subcontainer`,
132
- ref: setSubContainerRef
123
+ ref: subContainerRef
133
124
  }, isModel ? /*#__PURE__*/React.createElement("div", {
134
125
  className: style.closeBar
135
126
  }) : null, isArrow && !isModel && /*#__PURE__*/React.createElement("div", {
@@ -13,13 +13,9 @@
13
13
 
14
14
  .subContainer {
15
15
  position: relative;
16
- display: flex;
17
- flex-direction: column;
18
- /* overflow: hidden; */
19
16
  border-radius: var(--dropbox_border_radius);
20
17
  padding: var(--dropbox_padding);
21
18
  box-shadow: var(--dropbox_box_shadow);
22
-
23
19
  }
24
20
 
25
21
  .defaultPalette,
@@ -434,8 +430,8 @@
434
430
  height: 6px;
435
431
  /*css:theme-validation:ignore*/
436
432
  width: 20% ;
437
- margin-block: 0 var(--zd_size10) ;
438
- margin-inline: auto ;
433
+ margin-block:0 var(--zd_size10) ;
434
+ margin-inline:auto ;
439
435
  border-radius: 5px;
440
436
  background-color: var(--dropbox_mob_close_bg_color);
441
437
  cursor: pointer;
@@ -447,4 +443,4 @@
447
443
 
448
444
  .darkPalette {
449
445
  --dropbox_bg_color: var(--zdt_dropbox_dark_bg);
450
- }
446
+ }
@@ -47,6 +47,5 @@ export const DropBoxElementPropTypes = {
47
47
  positionsOffset: PropTypes.object,
48
48
  targetOffset: PropTypes.object,
49
49
  zIndexStyle: PropTypes.object,
50
- subContainerRef: PropTypes.func,
51
- getSubContainerRef: PropTypes.func
50
+ subContainerRef: PropTypes.func
52
51
  };
@@ -57,7 +57,6 @@ export default class ResponsiveDropBox extends Component {
57
57
  return /*#__PURE__*/React.createElement(Container, {
58
58
  alignBox: alignBox,
59
59
  isCover: false,
60
- flexible: true,
61
60
  className: `${tabletMode ? style.dropBoxContainer : ''} ${tabletMode && isResponsivePadding ? style.boxPadding : ''} ${customResponsiveContainer}`
62
61
  }, children);
63
62
  }));
@@ -813,7 +813,8 @@ export class SelectComponent extends Component {
813
813
  renderCustomSearchClearComponent,
814
814
  renderCustomSelectedValue,
815
815
  inputFieldLineA11y,
816
- customClass
816
+ customClass,
817
+ renderCustomDropBoxHeader
817
818
  } = this.props;
818
819
  let {
819
820
  TextBoxIcon_i18n,
@@ -844,7 +845,8 @@ export class SelectComponent extends Component {
844
845
  } = customProps;
845
846
  const {
846
847
  dropBox: dropBoxClass = '',
847
- cardContent: cardContentClass = ''
848
+ cardContent: cardContentClass = '',
849
+ customDropBoxHeader: customDropBoxHeaderClass = ''
848
850
  } = customClass;
849
851
  const inputFieldLineA11yAttributes = this.getInputFieldLineA11y({
850
852
  setAriaId,
@@ -1021,81 +1023,92 @@ export class SelectComponent extends Component {
1021
1023
  isRestrictScroll: isRestrictScroll,
1022
1024
  portalId: dropBoxPortalId,
1023
1025
  customClass: {
1024
- customDropBox: dropBoxClass
1026
+ customDropBox: `${dropBoxClass} ${renderCustomDropBoxHeader ? style.dropBoxWithCustomHeader : ''}`
1025
1027
  }
1026
- }, isLoading ? /*#__PURE__*/React.createElement(Container, {
1027
- align: "both",
1028
- className: style.loader
1029
- }, /*#__PURE__*/React.createElement(Loader, null)) : /*#__PURE__*/React.createElement(React.Fragment, null, !getChildren ? /*#__PURE__*/React.createElement(Box, {
1030
- flexible: true
1031
- }, /*#__PURE__*/React.createElement(Card, {
1032
- onScroll: this.handleScroll
1033
- }, needSearch ? /*#__PURE__*/React.createElement(CardHeader, null, /*#__PURE__*/React.createElement("div", {
1034
- className: `${style.search} ${style[size]}`
1035
- }, /*#__PURE__*/React.createElement(TextBoxIcon, {
1036
- a11y: {
1037
- ariaControls: setAriaId,
1038
- ariaAutocomplete: 'list',
1039
- ariaDescribedby: ariaErrorId
1040
- },
1041
- inputRef: this.searchInputRef,
1042
- maxLength: maxLength,
1043
- onChange: this.handleSearch,
1044
- onKeyDown: this.handleKeyDown,
1045
- placeHolder: searchBoxPlaceHolder,
1046
- size: searchBoxSize,
1047
- value: searchStr,
1048
- onClear: this.handleClearSearch,
1049
- dataId: `${dataId}_search`,
1050
- i18nKeys: TextBoxIcon_i18n,
1051
- autoComplete: autoComplete,
1052
- customProps: {
1053
- TextBoxProps: DropdownSearchTextBoxProps
1054
- },
1055
- renderCustomClearComponent: renderCustomSearchClearComponent
1056
- }))) : null, /*#__PURE__*/React.createElement(CardContent, {
1057
- shrink: true,
1058
- customClass: `
1028
+ }, (() => {
1029
+ const dropdownContent = isLoading ? /*#__PURE__*/React.createElement(Container, {
1030
+ align: "both",
1031
+ className: style.loader
1032
+ }, /*#__PURE__*/React.createElement(Loader, null)) : /*#__PURE__*/React.createElement(React.Fragment, null, !getChildren ? /*#__PURE__*/React.createElement(Box, {
1033
+ flexible: true
1034
+ }, /*#__PURE__*/React.createElement(Card, {
1035
+ onScroll: this.handleScroll
1036
+ }, needSearch ? /*#__PURE__*/React.createElement(CardHeader, null, /*#__PURE__*/React.createElement("div", {
1037
+ className: `${style.search} ${style[size]}`
1038
+ }, /*#__PURE__*/React.createElement(TextBoxIcon, {
1039
+ a11y: {
1040
+ ariaControls: setAriaId,
1041
+ ariaAutocomplete: 'list',
1042
+ ariaDescribedby: ariaErrorId
1043
+ },
1044
+ inputRef: this.searchInputRef,
1045
+ maxLength: maxLength,
1046
+ onChange: this.handleSearch,
1047
+ onKeyDown: this.handleKeyDown,
1048
+ placeHolder: searchBoxPlaceHolder,
1049
+ size: searchBoxSize,
1050
+ value: searchStr,
1051
+ onClear: this.handleClearSearch,
1052
+ dataId: `${dataId}_search`,
1053
+ i18nKeys: TextBoxIcon_i18n,
1054
+ autoComplete: autoComplete,
1055
+ customProps: {
1056
+ TextBoxProps: DropdownSearchTextBoxProps
1057
+ },
1058
+ renderCustomClearComponent: renderCustomSearchClearComponent
1059
+ }))) : null, /*#__PURE__*/React.createElement(CardContent, {
1060
+ shrink: true,
1061
+ customClass: `
1059
1062
  ${!tabletMode && dropBoxSize ? style[dropBoxSize] : ''} ${cardContentClass}`,
1060
- eleRef: this.suggestionContainerRef
1061
- }, suggestions.length ? /*#__PURE__*/React.createElement(Suggestions, _extends({
1062
- key: searchStr.trim(),
1063
- activeId: selectedId,
1064
- isVirtualizerEnabled: isVirtualizerEnabled,
1065
- getVirtualizerPublicMethods: this.getVirtualizerPublicMethods,
1066
- setVirtualizerContainerRefFunction: this.setSuggestionsVirtualizerContainerRefFunction,
1067
- suggestions: suggestions,
1068
- getRef: this.suggestionItemRef,
1069
- hoverOption: hoverIndex,
1070
- onClick: this.handleChange,
1071
- onMouseEnter: this.handleMouseEnter,
1072
- dataId: `${dataId}_Options`,
1073
- needTick: needTick,
1074
- needBorder: needListBorder,
1075
- selectedOptions: [selectedId],
1076
- className: `${tabletMode ? style.responsivelistItemContainer : style.listItemContainer}`,
1077
- listItemSize: listItemSize,
1078
- htmlId: setAriaId,
1079
- a11y: {
1080
- ariaParentRole: 'listbox',
1081
- role: 'option'
1082
- }
1083
- }, SuggestionsProps)) : /*#__PURE__*/React.createElement(EmptyState, {
1084
- isLoading: isFetchingOptions,
1085
- options: options,
1086
- searchString: searchStr,
1087
- suggestions: suggestions,
1088
- dataId: dataId,
1089
- renderCustomEmptyState: renderCustomEmptyState,
1090
- getCustomEmptyState: getCustomEmptyState ? this.handleGetAddNewOptionText : null,
1091
- i18nKeys: i18nKeys,
1092
- htmlId: ariaErrorId
1093
- }), isFetchingOptions && /*#__PURE__*/React.createElement(Container, {
1094
- isCover: false,
1095
- align: "both"
1096
- }, /*#__PURE__*/React.createElement(Loader, null))), getFooter ? /*#__PURE__*/React.createElement(CardFooter, null, getFooter()) : null)) : /*#__PURE__*/React.createElement(Box, {
1097
- flexible: true
1098
- }, getChildren())));
1063
+ eleRef: this.suggestionContainerRef
1064
+ }, suggestions.length ? /*#__PURE__*/React.createElement(Suggestions, _extends({
1065
+ key: searchStr.trim(),
1066
+ activeId: selectedId,
1067
+ isVirtualizerEnabled: isVirtualizerEnabled,
1068
+ getVirtualizerPublicMethods: this.getVirtualizerPublicMethods,
1069
+ setVirtualizerContainerRefFunction: this.setSuggestionsVirtualizerContainerRefFunction,
1070
+ suggestions: suggestions,
1071
+ getRef: this.suggestionItemRef,
1072
+ hoverOption: hoverIndex,
1073
+ onClick: this.handleChange,
1074
+ onMouseEnter: this.handleMouseEnter,
1075
+ dataId: `${dataId}_Options`,
1076
+ needTick: needTick,
1077
+ needBorder: needListBorder,
1078
+ selectedOptions: [selectedId],
1079
+ className: `${tabletMode ? style.responsivelistItemContainer : style.listItemContainer}`,
1080
+ listItemSize: listItemSize,
1081
+ htmlId: setAriaId,
1082
+ a11y: {
1083
+ ariaParentRole: 'listbox',
1084
+ role: 'option'
1085
+ }
1086
+ }, SuggestionsProps)) : /*#__PURE__*/React.createElement(EmptyState, {
1087
+ isLoading: isFetchingOptions,
1088
+ options: options,
1089
+ searchString: searchStr,
1090
+ suggestions: suggestions,
1091
+ dataId: dataId,
1092
+ renderCustomEmptyState: renderCustomEmptyState,
1093
+ getCustomEmptyState: getCustomEmptyState ? this.handleGetAddNewOptionText : null,
1094
+ i18nKeys: i18nKeys,
1095
+ htmlId: ariaErrorId
1096
+ }), isFetchingOptions && /*#__PURE__*/React.createElement(Container, {
1097
+ isCover: false,
1098
+ align: "both"
1099
+ }, /*#__PURE__*/React.createElement(Loader, null))), getFooter ? /*#__PURE__*/React.createElement(CardFooter, null, getFooter()) : null)) : /*#__PURE__*/React.createElement(Box, {
1100
+ flexible: true
1101
+ }, getChildren()));
1102
+ return renderCustomDropBoxHeader ? /*#__PURE__*/React.createElement("div", {
1103
+ className: style.dropBoxListContainer
1104
+ }, /*#__PURE__*/React.createElement("div", {
1105
+ className: `${customDropBoxHeaderClass} ${style.customDropBoxHeaderContainer}`
1106
+ }, renderNode(renderCustomDropBoxHeader, {
1107
+ closePopup: this.handlePopupClose
1108
+ })), /*#__PURE__*/React.createElement("div", {
1109
+ className: style.dropdownOptions
1110
+ }, dropdownContent)) : dropdownContent;
1111
+ })());
1099
1112
  }) : null);
1100
1113
  }
1101
1114
 
@@ -22,12 +22,12 @@
22
22
 
23
23
  .box_small .emptyState {
24
24
  padding-block: var(--zd_size12) ;
25
- padding-inline:var(--zd_size6) ;
25
+ padding-inline: var(--zd_size6) ;
26
26
  }
27
27
 
28
28
  .box_medium .emptyState {
29
29
  padding-block: var(--zd_size12) ;
30
- padding-inline:var(--zd_size15) ;
30
+ padding-inline: var(--zd_size15) ;
31
31
  }
32
32
 
33
33
  .hide {
@@ -45,12 +45,12 @@
45
45
 
46
46
  .small.search {
47
47
  padding-block: 0 ;
48
- padding-inline:var(--zd_size5) ;
48
+ padding-inline: var(--zd_size5) ;
49
49
  }
50
50
 
51
51
  .medium.search {
52
52
  padding-block: var(--zd_size3) 0 ;
53
- padding-inline:var(--zd_size20) ;
53
+ padding-inline: var(--zd_size20) ;
54
54
  }
55
55
 
56
56
  .title {
@@ -59,17 +59,17 @@
59
59
 
60
60
  .groupTitle {
61
61
  margin-block: var(--zd_size6) ;
62
- margin-inline:0 ;
62
+ margin-inline: 0 ;
63
63
  }
64
64
 
65
65
  .listItemContainer {
66
66
  padding-block: var(--zd_size10) ;
67
- padding-inline:0 ;
67
+ padding-inline: 0 ;
68
68
  }
69
69
 
70
70
  .responsivelistItemContainer {
71
71
  padding-block: var(--zd_size10) 0 ;
72
- padding-inline:0 ;
72
+ padding-inline: 0 ;
73
73
  }
74
74
 
75
75
  .readonly {
@@ -111,18 +111,19 @@
111
111
 
112
112
  .dropBoxList {
113
113
  padding-block: var(--zd_size10) ;
114
- padding-inline:0 ;
114
+ padding-inline: 0 ;
115
115
  }
116
116
 
117
117
  .responsivedropBoxList {
118
118
  padding-block: var(--zd_size10) 0 ;
119
- padding-inline:0 ;
119
+ padding-inline: 0 ;
120
120
  }
121
121
 
122
122
  .rotate {
123
123
  transform: rotateX(180deg);
124
124
  }
125
- .rightPlaceholder{
125
+
126
+ .rightPlaceholder {
126
127
  height: 100% ;
127
128
  }
128
129
 
@@ -141,3 +142,29 @@
141
142
  .loader {
142
143
  padding: var(--zd_size10) ;
143
144
  }
145
+
146
+ .dropBoxWithCustomHeader {
147
+ border-radius: 7px;
148
+ }
149
+
150
+ .dropBoxListContainer {
151
+ width: 100% ;
152
+ border-radius: 7px;
153
+ padding: var(--zd_size10) ;
154
+ border: 1px solid var(--zdt_statusdropdown_wrapper_container_border);
155
+ background: var(--zdt_statusdropdown_wrapper_container_bg);
156
+ box-shadow: var(--zd_bs_statusdropdown_wrapper_container);
157
+ }
158
+
159
+ .dropdownOptions {
160
+ padding-inline: var(--zd_size1) ;
161
+ padding-block: var(--zd_size1) ;
162
+ background-color: var(--zdt_statusdropdown_wrapper_dropdown_bg);
163
+ border: 1px solid var(--zdt_statusdropdown_wrapper_container_border);
164
+ border-radius: 7px;
165
+ }
166
+
167
+ .customDropBoxHeaderContainer {
168
+ margin-block-end: var(--zd_size6) ;
169
+ margin-inline: var(--zd_size1) ;
170
+ }
@@ -38,7 +38,8 @@ export const Select_defaultProps = {
38
38
  isAbsolutePositioningNeeded: true,
39
39
  allowValueFallback: true,
40
40
  inputFieldLineA11y: {},
41
- customClass: {}
41
+ customClass: {},
42
+ renderCustomDropBoxHeader: null
42
43
  };
43
44
  export const GroupSelect_defaultProps = {
44
45
  animationStyle: 'bounce',
@@ -107,8 +107,10 @@ export const Select_propTypes = {
107
107
  inputFieldLineA11y: PropTypes.object,
108
108
  customClass: PropTypes.shape({
109
109
  dropBox: PropTypes.string,
110
- cardContent: PropTypes.string
111
- })
110
+ cardContent: PropTypes.string,
111
+ customDropBoxHeader: PropTypes.string
112
+ }),
113
+ renderCustomDropBoxHeader: PropTypes.oneOfType([PropTypes.func, PropTypes.node])
112
114
  };
113
115
  export const GroupSelect_propTypes = {
114
116
  groupedOptions: PropTypes.arrayOf(PropTypes.shape({
@@ -43,7 +43,6 @@ function DropBoxElement(props) {
43
43
  tabIndex = props.tabIndex,
44
44
  palette = props.palette,
45
45
  subContainerRef = props.subContainerRef,
46
- getSubContainerRef = props.getSubContainerRef,
47
46
  customStyle = props.customStyle,
48
47
  animationStyle = props.animationStyle;
49
48
  var isAbsolute = isAbsolutePositioningNeeded;
@@ -68,14 +67,6 @@ function DropBoxElement(props) {
68
67
  }
69
68
  };
70
69
 
71
- var setSubContainerRef = function setSubContainerRef(ele) {
72
- if (subContainerRef) {
73
- subContainerRef.current = ele;
74
- }
75
-
76
- getSubContainerRef && getSubContainerRef(ele);
77
- };
78
-
79
70
  if (!isAbsolutePositioningNeeded && size === 'default' && !isActive) {
80
71
  isAbsolute = true;
81
72
  }
@@ -141,7 +132,7 @@ function DropBoxElement(props) {
141
132
  "data-id": "".concat(dataId, "_subcontainer"),
142
133
  "data-test-id": "".concat(dataId, "_subcontainer"),
143
134
  "data-selector-id": "".concat(dataSelectorId, "_subcontainer"),
144
- ref: setSubContainerRef
135
+ ref: subContainerRef
145
136
  }, isModel ? /*#__PURE__*/_react["default"].createElement("div", {
146
137
  className: _DropBoxElementModule["default"].closeBar
147
138
  }) : null, isArrow && !isModel && /*#__PURE__*/_react["default"].createElement("div", {
@@ -13,13 +13,9 @@
13
13
 
14
14
  .subContainer {
15
15
  position: relative;
16
- display: flex;
17
- flex-direction: column;
18
- /* overflow: hidden; */
19
16
  border-radius: var(--dropbox_border_radius);
20
17
  padding: var(--dropbox_padding);
21
18
  box-shadow: var(--dropbox_box_shadow);
22
-
23
19
  }
24
20
 
25
21
  .defaultPalette,
@@ -434,8 +430,8 @@
434
430
  height: 6px;
435
431
  /*css:theme-validation:ignore*/
436
432
  width: 20% ;
437
- margin-block: 0 var(--zd_size10) ;
438
- margin-inline: auto ;
433
+ margin-block:0 var(--zd_size10) ;
434
+ margin-inline:auto ;
439
435
  border-radius: 5px;
440
436
  background-color: var(--dropbox_mob_close_bg_color);
441
437
  cursor: pointer;
@@ -447,4 +443,4 @@
447
443
 
448
444
  .darkPalette {
449
445
  --dropbox_bg_color: var(--zdt_dropbox_dark_bg);
450
- }
446
+ }
@@ -57,7 +57,6 @@ var DropBoxElementPropTypes = {
57
57
  positionsOffset: _propTypes["default"].object,
58
58
  targetOffset: _propTypes["default"].object,
59
59
  zIndexStyle: _propTypes["default"].object,
60
- subContainerRef: _propTypes["default"].func,
61
- getSubContainerRef: _propTypes["default"].func
60
+ subContainerRef: _propTypes["default"].func
62
61
  };
63
62
  exports.DropBoxElementPropTypes = DropBoxElementPropTypes;
@@ -110,7 +110,6 @@ var ResponsiveDropBox = /*#__PURE__*/function (_Component) {
110
110
  return /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
111
111
  alignBox: alignBox,
112
112
  isCover: false,
113
- flexible: true,
114
113
  className: "".concat(tabletMode ? _ResponsiveDropBoxModule["default"].dropBoxContainer : '', " ").concat(tabletMode && isResponsivePadding ? _ResponsiveDropBoxModule["default"].boxPadding : '', " ").concat(customResponsiveContainer)
115
114
  }, children);
116
115
  }));
@@ -860,7 +860,8 @@ var SelectComponent = /*#__PURE__*/function (_Component) {
860
860
  renderCustomSearchClearComponent = _this$props11.renderCustomSearchClearComponent,
861
861
  renderCustomSelectedValue = _this$props11.renderCustomSelectedValue,
862
862
  inputFieldLineA11y = _this$props11.inputFieldLineA11y,
863
- customClass = _this$props11.customClass;
863
+ customClass = _this$props11.customClass,
864
+ renderCustomDropBoxHeader = _this$props11.renderCustomDropBoxHeader;
864
865
  var _i18nKeys = i18nKeys,
865
866
  TextBoxIcon_i18n = _i18nKeys.TextBoxIcon_i18n,
866
867
  _i18nKeys$TextBox_all = _i18nKeys.TextBox_ally_label,
@@ -893,7 +894,9 @@ var SelectComponent = /*#__PURE__*/function (_Component) {
893
894
  var _customClass$dropBox = customClass.dropBox,
894
895
  dropBoxClass = _customClass$dropBox === void 0 ? '' : _customClass$dropBox,
895
896
  _customClass$cardCont = customClass.cardContent,
896
- cardContentClass = _customClass$cardCont === void 0 ? '' : _customClass$cardCont;
897
+ cardContentClass = _customClass$cardCont === void 0 ? '' : _customClass$cardCont,
898
+ _customClass$customDr = customClass.customDropBoxHeader,
899
+ customDropBoxHeaderClass = _customClass$customDr === void 0 ? '' : _customClass$customDr;
897
900
  var inputFieldLineA11yAttributes = this.getInputFieldLineA11y({
898
901
  setAriaId: setAriaId,
899
902
  isReadOnly: isReadOnly,
@@ -1065,80 +1068,91 @@ var SelectComponent = /*#__PURE__*/function (_Component) {
1065
1068
  isRestrictScroll: isRestrictScroll,
1066
1069
  portalId: dropBoxPortalId,
1067
1070
  customClass: {
1068
- customDropBox: dropBoxClass
1071
+ customDropBox: "".concat(dropBoxClass, " ").concat(renderCustomDropBoxHeader ? _SelectModule["default"].dropBoxWithCustomHeader : '')
1069
1072
  }
1070
- }, isLoading ? /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
1071
- align: "both",
1072
- className: _SelectModule["default"].loader
1073
- }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !getChildren ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
1074
- flexible: true
1075
- }, /*#__PURE__*/_react["default"].createElement(_Card["default"], {
1076
- onScroll: _this7.handleScroll
1077
- }, needSearch ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement("div", {
1078
- className: "".concat(_SelectModule["default"].search, " ").concat(_SelectModule["default"][size])
1079
- }, /*#__PURE__*/_react["default"].createElement(_TextBoxIcon["default"], {
1080
- a11y: {
1081
- ariaControls: setAriaId,
1082
- ariaAutocomplete: 'list',
1083
- ariaDescribedby: ariaErrorId
1084
- },
1085
- inputRef: _this7.searchInputRef,
1086
- maxLength: maxLength,
1087
- onChange: _this7.handleSearch,
1088
- onKeyDown: _this7.handleKeyDown,
1089
- placeHolder: searchBoxPlaceHolder,
1090
- size: searchBoxSize,
1091
- value: searchStr,
1092
- onClear: _this7.handleClearSearch,
1093
- dataId: "".concat(dataId, "_search"),
1094
- i18nKeys: TextBoxIcon_i18n,
1095
- autoComplete: autoComplete,
1096
- customProps: {
1097
- TextBoxProps: DropdownSearchTextBoxProps
1098
- },
1099
- renderCustomClearComponent: renderCustomSearchClearComponent
1100
- }))) : null, /*#__PURE__*/_react["default"].createElement(_Card.CardContent, {
1101
- shrink: true,
1102
- customClass: "\n ".concat(!tabletMode && dropBoxSize ? _SelectModule["default"][dropBoxSize] : '', " ").concat(cardContentClass),
1103
- eleRef: _this7.suggestionContainerRef
1104
- }, suggestions.length ? /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], _extends({
1105
- key: searchStr.trim(),
1106
- activeId: selectedId,
1107
- isVirtualizerEnabled: isVirtualizerEnabled,
1108
- getVirtualizerPublicMethods: _this7.getVirtualizerPublicMethods,
1109
- setVirtualizerContainerRefFunction: _this7.setSuggestionsVirtualizerContainerRefFunction,
1110
- suggestions: suggestions,
1111
- getRef: _this7.suggestionItemRef,
1112
- hoverOption: hoverIndex,
1113
- onClick: _this7.handleChange,
1114
- onMouseEnter: _this7.handleMouseEnter,
1115
- dataId: "".concat(dataId, "_Options"),
1116
- needTick: needTick,
1117
- needBorder: needListBorder,
1118
- selectedOptions: [selectedId],
1119
- className: "".concat(tabletMode ? _SelectModule["default"].responsivelistItemContainer : _SelectModule["default"].listItemContainer),
1120
- listItemSize: listItemSize,
1121
- htmlId: setAriaId,
1122
- a11y: {
1123
- ariaParentRole: 'listbox',
1124
- role: 'option'
1125
- }
1126
- }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
1127
- isLoading: isFetchingOptions,
1128
- options: options,
1129
- searchString: searchStr,
1130
- suggestions: suggestions,
1131
- dataId: dataId,
1132
- renderCustomEmptyState: renderCustomEmptyState,
1133
- getCustomEmptyState: getCustomEmptyState ? _this7.handleGetAddNewOptionText : null,
1134
- i18nKeys: i18nKeys,
1135
- htmlId: ariaErrorId
1136
- }), isFetchingOptions && /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
1137
- isCover: false,
1138
- align: "both"
1139
- }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null))), getFooter ? /*#__PURE__*/_react["default"].createElement(_Card.CardFooter, null, getFooter()) : null)) : /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
1140
- flexible: true
1141
- }, getChildren())));
1073
+ }, function () {
1074
+ var dropdownContent = isLoading ? /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
1075
+ align: "both",
1076
+ className: _SelectModule["default"].loader
1077
+ }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !getChildren ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
1078
+ flexible: true
1079
+ }, /*#__PURE__*/_react["default"].createElement(_Card["default"], {
1080
+ onScroll: _this7.handleScroll
1081
+ }, needSearch ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement("div", {
1082
+ className: "".concat(_SelectModule["default"].search, " ").concat(_SelectModule["default"][size])
1083
+ }, /*#__PURE__*/_react["default"].createElement(_TextBoxIcon["default"], {
1084
+ a11y: {
1085
+ ariaControls: setAriaId,
1086
+ ariaAutocomplete: 'list',
1087
+ ariaDescribedby: ariaErrorId
1088
+ },
1089
+ inputRef: _this7.searchInputRef,
1090
+ maxLength: maxLength,
1091
+ onChange: _this7.handleSearch,
1092
+ onKeyDown: _this7.handleKeyDown,
1093
+ placeHolder: searchBoxPlaceHolder,
1094
+ size: searchBoxSize,
1095
+ value: searchStr,
1096
+ onClear: _this7.handleClearSearch,
1097
+ dataId: "".concat(dataId, "_search"),
1098
+ i18nKeys: TextBoxIcon_i18n,
1099
+ autoComplete: autoComplete,
1100
+ customProps: {
1101
+ TextBoxProps: DropdownSearchTextBoxProps
1102
+ },
1103
+ renderCustomClearComponent: renderCustomSearchClearComponent
1104
+ }))) : null, /*#__PURE__*/_react["default"].createElement(_Card.CardContent, {
1105
+ shrink: true,
1106
+ customClass: "\n ".concat(!tabletMode && dropBoxSize ? _SelectModule["default"][dropBoxSize] : '', " ").concat(cardContentClass),
1107
+ eleRef: _this7.suggestionContainerRef
1108
+ }, suggestions.length ? /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], _extends({
1109
+ key: searchStr.trim(),
1110
+ activeId: selectedId,
1111
+ isVirtualizerEnabled: isVirtualizerEnabled,
1112
+ getVirtualizerPublicMethods: _this7.getVirtualizerPublicMethods,
1113
+ setVirtualizerContainerRefFunction: _this7.setSuggestionsVirtualizerContainerRefFunction,
1114
+ suggestions: suggestions,
1115
+ getRef: _this7.suggestionItemRef,
1116
+ hoverOption: hoverIndex,
1117
+ onClick: _this7.handleChange,
1118
+ onMouseEnter: _this7.handleMouseEnter,
1119
+ dataId: "".concat(dataId, "_Options"),
1120
+ needTick: needTick,
1121
+ needBorder: needListBorder,
1122
+ selectedOptions: [selectedId],
1123
+ className: "".concat(tabletMode ? _SelectModule["default"].responsivelistItemContainer : _SelectModule["default"].listItemContainer),
1124
+ listItemSize: listItemSize,
1125
+ htmlId: setAriaId,
1126
+ a11y: {
1127
+ ariaParentRole: 'listbox',
1128
+ role: 'option'
1129
+ }
1130
+ }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
1131
+ isLoading: isFetchingOptions,
1132
+ options: options,
1133
+ searchString: searchStr,
1134
+ suggestions: suggestions,
1135
+ dataId: dataId,
1136
+ renderCustomEmptyState: renderCustomEmptyState,
1137
+ getCustomEmptyState: getCustomEmptyState ? _this7.handleGetAddNewOptionText : null,
1138
+ i18nKeys: i18nKeys,
1139
+ htmlId: ariaErrorId
1140
+ }), isFetchingOptions && /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
1141
+ isCover: false,
1142
+ align: "both"
1143
+ }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null))), getFooter ? /*#__PURE__*/_react["default"].createElement(_Card.CardFooter, null, getFooter()) : null)) : /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
1144
+ flexible: true
1145
+ }, getChildren()));
1146
+ return renderCustomDropBoxHeader ? /*#__PURE__*/_react["default"].createElement("div", {
1147
+ className: _SelectModule["default"].dropBoxListContainer
1148
+ }, /*#__PURE__*/_react["default"].createElement("div", {
1149
+ className: "".concat(customDropBoxHeaderClass, " ").concat(_SelectModule["default"].customDropBoxHeaderContainer)
1150
+ }, (0, _utils.renderNode)(renderCustomDropBoxHeader, {
1151
+ closePopup: _this7.handlePopupClose
1152
+ })), /*#__PURE__*/_react["default"].createElement("div", {
1153
+ className: _SelectModule["default"].dropdownOptions
1154
+ }, dropdownContent)) : dropdownContent;
1155
+ }());
1142
1156
  }) : null);
1143
1157
  }
1144
1158
  }]);
@@ -22,12 +22,12 @@
22
22
 
23
23
  .box_small .emptyState {
24
24
  padding-block: var(--zd_size12) ;
25
- padding-inline:var(--zd_size6) ;
25
+ padding-inline: var(--zd_size6) ;
26
26
  }
27
27
 
28
28
  .box_medium .emptyState {
29
29
  padding-block: var(--zd_size12) ;
30
- padding-inline:var(--zd_size15) ;
30
+ padding-inline: var(--zd_size15) ;
31
31
  }
32
32
 
33
33
  .hide {
@@ -45,12 +45,12 @@
45
45
 
46
46
  .small.search {
47
47
  padding-block: 0 ;
48
- padding-inline:var(--zd_size5) ;
48
+ padding-inline: var(--zd_size5) ;
49
49
  }
50
50
 
51
51
  .medium.search {
52
52
  padding-block: var(--zd_size3) 0 ;
53
- padding-inline:var(--zd_size20) ;
53
+ padding-inline: var(--zd_size20) ;
54
54
  }
55
55
 
56
56
  .title {
@@ -59,17 +59,17 @@
59
59
 
60
60
  .groupTitle {
61
61
  margin-block: var(--zd_size6) ;
62
- margin-inline:0 ;
62
+ margin-inline: 0 ;
63
63
  }
64
64
 
65
65
  .listItemContainer {
66
66
  padding-block: var(--zd_size10) ;
67
- padding-inline:0 ;
67
+ padding-inline: 0 ;
68
68
  }
69
69
 
70
70
  .responsivelistItemContainer {
71
71
  padding-block: var(--zd_size10) 0 ;
72
- padding-inline:0 ;
72
+ padding-inline: 0 ;
73
73
  }
74
74
 
75
75
  .readonly {
@@ -111,18 +111,19 @@
111
111
 
112
112
  .dropBoxList {
113
113
  padding-block: var(--zd_size10) ;
114
- padding-inline:0 ;
114
+ padding-inline: 0 ;
115
115
  }
116
116
 
117
117
  .responsivedropBoxList {
118
118
  padding-block: var(--zd_size10) 0 ;
119
- padding-inline:0 ;
119
+ padding-inline: 0 ;
120
120
  }
121
121
 
122
122
  .rotate {
123
123
  transform: rotateX(180deg);
124
124
  }
125
- .rightPlaceholder{
125
+
126
+ .rightPlaceholder {
126
127
  height: 100% ;
127
128
  }
128
129
 
@@ -141,3 +142,29 @@
141
142
  .loader {
142
143
  padding: var(--zd_size10) ;
143
144
  }
145
+
146
+ .dropBoxWithCustomHeader {
147
+ border-radius: 7px;
148
+ }
149
+
150
+ .dropBoxListContainer {
151
+ width: 100% ;
152
+ border-radius: 7px;
153
+ padding: var(--zd_size10) ;
154
+ border: 1px solid var(--zdt_statusdropdown_wrapper_container_border);
155
+ background: var(--zdt_statusdropdown_wrapper_container_bg);
156
+ box-shadow: var(--zd_bs_statusdropdown_wrapper_container);
157
+ }
158
+
159
+ .dropdownOptions {
160
+ padding-inline: var(--zd_size1) ;
161
+ padding-block: var(--zd_size1) ;
162
+ background-color: var(--zdt_statusdropdown_wrapper_dropdown_bg);
163
+ border: 1px solid var(--zdt_statusdropdown_wrapper_container_border);
164
+ border-radius: 7px;
165
+ }
166
+
167
+ .customDropBoxHeaderContainer {
168
+ margin-block-end: var(--zd_size6) ;
169
+ margin-inline: var(--zd_size1) ;
170
+ }
@@ -50,7 +50,8 @@ var Select_defaultProps = {
50
50
  isAbsolutePositioningNeeded: true,
51
51
  allowValueFallback: true,
52
52
  inputFieldLineA11y: {},
53
- customClass: {}
53
+ customClass: {},
54
+ renderCustomDropBoxHeader: null
54
55
  };
55
56
  exports.Select_defaultProps = Select_defaultProps;
56
57
  var GroupSelect_defaultProps = {
@@ -123,8 +123,10 @@ var Select_propTypes = {
123
123
  inputFieldLineA11y: _propTypes["default"].object,
124
124
  customClass: _propTypes["default"].shape({
125
125
  dropBox: _propTypes["default"].string,
126
- cardContent: _propTypes["default"].string
127
- })
126
+ cardContent: _propTypes["default"].string,
127
+ customDropBoxHeader: _propTypes["default"].string
128
+ }),
129
+ renderCustomDropBoxHeader: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].node])
128
130
  };
129
131
  exports.Select_propTypes = Select_propTypes;
130
132
  var GroupSelect_propTypes = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/components",
3
- "version": "1.0.0-temp-253",
3
+ "version": "1.0.0-temp-252.1",
4
4
  "main": "es/index.js",
5
5
  "module": "es/index.js",
6
6
  "private": false,
@@ -22,7 +22,7 @@
22
22
  "lintAllFix": "npm run lintAll --eslint:fix=true",
23
23
  "lint": "npx eslint ./src",
24
24
  "clean": "react-cli clean build unittest coverage es lib assets && mkdir assets",
25
- "dubCheck": "node ./node_modules/@zohodesk-private/node-plugins/es/dublication_css_file_finder node_modules/@zohodesk/icons/es node_modules/@zohodesk/variables/es ../dot/src ../internal/desk-components/src",
25
+ "dubCheck": "npx z-node-plugins dub:check node_modules/@zohodesk/icons/es node_modules/@zohodesk/variables/es ../dot/src ../internal/desk-components/src",
26
26
  "init": "npm run clean && cd ../assets && npm run componentsassets && cd ../components",
27
27
  "common_package_build": "cd ../common && npm run build && cd ../components",
28
28
  "build:lib": "cbt build:lib src,assets lib,assets",
@@ -33,7 +33,7 @@
33
33
  "build:watch": "npm run build:es:watch --module:mode=dev -- -w",
34
34
  "coverage": "react-cli coverage",
35
35
  "prepare": "npm run init && npm run css:build ",
36
- "prepublishOnly": "node ../prePublish.js && npm run css:review && npm run review:props ",
36
+ "prepublishOnly": "node ../prePublish.js && npm run css:review",
37
37
  "postpublish": "node ../postPublish.js",
38
38
  "report": "react-cli publish:report",
39
39
  "test": "react-cli test",
@@ -45,22 +45,22 @@
45
45
  "download": "npm run download_only && cd ../ && npm run download",
46
46
  "download_only": "react-cli clean ./node_modules ./package-lock.json && npm install --legacy-peer-deps",
47
47
  "expublish": "node ../publish.js -- exp",
48
- "css:lineheight:validate": "node ./node_modules/@zohodesk-private/node-plugins/es/lineheight_automation/lineHeightErrorCheck.js ./src/",
48
+ "css:lineheight:validate": "npx z-node-plugins lineheight:errorcheck ./src/",
49
49
  "variable:addignore": "node ./node_modules/@zohodesk-private/css-variable-migrator/es/variableIgnore.js ./src",
50
50
  "variable:convert": "node ./node_modules/@zohodesk-private/css-variable-migrator/es/pxParserPostcss.js ./src",
51
51
  "variable:check": "node ./node_modules/@zohodesk-private/css-variable-migrator/es/variableErrorCheck.js ./src ./node_modules/@zohodesk-private/css-variable-migrator/es/config/cssVariableReplacementOptions.json",
52
52
  "css:review": " npm run dubCheck && npm run css:lineheight:validate && npm run theme:validate ",
53
- "theme:validate": "node ./node_modules/@zohodesk-private/node-plugins/es/appearance_theme_validation validate ./src ./.cli ./.cli/themeValidate/stringContains.js",
54
- "theme:addignore": "node ./node_modules/@zohodesk-private/node-plugins/es/appearance_theme_validation addignore ./src ./.cli ./.cli/themeValidate/stringContains.js",
55
- "theme:removeignore": "node ./node_modules/@zohodesk-private/node-plugins/es/appearance_theme_validation removeignore ./src ./.cli",
53
+ "theme:validate": "npx z-node-plugins theme:validate ./src ./.cli ./.cli/themeValidate/stringContains.js",
54
+ "theme:addignore": "npx z-node-plugins theme:addignore ./src ./.cli ./.cli/themeValidate/stringContains.js",
55
+ "theme:removeignore": "npx z-node-plugins theme:removeignore ./src ./.cli",
56
56
  "review:props": "node ./node_modules/@zohodesk-private/react-prop-validator/es/propValidation.js propValidationArg.json ",
57
- "css:layer_config_generate": "node ./node_modules/@zohodesk-private/node-plugins/es/css_layer_generator/scan_css_generate_json.js ./src ./assets css_layer_config.json",
58
- "css:layer_wrap_es": "node ./node_modules/@zohodesk-private/node-plugins/es/css_layer_generator/write_layer_in_css.js ./es ./assets css_layer_config.json --rewrite=src=es --rewrite=assets=assets --skip-existing-layer",
59
- "css:layer_wrap_lib": "node ./node_modules/@zohodesk-private/node-plugins/es/css_layer_generator/write_layer_in_css.js ./lib ./assets css_layer_config.json --rewrite=src=lib --rewrite=assets=assets --skip-existing-layer",
60
- "css:layer_generate_order": "node ./node_modules/@zohodesk-private/node-plugins/es/css_layer_generator/generate_layer_order.js css_layer_config.json ./src/components_layer.module.css",
61
- "css:layer_config_validate": "node ./node_modules/@zohodesk-private/node-plugins/es/css_layer_generator/validate.js css_layer_config.json ./src/ ./assets",
57
+ "css:layer_config_generate": "npx z-node-plugins css:scan ./src ./assets css_layer_config.json",
58
+ "css:layer_wrap_es": "npx z-node-plugins css:layer_wrap ./es ./assets css_layer_config.json --rewrite=src=es --rewrite=assets=assets --skip-existing-layer",
59
+ "css:layer_wrap_lib": "npx z-node-plugins css:layer_wrap ./lib ./assets css_layer_config.json --rewrite=src=lib --rewrite=assets=assets --skip-existing-layer",
60
+ "css:layer_generate_order": "npx z-node-plugins css:layer_order css_layer_config.json ./src/components_layer.module.css",
61
+ "css:layer_config_validate": "npx z-node-plugins css:layer_validate css_layer_config.json ./src/ ./assets",
62
62
  "css:build": "npm run css:layer_config_validate && npm run css:layer_generate_order && npm run build",
63
- "css:layer_remove": "node ./node_modules/@zohodesk-private/node-plugins/es/css_layer_generator/remove_layer.js ./es ./assets css_layer_config.json --rewrite=src=es --rewrite=assets=assets",
63
+ "css:layer_remove": "npx z-node-plugins css:layer_remove ./es ./assets css_layer_config.json --rewrite=src=es --rewrite=assets=assets",
64
64
  "css:audit": "npx css-audit --common-css=common/common.module.css --dir src --port 8085 --report ",
65
65
  "cssVariableConvert": "react-cli variableConverter ./lib ./lib && react-cli variableConverter ./es ./es",
66
66
  "publish": "node ../publish.js",
@@ -75,13 +75,13 @@
75
75
  "@zohodesk-private/css-audit-tool": "0.0.2",
76
76
  "@zohodesk-private/color-variable-preprocessor": "1.3.1",
77
77
  "@zohodesk-private/css-variable-migrator": "1.0.9",
78
- "@zohodesk-private/node-plugins": "1.1.13",
78
+ "@zohodesk-private/node-plugins": "1.1.14",
79
79
  "@zohodesk-private/react-prop-validator": "1.2.3",
80
80
  "@zohodesk/a11y": "2.3.9",
81
81
  "@zohodesk/docstool": "1.0.0-alpha-2",
82
82
  "@zohodesk/dotkit": "1.0.9",
83
83
  "@zohodesk/hooks": "2.0.8",
84
- "@zohodesk/icons": "1.2.8",
84
+ "@zohodesk/icons": "1.3.1",
85
85
  "@zohodesk/layout": "3.1.0",
86
86
  "@zohodesk/svg": "1.3.5",
87
87
  "@zohodesk/utils": "1.3.16",
@@ -91,7 +91,8 @@
91
91
  "velocity-react": "1.4.3",
92
92
  "@zohodesk/react-cli": "1.1.27",
93
93
  "@zohodesk/client_build_tool": "0.0.20",
94
- "color": "4.2.3"
94
+ "color": "4.2.3",
95
+ "@dot-system/css-utility": "0.1.1"
95
96
  },
96
97
  "dependencies": {
97
98
  "hoist-non-react-statics": "3.0.1",
@@ -100,7 +101,7 @@
100
101
  "selectn": "1.1.2"
101
102
  },
102
103
  "peerDependencies": {
103
- "@zohodesk/icons": "1.2.8",
104
+ "@zohodesk/icons": "1.3.1",
104
105
  "@zohodesk/variables": "1.3.1",
105
106
  "@zohodesk/svg": "1.3.5",
106
107
  "@zohodesk/virtualizer": "1.0.13",
@@ -111,6 +112,7 @@
111
112
  "@zohodesk/a11y": "2.3.9",
112
113
  "@zohodesk/layout": "3.1.0",
113
114
  "@zohodesk/dotkit": "1.0.9",
114
- "color": "4.2.3"
115
+ "color": "4.2.3",
116
+ "@dot-system/css-utility": "0.1.1"
115
117
  }
116
118
  }