@oscarpalmer/oui 0.36.0 → 0.38.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/dist/css/a11y.css +1 -0
- package/dist/css/badge.css +19 -15
- package/dist/css/button.css +40 -31
- package/dist/css/color-picker.css +377 -0
- package/dist/css/color.css +20 -21
- package/dist/css/combobox.css +140 -34
- package/dist/css/content.css +30 -10
- package/dist/css/floatable.css +12 -10
- package/dist/css/form.css +400 -129
- package/dist/css/listbox.css +43 -17
- package/dist/css/message.css +15 -10
- package/dist/css/mixins/badge.mixins.css +2 -0
- package/dist/css/mixins/button.mixins.css +2 -0
- package/dist/css/mixins/message.mixins.css +1 -0
- package/dist/css/mixins/misc.mixins.css +2 -0
- package/dist/css/mixins/shadow.mixins.css +1 -0
- package/dist/css/reset.css +31 -90
- package/dist/css/splitter.css +3 -3
- package/dist/css/tabs.css +103 -0
- package/dist/js/color-picker.d.mts +213 -0
- package/dist/js/color-picker.mjs +924 -0
- package/dist/js/combobox/dom.combobox.mjs +8 -4
- package/dist/js/combobox/event.combobox.mjs +1 -1
- package/dist/js/combobox/index.d.mts +1 -1
- package/dist/js/combobox/index.mjs +56 -2
- package/dist/js/combobox/misc.combobox.d.mts +1 -1
- package/dist/js/combobox/misc.combobox.mjs +1 -1
- package/dist/js/combobox/state.combobox.d.mts +1 -1
- package/dist/js/combobox/state.combobox.mjs +1 -1
- package/dist/js/dialog.mjs +2 -2
- package/dist/js/floatable/floatable.embedded.mjs +13 -10
- package/dist/js/focus-trap/focus-trap.embedded.mjs +9 -13
- package/dist/js/{index-EfkUSals.d.mts → index-DJdFlTLm.d.mts} +39 -1
- package/dist/js/index.d.mts +4 -2
- package/dist/js/index.mjs +5 -3
- package/dist/js/internal/draggable.mjs +20 -26
- package/dist/js/internal/listbox/listbox.data.mjs +1 -1
- package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
- package/dist/js/internal/listbox/listbox.event.mjs +1 -1
- package/dist/js/internal/listbox/listbox.form.mjs +17 -16
- package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
- package/dist/js/internal/listbox/listbox.state.mjs +4 -4
- package/dist/js/internal/navigable.d.mts +11 -5
- package/dist/js/internal/navigable.mjs +46 -19
- package/dist/js/listbox/event.listbox.mjs +1 -1
- package/dist/js/listbox/index.d.mts +38 -0
- package/dist/js/listbox/index.mjs +56 -2
- package/dist/js/listbox/misc.listbox.mjs +1 -1
- package/dist/js/listbox/state.listbox.mjs +1 -1
- package/dist/js/{listbox.data-BWd0PCy7.mjs → listbox.data-C7CRa5Ya.mjs} +5 -4
- package/dist/js/menu.mjs +1 -1
- package/dist/js/{misc.listbox-BI-XsTOf.mjs → misc.listbox-Cyz2CRDy.mjs} +2 -3
- package/dist/js/movable/movable.embedded.mjs +5 -8
- package/dist/js/popover.mjs +2 -2
- package/dist/js/resizable/resizable.embedded.mjs +21 -31
- package/dist/js/sortable/sortable.embedded.mjs +4 -4
- package/dist/js/splitter.mjs +20 -17
- package/dist/js/{state.combobox-4xq0FPCF.mjs → state.combobox-Qm3FWzYW.mjs} +3 -3
- package/dist/js/tabs.d.mts +25 -0
- package/dist/js/tabs.mjs +237 -0
- package/dist/js/tooltip.mjs +16 -15
- package/package.json +7 -5
- package/src/css/a11y.scss +2 -2
- package/src/css/badge.scss +8 -20
- package/src/css/button.scss +8 -47
- package/src/css/color-picker.scss +344 -0
- package/src/css/color.scss +20 -22
- package/src/css/combobox.scss +29 -57
- package/src/css/content.scss +34 -6
- package/src/css/floatable.scss +22 -19
- package/src/css/form.scss +94 -80
- package/src/css/listbox.scss +6 -34
- package/src/css/message.scss +16 -30
- package/src/css/mixins/badge.mixins.scss +53 -0
- package/src/css/mixins/button.mixins.scss +112 -0
- package/src/css/mixins/input.mixins.scss +114 -0
- package/src/css/mixins/message.mixins.scss +41 -0
- package/src/css/mixins/misc.mixins.scss +48 -0
- package/src/css/mixins/shadow.mixins.scss +57 -0
- package/src/css/reset.scss +39 -88
- package/src/css/splitter.scss +3 -3
- package/src/css/tabs.scss +74 -0
- package/src/js/color-picker.ts +1653 -0
- package/src/js/combobox/dom.combobox.ts +4 -0
- package/src/js/combobox/index.ts +63 -1
- package/src/js/dialog.ts +1 -1
- package/src/js/floatable/floatable.embedded.ts +18 -14
- package/src/js/focus-trap/focus-trap.embedded.ts +11 -19
- package/src/js/index.ts +2 -0
- package/src/js/internal/draggable.ts +29 -33
- package/src/js/internal/listbox/listbox.dom.ts +2 -1
- package/src/js/internal/listbox/listbox.form.ts +32 -22
- package/src/js/internal/listbox/listbox.state.ts +3 -3
- package/src/js/internal/navigable.ts +82 -23
- package/src/js/listbox/index.ts +62 -0
- package/src/js/listbox/state.listbox.ts +0 -2
- package/src/js/movable/movable.embedded.ts +11 -13
- package/src/js/popover.ts +1 -1
- package/src/js/resizable/resizable.embedded.ts +25 -39
- package/src/js/splitter.ts +21 -18
- package/src/js/tabs.ts +441 -0
- package/src/js/tooltip.ts +20 -17
- package/src/css/mixins.scss +0 -194
- /package/dist/css/{mixins.css → mixins/input.mixins.css} +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/*! https://github.com/oscarpalmer/oui */
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
:where(oui-tabs) {
|
|
5
|
+
display: flex;
|
|
6
|
+
}
|
|
7
|
+
:where(oui-tabs:not([orientation=horizontal i])) {
|
|
8
|
+
flex-flow: column nowrap;
|
|
9
|
+
}
|
|
10
|
+
:where(oui-tabs[orientation=vertical i]) {
|
|
11
|
+
flex-flow: row nowrap;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:where([oui-tabs-content]) {
|
|
15
|
+
padding: 1em;
|
|
16
|
+
flex: 1;
|
|
17
|
+
background-color: var(--oui-absolute);
|
|
18
|
+
border: 1px solid var(--oui-gray-3);
|
|
19
|
+
position: relative;
|
|
20
|
+
z-index: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:where([oui-tabs-tab]) {
|
|
24
|
+
--oui-background-percentage: 25%;
|
|
25
|
+
--oui-background-value: var(--oui-gray-2);
|
|
26
|
+
--oui-foreground-percentage: 0%;
|
|
27
|
+
--oui-foreground-value: var(--oui-gray-8);
|
|
28
|
+
--oui-outline-percentage: 100%;
|
|
29
|
+
--oui-outline-value: var(--oui-gray-6);
|
|
30
|
+
--oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
|
|
31
|
+
--oui-shadow-percentage: 82.5%;
|
|
32
|
+
--oui-shadow-value: color-mix(
|
|
33
|
+
in oklab,
|
|
34
|
+
var(--oui-outline-value),
|
|
35
|
+
transparent var(--oui-shadow-percentage)
|
|
36
|
+
);
|
|
37
|
+
box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value), 0 4px 8px -2px var(--oui-shadow-value);
|
|
38
|
+
padding: 0.5em 0.75em;
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
flex-flow: row wrap;
|
|
41
|
+
gap: 0.75em;
|
|
42
|
+
align-items: center;
|
|
43
|
+
border-radius: 0.25em;
|
|
44
|
+
background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
|
|
45
|
+
outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
|
|
46
|
+
border: none;
|
|
47
|
+
color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
|
|
48
|
+
line-height: 1.25;
|
|
49
|
+
transition: 0.125s ease-in-out;
|
|
50
|
+
transition-property: background, outline, box-shadow, color;
|
|
51
|
+
}
|
|
52
|
+
:where([oui-tabs-tab]):focus-visible {
|
|
53
|
+
--oui-outline-percentage: 75%;
|
|
54
|
+
}
|
|
55
|
+
@media (hover: hover) {
|
|
56
|
+
:where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):hover {
|
|
57
|
+
--oui-background-percentage: 50%;
|
|
58
|
+
--oui-foreground-percentage: 25%;
|
|
59
|
+
--oui-shadow-percentage: 90%;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
:where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):active {
|
|
63
|
+
box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px 0 var(--oui-shadow-value), inset 0 2px 4px 0 var(--oui-shadow-value);
|
|
64
|
+
scale: 0.95;
|
|
65
|
+
}
|
|
66
|
+
:where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):active[aria-pressed=true i], :where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):active[aria-selected=true i] {
|
|
67
|
+
scale: 1;
|
|
68
|
+
}
|
|
69
|
+
:where([oui-tabs-tab])[disabled], :where([oui-tabs-tab])[aria-disabled=true i] {
|
|
70
|
+
--oui-background-percentage: 80%;
|
|
71
|
+
--oui-foreground-percentage: 25%;
|
|
72
|
+
--oui-shadow-percentage: 92.5%;
|
|
73
|
+
font-style: italic;
|
|
74
|
+
}
|
|
75
|
+
:where([oui-tabs-tab]) {
|
|
76
|
+
font-size: 0.75rem;
|
|
77
|
+
flex-shrink: 0;
|
|
78
|
+
align-self: flex-end;
|
|
79
|
+
}
|
|
80
|
+
:where([oui-tabs-tab][aria-selected=true i]) {
|
|
81
|
+
--oui-background-percentage: 80%;
|
|
82
|
+
box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px -0.5px var(--oui-shadow-value), inset 0 2px 4px -1px var(--oui-shadow-value);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:where([oui-tabs-tablist]) {
|
|
86
|
+
display: flex;
|
|
87
|
+
gap: 0.5em;
|
|
88
|
+
position: relative;
|
|
89
|
+
z-index: 0;
|
|
90
|
+
}
|
|
91
|
+
:where([oui-tabs-tablist]:focus-within) {
|
|
92
|
+
z-index: 1;
|
|
93
|
+
}
|
|
94
|
+
:where([oui-tabs-tablist][aria-orientation=horizontal i]) {
|
|
95
|
+
margin: 0 0 0.5em;
|
|
96
|
+
flex-flow: row wrap;
|
|
97
|
+
}
|
|
98
|
+
:where([oui-tabs-tablist][aria-orientation=vertical i]) {
|
|
99
|
+
margin: 0 0.5em 0 0;
|
|
100
|
+
flex-flow: column wrap;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Color, HSLAColor, HSLColor, HWBAColor, HWBColor, RGBAColor, RGBColor } from "@oscarpalmer/atoms/color";
|
|
2
|
+
//#region src/js/color-picker.d.ts
|
|
3
|
+
declare global {
|
|
4
|
+
interface HTMLElementTagNameMap {
|
|
5
|
+
[TAGNAME]: OuiColorPickerElement;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
declare class OuiColorPickerElement extends HTMLElement {
|
|
9
|
+
#private;
|
|
10
|
+
static formAssociated: boolean;
|
|
11
|
+
static observedAttributes: string[];
|
|
12
|
+
/**
|
|
13
|
+
* Is the color picker disabled?
|
|
14
|
+
*/
|
|
15
|
+
get disabled(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Should the color picker be disabled?
|
|
18
|
+
*/
|
|
19
|
+
set disabled(value: boolean);
|
|
20
|
+
/**
|
|
21
|
+
* Form element associated with the color picker
|
|
22
|
+
*/
|
|
23
|
+
get form(): HTMLFormElement | null;
|
|
24
|
+
/**
|
|
25
|
+
* Color value as hexadecimal string
|
|
26
|
+
*/
|
|
27
|
+
get hex(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Set color value from a hexadecimal string
|
|
30
|
+
*/
|
|
31
|
+
set hex(value: string);
|
|
32
|
+
/**
|
|
33
|
+
* Color value as hexadecimal string with alpha channel
|
|
34
|
+
*/
|
|
35
|
+
get hexa(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Set color value from a hexadecimal string with alpha channel
|
|
38
|
+
*/
|
|
39
|
+
set hexa(value: string);
|
|
40
|
+
/**
|
|
41
|
+
* Color value as an _HSL_ color object
|
|
42
|
+
*/
|
|
43
|
+
get hsl(): HSLColor;
|
|
44
|
+
/**
|
|
45
|
+
* Set color value from an _HSL_ color object
|
|
46
|
+
*/
|
|
47
|
+
set hsl(value: HSLColor);
|
|
48
|
+
/**
|
|
49
|
+
* Color value as an _HSLA_ color object _(HSL with alpha channel)_
|
|
50
|
+
*/
|
|
51
|
+
get hsla(): HSLAColor;
|
|
52
|
+
/**
|
|
53
|
+
* Set color value from an _HSLA_ color object _(HSL with alpha channel)_
|
|
54
|
+
*/
|
|
55
|
+
set hsla(value: HSLAColor);
|
|
56
|
+
/**
|
|
57
|
+
* Color value as an _HWB_ color object
|
|
58
|
+
*/
|
|
59
|
+
get hwb(): HWBColor;
|
|
60
|
+
/**
|
|
61
|
+
* Set color value from an _HWB_ color object
|
|
62
|
+
*/
|
|
63
|
+
set hwb(value: HWBColor);
|
|
64
|
+
/**
|
|
65
|
+
* Color value as an _HWBA_ color object _(HWB with alpha channel)_
|
|
66
|
+
*/
|
|
67
|
+
get hwba(): HWBAColor;
|
|
68
|
+
/**
|
|
69
|
+
* Set color value from an _HWBA_ color object _(HWB with alpha channel)_
|
|
70
|
+
*/
|
|
71
|
+
set hwba(value: HWBAColor);
|
|
72
|
+
/**
|
|
73
|
+
* Text input value
|
|
74
|
+
*/
|
|
75
|
+
get input(): string;
|
|
76
|
+
/**
|
|
77
|
+
* Label elements associated with the color picker
|
|
78
|
+
*/
|
|
79
|
+
get labels(): NodeList;
|
|
80
|
+
/**
|
|
81
|
+
* Is the color picker readonly?
|
|
82
|
+
*/
|
|
83
|
+
get readonly(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Should the color picker be readonly?
|
|
86
|
+
*/
|
|
87
|
+
set readonly(value: boolean);
|
|
88
|
+
/**
|
|
89
|
+
* Is the color picker required?
|
|
90
|
+
*/
|
|
91
|
+
get required(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Should the color picker be required?
|
|
94
|
+
*/
|
|
95
|
+
set required(value: boolean);
|
|
96
|
+
/**
|
|
97
|
+
* Color value as an _RGB_ color object
|
|
98
|
+
*/
|
|
99
|
+
get rgb(): RGBColor;
|
|
100
|
+
/**
|
|
101
|
+
* Set color value from an _RGB_ color object
|
|
102
|
+
*/
|
|
103
|
+
set rgb(value: RGBColor);
|
|
104
|
+
/**
|
|
105
|
+
* Color value as an _RGBA_ color object _(RGB with alpha channel)_
|
|
106
|
+
*/
|
|
107
|
+
get rgba(): RGBAColor;
|
|
108
|
+
/**
|
|
109
|
+
* Set color value from an _RGBA_ color object _(RGB with alpha channel)_
|
|
110
|
+
*/
|
|
111
|
+
set rgba(value: RGBAColor);
|
|
112
|
+
/**
|
|
113
|
+
* Validation message for the color picker
|
|
114
|
+
*/
|
|
115
|
+
get validationMessage(): string;
|
|
116
|
+
/**
|
|
117
|
+
* Validity state for the color picker
|
|
118
|
+
*/
|
|
119
|
+
get validity(): ValidityState;
|
|
120
|
+
/**
|
|
121
|
+
* Current color value
|
|
122
|
+
*/
|
|
123
|
+
get value(): string;
|
|
124
|
+
/**
|
|
125
|
+
* Set color value from a string, _HSL(A)_, _HWB(A)_, or _RGB(A)_ color object
|
|
126
|
+
*/
|
|
127
|
+
set value(value: string | HSLColor | HSLAColor | HWBColor | HWBAColor | RGBColor | RGBAColor);
|
|
128
|
+
/**
|
|
129
|
+
* Can the color picker be validated?
|
|
130
|
+
*/
|
|
131
|
+
get willValidate(): boolean;
|
|
132
|
+
constructor();
|
|
133
|
+
attributeChangedCallback(name: string, _: string | null, value: string | null): void;
|
|
134
|
+
/**
|
|
135
|
+
* Check if the color picker is valid
|
|
136
|
+
*
|
|
137
|
+
* @returns `true` if the color picker is valid, otherwise `false`
|
|
138
|
+
*/
|
|
139
|
+
checkValidity(): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Clear the color picker's value
|
|
142
|
+
*/
|
|
143
|
+
clear(): void;
|
|
144
|
+
connectedCallback(): void;
|
|
145
|
+
disconnectedCallback(): void;
|
|
146
|
+
formDisabledCallback(disabled: boolean): void;
|
|
147
|
+
formResetCallback(): void;
|
|
148
|
+
formStateRestoreCallback(state: unknown, reason: unknown): void;
|
|
149
|
+
/**
|
|
150
|
+
* Check if the color picker is valid and report any validation errors
|
|
151
|
+
*
|
|
152
|
+
* @returns `true` if the color picker is valid, otherwise `false`
|
|
153
|
+
*/
|
|
154
|
+
reportValidity(): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Set a custom validation message for the color picker
|
|
157
|
+
*
|
|
158
|
+
* @param message Validation message
|
|
159
|
+
*/
|
|
160
|
+
setCustomValidity(message: string): void;
|
|
161
|
+
/**
|
|
162
|
+
* Set localizations for a specific language
|
|
163
|
+
*
|
|
164
|
+
* @param language Language code
|
|
165
|
+
* @param localizations Localizations for language
|
|
166
|
+
*/
|
|
167
|
+
setLocalizations(language: string, localizations: Partial<OuiColorPickerLocalizations>): void;
|
|
168
|
+
/**
|
|
169
|
+
* Set localizations for one or more languages
|
|
170
|
+
*
|
|
171
|
+
* @param localizations Localizations for one or more languages
|
|
172
|
+
*/
|
|
173
|
+
setLocalizations(localizations: Record<string, Partial<OuiColorPickerLocalizations>>): void;
|
|
174
|
+
}
|
|
175
|
+
declare class OuiColorPickerEvent extends Event {
|
|
176
|
+
readonly valid: boolean;
|
|
177
|
+
readonly value: OuiColorPickerEventValue;
|
|
178
|
+
constructor(type: 'oui:change' | 'oui:input', color: Color, valid: boolean);
|
|
179
|
+
}
|
|
180
|
+
type OuiColorPickerEventValue = {
|
|
181
|
+
hex: string;
|
|
182
|
+
hexa: string;
|
|
183
|
+
hsl: HSLColor;
|
|
184
|
+
hsla: HSLAColor;
|
|
185
|
+
hwb: HWBColor;
|
|
186
|
+
hwba: HWBAColor;
|
|
187
|
+
rgb: RGBColor;
|
|
188
|
+
rgba: RGBAColor;
|
|
189
|
+
};
|
|
190
|
+
type OuiColorPickerLocalizations = {
|
|
191
|
+
hue: string;
|
|
192
|
+
invalid: string;
|
|
193
|
+
lightnessSaturationLabel: string;
|
|
194
|
+
lightnessSaturationValue: string | ((lightness: number, saturation: number) => string);
|
|
195
|
+
opacity: string;
|
|
196
|
+
toggle: string;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Set localizations for a specific language
|
|
200
|
+
*
|
|
201
|
+
* @param language Language code
|
|
202
|
+
* @param localizations Localizations for language
|
|
203
|
+
*/
|
|
204
|
+
declare function setColorPickerLocalizations(language: string, localizations: Partial<OuiColorPickerLocalizations>): void;
|
|
205
|
+
/**
|
|
206
|
+
* Set localizations for one or more languages
|
|
207
|
+
*
|
|
208
|
+
* @param localizations Localizations for one or more languages
|
|
209
|
+
*/
|
|
210
|
+
declare function setColorPickerLocalizations(localizations: Record<string, Partial<OuiColorPickerLocalizations>>): void;
|
|
211
|
+
declare const TAGNAME = "oui-color-picker";
|
|
212
|
+
//#endregion
|
|
213
|
+
export { OuiColorPickerElement, OuiColorPickerEvent, setColorPickerLocalizations };
|