@panneau/lists 5.0.0-alpha.1 → 5.0.0-alpha.3

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 (43) hide show
  1. package/README.md +2 -2
  2. package/dist/ListView.css +16 -16
  3. package/dist/ListView.d.ts +8 -2
  4. package/dist/ListView.d.ts.map +1 -1
  5. package/dist/ListView.js +55 -27
  6. package/dist/ListView.js.map +1 -1
  7. package/dist/ListView.module.js +10 -10
  8. package/dist/actions/Actions.css +9 -9
  9. package/dist/actions/Actions.module.js +6 -6
  10. package/dist/actions/ConfirmDialog.d.ts +15 -3
  11. package/dist/actions/ConfirmDialog.d.ts.map +1 -1
  12. package/dist/actions/ConfirmDialog.js +39 -122
  13. package/dist/actions/ConfirmDialog.js.map +1 -1
  14. package/dist/actions/RowActions.js +1 -1
  15. package/dist/displays/Displays.css +13 -13
  16. package/dist/displays/Displays.module.js +12 -12
  17. package/dist/displays/Displays.module.js.map +1 -1
  18. package/dist/displays/displays.js +1 -1
  19. package/dist/filters/Filters.css +13 -13
  20. package/dist/filters/Filters.js +1 -1
  21. package/dist/filters/Filters.module.js +8 -8
  22. package/dist/filters/controls.js +1 -1
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/layouts/CardsLayout.css +17 -11
  26. package/dist/layouts/CardsLayout.js +1 -1
  27. package/dist/layouts/CardsLayout.module.js +8 -8
  28. package/dist/layouts/CardsLayout.module.js.map +1 -1
  29. package/dist/layouts/ItemTitle.js +1 -1
  30. package/dist/layouts/TableLayout.css +35 -35
  31. package/dist/layouts/TableLayout.js +1 -1
  32. package/dist/layouts/TableLayout.module.js +12 -12
  33. package/dist/layouts/TableLayout.module.js.map +1 -1
  34. package/dist/layouts/link.css +3 -3
  35. package/dist/layouts/link.module.js +1 -1
  36. package/dist/toolbar/LayoutSwitch.js +1 -1
  37. package/dist/toolbar/SearchField.js +1 -1
  38. package/dist/toolbar/SortSelect.js +1 -1
  39. package/dist/toolbar/Toolbar.css +12 -12
  40. package/dist/toolbar/Toolbar.module.js +7 -7
  41. package/dist/types.d.ts +10 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"CardsLayout.module.js","names":[],"sources":["../../src/layouts/CardsLayout.module.css"],"sourcesContent":[".cards {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(16rem, 100%), 1fr));\n gap: var(--panneau-space-3);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-3);\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n}\n\n.card[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n border-color: var(--panneau-color-border-control);\n}\n\n.header {\n display: flex;\n align-items: flex-start;\n gap: var(--panneau-space-2);\n}\n\n.title {\n flex: 1;\n min-width: 0;\n margin: 0;\n font-size: var(--panneau-font-size-lg);\n font-weight: var(--panneau-font-weight-medium);\n line-height: var(--panneau-line-height-tight);\n}\n\n.values {\n display: grid;\n gap: var(--panneau-space-1);\n margin: 0;\n font-size: var(--panneau-font-size-md);\n}\n\n.value {\n display: grid;\n grid-template-columns: minmax(5rem, 40%) 1fr;\n gap: var(--panneau-space-2);\n}\n\n.value dt {\n color: var(--panneau-color-text-muted);\n}\n\n.value dd {\n margin: 0;\n min-width: 0;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--panneau-space-1);\n margin-top: auto;\n padding-top: var(--panneau-space-1);\n}\n\n.pageSelection {\n margin-bottom: var(--panneau-space-2);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"CardsLayout.module.js","names":[],"sources":["../../src/layouts/CardsLayout.module.css"],"sourcesContent":[".cards {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(16rem, 100%), 1fr));\n gap: var(--panneau-space-3);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-3);\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n}\n\n.card[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n border-color: var(--panneau-color-border-control);\n}\n\n.header {\n display: flex;\n align-items: flex-start;\n gap: var(--panneau-space-2);\n}\n\n.title {\n flex: 1;\n min-width: 0;\n margin: 0;\n font-size: var(--panneau-font-size-lg);\n font-weight: var(--panneau-font-weight-medium);\n line-height: var(--panneau-line-height-tight);\n}\n\n.values {\n display: grid;\n gap: var(--panneau-space-1);\n margin: 0;\n font-size: var(--panneau-font-size-md);\n}\n\n.values dt,\n.values dd {\n margin: 0;\n font-weight: inherit;\n}\n\n.value {\n display: grid;\n grid-template-columns: minmax(5rem, 40%) 1fr;\n gap: var(--panneau-space-2);\n}\n\n.value dt {\n color: var(--panneau-color-text-muted);\n}\n\n.value dd {\n margin: 0;\n min-width: 0;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--panneau-space-1);\n margin-top: auto;\n padding-top: var(--panneau-space-1);\n}\n\n.pageSelection {\n margin-bottom: var(--panneau-space-2);\n}\n"],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import link_module_default from "./link.module.js";
2
- import { c } from "react/compiler-runtime";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import { c } from "react/compiler-runtime";
4
4
  import { Link } from "react-aria-components";
5
5
  //#region src/layouts/ItemTitle.tsx
6
6
  /**
@@ -1,25 +1,25 @@
1
- .panneau-scroller-dntHlH {
1
+ .panneau-table-layout-scroller {
2
2
  overflow-x: auto;
3
3
  border: var(--panneau-border-width) solid var(--panneau-color-border);
4
4
  border-radius: var(--panneau-radius-lg);
5
5
  background-color: var(--panneau-color-surface);
6
6
  }
7
7
 
8
- .panneau-table-adJh-G {
8
+ .panneau-table-layout-table {
9
9
  width: 100%;
10
10
  border-collapse: collapse;
11
11
  font-size: var(--panneau-font-size-md);
12
12
  }
13
13
 
14
- .panneau-table-adJh-G th,
15
- .panneau-table-adJh-G td {
16
- padding: var(--panneau-space-2) var(--panneau-space-3);
14
+ .panneau-table-layout-table th,
15
+ .panneau-table-layout-table td {
16
+ padding: var(--panneau-row-padding-y) var(--panneau-space-3);
17
17
  text-align: start;
18
18
  vertical-align: middle;
19
19
  border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);
20
20
  }
21
21
 
22
- .panneau-table-adJh-G th {
22
+ .panneau-table-layout-table th {
23
23
  font-size: var(--panneau-font-size-sm);
24
24
  font-weight: var(--panneau-font-weight-medium);
25
25
  color: var(--panneau-color-text-muted);
@@ -27,33 +27,33 @@
27
27
  background-color: var(--panneau-color-surface-sunken);
28
28
  }
29
29
 
30
- .panneau-table-adJh-G tbody tr:last-child td {
30
+ .panneau-table-layout-table tbody tr:last-child td {
31
31
  border-bottom: 0;
32
32
  }
33
33
 
34
- .panneau-table-adJh-G tbody tr[data-selected] {
34
+ .panneau-table-layout-table tbody tr[data-selected] {
35
35
  background-color: var(--panneau-color-accent-subtle);
36
36
  }
37
37
 
38
- .panneau-center-Fx-12L {
38
+ .panneau-table-layout-center {
39
39
  text-align: center !important;
40
40
  }
41
41
 
42
- .panneau-end-Jr3hRc {
42
+ .panneau-table-layout-end {
43
43
  text-align: end !important;
44
44
  }
45
45
 
46
- .panneau-check-E5-IqZ {
46
+ .panneau-table-layout-check {
47
47
  width: 1px;
48
48
  }
49
49
 
50
- .panneau-actionsCell-dzoCuU {
50
+ .panneau-table-layout-actions-cell {
51
51
  width: 1px;
52
52
  text-align: end !important;
53
53
  white-space: nowrap;
54
54
  }
55
55
 
56
- .panneau-sort-t4x1tD {
56
+ .panneau-table-layout-sort {
57
57
  display: inline-flex;
58
58
  align-items: center;
59
59
  gap: var(--panneau-space-1);
@@ -67,29 +67,29 @@
67
67
  cursor: pointer;
68
68
  }
69
69
 
70
- .panneau-sort-t4x1tD:hover {
70
+ .panneau-table-layout-sort:hover {
71
71
  color: var(--panneau-color-text);
72
72
  background-color: var(--panneau-color-hover);
73
73
  }
74
74
 
75
- .panneau-sort-t4x1tD:focus-visible {
75
+ .panneau-table-layout-sort:focus-visible {
76
76
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
77
77
  outline-offset: 1px;
78
78
  }
79
79
 
80
- .panneau-sortIcon-5pp-ve {
80
+ .panneau-table-layout-sort-icon {
81
81
  opacity: 0.5;
82
82
  }
83
83
 
84
- .panneau-sorted-a6Fwul .panneau-sortIcon-5pp-ve {
84
+ .panneau-table-layout-sorted .panneau-table-layout-sort-icon {
85
85
  opacity: 1;
86
86
  }
87
87
 
88
- .panneau-cellLabel-tiliX5 {
88
+ .panneau-table-layout-cell-label {
89
89
  display: none;
90
90
  }
91
91
 
92
- .panneau-visuallyHidden--8qvnp {
92
+ .panneau-table-layout-visually-hidden {
93
93
  position: absolute;
94
94
  width: 1px;
95
95
  height: 1px;
@@ -100,30 +100,30 @@
100
100
 
101
101
  /* Narrow lists (phones): each row is a block, with the label of each value next to it. */
102
102
  @container panneau-list (max-width: 40rem) {
103
- .panneau-scroller-dntHlH {
103
+ .panneau-table-layout-scroller {
104
104
  overflow: visible;
105
105
  background: none;
106
106
  border: 0;
107
107
  }
108
108
 
109
109
  /* The labels of the cells replace the headers, and the list's sort select their buttons. */
110
- .panneau-table-adJh-G thead {
110
+ .panneau-table-layout-table thead {
111
111
  display: none;
112
112
  }
113
113
 
114
- .panneau-table-adJh-G,
115
- .panneau-table-adJh-G tbody,
116
- .panneau-table-adJh-G tr,
117
- .panneau-table-adJh-G td {
114
+ .panneau-table-layout-table,
115
+ .panneau-table-layout-table tbody,
116
+ .panneau-table-layout-table tr,
117
+ .panneau-table-layout-table td {
118
118
  display: block;
119
119
  }
120
120
 
121
- .panneau-table-adJh-G tbody {
121
+ .panneau-table-layout-table tbody {
122
122
  display: grid;
123
123
  gap: var(--panneau-space-2);
124
124
  }
125
125
 
126
- .panneau-table-adJh-G tr {
126
+ .panneau-table-layout-table tr {
127
127
  position: relative;
128
128
  padding: var(--panneau-space-2) 0;
129
129
  background-color: var(--panneau-color-surface);
@@ -131,7 +131,7 @@
131
131
  border-radius: var(--panneau-radius-lg);
132
132
  }
133
133
 
134
- .panneau-table-adJh-G td {
134
+ .panneau-table-layout-table td {
135
135
  display: grid;
136
136
  grid-template-columns: minmax(5rem, 35%) 1fr;
137
137
  gap: var(--panneau-space-2);
@@ -140,36 +140,36 @@
140
140
  border: 0;
141
141
  }
142
142
 
143
- .panneau-table-adJh-G td.panneau-check-E5-IqZ,
144
- .panneau-table-adJh-G td.panneau-actionsCell-dzoCuU {
143
+ .panneau-table-layout-table td.panneau-table-layout-check,
144
+ .panneau-table-layout-table td.panneau-table-layout-actions-cell {
145
145
  display: flex;
146
146
  width: auto;
147
147
  }
148
148
 
149
- .panneau-table-adJh-G td.panneau-check-E5-IqZ {
149
+ .panneau-table-layout-table td.panneau-table-layout-check {
150
150
  position: absolute;
151
151
  top: var(--panneau-space-2);
152
152
  inset-inline-end: var(--panneau-space-2);
153
153
  padding: 0;
154
154
  }
155
155
 
156
- .panneau-table-adJh-G td.panneau-actionsCell-dzoCuU {
156
+ .panneau-table-layout-table td.panneau-table-layout-actions-cell {
157
157
  justify-content: flex-start;
158
158
  flex-wrap: wrap;
159
159
  padding-top: var(--panneau-space-2);
160
160
  }
161
161
 
162
- .panneau-table-adJh-G td.panneau-title-KEAnyJ {
162
+ .panneau-table-layout-table td.panneau-table-layout-title {
163
163
  display: block;
164
164
  padding-inline-end: var(--panneau-space-10);
165
165
  font-weight: var(--panneau-font-weight-medium);
166
166
  }
167
167
 
168
- .panneau-table-adJh-G td.panneau-title-KEAnyJ .panneau-cellLabel-tiliX5 {
168
+ .panneau-table-layout-table td.panneau-table-layout-title .panneau-table-layout-cell-label {
169
169
  display: none;
170
170
  }
171
171
 
172
- .panneau-cellLabel-tiliX5 {
172
+ .panneau-table-layout-cell-label {
173
173
  display: block;
174
174
  font-size: var(--panneau-font-size-sm);
175
175
  color: var(--panneau-color-text-muted);
@@ -2,10 +2,10 @@ import { messages } from "../messages.js";
2
2
  import { ItemTitle } from "./ItemTitle.js";
3
3
  import { cx } from "../cx.js";
4
4
  import TableLayout_module_default from "./TableLayout.module.js";
5
- import { c } from "react/compiler-runtime";
6
5
  import { Checkbox, Icon, usePanneauIntl } from "@panneau/ui";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
8
7
  import { ArrowDown, ArrowUp, ArrowUpDown } from "lucide-react";
8
+ import { c } from "react/compiler-runtime";
9
9
  //#region src/layouts/TableLayout.tsx
10
10
  /** The sort direction of a column, from the first `sort` value. */
11
11
  function getSortDirection(sort, column) {
@@ -1,17 +1,17 @@
1
1
  import "./TableLayout.css";
2
2
  //#region src/layouts/TableLayout.module.css
3
- var scroller = "panneau-scroller-dntHlH";
4
- var table = "panneau-table-adJh-G";
5
- var center = "panneau-center-Fx-12L";
6
- var end = "panneau-end-Jr3hRc";
7
- var check = "panneau-check-E5-IqZ";
8
- var actionsCell = "panneau-actionsCell-dzoCuU";
9
- var sort = "panneau-sort-t4x1tD";
10
- var sortIcon = "panneau-sortIcon-5pp-ve";
11
- var sorted = "panneau-sorted-a6Fwul";
12
- var cellLabel = "panneau-cellLabel-tiliX5";
13
- var visuallyHidden = "panneau-visuallyHidden--8qvnp";
14
- var title = "panneau-title-KEAnyJ";
3
+ var scroller = "panneau-table-layout-scroller";
4
+ var table = "panneau-table-layout-table";
5
+ var center = "panneau-table-layout-center";
6
+ var end = "panneau-table-layout-end";
7
+ var check = "panneau-table-layout-check";
8
+ var actionsCell = "panneau-table-layout-actions-cell";
9
+ var sort = "panneau-table-layout-sort";
10
+ var sortIcon = "panneau-table-layout-sort-icon";
11
+ var sorted = "panneau-table-layout-sorted";
12
+ var cellLabel = "panneau-table-layout-cell-label";
13
+ var visuallyHidden = "panneau-table-layout-visually-hidden";
14
+ var title = "panneau-table-layout-title";
15
15
  var TableLayout_module_default = {
16
16
  scroller,
17
17
  table,
@@ -1 +1 @@
1
- {"version":3,"file":"TableLayout.module.js","names":[],"sources":["../../src/layouts/TableLayout.module.css"],"sourcesContent":[".scroller {\n overflow-x: auto;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n background-color: var(--panneau-color-surface);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--panneau-font-size-md);\n}\n\n.table th,\n.table td {\n padding: var(--panneau-space-2) var(--panneau-space-3);\n text-align: start;\n vertical-align: middle;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.table th {\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n background-color: var(--panneau-color-surface-sunken);\n}\n\n.table tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.table tbody tr[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n}\n\n.center {\n text-align: center !important;\n}\n\n.end {\n text-align: end !important;\n}\n\n.check {\n width: 1px;\n}\n\n.actionsCell {\n width: 1px;\n text-align: end !important;\n white-space: nowrap;\n}\n\n.sort {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n margin: calc(-1 * var(--panneau-space-1)) calc(-1 * var(--panneau-space-2));\n padding: var(--panneau-space-1) var(--panneau-space-2);\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n border-radius: var(--panneau-radius-sm);\n cursor: pointer;\n}\n\n.sort:hover {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.sort:focus-visible {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.sortIcon {\n opacity: 0.5;\n}\n\n.sorted .sortIcon {\n opacity: 1;\n}\n\n.cellLabel {\n display: none;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Narrow lists (phones): each row is a block, with the label of each value next to it. */\n@container panneau-list (max-width: 40rem) {\n .scroller {\n overflow: visible;\n background: none;\n border: 0;\n }\n\n /* The labels of the cells replace the headers, and the list's sort select their buttons. */\n .table thead {\n display: none;\n }\n\n .table,\n .table tbody,\n .table tr,\n .table td {\n display: block;\n }\n\n .table tbody {\n display: grid;\n gap: var(--panneau-space-2);\n }\n\n .table tr {\n position: relative;\n padding: var(--panneau-space-2) 0;\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n }\n\n .table td {\n display: grid;\n grid-template-columns: minmax(5rem, 35%) 1fr;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-1) var(--panneau-space-3);\n text-align: start !important;\n border: 0;\n }\n\n .table td.check,\n .table td.actionsCell {\n display: flex;\n width: auto;\n }\n\n .table td.check {\n position: absolute;\n top: var(--panneau-space-2);\n inset-inline-end: var(--panneau-space-2);\n padding: 0;\n }\n\n .table td.actionsCell {\n justify-content: flex-start;\n flex-wrap: wrap;\n padding-top: var(--panneau-space-2);\n }\n\n .table td.title {\n display: block;\n padding-inline-end: var(--panneau-space-10);\n font-weight: var(--panneau-font-weight-medium);\n }\n\n .table td.title .cellLabel {\n display: none;\n }\n\n .cellLabel {\n display: block;\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"TableLayout.module.js","names":[],"sources":["../../src/layouts/TableLayout.module.css"],"sourcesContent":[".scroller {\n overflow-x: auto;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n background-color: var(--panneau-color-surface);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--panneau-font-size-md);\n}\n\n.table th,\n.table td {\n padding: var(--panneau-row-padding-y) var(--panneau-space-3);\n text-align: start;\n vertical-align: middle;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.table th {\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n background-color: var(--panneau-color-surface-sunken);\n}\n\n.table tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.table tbody tr[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n}\n\n.center {\n text-align: center !important;\n}\n\n.end {\n text-align: end !important;\n}\n\n.check {\n width: 1px;\n}\n\n.actionsCell {\n width: 1px;\n text-align: end !important;\n white-space: nowrap;\n}\n\n.sort {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n margin: calc(-1 * var(--panneau-space-1)) calc(-1 * var(--panneau-space-2));\n padding: var(--panneau-space-1) var(--panneau-space-2);\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n border-radius: var(--panneau-radius-sm);\n cursor: pointer;\n}\n\n.sort:hover {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.sort:focus-visible {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.sortIcon {\n opacity: 0.5;\n}\n\n.sorted .sortIcon {\n opacity: 1;\n}\n\n.cellLabel {\n display: none;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Narrow lists (phones): each row is a block, with the label of each value next to it. */\n@container panneau-list (max-width: 40rem) {\n .scroller {\n overflow: visible;\n background: none;\n border: 0;\n }\n\n /* The labels of the cells replace the headers, and the list's sort select their buttons. */\n .table thead {\n display: none;\n }\n\n .table,\n .table tbody,\n .table tr,\n .table td {\n display: block;\n }\n\n .table tbody {\n display: grid;\n gap: var(--panneau-space-2);\n }\n\n .table tr {\n position: relative;\n padding: var(--panneau-space-2) 0;\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n }\n\n .table td {\n display: grid;\n grid-template-columns: minmax(5rem, 35%) 1fr;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-1) var(--panneau-space-3);\n text-align: start !important;\n border: 0;\n }\n\n .table td.check,\n .table td.actionsCell {\n display: flex;\n width: auto;\n }\n\n .table td.check {\n position: absolute;\n top: var(--panneau-space-2);\n inset-inline-end: var(--panneau-space-2);\n padding: 0;\n }\n\n .table td.actionsCell {\n justify-content: flex-start;\n flex-wrap: wrap;\n padding-top: var(--panneau-space-2);\n }\n\n .table td.title {\n display: block;\n padding-inline-end: var(--panneau-space-10);\n font-weight: var(--panneau-font-weight-medium);\n }\n\n .table td.title .cellLabel {\n display: none;\n }\n\n .cellLabel {\n display: block;\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n }\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- .panneau-link-1crRKJ {
1
+ .panneau-link {
2
2
  color: inherit;
3
3
  font-weight: var(--panneau-font-weight-medium);
4
4
  text-decoration: none;
@@ -6,11 +6,11 @@
6
6
  cursor: pointer;
7
7
  }
8
8
 
9
- .panneau-link-1crRKJ:hover {
9
+ .panneau-link:hover {
10
10
  text-decoration: underline;
11
11
  }
12
12
 
13
- .panneau-link-1crRKJ[data-focus-visible] {
13
+ .panneau-link[data-focus-visible] {
14
14
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
15
15
  outline-offset: 2px;
16
16
  }
@@ -1,6 +1,6 @@
1
1
  import "./link.css";
2
2
  //#region src/layouts/link.module.css
3
- var link = "panneau-link-1crRKJ";
3
+ var link = "panneau-link";
4
4
  var link_module_default = { link };
5
5
  //#endregion
6
6
  export { link_module_default as default, link };
@@ -1,9 +1,9 @@
1
1
  import { messages } from "../messages.js";
2
2
  import Toolbar_module_default from "./Toolbar.module.js";
3
- import { c } from "react/compiler-runtime";
4
3
  import { Icon, Tooltip, usePanneauIntl } from "@panneau/ui";
5
4
  import { jsx } from "react/jsx-runtime";
6
5
  import { LayoutGrid, Rows3, Square } from "lucide-react";
6
+ import { c } from "react/compiler-runtime";
7
7
  import { ToggleButton, ToggleButtonGroup } from "react-aria-components";
8
8
  //#region src/toolbar/LayoutSwitch.tsx
9
9
  var ICONS = {
@@ -1,10 +1,10 @@
1
1
  import { messages } from "../messages.js";
2
2
  import { useDraft } from "../useDraft.js";
3
3
  import Toolbar_module_default from "./Toolbar.module.js";
4
- import { c } from "react/compiler-runtime";
5
4
  import { Icon, TextInput, usePanneauIntl } from "@panneau/ui";
6
5
  import { jsx } from "react/jsx-runtime";
7
6
  import { Search } from "lucide-react";
7
+ import { c } from "react/compiler-runtime";
8
8
  //#region src/toolbar/SearchField.tsx
9
9
  /** The search of a list (`q`). */
10
10
  function SearchField(t0) {
@@ -1,8 +1,8 @@
1
1
  import { messages } from "../messages.js";
2
2
  import Toolbar_module_default from "./Toolbar.module.js";
3
- import { c } from "react/compiler-runtime";
4
3
  import { Select, usePanneauIntl } from "@panneau/ui";
5
4
  import { jsx } from "react/jsx-runtime";
5
+ import { c } from "react/compiler-runtime";
6
6
  //#region src/toolbar/SortSelect.tsx
7
7
  var DEFAULT = "";
8
8
  /** The sort of a list without column headers (cards), by sortable column and direction. */
@@ -1,9 +1,9 @@
1
- .panneau-search-xZg66e {
1
+ .panneau-toolbar-search {
2
2
  width: 16rem;
3
3
  max-width: 100%;
4
4
  }
5
5
 
6
- .panneau-pagination-dNpeRL {
6
+ .panneau-toolbar-pagination {
7
7
  display: flex;
8
8
  flex-wrap: wrap;
9
9
  align-items: center;
@@ -13,17 +13,17 @@
13
13
  color: var(--panneau-color-text-muted);
14
14
  }
15
15
 
16
- .panneau-pages-e6sKuy {
16
+ .panneau-toolbar-pages {
17
17
  display: flex;
18
18
  align-items: center;
19
19
  gap: var(--panneau-space-2);
20
20
  }
21
21
 
22
- .panneau-perPage-U3R-no {
22
+ .panneau-toolbar-per-page {
23
23
  width: 6rem;
24
24
  }
25
25
 
26
- .panneau-layouts-VUhEzd {
26
+ .panneau-toolbar-layouts {
27
27
  display: inline-flex;
28
28
  padding: 2px;
29
29
  background-color: var(--panneau-color-surface-sunken);
@@ -31,7 +31,7 @@
31
31
  border-radius: var(--panneau-radius-md);
32
32
  }
33
33
 
34
- .panneau-layoutButton-B28Z38 {
34
+ .panneau-toolbar-layout-button {
35
35
  display: inline-flex;
36
36
  align-items: center;
37
37
  justify-content: center;
@@ -44,29 +44,29 @@
44
44
  cursor: pointer;
45
45
  }
46
46
 
47
- .panneau-layoutButton-B28Z38[data-hovered] {
47
+ .panneau-toolbar-layout-button[data-hovered] {
48
48
  color: var(--panneau-color-text);
49
49
  }
50
50
 
51
- .panneau-layoutButton-B28Z38[data-selected] {
51
+ .panneau-toolbar-layout-button[data-selected] {
52
52
  color: var(--panneau-color-text);
53
53
  background-color: var(--panneau-color-surface);
54
54
  box-shadow: var(--panneau-shadow-sm);
55
55
  }
56
56
 
57
- .panneau-layoutButton-B28Z38[data-focus-visible] {
57
+ .panneau-toolbar-layout-button[data-focus-visible] {
58
58
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
59
59
  outline-offset: 1px;
60
60
  }
61
61
 
62
- .panneau-sort-5bHxuN {
62
+ .panneau-toolbar-sort {
63
63
  width: 14rem;
64
64
  max-width: 100%;
65
65
  }
66
66
 
67
67
  @container panneau-list (max-width: 40rem) {
68
- .panneau-search-xZg66e,
69
- .panneau-sort-5bHxuN {
68
+ .panneau-toolbar-search,
69
+ .panneau-toolbar-sort {
70
70
  width: 100%;
71
71
  }
72
72
  }
@@ -1,12 +1,12 @@
1
1
  import "./Toolbar.css";
2
2
  //#region src/toolbar/Toolbar.module.css
3
- var search = "panneau-search-xZg66e";
4
- var pagination = "panneau-pagination-dNpeRL";
5
- var pages = "panneau-pages-e6sKuy";
6
- var perPage = "panneau-perPage-U3R-no";
7
- var layouts = "panneau-layouts-VUhEzd";
8
- var layoutButton = "panneau-layoutButton-B28Z38";
9
- var sort = "panneau-sort-5bHxuN";
3
+ var search = "panneau-toolbar-search";
4
+ var pagination = "panneau-toolbar-pagination";
5
+ var pages = "panneau-toolbar-pages";
6
+ var perPage = "panneau-toolbar-per-page";
7
+ var layouts = "panneau-toolbar-layouts";
8
+ var layoutButton = "panneau-toolbar-layout-button";
9
+ var sort = "panneau-toolbar-sort";
10
10
  var Toolbar_module_default = {
11
11
  search,
12
12
  pagination,
package/dist/types.d.ts CHANGED
@@ -52,6 +52,16 @@ export interface ListActionEvent {
52
52
  /** Selected items of the current page that don't allow the action: the backend skips them. */
53
53
  skipped: readonly ListItem[];
54
54
  }
55
+ /** What the backend told about an action on a query selection: how many items it would skip. */
56
+ export interface ListActionPreview {
57
+ skipped: number;
58
+ }
59
+ /**
60
+ * Asks the backend what an action would do on a query selection, before the list confirms it (a
61
+ * dry run, for actions with `dryRun`), or resolves with `null` when it can't tell.
62
+ * `useActionPreview()` of `@panneau/actions` is one.
63
+ */
64
+ export type ListActionPreviewer = (event: ListActionEvent) => Promise<ListActionPreview | null>;
55
65
  /**
56
66
  * Runs an action. Lists ask for confirmation first when the action has `confirm`. A returned
57
67
  * promise shows the action as pending until it settles; after a selection action succeeds, the
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/lists",
3
- "version": "5.0.0-alpha.1",
3
+ "version": "5.0.0-alpha.3",
4
4
  "description": "Lists of Panneau: columns with displays, table and cards layouts, sorting, filters, search, pagination, selection and actions, driven by the list state of @panneau/core.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -37,14 +37,14 @@
37
37
  "react-intl": "^12.0.0"
38
38
  },
39
39
  "dependencies": {
40
- "@panneau/core": "5.0.0-alpha.1",
41
- "@panneau/fields": "5.0.0-alpha.1",
42
- "@panneau/intl": "5.0.0-alpha.1",
43
- "@panneau/protocol": "5.0.0-alpha.1",
44
- "@panneau/ui": "5.0.0-alpha.1",
40
+ "@panneau/core": "5.0.0-alpha.3",
41
+ "@panneau/fields": "5.0.0-alpha.3",
42
+ "@panneau/intl": "5.0.0-alpha.3",
43
+ "@panneau/protocol": "5.0.0-alpha.3",
44
+ "@panneau/ui": "5.0.0-alpha.3",
45
45
  "lucide-react": "^1.57.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@panneau/data": "5.0.0-alpha.1"
48
+ "@panneau/data": "5.0.0-alpha.3"
49
49
  }
50
50
  }