@axinom/mosaic-ui 0.67.0-rc.0 → 0.67.0-rc.11
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/dist/components/Explorer/Explorer.d.ts.map +1 -1
- package/dist/components/Filters/Filter/Filter.d.ts.map +1 -1
- package/dist/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.d.ts.map +1 -1
- package/dist/components/FormElements/DateTimeField/DateTimeText.d.ts.map +1 -1
- package/dist/index.es.js +4 -4
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Accordion/Accordion.scss +1 -1
- package/src/components/Accordion/AccordionItem/AccordionItem.scss +2 -2
- package/src/components/Buttons/Button/Button.scss +5 -5
- package/src/components/Buttons/CompositeButton/CompositeButton.scss +5 -5
- package/src/components/Buttons/TextButton/TextButton.scss +4 -4
- package/src/components/ConfirmDialog/ConfirmDialog.scss +1 -1
- package/src/components/DateTime/DatePicker/DatePicker.scss +12 -12
- package/src/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.scss +7 -7
- package/src/components/DateTime/TimePicker/TimePicker.scss +1 -1
- package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.scss +2 -2
- package/src/components/DynamicDataList/DynamicListRow/DynamicListRow.scss +2 -2
- package/src/components/Explorer/Explorer.tsx +3 -1
- package/src/components/Filters/Filter/Filter.scss +7 -1
- package/src/components/Filters/Filter/Filter.tsx +4 -2
- package/src/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.scss +12 -5
- package/src/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.tsx +28 -26
- package/src/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.scss +0 -1
- package/src/components/FormElements/Checkbox/Checkbox.scss +4 -4
- package/src/components/FormElements/CustomTags/CustomTags.scss +1 -1
- package/src/components/FormElements/DateTimeField/DateTimeText.scss +5 -6
- package/src/components/FormElements/DateTimeField/DateTimeText.tsx +58 -43
- package/src/components/FormElements/FileUploadControl/FileUploadControl.scss +3 -3
- package/src/components/FormElements/Radio/Radio.scss +5 -5
- package/src/components/FormElements/ToggleButton/ToggleButton.scss +7 -7
- package/src/components/List/List.scss +4 -4
- package/src/components/List/ListHeader/ListHeader.scss +2 -2
- package/src/components/List/ListRow/ListRow.scss +1 -1
- package/src/components/PageHeader/PageHeader.scss +1 -1
- package/src/components/Tabs/Tab/CustomTab.scss +4 -4
- package/src/components/Tabs/TabList/CustomTabList.scss +2 -2
- package/src/styles/branding.scss +32 -28
- package/src/styles/variables.scss +275 -150
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import clsx from 'clsx';
|
|
2
2
|
import { DateTime } from 'luxon';
|
|
3
3
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import { usePopper } from 'react-popper';
|
|
4
6
|
import { noop } from '../../../helpers/utils';
|
|
5
7
|
import { Button, ButtonContext } from '../../Buttons';
|
|
6
8
|
import { DateTimePicker } from '../../DateTime/DateTimePicker';
|
|
@@ -46,6 +48,9 @@ export const DateTimeText: React.FC<DateTimeTextProps> = ({
|
|
|
46
48
|
...rest
|
|
47
49
|
}) => {
|
|
48
50
|
const container = useRef<HTMLDivElement>(null);
|
|
51
|
+
const [pickerElement, setPickerElement] = useState<HTMLDivElement | null>(
|
|
52
|
+
null,
|
|
53
|
+
);
|
|
49
54
|
const errorMsg: string | undefined = error;
|
|
50
55
|
const [display, setDisplay] = useState<string>(() => {
|
|
51
56
|
const locale = fromISODate(value, modifyTime);
|
|
@@ -54,6 +59,30 @@ export const DateTimeText: React.FC<DateTimeTextProps> = ({
|
|
|
54
59
|
|
|
55
60
|
const [showPicker, setShowPicker] = useState(false);
|
|
56
61
|
|
|
62
|
+
const { styles, attributes } = usePopper(container.current, pickerElement, {
|
|
63
|
+
placement: 'bottom-start',
|
|
64
|
+
modifiers: [
|
|
65
|
+
{
|
|
66
|
+
name: 'flip',
|
|
67
|
+
options: {
|
|
68
|
+
fallbackPlacements: ['top-start', 'bottom-start'],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'preventOverflow',
|
|
73
|
+
options: {
|
|
74
|
+
padding: 8,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'offset',
|
|
79
|
+
options: {
|
|
80
|
+
offset: [0, 4],
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
});
|
|
85
|
+
|
|
57
86
|
useEffect(() => {
|
|
58
87
|
const locale = fromISODate(value, modifyTime);
|
|
59
88
|
setDisplay(locale ?? '');
|
|
@@ -119,31 +148,36 @@ export const DateTimeText: React.FC<DateTimeTextProps> = ({
|
|
|
119
148
|
}}
|
|
120
149
|
/>
|
|
121
150
|
</div>
|
|
122
|
-
{showPicker &&
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
151
|
+
{showPicker &&
|
|
152
|
+
createPortal(
|
|
153
|
+
<>
|
|
154
|
+
<div
|
|
155
|
+
ref={setPickerElement}
|
|
156
|
+
className={clsx(classes.picker)}
|
|
157
|
+
style={styles.popper}
|
|
158
|
+
{...attributes.popper}
|
|
159
|
+
>
|
|
160
|
+
<DateTimePicker
|
|
161
|
+
value={getValue(value)}
|
|
162
|
+
onSelected={(value) => {
|
|
163
|
+
if (!modifyTime) {
|
|
164
|
+
setShowPicker(false);
|
|
165
|
+
}
|
|
166
|
+
onChange &&
|
|
167
|
+
onChange(DateTime.fromJSDate(value).toISO(), true);
|
|
168
|
+
}}
|
|
169
|
+
showTimePicker={modifyTime}
|
|
170
|
+
/>
|
|
171
|
+
</div>
|
|
172
|
+
<div
|
|
173
|
+
className={clsx(classes.backdrop)}
|
|
174
|
+
onClick={() => {
|
|
175
|
+
setShowPicker(false);
|
|
135
176
|
}}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
className={clsx(classes.backdrop)}
|
|
141
|
-
onClick={() => {
|
|
142
|
-
setShowPicker(false);
|
|
143
|
-
}}
|
|
144
|
-
></div>
|
|
145
|
-
</>
|
|
146
|
-
)}
|
|
177
|
+
></div>
|
|
178
|
+
</>,
|
|
179
|
+
document.body,
|
|
180
|
+
)}
|
|
147
181
|
</FormElementContainer>
|
|
148
182
|
);
|
|
149
183
|
};
|
|
@@ -172,22 +206,3 @@ function fromISODate(ISODateString: string, modifyTime: boolean): string {
|
|
|
172
206
|
return ISODateString;
|
|
173
207
|
}
|
|
174
208
|
}
|
|
175
|
-
|
|
176
|
-
const calculatePosition = (
|
|
177
|
-
container: HTMLDivElement | null,
|
|
178
|
-
): React.CSSProperties => {
|
|
179
|
-
if (!container) {
|
|
180
|
-
return {};
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const PICKER_HEIGHT = 280;
|
|
184
|
-
|
|
185
|
-
const rect = container.getBoundingClientRect();
|
|
186
|
-
const top = rect.bottom;
|
|
187
|
-
|
|
188
|
-
if (top + PICKER_HEIGHT > window.innerHeight) {
|
|
189
|
-
return { top: rect.top - PICKER_HEIGHT, left: container.offsetLeft };
|
|
190
|
-
} else {
|
|
191
|
-
return { top, left: container.offsetLeft };
|
|
192
|
-
}
|
|
193
|
-
};
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
margin-left: -50px;
|
|
21
21
|
border: none;
|
|
22
|
-
background-color: var(--
|
|
22
|
+
background-color: var(--file-upload-button-bg-color, $file-upload-button-bg-color);
|
|
23
23
|
|
|
24
24
|
transition: box-shadow 0.15s ease-in-out 0s;
|
|
25
25
|
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
|
|
36
36
|
&:hover {
|
|
37
37
|
border: none;
|
|
38
|
-
background-color:
|
|
38
|
+
background-color: var(--file-upload-button-hover-bg-color, $file-upload-button-hover-bg-color);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
&.disabled {
|
|
42
42
|
border: none;
|
|
43
|
-
background-color: var(--
|
|
43
|
+
background-color: var(--file-upload-button-disabled-bg-color, $file-upload-button-disabled-bg-color);
|
|
44
44
|
cursor: default;
|
|
45
45
|
|
|
46
46
|
svg * {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
grid: 1fr / 30px 1fr;
|
|
28
28
|
column-gap: 8px;
|
|
29
29
|
|
|
30
|
-
color: var(--
|
|
30
|
+
color: var(--radio-label-color, $radio-label-color);
|
|
31
31
|
font-size: 16px;
|
|
32
32
|
font-weight: unset;
|
|
33
33
|
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
|
|
38
38
|
&.disabled {
|
|
39
39
|
.radioOutline {
|
|
40
|
-
fill: var(--
|
|
40
|
+
fill: var(--radio-disabled-outline-color, $radio-disabled-outline-color);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.checked {
|
|
44
44
|
.radioDot {
|
|
45
|
-
fill: var(--
|
|
45
|
+
fill: var(--radio-disabled-dot-color, $radio-disabled-dot-color);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
|
|
61
61
|
.radioOutline {
|
|
62
62
|
fill: none;
|
|
63
|
-
stroke: var(--
|
|
63
|
+
stroke: var(--radio-outline-stroke-color, $radio-outline-stroke-color);
|
|
64
64
|
stroke-width: 1;
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
|
|
88
88
|
&.hasConfirm {
|
|
89
89
|
.radioOutline {
|
|
90
|
-
stroke: var(--
|
|
90
|
+
stroke: var(--radio-warning-stroke-color, $radio-warning-stroke-color);
|
|
91
91
|
stroke-width: 3;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
@@ -94,13 +94,13 @@
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
&.off {
|
|
97
|
-
border-top: 1px solid var(--
|
|
98
|
-
border-bottom: 1px solid var(--
|
|
99
|
-
border-left: 1px solid var(--
|
|
97
|
+
border-top: 1px solid var(--toggle-button-warning-border-color, $toggle-button-warning-border-color);
|
|
98
|
+
border-bottom: 1px solid var(--toggle-button-warning-border-color, $toggle-button-warning-border-color);
|
|
99
|
+
border-left: 1px solid var(--toggle-button-warning-border-color, $toggle-button-warning-border-color);
|
|
100
100
|
transition: border $confirmation-transition linear;
|
|
101
101
|
}
|
|
102
102
|
&.on {
|
|
103
|
-
border: 1px solid var(--
|
|
103
|
+
border: 1px solid var(--toggle-button-warning-border-color, $toggle-button-warning-border-color);
|
|
104
104
|
transition: border $confirmation-transition linear;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -108,19 +108,19 @@
|
|
|
108
108
|
div.active.off {
|
|
109
109
|
svg {
|
|
110
110
|
.svgText {
|
|
111
|
-
fill: var(--
|
|
111
|
+
fill: var(--toggle-button-warning-text-color, $toggle-button-warning-text-color);
|
|
112
112
|
transition: fill $confirmation-transition linear;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
div.active.on {
|
|
118
|
-
background-color: var(--
|
|
118
|
+
background-color: var(--toggle-button-warning-bg-color, $toggle-button-warning-bg-color) !important;
|
|
119
119
|
transition: background-color $confirmation-transition linear;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
&:hover {
|
|
123
|
-
box-shadow: 0 0 0 2px var(--
|
|
123
|
+
box-shadow: 0 0 0 2px var(--toggle-button-warning-hover-shadow-color, $toggle-button-warning-hover-shadow-color);
|
|
124
124
|
transition: box-shadow $confirmation-transition linear;
|
|
125
125
|
}
|
|
126
126
|
}
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
p {
|
|
43
43
|
margin-left: 10px;
|
|
44
44
|
|
|
45
|
-
color: var(--
|
|
45
|
+
color: var(--list-no-data-text-color, $list-no-data-text-color);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
background-color: var(--
|
|
48
|
+
background-color: var(--list-no-data-bg-color, $list-no-data-bg-color) !important;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
.error {
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
p {
|
|
57
57
|
margin: 10px 0px 10px 10px;
|
|
58
58
|
|
|
59
|
-
color: var(--
|
|
59
|
+
color: var(--list-error-text-color, $list-error-text-color);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
background-color:
|
|
62
|
+
background-color: var(--list-error-bg-color, $list-error-bg-color) !important;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
box-sizing: border-box;
|
|
15
|
-
border-bottom: solid 1px var(--
|
|
15
|
+
border-bottom: solid 1px var(--list-header-border-color, $list-header-border-color);
|
|
16
16
|
|
|
17
17
|
.columnLabel {
|
|
18
18
|
box-sizing: border-box;
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
height: 100%;
|
|
29
29
|
|
|
30
30
|
z-index: 1;
|
|
31
|
-
border-right: var(--explorer-list-row-border, 1px solid var(--
|
|
31
|
+
border-right: var(--explorer-list-row-border, 1px solid var(--list-header-resize-handle-border-color, $list-header-resize-handle-border-color));
|
|
32
32
|
position: absolute;
|
|
33
33
|
right: 0;
|
|
34
34
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
display: grid;
|
|
7
7
|
height: 50px;
|
|
8
|
-
color: var(--
|
|
8
|
+
color: var(--tab-text-color, $tab-text-color);
|
|
9
9
|
font-size: 14px;
|
|
10
10
|
font-weight: bold;
|
|
11
11
|
border-bottom: none;
|
|
@@ -17,17 +17,17 @@
|
|
|
17
17
|
|
|
18
18
|
&.selected {
|
|
19
19
|
background: white;
|
|
20
|
-
color: var(--
|
|
20
|
+
color: var(--tab-selected-text-color, $tab-selected-text-color);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
&:hover:not(.selected):not(.disabled) {
|
|
24
|
-
background-color: var(--
|
|
24
|
+
background-color: var(--tab-hover-bg-color, $tab-hover-bg-color);
|
|
25
25
|
transition: background-color $confirmation-transition linear;
|
|
26
26
|
color: white;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
&.disabled {
|
|
30
|
-
color: var(--
|
|
30
|
+
color: var(--tab-disabled-text-color, $tab-disabled-text-color);
|
|
31
31
|
cursor: default;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
border: none;
|
|
5
5
|
margin: 0;
|
|
6
6
|
padding: 0;
|
|
7
|
-
background-color: var(--
|
|
8
|
-
border-top: 1px solid var(--
|
|
7
|
+
background-color: var(--tab-list-bg-color, $tab-list-bg-color);
|
|
8
|
+
border-top: 1px solid var(--tab-list-border-color, $tab-list-border-color);
|
|
9
9
|
}
|
package/src/styles/branding.scss
CHANGED
|
@@ -7,20 +7,20 @@
|
|
|
7
7
|
* ## CSS Custom Properties Defined
|
|
8
8
|
*
|
|
9
9
|
* ### Primary Colors (Blues)
|
|
10
|
-
* - `--
|
|
11
|
-
* - `--
|
|
12
|
-
* - `--
|
|
10
|
+
* - `--mosaic-primary`: Base primary light color (#28aae1)
|
|
11
|
+
* - `--mosaic-secondary`: Base variant (#1478af - auto-derived using RGB relative color syntax)
|
|
12
|
+
* - `--mosaic-accent`: Darker variant (#00467d - auto-derived using RGB relative color syntax)
|
|
13
13
|
*
|
|
14
14
|
* ### Neutral Colors (Grays)
|
|
15
|
-
* - `--
|
|
16
|
-
* - `--
|
|
17
|
-
* - `--
|
|
18
|
-
* - `--
|
|
15
|
+
* - `--mosaic-neutral`: Base neutral color (#b7b7b7)
|
|
16
|
+
* - `--mosaic-neutral-1`: Darker variant (#707070)
|
|
17
|
+
* - `--mosaic-neutral-2`: Lighter variant (#dddddd)
|
|
18
|
+
* - `--mosaic-neutral-3`: Lightest variant (#eeeeee)
|
|
19
19
|
*
|
|
20
20
|
* ### Semantic Colors
|
|
21
|
-
* - `--
|
|
22
|
-
* - `--
|
|
23
|
-
* - `--
|
|
21
|
+
* - `--mosaic-error`: Error/danger state color (#f06c55 - red)
|
|
22
|
+
* - `--mosaic-warning`: Warning state color (#ffc81a - yellow)
|
|
23
|
+
* - `--mosaic-success`: Success state color (#95c852 - green)
|
|
24
24
|
*
|
|
25
25
|
* ## Runtime Theming Usage
|
|
26
26
|
*
|
|
@@ -32,20 +32,20 @@
|
|
|
32
32
|
* Override colors in your application's CSS/SCSS:
|
|
33
33
|
*
|
|
34
34
|
* :root {
|
|
35
|
-
* --
|
|
36
|
-
* --
|
|
35
|
+
* --mosaic-secondary: #ff5733; // No !important needed
|
|
36
|
+
* --mosaic-neutral: #666666;
|
|
37
37
|
* }
|
|
38
38
|
*
|
|
39
39
|
* ### Example - Purple Theme
|
|
40
40
|
*
|
|
41
41
|
* :root {
|
|
42
|
-
* --
|
|
42
|
+
* --mosaic-primary: #9d7aed;
|
|
43
43
|
* }
|
|
44
|
-
* // --
|
|
44
|
+
* // --mosaic-secondary and --mosaic-accent automatically adjust!
|
|
45
45
|
*
|
|
46
46
|
* ### Dynamic Runtime Override
|
|
47
47
|
*
|
|
48
|
-
* document.documentElement.style.setProperty('--
|
|
48
|
+
* document.documentElement.style.setProperty('--mosaic-primary', '#9d7aed');
|
|
49
49
|
*
|
|
50
50
|
* ### Why This Works
|
|
51
51
|
*
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
*
|
|
57
57
|
* ## Browser Support
|
|
58
58
|
*
|
|
59
|
-
* - CSS Relative Color Syntax (`
|
|
59
|
+
* - CSS Relative Color Syntax (`rgb(from var(...))`) requires:
|
|
60
60
|
* - Chrome 119+
|
|
61
61
|
* - Firefox 128+
|
|
62
62
|
* - Safari 16.4+
|
|
@@ -69,21 +69,25 @@
|
|
|
69
69
|
*/
|
|
70
70
|
@layer ax-defaults {
|
|
71
71
|
:root {
|
|
72
|
-
/* Base Primary Color - override this to change the entire primary palette */
|
|
73
|
-
--
|
|
74
|
-
--
|
|
75
|
-
--
|
|
76
|
-
from var(--
|
|
72
|
+
/* Base Primary Light Color - override this to change the entire primary palette */
|
|
73
|
+
--mosaic-primary: #28aae1;
|
|
74
|
+
--mosaic-secondary: #1478af;
|
|
75
|
+
--mosaic-secondary: rgb(
|
|
76
|
+
from var(--mosaic-primary) calc(r * 0.5) calc(g * 0.706) calc(b * 0.778)
|
|
77
|
+
);
|
|
78
|
+
--mosaic-accent: #00467d;
|
|
79
|
+
--mosaic-accent: rgb(
|
|
80
|
+
from var(--mosaic-primary) calc(r * 0) calc(g * 0.412) calc(b * 0.556)
|
|
77
81
|
);
|
|
78
82
|
|
|
79
|
-
--
|
|
80
|
-
--
|
|
81
|
-
--
|
|
82
|
-
--
|
|
83
|
+
--mosaic-neutral: #b7b7b7;
|
|
84
|
+
--mosaic-neutral-1: #707070;
|
|
85
|
+
--mosaic-neutral-2: #dddddd;
|
|
86
|
+
--mosaic-neutral-3: #eeeeee;
|
|
83
87
|
|
|
84
88
|
/* Semantic Colors */
|
|
85
|
-
--
|
|
86
|
-
--
|
|
87
|
-
--
|
|
89
|
+
--mosaic-error: #f06c55;
|
|
90
|
+
--mosaic-warning: #ffc81a;
|
|
91
|
+
--mosaic-success: #95c852;
|
|
88
92
|
}
|
|
89
93
|
}
|