@redvars/peacock 3.3.0 → 3.3.2

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 (159) hide show
  1. package/dist/{IndividualComponent-tDnXrOLV.js → IndividualComponent-Dt5xirYG.js} +2 -2
  2. package/dist/{IndividualComponent-tDnXrOLV.js.map → IndividualComponent-Dt5xirYG.js.map} +1 -1
  3. package/dist/array-D5vjT2Xm.js +14 -0
  4. package/dist/array-D5vjT2Xm.js.map +1 -0
  5. package/dist/assets/components.css +1 -1
  6. package/dist/assets/components.css.map +1 -1
  7. package/dist/assets/styles.css +1 -1
  8. package/dist/assets/styles.css.map +1 -1
  9. package/dist/{button-BGFJfbT2.js → button-ClzS8JLq.js} +3 -4
  10. package/dist/{button-BGFJfbT2.js.map → button-ClzS8JLq.js.map} +1 -1
  11. package/dist/button-group-BMS5WvaF.js +292 -0
  12. package/dist/button-group-BMS5WvaF.js.map +1 -0
  13. package/dist/button-group.js +6 -107
  14. package/dist/button-group.js.map +1 -1
  15. package/dist/button.js +3 -4
  16. package/dist/button.js.map +1 -1
  17. package/dist/card.js +104 -0
  18. package/dist/card.js.map +1 -0
  19. package/dist/chart-bar-DbnXQgvS.js +1121 -0
  20. package/dist/chart-bar-DbnXQgvS.js.map +1 -0
  21. package/dist/chart-bar.js +259 -0
  22. package/dist/chart-bar.js.map +1 -0
  23. package/dist/chart-donut.js +4 -2
  24. package/dist/chart-donut.js.map +1 -1
  25. package/dist/chart-doughnut.js +4 -2
  26. package/dist/chart-doughnut.js.map +1 -1
  27. package/dist/chart-pie.js +4 -2
  28. package/dist/chart-pie.js.map +1 -1
  29. package/dist/chart-stacked-bar.js +401 -0
  30. package/dist/chart-stacked-bar.js.map +1 -0
  31. package/dist/{class-map-DpeNtqCn.js → class-map-59YGWLnx.js} +9 -3
  32. package/dist/class-map-59YGWLnx.js.map +1 -0
  33. package/dist/clock.js +1 -1
  34. package/dist/code-editor.js +7 -7
  35. package/dist/code-editor.js.map +1 -1
  36. package/dist/code-highlighter.js +7 -25
  37. package/dist/code-highlighter.js.map +1 -1
  38. package/dist/custom-elements-jsdocs.json +8824 -5047
  39. package/dist/custom-elements.json +7468 -4147
  40. package/dist/index.js +16 -10
  41. package/dist/index.js.map +1 -1
  42. package/dist/number-counter.js +2 -2
  43. package/dist/{observe-theme-change-BISF-Gl5.js → observe-theme-change-pALI5fmV.js} +2 -2
  44. package/dist/{observe-theme-change-BISF-Gl5.js.map → observe-theme-change-pALI5fmV.js.map} +1 -1
  45. package/dist/peacock-loader.js +42 -1016
  46. package/dist/peacock-loader.js.map +1 -1
  47. package/dist/pie-Dz0IDiPt.js +537 -0
  48. package/dist/pie-Dz0IDiPt.js.map +1 -0
  49. package/dist/{slider-Dk9CFWTG.js → snackbar-74YCdMPL.js} +6205 -3206
  50. package/dist/snackbar-74YCdMPL.js.map +1 -0
  51. package/dist/src/accordion/accordion-item.d.ts +1 -0
  52. package/dist/src/breadcrumb/breadcrumb/breadcrumb.d.ts +2 -0
  53. package/dist/src/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +1 -0
  54. package/dist/src/button/button-group/button-group.d.ts +4 -0
  55. package/dist/src/card/card.d.ts +27 -0
  56. package/dist/src/card/index.d.ts +1 -0
  57. package/dist/src/chart-bar/chart-bar.d.ts +53 -0
  58. package/dist/src/chart-bar/chart-stacked-bar.d.ts +78 -0
  59. package/dist/src/chart-bar/index.d.ts +2 -0
  60. package/dist/src/code-editor/code-editor.d.ts +4 -3
  61. package/dist/src/code-highlighter/code-highlighter.d.ts +4 -7
  62. package/dist/src/index.d.ts +9 -0
  63. package/dist/src/menu/index.d.ts +3 -0
  64. package/dist/src/menu/menu/MenuSurfaceController.d.ts +18 -0
  65. package/dist/src/menu/menu/menu.d.ts +54 -12
  66. package/dist/src/menu/menu-item/menu-item.d.ts +12 -5
  67. package/dist/src/menu/sub-menu/sub-menu.d.ts +36 -0
  68. package/dist/src/pagination/index.d.ts +1 -0
  69. package/dist/src/pagination/pagination.d.ts +38 -0
  70. package/dist/src/popover/PopoverController.d.ts +4 -1
  71. package/dist/src/snackbar/index.d.ts +1 -0
  72. package/dist/src/snackbar/snackbar.d.ts +40 -0
  73. package/dist/src/table/index.d.ts +1 -0
  74. package/dist/src/table/table.d.ts +110 -0
  75. package/dist/src/tabs/tab-group.d.ts +5 -1
  76. package/dist/src/tabs/tab-panel.d.ts +2 -0
  77. package/dist/src/tabs/tab.d.ts +3 -1
  78. package/dist/src/tabs/tabs.d.ts +2 -0
  79. package/dist/src/tooltip/tooltip.d.ts +1 -3
  80. package/dist/src/tree-view/index.d.ts +2 -0
  81. package/dist/src/tree-view/tree-node.d.ts +69 -0
  82. package/dist/src/tree-view/tree-view.d.ts +40 -0
  83. package/dist/src/tree-view/wc-tree-view.d.ts +6 -0
  84. package/dist/{style-map-CfNHEkQp.js → style-map-DcB52w-l.js} +2 -2
  85. package/dist/{style-map-CfNHEkQp.js.map → style-map-DcB52w-l.js.map} +1 -1
  86. package/dist/test/card.test.d.ts +1 -0
  87. package/dist/test/chart-bar.test.d.ts +1 -0
  88. package/dist/test/icon.test.d.ts +1 -1
  89. package/dist/test/menu.test.d.ts +1 -0
  90. package/dist/test/snackbar.test.d.ts +1 -0
  91. package/dist/test/sub-menu.test.d.ts +1 -0
  92. package/dist/test/tree-view.test.d.ts +1 -0
  93. package/dist/{transform-DRuHEvar.js → transform-DSwFSqzD.js} +13 -558
  94. package/dist/transform-DSwFSqzD.js.map +1 -0
  95. package/dist/tsconfig.tsbuildinfo +1 -1
  96. package/dist/{unsafe-html-CV6Je6HL.js → unsafe-html-C2r3PyzF.js} +2 -2
  97. package/dist/{unsafe-html-CV6Je6HL.js.map → unsafe-html-C2r3PyzF.js.map} +1 -1
  98. package/package.json +1 -1
  99. package/readme.md +40 -40
  100. package/src/accordion/accordion-item.ts +2 -1
  101. package/src/breadcrumb/breadcrumb/breadcrumb.ts +3 -0
  102. package/src/breadcrumb/breadcrumb-item/breadcrumb-item.ts +1 -0
  103. package/src/button/button-group/button-group.ts +6 -0
  104. package/src/card/card.scss +61 -0
  105. package/src/card/card.ts +38 -0
  106. package/src/card/index.ts +1 -0
  107. package/src/chart-bar/chart-bar.scss +58 -0
  108. package/src/chart-bar/chart-bar.ts +306 -0
  109. package/src/chart-bar/chart-stacked-bar.ts +402 -0
  110. package/src/chart-bar/index.ts +2 -0
  111. package/src/code-editor/code-editor.ts +4 -3
  112. package/src/code-highlighter/code-highlighter.ts +4 -22
  113. package/src/divider/divider.scss +2 -2
  114. package/src/empty-state/empty-state.scss +1 -1
  115. package/src/empty-state/empty-state.ts +1 -1
  116. package/src/index.ts +11 -2
  117. package/src/menu/index.ts +3 -0
  118. package/src/menu/menu/MenuSurfaceController.ts +61 -0
  119. package/src/menu/{menu-list/menu-list.scss → menu/menu.scss} +19 -4
  120. package/src/menu/menu/menu.ts +389 -81
  121. package/src/menu/menu-item/menu-item.ts +115 -36
  122. package/src/menu/sub-menu/sub-menu.scss +7 -0
  123. package/src/menu/sub-menu/sub-menu.ts +243 -0
  124. package/src/pagination/index.ts +1 -0
  125. package/src/pagination/pagination.scss +59 -0
  126. package/src/pagination/pagination.ts +135 -0
  127. package/src/peacock-loader.ts +39 -11
  128. package/src/popover/PopoverController.ts +13 -7
  129. package/src/snackbar/demo/index.html +29 -0
  130. package/src/snackbar/index.ts +1 -0
  131. package/src/snackbar/snackbar.scss +73 -0
  132. package/src/snackbar/snackbar.ts +151 -0
  133. package/src/table/index.ts +1 -0
  134. package/src/table/table.scss +174 -0
  135. package/src/table/table.ts +475 -0
  136. package/src/tabs/tab-group.ts +63 -28
  137. package/src/tabs/tab-panel.scss +3 -3
  138. package/src/tabs/tab-panel.ts +3 -0
  139. package/src/tabs/tab.scss +76 -2
  140. package/src/tabs/tab.ts +29 -6
  141. package/src/tabs/tabs.scss +6 -5
  142. package/src/tabs/tabs.ts +19 -5
  143. package/src/text/text.css-component.scss +6 -3
  144. package/src/tooltip/tooltip.scss +16 -13
  145. package/src/tooltip/tooltip.ts +7 -9
  146. package/src/tree-view/demo/index.html +57 -0
  147. package/src/tree-view/index.ts +2 -0
  148. package/src/tree-view/tree-node.scss +101 -0
  149. package/src/tree-view/tree-node.ts +268 -0
  150. package/src/tree-view/tree-view.scss +12 -0
  151. package/src/tree-view/tree-view.ts +182 -0
  152. package/src/tree-view/wc-tree-view.ts +9 -0
  153. package/dist/class-map-DpeNtqCn.js.map +0 -1
  154. package/dist/slider-Dk9CFWTG.js.map +0 -1
  155. package/dist/src/menu/menu-list/menu-list.d.ts +0 -22
  156. package/dist/state-8v48Exzh.js +0 -10
  157. package/dist/state-8v48Exzh.js.map +0 -1
  158. package/dist/transform-DRuHEvar.js.map +0 -1
  159. package/src/menu/menu-list/menu-list.ts +0 -48
@@ -22,7 +22,7 @@ import { Checkbox } from './checkbox/checkbox.js';
22
22
 
23
23
  import { Menu } from './menu/menu/menu.js';
24
24
  import { MenuItem } from './menu/menu-item/menu-item.js';
25
- import { MenuList } from './menu/menu-list/menu-list.js';
25
+ import { SubMenu } from './menu/sub-menu/sub-menu.js';
26
26
 
27
27
  import { Accordion } from './accordion/accordion.js';
28
28
  import { Link } from './link/link.js';
@@ -48,10 +48,14 @@ import { Tabs } from './tabs/tabs.js';
48
48
  import { Tab } from './tabs/tab.js';
49
49
  import { TabPanel } from './tabs/tab-panel.js';
50
50
  import { Slider } from './slider/slider.js';
51
-
51
+ import { Table } from './table/table.js';
52
+ import { Pagination } from './pagination/pagination.js';
53
+ import { TreeView } from './tree-view/tree-view.js';
54
+ import { Card } from './card/card.js';
55
+ import { Snackbar } from './snackbar/snackbar.js';
52
56
 
53
57
  const distDirectory = `${import.meta.url}/..`;
54
- await loadCSS(`${distDirectory }/assets/styles.css`);
58
+ await loadCSS(`${distDirectory}/assets/styles.css`);
55
59
 
56
60
  /*
57
61
  import tooltipStyles from './popover/tooltip.css-component.scss';
@@ -122,7 +126,7 @@ const loaderConfig: LoaderConfig = {
122
126
  CustomElementClass: TabGroup,
123
127
  },
124
128
  'wc-tab': {
125
- CustomElementClass: Tab
129
+ CustomElementClass: Tab,
126
130
  },
127
131
  'wc-tab-panel': {
128
132
  CustomElementClass: TabPanel,
@@ -133,6 +137,9 @@ const loaderConfig: LoaderConfig = {
133
137
  'wc-chip': {
134
138
  CustomElementClass: Chip,
135
139
  },
140
+ 'wc-card': {
141
+ CustomElementClass: Card,
142
+ },
136
143
  'wc-tag': {
137
144
  CustomElementClass: Tag,
138
145
  },
@@ -194,30 +201,51 @@ const loaderConfig: LoaderConfig = {
194
201
  'wc-empty-state': {
195
202
  CustomElementClass: EmptyState,
196
203
  },
197
- 'wc-base-menu': {
204
+ 'wc-menu': {
198
205
  CustomElementClass: Menu,
199
206
  },
200
207
  'wc-menu-item': {
201
208
  CustomElementClass: MenuItem,
202
209
  },
203
- 'wc-menu-list': {
204
- CustomElementClass: MenuList,
210
+ 'wc-sub-menu': {
211
+ CustomElementClass: SubMenu,
205
212
  },
206
213
  'wc-container': {
207
- CustomElementClass: Container
214
+ CustomElementClass: Container,
208
215
  },
209
216
  'wc-image': {
210
- CustomElementClass: Image
217
+ CustomElementClass: Image,
211
218
  },
212
219
  'wc-slider': {
213
- CustomElementClass: Slider
220
+ CustomElementClass: Slider,
221
+ },
222
+ 'wc-table': {
223
+ CustomElementClass: Table,
224
+ },
225
+ 'wc-pagination': {
226
+ CustomElementClass: Pagination,
227
+ },
228
+ 'wc-tree-view': {
229
+ CustomElementClass: TreeView,
230
+ },
231
+ 'wc-tree-node': {
232
+ CustomElementClass: TreeView.Node,
233
+ },
234
+ 'wc-snackbar': {
235
+ CustomElementClass: Snackbar,
214
236
  },
215
237
  'wc-chart-doughnut': {
216
238
  importPath: `${distDirectory}/chart-doughnut.js`,
217
239
  },
218
240
  'wc-chart-pie': {
219
241
  importPath: `${distDirectory}/chart-pie.js`,
220
- }
242
+ },
243
+ 'wc-chart-bar': {
244
+ importPath: `${distDirectory}/chart-bar.js`,
245
+ },
246
+ 'wc-chart-stacked-bar': {
247
+ importPath: `${distDirectory}/chart-stacked-bar.js`,
248
+ },
221
249
  },
222
250
  };
223
251
 
@@ -22,19 +22,25 @@ export class PopoverController implements ReactiveController {
22
22
  }
23
23
 
24
24
  // Set up the floating logic
25
- async updatePosition(reference: HTMLElement | null, floating: HTMLElement) {
25
+ async updatePosition(
26
+ reference: HTMLElement | null,
27
+ floating: HTMLElement,
28
+ options?: {
29
+ placement?: Placement;
30
+ offset?: number;
31
+ },
32
+ ) {
26
33
  if (!reference) return;
27
34
 
28
35
  this.cleanup?.();
29
36
 
37
+ const placement = options?.placement ?? this.options.placement;
38
+ const spacing = options?.offset ?? this.options.offset;
39
+
30
40
  this.cleanup = autoUpdate(reference, floating, async () => {
31
41
  const { x, y } = await computePosition(reference, floating, {
32
- placement: this.options.placement,
33
- middleware: [
34
- offset(this.options.offset),
35
- flip(),
36
- shift({ padding: 4 }),
37
- ],
42
+ placement,
43
+ middleware: [offset(spacing), flip(), shift({ padding: 4 })],
38
44
  });
39
45
 
40
46
  Object.assign(floating.style, {
@@ -0,0 +1,29 @@
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
+ <style>
8
+ body {
9
+ background: #fafafa;
10
+ padding: 2rem;
11
+ display: grid;
12
+ gap: 1rem;
13
+ }
14
+ </style>
15
+ </head>
16
+ <body>
17
+ <wc-snackbar open message="File archived" action-label="Undo"></wc-snackbar>
18
+ <wc-snackbar open multiline show-close-icon>
19
+ Network connection was lost. Please try again when you are back online.
20
+ </wc-snackbar>
21
+
22
+ <script type='module'>
23
+ import { Snackbar, Icon } from '/dist/index.js';
24
+
25
+ window.customElements.define('wc-snackbar', Snackbar);
26
+ window.customElements.define('wc-icon', Icon);
27
+ </script>
28
+ </body>
29
+ </html>
@@ -0,0 +1 @@
1
+ export { Snackbar } from './snackbar.js';
@@ -0,0 +1,73 @@
1
+ @use "../../scss/mixin";
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: inline-flex;
7
+ max-width: 42rem;
8
+ min-width: 21.5rem;
9
+
10
+ --snackbar-container-color: var(--color-inverse-surface);
11
+ --snackbar-label-text-color: var(--color-inverse-on-surface);
12
+ --snackbar-action-text-color: var(--color-inverse-primary);
13
+ --snackbar-close-icon-color: var(--color-inverse-on-surface);
14
+ --snackbar-border-radius: var(--shape-corner-extra-small);
15
+ }
16
+
17
+ .snackbar {
18
+ @include mixin.get-typography(body-medium);
19
+ align-items: center;
20
+ background-color: var(--snackbar-container-color);
21
+ border-radius: var(--snackbar-border-radius);
22
+ color: var(--snackbar-label-text-color);
23
+ display: inline-flex;
24
+ gap: var(--spacing-100);
25
+ min-height: 3rem;
26
+ opacity: 0;
27
+ padding: var(--spacing-100) var(--spacing-200);
28
+ pointer-events: none;
29
+ transform: translateY(0.5rem);
30
+ transition: opacity var(--duration-short2) var(--easing-standard),
31
+ transform var(--duration-short2) var(--easing-standard);
32
+ }
33
+
34
+ .snackbar.open {
35
+ opacity: 1;
36
+ pointer-events: auto;
37
+ transform: translateY(0);
38
+ }
39
+
40
+ .label {
41
+ flex: 1 1 auto;
42
+ color: inherit;
43
+ }
44
+
45
+ .action,
46
+ .close {
47
+ @include mixin.get-typography(label-large);
48
+ align-items: center;
49
+ background: transparent;
50
+ border: none;
51
+ color: var(--snackbar-action-text-color);
52
+ cursor: pointer;
53
+ display: inline-flex;
54
+ justify-content: center;
55
+ margin: 0;
56
+ min-height: 2rem;
57
+ min-width: 2rem;
58
+ padding: 0 var(--spacing-100);
59
+ }
60
+
61
+ .close {
62
+ color: var(--snackbar-close-icon-color);
63
+ padding: 0;
64
+ }
65
+
66
+ .close wc-icon {
67
+ --icon-size: 1.125rem;
68
+ color: inherit;
69
+ }
70
+
71
+ .snackbar.multiline {
72
+ align-items: flex-start;
73
+ }
@@ -0,0 +1,151 @@
1
+ import { LitElement, html, nothing } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { classMap } from 'lit/directives/class-map.js';
4
+ import styles from './snackbar.scss';
5
+
6
+ type SnackbarCloseReason = 'timeout' | 'dismiss' | 'action' | 'programmatic';
7
+
8
+ /**
9
+ * @label Snackbar
10
+ * @tag wc-snackbar
11
+ * @rawTag snackbar
12
+ * @summary Snackbars provide brief messages about app processes at the bottom of the screen.
13
+ *
14
+ * @cssprop --snackbar-container-color - Container color for the snackbar.
15
+ * @cssprop --snackbar-label-text-color - Label text color for the snackbar.
16
+ * @cssprop --snackbar-action-text-color - Action text color.
17
+ * @cssprop --snackbar-close-icon-color - Close icon color.
18
+ * @cssprop --snackbar-border-radius - Border radius of the snackbar surface.
19
+ *
20
+ * @example
21
+ * ```html
22
+ * <wc-snackbar open message="Message archived" action-label="Undo"></wc-snackbar>
23
+ * ```
24
+ * @tags display, feedback
25
+ */
26
+ export class Snackbar extends LitElement {
27
+ static styles = [styles];
28
+
29
+ @property({ type: Boolean, reflect: true }) open = false;
30
+
31
+ @property({ type: String }) message = '';
32
+
33
+ @property({ type: String, attribute: 'action-label' }) actionLabel = '';
34
+
35
+ @property({ type: Boolean, attribute: 'show-close-icon' })
36
+ showCloseIcon = false;
37
+
38
+ @property({ type: Number }) duration = 4000;
39
+
40
+ @property({ type: Boolean, reflect: true }) multiline = false;
41
+
42
+ private hideTimer: ReturnType<typeof setTimeout> | null = null;
43
+
44
+ show() {
45
+ this.open = true;
46
+ }
47
+
48
+ hide() {
49
+ this.close('programmatic');
50
+ }
51
+
52
+ private close(reason: SnackbarCloseReason) {
53
+ if (!this.open) {
54
+ return;
55
+ }
56
+
57
+ this.open = false;
58
+ this.dispatchEvent(
59
+ new CustomEvent('snackbar-close', {
60
+ detail: { reason },
61
+ bubbles: true,
62
+ composed: true,
63
+ }),
64
+ );
65
+ }
66
+
67
+ private dispatchActionEvent() {
68
+ this.dispatchEvent(
69
+ new CustomEvent('snackbar-action', {
70
+ bubbles: true,
71
+ composed: true,
72
+ }),
73
+ );
74
+ }
75
+
76
+ private handleActionClick() {
77
+ this.dispatchActionEvent();
78
+ this.close('action');
79
+ }
80
+
81
+ private handleCloseClick() {
82
+ this.close('dismiss');
83
+ }
84
+
85
+ private clearTimer() {
86
+ if (this.hideTimer !== null) {
87
+ clearTimeout(this.hideTimer);
88
+ this.hideTimer = null;
89
+ }
90
+ }
91
+
92
+ private scheduleAutoHide() {
93
+ this.clearTimer();
94
+ if (!this.open || this.duration <= 0) {
95
+ return;
96
+ }
97
+
98
+ this.hideTimer = setTimeout(() => {
99
+ this.close('timeout');
100
+ }, this.duration);
101
+ }
102
+
103
+ protected updated(changedProperties: Map<string, unknown>) {
104
+ if (changedProperties.has('open')) {
105
+ this.scheduleAutoHide();
106
+ }
107
+ }
108
+
109
+ disconnectedCallback() {
110
+ this.clearTimer();
111
+ super.disconnectedCallback();
112
+ }
113
+
114
+ render() {
115
+ const liveRole =
116
+ this.actionLabel || this.showCloseIcon ? 'alert' : 'status';
117
+
118
+ return html`
119
+ <div
120
+ class=${classMap({
121
+ snackbar: true,
122
+ open: this.open,
123
+ multiline: this.multiline,
124
+ })}
125
+ role=${liveRole}
126
+ aria-live="polite"
127
+ >
128
+ <div class="label">
129
+ <slot>${this.message}</slot>
130
+ </div>
131
+
132
+ ${this.actionLabel
133
+ ? html`<button class="action" type="button" @click=${this.handleActionClick}>
134
+ ${this.actionLabel}
135
+ </button>`
136
+ : nothing}
137
+
138
+ ${this.showCloseIcon
139
+ ? html`<button
140
+ class="close"
141
+ type="button"
142
+ aria-label="Dismiss notification"
143
+ @click=${this.handleCloseClick}
144
+ >
145
+ <wc-icon name="close"></wc-icon>
146
+ </button>`
147
+ : nothing}
148
+ </div>
149
+ `;
150
+ }
151
+ }
@@ -0,0 +1 @@
1
+ export { Table } from './table.js';
@@ -0,0 +1,174 @@
1
+ @use '../../scss/mixin';
2
+
3
+ @include mixin.base-styles;
4
+
5
+ :host {
6
+ display: block;
7
+ height: 100%;
8
+ min-height: 20em;
9
+ --table-border-color: var(--color-outline-variant);
10
+ --table-border: 1px solid var(--table-border-color);
11
+ --table-col-content-padding: var(--spacing-150, 0.75rem) var(--spacing-200, 1rem);
12
+ }
13
+
14
+ .table {
15
+ height: 100%;
16
+ display: flex;
17
+ flex-direction: column;
18
+ background: var(--color-surface, #fff);
19
+
20
+ @include mixin.get-typography-not-important('body-medium');
21
+
22
+ .table-scroll-container {
23
+ position: relative;
24
+ overflow: auto;
25
+ height: 100%;
26
+ }
27
+
28
+ .empty-table {
29
+ height: 80%;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+
34
+ .empty-state {
35
+ width: 10rem;
36
+ }
37
+ }
38
+
39
+ wc-pagination {
40
+ border-top: 1px solid var(--table-border-color);
41
+ }
42
+
43
+ &.horizontal-scrolled {
44
+ .fixed-columns::after {
45
+ box-shadow: 10px 0 20px -20px var(--color-outline) inset;
46
+ content: ' ';
47
+ height: 100%;
48
+ position: absolute;
49
+ top: 0;
50
+ right: -20px;
51
+ width: 20px;
52
+ }
53
+ }
54
+ }
55
+
56
+ .row {
57
+ display: flex;
58
+ box-sizing: border-box;
59
+ width: max-content;
60
+ min-width: 100%;
61
+
62
+ .columns-container {
63
+ display: flex;
64
+ }
65
+
66
+ .col {
67
+ margin: 0;
68
+ color: var(--color-on-surface);
69
+ flex-shrink: 0;
70
+
71
+ .col-content {
72
+ display: flex;
73
+ align-items: center;
74
+ height: 100%;
75
+
76
+ .col-text {
77
+ padding: var(--table-col-content-padding);
78
+ flex: 1;
79
+ overflow: hidden;
80
+ white-space: nowrap;
81
+ text-overflow: ellipsis;
82
+ }
83
+
84
+ .col-template {
85
+ width: 100%;
86
+ }
87
+
88
+ .col-action {
89
+ --button-border-radius: 0;
90
+
91
+ &.has-focus {
92
+ z-index: 12;
93
+ }
94
+ }
95
+
96
+ .checkbox {
97
+ padding: 0 var(--spacing-100, 0.5rem);
98
+ }
99
+ }
100
+
101
+ &.center .col-content {
102
+ justify-content: center;
103
+ }
104
+
105
+ &:last-child {
106
+ flex: 1;
107
+ }
108
+ }
109
+
110
+ .fixed-columns {
111
+ position: sticky;
112
+ left: 0;
113
+ z-index: 1;
114
+ }
115
+
116
+ .scrollable-columns {
117
+ flex: 0 0 auto;
118
+ }
119
+ }
120
+
121
+ .header {
122
+ z-index: 2;
123
+ position: sticky;
124
+ top: 0;
125
+
126
+ @include mixin.get-typography-not-important('label-medium');
127
+
128
+ .col {
129
+ background: var(--color-surface-variant, #f4f4f4);
130
+
131
+ &.sort {
132
+ background: var(--color-secondary-container, #e8eaf6);
133
+ }
134
+ }
135
+ }
136
+
137
+ .body {
138
+ .row {
139
+ .col {
140
+ cursor: pointer;
141
+ background: var(--color-surface, #fff);
142
+ border-bottom: 1px solid var(--color-surface-variant, #f4f4f4);
143
+
144
+ &.col-checkbox .col-content {
145
+ border: 0;
146
+ }
147
+
148
+ .col-content {
149
+ border: 2px solid transparent;
150
+ border-bottom: 1px solid transparent;
151
+
152
+ .col-text {
153
+ text-wrap: wrap;
154
+ }
155
+ }
156
+
157
+ &:focus {
158
+ outline: none;
159
+ border-bottom-color: var(--color-primary);
160
+ z-index: 1;
161
+
162
+ .col-content {
163
+ border-color: var(--color-primary);
164
+ }
165
+ }
166
+ }
167
+
168
+ &:hover {
169
+ .col {
170
+ background-color: var(--color-surface-container-low, #f8f8f8);
171
+ }
172
+ }
173
+ }
174
+ }