@fluid-topics/ft-base-input 1.2.70

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.
@@ -0,0 +1,19 @@
1
+ import { Status } from "@fluid-topics/ft-wc-utils";
2
+ import { FtdsBaseInterface } from "@fluid-topics/ft-wc-utils/build/FtdsBase";
3
+ import { FtIcon } from "@fluid-topics/ft-icon";
4
+ export interface FtdsBaseInputProperties extends FtdsBaseInterface {
5
+ status: Status;
6
+ disabled: boolean;
7
+ hideLabel: boolean;
8
+ label: string;
9
+ raiseLabel: boolean;
10
+ errorMessages?: string[];
11
+ warningMessages?: string[];
12
+ helperText?: string;
13
+ appendIcon?: FtIcon | true;
14
+ appendIconLabel?: string;
15
+ appendIconIsClickable?: boolean;
16
+ prependIcon?: FtIcon | true;
17
+ prependIconLabel?: string;
18
+ prependIconIsClickable?: boolean;
19
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ export declare const FtdsBaseInputCssVariables: {
2
+ defaultInputFontSize: import("@fluid-topics/ft-wc-utils").FtCssVariable;
3
+ defaultInputLineHeight: import("@fluid-topics/ft-wc-utils").FtCssVariable;
4
+ labelColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
5
+ largeFieldHeight: import("@fluid-topics/ft-wc-utils").FtCssVariable;
6
+ largeFieldVerticalGap: import("@fluid-topics/ft-wc-utils").FtCssVariable;
7
+ largeFieldHorizontalGap: import("@fluid-topics/ft-wc-utils").FtCssVariable;
8
+ largeFieldHorizontalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
9
+ largeFieldIconSize: import("@fluid-topics/ft-wc-utils").FtCssVariable;
10
+ mediumFieldHeight: import("@fluid-topics/ft-wc-utils").FtCssVariable;
11
+ mediumFieldVerticalGap: import("@fluid-topics/ft-wc-utils").FtCssVariable;
12
+ mediumFieldHorizontalGap: import("@fluid-topics/ft-wc-utils").FtCssVariable;
13
+ mediumFieldHorizontalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
14
+ mediumFieldIconSize: import("@fluid-topics/ft-wc-utils").FtCssVariable;
15
+ disabledComponentOpacity: import("@fluid-topics/ft-wc-utils").FtCssVariable;
16
+ defaultBorderWidth: import("@fluid-topics/ft-wc-utils").FtCssVariable;
17
+ defaultBorderColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
18
+ errorBorderWidth: import("@fluid-topics/ft-wc-utils").FtCssVariable;
19
+ errorBorderColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
20
+ warningBorderWidth: import("@fluid-topics/ft-wc-utils").FtCssVariable;
21
+ warningBorderColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
22
+ borderRadius: import("@fluid-topics/ft-wc-utils").FtCssVariable;
23
+ focusOutlineOffset: import("@fluid-topics/ft-wc-utils").FtCssVariable;
24
+ focusOutlineWidth: import("@fluid-topics/ft-wc-utils").FtCssVariable;
25
+ focusFocusRingColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
26
+ appendIconColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
27
+ prependIconColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
28
+ helperHorizontalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
29
+ helperHorizontalGap: import("@fluid-topics/ft-wc-utils").FtCssVariable;
30
+ helperIconSize: import("@fluid-topics/ft-wc-utils").FtCssVariable;
31
+ helperIconHorizontalGap: import("@fluid-topics/ft-wc-utils").FtCssVariable;
32
+ defaultHelperTextColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
33
+ errorHelperIconColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
34
+ warningHelperIconColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
35
+ };
36
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,205 @@
1
+ import { css } from "lit";
2
+ import { FtCssVariableFactory, textInput, typographyBody2Medium, typographyCaption2Medium, } from "@fluid-topics/ft-wc-utils";
3
+ export const FtdsBaseInputCssVariables = {
4
+ defaultInputFontSize: FtCssVariableFactory.create("--ftds-base-input-default-input-font-size", "", "SIZE", typographyBody2Medium.fontSize),
5
+ defaultInputLineHeight: FtCssVariableFactory.create("--ftds-base-input-default-input-line-height", "", "NUMBER", typographyBody2Medium.lineHeight),
6
+ labelColor: FtCssVariableFactory.create("--ftds-base-input-label-color", "", "COLOR", textInput.labelColor),
7
+ largeFieldHeight: FtCssVariableFactory.create("--ftds-base-input-large-field-height", "", "SIZE", textInput.largeFieldHeight),
8
+ largeFieldVerticalGap: FtCssVariableFactory.create("--ftds-base-input-large-field-vertical-gap", "", "SIZE", textInput.largeFieldVerticalGap),
9
+ largeFieldHorizontalGap: FtCssVariableFactory.create("--ftds-base-input-large-field-horizontal-gap", "", "SIZE", textInput.largeFieldHorizontalGap),
10
+ largeFieldHorizontalPadding: FtCssVariableFactory.create("--ftds-base-input-large-field-horizontal-padding", "", "SIZE", textInput.largeFieldHorizontalPadding),
11
+ largeFieldIconSize: FtCssVariableFactory.create("--ftds-base-input-large-icon-size", "", "SIZE", textInput.largeFieldIconSize),
12
+ mediumFieldHeight: FtCssVariableFactory.create("--ftds-base-input-medium-field-height", "", "SIZE", textInput.mediumFieldHeight),
13
+ mediumFieldVerticalGap: FtCssVariableFactory.create("--ftds-base-input-medium-field-vertical-gap", "", "SIZE", textInput.mediumFieldVerticalGap),
14
+ mediumFieldHorizontalGap: FtCssVariableFactory.create("--ftds-base-input-medium-field-horizontal-gap", "", "SIZE", textInput.mediumFieldHorizontalGap),
15
+ mediumFieldHorizontalPadding: FtCssVariableFactory.create("--ftds-base-input-medium-field-horizontal-padding", "", "SIZE", textInput.mediumFieldHorizontalPadding),
16
+ mediumFieldIconSize: FtCssVariableFactory.create("--ftds-base-input-medium-icon-size", "", "SIZE", textInput.mediumFieldIconSize),
17
+ disabledComponentOpacity: FtCssVariableFactory.create("--ftds-base-input-disabled-component-opacity", "", "NUMBER", textInput.disabledComponentOpacity),
18
+ defaultBorderWidth: FtCssVariableFactory.create("--ftds-base-input-default-border-width", "", "SIZE", textInput.defaultBorderWidth),
19
+ defaultBorderColor: FtCssVariableFactory.create("--ftds-base-input-default-border-color", "", "COLOR", textInput.defaultBorderColor),
20
+ errorBorderWidth: FtCssVariableFactory.create("--ftds-base-input-error-border-width", "", "SIZE", textInput.errorBorderWidth),
21
+ errorBorderColor: FtCssVariableFactory.create("--ftds-base-input-error-border-color", "", "COLOR", textInput.errorBorderColor),
22
+ warningBorderWidth: FtCssVariableFactory.create("--ftds-base-input-warning-border-width", "", "SIZE", textInput.warningBorderWidth),
23
+ warningBorderColor: FtCssVariableFactory.create("--ftds-base-input-warning-border-color", "", "COLOR", textInput.warningBorderColor),
24
+ borderRadius: FtCssVariableFactory.create("--ftds-base-input-border-radius", "", "COLOR", textInput.borderRadius),
25
+ focusOutlineOffset: FtCssVariableFactory.create("--ftds-base-input-focus-outline-offset", "", "SIZE", textInput.focusOutlineOffset),
26
+ focusOutlineWidth: FtCssVariableFactory.create("--ftds-base-input-focus-outline-width", "", "SIZE", textInput.focusOutlineWidth),
27
+ focusFocusRingColor: FtCssVariableFactory.create("--ftds-base-input-focus-ring-color", "", "COLOR", textInput.focusFocusRingColor),
28
+ appendIconColor: FtCssVariableFactory.create("--ftds-base-input-append-icon-color", "", "COLOR", textInput.trailingIconColor),
29
+ prependIconColor: FtCssVariableFactory.create("--ftds-base-input-prepend-icon-color", "", "COLOR", textInput.trailingIconColor),
30
+ helperHorizontalPadding: FtCssVariableFactory.create("--ftds-base-input-helper-horizontal-padding", "", "COLOR", textInput.helperHorizontalPadding),
31
+ helperHorizontalGap: FtCssVariableFactory.create("--ftds-base-input-helper-horizontal-gap", "", "COLOR", textInput.helperHorizontalGap),
32
+ helperIconSize: FtCssVariableFactory.create("--ftds-base-input-helper-icon-size", "", "COLOR", textInput.helperIconSize),
33
+ helperIconHorizontalGap: FtCssVariableFactory.create("--ftds-base-input-helper-horizontal-gap", "", "COLOR", textInput.helperHorizontalGap),
34
+ defaultHelperTextColor: FtCssVariableFactory.create("--ftds-base-input-helper-default-helper-text", "", "COLOR", textInput.defaultHelperTextColor),
35
+ errorHelperIconColor: FtCssVariableFactory.create("--ftds-base-input-helper-error-helper-icon-color", "", "COLOR", textInput.errorHelperIconColor),
36
+ warningHelperIconColor: FtCssVariableFactory.create("--ftds-base-input-helper-warning-helper-icon-color", "", "COLOR", textInput.warningHelperIconColor),
37
+ };
38
+ //language=css
39
+ export const styles = css `
40
+
41
+ *:focus {
42
+ outline: none;
43
+ }
44
+
45
+ slot::slotted(*) {
46
+ width: 100%;
47
+ height: 100%;
48
+ box-sizing: border-box;
49
+ border: none;
50
+ padding: 0;
51
+ }
52
+
53
+ slot::slotted(*:focus) {
54
+ outline: none;
55
+ }
56
+
57
+ slot:not([name])::slotted(*) { /* all elements inside of the default slot, in which will be the actual input */
58
+ font-size: ${FtdsBaseInputCssVariables.defaultInputFontSize};
59
+ line-height: ${FtdsBaseInputCssVariables.defaultInputLineHeight};
60
+ }
61
+
62
+ .ftds-input {
63
+ display: flex;
64
+ width: 100%;
65
+ flex-direction: column;
66
+ align-items: stretch;
67
+ position: relative;
68
+ height: var(--field-height);
69
+ }
70
+
71
+ .ftds-input.ftds--size-large {
72
+ --field-height: ${FtdsBaseInputCssVariables.largeFieldHeight};
73
+ --field-vertical-gap: ${FtdsBaseInputCssVariables.largeFieldVerticalGap};
74
+ --field-horizontal-gap: ${FtdsBaseInputCssVariables.largeFieldHorizontalGap};
75
+ --field-horizontal-padding: ${FtdsBaseInputCssVariables.largeFieldHorizontalPadding};
76
+ --icon-size: ${FtdsBaseInputCssVariables.largeFieldIconSize};
77
+ }
78
+
79
+ .ftds-input.ftds--size-medium {
80
+ --field-height: ${FtdsBaseInputCssVariables.mediumFieldHeight};
81
+ --field-vertical-gap: ${FtdsBaseInputCssVariables.mediumFieldVerticalGap};
82
+ --field-horizontal-gap: ${FtdsBaseInputCssVariables.mediumFieldHorizontalGap};
83
+ --field-horizontal-padding: ${FtdsBaseInputCssVariables.mediumFieldHorizontalPadding};
84
+ --icon-size: ${FtdsBaseInputCssVariables.mediumFieldIconSize};
85
+ }
86
+
87
+ .ftds-input.disabled {
88
+ opacity: ${FtdsBaseInputCssVariables.disabledComponentOpacity};
89
+ }
90
+
91
+ .inside-structure {
92
+ width: 100%;
93
+ box-sizing: border-box;
94
+ font-size: ${FtdsBaseInputCssVariables.defaultInputFontSize};
95
+ line-height: ${FtdsBaseInputCssVariables.defaultInputLineHeight};
96
+ border: ${FtdsBaseInputCssVariables.defaultBorderWidth} solid ${FtdsBaseInputCssVariables.defaultBorderColor};
97
+ border-radius: ${FtdsBaseInputCssVariables.borderRadius};
98
+ --current-border-width: ${FtdsBaseInputCssVariables.defaultBorderWidth};
99
+ outline-offset: calc(${FtdsBaseInputCssVariables.focusOutlineOffset} - ${FtdsBaseInputCssVariables.defaultBorderWidth});
100
+
101
+ --typo-caption-height: calc(${typographyCaption2Medium.lineHeight} * ${typographyCaption2Medium.fontSize});
102
+ --typo-body-height: calc(${FtdsBaseInputCssVariables.defaultInputLineHeight} * ${FtdsBaseInputCssVariables.defaultInputFontSize});
103
+ --caption-label-and-value-combined-height: calc(var(--field-vertical-gap) + var(--typo-caption-height) + var(--typo-body-height));
104
+
105
+ --input-content-vertical-padding: calc((var(--field-height) - var(--caption-label-and-value-combined-height)) / 2);
106
+ --value-padding-bottom: calc(var(--input-content-vertical-padding) - var(--current-border-width));
107
+ --value-padding-top: calc(var(--input-content-vertical-padding) + var(--field-vertical-gap) + var(--typo-caption-height) - var(--current-border-width));
108
+ padding: var(--value-padding-top) var(--field-horizontal-padding) var(--value-padding-bottom);
109
+ }
110
+
111
+ .ftds-input.no-label .inside-structure {
112
+ --value-padding-bottom: calc(((var(--field-height) - var(--typo-body-height)) / 2) - var(--current-border-width));
113
+ --value-padding-top: calc(((var(--field-height) - var(--typo-body-height)) / 2) - var(--current-border-width));
114
+ }
115
+
116
+ .ftds-input.with-prepend-icon .inside-structure {
117
+ padding-left: calc(var(--icon-size) + var(--field-horizontal-padding) + var(--field-horizontal-gap));
118
+ }
119
+
120
+ .ftds-input.with-append-icon .inside-structure {
121
+ padding-right: calc(var(--icon-size) + var(--field-horizontal-padding) + var(--field-horizontal-gap));
122
+ }
123
+
124
+ .ftds-input.error .inside-structure {
125
+ border: ${FtdsBaseInputCssVariables.errorBorderWidth} solid ${FtdsBaseInputCssVariables.errorBorderColor};
126
+ --current-border-width: ${FtdsBaseInputCssVariables.errorBorderWidth};
127
+ }
128
+
129
+ .ftds-input.warning .inside-structure {
130
+ border: ${FtdsBaseInputCssVariables.warningBorderWidth} solid ${FtdsBaseInputCssVariables.warningBorderColor};
131
+ --current-border-width: ${FtdsBaseInputCssVariables.warningBorderWidth};
132
+ }
133
+
134
+ .ftds-input.focused .inside-structure {
135
+ outline: ${FtdsBaseInputCssVariables.focusOutlineWidth} solid ${FtdsBaseInputCssVariables.focusFocusRingColor};
136
+ }
137
+
138
+ .inside-structure .inside-structure--icon {
139
+ position: absolute;
140
+ top: calc((var(--field-height) - var(--icon-size)) / 2);
141
+ height: var(--icon-size);
142
+ display: flex;
143
+ align-items: center;
144
+ }
145
+
146
+ .inside-structure .inside-structure--icon {
147
+ position: absolute;
148
+ top: calc((var(--field-height) - var(--icon-size)) / 2);
149
+ right: var(--field-horizontal-padding);
150
+ height: var(--icon-size);
151
+ }
152
+
153
+ .inside-structure .inside-structure--icon.append {
154
+ right: var(--field-horizontal-padding);
155
+ color: ${FtdsBaseInputCssVariables.appendIconColor};
156
+ }
157
+
158
+ .inside-structure .inside-structure--icon.prepend {
159
+ left: var(--field-horizontal-padding);
160
+ color: ${FtdsBaseInputCssVariables.prependIconColor};
161
+ }
162
+
163
+ .inside-structure .inside-structure--icon.append button {
164
+ color: ${FtdsBaseInputCssVariables.appendIconColor};
165
+ }
166
+
167
+ .inside-structure .inside-structure--icon.prepend button {
168
+ color: ${FtdsBaseInputCssVariables.prependIconColor};
169
+ }
170
+
171
+ .inside-structure .inside-structure--icon button {
172
+ border: none;
173
+ padding: 0;
174
+ background: none;
175
+ cursor: pointer;
176
+ }
177
+
178
+ .inside-structure .inside-structure--icon button:focus-visible {
179
+ outline: ${FtdsBaseInputCssVariables.focusOutlineWidth} solid ${FtdsBaseInputCssVariables.focusFocusRingColor};
180
+ border-radius: ${FtdsBaseInputCssVariables.borderRadius};
181
+ }
182
+
183
+ ftds-input-label {
184
+ --ft-input-label-color: ${FtdsBaseInputCssVariables.labelColor};
185
+ }
186
+
187
+ .ftds-input.with-prepend-icon ftds-input-label {
188
+ --ft-input-label-additional-padding-left: calc(var(--icon-size) + var(--field-horizontal-gap));
189
+ }
190
+
191
+ .ftds-input.with-append-icon ftds-input-label {
192
+ --ft-input-label-additional-padding-right: calc(var(--icon-size) + var(--field-horizontal-gap));
193
+ }
194
+
195
+ ftds-input-helper-text {
196
+ margin-top: ${FtdsBaseInputCssVariables.helperHorizontalGap};
197
+ padding-left: ${FtdsBaseInputCssVariables.helperHorizontalPadding};
198
+ --ftds-helper-text-icon-size: ${FtdsBaseInputCssVariables.helperIconSize};
199
+ --ftds-helper-text-icon-horizontal-gap:${FtdsBaseInputCssVariables.helperIconHorizontalGap};
200
+ --ftds-helper-text-color: ${FtdsBaseInputCssVariables.defaultHelperTextColor};
201
+ --ftds-helper-text-error-icon-color: ${FtdsBaseInputCssVariables.errorHelperIconColor};
202
+ --ftds-helper-text-warning-icon-color: ${FtdsBaseInputCssVariables.warningHelperIconColor};
203
+ }
204
+
205
+ `;
@@ -0,0 +1,3 @@
1
+ export * from "./ft-base-input";
2
+ export * from "./ft-base-input.styles";
3
+ export * from "./ft-base-input.properties";
package/build/index.js ADDED
@@ -0,0 +1,6 @@
1
+ import { customElement } from "@fluid-topics/ft-wc-utils";
2
+ import { FtdsBaseInput, } from "./ft-base-input";
3
+ export * from "./ft-base-input";
4
+ export * from "./ft-base-input.styles";
5
+ export * from "./ft-base-input.properties";
6
+ customElement("ftds-base-input")(FtdsBaseInput);
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@fluid-topics/ft-base-input",
3
+ "version": "1.2.70",
4
+ "description": "Base input structure for Admin Design System inputs",
5
+ "keywords": [
6
+ "Lit"
7
+ ],
8
+ "author": "Fluid Topics <devtopics@antidot.net>",
9
+ "license": "ISC",
10
+ "main": "build/index.js",
11
+ "web": "build/ft-base-input.min.js",
12
+ "typings": "build/index",
13
+ "files": [
14
+ "build/**/*.ts",
15
+ "build/**/*.js"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
+ },
21
+ "dependencies": {
22
+ "@fluid-topics/ft-icon": "1.2.70",
23
+ "@fluid-topics/ft-input-label": "1.2.70",
24
+ "@fluid-topics/ft-ripple": "1.2.70",
25
+ "@fluid-topics/ft-typography": "1.2.70",
26
+ "@fluid-topics/ft-wc-utils": "1.2.70",
27
+ "lit": "3.1.0"
28
+ },
29
+ "gitHead": "f3062e7380fa19f4c699b1cee22fa3c9f3c0c0a7"
30
+ }