@olenbetong/appframe-ds 1.6.1 → 1.7.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/CHANGELOG.md +15 -0
- package/package.json +2 -2
- package/src/AfLookup/Lookup.css +147 -147
- package/src/AfLookup/Lookup.tsx +186 -186
- package/src/AfLookup/LookupCombobox.css +69 -69
- package/src/AfLookup/LookupCombobox.tsx +273 -273
- package/src/AfLookup/LookupEdit.tsx +130 -130
- package/src/AfLookup/LookupGrid.css +145 -145
- package/src/AfLookup/LookupGrid.test.tsx +142 -142
- package/src/AfLookup/LookupGrid.tsx +324 -324
- package/src/AfLookup/index.ts +5 -5
- package/src/grid/index.css +8 -2
- package/src/grid/index.tsx +73 -3
- package/src/grid/useAfGridApi.ts +3 -0
- package/src/layout/AppMenuItem.css +6 -2
- package/src/mdi/Mdi.css +138 -138
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @olenbetong/appframe-ds
|
|
2
2
|
|
|
3
|
+
## 1.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0857c68: `AfGrid` takes `disableLoadingOverlay` to leave out MUI's loading overlay, for grids refreshed on a timer where the overlay keeps blocking text selection; the toolbar's refresh button still shows that it is loading.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- d45d019: `AfGrid` row grouping: the grouping column gets AfGrid's own header filter (on the grouped field, when grouped by one field) instead of MUI's default; group rows are tinted and bold; and on group rows the grouping cell spans the empty cells after it, so the label stays readable in a column no wider than its expand toggle.
|
|
12
|
+
|
|
13
|
+
The active header filter funnel and the MDI's accents used `--ds-color-accent-*`, which the Synergi themes do not define; they use `--ds-color-brand-*` now.
|
|
14
|
+
|
|
15
|
+
- 3c9ba6c: Resetting an `AfGrid` layout also restores row grouping and aggregation to the grid's `initialState`. Before, a reset left a user's own grouping and aggregation in place and never brought back the grid's.
|
|
16
|
+
- c99ddd6: `AppMenuItem` hover and press tint with the neutral text colour instead of black, so the hover shows in dark mode too.
|
|
17
|
+
|
|
3
18
|
## 1.6.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@olenbetong/appframe-ds",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Components that bind Designsystemet components to Appframe data objects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./es/index.d.ts",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"@mui/material": "9.5.0",
|
|
83
83
|
"@mui/x-data-grid-premium": "8.29.5",
|
|
84
84
|
"@mui/x-license": "8.29.3",
|
|
85
|
-
"@navikt/aksel-icons": "8.
|
|
85
|
+
"@navikt/aksel-icons": "8.20.0",
|
|
86
86
|
"@testing-library/dom": "^10.4.2",
|
|
87
87
|
"@testing-library/jest-dom": "^7.0.1",
|
|
88
88
|
"@testing-library/react": "16.3.3",
|
package/src/AfLookup/Lookup.css
CHANGED
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
.ObLookup-inputWrap {
|
|
2
|
-
position: relative;
|
|
3
|
-
|
|
4
|
-
.ds-input {
|
|
5
|
-
padding-inline-end: var(--ObLookup-buttons-width, 3rem);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.ObLookup-labelTag {
|
|
10
|
-
margin-inline-start: var(--ds-size-2, 0.5rem);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.ObLookup-buttons {
|
|
14
|
-
position: absolute;
|
|
15
|
-
inset-inline-end: 0;
|
|
16
|
-
inset-block-end: 0;
|
|
17
|
-
/* Match the .ds-input height so the buttons center on the input row,
|
|
18
|
-
also when a label or description is rendered above the input */
|
|
19
|
-
height: var(--ds-size-12, 3rem);
|
|
20
|
-
display: flex;
|
|
21
|
-
align-items: center;
|
|
22
|
-
padding-inline-end: var(--ds-size-1, 0.25rem);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.ObLookup-dialog {
|
|
26
|
-
border: 0;
|
|
27
|
-
margin-block-start: 0;
|
|
28
|
-
/* Tight: the search field sits at the top edge and the footer buttons carry their own padding */
|
|
29
|
-
padding: var(--ds-size-3, 0.75rem) var(--ds-size-2, 0.5rem) var(--ds-size-1, 0.25rem);
|
|
30
|
-
overflow: hidden;
|
|
31
|
-
|
|
32
|
-
background-color: var(--ds-color-neutral-background-tinted);
|
|
33
|
-
color: var(--ds-color-neutral-text-default);
|
|
34
|
-
|
|
35
|
-
transition:
|
|
36
|
-
display 0.2s allow-discrete,
|
|
37
|
-
transform 0.2s ease-out,
|
|
38
|
-
scale 0.2s ease-out,
|
|
39
|
-
opacity 0.2s ease-out;
|
|
40
|
-
|
|
41
|
-
&::backdrop {
|
|
42
|
-
opacity: 0;
|
|
43
|
-
background: rgb(0 0 0 / 0.2);
|
|
44
|
-
transition:
|
|
45
|
-
display 0.2s allow-discrete,
|
|
46
|
-
opacity 0.2s ease-out;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
&[open]::backdrop {
|
|
50
|
-
opacity: 1;
|
|
51
|
-
|
|
52
|
-
@starting-style {
|
|
53
|
-
opacity: 0;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
@media (width < 768px) {
|
|
58
|
-
/*
|
|
59
|
-
* A bottom sheet. The UA stylesheet caps a modal dialog at calc(100% - 6px - 2em) and
|
|
60
|
-
* centres it with auto margins, which left a gap under the sheet; drop both so the box
|
|
61
|
-
* really sits on the bottom edge. dvh follows the mobile browser chrome.
|
|
62
|
-
*/
|
|
63
|
-
inset: auto 0.5rem 0;
|
|
64
|
-
margin: 0;
|
|
65
|
-
max-height: none;
|
|
66
|
-
|
|
67
|
-
border-radius: 1rem 1rem 0 0;
|
|
68
|
-
height: 90vh;
|
|
69
|
-
height: 90dvh;
|
|
70
|
-
width: auto;
|
|
71
|
-
max-width: 100vw;
|
|
72
|
-
transform: translateY(100%);
|
|
73
|
-
z-index: 1500;
|
|
74
|
-
|
|
75
|
-
opacity: 0;
|
|
76
|
-
|
|
77
|
-
&[open] {
|
|
78
|
-
transform: translateY(0);
|
|
79
|
-
opacity: 1;
|
|
80
|
-
|
|
81
|
-
@starting-style {
|
|
82
|
-
transform: translateY(100%);
|
|
83
|
-
opacity: 0;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
@media (width >= 768px) {
|
|
89
|
-
inset-block-start: 50%;
|
|
90
|
-
inset-inline-start: 50%;
|
|
91
|
-
translate: -50% -50%;
|
|
92
|
-
scale: 1 0;
|
|
93
|
-
opacity: 0;
|
|
94
|
-
|
|
95
|
-
border-radius: 0.25rem;
|
|
96
|
-
|
|
97
|
-
height: clamp(300px, 80vh, 500px);
|
|
98
|
-
min-width: 320px;
|
|
99
|
-
width: var(--default-width, 400px);
|
|
100
|
-
|
|
101
|
-
&[open] {
|
|
102
|
-
scale: 1;
|
|
103
|
-
opacity: 1;
|
|
104
|
-
|
|
105
|
-
@starting-style {
|
|
106
|
-
scale: 1 0;
|
|
107
|
-
opacity: 0;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
@supports (inset-block-start: anchor(bottom)) {
|
|
113
|
-
@media (width < 768px) or (pointer: coarse) {
|
|
114
|
-
anchor-name: unset !important;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
@media screen and (width >= 768px) and (pointer: fine) {
|
|
118
|
-
inset-block-start: anchor(bottom);
|
|
119
|
-
inset-block-end: unset;
|
|
120
|
-
|
|
121
|
-
inset-inline-start: anchor(left);
|
|
122
|
-
inset-inline-end: unset;
|
|
123
|
-
|
|
124
|
-
/* Below and to the right of the input when there is room; otherwise above it, or
|
|
125
|
-
aligned to its right edge, so an input near the bottom or the right edge of the
|
|
126
|
-
viewport still gets a visible dialog. */
|
|
127
|
-
position-try-fallbacks:
|
|
128
|
-
flip-block,
|
|
129
|
-
flip-inline,
|
|
130
|
-
flip-block flip-inline;
|
|
131
|
-
|
|
132
|
-
translate: unset;
|
|
133
|
-
transform-origin: top left;
|
|
134
|
-
|
|
135
|
-
resize: both;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
&[data-anchor="manual"] {
|
|
140
|
-
inset: unset;
|
|
141
|
-
position: fixed;
|
|
142
|
-
inset-inline-start: var(--lookup-anchor-inline-start, 50%);
|
|
143
|
-
inset-block-start: var(--lookup-anchor-block-start, 50%);
|
|
144
|
-
translate: unset;
|
|
145
|
-
transform: none;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
1
|
+
.ObLookup-inputWrap {
|
|
2
|
+
position: relative;
|
|
3
|
+
|
|
4
|
+
.ds-input {
|
|
5
|
+
padding-inline-end: var(--ObLookup-buttons-width, 3rem);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.ObLookup-labelTag {
|
|
10
|
+
margin-inline-start: var(--ds-size-2, 0.5rem);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.ObLookup-buttons {
|
|
14
|
+
position: absolute;
|
|
15
|
+
inset-inline-end: 0;
|
|
16
|
+
inset-block-end: 0;
|
|
17
|
+
/* Match the .ds-input height so the buttons center on the input row,
|
|
18
|
+
also when a label or description is rendered above the input */
|
|
19
|
+
height: var(--ds-size-12, 3rem);
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
padding-inline-end: var(--ds-size-1, 0.25rem);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ObLookup-dialog {
|
|
26
|
+
border: 0;
|
|
27
|
+
margin-block-start: 0;
|
|
28
|
+
/* Tight: the search field sits at the top edge and the footer buttons carry their own padding */
|
|
29
|
+
padding: var(--ds-size-3, 0.75rem) var(--ds-size-2, 0.5rem) var(--ds-size-1, 0.25rem);
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
|
|
32
|
+
background-color: var(--ds-color-neutral-background-tinted);
|
|
33
|
+
color: var(--ds-color-neutral-text-default);
|
|
34
|
+
|
|
35
|
+
transition:
|
|
36
|
+
display 0.2s allow-discrete,
|
|
37
|
+
transform 0.2s ease-out,
|
|
38
|
+
scale 0.2s ease-out,
|
|
39
|
+
opacity 0.2s ease-out;
|
|
40
|
+
|
|
41
|
+
&::backdrop {
|
|
42
|
+
opacity: 0;
|
|
43
|
+
background: rgb(0 0 0 / 0.2);
|
|
44
|
+
transition:
|
|
45
|
+
display 0.2s allow-discrete,
|
|
46
|
+
opacity 0.2s ease-out;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&[open]::backdrop {
|
|
50
|
+
opacity: 1;
|
|
51
|
+
|
|
52
|
+
@starting-style {
|
|
53
|
+
opacity: 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@media (width < 768px) {
|
|
58
|
+
/*
|
|
59
|
+
* A bottom sheet. The UA stylesheet caps a modal dialog at calc(100% - 6px - 2em) and
|
|
60
|
+
* centres it with auto margins, which left a gap under the sheet; drop both so the box
|
|
61
|
+
* really sits on the bottom edge. dvh follows the mobile browser chrome.
|
|
62
|
+
*/
|
|
63
|
+
inset: auto 0.5rem 0;
|
|
64
|
+
margin: 0;
|
|
65
|
+
max-height: none;
|
|
66
|
+
|
|
67
|
+
border-radius: 1rem 1rem 0 0;
|
|
68
|
+
height: 90vh;
|
|
69
|
+
height: 90dvh;
|
|
70
|
+
width: auto;
|
|
71
|
+
max-width: 100vw;
|
|
72
|
+
transform: translateY(100%);
|
|
73
|
+
z-index: 1500;
|
|
74
|
+
|
|
75
|
+
opacity: 0;
|
|
76
|
+
|
|
77
|
+
&[open] {
|
|
78
|
+
transform: translateY(0);
|
|
79
|
+
opacity: 1;
|
|
80
|
+
|
|
81
|
+
@starting-style {
|
|
82
|
+
transform: translateY(100%);
|
|
83
|
+
opacity: 0;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@media (width >= 768px) {
|
|
89
|
+
inset-block-start: 50%;
|
|
90
|
+
inset-inline-start: 50%;
|
|
91
|
+
translate: -50% -50%;
|
|
92
|
+
scale: 1 0;
|
|
93
|
+
opacity: 0;
|
|
94
|
+
|
|
95
|
+
border-radius: 0.25rem;
|
|
96
|
+
|
|
97
|
+
height: clamp(300px, 80vh, 500px);
|
|
98
|
+
min-width: 320px;
|
|
99
|
+
width: var(--default-width, 400px);
|
|
100
|
+
|
|
101
|
+
&[open] {
|
|
102
|
+
scale: 1;
|
|
103
|
+
opacity: 1;
|
|
104
|
+
|
|
105
|
+
@starting-style {
|
|
106
|
+
scale: 1 0;
|
|
107
|
+
opacity: 0;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@supports (inset-block-start: anchor(bottom)) {
|
|
113
|
+
@media (width < 768px) or (pointer: coarse) {
|
|
114
|
+
anchor-name: unset !important;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@media screen and (width >= 768px) and (pointer: fine) {
|
|
118
|
+
inset-block-start: anchor(bottom);
|
|
119
|
+
inset-block-end: unset;
|
|
120
|
+
|
|
121
|
+
inset-inline-start: anchor(left);
|
|
122
|
+
inset-inline-end: unset;
|
|
123
|
+
|
|
124
|
+
/* Below and to the right of the input when there is room; otherwise above it, or
|
|
125
|
+
aligned to its right edge, so an input near the bottom or the right edge of the
|
|
126
|
+
viewport still gets a visible dialog. */
|
|
127
|
+
position-try-fallbacks:
|
|
128
|
+
flip-block,
|
|
129
|
+
flip-inline,
|
|
130
|
+
flip-block flip-inline;
|
|
131
|
+
|
|
132
|
+
translate: unset;
|
|
133
|
+
transform-origin: top left;
|
|
134
|
+
|
|
135
|
+
resize: both;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
&[data-anchor="manual"] {
|
|
140
|
+
inset: unset;
|
|
141
|
+
position: fixed;
|
|
142
|
+
inset-inline-start: var(--lookup-anchor-inline-start, 50%);
|
|
143
|
+
inset-block-start: var(--lookup-anchor-block-start, 50%);
|
|
144
|
+
translate: unset;
|
|
145
|
+
transform: none;
|
|
146
|
+
}
|
|
147
|
+
}
|