@descope/web-components-ui 1.0.114 → 1.0.116
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/index.cjs.js +1299 -1305
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.esm.js +1384 -1390
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/201.js +1 -0
- package/dist/umd/241.js +1 -1
- package/dist/umd/447.js +1 -1
- package/dist/umd/65.js +1 -1
- package/dist/umd/803.js +1 -1
- package/dist/umd/boolean-fields-descope-checkbox-index-js.js +1 -1
- package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js +1 -1
- package/dist/umd/descope-button-index-js.js +1 -1
- package/dist/umd/descope-combo-box-index-js.js +1 -1
- package/dist/umd/descope-container-index-js.js +1 -1
- package/dist/umd/descope-divider-index-js.js +1 -1
- package/dist/umd/descope-email-field-index-js.js +1 -1
- package/dist/umd/descope-link-index-js.js +1 -1
- package/dist/umd/descope-loader-linear-index-js.js +1 -1
- package/dist/umd/descope-loader-radial-index-js.js +1 -1
- package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -1
- package/dist/umd/descope-number-field-index-js.js +1 -1
- package/dist/umd/descope-passcode-index-js.js +1 -1
- package/dist/umd/descope-phone-field-index-js.js +1 -1
- package/dist/umd/descope-text-area-index-js.js +1 -1
- package/dist/umd/descope-text-field-index-js.js +1 -1
- package/dist/umd/descope-text-index-js.js +1 -1
- package/dist/umd/index.js +1 -1
- package/package.json +1 -1
- package/src/components/boolean-fields/commonStyles.js +13 -5
- package/src/components/boolean-fields/descope-checkbox/CheckboxClass.js +40 -37
- package/src/components/boolean-fields/descope-switch-toggle/SwitchToggleClass.js +43 -37
- package/src/components/descope-button/ButtonClass.js +22 -6
- package/src/components/descope-combo-box/ComboBoxClass.js +49 -36
- package/src/components/descope-container/ContainerClass.js +4 -4
- package/src/components/descope-divider/DividerClass.js +74 -55
- package/src/components/descope-email-field/EmailFieldClass.js +11 -47
- package/src/components/descope-link/LinkClass.js +8 -5
- package/src/components/descope-loader-linear/LoaderLinearClass.js +16 -12
- package/src/components/descope-loader-radial/LoaderRadialClass.js +12 -11
- package/src/components/descope-new-password/NewPasswordClass.js +65 -51
- package/src/components/descope-new-password/descope-new-password-internal/NewPasswordInternal.js +1 -1
- package/src/components/descope-number-field/NumberFieldClass.js +11 -43
- package/src/components/descope-passcode/PasscodeClass.js +36 -29
- package/src/components/descope-password-field/PasswordFieldClass.js +52 -41
- package/src/components/descope-phone-field/PhoneFieldClass.js +61 -41
- package/src/components/descope-text/TextClass.js +8 -8
- package/src/components/descope-text-area/TextAreaClass.js +50 -48
- package/src/components/descope-text-field/TextFieldClass.js +11 -53
- package/src/components/descope-text-field/textFieldMappings.js +66 -38
- package/src/helpers/themeHelpers/index.js +10 -8
- package/src/helpers/themeHelpers/resetHelpers.js +76 -0
- package/src/index.d.ts +2 -1
- package/src/mixins/createStyleMixin/index.js +38 -27
- package/src/mixins/inputValidationMixin.js +4 -1
- package/src/mixins/proxyInputMixin.js +11 -3
- package/src/theme/components/button.js +31 -16
- package/src/theme/components/checkbox.js +18 -47
- package/src/theme/components/comboBox.js +24 -36
- package/src/theme/components/container.js +34 -47
- package/src/theme/components/divider.js +31 -20
- package/src/theme/components/emailField.js +21 -3
- package/src/theme/components/image.js +1 -1
- package/src/theme/components/index.js +4 -3
- package/src/theme/components/inputWrapper.js +72 -0
- package/src/theme/components/link.js +15 -22
- package/src/theme/components/loader/loaderLinear.js +19 -24
- package/src/theme/components/loader/loaderRadial.js +32 -47
- package/src/theme/components/logo.js +1 -1
- package/src/theme/components/newPassword.js +11 -26
- package/src/theme/components/numberField.js +21 -3
- package/src/theme/components/passcode.js +17 -28
- package/src/theme/components/passwordField.js +19 -65
- package/src/theme/components/phoneField.js +18 -57
- package/src/theme/components/switchToggle.js +20 -34
- package/src/theme/components/text.js +14 -9
- package/src/theme/components/textArea.js +20 -37
- package/src/theme/components/textField.js +21 -68
@@ -10,6 +10,7 @@ import {
|
|
10
10
|
import { TextFieldClass } from '../descope-text-field/TextFieldClass';
|
11
11
|
import { ComboBoxClass } from '../descope-combo-box/ComboBoxClass';
|
12
12
|
import CountryCodes from './CountryCodes';
|
13
|
+
import { resetInputCursor, resetInputFieldDefaultWidth } from '../../helpers/themeHelpers/resetHelpers';
|
13
14
|
|
14
15
|
const textVars = TextFieldClass.cssVarList;
|
15
16
|
const comboVars = ComboBoxClass.cssVarList;
|
@@ -59,27 +60,32 @@ const customMixin = (superclass) =>
|
|
59
60
|
|
60
61
|
const {
|
61
62
|
host,
|
62
|
-
inputWrapper,
|
63
|
-
countryCodeInput,
|
64
|
-
phoneInput,
|
65
63
|
label,
|
66
64
|
requiredIndicator,
|
67
|
-
|
65
|
+
inputField,
|
66
|
+
countryCodeInput,
|
67
|
+
phoneInput,
|
68
|
+
separator,
|
69
|
+
errorMessage,
|
70
|
+
helperText
|
68
71
|
} = {
|
69
72
|
host: { selector: () => ':host' },
|
70
|
-
inputWrapper: { selector: '::part(input-field)' },
|
71
|
-
phoneInput: { selector: () => 'descope-text-field' },
|
72
|
-
countryCodeInput: { selector: () => 'descope-combo-box' },
|
73
73
|
label: { selector: '::part(label)' },
|
74
74
|
requiredIndicator: { selector: '[required]::part(required-indicator)::after' },
|
75
|
-
|
75
|
+
inputField: { selector: '::part(input-field)' },
|
76
|
+
phoneInput: { selector: () => 'descope-text-field' },
|
77
|
+
countryCodeInput: { selector: () => 'descope-combo-box' },
|
78
|
+
separator: { selector: 'descope-phone-field-internal .separator' },
|
79
|
+
helperText: { selector: '::part(helper-text)' },
|
80
|
+
errorMessage: { selector: '::part(error-message)' }
|
76
81
|
};
|
77
82
|
|
78
83
|
export const PhoneFieldClass = compose(
|
79
84
|
createStyleMixin({
|
80
85
|
mappings: {
|
81
86
|
fontSize: [
|
82
|
-
host,
|
87
|
+
{ ...host, property: 'font-size' },
|
88
|
+
{ ...inputField, property: 'font-size' },
|
83
89
|
{
|
84
90
|
selector: TextFieldClass.componentName,
|
85
91
|
property: TextFieldClass.cssVarList.fontSize
|
@@ -89,53 +95,62 @@ export const PhoneFieldClass = compose(
|
|
89
95
|
property: ComboBoxClass.cssVarList.fontSize
|
90
96
|
}
|
91
97
|
],
|
98
|
+
fontFamily: [
|
99
|
+
label,
|
100
|
+
errorMessage,
|
101
|
+
helperText
|
102
|
+
],
|
103
|
+
hostWidth: [
|
104
|
+
{ ...host, property: 'width' },
|
105
|
+
{ ...phoneInput, property: 'width' },
|
106
|
+
{ ...countryCodeInput, property: '--vaadin-combo-box-overlay-width' }
|
107
|
+
],
|
92
108
|
|
93
|
-
|
94
|
-
|
95
|
-
wrapperBorderStyle: [
|
96
|
-
{ ...inputWrapper, property: 'border-style' },
|
109
|
+
inputBorderStyle: [
|
110
|
+
{ ...inputField, property: 'border-style' },
|
97
111
|
{ ...separator, property: 'border-left-style' }
|
98
112
|
],
|
99
|
-
|
100
|
-
{ ...
|
113
|
+
inputBorderWidth: [
|
114
|
+
{ ...inputField, property: 'border-width' },
|
101
115
|
{ ...separator, property: 'border-left-width' }
|
102
116
|
],
|
103
|
-
|
104
|
-
{ ...
|
117
|
+
inputBorderColor: [
|
118
|
+
{ ...inputField, property: 'border-color' },
|
105
119
|
{ ...separator, property: 'border-left-color' }
|
106
120
|
],
|
107
|
-
|
121
|
+
inputBorderRadius: { ...inputField, property: 'border-radius' },
|
108
122
|
|
109
|
-
inputHeight: { ...
|
123
|
+
inputHeight: { ...inputField, property: 'height' },
|
110
124
|
|
111
|
-
countryCodeInputWidth: { ...countryCodeInput, property: comboVars.
|
125
|
+
countryCodeInputWidth: { ...countryCodeInput, property: comboVars.hostWidth },
|
112
126
|
countryCodeDropdownWidth: {
|
113
127
|
...countryCodeInput,
|
114
128
|
property: '--vaadin-combo-box-overlay-width'
|
115
129
|
},
|
116
|
-
|
117
130
|
phoneInputWidth: { ...phoneInput, property: 'width' },
|
118
131
|
|
119
|
-
|
120
|
-
label,
|
121
|
-
requiredIndicator,
|
122
|
-
{ ...phoneInput, property: textVars.color },
|
123
|
-
{ ...countryCodeInput, property: comboVars.color }
|
132
|
+
labelTextColor: [
|
133
|
+
{ ...label, property: 'color' },
|
134
|
+
{ ...requiredIndicator, property: 'color' },
|
124
135
|
],
|
136
|
+
labelRequiredIndicator: { ...requiredIndicator, property: 'content' },
|
125
137
|
|
126
|
-
|
127
|
-
...phoneInput,
|
128
|
-
property:
|
129
|
-
|
138
|
+
inputValueTextColor: [
|
139
|
+
{ ...phoneInput, property: textVars.inputValueTextColor },
|
140
|
+
{ ...countryCodeInput, property: comboVars.inputValueTextColor }
|
141
|
+
],
|
142
|
+
|
143
|
+
inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },
|
130
144
|
|
131
145
|
overlayItemBackgroundColor: {
|
132
146
|
selector: 'descope-combo-box',
|
133
147
|
property: comboVars.overlayItemBackgroundColor
|
134
148
|
},
|
135
149
|
|
136
|
-
|
137
|
-
|
138
|
-
|
150
|
+
inputOutlineStyle: { ...inputField, property: 'outline-style' },
|
151
|
+
inputOutlineColor: { ...inputField, property: 'outline-color' },
|
152
|
+
inputOutlineWidth: { ...inputField, property: 'outline-width' },
|
153
|
+
inputOutlineOffset: { ...inputField, property: 'outline-offset' },
|
139
154
|
},
|
140
155
|
}),
|
141
156
|
draggableMixin,
|
@@ -147,10 +162,11 @@ export const PhoneFieldClass = compose(
|
|
147
162
|
wrappedEleName: 'vaadin-text-field',
|
148
163
|
style: () => `
|
149
164
|
:host {
|
150
|
-
--vaadin-field-default-width: auto;
|
151
165
|
display: inline-block;
|
152
166
|
max-width: 100%;
|
153
167
|
min-width: 15em;
|
168
|
+
box-sizing: border-box;
|
169
|
+
padding: calc(var(${PhoneFieldClass.cssVarList.inputOutlineWidth}) + var(${PhoneFieldClass.cssVarList.inputOutlineOffset}))
|
154
170
|
}
|
155
171
|
div {
|
156
172
|
display: inline-flex;
|
@@ -159,6 +175,7 @@ export const PhoneFieldClass = compose(
|
|
159
175
|
width: 100%;
|
160
176
|
height: 100%;
|
161
177
|
box-sizing: border-box;
|
178
|
+
padding: 0;
|
162
179
|
}
|
163
180
|
vaadin-text-field[focus-ring]::part(input-field) {
|
164
181
|
box-shadow: none;
|
@@ -190,18 +207,18 @@ export const PhoneFieldClass = compose(
|
|
190
207
|
descope-combo-box {
|
191
208
|
flex-shrink: 0;
|
192
209
|
height: 100%;
|
193
|
-
${comboVars.
|
210
|
+
${comboVars.inputOutlineWidth}: 0;
|
211
|
+
${comboVars.inputOutlineOffset}: 0;
|
212
|
+
${comboVars.inputBorderWidth}: 0;
|
213
|
+
${comboVars.inputBorderRadius}: 0;
|
194
214
|
}
|
195
215
|
descope-text-field {
|
196
216
|
flex-grow: 1;
|
197
217
|
min-height: 0;
|
198
218
|
height: 100%;
|
199
|
-
${textVars.
|
200
|
-
${textVars.
|
201
|
-
${textVars.
|
202
|
-
}
|
203
|
-
vaadin-text-field[required]::part(required-indicator)::after {
|
204
|
-
content: "*";
|
219
|
+
${textVars.inputOutlineWidth}: 0;
|
220
|
+
${textVars.inputBorderWidth}: 0;
|
221
|
+
${textVars.inputBorderRadius}: 0;
|
205
222
|
}
|
206
223
|
vaadin-text-field[readonly] > input:placeholder-shown {
|
207
224
|
opacity: 1;
|
@@ -209,6 +226,9 @@ export const PhoneFieldClass = compose(
|
|
209
226
|
vaadin-text-field::part(input-field)::after {
|
210
227
|
border: none;
|
211
228
|
}
|
229
|
+
|
230
|
+
${resetInputFieldDefaultWidth()}
|
231
|
+
${resetInputCursor('vaadin-text-field')}
|
212
232
|
`,
|
213
233
|
excludeAttrsSync: ['tabindex'],
|
214
234
|
componentName
|
@@ -31,20 +31,20 @@ class RawText extends createBaseClass({ componentName, baseSelector: ':host > sl
|
|
31
31
|
export const TextClass = compose(
|
32
32
|
createStyleMixin({
|
33
33
|
mappings: {
|
34
|
+
hostWidth: { selector: () => ':host', property: 'width' },
|
35
|
+
fontSize: { property: 'font-size' },
|
36
|
+
textColor: { property: 'color' },
|
37
|
+
textLineHeight: { property: 'line-height' },
|
38
|
+
textLetterSpacing: { property: 'letter-spacing' },
|
39
|
+
textShadow: {},
|
40
|
+
textAlign: {},
|
41
|
+
textTransform: {},
|
34
42
|
fontFamily: {},
|
35
|
-
lineHeight: {},
|
36
43
|
fontStyle: {},
|
37
|
-
fontSize: {},
|
38
44
|
fontWeight: {},
|
39
|
-
width: { selector: () => ':host' },
|
40
|
-
color: {},
|
41
|
-
letterSpacing: {},
|
42
|
-
textShadow: {},
|
43
45
|
borderWidth: {},
|
44
46
|
borderStyle: {},
|
45
47
|
borderColor: {},
|
46
|
-
textTransform: {},
|
47
|
-
textAlign: {},
|
48
48
|
},
|
49
49
|
}),
|
50
50
|
draggableMixin,
|
@@ -7,49 +7,61 @@ import {
|
|
7
7
|
} from '../../mixins';
|
8
8
|
import { compose } from '../../helpers';
|
9
9
|
import { getComponentName } from '../../helpers/componentHelpers';
|
10
|
+
import { resetInputContainer, resetInputCursor, resetInputField, resetInputPlaceholder } from '../../helpers/themeHelpers/resetHelpers';
|
10
11
|
|
11
12
|
export const componentName = getComponentName('text-area');
|
12
13
|
|
13
14
|
const {
|
14
15
|
host,
|
16
|
+
label,
|
15
17
|
placeholder,
|
16
|
-
|
18
|
+
inputField,
|
17
19
|
textArea,
|
18
|
-
|
19
|
-
|
20
|
+
requiredIndicator,
|
21
|
+
helperText,
|
22
|
+
errorMessage
|
20
23
|
} = {
|
21
24
|
host: { selector: () => ':host' },
|
22
|
-
textArea: { selector: '> textarea' },
|
23
25
|
label: { selector: '::part(label)' },
|
24
|
-
input: { selector: '::part(input-field)' },
|
25
26
|
placeholder: { selector: 'textarea:placeholder-shown' },
|
26
|
-
|
27
|
+
inputField: { selector: '::part(input-field)' },
|
28
|
+
textArea: { selector: '> textarea' },
|
29
|
+
requiredIndicator: { selector: '[required]::part(required-indicator)::after' },
|
30
|
+
helperText: { selector: '::part(helper-text)' },
|
31
|
+
errorMessage: { selector: '::part(error-message)' }
|
27
32
|
};
|
28
33
|
|
29
|
-
let overrides = ``;
|
30
|
-
|
31
34
|
export const TextAreaClass = compose(
|
32
35
|
createStyleMixin({
|
33
36
|
mappings: {
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
hostWidth: { ...host, property: 'width' },
|
38
|
+
fontSize: [
|
39
|
+
{ ...host, property: 'font-size' },
|
40
|
+
{ ...textArea, property: 'font-size' }
|
41
|
+
],
|
42
|
+
fontFamily: [
|
43
|
+
{ ...label, property: 'font-family' },
|
44
|
+
{ ...inputField, property: 'font-family' },
|
45
|
+
{ ...helperText, property: 'font-family' },
|
46
|
+
{ ...errorMessage, property: 'font-family' }
|
47
|
+
],
|
48
|
+
labelTextColor: [
|
39
49
|
{ ...label, property: 'color' },
|
40
50
|
{ ...requiredIndicator, property: 'color' }
|
41
51
|
],
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
labelRequiredIndicator: { ...requiredIndicator, property: 'content' },
|
53
|
+
inputBackgroundColor: { ...inputField, property: 'background-color' },
|
54
|
+
inputValueTextColor: { ...textArea, property: 'color' },
|
55
|
+
inputPlaceholderTextColor: { ...placeholder, property: 'color' },
|
56
|
+
inputBorderWidth: { ...inputField, property: 'border-width' },
|
57
|
+
inputBorderStyle: { ...inputField, property: 'border-style' },
|
58
|
+
inputBorderColor: { ...inputField, property: 'border-color' },
|
59
|
+
inputBorderRadius: { ...inputField, property: 'border-radius' },
|
60
|
+
inputOutlineStyle: { ...inputField, property: 'outline-Style' },
|
61
|
+
inputOutlineColor: { ...inputField, property: 'outline-color' },
|
62
|
+
inputOutlineOffset: { ...inputField, property: 'outline-offset' },
|
63
|
+
inputOutlineWidth: { ...inputField, property: 'outline-width' },
|
64
|
+
inputResizeType: { ...textArea, property: 'resize' },
|
53
65
|
}
|
54
66
|
}),
|
55
67
|
draggableMixin,
|
@@ -59,32 +71,22 @@ export const TextAreaClass = compose(
|
|
59
71
|
createProxy({
|
60
72
|
slots: [],
|
61
73
|
wrappedEleName: 'vaadin-text-area',
|
62
|
-
style: () =>
|
74
|
+
style: () => `
|
75
|
+
:host {
|
76
|
+
display: inline-block;
|
77
|
+
min-width: 10em;
|
78
|
+
max-width: 100%;
|
79
|
+
padding: calc(var(${TextAreaClass.cssVarList.inputOutlineWidth}) + var(${TextAreaClass.cssVarList.inputOutlineOffset}));
|
80
|
+
}
|
81
|
+
|
82
|
+
${resetInputContainer('vaadin-text-area')}
|
83
|
+
${resetInputField('vaadin-text-area')}
|
84
|
+
${resetInputPlaceholder('vaadin-text-area', 'textarea')}
|
85
|
+
${resetInputCursor('vaadin-text-area')}
|
86
|
+
`,
|
63
87
|
excludeAttrsSync: ['tabindex'],
|
64
88
|
componentName
|
65
89
|
})
|
66
90
|
);
|
67
91
|
|
68
|
-
|
69
|
-
:host {
|
70
|
-
display: inline-block;
|
71
|
-
min-width: 10em;
|
72
|
-
max-width: 100%;
|
73
|
-
}
|
74
|
-
vaadin-text-area {
|
75
|
-
margin: 0;
|
76
|
-
width: 100%;
|
77
|
-
box-sizing: border-box;
|
78
|
-
}
|
79
|
-
vaadin-text-area > label,
|
80
|
-
vaadin-text-area::part(input-field) {
|
81
|
-
padding: 0;
|
82
|
-
}
|
83
|
-
vaadin-text-area[required]::part(required-indicator)::after {
|
84
|
-
content: "*";
|
85
|
-
}
|
86
|
-
vaadin-text-area[disabled] > textarea:placeholder-shown,
|
87
|
-
vaadin-text-area[readonly] > textarea:placeholder-shown {
|
88
|
-
opacity: 1;
|
89
|
-
}
|
90
|
-
`;
|
92
|
+
|
@@ -8,11 +8,10 @@ import {
|
|
8
8
|
import textFieldMappings from './textFieldMappings';
|
9
9
|
import { compose } from '../../helpers';
|
10
10
|
import { getComponentName } from '../../helpers/componentHelpers';
|
11
|
+
import { resetInputFieldDefaultWidth, resetInputOverrides } from '../../helpers/themeHelpers/resetHelpers';
|
11
12
|
|
12
13
|
export const componentName = getComponentName('text-field');
|
13
14
|
|
14
|
-
let overrides = ``;
|
15
|
-
|
16
15
|
const observedAttrs = ['type'];
|
17
16
|
|
18
17
|
const customMixin = (superclass) =>
|
@@ -47,58 +46,17 @@ export const TextFieldClass = compose(
|
|
47
46
|
createProxy({
|
48
47
|
slots: ['prefix', 'suffix'],
|
49
48
|
wrappedEleName: 'vaadin-text-field',
|
50
|
-
style: () =>
|
49
|
+
style: () => `
|
50
|
+
:host {
|
51
|
+
display: inline-block;
|
52
|
+
max-width: 100%;
|
53
|
+
min-width: 10em;
|
54
|
+
padding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${TextFieldClass.cssVarList.inputOutlineOffset}));
|
55
|
+
}
|
56
|
+
${resetInputFieldDefaultWidth()}
|
57
|
+
${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}
|
58
|
+
`,
|
51
59
|
excludeAttrsSync: ['tabindex'],
|
52
60
|
componentName
|
53
61
|
})
|
54
62
|
);
|
55
|
-
|
56
|
-
overrides = `
|
57
|
-
:host {
|
58
|
-
display: inline-block;
|
59
|
-
--vaadin-field-default-width: auto;
|
60
|
-
max-width: 100%;
|
61
|
-
min-width: 10em;
|
62
|
-
|
63
|
-
}
|
64
|
-
vaadin-text-field {
|
65
|
-
margin: 0;
|
66
|
-
width: 100%;
|
67
|
-
height: 100%;
|
68
|
-
box-sizing: border-box;
|
69
|
-
}
|
70
|
-
|
71
|
-
vaadin-text-field::part(input-field) {
|
72
|
-
overflow: hidden;
|
73
|
-
padding: 0;
|
74
|
-
}
|
75
|
-
vaadin-text-field[disabled] > input:placeholder-shown,
|
76
|
-
vaadin-text-field[readonly] > input:placeholder-shown {
|
77
|
-
opacity: 1;
|
78
|
-
}
|
79
|
-
vaadin-text-field input:-webkit-autofill,
|
80
|
-
vaadin-text-field input:-webkit-autofill::first-line,
|
81
|
-
vaadin-text-field input:-webkit-autofill:hover,
|
82
|
-
vaadin-text-field input:-webkit-autofill:active,
|
83
|
-
vaadin-text-field input:-webkit-autofill:focus {
|
84
|
-
-webkit-text-fill-color: var(${TextFieldClass.cssVarList.color});
|
85
|
-
box-shadow: 0 0 0 var(${TextFieldClass.cssVarList.height}) var(${TextFieldClass.cssVarList.backgroundColor}) inset;
|
86
|
-
}
|
87
|
-
|
88
|
-
vaadin-text-field > input {
|
89
|
-
-webkit-mask-image: none;
|
90
|
-
min-height: 0;
|
91
|
-
}
|
92
|
-
|
93
|
-
vaadin-text-field[required]::part(required-indicator)::after {
|
94
|
-
content: "*";
|
95
|
-
color: var(${TextFieldClass.cssVarList.color});
|
96
|
-
}
|
97
|
-
vaadin-text-field::part(input-field)::after {
|
98
|
-
opacity: 0 !important;
|
99
|
-
}
|
100
|
-
|
101
|
-
vaadin-text-field::before {
|
102
|
-
height: unset;
|
103
|
-
}
|
104
|
-
`;
|
@@ -1,47 +1,75 @@
|
|
1
|
-
const
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
input
|
1
|
+
const {
|
2
|
+
host,
|
3
|
+
label,
|
4
|
+
placeholder,
|
5
|
+
requiredIndicator,
|
6
|
+
inputField,
|
7
|
+
input,
|
8
|
+
readOnlyInput,
|
9
|
+
helperText,
|
10
|
+
errorMessage
|
11
|
+
} = {
|
12
|
+
host: { selector: () => ':host' },
|
13
|
+
label: { selector: '::part(label)' },
|
14
|
+
requiredIndicator: { selector: '[required]::part(required-indicator)::after' },
|
15
|
+
placeholder: { selector: '> input:placeholder-shown' },
|
16
|
+
inputField: { selector: '::part(input-field)' },
|
17
|
+
input: { selector: 'input' },
|
18
|
+
readOnlyInput: { selector: '[readonly]::part(input-field)::after' },
|
19
|
+
helperText: { selector: '::part(helper-text)' },
|
20
|
+
errorMessage: { selector: '::part(error-message)' }
|
8
21
|
};
|
9
22
|
|
10
23
|
export default {
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
borderColor: [
|
16
|
-
{ selector: selectors.inputWrapper },
|
17
|
-
{ selector: selectors.readOnlyInput }
|
24
|
+
// we apply font-size also on the host so we can set its width with em
|
25
|
+
fontSize: [
|
26
|
+
{ property: 'font-size' },
|
27
|
+
{ ...host, property: 'font-size' }
|
18
28
|
],
|
19
|
-
|
20
|
-
{
|
21
|
-
{
|
29
|
+
fontFamily: [
|
30
|
+
{ ...label, property: 'font-family' },
|
31
|
+
{ ...inputField, property: 'font-family' },
|
32
|
+
{ ...helperText, property: 'font-family' },
|
33
|
+
{ ...errorMessage, property: 'font-family' }
|
22
34
|
],
|
23
|
-
|
24
|
-
|
25
|
-
|
35
|
+
|
36
|
+
hostWidth: { ...host, property: 'width' },
|
37
|
+
|
38
|
+
inputBackgroundColor: { ...inputField, property: 'background-color' },
|
39
|
+
|
40
|
+
labelTextColor: [
|
41
|
+
{ ...label, property: 'color' },
|
42
|
+
{ ...requiredIndicator, property: 'color' }
|
26
43
|
],
|
27
|
-
borderRadius: { selector: selectors.inputWrapper },
|
28
|
-
boxShadow: { selector: selectors.inputWrapper },
|
29
44
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
outlineStyle: { selector: selectors.inputWrapper },
|
39
|
-
outlineWidth: [
|
40
|
-
{ selector: selectors.inputWrapper },
|
41
|
-
// we need to make sure there is enough space for the outline
|
42
|
-
{ property: 'padding' }
|
45
|
+
inputValueTextColor: { ...inputField, property: 'color' },
|
46
|
+
inputCaretTextColor: { ...input, property: 'color' },
|
47
|
+
|
48
|
+
labelRequiredIndicator: { ...requiredIndicator, property: 'content' },
|
49
|
+
|
50
|
+
inputBorderColor: [
|
51
|
+
{ ...inputField, property: 'border-color' },
|
52
|
+
{ ...readOnlyInput, property: 'border-color' }
|
43
53
|
],
|
44
|
-
|
45
|
-
|
46
|
-
|
54
|
+
inputBorderWidth: [
|
55
|
+
{ ...inputField, property: 'border-width' },
|
56
|
+
{ ...readOnlyInput, property: 'border-width' }
|
57
|
+
],
|
58
|
+
inputBorderStyle: [
|
59
|
+
{ ...inputField, property: 'border-style' },
|
60
|
+
{ ...readOnlyInput, property: 'border-style' }
|
61
|
+
],
|
62
|
+
inputBorderRadius: { ...inputField, property: 'border-radius' },
|
63
|
+
|
64
|
+
inputHeight: { ...inputField, property: 'height' },
|
65
|
+
inputPadding: { ...inputField, property: 'padding' },
|
66
|
+
|
67
|
+
inputOutlineColor: { ...inputField, property: 'outline-color' },
|
68
|
+
inputOutlineStyle: { ...inputField, property: 'outline-style' },
|
69
|
+
inputOutlineWidth: { ...inputField, property: 'outline-width' },
|
70
|
+
inputOutlineOffset: { ...inputField, property: 'outline-offset' },
|
71
|
+
|
72
|
+
inputTextAlign: { ...input, property: 'text-align' },
|
73
|
+
|
74
|
+
inputPlaceholderColor: { ...placeholder, property: 'color' }
|
47
75
|
};
|
@@ -45,14 +45,16 @@ export const getThemeVars = (theme, prefix) =>
|
|
45
45
|
set({}, path, getVarName(prefix ? [prefix, ...path] : path))
|
46
46
|
);
|
47
47
|
|
48
|
-
export const globalsThemeToStyle = (theme, themeName = '') =>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
export const globalsThemeToStyle = (theme, themeName = '') => {
|
49
|
+
const style = Object.entries(themeToCSSVarsObj(theme)).reduce(
|
50
|
+
(acc, entry) => (acc += `${entry.join(':')};\n`),
|
51
|
+
''
|
52
|
+
);
|
53
|
+
|
54
|
+
if(!themeName) return style
|
55
|
+
|
56
|
+
return `*[data-theme="${themeName}"] {${style}}`
|
57
|
+
};
|
56
58
|
|
57
59
|
const componentsThemeToStyleObj = (componentsTheme) =>
|
58
60
|
transformTheme(componentsTheme, [], (path, val) => {
|
@@ -0,0 +1,76 @@
|
|
1
|
+
export const resetInputOverrides = (name, cssVarList) => `
|
2
|
+
${resetInputContainer(name)}
|
3
|
+
${resetInputCursor(name)}
|
4
|
+
${resetInputPlaceholder(name)}
|
5
|
+
${resetInputField(name)}
|
6
|
+
${resetInputAutoFill(name, cssVarList)}
|
7
|
+
|
8
|
+
${name}::before {
|
9
|
+
height: unset;
|
10
|
+
}
|
11
|
+
|
12
|
+
${name} > input {
|
13
|
+
-webkit-mask-image: none;
|
14
|
+
min-height: 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
${name}::part(input-field)::after {
|
18
|
+
opacity: 0 !important;
|
19
|
+
}
|
20
|
+
`;
|
21
|
+
|
22
|
+
export const resetInputContainer = (name) => `
|
23
|
+
${name} {
|
24
|
+
margin: 0;
|
25
|
+
padding: 0;
|
26
|
+
width: 100%;
|
27
|
+
height: 100%;
|
28
|
+
box-sizing: border-box;
|
29
|
+
}
|
30
|
+
`;
|
31
|
+
|
32
|
+
export const resetInputField = (name) => `
|
33
|
+
${name}::part(input-field) {
|
34
|
+
overflow: hidden;
|
35
|
+
padding: 0;
|
36
|
+
box-shadow: none;
|
37
|
+
}
|
38
|
+
`;
|
39
|
+
|
40
|
+
export const resetInputCursor = (name) => `
|
41
|
+
${name} > label,
|
42
|
+
${name}::part(label),
|
43
|
+
${name}::part(required-indicator) {
|
44
|
+
cursor: pointer;
|
45
|
+
}
|
46
|
+
`;
|
47
|
+
|
48
|
+
export const resetInputPlaceholder = (name, ele = 'input') => `
|
49
|
+
${name}[disabled] > ${ele}:placeholder-shown,
|
50
|
+
${name}[readonly] > ${ele}:placeholder-shown {
|
51
|
+
opacity: 1;
|
52
|
+
}
|
53
|
+
`;
|
54
|
+
|
55
|
+
export const resetInputAutoFill = (name, cssVarList) => `
|
56
|
+
${name} input:-webkit-autofill,
|
57
|
+
${name} input:-webkit-autofill::first-line,
|
58
|
+
${name} input:-webkit-autofill:hover,
|
59
|
+
${name} input:-webkit-autofill:active,
|
60
|
+
${name} input:-webkit-autofill:focus {
|
61
|
+
-webkit-text-fill-color: var(${cssVarList.inputValueTextColor});
|
62
|
+
box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;
|
63
|
+
}
|
64
|
+
`;
|
65
|
+
|
66
|
+
export const resetInputFieldDefaultWidth = () => `
|
67
|
+
:host {
|
68
|
+
--vaadin-field-default-width: auto;
|
69
|
+
}
|
70
|
+
`;
|
71
|
+
|
72
|
+
export const resetInputReadonlyStyle = (name) => `
|
73
|
+
${name}::part(input-field)::after {
|
74
|
+
opacity: 0;
|
75
|
+
}
|
76
|
+
`;
|
package/src/index.d.ts
CHANGED
@@ -4,7 +4,7 @@ export {
|
|
4
4
|
globalsThemeToStyle,
|
5
5
|
createComponentsTheme,
|
6
6
|
themeToStyle,
|
7
|
-
componentsThemeManager
|
7
|
+
componentsThemeManager
|
8
8
|
} from './helpers/themeHelpers';
|
9
9
|
export { genColor } from './helpers/themeHelpers/colorsHelpers';
|
10
10
|
export { defaultTheme, themeVars } from './theme';
|
@@ -45,5 +45,6 @@ export type Theme = {
|
|
45
45
|
link: Record<string, any>;
|
46
46
|
button: Record<string, any>;
|
47
47
|
text: Record<string, any>;
|
48
|
+
inputWrapper: Record<string, any>;
|
48
49
|
};
|
49
50
|
};
|