@elasticias/ui 1.0.43 → 1.0.44
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.
package/package.json
CHANGED
package/styles/_patterns.scss
CHANGED
|
@@ -1048,11 +1048,20 @@
|
|
|
1048
1048
|
|
|
1049
1049
|
/* ──────────── PAGER ─────────────────────────────────────────────── */
|
|
1050
1050
|
|
|
1051
|
+
/* Both halves wrap and can shrink. A row of controls has an intrinsic
|
|
1052
|
+
min-content width, so a pager that cannot wrap is as wide as its
|
|
1053
|
+
lines-per-page block plus every page button, and the card clips the
|
|
1054
|
+
rest: on a 390px phone, or in a narrow card on a tablet with the side
|
|
1055
|
+
panel open, "next" and the last page were cut off. When the two halves
|
|
1056
|
+
no longer fit on one line the page buttons take their own line, still
|
|
1057
|
+
at the end. */
|
|
1051
1058
|
.pager {
|
|
1052
1059
|
display: flex;
|
|
1060
|
+
flex-wrap: wrap;
|
|
1053
1061
|
justify-content: space-between;
|
|
1054
1062
|
align-items: center;
|
|
1055
1063
|
gap: var(--s-3);
|
|
1064
|
+
min-width: 0;
|
|
1056
1065
|
padding: var(--s-3) var(--s-5);
|
|
1057
1066
|
border-top: 1px solid var(--rule);
|
|
1058
1067
|
background: var(--paper-alt);
|
|
@@ -1060,8 +1069,21 @@
|
|
|
1060
1069
|
|
|
1061
1070
|
.pager .pages {
|
|
1062
1071
|
display: flex;
|
|
1072
|
+
flex-wrap: wrap;
|
|
1063
1073
|
align-items: center;
|
|
1064
1074
|
gap: 4px;
|
|
1075
|
+
min-width: 0;
|
|
1076
|
+
margin-inline-start: auto;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
/* The phone pager's "5 sur 20", between previous and next. */
|
|
1080
|
+
.pager .pg-status {
|
|
1081
|
+
padding: 0 8px;
|
|
1082
|
+
font-size: 12.5px;
|
|
1083
|
+
font-weight: 600;
|
|
1084
|
+
color: var(--text);
|
|
1085
|
+
font-variant-numeric: tabular-nums;
|
|
1086
|
+
white-space: nowrap;
|
|
1065
1087
|
}
|
|
1066
1088
|
|
|
1067
1089
|
.pager .pg {
|
|
@@ -1090,7 +1112,9 @@
|
|
|
1090
1112
|
|
|
1091
1113
|
.pager .size {
|
|
1092
1114
|
display: flex;
|
|
1115
|
+
flex-wrap: wrap;
|
|
1093
1116
|
align-items: center;
|
|
1117
|
+
min-width: 0;
|
|
1094
1118
|
gap: 8px;
|
|
1095
1119
|
font-size: 12.5px;
|
|
1096
1120
|
color: var(--text-mute);
|
|
@@ -4585,10 +4609,52 @@ input.ef-input[type='number'] {
|
|
|
4585
4609
|
min-inline-size: var(--hit-touch);
|
|
4586
4610
|
}
|
|
4587
4611
|
|
|
4612
|
+
/* The row ⋯ trigger and the clear ✕ draw at their desktop size (34x28
|
|
4613
|
+
pill, 22px circle) and reach the 48px tier through an invisible
|
|
4614
|
+
overhang, like the top-bar icons. Growing the painted box instead
|
|
4615
|
+
turned every row's ⋯ into a 48px bordered circle.
|
|
4616
|
+
|
|
4617
|
+
The margin reserves the same 48x48 the old rule laid out, so rows,
|
|
4618
|
+
cards and inputs keep their height and spacing, and the overhang
|
|
4619
|
+
never leaves that box: two triggers in adjacent compact rows cannot
|
|
4620
|
+
overlap, because each target is the footprint its own row already
|
|
4621
|
+
made room for. The trigger's overhang adds its 1px border, since an
|
|
4622
|
+
absolute box is measured from the padding edge. */
|
|
4588
4623
|
.row-actions__trigger,
|
|
4589
|
-
.ef-clear
|
|
4590
|
-
|
|
4591
|
-
|
|
4624
|
+
.ef-clear {
|
|
4625
|
+
position: relative;
|
|
4626
|
+
}
|
|
4627
|
+
|
|
4628
|
+
.row-actions__trigger {
|
|
4629
|
+
margin-block: calc((var(--hit-touch) - 28px) / 2);
|
|
4630
|
+
margin-inline: calc((var(--hit-touch) - 34px) / 2);
|
|
4631
|
+
}
|
|
4632
|
+
|
|
4633
|
+
.ef-clear {
|
|
4634
|
+
margin: calc((var(--hit-touch) - 22px) / 2);
|
|
4635
|
+
}
|
|
4636
|
+
|
|
4637
|
+
.row-actions__trigger::after,
|
|
4638
|
+
.ef-clear::after {
|
|
4639
|
+
content: '';
|
|
4640
|
+
position: absolute;
|
|
4641
|
+
}
|
|
4642
|
+
|
|
4643
|
+
.row-actions__trigger::after {
|
|
4644
|
+
inset-block: calc((var(--hit-touch) - 28px) / -2 - 1px);
|
|
4645
|
+
inset-inline: calc((var(--hit-touch) - 34px) / -2 - 1px);
|
|
4646
|
+
}
|
|
4647
|
+
|
|
4648
|
+
.ef-clear::after {
|
|
4649
|
+
inset: calc((var(--hit-touch) - 22px) / -2);
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4652
|
+
/* Written as `.pager .pg` to match the base rule's specificity: a bare
|
|
4653
|
+
`.pg` lost to its `height: 32px`, so page buttons drew 48px wide but
|
|
4654
|
+
32px tall on every touch screen. A floor rather than a fixed width,
|
|
4655
|
+
so a four-digit page number is not squeezed. */
|
|
4656
|
+
.pager .pg {
|
|
4657
|
+
min-inline-size: var(--hit-touch);
|
|
4592
4658
|
block-size: var(--hit-touch);
|
|
4593
4659
|
}
|
|
4594
4660
|
|
package/types/elasticias-ui.d.ts
CHANGED
|
@@ -5194,6 +5194,13 @@ interface PageBtn {
|
|
|
5194
5194
|
*
|
|
5195
5195
|
* Renders a windowed page list (first / current ±1 / last with
|
|
5196
5196
|
* ellipsis) for total > 7 pages. Below 7 pages all buttons show.
|
|
5197
|
+
*
|
|
5198
|
+
* On a phone (`EfViewportService.isMobile`) the window becomes
|
|
5199
|
+
* first · previous · "5 of 20" · next · last. The window is up to nine
|
|
5200
|
+
* 48px touch targets (about 464px) and a 390px phone has about 316px
|
|
5201
|
+
* inside a card, so it ran off the edge. The compact set still reaches
|
|
5202
|
+
* every page the window offered: its numbered neighbours are one step
|
|
5203
|
+
* away, and the first and the last page are one tap.
|
|
5197
5204
|
*/
|
|
5198
5205
|
declare class EfPagerComponent {
|
|
5199
5206
|
readonly pageNumber: _angular_core.InputSignal<number>;
|
|
@@ -5205,10 +5212,14 @@ declare class EfPagerComponent {
|
|
|
5205
5212
|
readonly ofLabelKey: _angular_core.InputSignal<string>;
|
|
5206
5213
|
readonly prevLabelKey: _angular_core.InputSignal<string>;
|
|
5207
5214
|
readonly nextLabelKey: _angular_core.InputSignal<string>;
|
|
5215
|
+
readonly firstLabelKey: _angular_core.InputSignal<string>;
|
|
5216
|
+
readonly lastLabelKey: _angular_core.InputSignal<string>;
|
|
5208
5217
|
/** Hide the lines-per-page selector + range when only paging is wanted. */
|
|
5209
5218
|
readonly hideSize: _angular_core.InputSignal<boolean>;
|
|
5210
5219
|
readonly pageChange: _angular_core.OutputEmitterRef<number>;
|
|
5211
5220
|
readonly pageSizeChange: _angular_core.OutputEmitterRef<number>;
|
|
5221
|
+
/** Phone layout: first · prev · "n of N" · next · last. */
|
|
5222
|
+
readonly compact: _angular_core.Signal<boolean>;
|
|
5212
5223
|
/** Falls back to the first configured option if the value ever goes empty. */
|
|
5213
5224
|
private get defaultSize();
|
|
5214
5225
|
/** `pageSizeOptions` shaped for `ef-select`, which reads a label and a
|
|
@@ -5228,7 +5239,7 @@ declare class EfPagerComponent {
|
|
|
5228
5239
|
onSizeChange(value: number | string | null): void;
|
|
5229
5240
|
trackBtn(index: number, btn: PageBtn): string;
|
|
5230
5241
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfPagerComponent, never>;
|
|
5231
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfPagerComponent, "ef-pager", never, { "pageNumber": { "alias": "pageNumber"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "linesPerPageLabelKey": { "alias": "linesPerPageLabelKey"; "required": false; "isSignal": true; }; "ofLabelKey": { "alias": "ofLabelKey"; "required": false; "isSignal": true; }; "prevLabelKey": { "alias": "prevLabelKey"; "required": false; "isSignal": true; }; "nextLabelKey": { "alias": "nextLabelKey"; "required": false; "isSignal": true; }; "hideSize": { "alias": "hideSize"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
|
|
5242
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfPagerComponent, "ef-pager", never, { "pageNumber": { "alias": "pageNumber"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "linesPerPageLabelKey": { "alias": "linesPerPageLabelKey"; "required": false; "isSignal": true; }; "ofLabelKey": { "alias": "ofLabelKey"; "required": false; "isSignal": true; }; "prevLabelKey": { "alias": "prevLabelKey"; "required": false; "isSignal": true; }; "nextLabelKey": { "alias": "nextLabelKey"; "required": false; "isSignal": true; }; "firstLabelKey": { "alias": "firstLabelKey"; "required": false; "isSignal": true; }; "lastLabelKey": { "alias": "lastLabelKey"; "required": false; "isSignal": true; }; "hideSize": { "alias": "hideSize"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
|
|
5232
5243
|
}
|
|
5233
5244
|
|
|
5234
5245
|
/**
|