@jolly-pixel/ui 1.0.1 → 2.0.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/LICENSE +44 -44
- package/NOTICE +9 -0
- package/README.md +194 -194
- package/dist/containers/Dialog.js +11 -11
- package/dist/containers/Dialog.styles.js +48 -48
- package/dist/containers/Dock.js +11 -11
- package/dist/containers/Dock.styles.js +351 -351
- package/dist/containers/DockLayout.js +4 -4
- package/dist/containers/Floating.js +23 -23
- package/dist/containers/Floating.styles.js +116 -116
- package/dist/containers/Folder.js +28 -28
- package/dist/containers/Folder.styles.js +221 -221
- package/dist/containers/Pane.js +50 -50
- package/dist/containers/Pane.styles.js +186 -186
- package/dist/containers/Rail.js +18 -18
- package/dist/containers/Tab.js +10 -10
- package/dist/containers/Tabs.js +26 -26
- package/dist/containers/Tabs.styles.js +93 -93
- package/dist/containers/Toolbar.js +25 -25
- package/dist/containers/resize.js +5 -5
- package/dist/controls/Button.js +9 -9
- package/dist/controls/Button.styles.js +79 -79
- package/dist/controls/ButtonGroup.js +28 -28
- package/dist/controls/ButtonGroup.styles.js +98 -98
- package/dist/controls/Checkbox.js +14 -14
- package/dist/controls/Checkbox.styles.js +111 -111
- package/dist/controls/Color.js +51 -51
- package/dist/controls/Color.styles.js +83 -83
- package/dist/controls/ColorPicker.js +104 -104
- package/dist/controls/ColorPicker.styles.js +296 -296
- package/dist/controls/Control.js +33 -33
- package/dist/controls/Control.styles.js +102 -102
- package/dist/controls/Controls.js +11 -11
- package/dist/controls/Controls.styles.js +98 -98
- package/dist/controls/Flags.js +18 -18
- package/dist/controls/Flags.styles.js +59 -59
- package/dist/controls/Number.js +21 -21
- package/dist/controls/Number.styles.js +44 -44
- package/dist/controls/PropertyRow.js +13 -13
- package/dist/controls/PropertyRow.styles.js +105 -105
- package/dist/controls/Range.js +24 -24
- package/dist/controls/Range.styles.js +25 -25
- package/dist/controls/Select.js +23 -23
- package/dist/controls/Select.styles.js +47 -47
- package/dist/controls/Separator.js +11 -11
- package/dist/controls/Separator.styles.js +45 -45
- package/dist/controls/Slider.js +36 -36
- package/dist/controls/Slider.styles.js +161 -161
- package/dist/controls/Text.js +17 -17
- package/dist/data/Tree.d.ts +0 -14
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +90 -120
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/Tree.styles.d.ts.map +1 -1
- package/dist/data/Tree.styles.js +220 -237
- package/dist/data/Tree.styles.js.map +1 -1
- package/dist/data/dropZone.d.ts +0 -10
- package/dist/data/dropZone.d.ts.map +1 -1
- package/dist/data/dropZone.js +0 -10
- package/dist/data/dropZone.js.map +1 -1
- package/dist/data/resolveRename.d.ts +0 -3
- package/dist/data/resolveRename.d.ts.map +1 -1
- package/dist/data/resolveRename.js +0 -3
- package/dist/data/resolveRename.js.map +1 -1
- package/dist/data/resolveReparent.d.ts +0 -7
- package/dist/data/resolveReparent.d.ts.map +1 -1
- package/dist/data/resolveReparent.js +0 -6
- package/dist/data/resolveReparent.js.map +1 -1
- package/dist/data/rowDragSession.d.ts +0 -8
- package/dist/data/rowDragSession.d.ts.map +1 -1
- package/dist/data/rowDragSession.js +0 -6
- package/dist/data/rowDragSession.js.map +1 -1
- package/dist/data/treeNodes.d.ts +0 -6
- package/dist/data/treeNodes.d.ts.map +1 -1
- package/dist/data/treeNodes.js +2 -7
- package/dist/data/treeNodes.js.map +1 -1
- package/dist/feedback/JollyPixelLogo.js +84 -84
- package/dist/feedback/Loading.js +29 -29
- package/dist/feedback/Loading.styles.js +230 -230
- package/dist/feedback/Log.js +8 -8
- package/dist/feedback/Log.styles.js +61 -61
- package/dist/feedback/Progress.js +17 -17
- package/dist/feedback/Progress.styles.js +146 -146
- package/dist/field/JollyField.js +51 -51
- package/dist/field/JollyField.styles.js +429 -429
- package/dist/icon/Icon.js +24 -24
- package/dist/icon/builtins.js +126 -126
- package/dist/interaction/drag/DragSession.js +6 -6
- package/dist/interaction/scrub/ScrubController.js +6 -6
- package/dist/math/AxisController.js +22 -22
- package/dist/math/Point2d.js +12 -12
- package/dist/math/Point2d.styles.js +49 -49
- package/dist/math/Quaternion.js +4 -4
- package/dist/math/Transform.js +40 -40
- package/dist/math/Transform.styles.js +17 -17
- package/dist/math/VectorField.js +4 -4
- package/dist/math/VectorField.styles.js +102 -102
- package/dist/monitors/Graph.js +8 -8
- package/dist/monitors/Graph.styles.js +42 -42
- package/dist/monitors/Monitor.js +5 -5
- package/dist/monitors/Monitor.styles.js +31 -31
- package/dist/peer/Presence.js +33 -33
- package/dist/peer/Presence.styles.js +82 -82
- package/dist/stats/Stats.js +6 -6
- package/dist/stats/Stats.styles.js +54 -54
- package/dist/theme/components/DensityControl.js +16 -16
- package/dist/theme/components/ThemeControl.js +16 -16
- package/dist/theme/components/ThemePreferences.js +18 -18
- package/dist/theme/font.js +9 -9
- package/dist/theme/styles/hiddenStyles.js +4 -4
- package/dist/theme/styles/mixins.js +16 -16
- package/dist/theme/styles/themeStyles.js +4 -4
- package/dist/theme/tokens/density.js +19 -19
- package/dist/theme/tokens/ramps.js +40 -40
- package/dist/theme/tokens/scales.js +56 -56
- package/dist/theme/tokens/semantic.js +184 -184
- package/package.json +6 -5
|
@@ -2,107 +2,107 @@
|
|
|
2
2
|
import { css } from "lit";
|
|
3
3
|
// Import Internal Dependencies
|
|
4
4
|
import { focusRing, truncate } from "../theme/styles/mixins.js";
|
|
5
|
-
export const controlStyles = css `
|
|
6
|
-
:host {
|
|
7
|
-
display: grid;
|
|
8
|
-
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
9
|
-
gap: calc(var(--jolly-controls-inset, 10px) / 2);
|
|
10
|
-
align-items: center;
|
|
11
|
-
min-inline-size: 0;
|
|
12
|
-
min-block-size: var(--jolly-control-height);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.keys {
|
|
16
|
-
display: inline-flex;
|
|
17
|
-
flex-wrap: wrap;
|
|
18
|
-
gap: 2px;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
::slotted(kbd) {
|
|
22
|
-
box-sizing: border-box;
|
|
23
|
-
min-inline-size: calc(var(--jolly-control-height) + 2px);
|
|
24
|
-
min-block-size: calc(var(--jolly-control-height) + 2px);
|
|
25
|
-
padding: 1px 6px;
|
|
26
|
-
color: var(--jolly-text);
|
|
27
|
-
font-family: inherit;
|
|
28
|
-
font-size: calc(var(--jolly-font-size) + 1px);
|
|
29
|
-
font-weight: 700;
|
|
30
|
-
line-height: calc(var(--jolly-control-height) - 2px);
|
|
31
|
-
text-align: center;
|
|
32
|
-
letter-spacing: 0.02em;
|
|
33
|
-
white-space: nowrap;
|
|
34
|
-
background: color-mix(
|
|
35
|
-
in oklab,
|
|
36
|
-
var(--jolly-ink) 18%,
|
|
37
|
-
var(--jolly-surface-raised)
|
|
38
|
-
);
|
|
39
|
-
border: 1px solid var(--jolly-border);
|
|
40
|
-
border-radius: 3px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.description {
|
|
44
|
-
min-inline-size: 0;
|
|
45
|
-
color: var(--jolly-text);
|
|
46
|
-
${truncate}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.details-button {
|
|
50
|
-
display: grid;
|
|
51
|
-
place-items: center;
|
|
52
|
-
box-sizing: border-box;
|
|
53
|
-
inline-size: var(--jolly-control-height);
|
|
54
|
-
block-size: var(--jolly-control-height);
|
|
55
|
-
padding: 0;
|
|
56
|
-
color: var(--jolly-text-muted);
|
|
57
|
-
background: transparent;
|
|
58
|
-
border: 0;
|
|
59
|
-
border-radius: 50%;
|
|
60
|
-
cursor: pointer;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.details-button:hover {
|
|
64
|
-
color: var(--jolly-text);
|
|
65
|
-
background: var(--jolly-control-bg-hover);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.details-button:focus-visible {
|
|
69
|
-
${focusRing}
|
|
70
|
-
outline-offset: 2px;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
jolly-icon {
|
|
74
|
-
inline-size: calc(var(--jolly-control-height) - 4px);
|
|
75
|
-
block-size: calc(var(--jolly-control-height) - 4px);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.details {
|
|
79
|
-
position: fixed;
|
|
80
|
-
inset: auto;
|
|
81
|
-
width: max-content;
|
|
82
|
-
margin: 0;
|
|
83
|
-
visibility: hidden;
|
|
84
|
-
box-sizing: border-box;
|
|
85
|
-
max-inline-size: min(20rem, calc(100vw - 2rem));
|
|
86
|
-
padding: calc(var(--jolly-controls-inset, 10px) / 1.5);
|
|
87
|
-
color: var(--jolly-text);
|
|
88
|
-
font: inherit;
|
|
89
|
-
line-height: 1.4;
|
|
90
|
-
background: var(--jolly-surface-raised);
|
|
91
|
-
border: 0;
|
|
92
|
-
border-radius: 4px;
|
|
93
|
-
box-shadow: var(--jolly-shadow-floating);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.details::backdrop {
|
|
97
|
-
background: transparent;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
@media (forced-colors: active) {
|
|
101
|
-
::slotted(kbd),
|
|
102
|
-
.details {
|
|
103
|
-
background: Canvas;
|
|
104
|
-
border-color: CanvasText;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
5
|
+
export const controlStyles = css `
|
|
6
|
+
:host {
|
|
7
|
+
display: grid;
|
|
8
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
9
|
+
gap: calc(var(--jolly-controls-inset, 10px) / 2);
|
|
10
|
+
align-items: center;
|
|
11
|
+
min-inline-size: 0;
|
|
12
|
+
min-block-size: var(--jolly-control-height);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.keys {
|
|
16
|
+
display: inline-flex;
|
|
17
|
+
flex-wrap: wrap;
|
|
18
|
+
gap: 2px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
::slotted(kbd) {
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
min-inline-size: calc(var(--jolly-control-height) + 2px);
|
|
24
|
+
min-block-size: calc(var(--jolly-control-height) + 2px);
|
|
25
|
+
padding: 1px 6px;
|
|
26
|
+
color: var(--jolly-text);
|
|
27
|
+
font-family: inherit;
|
|
28
|
+
font-size: calc(var(--jolly-font-size) + 1px);
|
|
29
|
+
font-weight: 700;
|
|
30
|
+
line-height: calc(var(--jolly-control-height) - 2px);
|
|
31
|
+
text-align: center;
|
|
32
|
+
letter-spacing: 0.02em;
|
|
33
|
+
white-space: nowrap;
|
|
34
|
+
background: color-mix(
|
|
35
|
+
in oklab,
|
|
36
|
+
var(--jolly-ink) 18%,
|
|
37
|
+
var(--jolly-surface-raised)
|
|
38
|
+
);
|
|
39
|
+
border: 1px solid var(--jolly-border);
|
|
40
|
+
border-radius: 3px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.description {
|
|
44
|
+
min-inline-size: 0;
|
|
45
|
+
color: var(--jolly-text);
|
|
46
|
+
${truncate}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.details-button {
|
|
50
|
+
display: grid;
|
|
51
|
+
place-items: center;
|
|
52
|
+
box-sizing: border-box;
|
|
53
|
+
inline-size: var(--jolly-control-height);
|
|
54
|
+
block-size: var(--jolly-control-height);
|
|
55
|
+
padding: 0;
|
|
56
|
+
color: var(--jolly-text-muted);
|
|
57
|
+
background: transparent;
|
|
58
|
+
border: 0;
|
|
59
|
+
border-radius: 50%;
|
|
60
|
+
cursor: pointer;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.details-button:hover {
|
|
64
|
+
color: var(--jolly-text);
|
|
65
|
+
background: var(--jolly-control-bg-hover);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.details-button:focus-visible {
|
|
69
|
+
${focusRing}
|
|
70
|
+
outline-offset: 2px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
jolly-icon {
|
|
74
|
+
inline-size: calc(var(--jolly-control-height) - 4px);
|
|
75
|
+
block-size: calc(var(--jolly-control-height) - 4px);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.details {
|
|
79
|
+
position: fixed;
|
|
80
|
+
inset: auto;
|
|
81
|
+
width: max-content;
|
|
82
|
+
margin: 0;
|
|
83
|
+
visibility: hidden;
|
|
84
|
+
box-sizing: border-box;
|
|
85
|
+
max-inline-size: min(20rem, calc(100vw - 2rem));
|
|
86
|
+
padding: calc(var(--jolly-controls-inset, 10px) / 1.5);
|
|
87
|
+
color: var(--jolly-text);
|
|
88
|
+
font: inherit;
|
|
89
|
+
line-height: 1.4;
|
|
90
|
+
background: var(--jolly-surface-raised);
|
|
91
|
+
border: 0;
|
|
92
|
+
border-radius: 4px;
|
|
93
|
+
box-shadow: var(--jolly-shadow-floating);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.details::backdrop {
|
|
97
|
+
background: transparent;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@media (forced-colors: active) {
|
|
101
|
+
::slotted(kbd),
|
|
102
|
+
.details {
|
|
103
|
+
background: Canvas;
|
|
104
|
+
border-color: CanvasText;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
107
|
`;
|
|
108
108
|
//# sourceMappingURL=Control.styles.js.map
|
|
@@ -33,19 +33,19 @@ let Controls = class Controls extends LitElement {
|
|
|
33
33
|
render() {
|
|
34
34
|
const maximum = Math.max(1, Math.floor(this.maxEntriesPerRow));
|
|
35
35
|
const headingId = "heading";
|
|
36
|
-
return html `
|
|
36
|
+
return html `
|
|
37
37
|
${this.heading === ""
|
|
38
38
|
? nothing
|
|
39
|
-
: html `<h2 class="heading" id=${headingId}>${this.heading}</h2>`}
|
|
40
|
-
<div
|
|
41
|
-
class="entries"
|
|
42
|
-
role="list"
|
|
43
|
-
aria-label=${this.heading === "" ? "Controls" : nothing}
|
|
44
|
-
aria-labelledby=${this.heading === "" ? nothing : headingId}
|
|
45
|
-
style=${`--jolly-controls-max-entries-per-row:${maximum}`}
|
|
46
|
-
>
|
|
47
|
-
<slot></slot>
|
|
48
|
-
</div>
|
|
39
|
+
: html `<h2 class="heading" id=${headingId}>${this.heading}</h2>`}
|
|
40
|
+
<div
|
|
41
|
+
class="entries"
|
|
42
|
+
role="list"
|
|
43
|
+
aria-label=${this.heading === "" ? "Controls" : nothing}
|
|
44
|
+
aria-labelledby=${this.heading === "" ? nothing : headingId}
|
|
45
|
+
style=${`--jolly-controls-max-entries-per-row:${maximum}`}
|
|
46
|
+
>
|
|
47
|
+
<slot></slot>
|
|
48
|
+
</div>
|
|
49
49
|
`;
|
|
50
50
|
}
|
|
51
51
|
};
|
|
@@ -1,102 +1,102 @@
|
|
|
1
1
|
// Import Third-party Dependencies
|
|
2
2
|
import { css } from "lit";
|
|
3
|
-
export const controlsStyles = css `
|
|
4
|
-
:host {
|
|
5
|
-
--jolly-controls-inset: calc(var(--jolly-row-height) / 2);
|
|
6
|
-
--jolly-controls-entry-min-width: 10rem;
|
|
7
|
-
|
|
8
|
-
position: absolute;
|
|
9
|
-
z-index: 1;
|
|
10
|
-
display: block;
|
|
11
|
-
box-sizing: border-box;
|
|
12
|
-
max-inline-size: calc(100% - (var(--jolly-controls-inset) * 2));
|
|
13
|
-
padding: var(--jolly-controls-inset);
|
|
14
|
-
color: var(--jolly-text);
|
|
15
|
-
font-family: var(--jolly-font-family);
|
|
16
|
-
font-size: var(--jolly-font-size);
|
|
17
|
-
line-height: 1.35;
|
|
18
|
-
background: color-mix(in oklab, var(--jolly-surface-raised) 72%, transparent);
|
|
19
|
-
border-radius: 4px;
|
|
20
|
-
box-shadow: var(--jolly-shadow-overlay);
|
|
21
|
-
backdrop-filter: blur(12px);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
:host([position="top-left"]) {
|
|
25
|
-
inset: var(--jolly-controls-inset) auto auto var(--jolly-controls-inset);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
:host([position="top-middle"]) {
|
|
29
|
-
inset: var(--jolly-controls-inset) auto auto 50%;
|
|
30
|
-
transform: translateX(-50%);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
:host([position="top-right"]) {
|
|
34
|
-
inset: var(--jolly-controls-inset) var(--jolly-controls-inset) auto auto;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
:host([position="middle-left"]) {
|
|
38
|
-
inset: 50% auto auto var(--jolly-controls-inset);
|
|
39
|
-
transform: translateY(-50%);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
:host([position="middle"]) {
|
|
43
|
-
inset: 50% auto auto 50%;
|
|
44
|
-
transform: translate(-50%, -50%);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
:host([position="middle-right"]) {
|
|
48
|
-
inset: 50% var(--jolly-controls-inset) auto auto;
|
|
49
|
-
transform: translateY(-50%);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
:host([position="bottom-left"]) {
|
|
53
|
-
inset: auto auto var(--jolly-controls-inset) var(--jolly-controls-inset);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
:host([position="bottom-middle"]) {
|
|
57
|
-
inset: auto auto var(--jolly-controls-inset) 50%;
|
|
58
|
-
transform: translateX(-50%);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
:host([position="bottom-right"]) {
|
|
62
|
-
inset: auto var(--jolly-controls-inset) var(--jolly-controls-inset) auto;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.heading {
|
|
66
|
-
margin: 0 0 calc(var(--jolly-controls-inset) / 2);
|
|
67
|
-
color: var(--jolly-text-muted);
|
|
68
|
-
font-size: inherit;
|
|
69
|
-
font-weight: 600;
|
|
70
|
-
text-transform: uppercase;
|
|
71
|
-
letter-spacing: 0.06em;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.entries {
|
|
75
|
-
display: grid;
|
|
76
|
-
grid-template-columns: repeat(
|
|
77
|
-
var(--jolly-controls-max-entries-per-row),
|
|
78
|
-
minmax(var(--jolly-controls-entry-min-width), 1fr)
|
|
79
|
-
);
|
|
80
|
-
gap: calc(var(--jolly-controls-inset) / 2);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
@media (max-width: 32rem) {
|
|
84
|
-
.entries {
|
|
85
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
@media (max-width: 20rem) {
|
|
90
|
-
.entries {
|
|
91
|
-
grid-template-columns: minmax(0, 1fr);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
@media (forced-colors: active) {
|
|
96
|
-
:host {
|
|
97
|
-
background: Canvas;
|
|
98
|
-
box-shadow: none;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
3
|
+
export const controlsStyles = css `
|
|
4
|
+
:host {
|
|
5
|
+
--jolly-controls-inset: calc(var(--jolly-row-height) / 2);
|
|
6
|
+
--jolly-controls-entry-min-width: 10rem;
|
|
7
|
+
|
|
8
|
+
position: absolute;
|
|
9
|
+
z-index: 1;
|
|
10
|
+
display: block;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
max-inline-size: calc(100% - (var(--jolly-controls-inset) * 2));
|
|
13
|
+
padding: var(--jolly-controls-inset);
|
|
14
|
+
color: var(--jolly-text);
|
|
15
|
+
font-family: var(--jolly-font-family);
|
|
16
|
+
font-size: var(--jolly-font-size);
|
|
17
|
+
line-height: 1.35;
|
|
18
|
+
background: color-mix(in oklab, var(--jolly-surface-raised) 72%, transparent);
|
|
19
|
+
border-radius: 4px;
|
|
20
|
+
box-shadow: var(--jolly-shadow-overlay);
|
|
21
|
+
backdrop-filter: blur(12px);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host([position="top-left"]) {
|
|
25
|
+
inset: var(--jolly-controls-inset) auto auto var(--jolly-controls-inset);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:host([position="top-middle"]) {
|
|
29
|
+
inset: var(--jolly-controls-inset) auto auto 50%;
|
|
30
|
+
transform: translateX(-50%);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:host([position="top-right"]) {
|
|
34
|
+
inset: var(--jolly-controls-inset) var(--jolly-controls-inset) auto auto;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:host([position="middle-left"]) {
|
|
38
|
+
inset: 50% auto auto var(--jolly-controls-inset);
|
|
39
|
+
transform: translateY(-50%);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
:host([position="middle"]) {
|
|
43
|
+
inset: 50% auto auto 50%;
|
|
44
|
+
transform: translate(-50%, -50%);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:host([position="middle-right"]) {
|
|
48
|
+
inset: 50% var(--jolly-controls-inset) auto auto;
|
|
49
|
+
transform: translateY(-50%);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:host([position="bottom-left"]) {
|
|
53
|
+
inset: auto auto var(--jolly-controls-inset) var(--jolly-controls-inset);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:host([position="bottom-middle"]) {
|
|
57
|
+
inset: auto auto var(--jolly-controls-inset) 50%;
|
|
58
|
+
transform: translateX(-50%);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:host([position="bottom-right"]) {
|
|
62
|
+
inset: auto var(--jolly-controls-inset) var(--jolly-controls-inset) auto;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.heading {
|
|
66
|
+
margin: 0 0 calc(var(--jolly-controls-inset) / 2);
|
|
67
|
+
color: var(--jolly-text-muted);
|
|
68
|
+
font-size: inherit;
|
|
69
|
+
font-weight: 600;
|
|
70
|
+
text-transform: uppercase;
|
|
71
|
+
letter-spacing: 0.06em;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.entries {
|
|
75
|
+
display: grid;
|
|
76
|
+
grid-template-columns: repeat(
|
|
77
|
+
var(--jolly-controls-max-entries-per-row),
|
|
78
|
+
minmax(var(--jolly-controls-entry-min-width), 1fr)
|
|
79
|
+
);
|
|
80
|
+
gap: calc(var(--jolly-controls-inset) / 2);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@media (max-width: 32rem) {
|
|
84
|
+
.entries {
|
|
85
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@media (max-width: 20rem) {
|
|
90
|
+
.entries {
|
|
91
|
+
grid-template-columns: minmax(0, 1fr);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@media (forced-colors: active) {
|
|
96
|
+
:host {
|
|
97
|
+
background: Canvas;
|
|
98
|
+
box-shadow: none;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
101
|
`;
|
|
102
102
|
//# sourceMappingURL=Controls.styles.js.map
|
package/dist/controls/Flags.js
CHANGED
|
@@ -35,27 +35,27 @@ let Flags = class Flags extends JollyField {
|
|
|
35
35
|
}
|
|
36
36
|
renderValue() {
|
|
37
37
|
const mask = this.concreteValue;
|
|
38
|
-
return html `
|
|
39
|
-
<div class="flags" role="group" aria-label=${this.label}>
|
|
40
|
-
${this.options.map((option) => this.#renderFlag(option, mask))}
|
|
41
|
-
</div>
|
|
38
|
+
return html `
|
|
39
|
+
<div class="flags" role="group" aria-label=${this.label}>
|
|
40
|
+
${this.options.map((option) => this.#renderFlag(option, mask))}
|
|
41
|
+
</div>
|
|
42
42
|
`;
|
|
43
43
|
}
|
|
44
44
|
#renderFlag(option, mask) {
|
|
45
|
-
return html `
|
|
46
|
-
<label class="flag">
|
|
47
|
-
<input
|
|
48
|
-
type="checkbox"
|
|
49
|
-
.checked=${mask === undefined ? false : hasFlag(mask, option.value)}
|
|
50
|
-
.indeterminate=${mask === undefined}
|
|
51
|
-
?disabled=${this.disabled || option.disabled === true}
|
|
52
|
-
aria-readonly=${this.readonlyAria}
|
|
53
|
-
aria-disabled=${this.lockedAria}
|
|
54
|
-
aria-description=${this.lockDescription}
|
|
55
|
-
@click=${(event) => this.#onToggle(option, event)}
|
|
56
|
-
>
|
|
57
|
-
<span>${option.label}</span>
|
|
58
|
-
</label>
|
|
45
|
+
return html `
|
|
46
|
+
<label class="flag">
|
|
47
|
+
<input
|
|
48
|
+
type="checkbox"
|
|
49
|
+
.checked=${mask === undefined ? false : hasFlag(mask, option.value)}
|
|
50
|
+
.indeterminate=${mask === undefined}
|
|
51
|
+
?disabled=${this.disabled || option.disabled === true}
|
|
52
|
+
aria-readonly=${this.readonlyAria}
|
|
53
|
+
aria-disabled=${this.lockedAria}
|
|
54
|
+
aria-description=${this.lockDescription}
|
|
55
|
+
@click=${(event) => this.#onToggle(option, event)}
|
|
56
|
+
>
|
|
57
|
+
<span>${option.label}</span>
|
|
58
|
+
</label>
|
|
59
59
|
`;
|
|
60
60
|
}
|
|
61
61
|
#onToggle(option, event) {
|
|
@@ -2,64 +2,64 @@
|
|
|
2
2
|
import { css } from "lit";
|
|
3
3
|
// Import Internal Dependencies
|
|
4
4
|
import { fillTransition } from "../theme/styles/mixins.js";
|
|
5
|
-
export const flagsStyles = css `
|
|
6
|
-
.flags {
|
|
7
|
-
display: flex;
|
|
8
|
-
flex-wrap: wrap;
|
|
9
|
-
flex: 1 1 auto;
|
|
10
|
-
gap: var(--jolly-space-1, 4px);
|
|
11
|
-
min-width: 0;
|
|
12
|
-
padding: 2px 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/*
|
|
16
|
-
* Each flag is its own filled pill, which gives the checkbox inside it
|
|
17
|
-
* somewhere to show hover and focus.
|
|
18
|
-
*/
|
|
19
|
-
.flag {
|
|
20
|
-
display: inline-flex;
|
|
21
|
-
align-items: center;
|
|
22
|
-
gap: 4px;
|
|
23
|
-
height: var(--jolly-control-height, 20px);
|
|
24
|
-
padding-inline: var(--jolly-space-1, 4px);
|
|
25
|
-
border-radius: var(--jolly-radius-sm, 2px);
|
|
26
|
-
background: var(--jolly-control-bg);
|
|
27
|
-
cursor: pointer;
|
|
28
|
-
user-select: none;
|
|
29
|
-
${fillTransition}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.flag:hover {
|
|
33
|
-
background: var(--jolly-control-bg-hover);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.flag:has(input:focus-visible) {
|
|
37
|
-
background: var(--jolly-control-bg-focus);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
:host([invalid]) .flag {
|
|
41
|
-
background: var(--jolly-invalid-bg);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
:host([readonly]) .flag {
|
|
45
|
-
background: var(--jolly-control-bg-muted);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.value input[type="checkbox"] {
|
|
49
|
-
flex: 0 0 auto;
|
|
50
|
-
width: 13px;
|
|
51
|
-
height: 13px;
|
|
52
|
-
margin: 0;
|
|
53
|
-
accent-color: var(--jolly-field-active-color);
|
|
54
|
-
cursor: inherit;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.value input[type="checkbox"]:focus-visible {
|
|
58
|
-
outline: none;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
:host([disabled]) .flag {
|
|
62
|
-
cursor: default;
|
|
63
|
-
}
|
|
5
|
+
export const flagsStyles = css `
|
|
6
|
+
.flags {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
flex: 1 1 auto;
|
|
10
|
+
gap: var(--jolly-space-1, 4px);
|
|
11
|
+
min-width: 0;
|
|
12
|
+
padding: 2px 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
* Each flag is its own filled pill, which gives the checkbox inside it
|
|
17
|
+
* somewhere to show hover and focus.
|
|
18
|
+
*/
|
|
19
|
+
.flag {
|
|
20
|
+
display: inline-flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
gap: 4px;
|
|
23
|
+
height: var(--jolly-control-height, 20px);
|
|
24
|
+
padding-inline: var(--jolly-space-1, 4px);
|
|
25
|
+
border-radius: var(--jolly-radius-sm, 2px);
|
|
26
|
+
background: var(--jolly-control-bg);
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
user-select: none;
|
|
29
|
+
${fillTransition}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.flag:hover {
|
|
33
|
+
background: var(--jolly-control-bg-hover);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.flag:has(input:focus-visible) {
|
|
37
|
+
background: var(--jolly-control-bg-focus);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
:host([invalid]) .flag {
|
|
41
|
+
background: var(--jolly-invalid-bg);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:host([readonly]) .flag {
|
|
45
|
+
background: var(--jolly-control-bg-muted);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.value input[type="checkbox"] {
|
|
49
|
+
flex: 0 0 auto;
|
|
50
|
+
width: 13px;
|
|
51
|
+
height: 13px;
|
|
52
|
+
margin: 0;
|
|
53
|
+
accent-color: var(--jolly-field-active-color);
|
|
54
|
+
cursor: inherit;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.value input[type="checkbox"]:focus-visible {
|
|
58
|
+
outline: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:host([disabled]) .flag {
|
|
62
|
+
cursor: default;
|
|
63
|
+
}
|
|
64
64
|
`;
|
|
65
65
|
//# sourceMappingURL=Flags.styles.js.map
|
package/dist/controls/Number.js
CHANGED
|
@@ -62,27 +62,27 @@ let NumberField = class NumberField extends JollyField {
|
|
|
62
62
|
return this.editable && !this.mixed;
|
|
63
63
|
}
|
|
64
64
|
renderValue() {
|
|
65
|
-
return html `
|
|
66
|
-
<div class="wrap">
|
|
67
|
-
<span class="scrub-handle" aria-hidden="true"></span>
|
|
68
|
-
<input
|
|
69
|
-
type="text"
|
|
70
|
-
inputmode="decimal"
|
|
71
|
-
.value=${this.draft ?? this.#displayed}
|
|
72
|
-
placeholder=${this.mixed ? MIXED_PLACEHOLDER : ""}
|
|
73
|
-
?disabled=${this.disabled}
|
|
74
|
-
?readonly=${this.inputReadonly}
|
|
75
|
-
?data-pointer-focus=${this.#pointerFocus.active}
|
|
76
|
-
aria-readonly=${this.readonlyAria}
|
|
77
|
-
aria-disabled=${this.lockedAria}
|
|
78
|
-
aria-description=${this.lockDescription}
|
|
79
|
-
aria-invalid=${this.displayError === null ? nothing : "true"}
|
|
80
|
-
@input=${this.onDraftInput}
|
|
81
|
-
@focus=${this.#pointerFocus.onFocus}
|
|
82
|
-
@keydown=${this.#onKeyDown}
|
|
83
|
-
@blur=${this.#onBlur}
|
|
84
|
-
>
|
|
85
|
-
</div>
|
|
65
|
+
return html `
|
|
66
|
+
<div class="wrap">
|
|
67
|
+
<span class="scrub-handle" aria-hidden="true"></span>
|
|
68
|
+
<input
|
|
69
|
+
type="text"
|
|
70
|
+
inputmode="decimal"
|
|
71
|
+
.value=${this.draft ?? this.#displayed}
|
|
72
|
+
placeholder=${this.mixed ? MIXED_PLACEHOLDER : ""}
|
|
73
|
+
?disabled=${this.disabled}
|
|
74
|
+
?readonly=${this.inputReadonly}
|
|
75
|
+
?data-pointer-focus=${this.#pointerFocus.active}
|
|
76
|
+
aria-readonly=${this.readonlyAria}
|
|
77
|
+
aria-disabled=${this.lockedAria}
|
|
78
|
+
aria-description=${this.lockDescription}
|
|
79
|
+
aria-invalid=${this.displayError === null ? nothing : "true"}
|
|
80
|
+
@input=${this.onDraftInput}
|
|
81
|
+
@focus=${this.#pointerFocus.onFocus}
|
|
82
|
+
@keydown=${this.#onKeyDown}
|
|
83
|
+
@blur=${this.#onBlur}
|
|
84
|
+
>
|
|
85
|
+
</div>
|
|
86
86
|
`;
|
|
87
87
|
}
|
|
88
88
|
get #displayed() {
|