@zohodesk/dot 1.9.15 → 1.9.16

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 (62) hide show
  1. package/README.md +16 -0
  2. package/es/Drawer/Drawer.js +5 -1
  3. package/es/Drawer/props/propTypes.js +2 -0
  4. package/es/FormAction/FormAction.js +18 -5
  5. package/es/FormAction/__tests__/FormAction.spec.js +97 -3
  6. package/es/FormAction/__tests__/__snapshots__/FormAction.spec.js.snap +536 -1
  7. package/es/FormAction/props/propTypes.js +2 -0
  8. package/es/lookup/Lookup/Lookup.js +47 -18
  9. package/es/lookup/Lookup/Lookup.module.css +19 -0
  10. package/es/lookup/Lookup/__tests__/Lookup.spec.js +120 -4
  11. package/es/lookup/Lookup/__tests__/__snapshots__/Lookup.spec.js.snap +284 -2
  12. package/es/lookup/Lookup/props/defaultProps.js +3 -2
  13. package/es/lookup/Lookup/props/propTypes.js +12 -2
  14. package/es/lookup/Section/Section.js +14 -5
  15. package/es/lookup/Section/__tests__/Section.spec.js +41 -2
  16. package/es/lookup/Section/__tests__/__snapshots__/Section.spec.js.snap +131 -1
  17. package/es/lookup/Section/props/defaultProps.js +4 -0
  18. package/es/lookup/Section/props/propTypes.js +5 -0
  19. package/es/lookup/header/ModuleHeader/ModuleHeader.js +47 -18
  20. package/es/lookup/header/ModuleHeader/__tests__/ModuleHeader.spec.js +172 -3
  21. package/es/lookup/header/ModuleHeader/__tests__/__snapshots__/ModuleHeader.spec.js.snap +779 -3
  22. package/es/lookup/header/ModuleHeader/props/defaultProps.js +4 -0
  23. package/es/lookup/header/ModuleHeader/props/propTypes.js +21 -1
  24. package/es/lookup/header/Title/Title.js +3 -1
  25. package/es/lookup/header/Title/props/propTypes.js +1 -0
  26. package/es/version2/lookup/AlertHeader/AlertHeader.js +16 -7
  27. package/es/version2/lookup/AlertHeader/__tests__/AlertHeader.spec.js +114 -3
  28. package/es/version2/lookup/AlertHeader/__tests__/__snapshots__/AlertHeader.spec.js.snap +1695 -8
  29. package/es/version2/lookup/AlertHeader/css/cssJSLogic.js +8 -3
  30. package/es/version2/lookup/AlertHeader/props/defaultProps.js +3 -0
  31. package/es/version2/lookup/AlertHeader/props/propTypes.js +9 -0
  32. package/lib/Drawer/Drawer.js +5 -1
  33. package/lib/Drawer/props/propTypes.js +2 -0
  34. package/lib/FormAction/FormAction.js +18 -5
  35. package/lib/FormAction/__tests__/FormAction.spec.js +102 -2
  36. package/lib/FormAction/__tests__/__snapshots__/FormAction.spec.js.snap +536 -1
  37. package/lib/FormAction/props/propTypes.js +2 -0
  38. package/lib/lookup/Lookup/Lookup.js +50 -18
  39. package/lib/lookup/Lookup/Lookup.module.css +19 -0
  40. package/lib/lookup/Lookup/__tests__/Lookup.spec.js +120 -4
  41. package/lib/lookup/Lookup/__tests__/__snapshots__/Lookup.spec.js.snap +284 -2
  42. package/lib/lookup/Lookup/props/defaultProps.js +3 -2
  43. package/lib/lookup/Lookup/props/propTypes.js +15 -2
  44. package/lib/lookup/Section/Section.js +13 -5
  45. package/lib/lookup/Section/__tests__/Section.spec.js +40 -1
  46. package/lib/lookup/Section/__tests__/__snapshots__/Section.spec.js.snap +131 -1
  47. package/lib/lookup/Section/props/defaultProps.js +13 -0
  48. package/lib/lookup/Section/props/propTypes.js +6 -0
  49. package/lib/lookup/header/ModuleHeader/ModuleHeader.js +46 -24
  50. package/lib/lookup/header/ModuleHeader/__tests__/ModuleHeader.spec.js +177 -2
  51. package/lib/lookup/header/ModuleHeader/__tests__/__snapshots__/ModuleHeader.spec.js.snap +779 -3
  52. package/lib/lookup/header/ModuleHeader/props/defaultProps.js +6 -0
  53. package/lib/lookup/header/ModuleHeader/props/propTypes.js +25 -1
  54. package/lib/lookup/header/Title/Title.js +3 -1
  55. package/lib/lookup/header/Title/props/propTypes.js +1 -0
  56. package/lib/version2/lookup/AlertHeader/AlertHeader.js +18 -8
  57. package/lib/version2/lookup/AlertHeader/__tests__/AlertHeader.spec.js +113 -2
  58. package/lib/version2/lookup/AlertHeader/__tests__/__snapshots__/AlertHeader.spec.js.snap +1695 -8
  59. package/lib/version2/lookup/AlertHeader/css/cssJSLogic.js +7 -3
  60. package/lib/version2/lookup/AlertHeader/props/defaultProps.js +5 -0
  61. package/lib/version2/lookup/AlertHeader/props/propTypes.js +9 -0
  62. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ import { DUMMY_OBJECT } from "@zohodesk/dotkit/es/utils/constants";
2
+ export const defaultProps = {
3
+ customProps: DUMMY_OBJECT
4
+ };
@@ -1,6 +1,11 @@
1
1
  import PropTypes from 'prop-types';
2
+ import { BoxProps as BoxPropTypes, ContainerProps as ContainerPropTypes } from '@zohodesk/components/es/Layout/props/propTypes';
2
3
  export const propTypes = {
3
4
  alignBox: PropTypes.string,
4
5
  children: PropTypes.node,
6
+ customProps: PropTypes.shape({
7
+ container: PropTypes.exact(ContainerPropTypes),
8
+ wrapper: PropTypes.exact(BoxPropTypes)
9
+ }),
5
10
  className: PropTypes.string
6
11
  };
@@ -1,3 +1,5 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
1
3
  /*** Libraries ***/
2
4
  import React, { memo, useRef } from 'react';
3
5
  import { defaultProps } from "./props/defaultProps";
@@ -14,6 +16,7 @@ import commonStyle from "../lookupHeaderCommon.module.css";
14
16
  import commonResponsive from "../lookupHeaderCommonResponsive.module.css"; //customHooks
15
17
 
16
18
  import useDragger from "../../../Hooks/Dragger/useDragger";
19
+ import renderNode from '@zohodesk/utils/es/renderNode';
17
20
  /*eslint-disable react/forbid-component-props */
18
21
 
19
22
  function ModuleHeader(props) {
@@ -27,58 +30,84 @@ function ModuleHeader(props) {
27
30
  searchPlaceHolder,
28
31
  needOnTypeSearch,
29
32
  getSearchBoxRef,
33
+ renderTitleChildren,
34
+ renderSecondaryContent,
30
35
  miniDescription,
36
+ htmlId,
31
37
  dataId,
32
38
  closeTitle,
33
39
  onSearchKeyDown,
34
40
  palette,
41
+ isDraggable,
35
42
  dragBoundaryLimit,
36
43
  children,
44
+ customClass,
45
+ customProps,
37
46
  childNearTitle
38
47
  } = props;
39
48
  const dragRef = useRef(null); //dragRef
40
49
 
41
50
  useDragger({
42
- isActive: true,
51
+ isActive: isDraggable,
43
52
  ChildRef: dragRef,
44
53
  boundaryLimit: dragBoundaryLimit
45
54
  }); //custom Hook
46
55
 
47
- return /*#__PURE__*/React.createElement(Container, {
56
+ const {
57
+ container: customContainerClass = '',
58
+ title: customTitleClass = '',
59
+ close: customCloseClass = ''
60
+ } = customClass;
61
+ const {
62
+ container: customContainerProps,
63
+ titleWrapper: customTitleWrapperProps,
64
+ title: customTitleProps,
65
+ search: customSearchProps,
66
+ close: customCloseProps
67
+ } = customProps;
68
+ return /*#__PURE__*/React.createElement(Container, _extends({
48
69
  align: "vertical",
49
70
  alignBox: "row",
50
- className: `${commonStyle.container} ${commonStyle[`${palette}`]}`,
51
71
  isCover: false,
52
- wrap: "wrap",
72
+ wrap: "wrap"
73
+ }, customContainerProps, {
74
+ className: `${commonStyle.container} ${commonStyle[`${palette}`]} ${customContainerClass}`,
53
75
  dataId: dataId,
54
- "data-drag-hook": "true",
76
+ "data-drag-hook": isDraggable ? 'true' : 'false',
55
77
  eleRef: dragRef
56
- }, childNearTitle ? childNearTitle : '', /*#__PURE__*/React.createElement(Box, {
78
+ }), childNearTitle ? childNearTitle : '', /*#__PURE__*/React.createElement(Box, {
57
79
  flexible: true
58
- }, /*#__PURE__*/React.createElement("div", {
59
- className: commonStyle.title
60
- }, /*#__PURE__*/React.createElement(Title, {
61
- text: title
62
- })), miniDescription && /*#__PURE__*/React.createElement("div", {
80
+ }, /*#__PURE__*/React.createElement(Container, _extends({
81
+ isCover: false,
82
+ alignBox: "row",
83
+ align: "vertical"
84
+ }, customTitleWrapperProps, {
85
+ className: `${commonStyle.title} ${customTitleClass}`
86
+ }), /*#__PURE__*/React.createElement(Title, _extends({}, customTitleProps, {
87
+ text: title,
88
+ htmlId: htmlId
89
+ })), renderNode(renderTitleChildren)), renderNode(renderSecondaryContent), miniDescription && /*#__PURE__*/React.createElement("div", {
63
90
  className: commonStyle.para
64
91
  }, miniDescription)), needSearch && /*#__PURE__*/React.createElement(Box, {
65
92
  className: `${commonStyle.searchContainer} ${commonResponsive.searchContainer}`
66
- }, /*#__PURE__*/React.createElement(Search, {
93
+ }, /*#__PURE__*/React.createElement(Search, _extends({
94
+ dataId: "search"
95
+ }, customSearchProps, {
67
96
  onSearch: onSearch,
68
97
  searchStr: searchStr,
69
98
  onChange: onSearchChange,
70
99
  placeHolder: searchPlaceHolder,
71
- dataId: "search",
72
100
  needOnTypeSearch: needOnTypeSearch,
73
101
  getRef: getSearchBoxRef,
74
102
  onKeyDown: onSearchKeyDown
75
- })), children ? children : '', onLookupClose ? /*#__PURE__*/React.createElement("div", {
76
- className: commonStyle.closeContainer
77
- }, /*#__PURE__*/React.createElement(Close, {
78
- dataId: "close",
103
+ }))), children ? children : '', onLookupClose ? /*#__PURE__*/React.createElement("div", {
104
+ className: `${commonStyle.closeContainer} ${customCloseClass}`
105
+ }, /*#__PURE__*/React.createElement(Close, _extends({
106
+ dataId: "close"
107
+ }, customCloseProps, {
79
108
  onClose: onLookupClose,
80
109
  title: closeTitle
81
- })) : null);
110
+ }))) : null);
82
111
  }
83
112
 
84
113
  ModuleHeader.propTypes = propTypes;
@@ -1,11 +1,180 @@
1
1
  import React from 'react';
2
- import { render } from '@testing-library/react';
2
+ import { render, cleanup } from '@testing-library/react';
3
3
  import ModuleHeader from "../ModuleHeader";
4
- describe('ModuleHeader', () => {
5
- test('rendering the defult props', () => {
4
+ const PALETTE_VALUES = ['default', 'white'];
5
+ afterEach(() => {
6
+ cleanup();
7
+ });
8
+ describe('ModuleHeader snapshot - ', () => {
9
+ test('Render with default props', () => {
6
10
  const {
7
11
  asFragment
8
12
  } = render( /*#__PURE__*/React.createElement(ModuleHeader, null));
9
13
  expect(asFragment()).toMatchSnapshot();
10
14
  });
15
+ test.each(PALETTE_VALUES)('Render with palette=%s', palette => {
16
+ const {
17
+ asFragment
18
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
19
+ palette: palette
20
+ }));
21
+ expect(asFragment()).toMatchSnapshot();
22
+ });
23
+ test('Render with needSearch=true', () => {
24
+ const {
25
+ asFragment
26
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
27
+ needSearch: true
28
+ }));
29
+ expect(asFragment()).toMatchSnapshot();
30
+ });
31
+ test('Render with isDraggable=false', () => {
32
+ const {
33
+ asFragment
34
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
35
+ isDraggable: false
36
+ }));
37
+ expect(asFragment()).toMatchSnapshot();
38
+ });
39
+ test('Render with onLookupClose', () => {
40
+ const {
41
+ asFragment
42
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
43
+ onLookupClose: jest.fn()
44
+ }));
45
+ expect(asFragment()).toMatchSnapshot();
46
+ });
47
+ test('Render with miniDescription', () => {
48
+ const {
49
+ asFragment
50
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
51
+ miniDescription: "A brief description"
52
+ }));
53
+ expect(asFragment()).toMatchSnapshot();
54
+ });
55
+ test('Render with customClass', () => {
56
+ const {
57
+ asFragment
58
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
59
+ onLookupClose: jest.fn(),
60
+ title: "Header Title",
61
+ customClass: {
62
+ container: 'custom-container',
63
+ title: 'custom-title',
64
+ close: 'custom-close'
65
+ }
66
+ }));
67
+ expect(asFragment()).toMatchSnapshot();
68
+ });
69
+ test('Render with children', () => {
70
+ const {
71
+ asFragment
72
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
73
+ title: "Header Title"
74
+ }, /*#__PURE__*/React.createElement("div", null, "Child content")));
75
+ expect(asFragment()).toMatchSnapshot();
76
+ });
77
+ test('Render with childNearTitle', () => {
78
+ const {
79
+ asFragment
80
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
81
+ title: "Header Title",
82
+ childNearTitle: /*#__PURE__*/React.createElement("span", null, "Near title")
83
+ }));
84
+ expect(asFragment()).toMatchSnapshot();
85
+ });
86
+ test('Render with htmlId', () => {
87
+ const {
88
+ asFragment
89
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
90
+ title: "Header Title",
91
+ htmlId: "module-header-htmlId"
92
+ }));
93
+ expect(asFragment()).toMatchSnapshot();
94
+ });
95
+ test('Render with dataId', () => {
96
+ const {
97
+ asFragment
98
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
99
+ title: "Header Title",
100
+ dataId: "module-header-dataId"
101
+ }));
102
+ expect(asFragment()).toMatchSnapshot();
103
+ });
104
+ test('Render with renderTitleChildren as function', () => {
105
+ const {
106
+ asFragment
107
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
108
+ title: "Header Title",
109
+ renderTitleChildren: () => /*#__PURE__*/React.createElement("span", null, "Title Child")
110
+ }));
111
+ expect(asFragment()).toMatchSnapshot();
112
+ });
113
+ test('Render with renderTitleChildren as element', () => {
114
+ const {
115
+ asFragment
116
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
117
+ title: "Header Title",
118
+ renderTitleChildren: /*#__PURE__*/React.createElement("span", null, "Title Child Element")
119
+ }));
120
+ expect(asFragment()).toMatchSnapshot();
121
+ });
122
+ test('Render with renderSecondaryContent as function', () => {
123
+ const {
124
+ asFragment
125
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
126
+ title: "Header Title",
127
+ renderSecondaryContent: () => /*#__PURE__*/React.createElement("div", null, "Secondary Content")
128
+ }));
129
+ expect(asFragment()).toMatchSnapshot();
130
+ });
131
+ test('Render with renderSecondaryContent as element', () => {
132
+ const {
133
+ asFragment
134
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
135
+ title: "Header Title",
136
+ renderSecondaryContent: /*#__PURE__*/React.createElement("div", null, "Secondary Element")
137
+ }));
138
+ expect(asFragment()).toMatchSnapshot();
139
+ });
140
+ test('Render with renderSecondaryContent should not override miniDescription', () => {
141
+ const {
142
+ asFragment
143
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
144
+ title: "Header Title",
145
+ miniDescription: "Should appear",
146
+ renderSecondaryContent: () => /*#__PURE__*/React.createElement("div", null, "Overridden Content")
147
+ }));
148
+ expect(asFragment()).toMatchSnapshot();
149
+ });
150
+ test('Render with customProps for sub-components', () => {
151
+ const {
152
+ asFragment
153
+ } = render( /*#__PURE__*/React.createElement(ModuleHeader, {
154
+ title: "Header Title",
155
+ needSearch: true,
156
+ onLookupClose: jest.fn(),
157
+ renderTitleChildren: /*#__PURE__*/React.createElement("span", null, "Extra"),
158
+ customProps: {
159
+ container: {
160
+ wrap: 'nowrap'
161
+ },
162
+ titleWrapper: {
163
+ dataId: 'custom-titleWrapper'
164
+ },
165
+ title: {
166
+ isBold: true,
167
+ palette: 'primary'
168
+ },
169
+ search: {
170
+ isBoxed: true,
171
+ isSearchIconNeed: true
172
+ },
173
+ close: {
174
+ dataId: 'custom-close'
175
+ }
176
+ }
177
+ }));
178
+ expect(asFragment()).toMatchSnapshot();
179
+ });
11
180
  });