@jsekulowicz/ds-components 0.8.0 → 0.9.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 (49) hide show
  1. package/custom-elements.json +426 -4
  2. package/dist/atoms/icon/icon.js +1 -1
  3. package/dist/atoms/icon/icon.styles.d.ts.map +1 -1
  4. package/dist/atoms/icon/icon.styles.js +10 -6
  5. package/dist/atoms/icon/icon.styles.js.map +1 -1
  6. package/dist/atoms/skeleton/define.d.ts +7 -0
  7. package/dist/atoms/skeleton/define.d.ts.map +1 -0
  8. package/dist/atoms/skeleton/define.js +5 -0
  9. package/dist/atoms/skeleton/define.js.map +1 -0
  10. package/dist/atoms/skeleton/index.d.ts +2 -0
  11. package/dist/atoms/skeleton/index.d.ts.map +1 -0
  12. package/dist/atoms/skeleton/index.js +2 -0
  13. package/dist/atoms/skeleton/index.js.map +1 -0
  14. package/dist/atoms/skeleton/skeleton.d.ts +20 -0
  15. package/dist/atoms/skeleton/skeleton.d.ts.map +1 -0
  16. package/dist/atoms/skeleton/skeleton.js +78 -0
  17. package/dist/atoms/skeleton/skeleton.js.map +1 -0
  18. package/dist/atoms/skeleton/skeleton.styles.d.ts +2 -0
  19. package/dist/atoms/skeleton/skeleton.styles.d.ts.map +1 -0
  20. package/dist/atoms/skeleton/skeleton.styles.js +74 -0
  21. package/dist/atoms/skeleton/skeleton.styles.js.map +1 -0
  22. package/dist/atoms/table/define.d.ts +1 -0
  23. package/dist/atoms/table/define.d.ts.map +1 -1
  24. package/dist/atoms/table/define.js +1 -0
  25. package/dist/atoms/table/define.js.map +1 -1
  26. package/dist/atoms/table/table-skeleton.d.ts +3 -0
  27. package/dist/atoms/table/table-skeleton.d.ts.map +1 -0
  28. package/dist/atoms/table/table-skeleton.js +44 -0
  29. package/dist/atoms/table/table-skeleton.js.map +1 -0
  30. package/dist/atoms/table/table.d.ts +6 -0
  31. package/dist/atoms/table/table.d.ts.map +1 -1
  32. package/dist/atoms/table/table.js +77 -25
  33. package/dist/atoms/table/table.js.map +1 -1
  34. package/dist/atoms/table/table.styles.d.ts.map +1 -1
  35. package/dist/atoms/table/table.styles.js +25 -0
  36. package/dist/atoms/table/table.styles.js.map +1 -1
  37. package/dist/css/utilities/layout.css +33 -0
  38. package/dist/css/utilities/spacing.css +137 -0
  39. package/dist/css/utilities/typography.css +30 -0
  40. package/dist/css/utilities.css +3 -0
  41. package/dist/define.d.ts +1 -0
  42. package/dist/define.d.ts.map +1 -1
  43. package/dist/define.js +1 -0
  44. package/dist/define.js.map +1 -1
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/index.js.map +1 -1
  49. package/package.json +17 -4
@@ -0,0 +1,78 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { DsElement } from '@jsekulowicz/ds-core';
10
+ import { skeletonStyles } from './skeleton.styles.js';
11
+ /**
12
+ * @tag ds-skeleton
13
+ * @summary Decorative placeholder for content that is still loading.
14
+ * @slot default - Optional accessible loading text for assistive technology.
15
+ * @csspart item - Each generated skeleton item.
16
+ */
17
+ export class DsSkeleton extends DsElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.variant = 'text';
21
+ this.lines = 1;
22
+ }
23
+ static { this.styles = [...DsElement.styles, skeletonStyles]; }
24
+ updated() {
25
+ this.#syncHostProperty('--ds-skeleton-width', this.width);
26
+ this.#syncHostProperty('--ds-skeleton-height', this.height);
27
+ }
28
+ #count() {
29
+ return Math.max(1, Math.floor(this.lines || 1));
30
+ }
31
+ #syncHostProperty(name, value) {
32
+ if (value) {
33
+ this.style.setProperty(name, value);
34
+ return;
35
+ }
36
+ this.style.removeProperty(name);
37
+ }
38
+ #lineWidth(index) {
39
+ if (this.width) {
40
+ return this.width;
41
+ }
42
+ if (this.variant !== 'text' || this.#count() === 1) {
43
+ return undefined;
44
+ }
45
+ return index === this.#count() - 1 ? '72%' : undefined;
46
+ }
47
+ #style(index) {
48
+ const styles = [];
49
+ const width = this.#lineWidth(index);
50
+ if (width) {
51
+ styles.push(`--ds-skeleton-item-width: ${width}`);
52
+ }
53
+ return styles.join('; ');
54
+ }
55
+ render() {
56
+ return html `
57
+ <span class="stack" aria-hidden="true">
58
+ ${Array.from({ length: this.#count() }, (_, index) => html `
59
+ <span class="item" part="item" style=${this.#style(index)}></span>
60
+ `)}
61
+ </span>
62
+ <slot class="sr-only"></slot>
63
+ `;
64
+ }
65
+ }
66
+ __decorate([
67
+ property({ reflect: true })
68
+ ], DsSkeleton.prototype, "variant", void 0);
69
+ __decorate([
70
+ property({ type: Number })
71
+ ], DsSkeleton.prototype, "lines", void 0);
72
+ __decorate([
73
+ property()
74
+ ], DsSkeleton.prototype, "width", void 0);
75
+ __decorate([
76
+ property()
77
+ ], DsSkeleton.prototype, "height", void 0);
78
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../../src/atoms/skeleton/skeleton.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;;GAKG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAAzC;;QAG+B,YAAO,GAAoB,MAAM,CAAC;QACnC,UAAK,GAAG,CAAC,CAAC;IAkDxC,CAAC;aArDiB,WAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,AAAxC,CAAyC;IAOtD,OAAO;QACd,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,IAAY,EAAE,KAAc;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;UAEL,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;iDACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SAC1D,CAAC;;;KAGL,CAAC;IACJ,CAAC;;AAlD4B;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAmC;AACnC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAAW;AAC1B;IAAX,QAAQ,EAAE;yCAAgB;AACf;IAAX,QAAQ,EAAE;0CAAiB"}
@@ -0,0 +1,2 @@
1
+ export declare const skeletonStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=skeleton.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.styles.d.ts","sourceRoot":"","sources":["../../../src/atoms/skeleton/skeleton.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,yBAuE1B,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { css } from 'lit';
2
+ export const skeletonStyles = css `
3
+ :host {
4
+ display: block;
5
+ width: var(--ds-skeleton-width, 100%);
6
+ }
7
+
8
+ .stack {
9
+ display: grid;
10
+ gap: var(--ds-skeleton-gap, var(--ds-space-2));
11
+ }
12
+
13
+ .sr-only {
14
+ position: absolute;
15
+ width: 1px;
16
+ height: 1px;
17
+ padding: 0;
18
+ margin: -1px;
19
+ overflow: hidden;
20
+ clip: rect(0, 0, 0, 0);
21
+ white-space: nowrap;
22
+ border: 0;
23
+ }
24
+
25
+ .item {
26
+ display: block;
27
+ width: var(--ds-skeleton-item-width, 100%);
28
+ height: var(--ds-skeleton-height, 1em);
29
+ border-radius: var(--ds-skeleton-radius, var(--ds-radius-xs));
30
+ background:
31
+ linear-gradient(
32
+ 90deg,
33
+ var(--ds-color-bg-muted) 0%,
34
+ var(--ds-color-bg-muted) 34%,
35
+ var(--ds-color-bg-subtle) 50%,
36
+ var(--ds-color-bg-muted) 66%,
37
+ var(--ds-color-bg-muted) 100%
38
+ );
39
+ background-size: 200% 100%;
40
+ animation: ds-skeleton-shimmer var(--ds-skeleton-duration, 4s) linear infinite;
41
+ }
42
+
43
+ :host([variant='text']) .item {
44
+ transform: translateY(0.12em);
45
+ }
46
+
47
+ :host([variant='rectangle']) .item {
48
+ height: var(--ds-skeleton-height, 6rem);
49
+ border-radius: var(--ds-skeleton-radius, var(--ds-radius-sm));
50
+ }
51
+
52
+ :host([variant='circle']) {
53
+ width: var(--ds-skeleton-width, 2.5rem);
54
+ }
55
+
56
+ :host([variant='circle']) .item {
57
+ width: var(--ds-skeleton-item-width, var(--ds-skeleton-width, 2.5rem));
58
+ height: var(--ds-skeleton-height, var(--ds-skeleton-width, 2.5rem));
59
+ border-radius: 999px;
60
+ }
61
+
62
+ @keyframes ds-skeleton-shimmer {
63
+ from { background-position: 200% 0; }
64
+ to { background-position: 0 0; }
65
+ }
66
+
67
+ @media (prefers-reduced-motion: reduce) {
68
+ .item {
69
+ animation: none;
70
+ background-size: 100% 100%;
71
+ }
72
+ }
73
+ `;
74
+ //# sourceMappingURL=skeleton.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.styles.js","sourceRoot":"","sources":["../../../src/atoms/skeleton/skeleton.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEhC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { DsTable } from './table.js';
2
2
  import { DsTableSortButton } from './table-sort-button.js';
3
3
  import { DsTablePagination } from './table-pagination.js';
4
+ import '../skeleton/define.js';
4
5
  declare global {
5
6
  interface HTMLElementTagNameMap {
6
7
  'ds-table': DsTable;
@@ -1 +1 @@
1
- {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAY1D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;QACpB,sBAAsB,EAAE,iBAAiB,CAAC;QAC1C,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,uBAAuB,CAAC;AAY/B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;QACpB,sBAAsB,EAAE,iBAAiB,CAAC;QAC1C,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { DsTable } from './table.js';
2
2
  import { DsTableSortButton } from './table-sort-button.js';
3
3
  import { DsTablePagination } from './table-pagination.js';
4
+ import '../skeleton/define.js';
4
5
  if (!customElements.get('ds-table')) {
5
6
  customElements.define('ds-table', DsTable);
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/atoms/table/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AACnE,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC/C,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/atoms/table/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,uBAAuB,CAAC;AAE/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AACnE,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC/C,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type TemplateResult } from 'lit';
2
+ export declare function renderTableSkeleton(rowCount: number, columnCount: number): TemplateResult;
3
+ //# sourceMappingURL=table-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-skeleton.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAkBhD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,CA6BzF"}
@@ -0,0 +1,44 @@
1
+ import { html } from 'lit';
2
+ function count(value, fallback) {
3
+ if (!Number.isFinite(value)) {
4
+ return fallback;
5
+ }
6
+ return Math.max(1, Math.floor(value));
7
+ }
8
+ function range(length) {
9
+ return Array.from({ length }, (_, index) => index);
10
+ }
11
+ function cellWidth(index) {
12
+ const widths = ['70%', '52%', '62%', '44%', '58%'];
13
+ return widths[index % widths.length] ?? '60%';
14
+ }
15
+ export function renderTableSkeleton(rowCount, columnCount) {
16
+ const rows = range(count(rowCount, 5));
17
+ const columns = range(count(columnCount, 4));
18
+ return html `
19
+ <table part="table" class="skeleton-table" aria-hidden="true">
20
+ <colgroup>${columns.map(() => html `<col>`)}</colgroup>
21
+ <thead part="thead">
22
+ <tr>
23
+ ${columns.map(index => html `
24
+ <th part="header-cell" scope="col">
25
+ <ds-skeleton width=${cellWidth(index)}></ds-skeleton>
26
+ </th>
27
+ `)}
28
+ </tr>
29
+ </thead>
30
+ <tbody part="tbody">
31
+ ${rows.map(() => html `
32
+ <tr part="row">
33
+ ${columns.map(index => html `
34
+ <td part="cell">
35
+ <ds-skeleton width=${cellWidth(index)}></ds-skeleton>
36
+ </td>
37
+ `)}
38
+ </tr>
39
+ `)}
40
+ </tbody>
41
+ </table>
42
+ `;
43
+ }
44
+ //# sourceMappingURL=table-skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-skeleton.js","sourceRoot":"","sources":["../../../src/atoms/table/table-skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAEhD,SAAS,KAAK,CAAC,KAAa,EAAE,QAAgB;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,WAAmB;IACvE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7C,OAAO,IAAI,CAAA;;kBAEK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA,OAAO,CAAC;;;YAGpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;;mCAEF,SAAS,CAAC,KAAK,CAAC;;WAExC,CAAC;;;;UAIF,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;;cAEf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;;qCAEF,SAAS,CAAC,KAAK,CAAC;;aAExC,CAAC;;SAEL,CAAC;;;GAGP,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type TemplateResult } from 'lit';
2
2
  import { DsElement } from '@jsekulowicz/ds-core';
3
+ import '../skeleton/define.js';
3
4
  import type { TableColumn, TableRow, TableSortState } from './types.js';
4
5
  /**
5
6
  * @tag ds-table
@@ -8,6 +9,7 @@ import type { TableColumn, TableRow, TableSortState } from './types.js';
8
9
  * @slot toolbar - Content placed above the table (filter, search).
9
10
  * @slot footer - Content placed below the table (pagination).
10
11
  * @slot empty - Shown when `rows` is empty.
12
+ * @slot loading - Shown inside the loading overlay when `loading` is true.
11
13
  * @slot header-{columnName} - Per-column header override (e.g. inject a ds-table-sort-button).
12
14
  * @event ds-row-click - Emitted when `clickable-rows` is set and a row is activated. Detail: `{ row, index }`.
13
15
  * @csspart table - The internal `<table>` element.
@@ -21,6 +23,7 @@ import type { TableColumn, TableRow, TableSortState } from './types.js';
21
23
  * @csspart toolbar - The toolbar wrapper.
22
24
  * @csspart footer - The footer wrapper.
23
25
  * @csspart empty - The empty-state wrapper.
26
+ * @csspart loading - Loading overlay rendered when `loading` is true.
24
27
  */
25
28
  export declare class DsTable<T extends TableRow = TableRow> extends DsElement {
26
29
  #private;
@@ -29,6 +32,9 @@ export declare class DsTable<T extends TableRow = TableRow> extends DsElement {
29
32
  columns: readonly TableColumn<T>[];
30
33
  sortState: TableSortState | null;
31
34
  clickableRows: boolean;
35
+ loading: boolean;
36
+ skeletonRows: number;
37
+ skeletonColumns: number;
32
38
  rowKey?: string;
33
39
  render(): TemplateResult;
34
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AASxE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,SAAS;;IACnE,OAAgB,MAAM,4BAAsC;IAE5B,IAAI,EAAE,SAAS,CAAC,EAAE,CAAM;IACxB,OAAO,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAM;IACxC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IACC,aAAa,UAAS;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAsG3C,MAAM,IAAI,cAAc;CAkBlC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AASxE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,SAAS;;IACnE,OAAgB,MAAM,4BAAsC;IAE5B,IAAI,EAAE,SAAS,CAAC,EAAE,CAAM;IACxB,OAAO,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAM;IACxC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAQ;IACC,aAAa,UAAS;IACnD,OAAO,UAAS;IACJ,YAAY,SAAK;IACd,eAAe,SAAK;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAqJ3C,MAAM,IAAI,cAAc;CAUlC"}
@@ -4,10 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { html, nothing } from 'lit';
7
+ import { html } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
+ import { ifDefined } from 'lit/directives/if-defined.js';
9
10
  import { DsElement } from '@jsekulowicz/ds-core';
11
+ import '../skeleton/define.js';
10
12
  import { tableStyles } from './table.styles.js';
13
+ import { renderTableSkeleton } from './table-skeleton.js';
11
14
  const INTERACTIVE_TAGS = new Set([
12
15
  'a', 'button', 'input', 'select', 'textarea', 'label',
13
16
  'ds-button', 'ds-link', 'ds-checkbox', 'ds-radio', 'ds-select',
@@ -21,6 +24,7 @@ const INTERACTIVE_TAGS = new Set([
21
24
  * @slot toolbar - Content placed above the table (filter, search).
22
25
  * @slot footer - Content placed below the table (pagination).
23
26
  * @slot empty - Shown when `rows` is empty.
27
+ * @slot loading - Shown inside the loading overlay when `loading` is true.
24
28
  * @slot header-{columnName} - Per-column header override (e.g. inject a ds-table-sort-button).
25
29
  * @event ds-row-click - Emitted when `clickable-rows` is set and a row is activated. Detail: `{ row, index }`.
26
30
  * @csspart table - The internal `<table>` element.
@@ -34,6 +38,7 @@ const INTERACTIVE_TAGS = new Set([
34
38
  * @csspart toolbar - The toolbar wrapper.
35
39
  * @csspart footer - The footer wrapper.
36
40
  * @csspart empty - The empty-state wrapper.
41
+ * @csspart loading - Loading overlay rendered when `loading` is true.
37
42
  */
38
43
  export class DsTable extends DsElement {
39
44
  constructor() {
@@ -42,13 +47,22 @@ export class DsTable extends DsElement {
42
47
  this.columns = [];
43
48
  this.sortState = null;
44
49
  this.clickableRows = false;
50
+ this.loading = false;
51
+ this.skeletonRows = 5;
52
+ this.skeletonColumns = 4;
45
53
  this.#onRowClick = (event, row, index) => {
54
+ if (this.loading) {
55
+ return;
56
+ }
46
57
  if (this.#pathHasInteractiveBeforeRow(event)) {
47
58
  return;
48
59
  }
49
60
  this.emit('ds-row-click', { detail: { row, index } });
50
61
  };
51
62
  this.#onRowKeydown = (event, row, index) => {
63
+ if (this.loading) {
64
+ return;
65
+ }
52
66
  if (event.key !== 'Enter' && event.key !== ' ') {
53
67
  return;
54
68
  }
@@ -101,31 +115,43 @@ export class DsTable extends DsElement {
101
115
  part="header-cell"
102
116
  scope="col"
103
117
  class=${`align-${align}`}
104
- aria-sort=${this.#ariaSort(column) ?? nothing}
118
+ aria-sort=${ifDefined(this.#ariaSort(column))}
105
119
  >
106
120
  <slot name=${`header-${column.name}`}>${column.label}</slot>
107
121
  </th>
108
122
  `;
109
123
  }
110
- #renderRow(row, index) {
111
- const clickable = this.clickableRows;
124
+ #renderClickableRow(row, index) {
112
125
  return html `
113
126
  <tr
114
- part=${clickable ? 'row row-clickable' : 'row'}
115
- class=${clickable ? 'clickable' : ''}
116
- role=${clickable ? 'button' : nothing}
117
- tabindex=${clickable ? 0 : nothing}
118
- @click=${clickable ? (e) => this.#onRowClick(e, row, index) : nothing}
119
- @keydown=${clickable ? (e) => this.#onRowKeydown(e, row, index) : nothing}
127
+ part="row row-clickable"
128
+ class="clickable"
129
+ role="button"
130
+ tabindex="0"
131
+ @click=${(e) => this.#onRowClick(e, row, index)}
132
+ @keydown=${(e) => this.#onRowKeydown(e, row, index)}
120
133
  >
121
- ${this.columns.map(column => html `
122
- <td part="cell" class=${`align-${column.align ?? 'left'}`}>
123
- ${this.#renderCell(column, row, index)}
124
- </td>
125
- `)}
134
+ ${this.#renderCells(row, index)}
126
135
  </tr>
127
136
  `;
128
137
  }
138
+ #renderRow(row, index) {
139
+ if (this.clickableRows) {
140
+ return this.#renderClickableRow(row, index);
141
+ }
142
+ return html `
143
+ <tr part="row">
144
+ ${this.#renderCells(row, index)}
145
+ </tr>
146
+ `;
147
+ }
148
+ #renderCells(row, index) {
149
+ return this.columns.map(column => html `
150
+ <td part="cell" class=${`align-${column.align ?? 'left'}`}>
151
+ ${this.#renderCell(column, row, index)}
152
+ </td>
153
+ `);
154
+ }
129
155
  #renderBody() {
130
156
  if (this.rows.length === 0) {
131
157
  return html `
@@ -138,20 +164,37 @@ export class DsTable extends DsElement {
138
164
  }
139
165
  return html `${this.rows.map((row, i) => this.#renderRow(row, i))}`;
140
166
  }
167
+ #renderLoading() {
168
+ if (!this.loading || this.columns.length === 0) {
169
+ return null;
170
+ }
171
+ return html `
172
+ <div class="loading" part="loading" role="status" aria-live="polite">
173
+ <span><slot name="loading">Loading...</slot></span>
174
+ </div>
175
+ `;
176
+ }
177
+ #renderTable() {
178
+ if (this.columns.length === 0) {
179
+ return renderTableSkeleton(this.skeletonRows, this.skeletonColumns);
180
+ }
181
+ return html `
182
+ <table part="table" aria-busy=${ifDefined(this.loading ? 'true' : undefined)}>
183
+ <caption part="caption"><slot name="caption"></slot></caption>
184
+ <colgroup>${this.columns.map(col => html `<col style=${col.width ? `width: ${col.width}` : ''}>`)}</colgroup>
185
+ <thead part="thead">
186
+ <tr>${this.columns.map(col => this.#renderHeader(col))}</tr>
187
+ </thead>
188
+ <tbody part="tbody">${this.#renderBody()}</tbody>
189
+ </table>
190
+ `;
191
+ }
141
192
  render() {
142
193
  return html `
143
194
  <div class="toolbar" part="toolbar"><slot name="toolbar"></slot></div>
144
195
  <div class="scroll">
145
- <table part="table">
146
- <caption part="caption"><slot name="caption"></slot></caption>
147
- <colgroup>
148
- ${this.columns.map(col => html `<col style=${col.width ? `width: ${col.width}` : ''} />`)}
149
- </colgroup>
150
- <thead part="thead">
151
- <tr>${this.columns.map(col => this.#renderHeader(col))}</tr>
152
- </thead>
153
- <tbody part="tbody">${this.#renderBody()}</tbody>
154
- </table>
196
+ ${this.#renderTable()}
197
+ ${this.#renderLoading()}
155
198
  </div>
156
199
  <div class="footer" part="footer"><slot name="footer"></slot></div>
157
200
  `;
@@ -169,6 +212,15 @@ __decorate([
169
212
  __decorate([
170
213
  property({ type: Boolean, reflect: true, attribute: 'clickable-rows' })
171
214
  ], DsTable.prototype, "clickableRows", void 0);
215
+ __decorate([
216
+ property({ type: Boolean, reflect: true })
217
+ ], DsTable.prototype, "loading", void 0);
218
+ __decorate([
219
+ property({ type: Number, attribute: 'skeleton-rows' })
220
+ ], DsTable.prototype, "skeletonRows", void 0);
221
+ __decorate([
222
+ property({ type: Number, attribute: 'skeleton-columns' })
223
+ ], DsTable.prototype, "skeletonColumns", void 0);
172
224
  __decorate([
173
225
  property({ attribute: 'row-key' })
174
226
  ], DsTable.prototype, "rowKey", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/atoms/table/table.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO;IACrD,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW;IAC9D,sBAAsB,EAAE,eAAe,EAAE,sBAAsB;IAC/D,qBAAqB;CACtB,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,OAAuC,SAAQ,SAAS;IAArE;;QAGkC,SAAI,GAAiB,EAAE,CAAC;QACxB,YAAO,GAA8B,EAAE,CAAC;QACxC,cAAS,GAA0B,IAAI,CAAC;QACC,kBAAa,GAAG,KAAK,CAAC;QACnD,YAAO,GAAG,KAAK,CAAC;QACJ,iBAAY,GAAG,CAAC,CAAC;QACd,oBAAe,GAAG,CAAC,CAAC;QAG/E,gBAAW,GAAG,CAAC,KAAiB,EAAE,GAAM,EAAE,KAAa,EAAQ,EAAE;YAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,KAAoB,EAAE,GAAM,EAAE,KAAa,EAAQ,EAAE;YACpE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;IA0IJ,CAAC;aAxKiB,WAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,AAArC,CAAsC;IAW5D,WAAW,CAQT;IAEF,aAAa,CASX;IAEF,4BAA4B,CAAC,KAAY;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,YAAY,OAAO,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,CAAC,MAAsB;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IACzE,CAAC;IAED,WAAW,CAAC,MAAsB,EAAE,GAAM,EAAE,KAAa;QACvD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,MAAsB;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;QACrC,OAAO,IAAI,CAAA;;;;gBAIC,SAAS,KAAK,EAAE;oBACZ,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;qBAEhC,UAAU,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK;;KAEvD,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,GAAM,EAAE,KAAa;QACvC,OAAO,IAAI,CAAA;;;;;;iBAME,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;mBAChD,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;UAEhE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;;KAElC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,GAAM,EAAE,KAAa;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;;KAElC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAM,EAAE,KAAa;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA;8BACZ,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,EAAE;UACrD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;;KAEzC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAA;;mDAEkC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC;;;;OAIpE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAA;sCACuB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;;oBAE9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;;gBAExF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;;8BAElC,IAAI,CAAC,WAAW,EAAE;;KAE3C,CAAC;IACJ,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;;UAGL,IAAI,CAAC,YAAY,EAAE;UACnB,IAAI,CAAC,cAAc,EAAE;;;KAG1B,CAAC;IACJ,CAAC;;AArK+B;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;qCAAyB;AACxB;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wCAAyC;AACxC;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;0CAAyC;AACC;IAAxE,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;8CAAuB;AACnD;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCAAiB;AACJ;IAAvD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;6CAAkB;AACd;IAA1D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;gDAAqB;AAC3C;IAAnC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;uCAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.styles.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,yBA2FvB,CAAC"}
1
+ {"version":3,"file":"table.styles.d.ts","sourceRoot":"","sources":["../../../src/atoms/table/table.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,yBAoHvB,CAAC"}
@@ -16,6 +16,7 @@ export const tableStyles = css `
16
16
  }
17
17
 
18
18
  .scroll {
19
+ position: relative;
19
20
  width: 100%;
20
21
  overflow-x: auto;
21
22
  border: 1px solid var(--ds-color-border-subtle);
@@ -78,6 +79,30 @@ export const tableStyles = css `
78
79
  box-shadow: inset 0 0 0 2px var(--ds-color-focus);
79
80
  }
80
81
 
82
+ .skeleton-table {
83
+ min-width: 32rem;
84
+ }
85
+
86
+ .loading {
87
+ position: absolute;
88
+ inset: 0;
89
+ display: grid;
90
+ place-items: center;
91
+ min-height: 100%;
92
+ background: color-mix(in srgb, var(--ds-color-bg) 78%, transparent);
93
+ color: var(--ds-color-fg);
94
+ pointer-events: auto;
95
+ }
96
+
97
+ .loading span {
98
+ padding: var(--ds-space-2) var(--ds-space-3);
99
+ border: 1px solid var(--ds-color-border);
100
+ border-radius: var(--ds-radius-sm);
101
+ background: var(--ds-color-bg);
102
+ box-shadow: var(--ds-shadow-sm, 0 1px 2px rgba(15, 23, 42, 0.12));
103
+ font-weight: var(--ds-font-weight-medium);
104
+ }
105
+
81
106
  .empty {
82
107
  padding: var(--ds-space-6);
83
108
  text-align: center;
@@ -1 +1 @@
1
- {"version":3,"file":"table.styles.js","sourceRoot":"","sources":["../../../src/atoms/table/table.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2F7B,CAAC"}
1
+ {"version":3,"file":"table.styles.js","sourceRoot":"","sources":["../../../src/atoms/table/table.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH7B,CAAC"}
@@ -0,0 +1,33 @@
1
+ @layer ds.utilities {
2
+ .ds-d-block { display: block; }
3
+ .ds-d-inline-block { display: inline-block; }
4
+ .ds-d-flex { display: flex; }
5
+ .ds-d-inline-flex { display: inline-flex; }
6
+ .ds-d-grid { display: grid; }
7
+ .ds-d-none { display: none; }
8
+
9
+ .ds-flex-row { flex-direction: row; }
10
+ .ds-flex-column { flex-direction: column; }
11
+ .ds-flex-wrap { flex-wrap: wrap; }
12
+ .ds-flex-nowrap { flex-wrap: nowrap; }
13
+
14
+ .ds-items-start { align-items: flex-start; }
15
+ .ds-items-center { align-items: center; }
16
+ .ds-items-end { align-items: flex-end; }
17
+ .ds-items-stretch { align-items: stretch; }
18
+
19
+ .ds-justify-start { justify-content: flex-start; }
20
+ .ds-justify-center { justify-content: center; }
21
+ .ds-justify-end { justify-content: flex-end; }
22
+ .ds-justify-between { justify-content: space-between; }
23
+
24
+ .ds-content-start { align-content: flex-start; }
25
+ .ds-content-center { align-content: center; }
26
+ .ds-content-end { align-content: flex-end; }
27
+ .ds-content-between { align-content: space-between; }
28
+
29
+ .ds-self-start { align-self: flex-start; }
30
+ .ds-self-center { align-self: center; }
31
+ .ds-self-end { align-self: flex-end; }
32
+ .ds-self-stretch { align-self: stretch; }
33
+ }