@zohodesk/dot 1.9.10 → 1.9.11

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 (160) hide show
  1. package/README.md +7 -0
  2. package/es/ActionButton/ActionButton.module.css +12 -11
  3. package/es/AlphabeticList/AlphabeticList.module.css +7 -8
  4. package/es/Attachment/Attachment.module.css +9 -10
  5. package/es/AttachmentViewer/AttachmentViewer.module.css +24 -45
  6. package/es/AudioPlayer/AudioPlayer.module.css +5 -8
  7. package/es/DotProvider/DotProvider.js +2 -0
  8. package/es/DotProvider/__tests__/DotProvider.spec.js +106 -0
  9. package/es/DotProvider/hooks/useDotProvider.js +4 -2
  10. package/es/DotProvider/hooks/useDownloadAssetsAndSetAttr.js +44 -15
  11. package/es/DotProvider/props/defaultProps.js +2 -0
  12. package/es/DotProvider/props/propTypes.js +1 -0
  13. package/es/Drawer/Drawer.module.css +17 -64
  14. package/es/FormAction/FormAction.module.css +20 -54
  15. package/es/ImportantNotes/ImportantNotes.module.css +2 -9
  16. package/es/Message/Message.module.css +3 -16
  17. package/es/MessageBanner/MessageBanner.module.css +4 -13
  18. package/es/Separator/Separator.module.css +2 -1
  19. package/es/TagWithIcon/TagWithIcon.module.css +5 -8
  20. package/es/ToastMessage/ToastMessage.module.css +16 -30
  21. package/es/Upload/Upload.module.css +7 -9
  22. package/es/alert/AlertHeader/AlertHeader.module.css +11 -25
  23. package/es/alert/AlertLookup/AlertLookup.module.css +9 -10
  24. package/es/avatar/AvatarCollision/AvatarCollision.module.css +1 -1
  25. package/es/avatar/AvatarWithTeam/AvatarWithTeam.module.css +1 -1
  26. package/es/dropdown/ToggleDropDown/ToggleDropDown.module.css +16 -16
  27. package/es/emptystate/CommonEmptyState/CommonEmptyState.module.css +7 -9
  28. package/es/emptystate/EditionPage/EditionPage.css +7 -4
  29. package/es/errorstate/EmptyStates.module.css +7 -8
  30. package/es/errorstate/Inconvenience/Inconvenience.module.css +2 -5
  31. package/es/errorstate/NoRequestFound/NoRequestFound.module.css +1 -1
  32. package/es/errorstate/PermissionPlay/PermissionPlay.module.css +5 -4
  33. package/es/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +1 -1
  34. package/es/errorstate/UnableToProcess/UnableToProcess.module.css +1 -1
  35. package/es/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +1 -1
  36. package/es/errorstate/WillBack/WillBack.module.css +6 -4
  37. package/es/form/fields/Fields.module.css +23 -68
  38. package/es/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +11 -16
  39. package/es/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +1 -4
  40. package/es/form/fields/TextEditor/TextEditor.module.css +40 -66
  41. package/es/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +2 -7
  42. package/es/form/fields/ValidationMessage/ValidationMessage.module.css +4 -3
  43. package/es/layout/SetupDetailLayout/SetupDetailLayout.module.css +14 -36
  44. package/es/layout/SubtabLayout/SubtabLayout.module.css +33 -46
  45. package/es/list/BluePrintStatus/BluePrintStatus.module.css +1 -4
  46. package/es/list/Comment/Comment.module.css +2 -1
  47. package/es/list/Dot/Dot.module.css +4 -2
  48. package/es/list/GridStencils/GridStencils.module.css +7 -9
  49. package/es/list/ListLayout/ListLayout.module.css +7 -4
  50. package/es/list/ListStencils/ListStencils.module.css +14 -15
  51. package/es/list/SecondaryText/SecondaryText.module.css +4 -13
  52. package/es/list/SentimentStatus/SentimentStatus.module.css +2 -4
  53. package/es/list/TagNew/TagNew.module.css +3 -2
  54. package/es/list/listCommon.module.css +3 -7
  55. package/es/list/status/StatusDropdown/StatusDropdown.module.css +17 -17
  56. package/es/list/status/StatusListItem/StatusListItem.module.css +10 -18
  57. package/es/lookup/EmptyPage/LookupEmptyPage.module.css +4 -3
  58. package/es/lookup/Lookup/Lookup.module.css +2 -2
  59. package/es/lookup/header/Search/LookupSearch.module.css +10 -23
  60. package/es/lookup/header/TicketHeader/TicketHeader.module.css +3 -2
  61. package/es/lookup/header/ViewDropDown/ViewDropDown.module.css +8 -12
  62. package/es/lookup/header/lookupHeaderCommon.module.css +8 -7
  63. package/es/lookup/header/lookupHeaderCommonResponsive.module.css +2 -6
  64. package/es/setup/header/Button/HeaderButton.module.css +2 -4
  65. package/es/setup/header/Link/HeaderLink.module.css +3 -9
  66. package/es/setup/header/Search/Search.module.css +2 -10
  67. package/es/setup/header/Views/Views.module.css +1 -4
  68. package/es/setup/helptips/Description/HelpTipsDescription.module.css +2 -1
  69. package/es/setup/helptips/Link/HelpTipsLink.module.css +2 -2
  70. package/es/setup/helptips/ListGroup/ListGroup.module.css +2 -6
  71. package/es/setup/table/TableData/SetupTableData.module.css +2 -4
  72. package/es/setup/table/TableHead/SetupTableHead.module.css +1 -6
  73. package/es/setup/table/TableRow/SetupTableRow.module.css +2 -7
  74. package/es/version2/GlobalNotification/GlobalNotification.module.css +7 -12
  75. package/es/version2/errorstate/V2_ErrorStates.module.css +5 -5
  76. package/es/version2/lookup/AlertHeader/css/AlertHeaderNew.module.css +8 -23
  77. package/es/version2/lookup/AlertLookup/AlertLookupNew.module.css +9 -10
  78. package/es/version2/lookup/alertLookupCommonNew.module.css +6 -4
  79. package/es/version2/notification/DesktopNotification/DesktopNotification.module.css +8 -11
  80. package/es/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +10 -22
  81. package/lib/ActionButton/ActionButton.module.css +12 -11
  82. package/lib/AlphabeticList/AlphabeticList.module.css +7 -8
  83. package/lib/Attachment/Attachment.module.css +9 -10
  84. package/lib/AttachmentViewer/AttachmentViewer.module.css +24 -45
  85. package/lib/AudioPlayer/AudioPlayer.module.css +5 -8
  86. package/lib/DotProvider/DotProvider.js +3 -1
  87. package/lib/DotProvider/__tests__/DotProvider.spec.js +216 -0
  88. package/lib/DotProvider/hooks/useDotProvider.js +4 -2
  89. package/lib/DotProvider/hooks/useDownloadAssetsAndSetAttr.js +46 -15
  90. package/lib/DotProvider/props/defaultProps.js +3 -0
  91. package/lib/DotProvider/props/propTypes.js +1 -0
  92. package/lib/Drawer/Drawer.module.css +17 -64
  93. package/lib/FormAction/FormAction.module.css +20 -54
  94. package/lib/ImportantNotes/ImportantNotes.module.css +2 -9
  95. package/lib/Message/Message.module.css +3 -16
  96. package/lib/MessageBanner/MessageBanner.module.css +4 -13
  97. package/lib/Separator/Separator.module.css +2 -1
  98. package/lib/TagWithIcon/TagWithIcon.module.css +5 -8
  99. package/lib/ToastMessage/ToastMessage.module.css +16 -30
  100. package/lib/Upload/Upload.module.css +7 -9
  101. package/lib/alert/AlertHeader/AlertHeader.module.css +11 -25
  102. package/lib/alert/AlertLookup/AlertLookup.module.css +9 -10
  103. package/lib/avatar/AvatarCollision/AvatarCollision.module.css +1 -1
  104. package/lib/avatar/AvatarWithTeam/AvatarWithTeam.module.css +1 -1
  105. package/lib/dropdown/ToggleDropDown/ToggleDropDown.module.css +16 -16
  106. package/lib/emptystate/CommonEmptyState/CommonEmptyState.module.css +7 -9
  107. package/lib/emptystate/EditionPage/EditionPage.css +7 -4
  108. package/lib/errorstate/EmptyStates.module.css +7 -8
  109. package/lib/errorstate/Inconvenience/Inconvenience.module.css +2 -5
  110. package/lib/errorstate/NoRequestFound/NoRequestFound.module.css +1 -1
  111. package/lib/errorstate/PermissionPlay/PermissionPlay.module.css +5 -4
  112. package/lib/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +1 -1
  113. package/lib/errorstate/UnableToProcess/UnableToProcess.module.css +1 -1
  114. package/lib/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +1 -1
  115. package/lib/errorstate/WillBack/WillBack.module.css +6 -4
  116. package/lib/form/fields/Fields.module.css +23 -68
  117. package/lib/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +11 -16
  118. package/lib/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +1 -4
  119. package/lib/form/fields/TextEditor/TextEditor.module.css +40 -66
  120. package/lib/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +2 -7
  121. package/lib/form/fields/ValidationMessage/ValidationMessage.module.css +4 -3
  122. package/lib/layout/SetupDetailLayout/SetupDetailLayout.module.css +14 -36
  123. package/lib/layout/SubtabLayout/SubtabLayout.module.css +33 -46
  124. package/lib/list/BluePrintStatus/BluePrintStatus.module.css +1 -4
  125. package/lib/list/Comment/Comment.module.css +2 -1
  126. package/lib/list/Dot/Dot.module.css +4 -2
  127. package/lib/list/GridStencils/GridStencils.module.css +7 -9
  128. package/lib/list/ListLayout/ListLayout.module.css +7 -4
  129. package/lib/list/ListStencils/ListStencils.module.css +14 -15
  130. package/lib/list/SecondaryText/SecondaryText.module.css +4 -13
  131. package/lib/list/SentimentStatus/SentimentStatus.module.css +2 -4
  132. package/lib/list/TagNew/TagNew.module.css +3 -2
  133. package/lib/list/listCommon.module.css +3 -7
  134. package/lib/list/status/StatusDropdown/StatusDropdown.module.css +17 -17
  135. package/lib/list/status/StatusListItem/StatusListItem.module.css +10 -18
  136. package/lib/lookup/EmptyPage/LookupEmptyPage.module.css +4 -3
  137. package/lib/lookup/Lookup/Lookup.module.css +2 -2
  138. package/lib/lookup/header/Search/LookupSearch.module.css +10 -23
  139. package/lib/lookup/header/TicketHeader/TicketHeader.module.css +3 -2
  140. package/lib/lookup/header/ViewDropDown/ViewDropDown.module.css +8 -12
  141. package/lib/lookup/header/lookupHeaderCommon.module.css +8 -7
  142. package/lib/lookup/header/lookupHeaderCommonResponsive.module.css +2 -6
  143. package/lib/setup/header/Button/HeaderButton.module.css +2 -4
  144. package/lib/setup/header/Link/HeaderLink.module.css +3 -9
  145. package/lib/setup/header/Search/Search.module.css +2 -10
  146. package/lib/setup/header/Views/Views.module.css +1 -4
  147. package/lib/setup/helptips/Description/HelpTipsDescription.module.css +2 -1
  148. package/lib/setup/helptips/Link/HelpTipsLink.module.css +2 -2
  149. package/lib/setup/helptips/ListGroup/ListGroup.module.css +2 -6
  150. package/lib/setup/table/TableData/SetupTableData.module.css +2 -4
  151. package/lib/setup/table/TableHead/SetupTableHead.module.css +1 -6
  152. package/lib/setup/table/TableRow/SetupTableRow.module.css +2 -7
  153. package/lib/version2/GlobalNotification/GlobalNotification.module.css +7 -12
  154. package/lib/version2/errorstate/V2_ErrorStates.module.css +5 -5
  155. package/lib/version2/lookup/AlertHeader/css/AlertHeaderNew.module.css +8 -23
  156. package/lib/version2/lookup/AlertLookup/AlertLookupNew.module.css +9 -10
  157. package/lib/version2/lookup/alertLookupCommonNew.module.css +6 -4
  158. package/lib/version2/notification/DesktopNotification/DesktopNotification.module.css +8 -11
  159. package/lib/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +10 -22
  160. package/package.json +10 -10
package/README.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  In this Library, we Provide Some Basic Components to Build Your Application
4
4
 
5
+ # 1.9.11
6
+
7
+ - padding, margin based css properties migrated to padding-inline,padding-block, margin-inline, margin-block
8
+
9
+ - **DotProvider** — Added `excludeFeatures` prop (default `[]`). Accepts an array of feature names to exclude from DotProvider. Supported values: `'theme'`, `'font'`, `'zoom'`. Example: `excludeFeatures={['font', 'zoom']}` skips font/zoom CSS chunk downloads and their variable/attribute application while keeping theme active.
10
+
11
+
5
12
  # 1.9.10
6
13
 
7
14
  - **ActionButton**
@@ -89,11 +89,14 @@
89
89
  }
90
90
 
91
91
  .small_btnBox {
92
- padding: 0 var(--zd_size8) ;
92
+ padding-block:0 ;
93
+ padding-inline: var(--zd_size8) ;
93
94
  }
94
95
 
95
- .medium_btnBox, .large_btnBox {
96
- padding: 0 var(--zd_size10) ;
96
+ .medium_btnBox,
97
+ .large_btnBox {
98
+ padding-block:0 ;
99
+ padding-inline: var(--zd_size10) ;
97
100
  }
98
101
 
99
102
  .txt {
@@ -174,8 +177,10 @@
174
177
  }
175
178
 
176
179
  .popupWrapper {
177
- padding: var(--zd_size10) 0 ;
178
- margin: var(--zd_size5) 0 ;
180
+ padding-block: var(--zd_size10) ;
181
+ padding-inline:0 ;
182
+ margin-block: var(--zd_size5) ;
183
+ margin-inline:0 ;
179
184
  }
180
185
 
181
186
  .arrow,
@@ -184,10 +189,6 @@
184
189
  color: var(--buttonText);
185
190
  }
186
191
 
187
- [dir=ltr] .iconMrgn {
188
- margin-right: var(--zd_size6) ;
192
+ .iconMrgn {
193
+ margin-inline-end: var(--zd_size6) ;
189
194
  }
190
-
191
- [dir=rtl] .iconMrgn {
192
- margin-left: var(--zd_size6) ;
193
- }
@@ -12,19 +12,18 @@
12
12
  padding: 0 ;
13
13
  }
14
14
  .column .title {
15
- margin-bottom: var(--zd_size3) ;
15
+ margin-block-end: var(--zd_size3) ;
16
16
  }
17
- [dir=ltr] .row .title {
18
- margin-right: var(--zd_size3) ;
19
- }
20
- [dir=rtl] .row .title {
21
- margin-left: var(--zd_size3) ;
17
+ .row .title {
18
+ margin-inline-end: var(--zd_size3) ;
22
19
  }
23
20
  .row .letter {
24
- padding: 0 var(--zd_size3) ;
21
+ padding-block:0 ;
22
+ padding-inline: var(--zd_size3) ;
25
23
  }
26
24
  .column .letter {
27
- padding: var(--zd_size3) 0 ;
25
+ padding-block: var(--zd_size3) ;
26
+ padding-inline: 0 ;
28
27
  }
29
28
  .heading {
30
29
  composes: dotted from '~@zohodesk/components/es/common/common.module.css';
@@ -86,21 +86,19 @@
86
86
  width: var(--zd_size40) ;
87
87
  }
88
88
 
89
- [dir=ltr] .medium .attachright {
90
- padding: var(--zd_size5) var(--zd_size25) var(--zd_size5) var(--zd_size10) ;
91
- }
92
-
93
- [dir=rtl] .medium .attachright {
94
- padding: var(--zd_size5) var(--zd_size10) var(--zd_size5) var(--zd_size25) ;
89
+ .medium .attachright {
90
+ padding-block: var(--zd_size5) ;
91
+ padding-inline: var(--zd_size10) var(--zd_size25) ;
95
92
  }
96
93
 
97
94
  .small .attachright {
98
- padding: 0 var(--zd_size10) 0 var(--zd_size10) ;
95
+ padding-block:0 ;
96
+ padding-inline: var(--zd_size10) ;
99
97
  }
100
98
 
101
99
  .footer {
102
100
  font-size: 0 ;
103
- margin-top: var(--zd_size3) ;
101
+ margin-block-start: var(--zd_size3) ;
104
102
  }
105
103
 
106
104
  .medium .atatchName {
@@ -183,7 +181,8 @@
183
181
  height: 2px;
184
182
  /* Variable:Ignore */
185
183
  width: 2px;
184
+ margin-inline: var(--zd_size6) ;
185
+ margin-block:0 ;
186
186
  background-color: var(--zdt_dot_text);
187
187
  border-radius: 50%;
188
- margin: 0 var(--zd_size6) ;
189
- }
188
+ }
@@ -2,9 +2,10 @@
2
2
  height: var(--zd_size40) ;
3
3
  position: relative;
4
4
  z-index: 1;
5
+ padding-block:0 ;
6
+ padding-inline: var(--zd_size15) ;
5
7
  composes: alignVertical from '~@zohodesk/components/es/common/common.module.css';
6
8
  background-color: var(--zdt_attachmentviewer_header_bg);
7
- padding: 0 var(--zd_size15) ;
8
9
  border-bottom: 1px solid var(--zdt_attachmentviewer_header_border);
9
10
  }
10
11
 
@@ -22,9 +23,10 @@
22
23
  }
23
24
 
24
25
  .count {
26
+ padding-block:0 ;
27
+ padding-inline: var(--zd_size10) ;
25
28
  position: absolute;
26
29
  composes: xMiddle from '~@zohodesk/components/es/common/common.module.css';
27
- padding: 0 var(--zd_size10) ;
28
30
  }
29
31
 
30
32
  .title,
@@ -33,29 +35,21 @@
33
35
  font-size: var(--zd_font_size15) ;
34
36
  }
35
37
 
36
- [dir=ltr] .menuBar {
37
- padding-left: var(--zd_size5) ;
38
- }
39
-
40
- [dir=rtl] .menuBar {
41
- padding-right: var(--zd_size5) ;
38
+ .menuBar {
39
+ padding-inline-start: var(--zd_size5) ;
42
40
  }
43
41
 
44
42
  .mbleMenuBar {
43
+ margin-block-start: var(--zd_size8) ;
45
44
  align-self: baseline;
46
- margin-top: var(--zd_size8) ;
47
45
  }
48
46
 
49
- [dir=ltr] .menu+.menu {
50
- margin-left: var(--zd_size22) ;
51
- }
52
-
53
- [dir=rtl] .menu+.menu {
54
- margin-right: var(--zd_size22) ;
47
+ .menu+.menu {
48
+ margin-inline-start: var(--zd_size22) ;
55
49
  }
56
50
 
57
51
  .mobileMenu+.mobileMenu {
58
- margin-bottom: var(--zd_size22) ;
52
+ margin-block-end: var(--zd_size22) ;
59
53
  }
60
54
 
61
55
  .menuIcon {
@@ -85,9 +79,10 @@
85
79
  }
86
80
 
87
81
  .preview {
82
+ margin-block: var(--zd_size20) ;
83
+ margin-inline:0 ;
88
84
  composes: posrel from '~@zohodesk/components/es/common/common.module.css';
89
85
  text-align: center;
90
- margin: var(--zd_size20) 0 ;
91
86
  }
92
87
 
93
88
  .zoomIn {
@@ -128,15 +123,8 @@
128
123
  width: 100% ;
129
124
  overflow: hidden;
130
125
  transition: height var(--zd_transition3);
131
- background-color: var(--zdt_attachmentviewer_footer_bg)
132
- }
133
-
134
- [dir=ltr] .footer {
135
- padding-right: var(--zd_size68)
136
- }
137
-
138
- [dir=rtl] .footer {
139
- padding-left: var(--zd_size68)
126
+ padding-inline-end: var(--zd_size68) ;
127
+ background-color: var(--zdt_attachmentviewer_footer_bg);
140
128
  }
141
129
 
142
130
  .footerHeight {
@@ -148,7 +136,8 @@
148
136
  }
149
137
 
150
138
  .listContainer {
151
- padding: 0 var(--zd_size18) ;
139
+ padding-block:0 ;
140
+ padding-inline: var(--zd_size18) ;
152
141
  }
153
142
 
154
143
  .imgItem {
@@ -168,12 +157,8 @@
168
157
  border-color: var(--zdt_attachmentviewer_hover_border);
169
158
  }
170
159
 
171
- [dir=ltr] .imgItem+.imgItem {
172
- margin-left: var(--zd_size12) ;
173
- }
174
-
175
- [dir=rtl] .imgItem+.imgItem {
176
- margin-right: var(--zd_size12) ;
160
+ .imgItem+.imgItem {
161
+ margin-inline-start: var(--zd_size12) ;
177
162
  }
178
163
 
179
164
  .image, .crsrPointer {
@@ -335,21 +320,15 @@
335
320
 
336
321
  .author {
337
322
  max-width: var(--zd_size200) ;
338
- }
339
-
340
- [dir=ltr] .author {
341
- padding-left: var(--zd_size15) ;
342
- }
343
-
344
- [dir=rtl] .author {
345
- padding-right: var(--zd_size15) ;
323
+ padding-inline-start: var(--zd_size15) ;
346
324
  }
347
325
 
348
326
  .authorName {
327
+ margin-block:0 ;
328
+ margin-inline: var(--zd_size10) ;
349
329
  font-size: var(--zd_font_size15) ;
350
330
  color: var(--zdt_attachmentviewer_title_text);
351
331
  composes: dotted from '~@zohodesk/components/es/common/common.module.css';
352
- margin: 0 var(--zd_size10) ;
353
332
  }
354
333
 
355
334
  .btn {
@@ -361,7 +340,7 @@
361
340
  }
362
341
 
363
342
  .fileTypeImg {
364
- margin-bottom: var(--zd_size30) ;
343
+ margin-block-end: var(--zd_size30) ;
365
344
  }
366
345
 
367
346
  .previewNone {
@@ -373,7 +352,7 @@
373
352
 
374
353
  .downloadLink {
375
354
  display: inline-block;
376
- padding-top: var(--zd_size15) ;
355
+ padding-block-start: var(--zd_size15) ;
377
356
  }
378
357
 
379
358
  .previewIconDiv {
@@ -385,4 +364,4 @@
385
364
  color: var(--zdt_attachmentviewer_title_text);
386
365
  padding: var(--zd_size2) ;
387
366
  margin: auto ;
388
- }
367
+ }
@@ -5,7 +5,8 @@
5
5
  }
6
6
 
7
7
  .dragtag {
8
- margin: 0 var(--zd_size10) ;
8
+ margin-block:0 ;
9
+ margin-inline: var(--zd_size10) ;
9
10
  }
10
11
 
11
12
  .audioHid {
@@ -24,12 +25,8 @@
24
25
  font-size: var(--zd_font_size11) ;
25
26
  }
26
27
 
27
- [dir=ltr] .timerBox {
28
- margin-left: var(--zd_size6) ;
29
- }
30
-
31
- [dir=rtl] .timerBox {
32
- margin-right: var(--zd_size6) ;
28
+ .timerBox {
29
+ margin-inline-start: var(--zd_size6) ;
33
30
  }
34
31
 
35
32
  .rightBox,
@@ -143,4 +140,4 @@ input::-moz-focus-inner, input::-moz-focus-outer {
143
140
  border-radius: 4px;
144
141
  }
145
142
 
146
- /* End of audio range styles */
143
+ /* End of audio range styles */
@@ -13,6 +13,7 @@ const DotProvider = /*#__PURE__*/forwardRef((props, ref) => {
13
13
  baseFontUnit,
14
14
  zoomUnitVariable,
15
15
  fontUnitVariable,
16
+ excludeFeatures,
16
17
  themeAppearanceAttr,
17
18
  themeColorAttr,
18
19
  providerRef,
@@ -49,6 +50,7 @@ const DotProvider = /*#__PURE__*/forwardRef((props, ref) => {
49
50
  baseFontUnit: baseFontUnit,
50
51
  zoomUnitVariable: zoomUnitVariable,
51
52
  fontUnitVariable: fontUnitVariable,
53
+ excludeFeatures: excludeFeatures,
52
54
  getProviderElement,
53
55
  onAssetsDownloadSuccess: onAssetsDownloadSuccess,
54
56
  getAssetsPromises: getAssetsPromises
@@ -196,5 +196,111 @@ describe('DotProvider Unit-Test', () => {
196
196
  zoomSizePromise: expect.any(Promise)
197
197
  }));
198
198
  });
199
+ test('should not set zoom CSS variable when zoom is excluded', async () => {
200
+ const {
201
+ container
202
+ } = render( /*#__PURE__*/React.createElement(DotProvider, {
203
+ id: "dot-provider",
204
+ excludeFeatures: ['zoom'],
205
+ baseZoomUnit: "2px"
206
+ }, "This is a DotProvider component"));
207
+ await waitFor(() => {});
208
+ const el = container.querySelector('#dot-provider');
209
+ expect(el.style.getPropertyValue('--zd_baseUnit')).toBe('');
210
+ });
211
+ test('should still set font CSS variable when zoom is excluded', async () => {
212
+ const {
213
+ container
214
+ } = render( /*#__PURE__*/React.createElement(DotProvider, {
215
+ id: "dot-provider",
216
+ excludeFeatures: ['zoom'],
217
+ baseFontUnit: "18px"
218
+ }, "This is a DotProvider component"));
219
+ await waitFor(() => {
220
+ const el = container.querySelector('#dot-provider');
221
+ expect(el.style.getPropertyValue('--zd_baseFontUnit')).toBe('18px');
222
+ });
223
+ });
224
+ test('should not set font CSS variable when font is excluded', async () => {
225
+ const {
226
+ container
227
+ } = render( /*#__PURE__*/React.createElement(DotProvider, {
228
+ id: "dot-provider",
229
+ excludeFeatures: ['font'],
230
+ baseFontUnit: "18px"
231
+ }, "This is a DotProvider component"));
232
+ await waitFor(() => {});
233
+ const el = container.querySelector('#dot-provider');
234
+ expect(el.style.getPropertyValue('--zd_baseFontUnit')).toBe('');
235
+ });
236
+ test('should still set zoom CSS variable when font is excluded', async () => {
237
+ const {
238
+ container
239
+ } = render( /*#__PURE__*/React.createElement(DotProvider, {
240
+ id: "dot-provider",
241
+ excludeFeatures: ['font'],
242
+ baseZoomUnit: "2px"
243
+ }, "This is a DotProvider component"));
244
+ await waitFor(() => {
245
+ const el = container.querySelector('#dot-provider');
246
+ expect(el.style.getPropertyValue('--zd_baseUnit')).toBe('2px');
247
+ });
248
+ });
249
+ test('should not set zoom or font CSS variables when both are excluded', async () => {
250
+ const {
251
+ container
252
+ } = render( /*#__PURE__*/React.createElement(DotProvider, {
253
+ id: "dot-provider",
254
+ excludeFeatures: ['font', 'zoom'],
255
+ baseZoomUnit: "2px",
256
+ baseFontUnit: "18px"
257
+ }, "This is a DotProvider component"));
258
+ await waitFor(() => {});
259
+ const el = container.querySelector('#dot-provider');
260
+ expect(el.style.getPropertyValue('--zd_baseUnit')).toBe('');
261
+ expect(el.style.getPropertyValue('--zd_baseFontUnit')).toBe('');
262
+ });
263
+ test('getAssetsPromises should expose resolved promises when features are excluded', async () => {
264
+ const mockFunc = jest.fn();
265
+ render( /*#__PURE__*/React.createElement(DotProvider, {
266
+ excludeFeatures: ['font', 'zoom'],
267
+ getAssetsPromises: mockFunc
268
+ }, "This is a DotProvider component"));
269
+ await waitFor(() => {});
270
+ expect(mockFunc).toHaveBeenCalledWith(expect.objectContaining({
271
+ zoomSizePromise: expect.any(Promise),
272
+ fontSizePromise: expect.any(Promise)
273
+ }));
274
+ const {
275
+ zoomSizePromise,
276
+ fontSizePromise
277
+ } = mockFunc.mock.calls[0][0];
278
+ await expect(zoomSizePromise).resolves.toBeUndefined();
279
+ await expect(fontSizePromise).resolves.toBeUndefined();
280
+ });
281
+ test('onAssetsDownloadSuccess should still fire when font and zoom are excluded', async () => {
282
+ const mockFunc = jest.fn();
283
+ render( /*#__PURE__*/React.createElement(DotProvider, {
284
+ excludeFeatures: ['font', 'zoom'],
285
+ onAssetsDownloadSuccess: mockFunc
286
+ }, "This is a DotProvider component"));
287
+ await waitFor(() => {
288
+ expect(mockFunc).toHaveBeenCalled();
289
+ });
290
+ });
291
+ test('should not set theme attributes when theme is excluded', async () => {
292
+ const {
293
+ container
294
+ } = render( /*#__PURE__*/React.createElement(DotProvider, {
295
+ id: "dot-provider",
296
+ excludeFeatures: ['theme'],
297
+ themeAppearance: "dark",
298
+ themeColor: "orange"
299
+ }, "This is a DotProvider component"));
300
+ await waitFor(() => {});
301
+ const el = container.querySelector('#dot-provider');
302
+ expect(el.getAttribute('data-mode')).toBeNull();
303
+ expect(el.getAttribute('data-theme')).toBeNull();
304
+ });
199
305
  }); // need to check error handling cases
200
306
  // onAssetsDownloadSuccess not called verification
@@ -20,6 +20,7 @@ function useDotProvider(_ref) {
20
20
  getProviderElement,
21
21
  zoomUnitVariable,
22
22
  fontUnitVariable,
23
+ excludeFeatures,
23
24
  themeAppearanceAttr,
24
25
  themeColorAttr,
25
26
  onAssetsDownloadSuccess,
@@ -33,6 +34,7 @@ function useDotProvider(_ref) {
33
34
  getProviderElement,
34
35
  zoomUnitVariable,
35
36
  fontUnitVariable,
37
+ excludeFeatures,
36
38
  themeAppearanceAttr,
37
39
  themeColorAttr
38
40
  });
@@ -42,15 +44,15 @@ function useDotProvider(_ref) {
42
44
  zoomSizePromise,
43
45
  fontSizePromise
44
46
  } = assetsPromises;
45
- const allPromises = [...themeAppearancePromise, ...themeColorPromise, zoomSizePromise, fontSizePromise];
46
47
  useLayoutEffect(() => {
48
+ const allPromises = [...themeAppearancePromise, ...themeColorPromise, zoomSizePromise, fontSizePromise];
47
49
  Promise.all(allPromises).then(() => {
48
50
  typeof onAssetsDownloadSuccess === 'function' && onAssetsDownloadSuccess();
49
51
  }).catch(error => {
50
52
  console.error('Error loading assets:', error);
51
53
  });
52
54
  typeof getAssetsPromises === 'function' && getAssetsPromises(assetsPromises);
53
- }, [...allPromises]);
55
+ }, [themeAppearancePromise, themeColorPromise, zoomSizePromise, fontSizePromise]);
54
56
  }
55
57
 
56
58
  export default useDotProvider;
@@ -12,33 +12,50 @@ export default function useDownloadAssetsAndSetAttr(_ref) {
12
12
  getProviderElement,
13
13
  zoomUnitVariable,
14
14
  fontUnitVariable,
15
+ excludeFeatures,
15
16
  themeAppearanceAttr,
16
17
  themeColorAttr
17
18
  } = _ref;
19
+ const excluded = useMemo(() => new Set(excludeFeatures), [excludeFeatures]);
20
+ const needTheme = !excluded.has('theme');
21
+ const needZoom = !excluded.has('zoom');
22
+ const needFont = !excluded.has('font');
18
23
  const themeAppearancePromise = useMemo(() => {
19
- const themeAppearanceAssetPromise = getThemeAppearanceAssetPromise({
24
+ if (!needTheme) {
25
+ return [Promise.resolve()];
26
+ }
27
+
28
+ return getThemeAppearanceAssetPromise({
20
29
  themeAppearance
21
30
  });
22
- return themeAppearanceAssetPromise;
23
- }, [themeAppearance]);
31
+ }, [themeAppearance, needTheme]);
24
32
  const themeColorPromise = useMemo(() => {
25
- const themeColorAssetPromise = getThemeColorAssetPromise({
33
+ if (!needTheme) {
34
+ return [Promise.resolve()];
35
+ }
36
+
37
+ return getThemeColorAssetPromise({
26
38
  themeAppearance,
27
39
  themeColor
28
40
  });
29
- return themeColorAssetPromise;
30
- }, [themeAppearance, themeColor]);
41
+ }, [themeAppearance, themeColor, needTheme]);
31
42
  const modifiedZoomUnitWithSuffix = useMemo(() => {
32
43
  return !isNaN(Number(baseZoomUnit)) ? `${Number(baseZoomUnit)}px` : baseZoomUnit;
33
44
  }, [baseZoomUnit]);
34
45
  const zoomSizePromise = useMemo(() => {
35
- const assetPromise = getZoomSizeAssetPromise();
36
- return assetPromise;
37
- }, []);
46
+ if (!needZoom) {
47
+ return Promise.resolve();
48
+ }
49
+
50
+ return getZoomSizeAssetPromise();
51
+ }, [needZoom]);
38
52
  const fontSizePromise = useMemo(() => {
39
- const assetPromise = getFontSizeAssetPromise();
40
- return assetPromise;
41
- }, []);
53
+ if (!needFont) {
54
+ return Promise.resolve();
55
+ }
56
+
57
+ return getFontSizeAssetPromise();
58
+ }, [needFont]);
42
59
  const combinedPromise = {
43
60
  themeAppearancePromise,
44
61
  themeColorPromise,
@@ -47,6 +64,10 @@ export default function useDownloadAssetsAndSetAttr(_ref) {
47
64
  };
48
65
 
49
66
  function setThemeAttribute() {
67
+ if (!needTheme) {
68
+ return;
69
+ }
70
+
50
71
  const themePromise = [...themeAppearancePromise, ...themeColorPromise];
51
72
  Promise.all(themePromise).then(() => {
52
73
  const providerElement = getProviderElement();
@@ -61,6 +82,10 @@ export default function useDownloadAssetsAndSetAttr(_ref) {
61
82
  }
62
83
 
63
84
  function setZoomSizeAttribute() {
85
+ if (!needZoom) {
86
+ return;
87
+ }
88
+
64
89
  zoomSizePromise.then(() => {
65
90
  const providerElement = getProviderElement();
66
91
 
@@ -73,6 +98,10 @@ export default function useDownloadAssetsAndSetAttr(_ref) {
73
98
  }
74
99
 
75
100
  function setFontSizeAttribute() {
101
+ if (!needFont) {
102
+ return;
103
+ }
104
+
76
105
  fontSizePromise.then(() => {
77
106
  const providerElement = getProviderElement();
78
107
 
@@ -86,12 +115,12 @@ export default function useDownloadAssetsAndSetAttr(_ref) {
86
115
 
87
116
  useLayoutEffect(() => {
88
117
  setThemeAttribute();
89
- }, [themeAppearanceAttr, themeColorAttr, themeAppearance, themeColor, getProviderElement]);
118
+ }, [themeAppearanceAttr, themeColorAttr, themeAppearance, themeColor, getProviderElement, needTheme]);
90
119
  useLayoutEffect(() => {
91
120
  setZoomSizeAttribute();
92
- }, [zoomUnitVariable, modifiedZoomUnitWithSuffix, getProviderElement]);
121
+ }, [zoomUnitVariable, modifiedZoomUnitWithSuffix, zoomSizePromise, getProviderElement, needZoom]);
93
122
  useLayoutEffect(() => {
94
123
  setFontSizeAttribute();
95
- }, [fontUnitVariable, baseFontUnit, getProviderElement]);
124
+ }, [fontUnitVariable, baseFontUnit, fontSizePromise, getProviderElement, needFont]);
96
125
  return combinedPromise;
97
126
  }
@@ -1,4 +1,5 @@
1
1
  import { THEME_APPEARANCE_LIGHT, THEME_COLOR_BLUE } from "../utils/constants";
2
+ import { DUMMY_ARRAY } from '@zohodesk/utils';
2
3
  export const defaultProps = {
3
4
  themeAppearance: THEME_APPEARANCE_LIGHT,
4
5
  themeColor: THEME_COLOR_BLUE,
@@ -6,6 +7,7 @@ export const defaultProps = {
6
7
  baseFontUnit: '16px',
7
8
  zoomUnitVariable: '--zd_baseUnit',
8
9
  fontUnitVariable: '--zd_baseFontUnit',
10
+ excludeFeatures: DUMMY_ARRAY,
9
11
  themeAppearanceAttr: 'data-mode',
10
12
  themeColorAttr: 'data-theme'
11
13
  };
@@ -7,6 +7,7 @@ export const propTypes = {
7
7
  baseFontUnit: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
8
8
  zoomUnitVariable: PropTypes.string,
9
9
  fontUnitVariable: PropTypes.string,
10
+ excludeFeatures: PropTypes.arrayOf(PropTypes.string),
10
11
  themeAppearanceAttr: PropTypes.string,
11
12
  themeColorAttr: PropTypes.string,
12
13
  providerRef: PropTypes.func,