@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,93 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+ height: 100%;
8
+ width: 100%;
9
+ --cb-divider-line-color: var(--color-outline-variant);
10
+ }
11
+
12
+ .divider {
13
+ display: flex;
14
+ }
15
+
16
+ .divider:not(.vertical) {
17
+ height: 100%;
18
+ flex-direction: column;
19
+ align-items: center;
20
+ justify-content: center;
21
+ padding-bottom: var(--spacing-200);
22
+
23
+ .line {
24
+ height: 100%;
25
+ }
26
+
27
+ &.connect-start .line-start {
28
+ width: 1rem;
29
+ margin-left: 1rem;
30
+ border-inline-start: 1px solid var(--cb-divider-line-color);
31
+ border-top: 1px solid var(--cb-divider-line-color);
32
+ border-radius: var(--shape-corner-extra-small) 0 0 0;
33
+ }
34
+
35
+ &:not(.connect-start) .line-start {
36
+ border-inline-start: 1px solid var(--cb-divider-line-color);
37
+ }
38
+
39
+ &.connect-end .line-end {
40
+ width: 1rem;
41
+ margin-left: 1rem;
42
+ border-inline-start: 1px solid var(--cb-divider-line-color);
43
+ border-bottom: 1px solid var(--cb-divider-line-color);
44
+ border-radius: 0 0 0 var(--shape-corner-extra-small);
45
+ }
46
+
47
+ &:not(.connect-end) .line-end {
48
+ border-inline-start: 1px solid var(--cb-divider-line-color);
49
+ }
50
+
51
+ .content {
52
+ padding: var(--spacing-050) 0;
53
+ }
54
+ }
55
+
56
+ .divider.vertical {
57
+ width: 100%;
58
+ flex-direction: row;
59
+ align-items: center;
60
+ justify-content: center;
61
+
62
+ .line {
63
+ width: 100%;
64
+ }
65
+
66
+ &.connect-start .line-start {
67
+ height: 1rem;
68
+ margin-top: 1rem;
69
+ border-top: 1px solid var(--cb-divider-line-color);
70
+ border-left: 1px solid var(--cb-divider-line-color);
71
+ border-radius: var(--shape-corner-extra-small) 0 0 0;
72
+ }
73
+
74
+ &:not(.connect-start) .line-start {
75
+ border-top: 1px solid var(--cb-divider-line-color);
76
+ }
77
+
78
+ &.connect-end .line-end {
79
+ height: 1rem;
80
+ margin-top: 1rem;
81
+ border-top: 1px solid var(--cb-divider-line-color);
82
+ border-right: 1px solid var(--cb-divider-line-color);
83
+ border-radius: 0 var(--shape-corner-extra-small) 0 0;
84
+ }
85
+
86
+ &:not(.connect-end) .line-end {
87
+ border-top: 1px solid var(--cb-divider-line-color);
88
+ }
89
+
90
+ .content {
91
+ padding: 0 var(--spacing-050);
92
+ }
93
+ }
@@ -0,0 +1,56 @@
1
+ import { html, LitElement } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { classMap } from 'lit/directives/class-map.js';
4
+ import IndividualComponent from '@/IndividualComponent.js';
5
+ import styles from './cb-divider.scss';
6
+
7
+ /**
8
+ * @label CB Divider
9
+ * @tag wc-cb-divider
10
+ * @rawTag cb-divider
11
+ * @summary A divider line used within a condition builder to visually connect expressions with operator tags.
12
+ * @tags condition-builder
13
+ * @parentRawTag compound-builder
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <wc-cb-divider>
18
+ * <wc-tag color="green">and</wc-tag>
19
+ * </wc-cb-divider>
20
+ * ```
21
+ */
22
+ @IndividualComponent
23
+ export class CbDivider extends LitElement {
24
+ static styles = [styles];
25
+
26
+ /** Whether to render the divider vertically instead of horizontally. */
27
+ @property({ type: Boolean, reflect: true })
28
+ vertical = false;
29
+
30
+ /** Whether to render a connecting line at the start. */
31
+ @property({ type: Boolean, reflect: true, attribute: 'connect-start' })
32
+ connectStart = false;
33
+
34
+ /** Whether to render a connecting line at the end. */
35
+ @property({ type: Boolean, reflect: true, attribute: 'connect-end' })
36
+ connectEnd = false;
37
+
38
+ render() {
39
+ const classes = {
40
+ divider: true,
41
+ 'connect-start': this.connectStart,
42
+ 'connect-end': this.connectEnd,
43
+ vertical: this.vertical,
44
+ };
45
+
46
+ return html`
47
+ <div class=${classMap(classes)}>
48
+ <div class="line line-start"></div>
49
+ <div class="content">
50
+ <slot></slot>
51
+ </div>
52
+ <div class="line line-end"></div>
53
+ </div>
54
+ `;
55
+ }
56
+ }
@@ -0,0 +1,14 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+ }
8
+
9
+ .expression {
10
+ display: flex;
11
+ gap: var(--spacing-100);
12
+ align-items: center;
13
+ padding-bottom: var(--spacing-200);
14
+ }
@@ -0,0 +1,49 @@
1
+ import { html, LitElement } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import IndividualComponent from '@/IndividualComponent.js';
4
+ import styles from './cb-expression.scss';
5
+
6
+ /**
7
+ * @label CB Expression
8
+ * @tag wc-cb-expression
9
+ * @rawTag cb-expression
10
+ * @summary An expression row within a condition builder, containing an operator select and a slot for value inputs.
11
+ * @tags condition-builder
12
+ * @parentRawTag compound-builder
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <wc-cb-expression>
17
+ * <wc-input placeholder="Enter value"></wc-input>
18
+ * </wc-cb-expression>
19
+ * ```
20
+ */
21
+ @IndividualComponent
22
+ export class CbExpression extends LitElement {
23
+ static styles = [styles];
24
+
25
+ /**
26
+ * The list of operator options to display in the operator select.
27
+ * Each item should have at least `label` and `value` properties.
28
+ */
29
+ @property({ type: Array })
30
+ operators: { label: string; value: string; icon?: string }[] = [];
31
+
32
+ /** The currently selected operator value. */
33
+ @property({ type: String, attribute: 'operator-value' })
34
+ operatorValue = '';
35
+
36
+ render() {
37
+ return html`
38
+ <div class="expression">
39
+ <wc-select
40
+ inline
41
+ .value=${this.operatorValue}
42
+ placeholder="Select Operator"
43
+ .options=${this.operators}
44
+ ></wc-select>
45
+ <slot></slot>
46
+ </div>
47
+ `;
48
+ }
49
+ }
@@ -0,0 +1,35 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+ }
8
+
9
+ .predicate:not(.vertical) {
10
+ .predicate-body {
11
+ padding-top: var(--spacing-200);
12
+ }
13
+
14
+ .predicate-condition-operator {
15
+ padding: var(--spacing-200) var(--spacing-400) 0 var(--spacing-400);
16
+ }
17
+ }
18
+
19
+ .predicate.vertical {
20
+ display: flex;
21
+ align-items: stretch;
22
+
23
+ .predicate-condition-operator {
24
+ padding: var(--spacing-400) 0 var(--spacing-200) 0;
25
+ padding-inline-end: var(--spacing-200);
26
+ }
27
+
28
+ .predicate-body {
29
+ flex: 1;
30
+ }
31
+ }
32
+
33
+ .slot-end {
34
+ display: block;
35
+ }
@@ -0,0 +1,102 @@
1
+ import { html, LitElement, nothing } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { classMap } from 'lit/directives/class-map.js';
4
+ import IndividualComponent from '@/IndividualComponent.js';
5
+ import styles from './cb-predicate.scss';
6
+
7
+ /**
8
+ * @label CB Predicate
9
+ * @tag wc-cb-predicate
10
+ * @rawTag cb-predicate
11
+ * @summary A predicate container in a condition builder that can display conditions in horizontal or vertical layout with an optional logical operator divider.
12
+ * @tags condition-builder
13
+ * @parentRawTag compound-expression
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <wc-cb-predicate condition-operator="and" vertical>
18
+ * <wc-cb-compound-expression field-label="Age">
19
+ * <wc-cb-expression></wc-cb-expression>
20
+ * </wc-cb-compound-expression>
21
+ * </wc-cb-predicate>
22
+ * ```
23
+ */
24
+ @IndividualComponent
25
+ export class CbPredicate extends LitElement {
26
+ static styles = [styles];
27
+
28
+ /** The logical operator shown between predicates ('and' or 'or'). */
29
+ @property({ type: String, attribute: 'condition-operator', reflect: true })
30
+ conditionOperator?: 'and' | 'or';
31
+
32
+ /** Whether to render the predicate in vertical layout. */
33
+ @property({ type: Boolean, reflect: true })
34
+ vertical = false;
35
+
36
+ override updated() {
37
+ if (this.vertical) {
38
+ this.__adjustSlotEndPadding();
39
+ }
40
+ }
41
+
42
+ private __adjustSlotEndPadding() {
43
+ const slotEnd = this.renderRoot.querySelector<HTMLElement>('.slot-end');
44
+ const operatorElm = this.renderRoot.querySelector<HTMLElement>(
45
+ '.predicate-condition-operator',
46
+ );
47
+ if (slotEnd && operatorElm) {
48
+ slotEnd.style.paddingInlineStart =
49
+ operatorElm.getBoundingClientRect().width + 'px';
50
+ }
51
+ }
52
+
53
+ private __renderHorizontalOperator() {
54
+ if (!this.conditionOperator) return nothing;
55
+ return html`
56
+ <wc-cb-divider vertical class="predicate-condition-operator">
57
+ <wc-tag color="yellow" size="sm">${this.conditionOperator}</wc-tag>
58
+ </wc-cb-divider>
59
+ `;
60
+ }
61
+
62
+ private __renderVerticalOperator() {
63
+ if (!this.conditionOperator) return nothing;
64
+ return html`
65
+ <div class="predicate-condition-operator">
66
+ <wc-cb-divider connect-start connect-end>
67
+ <wc-tag color="green" size="sm">${this.conditionOperator}</wc-tag>
68
+ </wc-cb-divider>
69
+ </div>
70
+ `;
71
+ }
72
+
73
+ render() {
74
+ const classes = {
75
+ predicate: true,
76
+ vertical: this.vertical,
77
+ };
78
+
79
+ if (this.vertical) {
80
+ return html`
81
+ <div class=${classMap(classes)}>
82
+ ${this.__renderVerticalOperator()}
83
+ <div class="predicate-body">
84
+ <slot></slot>
85
+ </div>
86
+ </div>
87
+ <div class="slot-end">
88
+ <slot name="end"></slot>
89
+ </div>
90
+ `;
91
+ }
92
+
93
+ return html`
94
+ <div class=${classMap(classes)}>
95
+ <div class="predicate-body">
96
+ <slot></slot>
97
+ </div>
98
+ ${this.__renderHorizontalOperator()}
99
+ </div>
100
+ `;
101
+ }
102
+ }
@@ -0,0 +1,13 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+ }
8
+
9
+ .condition-builder {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: var(--spacing-200);
13
+ }
@@ -0,0 +1,38 @@
1
+ import { html, LitElement } from 'lit';
2
+ import IndividualComponent from '@/IndividualComponent.js';
3
+ import styles from './condition-builder.scss';
4
+
5
+ /**
6
+ * @label Condition Builder
7
+ * @tag wc-condition-builder
8
+ * @rawTag condition-builder
9
+ * @summary A condition builder component that allows users to construct complex filter conditions using a visual rule-based interface with predicates, compound expressions, and logical operators.
10
+ * @tags condition-builder
11
+ *
12
+ * @example
13
+ * ```html
14
+ * <wc-condition-builder>
15
+ * <wc-cb-predicate condition-operator="or">
16
+ * <wc-cb-predicate vertical condition-operator="and">
17
+ * <wc-cb-compound-expression field-label="Age" condition-operator="or">
18
+ * <wc-cb-expression>
19
+ * <wc-input inline placeholder="Enter value"></wc-input>
20
+ * </wc-cb-expression>
21
+ * </wc-cb-compound-expression>
22
+ * </wc-cb-predicate>
23
+ * </wc-cb-predicate>
24
+ * </wc-condition-builder>
25
+ * ```
26
+ */
27
+ @IndividualComponent
28
+ export class ConditionBuilder extends LitElement {
29
+ static styles = [styles];
30
+
31
+ render() {
32
+ return html`
33
+ <div class="condition-builder">
34
+ <slot></slot>
35
+ </div>
36
+ `;
37
+ }
38
+ }
@@ -0,0 +1,5 @@
1
+ export { ConditionBuilder } from './condition-builder.js';
2
+ export { CbPredicate } from './cb-predicate.js';
3
+ export { CbCompoundExpression } from './cb-compound-expression.js';
4
+ export { CbExpression } from './cb-expression.js';
5
+ export { CbDivider } from './cb-divider.js';
@@ -168,7 +168,6 @@ export class DatePicker extends BaseInput {
168
168
  slot="field-end"
169
169
  color="secondary"
170
170
  variant="text"
171
- name="calendar_today"
172
171
  ?disabled=${this.disabled}
173
172
  @click=${() => {
174
173
  setTimeout(() => {
@@ -177,6 +176,7 @@ export class DatePicker extends BaseInput {
177
176
  });
178
177
  }}
179
178
  >
179
+ <wc-icon name="calendar_today"></wc-icon>
180
180
  </wc-icon-button>
181
181
  </wc-field>
182
182
  `;
@@ -0,0 +1,110 @@
1
+ <!doctype html>
2
+ <html lang='en-GB'>
3
+ <head>
4
+ <meta charset='utf-8'>
5
+ <meta name='viewport' content='width=device-width, initial-scale=1.0, viewport-fit=cover' />
6
+ <link rel='stylesheet' href='/dist/assets/styles/tokens.css' />
7
+ <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
8
+
9
+ <style>
10
+ body {
11
+ background: var(--color-surface);
12
+ padding: 2rem;
13
+ display: flex;
14
+ flex-wrap: wrap;
15
+ gap: 1rem;
16
+ align-items: flex-start;
17
+ font-family: var(--font-family-sans);
18
+ }
19
+ </style>
20
+ </head>
21
+ <body>
22
+
23
+ <!-- Basic usage -->
24
+ <wc-dropdown-button>
25
+ Actions
26
+ <wc-menu-item slot="menu">Edit</wc-menu-item>
27
+ <wc-menu-item slot="menu">Duplicate</wc-menu-item>
28
+ <wc-menu-item slot="menu">Delete</wc-menu-item>
29
+ </wc-dropdown-button>
30
+
31
+ <!-- Variants -->
32
+ <wc-dropdown-button variant="filled">
33
+ Filled
34
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
35
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
36
+ </wc-dropdown-button>
37
+ <wc-dropdown-button variant="tonal">
38
+ Tonal
39
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
40
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
41
+ </wc-dropdown-button>
42
+ <wc-dropdown-button variant="outlined">
43
+ Outlined
44
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
45
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
46
+ </wc-dropdown-button>
47
+ <wc-dropdown-button variant="text">
48
+ Text
49
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
50
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
51
+ </wc-dropdown-button>
52
+ <wc-dropdown-button variant="elevated">
53
+ Elevated
54
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
55
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
56
+ </wc-dropdown-button>
57
+
58
+ <!-- Colors -->
59
+ <wc-dropdown-button color="primary">
60
+ Primary
61
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
62
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
63
+ </wc-dropdown-button>
64
+ <wc-dropdown-button color="success">
65
+ Success
66
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
67
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
68
+ </wc-dropdown-button>
69
+ <wc-dropdown-button color="danger">
70
+ Danger
71
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
72
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
73
+ </wc-dropdown-button>
74
+
75
+ <!-- Sizes -->
76
+ <wc-dropdown-button size="xs">
77
+ Extra small
78
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
79
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
80
+ </wc-dropdown-button>
81
+ <wc-dropdown-button size="sm">
82
+ Small
83
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
84
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
85
+ </wc-dropdown-button>
86
+ <wc-dropdown-button size="md">
87
+ Medium
88
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
89
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
90
+ </wc-dropdown-button>
91
+
92
+ <!-- Disabled -->
93
+ <wc-dropdown-button disabled>
94
+ Disabled
95
+ <wc-menu-item slot="menu">Option A</wc-menu-item>
96
+ <wc-menu-item slot="menu">Option B</wc-menu-item>
97
+ </wc-dropdown-button>
98
+
99
+ <!-- Placement -->
100
+ <wc-dropdown-button placement="bottom-end">
101
+ Bottom End
102
+ <wc-menu-item slot="menu">Option 1</wc-menu-item>
103
+ <wc-menu-item slot="menu">Option 2</wc-menu-item>
104
+ </wc-dropdown-button>
105
+
106
+ <script type='module'>
107
+ import '/dist/peacock-loader.js';
108
+ </script>
109
+ </body>
110
+ </html>
@@ -0,0 +1,22 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: inline-flex;
7
+ position: relative;
8
+
9
+ --dropdown-button-container-shape: var(--shape-corner-medium);
10
+ }
11
+
12
+ .trigger-button {
13
+ --button-container-shape: var(--dropdown-button-container-shape);
14
+ }
15
+
16
+ .dropdown-icon {
17
+ transition: transform 200ms ease;
18
+ }
19
+
20
+ .trigger-button.active .dropdown-icon {
21
+ transform: rotate(180deg);
22
+ }