@12-apps/ui 6.92.1 → 6.93.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.
- package/components-catalog.md +1 -1
- package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
- package/dist/_internal/components/data-display/Avatar/Avatar.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
- package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
- package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +9 -9
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +16 -16
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +10 -4
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +4 -4
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +6 -6
- package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +2 -2
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +1 -1
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
- package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +1 -1
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +35 -35
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +48 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js.map +1 -0
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +6 -5
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +3 -3
- package/dist/_internal/components/feedback/index.js +10 -9
- package/dist/_internal/components/index.js +44 -43
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
- package/dist/_internal/components/navigation/index.js +4 -4
- package/dist/_internal/user-avatar/user-avatar.js +4 -4
- package/dist/charts.js +6 -6
- package/dist/{chunk-DBPFKGXX.js → chunk-3YFDGFEK.js} +2 -2
- package/dist/{chunk-Y3F2F36I.js → chunk-4QGKR65P.js} +4 -4
- package/dist/{chunk-YE7M7URT.js → chunk-6D5AMANO.js} +2 -2
- package/dist/{chunk-UDBOGSFO.js → chunk-6HPVCDVU.js} +4 -4
- package/dist/{chunk-EOQ6EKTS.js → chunk-7XSCEHGA.js} +7 -7
- package/dist/{chunk-B5STMM3R.js → chunk-ALMGYCHY.js} +2 -2
- package/dist/{chunk-64UNVW6D.js → chunk-BP3ZKIPE.js} +4 -4
- package/dist/{chunk-OCT5VCLP.js → chunk-BQBEN44R.js} +2 -2
- package/dist/chunk-CPQJFHNZ.js +63 -0
- package/dist/chunk-CPQJFHNZ.js.map +1 -0
- package/dist/{chunk-Q3SILZTQ.js → chunk-E2UOEI7N.js} +2 -2
- package/dist/{chunk-RZWU2KYP.js → chunk-F5H3WDG7.js} +4 -3
- package/dist/chunk-F5H3WDG7.js.map +1 -0
- package/dist/{chunk-JVOEVTCZ.js → chunk-HQCZT6TO.js} +5 -5
- package/dist/{chunk-ZVHHFLYY.js → chunk-HSVSU7I2.js} +6 -6
- package/dist/{chunk-4QR7LM5F.js → chunk-JIEVKHOH.js} +2 -2
- package/dist/{chunk-FWTVIRZZ.js → chunk-JVQ56E3U.js} +6 -6
- package/dist/{chunk-YOLLISEY.js → chunk-JXK53XJW.js} +9 -9
- package/dist/{chunk-PCQ5JWLF.js → chunk-KPUUHAK6.js} +7 -7
- package/dist/{chunk-56JF5PZK.js → chunk-LYVTJLCF.js} +4 -4
- package/dist/{chunk-NXQ6PXLJ.js → chunk-LZ5PGB7U.js} +2 -2
- package/dist/{chunk-EKSJES5E.js → chunk-MAYAJXO6.js} +4 -4
- package/dist/{chunk-OCGPOACB.js → chunk-MFX4ASX5.js} +3 -3
- package/dist/{chunk-5I75WRXT.js → chunk-N3GLX64O.js} +4 -4
- package/dist/{chunk-PEAUGQKU.js → chunk-NQCTANF3.js} +7 -7
- package/dist/{chunk-IEUVP6UV.js → chunk-OM6ZT64U.js} +5 -5
- package/dist/{chunk-W676GY42.js → chunk-P772HCHI.js} +4 -4
- package/dist/{chunk-VWRXSBT2.js → chunk-R52N5UCS.js} +2 -2
- package/dist/{chunk-FQNDJITD.js → chunk-RCTHCXS6.js} +2 -2
- package/dist/{chunk-WLLUARTC.js → chunk-T2G4LDU5.js} +2 -2
- package/dist/{chunk-VCJ72ODU.js → chunk-VJIJCLUX.js} +68 -18
- package/dist/chunk-VJIJCLUX.js.map +1 -0
- package/dist/{chunk-66VKX6JE.js → chunk-WJMSND5Q.js} +2 -2
- package/dist/{chunk-ZCNR4DN5.js → chunk-XBWW3QSI.js} +4 -4
- package/dist/{chunk-BXZMV6QC.js → chunk-XFZDO2KB.js} +2 -2
- package/dist/{chunk-BOADHYTA.js → chunk-YNZUYZ2O.js} +2 -2
- package/dist/{chunk-XRV4QFEQ.js → chunk-ZBUMGMWP.js} +83 -65
- package/dist/chunk-ZBUMGMWP.js.map +1 -0
- package/dist/data-display/Alert.js +2 -2
- package/dist/data-display/Avatar.js +3 -3
- package/dist/data-display/CardKit.js +10 -10
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/DataViews.js +21 -21
- package/dist/data-display/DayRuler.js +6 -6
- package/dist/data-display/HoverCard.js +1 -1
- package/dist/data-display/Lightbox.js +5 -5
- package/dist/data-display/RegionMap.js +2 -2
- package/dist/data-display/ScheduleGrid.js +5 -5
- package/dist/data-display/Sheet.js +3 -3
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/ConfirmAction.js +3 -3
- package/dist/feedback/NotificationStatusNotice.js +3 -3
- package/dist/feedback/SequenceResolver.js +6 -5
- package/dist/navigation/AppHeader.js +4 -4
- package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts +80 -0
- package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts +55 -2
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.d.ts.map +1 -1
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.frame.d.ts +16 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.frame.d.ts.map +1 -0
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts +10 -4
- package/dist/types/components/feedback/SequenceResolver/SequenceResolver.types.d.ts.map +1 -1
- package/dist/user-avatar.js +4 -4
- package/package.json +1 -1
- package/src/components/data-display/DataViews/data-views-more-fields.tsx +90 -14
- package/src/components/data-display/DataViews/data-views-more-filters.tsx +2 -2
- package/src/components/feedback/SequenceResolver/SequenceResolver.frame.tsx +71 -0
- package/src/components/feedback/SequenceResolver/SequenceResolver.md +2 -2
- package/src/components/feedback/SequenceResolver/SequenceResolver.tsx +122 -61
- package/src/components/feedback/SequenceResolver/SequenceResolver.types.ts +10 -4
- package/dist/chunk-RZWU2KYP.js.map +0 -1
- package/dist/chunk-VCJ72ODU.js.map +0 -1
- package/dist/chunk-XRV4QFEQ.js.map +0 -1
- /package/dist/{chunk-DBPFKGXX.js.map → chunk-3YFDGFEK.js.map} +0 -0
- /package/dist/{chunk-Y3F2F36I.js.map → chunk-4QGKR65P.js.map} +0 -0
- /package/dist/{chunk-YE7M7URT.js.map → chunk-6D5AMANO.js.map} +0 -0
- /package/dist/{chunk-UDBOGSFO.js.map → chunk-6HPVCDVU.js.map} +0 -0
- /package/dist/{chunk-EOQ6EKTS.js.map → chunk-7XSCEHGA.js.map} +0 -0
- /package/dist/{chunk-B5STMM3R.js.map → chunk-ALMGYCHY.js.map} +0 -0
- /package/dist/{chunk-64UNVW6D.js.map → chunk-BP3ZKIPE.js.map} +0 -0
- /package/dist/{chunk-OCT5VCLP.js.map → chunk-BQBEN44R.js.map} +0 -0
- /package/dist/{chunk-Q3SILZTQ.js.map → chunk-E2UOEI7N.js.map} +0 -0
- /package/dist/{chunk-JVOEVTCZ.js.map → chunk-HQCZT6TO.js.map} +0 -0
- /package/dist/{chunk-ZVHHFLYY.js.map → chunk-HSVSU7I2.js.map} +0 -0
- /package/dist/{chunk-4QR7LM5F.js.map → chunk-JIEVKHOH.js.map} +0 -0
- /package/dist/{chunk-FWTVIRZZ.js.map → chunk-JVQ56E3U.js.map} +0 -0
- /package/dist/{chunk-YOLLISEY.js.map → chunk-JXK53XJW.js.map} +0 -0
- /package/dist/{chunk-PCQ5JWLF.js.map → chunk-KPUUHAK6.js.map} +0 -0
- /package/dist/{chunk-56JF5PZK.js.map → chunk-LYVTJLCF.js.map} +0 -0
- /package/dist/{chunk-NXQ6PXLJ.js.map → chunk-LZ5PGB7U.js.map} +0 -0
- /package/dist/{chunk-EKSJES5E.js.map → chunk-MAYAJXO6.js.map} +0 -0
- /package/dist/{chunk-OCGPOACB.js.map → chunk-MFX4ASX5.js.map} +0 -0
- /package/dist/{chunk-5I75WRXT.js.map → chunk-N3GLX64O.js.map} +0 -0
- /package/dist/{chunk-PEAUGQKU.js.map → chunk-NQCTANF3.js.map} +0 -0
- /package/dist/{chunk-IEUVP6UV.js.map → chunk-OM6ZT64U.js.map} +0 -0
- /package/dist/{chunk-W676GY42.js.map → chunk-P772HCHI.js.map} +0 -0
- /package/dist/{chunk-VWRXSBT2.js.map → chunk-R52N5UCS.js.map} +0 -0
- /package/dist/{chunk-FQNDJITD.js.map → chunk-RCTHCXS6.js.map} +0 -0
- /package/dist/{chunk-WLLUARTC.js.map → chunk-T2G4LDU5.js.map} +0 -0
- /package/dist/{chunk-66VKX6JE.js.map → chunk-WJMSND5Q.js.map} +0 -0
- /package/dist/{chunk-ZCNR4DN5.js.map → chunk-XBWW3QSI.js.map} +0 -0
- /package/dist/{chunk-BXZMV6QC.js.map → chunk-XFZDO2KB.js.map} +0 -0
- /package/dist/{chunk-BOADHYTA.js.map → chunk-YNZUYZ2O.js.map} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "../chunk-JQRKXMSH.js";
|
|
2
2
|
import {
|
|
3
3
|
NotificationStatusNotice
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-YNZUYZ2O.js";
|
|
5
5
|
import "../chunk-55FFONIV.js";
|
|
6
6
|
import {
|
|
7
7
|
detectNotificationBrowser,
|
|
8
8
|
notificationUnblockSteps
|
|
9
9
|
} from "../chunk-L7BRU4UF.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-NQCTANF3.js";
|
|
11
|
+
import "../chunk-L5RS6QAT.js";
|
|
11
12
|
import "../chunk-QXUXO22M.js";
|
|
12
13
|
import "../chunk-7HZ36QDH.js";
|
|
13
|
-
import "../chunk-L5RS6QAT.js";
|
|
14
14
|
import "../chunk-L7VH6IMR.js";
|
|
15
15
|
import "../chunk-5ZY3IIIG.js";
|
|
16
16
|
import "../chunk-YOXYSAUI.js";
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "../chunk-TWAKMV5B.js";
|
|
2
2
|
import {
|
|
3
3
|
SequenceResolver
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-ZBUMGMWP.js";
|
|
5
|
+
import "../chunk-6D5AMANO.js";
|
|
6
|
+
import "../chunk-BQBEN44R.js";
|
|
7
|
+
import "../chunk-CPQJFHNZ.js";
|
|
7
8
|
import "../chunk-JO6D7YGN.js";
|
|
8
9
|
import "../chunk-2ORD2FMN.js";
|
|
9
10
|
import "../chunk-2SRWPNQ7.js";
|
|
@@ -23,10 +24,10 @@ import "../chunk-AL5E624U.js";
|
|
|
23
24
|
import "../chunk-GYXUCS37.js";
|
|
24
25
|
import "../chunk-LV7LSPBF.js";
|
|
25
26
|
import "../chunk-NUGT7LMR.js";
|
|
26
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-NQCTANF3.js";
|
|
28
|
+
import "../chunk-L5RS6QAT.js";
|
|
27
29
|
import "../chunk-QXUXO22M.js";
|
|
28
30
|
import "../chunk-7HZ36QDH.js";
|
|
29
|
-
import "../chunk-L5RS6QAT.js";
|
|
30
31
|
import "../chunk-L7VH6IMR.js";
|
|
31
32
|
import "../chunk-5ZY3IIIG.js";
|
|
32
33
|
import "../chunk-BA4RHQ3B.js";
|
|
@@ -17,14 +17,14 @@ import {
|
|
|
17
17
|
} from "../chunk-IQU4HKND.js";
|
|
18
18
|
import {
|
|
19
19
|
AppHeaderDetails
|
|
20
|
-
} from "../chunk-
|
|
21
|
-
import "../chunk-
|
|
20
|
+
} from "../chunk-ALMGYCHY.js";
|
|
21
|
+
import "../chunk-LZ5PGB7U.js";
|
|
22
22
|
import "../chunk-E5OBAS3U.js";
|
|
23
23
|
import "../chunk-3ROCD7XF.js";
|
|
24
24
|
import "../chunk-NASLJO2R.js";
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-IM4DMKH4.js";
|
|
25
|
+
import "../chunk-LYVTJLCF.js";
|
|
27
26
|
import "../chunk-CRN4KKNI.js";
|
|
27
|
+
import "../chunk-IM4DMKH4.js";
|
|
28
28
|
import "../chunk-TJUWSQYQ.js";
|
|
29
29
|
import "../chunk-DAFFZED3.js";
|
|
30
30
|
import "../chunk-5UX5QAFJ.js";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Theme } from "@mui/material/styles/index.js";
|
|
1
2
|
import type { OverflowField } from "./data-views-overflow";
|
|
2
3
|
import type { QuickFilterConfig, RangeValue } from "./data-views-types";
|
|
3
4
|
/** What each field's control needs, minus the panel's own chrome. */
|
|
@@ -28,6 +29,85 @@ export declare function fieldClearing<T extends Record<string, unknown>>({ field
|
|
|
28
29
|
export declare function MoreQuick({ quick, pills, onToggleQuick, testIdPrefix, }: {
|
|
29
30
|
quick: QuickFilterConfig;
|
|
30
31
|
} & Pick<MoreFieldProps, "pills" | "onToggleQuick" | "testIdPrefix">): React.JSX.Element;
|
|
32
|
+
/**
|
|
33
|
+
* The "Mais" panel's vertical rhythm, in the theme's spacing units: the unit
|
|
34
|
+
* the header "Limpar"'s phone target reaches into (FUT-4144). The target is
|
|
35
|
+
* the button's 18px of text plus `reachUp` and `reachDown`, 40px at the
|
|
36
|
+
* default type scale, and it may never reach further than the gap that is
|
|
37
|
+
* there: under the group or quick chip above it (or the scroller's own top
|
|
38
|
+
* inset, for the first group) and under its own header. Sideways it reaches
|
|
39
|
+
* into the header row's empty gap and the scroller's padding, so a 37px
|
|
40
|
+
* "Limpar" is 41px wide.
|
|
41
|
+
*/
|
|
42
|
+
export declare const MORE_SPACING: {
|
|
43
|
+
/** Under a group. */
|
|
44
|
+
readonly underGroup: 1.5;
|
|
45
|
+
/** Under a shed quick chip, below `sm` (8px from `sm` up, as before). */
|
|
46
|
+
readonly underQuick: 1.5;
|
|
47
|
+
/**
|
|
48
|
+
* The scroller's top inset (`data-views-more-filters.tsx`), at every width:
|
|
49
|
+
* the first group's overlay reaches into it. Not part of a responsive `p`,
|
|
50
|
+
* whose `xs` value is emitted as a media query and would win over it.
|
|
51
|
+
*/
|
|
52
|
+
readonly aboveFirst: 1.5;
|
|
53
|
+
/** Under a group's header, below `sm`, applied or not, so nothing moves on apply. */
|
|
54
|
+
readonly underHeader: 1.25;
|
|
55
|
+
/** Under a group's header from `sm` up, as it always was. */
|
|
56
|
+
readonly underHeaderFromSm: 0.5;
|
|
57
|
+
readonly reachUp: 1.5;
|
|
58
|
+
readonly reachDown: 1.25;
|
|
59
|
+
readonly reachSide: 0.25;
|
|
60
|
+
};
|
|
61
|
+
/** A group's header row: the field's name, and "Limpar" while it is applied. */
|
|
62
|
+
export declare const moreHeaderSx: (theme: Theme) => {
|
|
63
|
+
[x: string]: string | number | {
|
|
64
|
+
mb: 0.5;
|
|
65
|
+
};
|
|
66
|
+
display: string;
|
|
67
|
+
alignItems: string;
|
|
68
|
+
gap: number;
|
|
69
|
+
mb: 1.25;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* "Limpar" is 12px text, a 37×18 button: on a phone that was the whole target
|
|
73
|
+
* (FUT-4144, measured in the admin at 320–900). Below `sm` an overlay makes it
|
|
74
|
+
* at least 40×40 without moving the text, reaching only into gaps
|
|
75
|
+
* {@link MORE_SPACING} guarantees, in the same unit, so it grows and shrinks
|
|
76
|
+
* with them and covers nothing else. From `sm` up there is no overlay and the
|
|
77
|
+
* button is exactly as it was.
|
|
78
|
+
*/
|
|
79
|
+
export declare const clearTargetSx: (theme: Theme) => {
|
|
80
|
+
[x: string]: "relative" | {
|
|
81
|
+
position: "static";
|
|
82
|
+
content?: undefined;
|
|
83
|
+
top?: undefined;
|
|
84
|
+
bottom?: undefined;
|
|
85
|
+
left?: undefined;
|
|
86
|
+
right?: undefined;
|
|
87
|
+
} | {
|
|
88
|
+
[x: string]: string | {
|
|
89
|
+
display: string;
|
|
90
|
+
};
|
|
91
|
+
content: string;
|
|
92
|
+
position: "absolute";
|
|
93
|
+
top: string;
|
|
94
|
+
bottom: string;
|
|
95
|
+
left: string;
|
|
96
|
+
right: string;
|
|
97
|
+
};
|
|
98
|
+
position: "relative";
|
|
99
|
+
"&::before": {
|
|
100
|
+
[x: string]: string | {
|
|
101
|
+
display: string;
|
|
102
|
+
};
|
|
103
|
+
content: string;
|
|
104
|
+
position: "absolute";
|
|
105
|
+
top: string;
|
|
106
|
+
bottom: string;
|
|
107
|
+
left: string;
|
|
108
|
+
right: string;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
31
111
|
/** One labelled group in the panel: the field's name, then its control. */
|
|
32
112
|
export declare function MoreGroup<T extends Record<string, unknown>>({ field, pills, ranges, onTogglePill, onChangeRange, testIdPrefix, }: {
|
|
33
113
|
field: OverflowField<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-views-more-fields.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-fields.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-views-more-fields.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-fields.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAM3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AASxE,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5D,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAuJD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/D,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,aAAa,GACd,EAAE;IACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC,GAAG;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAkBA;AAcD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWvF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;IACvB,qBAAqB;;IAErB,yEAAyE;;IAEzE;;;;OAIG;;IAEH,qFAAqF;;IAErF,6DAA6D;;;;;CAKrD,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK;;;;;;;;CAMvC,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYxC,CAAC;AAEH,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3D,KAAK,EACL,KAAK,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACzB,GAAG,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2DrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-views-more-filters.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-filters.tsx"],"names":[],"mappings":"AAmBA,OAAO,
|
|
1
|
+
{"version":3,"file":"data-views-more-filters.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-more-filters.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAqD,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;;;;;;;GAUG;AAEH,UAAU,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,cAAc;IAClF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5B;AAmND,oCAAoC;AACpC,UAAU,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC5F,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC7D,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,OAAe,EACf,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAuDrD"}
|
|
@@ -1,9 +1,61 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { SequenceItem, SequenceResolverProps } from './SequenceResolver.types';
|
|
2
|
+
import type { SequenceItem, SequenceOverviewCategory, SequenceResolverProps } from './SequenceResolver.types';
|
|
3
|
+
import { type SequenceRun } from './useSequenceRun';
|
|
4
|
+
interface OverviewState {
|
|
5
|
+
/** The overview is on screen instead of the step. */
|
|
6
|
+
shown: boolean;
|
|
7
|
+
/** The header's "Ver todos (N)", while there is a step and more than one problem. */
|
|
8
|
+
button?: {
|
|
9
|
+
label: string;
|
|
10
|
+
onClick: () => void;
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
};
|
|
13
|
+
canPick: (category: SequenceOverviewCategory) => boolean;
|
|
14
|
+
pick: (category: SequenceOverviewCategory) => void;
|
|
15
|
+
hide: () => void;
|
|
16
|
+
/** The overview's title (in the header row): focus goes to it when it opens. */
|
|
17
|
+
titleRef: React.RefObject<HTMLHeadingElement | null>;
|
|
18
|
+
}
|
|
19
|
+
interface HeaderInputs<I extends SequenceItem, R> {
|
|
20
|
+
props: SequenceResolverProps<I, R>;
|
|
21
|
+
state: SequenceRun<I, R>;
|
|
22
|
+
current: I | undefined;
|
|
23
|
+
overview: OverviewState;
|
|
24
|
+
titleId: string;
|
|
25
|
+
}
|
|
26
|
+
/** The header's back, "Ver todos" and label — or, over the overview, its title and close alone. */
|
|
27
|
+
declare function headerOf<I extends SequenceItem, R>(inputs: HeaderInputs<I, R>): {
|
|
28
|
+
title: {
|
|
29
|
+
id: string;
|
|
30
|
+
text: string;
|
|
31
|
+
ref: React.RefObject<HTMLHeadingElement | null>;
|
|
32
|
+
};
|
|
33
|
+
label: string;
|
|
34
|
+
progress: number;
|
|
35
|
+
} | {
|
|
36
|
+
back: {
|
|
37
|
+
label: string;
|
|
38
|
+
accessible: string | undefined;
|
|
39
|
+
onClick: () => void;
|
|
40
|
+
disabled: boolean;
|
|
41
|
+
} | undefined;
|
|
42
|
+
seeAll: {
|
|
43
|
+
label: string;
|
|
44
|
+
onClick: () => void;
|
|
45
|
+
disabled: boolean;
|
|
46
|
+
} | undefined;
|
|
47
|
+
label: string;
|
|
48
|
+
progress: number;
|
|
49
|
+
};
|
|
50
|
+
export interface Screen {
|
|
51
|
+
header: ReturnType<typeof headerOf>;
|
|
52
|
+
body: React.JSX.Element;
|
|
53
|
+
}
|
|
3
54
|
/**
|
|
4
55
|
* Resolve a queue of problems one at a time, in ONE dialog whose body is
|
|
5
56
|
* replaced step by step: a header with "‹ Back", the step's label and close,
|
|
6
|
-
* a progress bar, the host's step, and an end screen (FUT-3671)
|
|
57
|
+
* a progress bar, the host's step, and an end screen (FUT-3671) — or none,
|
|
58
|
+
* with `done: null`: the run's end closes it (FUT-3833).
|
|
7
59
|
*
|
|
8
60
|
* A centred `Dialog` from the `sm` breakpoint up; the `Dialog` inset
|
|
9
61
|
* bottom-sheet variant below it, never taller than 95% of the viewport. Either
|
|
@@ -14,4 +66,5 @@ import type { SequenceItem, SequenceResolverProps } from './SequenceResolver.typ
|
|
|
14
66
|
* body, every word and every server call is the host's.
|
|
15
67
|
*/
|
|
16
68
|
export declare function SequenceResolver<I extends SequenceItem, R = unknown>(props: SequenceResolverProps<I, R>): React.JSX.Element;
|
|
69
|
+
export {};
|
|
17
70
|
//# sourceMappingURL=SequenceResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceResolver.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SequenceResolver.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAW/E,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,qBAAqB,EAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqBpE,UAAU,aAAa;IACrB,qDAAqD;IACrD,KAAK,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACnE,OAAO,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,OAAO,CAAC;IACzD,IAAI,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACnD,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,gFAAgF;IAChF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACtD;AAmDD,UAAU,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC;IAC9C,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mGAAmG;AACnG,iBAAS,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;eAlEnD,MAAM;iBAAW,MAAM,IAAI;kBAAY,OAAO;;;;EA0EjE;AAsGD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;IACpC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;CACzB;AAoDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,GAAG,OAAO,EAClE,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,KAAK,CAAC,GAAG,CAAC,OAAO,CA8DnB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SequenceResolverLabels } from './SequenceResolver.types';
|
|
3
|
+
import type { Screen } from './SequenceResolver';
|
|
4
|
+
export interface ResolverFrameProps {
|
|
5
|
+
shown: boolean;
|
|
6
|
+
/** The kept last step is playing its exit: a picture, nothing on it acts. */
|
|
7
|
+
exiting: boolean;
|
|
8
|
+
touch: boolean;
|
|
9
|
+
titleId: string;
|
|
10
|
+
testId: string;
|
|
11
|
+
labels: SequenceResolverLabels;
|
|
12
|
+
screen: Screen;
|
|
13
|
+
close: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function ResolverFrame(props: ResolverFrameProps): React.JSX.Element;
|
|
16
|
+
//# sourceMappingURL=SequenceResolver.frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SequenceResolver.frame.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.frame.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAejD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+B1E"}
|
|
@@ -183,8 +183,9 @@ export interface SequenceResolverLabels {
|
|
|
183
183
|
export interface SequenceResolverProps<I extends SequenceItem = SequenceItem, R = unknown> {
|
|
184
184
|
open: boolean;
|
|
185
185
|
/**
|
|
186
|
-
* The close button, Esc, and the end screen's button
|
|
187
|
-
* stood, for the host's
|
|
186
|
+
* The close button, Esc, and the end screen's button — or, with `done:
|
|
187
|
+
* null`, the queue running out. Gets where the run stood, for the host's
|
|
188
|
+
* "N resolved · Undo" toast.
|
|
188
189
|
*/
|
|
189
190
|
onClose: (summary: SequenceSummary) => void;
|
|
190
191
|
/**
|
|
@@ -215,8 +216,13 @@ export interface SequenceResolverProps<I extends SequenceItem = SequenceItem, R
|
|
|
215
216
|
overview?: SequenceOverview;
|
|
216
217
|
/** Open the run at this problem (a click on its block); the ones before it follow it. */
|
|
217
218
|
initialKey?: string;
|
|
218
|
-
/**
|
|
219
|
-
|
|
219
|
+
/**
|
|
220
|
+
* The end screen's words, from the run's summary. `null` drops the end
|
|
221
|
+
* screen: when the queue runs out — the last step answered or passed over —
|
|
222
|
+
* the resolver calls `onClose(summary)` at once, and the host's toast is the
|
|
223
|
+
* run's last word (FUT-3833).
|
|
224
|
+
*/
|
|
225
|
+
done: SequenceDone | ((summary: SequenceSummary) => SequenceDone) | null;
|
|
220
226
|
labels: SequenceResolverLabels;
|
|
221
227
|
/**
|
|
222
228
|
* Base test id (default `sequence-resolver`). Parts get `${id}-back`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceResolver.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SequenceResolver.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/SequenceResolver/SequenceResolver.types.ts"],"names":[],"mappings":"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"}
|
package/dist/user-avatar.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UserAvatar,
|
|
3
3
|
UserMenu
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-E2UOEI7N.js";
|
|
5
5
|
import "./chunk-DQ22UKMZ.js";
|
|
6
6
|
import "./chunk-UDQSIRAP.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-JIEVKHOH.js";
|
|
8
|
+
import "./chunk-7XSCEHGA.js";
|
|
9
|
+
import "./chunk-MTEQEPNY.js";
|
|
9
10
|
import "./chunk-6ZZGK5DT.js";
|
|
10
11
|
import "./chunk-3ZVUNSFF.js";
|
|
11
|
-
import "./chunk-MTEQEPNY.js";
|
|
12
12
|
import "./chunk-VUHLNYAE.js";
|
|
13
13
|
import "./chunk-2GSIEDGN.js";
|
|
14
14
|
import "./chunk-4XBAEKQQ.js";
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* a search — it is the bar's own {@link PillControl}; see `sharesBarControl`.
|
|
14
14
|
*/
|
|
15
15
|
import Checkbox from "@mui/material/Checkbox/index.js";
|
|
16
|
+
import type { Theme } from "@mui/material/styles/index.js";
|
|
16
17
|
|
|
17
18
|
import { Box } from "../../../mui/Box";
|
|
18
19
|
import { Text } from "../../typography/Text";
|
|
@@ -227,6 +228,17 @@ export function fieldClearing<T extends Record<string, unknown>>({
|
|
|
227
228
|
}
|
|
228
229
|
|
|
229
230
|
|
|
231
|
+
/**
|
|
232
|
+
* Under a shed quick chip: 12px below `sm`, the gap a following group's
|
|
233
|
+
* "Limpar" target reaches into (its 8px let the target cover the chip's
|
|
234
|
+
* label); 8px from `sm` up, as before.
|
|
235
|
+
*/
|
|
236
|
+
const quickSx = (theme: Theme) => ({
|
|
237
|
+
mb: MORE_SPACING.underQuick,
|
|
238
|
+
[theme.breakpoints.up("sm")]: { mb: 1 },
|
|
239
|
+
"&:last-of-type": { mb: 0 },
|
|
240
|
+
});
|
|
241
|
+
|
|
230
242
|
/**
|
|
231
243
|
* A quick chip shed into the panel: its own line, because label and count are
|
|
232
244
|
* already the whole control — no heading above it, no "Limpar" beside it.
|
|
@@ -240,7 +252,7 @@ export function MoreQuick({
|
|
|
240
252
|
quick: QuickFilterConfig;
|
|
241
253
|
} & Pick<MoreFieldProps, "pills" | "onToggleQuick" | "testIdPrefix">): React.JSX.Element {
|
|
242
254
|
return (
|
|
243
|
-
<Box sx={
|
|
255
|
+
<Box sx={quickSx}>
|
|
244
256
|
<QuickRow
|
|
245
257
|
quick={quick}
|
|
246
258
|
active={isQuickActive(quick, pills)}
|
|
@@ -251,6 +263,67 @@ export function MoreQuick({
|
|
|
251
263
|
);
|
|
252
264
|
}
|
|
253
265
|
|
|
266
|
+
/**
|
|
267
|
+
* The "Mais" panel's vertical rhythm, in the theme's spacing units: the unit
|
|
268
|
+
* the header "Limpar"'s phone target reaches into (FUT-4144). The target is
|
|
269
|
+
* the button's 18px of text plus `reachUp` and `reachDown`, 40px at the
|
|
270
|
+
* default type scale, and it may never reach further than the gap that is
|
|
271
|
+
* there: under the group or quick chip above it (or the scroller's own top
|
|
272
|
+
* inset, for the first group) and under its own header. Sideways it reaches
|
|
273
|
+
* into the header row's empty gap and the scroller's padding, so a 37px
|
|
274
|
+
* "Limpar" is 41px wide.
|
|
275
|
+
*/
|
|
276
|
+
export const MORE_SPACING = {
|
|
277
|
+
/** Under a group. */
|
|
278
|
+
underGroup: 1.5,
|
|
279
|
+
/** Under a shed quick chip, below `sm` (8px from `sm` up, as before). */
|
|
280
|
+
underQuick: 1.5,
|
|
281
|
+
/**
|
|
282
|
+
* The scroller's top inset (`data-views-more-filters.tsx`), at every width:
|
|
283
|
+
* the first group's overlay reaches into it. Not part of a responsive `p`,
|
|
284
|
+
* whose `xs` value is emitted as a media query and would win over it.
|
|
285
|
+
*/
|
|
286
|
+
aboveFirst: 1.5,
|
|
287
|
+
/** Under a group's header, below `sm`, applied or not, so nothing moves on apply. */
|
|
288
|
+
underHeader: 1.25,
|
|
289
|
+
/** Under a group's header from `sm` up, as it always was. */
|
|
290
|
+
underHeaderFromSm: 0.5,
|
|
291
|
+
reachUp: 1.5,
|
|
292
|
+
reachDown: 1.25,
|
|
293
|
+
reachSide: 0.25,
|
|
294
|
+
} as const;
|
|
295
|
+
|
|
296
|
+
/** A group's header row: the field's name, and "Limpar" while it is applied. */
|
|
297
|
+
export const moreHeaderSx = (theme: Theme) => ({
|
|
298
|
+
display: "flex",
|
|
299
|
+
alignItems: "center",
|
|
300
|
+
gap: 1,
|
|
301
|
+
mb: MORE_SPACING.underHeader,
|
|
302
|
+
[theme.breakpoints.up("sm")]: { mb: MORE_SPACING.underHeaderFromSm },
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* "Limpar" is 12px text, a 37×18 button: on a phone that was the whole target
|
|
307
|
+
* (FUT-4144, measured in the admin at 320–900). Below `sm` an overlay makes it
|
|
308
|
+
* at least 40×40 without moving the text, reaching only into gaps
|
|
309
|
+
* {@link MORE_SPACING} guarantees, in the same unit, so it grows and shrinks
|
|
310
|
+
* with them and covers nothing else. From `sm` up there is no overlay and the
|
|
311
|
+
* button is exactly as it was.
|
|
312
|
+
*/
|
|
313
|
+
export const clearTargetSx = (theme: Theme) => ({
|
|
314
|
+
position: "relative" as const,
|
|
315
|
+
[theme.breakpoints.up("sm")]: { position: "static" as const },
|
|
316
|
+
"&::before": {
|
|
317
|
+
content: '""',
|
|
318
|
+
position: "absolute" as const,
|
|
319
|
+
top: `-${theme.spacing(MORE_SPACING.reachUp)}`,
|
|
320
|
+
bottom: `-${theme.spacing(MORE_SPACING.reachDown)}`,
|
|
321
|
+
left: `-${theme.spacing(MORE_SPACING.reachSide)}`,
|
|
322
|
+
right: `-${theme.spacing(MORE_SPACING.reachSide)}`,
|
|
323
|
+
[theme.breakpoints.up("sm")]: { display: "none" },
|
|
324
|
+
},
|
|
325
|
+
});
|
|
326
|
+
|
|
254
327
|
/** One labelled group in the panel: the field's name, then its control. */
|
|
255
328
|
export function MoreGroup<T extends Record<string, unknown>>({
|
|
256
329
|
field,
|
|
@@ -265,8 +338,8 @@ export function MoreGroup<T extends Record<string, unknown>>({
|
|
|
265
338
|
const copy = useDataViewsCopy();
|
|
266
339
|
const { applied, clear } = fieldClearing({ field, pills, ranges, onTogglePill, onChangeRange });
|
|
267
340
|
return (
|
|
268
|
-
<Box sx={{ mb:
|
|
269
|
-
<Box sx={
|
|
341
|
+
<Box sx={{ mb: MORE_SPACING.underGroup, "&:last-of-type": { mb: 0 } }}>
|
|
342
|
+
<Box sx={moreHeaderSx}>
|
|
270
343
|
<Text variant="caption" as="span">
|
|
271
344
|
<Box component="span" sx={{ color: "text.secondary" }}>
|
|
272
345
|
{field.label}
|
|
@@ -283,17 +356,20 @@ export function MoreGroup<T extends Record<string, unknown>>({
|
|
|
283
356
|
type="button"
|
|
284
357
|
onClick={clear}
|
|
285
358
|
data-testid={`${testIdPrefix}-more-${field.id}-clear`}
|
|
286
|
-
sx={
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
359
|
+
sx={[
|
|
360
|
+
{
|
|
361
|
+
ml: "auto",
|
|
362
|
+
border: 0,
|
|
363
|
+
p: 0,
|
|
364
|
+
bgcolor: "transparent",
|
|
365
|
+
cursor: "pointer",
|
|
366
|
+
font: "inherit",
|
|
367
|
+
fontSize: sxRem(12),
|
|
368
|
+
color: "primary.main",
|
|
369
|
+
"&:hover": { textDecoration: "underline" },
|
|
370
|
+
},
|
|
371
|
+
clearTargetSx,
|
|
372
|
+
]}
|
|
297
373
|
>
|
|
298
374
|
{copy.filters.clear}
|
|
299
375
|
</Box>
|
|
@@ -17,7 +17,7 @@ import { Button } from "../../form/Button";
|
|
|
17
17
|
import { Box } from "../../../mui/Box";
|
|
18
18
|
import { Text } from "../../typography/Text";
|
|
19
19
|
|
|
20
|
-
import { fieldClearing, MoreGroup, MoreQuick, type MoreFieldProps } from "./data-views-more-fields";
|
|
20
|
+
import { fieldClearing, MORE_SPACING, MoreGroup, MoreQuick, type MoreFieldProps } from "./data-views-more-fields";
|
|
21
21
|
import { useStillAnchor } from "./data-views-still-anchor";
|
|
22
22
|
import type { OverflowField } from "./data-views-overflow";
|
|
23
23
|
import { rem, remPx, sxRem } from "../../../tokens/relative";
|
|
@@ -322,7 +322,7 @@ export function MoreFilters<T extends Record<string, unknown>>({
|
|
|
322
322
|
contents are told to shrink into it. A horizontal scrollbar here
|
|
323
323
|
means something refused to, which is a bug to fix rather than a
|
|
324
324
|
scrollbar to live with. */}
|
|
325
|
-
<Box sx={{ flex: "1 1 auto", minHeight: 0, overflowY: "auto", overflowX: "hidden",
|
|
325
|
+
<Box sx={{ flex: "1 1 auto", minHeight: 0, overflowY: "auto", overflowX: "hidden", px: { xs: 1, sm: 1.5 }, pb: { xs: 1, sm: 1.5 }, pt: MORE_SPACING.aboveFirst, minWidth: 0 }}>
|
|
326
326
|
<MoreFields key={clearKey} fields={fields} {...rest} />
|
|
327
327
|
</Box>
|
|
328
328
|
{(anyApplied || holdsDayRange) && (
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import Box from '@mui/material/Box/index.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
import { Dialog } from '../Dialog';
|
|
5
|
+
import { SequenceHeader } from './SequenceResolver.header';
|
|
6
|
+
import { chromeSx, columnSx, paperSx, scrollBodySx } from './SequenceResolver.styles';
|
|
7
|
+
import type { SequenceResolverLabels } from './SequenceResolver.types';
|
|
8
|
+
import type { Screen } from './SequenceResolver';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Esc closes. `persistent` turns MUI's own Esc off together with the veil's
|
|
12
|
+
* click (the prototype's veil does nothing), so Esc is put back here; a popup
|
|
13
|
+
* inside a step that handles its own Esc stops it before it gets here.
|
|
14
|
+
*/
|
|
15
|
+
function escapeCloses(close: () => void) {
|
|
16
|
+
return (event: React.KeyboardEvent): void => {
|
|
17
|
+
if (event.key !== 'Escape' || event.defaultPrevented) return;
|
|
18
|
+
event.stopPropagation();
|
|
19
|
+
close();
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ResolverFrameProps {
|
|
24
|
+
shown: boolean;
|
|
25
|
+
/** The kept last step is playing its exit: a picture, nothing on it acts. */
|
|
26
|
+
exiting: boolean;
|
|
27
|
+
touch: boolean;
|
|
28
|
+
titleId: string;
|
|
29
|
+
testId: string;
|
|
30
|
+
labels: SequenceResolverLabels;
|
|
31
|
+
screen: Screen;
|
|
32
|
+
close: () => void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function swallowClick(event: React.SyntheticEvent): void {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function ResolverFrame(props: ResolverFrameProps): React.JSX.Element {
|
|
41
|
+
const { shown, exiting, touch, titleId, testId, labels, screen, close } = props;
|
|
42
|
+
return (
|
|
43
|
+
<Dialog
|
|
44
|
+
open={shown}
|
|
45
|
+
onClose={close}
|
|
46
|
+
persistent
|
|
47
|
+
variant={touch ? 'bottom-sheet' : 'default'}
|
|
48
|
+
size="sm"
|
|
49
|
+
aria-labelledby={titleId}
|
|
50
|
+
onKeyDown={escapeCloses(close)}
|
|
51
|
+
slotProps={{ paper: { sx: paperSx(touch) } }}
|
|
52
|
+
dataTestId={testId}
|
|
53
|
+
>
|
|
54
|
+
<Box sx={columnSx} inert={exiting} aria-hidden={exiting || undefined} onClickCapture={exiting ? swallowClick : undefined}>
|
|
55
|
+
<Box sx={chromeSx}>
|
|
56
|
+
<SequenceHeader
|
|
57
|
+
touch={touch}
|
|
58
|
+
{...screen.header}
|
|
59
|
+
closeLabel={labels.close}
|
|
60
|
+
onClose={close}
|
|
61
|
+
progressLabel={labels.progress}
|
|
62
|
+
testId={testId}
|
|
63
|
+
/>
|
|
64
|
+
</Box>
|
|
65
|
+
<Box sx={scrollBodySx} data-testid={`${testId}-body`}>
|
|
66
|
+
{screen.body}
|
|
67
|
+
</Box>
|
|
68
|
+
</Box>
|
|
69
|
+
</Dialog>
|
|
70
|
+
);
|
|
71
|
+
}
|
|
@@ -47,7 +47,7 @@ data-sized and shrinks while you go.
|
|
|
47
47
|
| Prop | Type | Description |
|
|
48
48
|
|---|---|---|
|
|
49
49
|
| `open` | `boolean` | Shows the resolver. Every opening — with an intro or without — starts a fresh run. |
|
|
50
|
-
| `onClose` | `(summary) => void` | Close button, Esc and the end screen's button. Gets `{ resolved, skipped, total, alsoResolved }`; a close toast counts `resolved + alsoResolved` (and shows only when that is above 0). Clicking the veil does nothing (as approved). |
|
|
50
|
+
| `onClose` | `(summary) => void` | Close button, Esc and the end screen's button — or, with `done: null`, the queue running out. Gets `{ resolved, skipped, total, alsoResolved }`; a close toast counts `resolved + alsoResolved` (and shows only when that is above 0). Clicking the veil does nothing (as approved). |
|
|
51
51
|
| `intro` | `SequenceIntro?` | While given, the intro shows instead of the run: `title`, `description`, `categories` (`label`, `description`, `count`, `onPick`), `startAllLabel`, `onStartAll`. The host drops it and sets `queue` in the same update as a pick. |
|
|
52
52
|
| `queue` | `readonly I[]` (`I extends { key; kindLabel }`) | The problems, in order. Live data: it may shrink (siblings answered together) or grow mid-run. |
|
|
53
53
|
| `renderStep` | `(item, api) => SequenceStep` | The current step: `content`, `primary?`, `secondary?` (default: skip with `labels.skip`; `false` removes it), `tertiary?`, `footer?` (`'end'` default — right-aligned over a hairline; `'split'` — two equal columns, no hairline; on a phone the actions always share the row without a hairline), `canGoBack?` (`false`: this answer has no inverse — once it is answered, Back is not offered from the next step). |
|
|
@@ -55,7 +55,7 @@ data-sized and shrinks while you go.
|
|
|
55
55
|
| `canGoBack` | `boolean` (default `true`) | Offer Back at all. It shows only once a previous step exists — on steps and on the end screen, never on the intro. |
|
|
56
56
|
| `overview` | `SequenceOverview?` | "Ver todos (N)" inside the run (FUT-3825): `label(total)`, `title`, `categories` (`label`, `description?`, `count?` — the host's bookkeeping, not drawn: the `label` says the number, "Atrasado · 1" — `keys`, `onPick?`), `pickLabel`, `continueLabel`. See "Ver todos". |
|
|
57
57
|
| `initialKey` | `string?` | Open the run at this problem (a click on its block). The ones before it follow it; nothing is passed over. |
|
|
58
|
-
| `done` | `SequenceDone \| (summary) => SequenceDone` | The end screen: `title`, `description?`, `confirmLabel`. |
|
|
58
|
+
| `done` | `SequenceDone \| ((summary) => SequenceDone) \| null` | The end screen: `title`, `description?`, `confirmLabel`. **`null` drops it** (FUT-3833): when the queue runs out — the last step answered or passed over, or the host's queue emptied under the run — the resolver calls `onClose(summary)` once (StrictMode included) and starts closing, its exit playing over the last step as it was; the host's toast is the run's last word. A pending last write keeps the step until it returns; a refused one keeps it with its message and does not close. Never fires from the intro. |
|
|
59
59
|
| `labels` | `SequenceResolverLabels` | Every chrome word: `back`, `backAccessible?`, `close`, `skip`, `step(position, total, item)`, `introStep`, `doneStep`, `progress`, `failed`. **Required — the package ships no copy.** |
|
|
60
60
|
| `dataTestId` | `string` (default `sequence-resolver`) | Parts: `-back`, `-close`, `-step-label`, `-progress`, `-handle`, `-category-<n>`, `-start-all`, `-primary`, `-secondary`, `-tertiary`, `-footer`, `-error`, `-done`, `-done-confirm`, `-see-all`, `-overview`, `-overview-pick-<n>`, `-continue`. |
|
|
61
61
|
|