@redvars/peacock 3.5.0 → 3.6.0

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 (314) hide show
  1. package/dist/BaseButton-BNFAYn-S.js +219 -0
  2. package/dist/BaseButton-BNFAYn-S.js.map +1 -0
  3. package/dist/BaseHyperlinkMixin-BNuwbiEf.js +65 -0
  4. package/dist/BaseHyperlinkMixin-BNuwbiEf.js.map +1 -0
  5. package/dist/BaseInput-14YmcfK7.js +27 -0
  6. package/dist/BaseInput-14YmcfK7.js.map +1 -0
  7. package/dist/assets/components.css +1 -1
  8. package/dist/assets/components.css.map +1 -1
  9. package/dist/assets/styles.css +1 -1
  10. package/dist/assets/styles.css.map +1 -1
  11. package/dist/banner.js +14 -30
  12. package/dist/banner.js.map +1 -1
  13. package/dist/{button-DMN1dPAg.js → button-colors-Ccys3hvS.js} +5 -468
  14. package/dist/button-colors-Ccys3hvS.js.map +1 -0
  15. package/dist/button-group.js +228 -8
  16. package/dist/button-group.js.map +1 -1
  17. package/dist/button.js +294 -8
  18. package/dist/button.js.map +1 -1
  19. package/dist/calendar-column-view.js +634 -0
  20. package/dist/calendar-column-view.js.map +1 -0
  21. package/dist/calendar-event-BrQ_SEKD.js +199 -0
  22. package/dist/calendar-event-BrQ_SEKD.js.map +1 -0
  23. package/dist/calendar-month-view.js +376 -0
  24. package/dist/calendar-month-view.js.map +1 -0
  25. package/dist/calendar.js +339 -0
  26. package/dist/calendar.js.map +1 -0
  27. package/dist/canvas.js +361 -0
  28. package/dist/canvas.js.map +1 -0
  29. package/dist/card.js +18 -73
  30. package/dist/card.js.map +1 -1
  31. package/dist/cb-compound-expression.js +125 -0
  32. package/dist/cb-compound-expression.js.map +1 -0
  33. package/dist/cb-divider.js +150 -0
  34. package/dist/cb-divider.js.map +1 -0
  35. package/dist/cb-expression.js +75 -0
  36. package/dist/cb-expression.js.map +1 -0
  37. package/dist/cb-predicate.js +137 -0
  38. package/dist/cb-predicate.js.map +1 -0
  39. package/dist/chart-bar.js.map +1 -1
  40. package/dist/chart-doughnut.js +2 -2
  41. package/dist/chart-doughnut.js.map +1 -1
  42. package/dist/chart-pie.js +2 -2
  43. package/dist/chart-pie.js.map +1 -1
  44. package/dist/chart-stacked-bar.js.map +1 -1
  45. package/dist/code-editor.js +2 -1
  46. package/dist/code-editor.js.map +1 -1
  47. package/dist/code-highlighter.js +2 -1
  48. package/dist/code-highlighter.js.map +1 -1
  49. package/dist/condition-builder.js +58 -0
  50. package/dist/condition-builder.js.map +1 -0
  51. package/dist/custom-elements-jsdocs.json +10860 -5567
  52. package/dist/custom-elements.json +16180 -7996
  53. package/dist/dropdown-button.js +216 -0
  54. package/dist/dropdown-button.js.map +1 -0
  55. package/dist/event-manager-D-QCmUgR.js +113 -0
  56. package/dist/event-manager-D-QCmUgR.js.map +1 -0
  57. package/dist/fab.js +421 -9
  58. package/dist/fab.js.map +1 -1
  59. package/dist/flow-designer-dZnLJOQT.js +1656 -0
  60. package/dist/flow-designer-dZnLJOQT.js.map +1 -0
  61. package/dist/flow-designer-node-XMe-jlKg.js +548 -0
  62. package/dist/flow-designer-node-XMe-jlKg.js.map +1 -0
  63. package/dist/flow-designer-node.js +4 -0
  64. package/dist/flow-designer-node.js.map +1 -0
  65. package/dist/flow-designer.js +16 -0
  66. package/dist/flow-designer.js.map +1 -0
  67. package/dist/html-editor.js +358 -0
  68. package/dist/html-editor.js.map +1 -0
  69. package/dist/icon-button-CK1ZuE-2.js +247 -0
  70. package/dist/icon-button-CK1ZuE-2.js.map +1 -0
  71. package/dist/index.js +31 -8
  72. package/dist/index.js.map +1 -1
  73. package/dist/{is-dark-mode-DicqGkCJ.js → is-dark-mode-DOcaw4Yq.js} +2 -27
  74. package/dist/is-dark-mode-DOcaw4Yq.js.map +1 -0
  75. package/dist/modal.js +418 -0
  76. package/dist/modal.js.map +1 -0
  77. package/dist/{select-4pl4XBj7.js → navigation-rail-DyO0oAZU.js} +2000 -2767
  78. package/dist/navigation-rail-DyO0oAZU.js.map +1 -0
  79. package/dist/notification-manager.js +268 -0
  80. package/dist/notification-manager.js.map +1 -0
  81. package/dist/notification.js +3 -2
  82. package/dist/notification.js.map +1 -1
  83. package/dist/peacock-loader.js +102 -14
  84. package/dist/peacock-loader.js.map +1 -1
  85. package/dist/popover-NC7b1lTq.js +1971 -0
  86. package/dist/popover-NC7b1lTq.js.map +1 -0
  87. package/dist/popover-content.js +125 -0
  88. package/dist/popover-content.js.map +1 -0
  89. package/dist/popover.js +4 -0
  90. package/dist/popover.js.map +1 -0
  91. package/dist/search.js +4 -0
  92. package/dist/search.js.map +1 -1
  93. package/dist/split-button.js +388 -0
  94. package/dist/split-button.js.map +1 -0
  95. package/dist/src/__controllers/floating-controller.d.ts +35 -0
  96. package/dist/src/__mixins/BaseButtonMixin.d.ts +20 -0
  97. package/dist/src/__mixins/BaseHyperlinkMixin.d.ts +18 -0
  98. package/dist/src/__mixins/MixinConstructor.d.ts +1 -0
  99. package/dist/src/banner/banner.d.ts +0 -4
  100. package/dist/src/button/BaseButton.d.ts +4 -47
  101. package/dist/src/button/button/button.d.ts +32 -3
  102. package/dist/src/button/button-group/button-group.d.ts +2 -2
  103. package/dist/src/button/icon-button/icon-button.d.ts +33 -8
  104. package/dist/src/calendar/base-event.d.ts +10 -0
  105. package/dist/src/calendar/calendar-column-view.d.ts +41 -0
  106. package/dist/src/calendar/calendar-event.d.ts +7 -0
  107. package/dist/src/calendar/calendar-month-view.d.ts +31 -0
  108. package/dist/src/calendar/calendar.d.ts +65 -0
  109. package/dist/src/calendar/event-manager.d.ts +17 -0
  110. package/dist/src/calendar/index.d.ts +4 -0
  111. package/dist/src/calendar/types.d.ts +13 -0
  112. package/dist/src/calendar/utils.d.ts +31 -0
  113. package/dist/src/canvas/canvas.d.ts +92 -0
  114. package/dist/src/canvas/index.d.ts +2 -0
  115. package/dist/src/card/card.d.ts +4 -15
  116. package/dist/src/condition-builder/cb-compound-expression.d.ts +31 -0
  117. package/dist/src/condition-builder/cb-divider.d.ts +26 -0
  118. package/dist/src/condition-builder/cb-expression.d.ts +31 -0
  119. package/dist/src/condition-builder/cb-predicate.d.ts +30 -0
  120. package/dist/src/condition-builder/condition-builder.d.ts +27 -0
  121. package/dist/src/condition-builder/index.d.ts +5 -0
  122. package/dist/src/dropdown-button/dropdown-button.d.ts +68 -0
  123. package/dist/src/dropdown-button/index.d.ts +1 -0
  124. package/dist/src/fab/fab.d.ts +4 -35
  125. package/dist/src/flow-designer/commands.d.ts +66 -0
  126. package/dist/src/flow-designer/flow-designer-node.d.ts +46 -0
  127. package/dist/src/flow-designer/flow-designer.d.ts +133 -0
  128. package/dist/src/flow-designer/index.d.ts +7 -0
  129. package/dist/src/flow-designer/layout.d.ts +30 -0
  130. package/dist/src/flow-designer/types.d.ts +142 -0
  131. package/dist/src/flow-designer/validation.d.ts +43 -0
  132. package/dist/src/flow-designer/workflow-utils.d.ts +40 -0
  133. package/dist/src/focus-ring/focus-ring.d.ts +11 -5
  134. package/dist/src/html-editor/html-editor.d.ts +56 -0
  135. package/dist/src/html-editor/index.d.ts +2 -0
  136. package/dist/src/index.d.ts +16 -1
  137. package/dist/src/link/link.d.ts +1 -1
  138. package/dist/src/menu/menu/menu.d.ts +5 -7
  139. package/dist/src/menu/menu-item/menu-item.d.ts +14 -13
  140. package/dist/src/modal/index.d.ts +1 -0
  141. package/dist/src/modal/modal.d.ts +63 -0
  142. package/dist/src/navigation-rail/index.d.ts +2 -0
  143. package/dist/src/navigation-rail/navigation-rail-item.d.ts +55 -0
  144. package/dist/src/navigation-rail/navigation-rail.d.ts +71 -0
  145. package/dist/src/notification-manager/index.d.ts +1 -0
  146. package/dist/src/notification-manager/notification-manager.d.ts +44 -0
  147. package/dist/src/popover/index.d.ts +2 -0
  148. package/dist/src/popover/popover-content.d.ts +29 -0
  149. package/dist/src/popover/popover.d.ts +62 -0
  150. package/dist/src/sidebar-menu/index.d.ts +3 -0
  151. package/dist/src/sidebar-menu/sidebar-menu-item.d.ts +58 -0
  152. package/dist/src/sidebar-menu/sidebar-menu.d.ts +38 -0
  153. package/dist/src/sidebar-menu/sidebar-sub-menu.d.ts +35 -0
  154. package/dist/src/split-button/index.d.ts +1 -0
  155. package/dist/src/split-button/split-button.d.ts +72 -0
  156. package/dist/src/toolbar/toolbar.d.ts +10 -10
  157. package/dist/src/tooltip/tooltip.d.ts +5 -15
  158. package/dist/src/url-field/index.d.ts +1 -0
  159. package/dist/src/url-field/url-field.d.ts +48 -0
  160. package/dist/test/flow-designer.test.d.ts +1 -0
  161. package/dist/test/sidebar-menu.test.d.ts +1 -0
  162. package/dist/toolbar.js +10 -10
  163. package/dist/toolbar.js.map +1 -1
  164. package/dist/tsconfig.tsbuildinfo +1 -1
  165. package/package.json +4 -2
  166. package/readme.md +73 -65
  167. package/scss/mixin.scss +16 -0
  168. package/src/__controllers/floating-controller.ts +237 -0
  169. package/src/__mixins/BaseButtonMixin.ts +83 -0
  170. package/src/__mixins/BaseHyperlinkMixin.ts +68 -0
  171. package/src/__mixins/MixinConstructor.ts +1 -0
  172. package/src/{__base_element → __mixins}/README.md +2 -2
  173. package/src/banner/banner.scss +20 -25
  174. package/src/banner/banner.ts +1 -7
  175. package/src/button/BaseButton.ts +11 -100
  176. package/src/button/button/button-sizes.scss +4 -2
  177. package/src/button/button/button.ts +77 -23
  178. package/src/button/button-group/button-group.ts +2 -2
  179. package/src/button/icon-button/icon-button.ts +75 -33
  180. package/src/calendar/base-event.ts +49 -0
  181. package/src/calendar/calendar-column-view.scss +326 -0
  182. package/src/calendar/calendar-column-view.ts +392 -0
  183. package/src/calendar/calendar-event.ts +20 -0
  184. package/src/calendar/calendar-month-view.scss +192 -0
  185. package/src/calendar/calendar-month-view.ts +244 -0
  186. package/src/calendar/calendar.scss +71 -0
  187. package/src/calendar/calendar.ts +298 -0
  188. package/src/calendar/event-manager.ts +117 -0
  189. package/src/calendar/index.ts +4 -0
  190. package/src/calendar/types.ts +14 -0
  191. package/src/calendar/utils.ts +180 -0
  192. package/src/canvas/canvas.scss +60 -0
  193. package/src/canvas/canvas.ts +391 -0
  194. package/src/canvas/index.ts +2 -0
  195. package/src/card/card.ts +11 -71
  196. package/src/chart-bar/chart-bar.ts +9 -14
  197. package/src/chart-bar/chart-stacked-bar.ts +12 -18
  198. package/src/chart-doughnut/chart-doughnut.ts +23 -27
  199. package/src/chart-pie/chart-pie.ts +19 -23
  200. package/src/checkbox/checkbox.scss +17 -34
  201. package/src/checkbox/checkbox.ts +3 -1
  202. package/src/code-highlighter/code-highlighter.scss +1 -0
  203. package/src/code-highlighter/code-highlighter.ts +1 -1
  204. package/src/condition-builder/cb-compound-expression.scss +37 -0
  205. package/src/condition-builder/cb-compound-expression.ts +80 -0
  206. package/src/condition-builder/cb-divider.scss +93 -0
  207. package/src/condition-builder/cb-divider.ts +56 -0
  208. package/src/condition-builder/cb-expression.scss +14 -0
  209. package/src/condition-builder/cb-expression.ts +49 -0
  210. package/src/condition-builder/cb-predicate.scss +35 -0
  211. package/src/condition-builder/cb-predicate.ts +102 -0
  212. package/src/condition-builder/condition-builder.scss +13 -0
  213. package/src/condition-builder/condition-builder.ts +38 -0
  214. package/src/condition-builder/index.ts +5 -0
  215. package/src/date-picker/date-picker.ts +1 -1
  216. package/src/dropdown-button/demo/index.html +110 -0
  217. package/src/dropdown-button/dropdown-button.scss +22 -0
  218. package/src/dropdown-button/dropdown-button.ts +206 -0
  219. package/src/dropdown-button/index.ts +1 -0
  220. package/src/elevation/elevation.scss +5 -5
  221. package/src/fab/fab.ts +29 -100
  222. package/src/flow-designer/DEMO.md +239 -0
  223. package/src/flow-designer/commands.ts +278 -0
  224. package/src/flow-designer/flow-designer-node.ts +172 -0
  225. package/src/flow-designer/flow-designer.scss +457 -0
  226. package/src/flow-designer/flow-designer.ts +611 -0
  227. package/src/flow-designer/index.ts +41 -0
  228. package/src/flow-designer/layout.ts +357 -0
  229. package/src/flow-designer/types.ts +166 -0
  230. package/src/flow-designer/validation.ts +284 -0
  231. package/src/flow-designer/workflow-utils.ts +282 -0
  232. package/src/focus-ring/focus-ring.ts +47 -40
  233. package/src/html-editor/html-editor.scss +146 -0
  234. package/src/html-editor/html-editor.ts +276 -0
  235. package/src/html-editor/index.ts +3 -0
  236. package/src/index.ts +28 -1
  237. package/src/input/input.ts +3 -1
  238. package/src/link/link.ts +2 -2
  239. package/src/menu/menu/menu.scss +2 -2
  240. package/src/menu/menu/menu.ts +91 -101
  241. package/src/menu/menu-item/menu-item.scss +4 -0
  242. package/src/menu/menu-item/menu-item.ts +85 -79
  243. package/src/modal/index.ts +1 -0
  244. package/src/modal/modal.scss +206 -0
  245. package/src/modal/modal.ts +201 -0
  246. package/src/navigation-rail/index.ts +2 -0
  247. package/src/navigation-rail/navigation-rail-item.scss +216 -0
  248. package/src/navigation-rail/navigation-rail-item.ts +223 -0
  249. package/src/navigation-rail/navigation-rail.scss +72 -0
  250. package/src/navigation-rail/navigation-rail.ts +149 -0
  251. package/src/notification/notification.ts +3 -2
  252. package/src/notification-manager/index.ts +1 -0
  253. package/src/notification-manager/notification-manager.scss +113 -0
  254. package/src/notification-manager/notification-manager.ts +199 -0
  255. package/src/number-field/number-field.ts +6 -4
  256. package/src/pagination/pagination.ts +6 -4
  257. package/src/peacock-loader.ts +93 -5
  258. package/src/popover/index.ts +2 -0
  259. package/src/popover/popover-content.scss +69 -0
  260. package/src/popover/popover-content.ts +51 -0
  261. package/src/popover/popover.scss +7 -0
  262. package/src/popover/popover.ts +170 -0
  263. package/src/search/search.ts +4 -0
  264. package/src/sidebar-menu/demo/index.html +68 -0
  265. package/src/sidebar-menu/index.ts +3 -0
  266. package/src/sidebar-menu/sidebar-menu-item.scss +102 -0
  267. package/src/sidebar-menu/sidebar-menu-item.ts +151 -0
  268. package/src/{tree-view/tree-view.scss → sidebar-menu/sidebar-menu.scss} +1 -1
  269. package/src/sidebar-menu/sidebar-menu.ts +182 -0
  270. package/src/sidebar-menu/sidebar-sub-menu.scss +130 -0
  271. package/src/sidebar-menu/sidebar-sub-menu.ts +160 -0
  272. package/src/skeleton/skeleton.scss +18 -24
  273. package/src/snackbar/snackbar.ts +1 -1
  274. package/src/split-button/index.ts +1 -0
  275. package/src/split-button/split-button-colors.scss +56 -0
  276. package/src/split-button/split-button-sizes.scss +28 -0
  277. package/src/split-button/split-button.scss +79 -0
  278. package/src/split-button/split-button.ts +236 -0
  279. package/src/table/table.ts +2 -2
  280. package/src/tabs/tab.ts +4 -3
  281. package/src/text/text.css-component.scss +7 -1
  282. package/src/time-picker/time-picker.ts +1 -1
  283. package/src/toolbar/toolbar.ts +10 -10
  284. package/src/tooltip/tooltip.scss +4 -3
  285. package/src/tooltip/tooltip.ts +64 -98
  286. package/src/url-field/index.ts +1 -0
  287. package/src/url-field/url-field.scss +50 -0
  288. package/src/url-field/url-field.ts +239 -0
  289. package/dist/button-DMN1dPAg.js.map +0 -1
  290. package/dist/button-group-CX9CUUXk.js +0 -435
  291. package/dist/button-group-CX9CUUXk.js.map +0 -1
  292. package/dist/fab-C5Nzxk0E.js +0 -497
  293. package/dist/fab-C5Nzxk0E.js.map +0 -1
  294. package/dist/is-dark-mode-DicqGkCJ.js.map +0 -1
  295. package/dist/select-4pl4XBj7.js.map +0 -1
  296. package/dist/spread-B5cgadZl.js +0 -32
  297. package/dist/spread-B5cgadZl.js.map +0 -1
  298. package/dist/src/__base_element/BaseHyperlink.d.ts +0 -20
  299. package/dist/src/menu/menu/MenuSurfaceController.d.ts +0 -18
  300. package/dist/src/tree-view/index.d.ts +0 -2
  301. package/dist/src/tree-view/tree-node.d.ts +0 -69
  302. package/dist/src/tree-view/tree-view.d.ts +0 -40
  303. package/dist/src/tree-view/wc-tree-view.d.ts +0 -6
  304. package/dist/test/tree-view.test.d.ts +0 -1
  305. package/dist/throttle-C7ZAPqtu.js +0 -24
  306. package/dist/throttle-C7ZAPqtu.js.map +0 -1
  307. package/src/__base_element/BaseHyperlink.ts +0 -42
  308. package/src/menu/menu/MenuSurfaceController.ts +0 -61
  309. package/src/tree-view/demo/index.html +0 -57
  310. package/src/tree-view/index.ts +0 -2
  311. package/src/tree-view/tree-node.scss +0 -101
  312. package/src/tree-view/tree-node.ts +0 -268
  313. package/src/tree-view/tree-view.ts +0 -182
  314. package/src/tree-view/wc-tree-view.ts +0 -9
@@ -0,0 +1,130 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+
8
+ --sidebar-menu-item-height: 3rem;
9
+ --sidebar-menu-item-border-radius: var(--global-shape-corner-full, 9999px);
10
+ --sidebar-menu-item-label-color: var(--color-on-surface);
11
+ --sidebar-menu-item-icon-color: var(--color-on-surface-variant);
12
+ --sidebar-menu-item-selected-background: var(--color-secondary-container);
13
+ --sidebar-menu-item-selected-color: var(--color-on-secondary-container);
14
+ --sidebar-menu-item-focus-ring-color: var(--color-primary);
15
+ }
16
+
17
+ .sidebar-sub-menu {
18
+ display: block;
19
+ }
20
+
21
+ .sidebar-sub-menu-inner {
22
+ position: relative;
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 0.5rem;
26
+ min-height: var(--sidebar-menu-item-height);
27
+ cursor: pointer;
28
+ border-radius: var(--sidebar-menu-item-border-radius);
29
+ outline: none;
30
+ padding-inline-end: 0.75rem;
31
+ color: var(--_label-color);
32
+
33
+ --_container-color: transparent;
34
+ --_container-opacity: 1;
35
+ --_label-color: var(--sidebar-menu-item-label-color);
36
+
37
+ @include mixin.get-typography(label-large);
38
+
39
+ &.selected {
40
+ --_container-color: var(--sidebar-menu-item-selected-background);
41
+ --_label-color: var(--sidebar-menu-item-selected-color);
42
+ }
43
+
44
+ &.disabled {
45
+ cursor: not-allowed;
46
+ opacity: 0.6;
47
+
48
+ .ripple {
49
+ display: none;
50
+ }
51
+ }
52
+ }
53
+
54
+ .sidebar-sub-menu-content {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 0.25rem;
58
+ flex: 1;
59
+ min-height: var(--sidebar-menu-item-height);
60
+ color: inherit;
61
+ user-select: none;
62
+ text-decoration: none;
63
+ outline: none;
64
+ padding-inline: 0.75rem;
65
+ z-index: 1;
66
+ }
67
+
68
+ .background {
69
+ position: absolute;
70
+ inset: 0;
71
+ background-color: var(--_container-color);
72
+ opacity: var(--_container-opacity);
73
+ border-radius: inherit;
74
+ pointer-events: none;
75
+ }
76
+
77
+ .focus-ring {
78
+ z-index: 2;
79
+ --focus-ring-color: var(--sidebar-menu-item-focus-ring-color);
80
+ --focus-ring-container-shape-start-start: var(--sidebar-menu-item-border-radius);
81
+ --focus-ring-container-shape-start-end: var(--sidebar-menu-item-border-radius);
82
+ --focus-ring-container-shape-end-start: var(--sidebar-menu-item-border-radius);
83
+ --focus-ring-container-shape-end-end: var(--sidebar-menu-item-border-radius);
84
+ }
85
+
86
+ .ripple {
87
+ --ripple-pressed-color: var(--color-on-surface);
88
+ border-radius: inherit;
89
+ }
90
+
91
+ .sidebar-sub-menu-inner.selected .ripple {
92
+ --ripple-pressed-color: var(--sidebar-menu-item-selected-color);
93
+ }
94
+
95
+ .sidebar-sub-menu-label {
96
+ flex: 1;
97
+ overflow: hidden;
98
+ text-overflow: ellipsis;
99
+ white-space: nowrap;
100
+ }
101
+
102
+ .expand-icon {
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ color: var(--sidebar-menu-item-icon-color);
107
+ flex-shrink: 0;
108
+ width: var(--sidebar-menu-item-height);
109
+ height: var(--sidebar-menu-item-height);
110
+ transition: transform var(--duration-medium1) var(--easing-standard);
111
+ }
112
+
113
+ :host([expanded]) .expand-icon {
114
+ transform: rotate(180deg);
115
+ }
116
+
117
+ .sidebar-sub-menu-children {
118
+ display: block;
119
+ overflow: hidden;
120
+ margin-left: var(--spacing-200);
121
+ max-height: 9999px;
122
+ opacity: 1;
123
+ transition: max-height var(--duration-medium1) var(--easing-standard),
124
+ opacity var(--duration-medium1) var(--easing-standard);
125
+ }
126
+
127
+ .sidebar-sub-menu-children.hidden {
128
+ max-height: 0;
129
+ opacity: 0;
130
+ }
@@ -0,0 +1,160 @@
1
+ import { html, LitElement } from 'lit';
2
+ import { property, query } from 'lit/decorators.js';
3
+ import { classMap } from 'lit/directives/class-map.js';
4
+ import { styleMap } from 'lit/directives/style-map.js';
5
+ import styles from './sidebar-sub-menu.scss';
6
+
7
+ /**
8
+ * @label Sidebar Sub Menu
9
+ * @tag wc-sidebar-sub-menu
10
+ * @rawTag sidebar-sub-menu
11
+ * @parentRawTag sidebar-menu
12
+ * @summary A sidebar sub menu groups sidebar menu items and handles expand/collapse behavior.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <wc-sidebar-sub-menu label="Parent" expanded>
17
+ * <wc-sidebar-menu-item label="Child"></wc-sidebar-menu-item>
18
+ * </wc-sidebar-sub-menu>
19
+ * ```
20
+ * @tags navigation
21
+ */
22
+ export class SidebarSubMenu extends LitElement {
23
+ static styles = [styles];
24
+
25
+ @property({ type: String, reflect: true })
26
+ value: string = '';
27
+
28
+ @property({ type: String, reflect: true })
29
+ label: string = '';
30
+
31
+ @property({ type: String, reflect: true })
32
+ icon: string = '';
33
+
34
+ @property({ type: Boolean, reflect: true })
35
+ disabled: boolean = false;
36
+
37
+ @property({ type: Boolean, reflect: true })
38
+ selected: boolean = false;
39
+
40
+ @property({ type: Boolean, reflect: true })
41
+ expanded: boolean = false;
42
+
43
+ @property({ type: Number, reflect: true })
44
+ level: number = 0;
45
+
46
+ @query('.sidebar-sub-menu-inner')
47
+ private readonly _nativeElement!: HTMLElement | null;
48
+
49
+ override focus() {
50
+ this._nativeElement?.focus();
51
+ }
52
+
53
+ override blur() {
54
+ this._nativeElement?.blur();
55
+ }
56
+
57
+ connectedCallback() {
58
+ super.connectedCallback();
59
+ this._updateChildLevels();
60
+ }
61
+
62
+ updated(changedProps: Map<string, unknown>) {
63
+ super.updated(changedProps);
64
+
65
+ if (changedProps.has('expanded')) {
66
+ this.setAttribute('aria-expanded', String(this.expanded));
67
+ if (this.expanded) {
68
+ this.setAttribute('data-expanded', '');
69
+ } else {
70
+ this.removeAttribute('data-expanded');
71
+ }
72
+ }
73
+ }
74
+
75
+ private _getChildNodes(): Element[] {
76
+ return Array.from(this.children).filter(el => {
77
+ const tag = el.tagName.toLowerCase();
78
+ return tag === 'wc-sidebar-menu-item' || tag === 'wc-sidebar-sub-menu';
79
+ });
80
+ }
81
+
82
+ private _updateChildLevels = () => {
83
+ this._getChildNodes().forEach(child => {
84
+ if ('level' in child) {
85
+ // eslint-disable-next-line no-param-reassign
86
+ (child as { level: number }).level = this.level + 1;
87
+ }
88
+ });
89
+ };
90
+
91
+ private _onClick = () => {
92
+ if (this.disabled) return;
93
+
94
+ if (this._getChildNodes().length > 0) {
95
+ this.expanded = !this.expanded;
96
+ }
97
+
98
+ this.dispatchEvent(
99
+ new CustomEvent('sidebar-menu-item:click', {
100
+ bubbles: true,
101
+ composed: true,
102
+ detail: { value: this.value, label: this.label },
103
+ }),
104
+ );
105
+ };
106
+
107
+ override render() {
108
+ const hasChildren = this._getChildNodes().length > 0;
109
+ const wrapperClasses = classMap({
110
+ 'sidebar-sub-menu': true,
111
+ });
112
+ const innerClasses = classMap({
113
+ 'sidebar-sub-menu-inner': true,
114
+ disabled: this.disabled,
115
+ selected: this.selected,
116
+ });
117
+
118
+ const inlineStyles = styleMap({
119
+ paddingLeft: `calc(var(--sidebar-menu-item-height, 2.5rem) * ${this.level})`,
120
+ });
121
+
122
+ return html`
123
+ <div class="${wrapperClasses}" style="${inlineStyles}">
124
+ <div
125
+ id="item"
126
+ class="${innerClasses}"
127
+ role="treeitem"
128
+ aria-label="${this.label}"
129
+ aria-selected="${String(this.selected)}"
130
+ aria-disabled="${this.disabled}"
131
+ aria-expanded="${this.expanded}"
132
+ @click="${this._onClick}"
133
+ @keydown="${(e: KeyboardEvent) => {
134
+ if (e.key === 'Enter' || e.key === ' ') {
135
+ e.preventDefault();
136
+ this._onClick();
137
+ }
138
+ }}"
139
+ tabindex="${this.disabled ? -1 : 0}"
140
+ >
141
+ <wc-focus-ring class="focus-ring" for="item"></wc-focus-ring>
142
+ <div class="background"></div>
143
+ <wc-ripple class="ripple"></wc-ripple>
144
+ <div class="sidebar-sub-menu-content">
145
+ ${this.icon ? html`<wc-icon name="${this.icon}"></wc-icon>` : ''}
146
+ <span class="sidebar-sub-menu-label">${this.label}</span>
147
+ </div>
148
+ ${hasChildren
149
+ ? html`
150
+ <wc-icon class="expand-icon" name="arrow_drop_down" aria-hidden="true"></wc-icon>
151
+ `
152
+ : ''}
153
+ </div>
154
+ <div class="sidebar-sub-menu-children ${(!hasChildren || !this.expanded) ? 'hidden' : ''}">
155
+ <slot @slotchange="${this._updateChildLevels}"></slot>
156
+ </div>
157
+ </div>
158
+ `;
159
+ }
160
+ }
@@ -1,43 +1,37 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+
6
+
7
+
1
8
  :host {
9
+ position: relative;
10
+ inset: 0;
2
11
  --skeleton-container-color: var(--color-surface-container);
3
12
  --skeleton-element: var(--color-on-surface);
4
- display: inline-block;
5
- height: 3rem;
6
- width: 10rem;
13
+ display: flex;
14
+ pointer-events: none;
15
+ }
16
+
17
+ .skeleton,
18
+ .skeleton::before {
19
+ inset: 0;
20
+ position: absolute;
21
+ @include mixin.apply-container-shape(skeleton);
7
22
  }
8
23
 
9
24
  .skeleton {
10
- position: relative;
11
- padding: 0;
12
- border: none;
13
25
  background: var(--skeleton-container-color);
14
- box-shadow: none;
15
26
  overflow: hidden;
16
- pointer-events: none;
17
- width: 100%;
18
- height: 100%;
19
- border-start-start-radius: var(--skeleton-container-shape-start-start);
20
- border-start-end-radius: var(--skeleton-container-shape-start-end);
21
- border-end-start-radius: var(--skeleton-container-shape-end-start);
22
- border-end-end-radius: var(--skeleton-container-shape-end-end);
23
- corner-shape: var(--skeleton-container-shape-variant);
24
27
 
25
28
  &::before {
26
- position: absolute;
27
- left: 0;
28
- top: 0;
29
29
  animation: 3s ease-in-out skeleton infinite;
30
30
  background: var(--skeleton-element);
31
31
  block-size: 100%;
32
32
  content: "";
33
33
  inline-size: 100%;
34
34
  will-change: transform-origin, transform, opacity;
35
-
36
- border-start-start-radius: var(--skeleton-container-shape-start-start);
37
- border-start-end-radius: var(--skeleton-container-shape-start-end);
38
- border-end-start-radius: var(--skeleton-container-shape-end-start);
39
- border-end-end-radius: var(--skeleton-container-shape-end-end);
40
- corner-shape: var(--skeleton-container-shape-variant);
41
35
  }
42
36
  }
43
37
 
@@ -221,8 +221,8 @@ export class Snackbar extends LitElement {
221
221
  size='small'
222
222
  aria-label="Dismiss notification"
223
223
  @click=${this.handleCloseClick}
224
- name="close"
225
224
  >
225
+ <wc-icon name="close"></wc-icon>
226
226
  </wc-icon-button>`
227
227
  : nothing}
228
228
  </div>
@@ -0,0 +1 @@
1
+ export { SplitButton } from './split-button.js';
@@ -0,0 +1,56 @@
1
+ @mixin _split-button-color($color) {
2
+ --filled-split-button-container-color: var(--color-#{$color});
3
+ --filled-split-button-label-text-color: var(--color-on-#{$color});
4
+
5
+ --tonal-split-button-container-color: var(--color-#{$color}-container);
6
+ --tonal-split-button-label-text-color: var(--color-on-#{$color}-container);
7
+
8
+ --outlined-split-button-outline-color: var(--color-#{$color});
9
+ --outlined-split-button-label-text-color: var(--color-#{$color});
10
+ }
11
+
12
+ :host([color=primary]) {
13
+ @include _split-button-color(primary);
14
+ }
15
+
16
+ :host([color=secondary]) {
17
+ @include _split-button-color(secondary);
18
+ }
19
+
20
+ :host([color=tertiary]) {
21
+ @include _split-button-color(tertiary);
22
+ }
23
+
24
+ :host([color=success]) {
25
+ @include _split-button-color(success);
26
+ }
27
+
28
+ :host([color=danger]) {
29
+ @include _split-button-color(error);
30
+ }
31
+
32
+ :host([color=warning]) {
33
+ @include _split-button-color(warning);
34
+ }
35
+
36
+ :host([color=on-surface]) {
37
+ --filled-split-button-container-color: var(--color-on-surface);
38
+ --filled-split-button-label-text-color: var(--color-surface);
39
+
40
+ --tonal-split-button-container-color: var(--color-on-surface-container);
41
+ --tonal-split-button-label-text-color: var(--color-surface-container-high);
42
+
43
+ --outlined-split-button-outline-color: var(--color-on-surface);
44
+ --outlined-split-button-label-text-color: var(--color-on-surface);
45
+ }
46
+
47
+ :host([color=surface]) {
48
+ --filled-split-button-container-color: var(--color-surface-container-high);
49
+ --filled-split-button-label-text-color: var(--color-on-surface);
50
+
51
+ --tonal-split-button-container-color: var(--color-surface-container-high);
52
+ --tonal-split-button-label-text-color: var(--color-on-surface-container);
53
+
54
+ --outlined-split-button-outline-color: var(--color-on-surface);
55
+ --outlined-split-button-label-text-color: var(--color-on-surface);
56
+ }
@@ -0,0 +1,28 @@
1
+ :host([size='xs']),
2
+ :host([size='extra-small']) {
3
+ --split-button-icon-size: 1rem;
4
+ }
5
+
6
+
7
+ :host([size='sm']),
8
+ :host([size='small']) {
9
+ --split-button-icon-size: 1.125rem;
10
+ }
11
+
12
+
13
+ :host([size='md']),
14
+ :host([size='medium']) {
15
+ --split-button-icon-size: 1.25rem;
16
+ }
17
+
18
+
19
+ :host([size='lg']),
20
+ :host([size='large']) {
21
+ --split-button-icon-size: 1.5rem;
22
+ }
23
+
24
+
25
+ :host([size='xl']),
26
+ :host([size='extra-large']) {
27
+ --split-button-icon-size: 2rem;
28
+ }
@@ -0,0 +1,79 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: inline-flex;
7
+ position: relative;
8
+
9
+ --split-button-container-shape: var(--shape-corner-medium);
10
+ --split-button-gap: 0.125rem;
11
+ --split-button-icon-size: 1.125rem;
12
+ }
13
+
14
+ .split-button {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ gap: var(--split-button-gap);
18
+ }
19
+
20
+ .action-button {
21
+ --button-container-shape: var(--split-button-container-shape);
22
+ }
23
+
24
+ .dropdown-trigger {
25
+ --button-container-shape: var(--split-button-container-shape);
26
+ --button-icon-size: var(--split-button-icon-size);
27
+ }
28
+
29
+ .dropdown-icon {
30
+ transition: transform 200ms ease;
31
+ }
32
+
33
+ .dropdown-trigger.active .dropdown-icon {
34
+ transform: rotate(180deg);
35
+ }
36
+
37
+ /* ── Variant: Filled ────────────────────────────────────── */
38
+
39
+ .split-button.variant-filled {
40
+ .action-button,
41
+ .dropdown-trigger {
42
+ --filled-button-container-color: var(--filled-split-button-container-color);
43
+ --filled-button-label-text-color: var(--filled-split-button-label-text-color);
44
+ }
45
+ }
46
+
47
+
48
+ /* ── Variant: Tonal ─────────────────────────────────────── */
49
+
50
+ .split-button.variant-tonal {
51
+ .action-button,
52
+ .dropdown-trigger {
53
+ --tonal-button-container-color: var(--tonal-split-button-container-color);
54
+ --tonal-button-label-text-color: var(--tonal-split-button-label-text-color);
55
+ }
56
+ }
57
+
58
+
59
+ /* ── Variant: Outlined ──────────────────────────────────── */
60
+
61
+ .split-button.variant-outlined {
62
+ .action-button,
63
+ .dropdown-trigger {
64
+ --outlined-button-outline-color: var(--outlined-split-button-outline-color, var(--color-outline));
65
+ --outlined-button-label-text-color: var(--outlined-split-button-label-text-color);
66
+ }
67
+ }
68
+
69
+ :host([block]) {
70
+ width: 100%;
71
+
72
+ .split-button {
73
+ width: 100%;
74
+ }
75
+
76
+ .action-button {
77
+ flex: 1;
78
+ }
79
+ }