@zohodesk/components 1.6.25 → 1.6.27

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 (218) hide show
  1. package/CHANGELOG.md +2046 -0
  2. package/README.md +16 -2031
  3. package/assets/Appearance/dark/mode/Component_v1_DarkMode.module.css +5 -20
  4. package/assets/Appearance/light/mode/Component_v1_LightMode.module.css +5 -20
  5. package/assets/Appearance/pureDark/mode/Component_v1_PureDarkMode.module.css +5 -20
  6. package/es/Accordion/Accordion.js +1 -6
  7. package/es/Accordion/AccordionItem.js +1 -6
  8. package/es/Animation/Animation.js +1 -8
  9. package/es/AppContainer/AppContainer.js +1 -6
  10. package/es/AppContainer/__tests__/__snapshots__/AppContainer.spec.js.snap +16 -16
  11. package/es/Avatar/Avatar.js +1 -6
  12. package/es/AvatarTeam/AvatarTeam.js +1 -7
  13. package/es/Button/Button.js +1 -6
  14. package/es/Buttongroup/Buttongroup.js +1 -14
  15. package/es/Card/Card.js +1 -9
  16. package/es/Card/__tests__/__snapshots__/Card.spec.js.snap +17 -17
  17. package/es/Card/__tests__/__snapshots__/CardContent.spec.js.snap +12 -12
  18. package/es/Card/__tests__/__snapshots__/CardHeader.spec.js.snap +4 -4
  19. package/es/CheckBox/CheckBox.js +1 -6
  20. package/es/CheckBox/__tests__/__snapshots__/CheckBox.spec.js.snap +88 -88
  21. package/es/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +48 -48
  22. package/es/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +30 -30
  23. package/es/DateTime/DateWidget.js +1 -11
  24. package/es/DateTime/DateWidget.module.css +3 -0
  25. package/es/DateTime/__tests__/__snapshots__/CalendarView.spec.js.snap +49 -49
  26. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +93 -93
  27. package/es/DateTime/__tests__/__snapshots__/DateTimePopupFooter.spec.js.snap +1 -1
  28. package/es/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +8 -8
  29. package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +7 -7
  30. package/es/DateTime/__tests__/__snapshots__/DaysRow.spec.js.snap +1 -1
  31. package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +28 -28
  32. package/es/DropDown/DropDownHeading.js +1 -6
  33. package/es/DropDown/__tests__/__snapshots__/DropDown.spec.js.snap +2 -2
  34. package/es/Heading/Heading.js +1 -6
  35. package/es/Label/Label.js +1 -6
  36. package/es/Label/__tests__/__snapshots__/Label.spec.js.snap +4 -4
  37. package/es/ListItem/ListContainer.js +1 -6
  38. package/es/ListItem/ListItem.js +1 -6
  39. package/es/ListItem/ListItemWithAvatar.js +1 -6
  40. package/es/ListItem/ListItemWithCheckBox.js +1 -6
  41. package/es/ListItem/ListItemWithIcon.js +1 -6
  42. package/es/ListItem/ListItemWithRadio.js +1 -6
  43. package/es/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +2 -2
  44. package/es/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +16 -16
  45. package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +41 -41
  46. package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +62 -62
  47. package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +41 -41
  48. package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +62 -62
  49. package/es/Modal/Modal.js +1 -8
  50. package/es/MultiSelect/AdvancedGroupMultiSelect.js +1 -7
  51. package/es/MultiSelect/AdvancedMultiSelect.js +1 -9
  52. package/es/MultiSelect/MobileHeader/__tests__/__snapshots__/MobileHeader.spec.js.snap +3 -3
  53. package/es/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +6 -6
  54. package/es/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +50 -50
  55. package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +35 -35
  56. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +7 -7
  57. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +8 -8
  58. package/es/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +4 -4
  59. package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +47 -47
  60. package/es/Radio/__tests__/__snapshots__/Radio.spec.js.snap +94 -94
  61. package/es/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1 -1
  62. package/es/RippleEffect/RippleEffect.js +1 -6
  63. package/es/Select/GroupSelect.js +1 -8
  64. package/es/Select/Select.js +1 -10
  65. package/es/Select/SelectWithAvatar.js +1 -9
  66. package/es/Select/SelectWithIcon.js +1 -7
  67. package/es/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +7 -7
  68. package/es/Select/__tests__/__snapshots__/Select.spec.js.snap +831 -831
  69. package/es/Select/__tests__/__snapshots__/SelectWithAvatar.spec.js.snap +2 -2
  70. package/es/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +10 -10
  71. package/es/Switch/Switch.js +1 -6
  72. package/es/Switch/__tests__/__snapshots__/Switch.spec.js.snap +44 -44
  73. package/es/Tab/Tab.js +1 -6
  74. package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +2 -2
  75. package/es/Tab/__tests__/__snapshots__/TabContent.spec.js.snap +1 -1
  76. package/es/Tab/__tests__/__snapshots__/TabContentWrapper.spec.js.snap +1 -1
  77. package/es/Tab/__tests__/__snapshots__/TabLayout.spec.js.snap +40 -40
  78. package/es/Tab/__tests__/__snapshots__/TabWrapper.spec.js.snap +1 -1
  79. package/es/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +4 -4
  80. package/es/Tag/Tag.js +1 -6
  81. package/es/Tag/__tests__/__snapshots__/Tag.spec.js.snap +94 -94
  82. package/es/TextBox/TextBox.js +1 -8
  83. package/es/TextBoxIcon/TextBoxIcon.js +1 -8
  84. package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +167 -167
  85. package/es/Textarea/Textarea.js +1 -8
  86. package/es/Tooltip/Tooltip.js +1 -8
  87. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +1 -5
  88. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +1 -5
  89. package/es/semantic/Button/Button.js +1 -6
  90. package/es/shared/ArrowIcon/__tests__/__snapshots__/ArrowIcon.spec.js.snap +20 -20
  91. package/es/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +19 -19
  92. package/es/v1/Button/Button.js +197 -113
  93. package/es/v1/Button/README.md +110 -44
  94. package/es/v1/Button/__tests__/Button.spec.js +139 -48
  95. package/es/v1/Button/__tests__/__snapshots__/Button.spec.js.snap +1236 -340
  96. package/es/v1/Button/constants/index.js +29 -23
  97. package/es/v1/Button/constants/presets.js +160 -0
  98. package/es/v1/Button/css/Button_v1.module.css +33 -16
  99. package/es/v1/Button/css/cssJSLogic.js +56 -29
  100. package/es/v1/Button/props/defaultProps.js +5 -6
  101. package/es/v1/Button/props/propTypes.js +26 -8
  102. package/es/v1/Label/__tests__/__snapshots__/Label.spec.js.snap +24 -24
  103. package/es/v1/Switch/__tests__/__snapshots__/Switch.spec.js.snap +14 -14
  104. package/es/v1/helpers/colorHelpers/__tests__/colorHelper.spec.js +357 -0
  105. package/es/v1/helpers/colorHelpers/background/backgroundColor.module.css +38 -534
  106. package/es/v1/helpers/colorHelpers/border/borderColor.module.css +28 -412
  107. package/es/v1/helpers/colorHelpers/colorHelper.js +120 -139
  108. package/es/v1/helpers/colorHelpers/constants/index.js +45 -4
  109. package/es/v1/helpers/colorHelpers/index.js +0 -1
  110. package/es/v1/helpers/colorHelpers/paletteUtilities.README.md +141 -336
  111. package/es/v1/helpers/colorHelpers/text/textColor.module.css +79 -295
  112. package/lib/Accordion/Accordion.js +1 -6
  113. package/lib/Accordion/AccordionItem.js +1 -6
  114. package/lib/Animation/Animation.js +1 -8
  115. package/lib/AppContainer/AppContainer.js +1 -6
  116. package/lib/AppContainer/__tests__/__snapshots__/AppContainer.spec.js.snap +16 -16
  117. package/lib/Avatar/Avatar.js +1 -6
  118. package/lib/AvatarTeam/AvatarTeam.js +1 -7
  119. package/lib/Button/Button.js +1 -7
  120. package/lib/Buttongroup/Buttongroup.js +1 -14
  121. package/lib/Card/Card.js +1 -8
  122. package/lib/Card/__tests__/__snapshots__/Card.spec.js.snap +17 -17
  123. package/lib/Card/__tests__/__snapshots__/CardContent.spec.js.snap +12 -12
  124. package/lib/Card/__tests__/__snapshots__/CardHeader.spec.js.snap +4 -4
  125. package/lib/CheckBox/CheckBox.js +1 -6
  126. package/lib/CheckBox/__tests__/__snapshots__/CheckBox.spec.js.snap +88 -88
  127. package/lib/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +48 -48
  128. package/lib/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +30 -30
  129. package/lib/DateTime/DateWidget.js +1 -11
  130. package/lib/DateTime/DateWidget.module.css +3 -0
  131. package/lib/DateTime/__tests__/__snapshots__/CalendarView.spec.js.snap +49 -49
  132. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +93 -93
  133. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupFooter.spec.js.snap +1 -1
  134. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +8 -8
  135. package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +7 -7
  136. package/lib/DateTime/__tests__/__snapshots__/DaysRow.spec.js.snap +1 -1
  137. package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +28 -28
  138. package/lib/DropDown/DropDownHeading.js +1 -6
  139. package/lib/DropDown/__tests__/__snapshots__/DropDown.spec.js.snap +2 -2
  140. package/lib/Heading/Heading.js +1 -6
  141. package/lib/Label/Label.js +1 -6
  142. package/lib/Label/__tests__/__snapshots__/Label.spec.js.snap +4 -4
  143. package/lib/ListItem/ListContainer.js +1 -7
  144. package/lib/ListItem/ListItem.js +1 -6
  145. package/lib/ListItem/ListItemWithAvatar.js +1 -6
  146. package/lib/ListItem/ListItemWithCheckBox.js +1 -6
  147. package/lib/ListItem/ListItemWithIcon.js +1 -6
  148. package/lib/ListItem/ListItemWithRadio.js +1 -6
  149. package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +2 -2
  150. package/lib/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +16 -16
  151. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +41 -41
  152. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +62 -62
  153. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +41 -41
  154. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +62 -62
  155. package/lib/Modal/Modal.js +1 -8
  156. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +1 -7
  157. package/lib/MultiSelect/AdvancedMultiSelect.js +1 -9
  158. package/lib/MultiSelect/MobileHeader/__tests__/__snapshots__/MobileHeader.spec.js.snap +3 -3
  159. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +6 -6
  160. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +50 -50
  161. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +35 -35
  162. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +7 -7
  163. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +8 -8
  164. package/lib/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +4 -4
  165. package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +47 -47
  166. package/lib/Radio/__tests__/__snapshots__/Radio.spec.js.snap +94 -94
  167. package/lib/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1 -1
  168. package/lib/RippleEffect/RippleEffect.js +1 -6
  169. package/lib/Select/GroupSelect.js +1 -9
  170. package/lib/Select/Select.js +1 -11
  171. package/lib/Select/SelectWithAvatar.js +1 -9
  172. package/lib/Select/SelectWithIcon.js +1 -7
  173. package/lib/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +7 -7
  174. package/lib/Select/__tests__/__snapshots__/Select.spec.js.snap +831 -831
  175. package/lib/Select/__tests__/__snapshots__/SelectWithAvatar.spec.js.snap +2 -2
  176. package/lib/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +10 -10
  177. package/lib/Switch/Switch.js +1 -6
  178. package/lib/Switch/__tests__/__snapshots__/Switch.spec.js.snap +44 -44
  179. package/lib/Tab/Tab.js +1 -6
  180. package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +2 -2
  181. package/lib/Tab/__tests__/__snapshots__/TabContent.spec.js.snap +1 -1
  182. package/lib/Tab/__tests__/__snapshots__/TabContentWrapper.spec.js.snap +1 -1
  183. package/lib/Tab/__tests__/__snapshots__/TabLayout.spec.js.snap +40 -40
  184. package/lib/Tab/__tests__/__snapshots__/TabWrapper.spec.js.snap +1 -1
  185. package/lib/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +4 -4
  186. package/lib/Tag/Tag.js +1 -6
  187. package/lib/Tag/__tests__/__snapshots__/Tag.spec.js.snap +94 -94
  188. package/lib/TextBox/TextBox.js +1 -8
  189. package/lib/TextBoxIcon/TextBoxIcon.js +1 -8
  190. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +167 -167
  191. package/lib/Textarea/Textarea.js +1 -8
  192. package/lib/Tooltip/Tooltip.js +1 -8
  193. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +1 -5
  194. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +1 -5
  195. package/lib/semantic/Button/Button.js +1 -6
  196. package/lib/shared/ArrowIcon/__tests__/__snapshots__/ArrowIcon.spec.js.snap +20 -20
  197. package/lib/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +19 -19
  198. package/lib/v1/Button/Button.js +207 -123
  199. package/lib/v1/Button/README.md +110 -44
  200. package/lib/v1/Button/__tests__/Button.spec.js +195 -88
  201. package/lib/v1/Button/__tests__/__snapshots__/Button.spec.js.snap +1236 -340
  202. package/lib/v1/Button/constants/index.js +34 -31
  203. package/lib/v1/Button/constants/presets.js +179 -0
  204. package/lib/v1/Button/css/Button_v1.module.css +33 -16
  205. package/lib/v1/Button/css/cssJSLogic.js +45 -25
  206. package/lib/v1/Button/props/defaultProps.js +4 -5
  207. package/lib/v1/Button/props/propTypes.js +41 -7
  208. package/lib/v1/Label/__tests__/__snapshots__/Label.spec.js.snap +24 -24
  209. package/lib/v1/Switch/__tests__/__snapshots__/Switch.spec.js.snap +14 -14
  210. package/lib/v1/helpers/colorHelpers/__tests__/colorHelper.spec.js +363 -0
  211. package/lib/v1/helpers/colorHelpers/background/backgroundColor.module.css +38 -534
  212. package/lib/v1/helpers/colorHelpers/border/borderColor.module.css +28 -412
  213. package/lib/v1/helpers/colorHelpers/colorHelper.js +130 -153
  214. package/lib/v1/helpers/colorHelpers/constants/index.js +45 -4
  215. package/lib/v1/helpers/colorHelpers/index.js +2 -24
  216. package/lib/v1/helpers/colorHelpers/paletteUtilities.README.md +141 -336
  217. package/lib/v1/helpers/colorHelpers/text/textColor.module.css +79 -295
  218. package/package.json +16 -16
@@ -1,19 +1,21 @@
1
1
  export const PALETTE = {
2
- DEFAULT: 'default',
3
- PRIMARY: 'primary',
2
+ BRAND: 'brand',
3
+ BRAND_LIGHTER: 'brandLighter',
4
+ INFO: 'info',
5
+ INFO_LIGHTER: 'infoLighter',
4
6
  SECONDARY: 'secondary',
7
+ SECONDARY_LIGHTER: 'secondaryLighter',
5
8
  DANGER: 'danger',
6
- SUCCESS: 'success'
7
- };
8
- export const BG_APPEARANCE = {
9
- DEFAULT: 'default',
10
- ON_HOVER: 'onHover',
11
- NONE: 'none'
9
+ DANGER_LIGHTER: 'dangerLighter',
10
+ SUCCESS: 'success',
11
+ SUCCESS_LIGHTER: 'successLighter',
12
+ WARNING: 'warning',
13
+ WARNING_LIGHTER: 'warningLighter'
12
14
  };
13
- export const BORDER_APPEARANCE = {
14
- DEFAULT: 'default',
15
- ON_HOVER: 'onHover',
16
- NONE: 'none'
15
+ export const APPEARANCE = {
16
+ BORDER: 'border',
17
+ TEXT: 'text',
18
+ BG: 'bg'
17
19
  };
18
20
  export const VARIANT = {
19
21
  TEXT: 'text',
@@ -37,12 +39,8 @@ export const LOADER_PLACEMENT = {
37
39
  OVERLAY: 'overlay'
38
40
  };
39
41
  export const ICON_PLACEMENT = {
40
- LEFT: 'left',
41
- RIGHT: 'right'
42
- };
43
- export const PALETTE_SHADE = {
44
- DEFAULT: 'default',
45
- LIGHTER: 'lighter'
42
+ START: 'start',
43
+ END: 'end'
46
44
  };
47
45
  export const SHAPE = {
48
46
  PILL: 'pill',
@@ -67,16 +65,24 @@ export const TYPOGRAPHY_SIZE_MAP = {
67
65
  };
68
66
  /** Default values referenced by both defaultProps and cssJSLogic */
69
67
 
70
- export const DEFAULT_PALETTE = PALETTE.DEFAULT;
71
- export const DEFAULT_BG_APPEARANCE = BG_APPEARANCE.DEFAULT;
72
- export const DEFAULT_BORDER_APPEARANCE = BORDER_APPEARANCE.DEFAULT;
68
+ export const DEFAULT_APPEARANCE = {
69
+ bg: true,
70
+ text: true
71
+ };
72
+ export const DEFAULT_HOVER_APPEARANCE = {
73
+ bg: true,
74
+ text: true
75
+ };
76
+ export const DEFAULT_SELECTED_APPEARANCE = {
77
+ bg: true,
78
+ text: true
79
+ };
73
80
  export const DEFAULT_VARIANT = VARIANT.TEXT;
74
81
  export const DEFAULT_SIZE = SIZE.MEDIUM;
75
82
  export const DEFAULT_STATUS = STATUS.DEFAULT;
76
83
  export const DEFAULT_LOADER_PLACEMENT = LOADER_PLACEMENT.OVERLAY;
77
- export const DEFAULT_ICON_PLACEMENT = ICON_PLACEMENT.LEFT;
84
+ export const DEFAULT_ICON_PLACEMENT = ICON_PLACEMENT.START;
78
85
  export const DEFAULT_ICON_SIZE = 16;
79
- export const DEFAULT_PALETTE_SHADE = PALETTE_SHADE.DEFAULT;
80
86
  export const DEFAULT_SHAPE = SHAPE.ROUNDED_RECTANGLE;
81
87
  export const DEFAULT_DISABLED_APPEARANCE = DISABLED_APPEARANCE.DULL;
82
88
  export const DEFAULT_BUTTON_TYPE = BUTTON_TYPE.BUTTON;
@@ -0,0 +1,160 @@
1
+ /** Button appearance presets */
2
+ export const BRAND_GHOST = {
3
+ palette: 'brand',
4
+ appearance: {
5
+ bg: false,
6
+ border: true
7
+ },
8
+ hoverAppearance: {
9
+ bg: false,
10
+ border: true
11
+ },
12
+ selectedAppearance: {
13
+ bg: false,
14
+ border: true
15
+ }
16
+ };
17
+ export const BRAND_TEXT_ONLY = {
18
+ palette: 'brand',
19
+ appearance: {
20
+ bg: false
21
+ },
22
+ hoverAppearance: {
23
+ bg: false
24
+ },
25
+ selectedAppearance: {
26
+ bg: false
27
+ }
28
+ };
29
+ export const BRAND_TINTED_OUTLINE = {
30
+ palette: 'brandLighter',
31
+ appearance: {
32
+ border: true
33
+ },
34
+ hoverAppearance: {
35
+ border: true
36
+ },
37
+ selectedAppearance: {
38
+ border: true
39
+ }
40
+ };
41
+ export const SUCCESS_GHOST = {
42
+ palette: 'success',
43
+ appearance: {
44
+ bg: false,
45
+ border: true
46
+ },
47
+ hoverAppearance: {
48
+ bg: false,
49
+ border: true
50
+ },
51
+ selectedAppearance: {
52
+ bg: false,
53
+ border: true
54
+ }
55
+ };
56
+ export const SUCCESS_TEXT_ONLY = {
57
+ palette: 'success',
58
+ appearance: {
59
+ bg: false
60
+ },
61
+ hoverAppearance: {
62
+ bg: false
63
+ },
64
+ selectedAppearance: {
65
+ bg: false
66
+ }
67
+ };
68
+ export const SUCCESS_TINTED_OUTLINE = {
69
+ palette: 'successLighter',
70
+ appearance: {
71
+ border: true
72
+ },
73
+ hoverAppearance: {
74
+ border: true
75
+ },
76
+ selectedAppearance: {
77
+ border: true
78
+ }
79
+ };
80
+ export const SECONDARY_GHOST_BRAND_TINTED_ONSELECT = {
81
+ palette: 'secondary',
82
+ appearance: {
83
+ bg: false,
84
+ border: true,
85
+ text: 'black'
86
+ },
87
+ hoverAppearance: {
88
+ bg: false,
89
+ border: true,
90
+ text: 'black'
91
+ },
92
+ selectedAppearance: {
93
+ bg: 'brandLighter',
94
+ border: 'brandLighter',
95
+ text: 'black'
96
+ }
97
+ };
98
+ export const SECONDARY_GHOST_CANCEL = {
99
+ palette: 'secondary',
100
+ appearance: {
101
+ bg: false,
102
+ border: true
103
+ },
104
+ hoverAppearance: {
105
+ bg: false,
106
+ border: true
107
+ }
108
+ };
109
+ export const BLACK_TEXT_BRAND_ONHOVER = {
110
+ palette: 'brand',
111
+ appearance: {
112
+ bg: false,
113
+ text: 'black'
114
+ },
115
+ hoverAppearance: {
116
+ bg: false
117
+ },
118
+ selectedAppearance: {
119
+ bg: false
120
+ }
121
+ };
122
+ export const BRAND_BG_ONSELECT = {
123
+ palette: 'brand',
124
+ appearance: {
125
+ bg: false,
126
+ border: true
127
+ },
128
+ hoverAppearance: {
129
+ bg: false,
130
+ border: true
131
+ }
132
+ };
133
+ export const BRAND_TEXT_TINTED_HOVER = {
134
+ palette: 'brandLighter',
135
+ appearance: {
136
+ bg: false
137
+ },
138
+ hoverAppearance: {
139
+ bg: true
140
+ },
141
+ selectedAppearance: {
142
+ border: true,
143
+ bg: true
144
+ }
145
+ };
146
+ export const BRAND_TEXT_TINTED_DANGER_HOVER = {
147
+ palette: 'brandLighter',
148
+ appearance: {
149
+ bg: false
150
+ },
151
+ hoverAppearance: {
152
+ bg: 'dangerLighter',
153
+ text: 'danger'
154
+ },
155
+ selectedAppearance: {
156
+ border: 'dangerLighter',
157
+ text: 'danger',
158
+ bg: 'dangerLighter'
159
+ }
160
+ };
@@ -5,13 +5,15 @@
5
5
  --local-button-gap: var(--zd_size8);
6
6
  --local-button-padding-block: var(--zd_size6);
7
7
  --local-button-padding-inline: var(--zd_size15);
8
- --local-button-font-size: var(--zd_font_size13);
9
8
  --local-loader-size: 16px;
10
9
  --local-tick-size: 16px;
11
10
  --local-button-height: auto;
12
11
  --local-button-width: auto;
13
- --local-button-overlay-opacity: 0.48;
14
- --local-button-transition-duration: var(--zd_transition3);
12
+ --local-button-min-width: var(--zd_size90);
13
+ --local-button-overlay-opacity: 0.4;
14
+ --local-button-transition-duration: var(--zd_transition2);
15
+ --local-button-cursor: pointer;
16
+ --local-button-strike-color: currentColor;
15
17
  }
16
18
 
17
19
  .button {
@@ -19,19 +21,20 @@
19
21
  composes: posrel pointer from '../../../common/common.module.css';
20
22
  padding-block: var(--local-button-padding-block);
21
23
  padding-inline: var(--local-button-padding-inline);
22
- font-size: var(--local-button-font-size);
23
24
  height: var(--local-button-height);
24
25
  width: var(--local-button-width);
26
+ min-width: var(--local-button-min-width);
25
27
  border-radius: var(--local-button-radius);
26
28
  border-style: var(--local-button-border-style);
27
29
  border-width: var(--local-button-border-width);
28
30
  transition-duration: var(--local-button-transition-duration);
29
31
  transition-timing-function: ease;
32
+ cursor: var(--local-button-cursor);
30
33
  background-image: none;
31
34
  }
32
35
 
33
36
  .disabledPointer {
34
- cursor: not-allowed;
37
+ --local-button-cursor: not-allowed;
35
38
  }
36
39
 
37
40
  .disabledOpac {
@@ -39,7 +42,16 @@
39
42
  }
40
43
 
41
44
  .loading {
42
- cursor: progress;
45
+ --local-button-cursor: progress;
46
+ composes: disabledOpac;
47
+ }
48
+
49
+ .variantIcon {
50
+ --local-button-min-width: var(--zd_size28);
51
+ }
52
+
53
+ .variantIconWithText {
54
+ --local-button-min-width: var(--zd_size118);
43
55
  }
44
56
 
45
57
  .sizeSmall {
@@ -68,6 +80,14 @@
68
80
  --local-button-width: 100%;
69
81
  }
70
82
 
83
+ .sizeSmall.variantText {
84
+ --local-button-min-width: var(--zd_size50);
85
+ }
86
+
87
+ .sizeSmall.variantIconWithText {
88
+ --local-button-min-width: var(--zd_size78);
89
+ }
90
+
71
91
  .shapeRoundedRectangle {
72
92
  --local-button-radius: 4px;
73
93
  }
@@ -80,9 +100,11 @@
80
100
  --local-button-radius: 0;
81
101
  }
82
102
 
83
- .loaderOverlay {
103
+ .strike::after,
104
+ .loaderOverlay,
105
+ .successOverlay {
84
106
  inset: 0 ;
85
- composes: posab from '../../../common/common.module.css';
107
+ position: absolute;
86
108
  }
87
109
 
88
110
  .contentWrapper {
@@ -98,22 +120,17 @@
98
120
 
99
121
  .strike::after {
100
122
  content: '';
101
- position: absolute;
102
- inset: 0 ;
123
+ opacity: var(--local-button-overlay-opacity);
103
124
  pointer-events: none;
104
125
  border-radius: var(--local-button-radius);
105
126
  }
106
127
 
107
128
  [dir=ltr] .strike::after {
108
- background-image: repeating-linear-gradient(120deg, currentColor 0 1px, var(--dot_mirror) 1px 8px);
129
+ background-image: repeating-linear-gradient(120deg, var(--local-button-strike-color) 0 1px, var(--zd-bg-transparent) 1px 8px);
109
130
  }
110
131
 
111
132
  [dir=rtl] .strike::after {
112
- background-image: repeating-linear-gradient(-120deg, currentColor 0 1px, var(--dot_mirror) 1px 8px);
133
+ background-image: repeating-linear-gradient(-120deg, var(--local-button-strike-color) 0 1px, var(--zd-bg-transparent) 1px 8px);
113
134
  }
114
135
 
115
- .successOverlay {
116
- inset: 0 ;
117
- composes: posab from '../../../common/common.module.css';
118
- }
119
136
 
@@ -1,9 +1,8 @@
1
- import style from "./Button_v1.module.css";
2
1
  import compileClassNames from '@zohodesk/utils/es/compileClassNames';
2
+ import { DISABLED_APPEARANCE, LOADER_PLACEMENT, STATUS, DEFAULT_APPEARANCE, DEFAULT_HOVER_APPEARANCE, DEFAULT_SELECTED_APPEARANCE } from "../constants";
3
3
  import buttonResetStyle from "../../../semantic/Button/semanticButton.module.css";
4
4
  import getPaletteClasses from "../../helpers/colorHelpers/colorHelper";
5
- import { DUMMY_OBJECT } from '@zohodesk/dotkit/es/utils/constants';
6
- import { DISABLED_APPEARANCE, LOADER_PLACEMENT, SHAPE, SIZE, STATUS } from "../constants";
5
+ import style from "./Button_v1.module.css";
7
6
 
8
7
  const capitalize = (value = '') => value.charAt(0).toUpperCase() + value.slice(1);
9
8
 
@@ -12,70 +11,88 @@ export default function cssJSLogic({
12
11
  }) {
13
12
  const {
14
13
  palette,
15
- bgAppearance,
16
- borderAppearance,
17
- paletteShade,
14
+ appearance,
15
+ hoverAppearance,
16
+ selectedAppearance,
18
17
  size,
18
+ variant,
19
19
  status,
20
20
  isDisabled,
21
- isReadOnly,
22
21
  isSelected,
23
22
  shape,
24
23
  loaderPlacement,
25
24
  disabledAppearance,
26
- customClass = DUMMY_OBJECT
25
+ customClass
27
26
  } = props;
28
27
  const {
29
28
  wrapper: wrapperClass = '',
30
29
  text: textClassCustom = '',
31
- icon: iconClassCustom = ''
30
+ icon: iconClassCustom = '',
31
+ loader: loaderClassCustom = '',
32
+ success: successClassCustom = ''
32
33
  } = customClass;
33
34
  const isLoading = status === STATUS.LOADING;
34
35
  const isSuccess = status === STATUS.SUCCESS;
35
- const isInteractive = !isDisabled && !isReadOnly;
36
+ const isInteractive = !isDisabled && !isLoading;
36
37
  const overlayActive = (isLoading || isSuccess) && loaderPlacement === LOADER_PLACEMENT.OVERLAY;
38
+ const mergedAppearance = { ...DEFAULT_APPEARANCE,
39
+ ...appearance
40
+ };
41
+ const mergedHoverAppearance = { ...DEFAULT_HOVER_APPEARANCE,
42
+ ...hoverAppearance
43
+ };
44
+ const mergedSelectedAppearance = { ...DEFAULT_SELECTED_APPEARANCE,
45
+ ...selectedAppearance
46
+ };
37
47
  const {
38
48
  bg,
49
+ selectedBg,
39
50
  hoverBg,
40
51
  focusBg,
41
52
  activeBg,
42
53
  text,
54
+ selectedText,
43
55
  hoverText,
44
56
  focusText,
45
57
  activeText,
46
58
  border,
59
+ selectedBorder,
47
60
  hoverBorder,
48
61
  focusBorder,
49
62
  activeBorder
50
63
  } = getPaletteClasses({
51
64
  palette,
52
- bgAppearance,
53
- borderAppearance,
54
- paletteShade,
55
- isSelected
65
+ appearance: mergedAppearance,
66
+ hoverAppearance: mergedHoverAppearance,
67
+ selectedAppearance: mergedSelectedAppearance
56
68
  });
57
69
  const sizeClass = size ? style[`size${capitalize(size)}`] : '';
58
70
  const shapeClass = shape ? style[`shape${capitalize(shape)}`] : '';
71
+ const variantClass = variant ? style[`variant${capitalize(variant)}`] : '';
59
72
  const shouldStrike = disabledAppearance === DISABLED_APPEARANCE.STRIKE && isDisabled;
60
73
  const buttonClassName = compileClassNames({
61
74
  [buttonResetStyle.buttonReset]: true,
62
75
  [style.button]: true,
63
- [bg]: !!bg,
64
- [hoverBg]: !!hoverBg && isInteractive,
65
- [focusBg]: !!focusBg && isInteractive,
66
- [activeBg]: !!activeBg && isInteractive,
67
- [text]: !!text,
68
- [hoverText]: !!hoverText && isInteractive,
69
- [focusText]: !!focusText && isInteractive,
70
- [activeText]: !!activeText && isInteractive,
71
- [border]: !!border,
72
- [hoverBorder]: !!hoverBorder && isInteractive,
73
- [focusBorder]: !!focusBorder && isInteractive,
74
- [activeBorder]: !!activeBorder && isInteractive,
76
+ [bg]: !!bg && !(isSelected && !!selectedBg),
77
+ [selectedBg]: !!selectedBg && isSelected,
78
+ [hoverBg]: !!hoverBg && isInteractive && !isSelected,
79
+ [focusBg]: !!focusBg && isInteractive && !isSelected,
80
+ [activeBg]: !!activeBg && isInteractive && !isSelected,
81
+ [text]: !!text && !(isSelected && !!selectedText),
82
+ [selectedText]: !!selectedText && isSelected,
83
+ [hoverText]: !!hoverText && isInteractive && !isSelected,
84
+ [focusText]: !!focusText && isInteractive && !isSelected,
85
+ [activeText]: !!activeText && isInteractive && !isSelected,
86
+ [border]: !!border && !(isSelected && !!selectedBorder),
87
+ [selectedBorder]: !!selectedBorder && isSelected,
88
+ [hoverBorder]: !!hoverBorder && isInteractive && !isSelected,
89
+ [focusBorder]: !!focusBorder && isInteractive && !isSelected,
90
+ [activeBorder]: !!activeBorder && isInteractive && !isSelected,
75
91
  [sizeClass]: !!sizeClass,
76
92
  [shapeClass]: !!shapeClass,
77
- [style.disabledOpac]: isReadOnly || isDisabled && disabledAppearance === DISABLED_APPEARANCE.DULL,
78
- [style.disabledPointer]: isReadOnly || isDisabled,
93
+ [variantClass]: !!variantClass,
94
+ [style.disabledOpac]: isDisabled && disabledAppearance === DISABLED_APPEARANCE.DULL,
95
+ [style.disabledPointer]: isDisabled,
79
96
  [style.loading]: isLoading,
80
97
  [style.strike]: shouldStrike,
81
98
  [wrapperClass]: !!wrapperClass
@@ -89,9 +106,19 @@ export default function cssJSLogic({
89
106
  return {
90
107
  buttonClassName,
91
108
  textClassName,
109
+ iconClassName,
92
110
  contentWrapperClass: overlayActive ? style.overlayHidden : style.contentWrapper,
93
111
  loaderOverlayClass: style.loaderOverlay,
94
112
  successOverlayClass: style.successOverlay,
95
- iconClassName
113
+ loaderClassName: {
114
+ wrapper: compileClassNames({
115
+ [loaderClassCustom]: !!loaderClassCustom
116
+ })
117
+ },
118
+ successClassName: {
119
+ wrapper: compileClassNames({
120
+ [successClassCustom]: !!successClassCustom
121
+ })
122
+ }
96
123
  };
97
124
  }
@@ -1,19 +1,18 @@
1
1
  import { DUMMY_FUNCTION, DUMMY_OBJECT } from '@zohodesk/dotkit/es/utils/constants';
2
- import { DEFAULT_PALETTE, DEFAULT_BG_APPEARANCE, DEFAULT_BORDER_APPEARANCE, DEFAULT_VARIANT, DEFAULT_SIZE, DEFAULT_STATUS, DEFAULT_LOADER_PLACEMENT, DEFAULT_ICON_PLACEMENT, DEFAULT_ICON_SIZE, DEFAULT_PALETTE_SHADE, DEFAULT_SHAPE, DEFAULT_DISABLED_APPEARANCE, DEFAULT_BUTTON_TYPE } from "../constants";
2
+ import { DEFAULT_VARIANT, DEFAULT_SIZE, DEFAULT_STATUS, DEFAULT_LOADER_PLACEMENT, DEFAULT_ICON_PLACEMENT, DEFAULT_ICON_SIZE, DEFAULT_SHAPE, DEFAULT_DISABLED_APPEARANCE, DEFAULT_BUTTON_TYPE } from "../constants";
3
3
  const defaultProps = {
4
- palette: DEFAULT_PALETTE,
5
- bgAppearance: DEFAULT_BG_APPEARANCE,
6
- borderAppearance: DEFAULT_BORDER_APPEARANCE,
4
+ palette: '',
5
+ appearance: DUMMY_OBJECT,
6
+ hoverAppearance: DUMMY_OBJECT,
7
+ selectedAppearance: DUMMY_OBJECT,
7
8
  variant: DEFAULT_VARIANT,
8
9
  size: DEFAULT_SIZE,
9
10
  status: DEFAULT_STATUS,
10
11
  loaderPlacement: DEFAULT_LOADER_PLACEMENT,
11
12
  iconPlacement: DEFAULT_ICON_PLACEMENT,
12
13
  iconSize: DEFAULT_ICON_SIZE,
13
- paletteShade: DEFAULT_PALETTE_SHADE,
14
14
  disabledAppearance: DEFAULT_DISABLED_APPEARANCE,
15
15
  isDisabled: false,
16
- isReadOnly: false,
17
16
  isSelected: false,
18
17
  shape: DEFAULT_SHAPE,
19
18
  type: DEFAULT_BUTTON_TYPE,
@@ -1,10 +1,19 @@
1
1
  import PropTypes from 'prop-types';
2
- import { PALETTE, BG_APPEARANCE, BORDER_APPEARANCE, VARIANT, SIZE, STATUS, LOADER_PLACEMENT, ICON_PLACEMENT, PALETTE_SHADE, SHAPE, DISABLED_APPEARANCE, BUTTON_TYPE } from "../constants";
2
+ import { PALETTE, VARIANT, SIZE, STATUS, LOADER_PLACEMENT, ICON_PLACEMENT, SHAPE, DISABLED_APPEARANCE, BUTTON_TYPE } from "../constants";
3
3
  const renderSlotType = PropTypes.oneOfType([PropTypes.node, PropTypes.func]);
4
+ const paletteNames = Object.values(PALETTE);
5
+ const bgBorderValueType = PropTypes.oneOfType([PropTypes.oneOf([...paletteNames, 'transparent']), PropTypes.bool]);
6
+ const textValueType = PropTypes.oneOfType([PropTypes.oneOf([...paletteNames, 'black', 'white']), PropTypes.bool]);
7
+ const appearanceType = PropTypes.shape({
8
+ bg: bgBorderValueType,
9
+ border: bgBorderValueType,
10
+ text: textValueType
11
+ });
4
12
  const propTypes = {
5
13
  palette: PropTypes.oneOf(Object.values(PALETTE)),
6
- bgAppearance: PropTypes.oneOf(Object.values(BG_APPEARANCE)),
7
- borderAppearance: PropTypes.oneOf(Object.values(BORDER_APPEARANCE)),
14
+ appearance: appearanceType,
15
+ hoverAppearance: appearanceType,
16
+ selectedAppearance: appearanceType,
8
17
  variant: PropTypes.oneOf(Object.values(VARIANT)),
9
18
  size: PropTypes.oneOf(Object.values(SIZE)),
10
19
  status: PropTypes.oneOf(Object.values(STATUS)),
@@ -12,7 +21,6 @@ const propTypes = {
12
21
  iconName: PropTypes.string,
13
22
  iconSize: PropTypes.number,
14
23
  iconPlacement: PropTypes.oneOf(Object.values(ICON_PLACEMENT)),
15
- paletteShade: PropTypes.oneOf(Object.values(PALETTE_SHADE)),
16
24
  disabledAppearance: PropTypes.oneOf(Object.values(DISABLED_APPEARANCE)),
17
25
  renderIcon: renderSlotType,
18
26
  renderBefore: renderSlotType,
@@ -23,21 +31,31 @@ const propTypes = {
23
31
  type: PropTypes.oneOf(Object.values(BUTTON_TYPE)),
24
32
  onClick: PropTypes.func,
25
33
  isDisabled: PropTypes.bool,
26
- isReadOnly: PropTypes.bool,
27
34
  isSelected: PropTypes.bool,
28
35
  shape: PropTypes.oneOf(Object.values(SHAPE)),
29
36
  title: PropTypes.string,
30
37
  customClass: PropTypes.shape({
31
38
  wrapper: PropTypes.string,
32
- text: PropTypes.string
39
+ text: PropTypes.string,
40
+ icon: PropTypes.string,
41
+ loader: PropTypes.string,
42
+ success: PropTypes.string
33
43
  }),
34
44
  customProps: PropTypes.shape({
35
45
  text: PropTypes.object,
36
46
  icon: PropTypes.object
37
47
  }),
38
- customAttributes: PropTypes.object,
48
+ customAttributes: PropTypes.shape({
49
+ button: PropTypes.object,
50
+ contentWrapper: PropTypes.object,
51
+ loader: PropTypes.object,
52
+ success: PropTypes.object,
53
+ icon: PropTypes.object,
54
+ text: PropTypes.object
55
+ }),
39
56
  a11yAttributes: PropTypes.object,
40
57
  customId: PropTypes.string,
41
- testId: PropTypes.string
58
+ testId: PropTypes.string,
59
+ dataSelectorId: PropTypes.string
42
60
  };
43
61
  export default propTypes;