@fluid-topics/ft-button 2.0.37 → 2.1.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.
@@ -1,8 +1,26 @@
1
- import { FtBaseButtonProperties } from "./ft-base-button";
2
- export interface FtButtonProperties extends FtBaseButtonProperties {
1
+ import { FtIconVariants } from "@fluid-topics/ft-icon";
2
+ import { Position } from "@fluid-topics/ft-tooltip";
3
+ export type HTMLAnchorElementTargetAttribute = "_self" | "_blank" | "_parent" | "_top";
4
+ export type FtButtonType = "button" | "submit" | "reset";
5
+ export interface FtButtonProperties {
3
6
  primary?: boolean;
4
7
  outlined?: boolean;
5
8
  dense?: boolean;
6
9
  round?: boolean;
10
+ disabled?: boolean;
11
+ icon?: string;
12
+ iconVariant?: FtIconVariants;
13
+ trailingIcon?: boolean;
14
+ label?: string;
15
+ type: FtButtonType;
16
+ href?: string;
17
+ target?: HTMLAnchorElementTargetAttribute;
18
+ loading?: boolean;
19
+ ariaLabel?: string | null;
20
+ ariaHasPopup?: string | null;
21
+ ariaPressed?: string | null;
22
+ tooltipPosition?: Position;
23
+ hideTooltip?: boolean;
24
+ forceTooltip?: boolean;
7
25
  activated?: boolean;
8
26
  }
@@ -1,24 +1,24 @@
1
1
  export declare const FtButtonCssVariables: {
2
- backgroundColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
3
- borderRadius: import("@fluid-topics/ft-wc-utils").FtCssVariable;
4
- color: import("@fluid-topics/ft-wc-utils").FtCssVariable;
5
- fontSize: import("@fluid-topics/ft-wc-utils").FtCssVariable;
6
- iconSize: import("@fluid-topics/ft-wc-utils").FtCssVariable;
7
- rippleColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
8
- verticalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
9
- horizontalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
10
- iconPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
11
- opacityDisabled: import("@fluid-topics/ft-wc-utils").FtCssVariable;
2
+ backgroundColor: import("@fluid-topics/design-system-variables").FtCssVariable;
3
+ borderRadius: import("@fluid-topics/design-system-variables").FtCssVariable;
4
+ color: import("@fluid-topics/design-system-variables").FtCssVariable;
5
+ fontSize: import("@fluid-topics/design-system-variables").FtCssVariable;
6
+ iconSize: import("@fluid-topics/design-system-variables").FtCssVariable;
7
+ rippleColor: import("@fluid-topics/design-system-variables").FtCssVariable;
8
+ verticalPadding: import("@fluid-topics/design-system-variables").FtCssVariable;
9
+ horizontalPadding: import("@fluid-topics/design-system-variables").FtCssVariable;
10
+ iconPadding: import("@fluid-topics/design-system-variables").FtCssVariable;
11
+ opacityDisabled: import("@fluid-topics/design-system-variables").FtCssVariable;
12
12
  };
13
13
  export declare const FtButtonPrimaryCssVariables: {
14
- backgroundColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
15
- color: import("@fluid-topics/ft-wc-utils").FtCssVariable;
16
- rippleColor: import("@fluid-topics/ft-wc-utils").FtCssVariable;
14
+ backgroundColor: import("@fluid-topics/design-system-variables").FtCssVariable;
15
+ color: import("@fluid-topics/design-system-variables").FtCssVariable;
16
+ rippleColor: import("@fluid-topics/design-system-variables").FtCssVariable;
17
17
  };
18
18
  export declare const FtButtonDenseCssVariables: {
19
- borderRadius: import("@fluid-topics/ft-wc-utils").FtCssVariable;
20
- verticalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
21
- horizontalPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
22
- iconPadding: import("@fluid-topics/ft-wc-utils").FtCssVariable;
19
+ borderRadius: import("@fluid-topics/design-system-variables").FtCssVariable;
20
+ verticalPadding: import("@fluid-topics/design-system-variables").FtCssVariable;
21
+ horizontalPadding: import("@fluid-topics/design-system-variables").FtCssVariable;
22
+ iconPadding: import("@fluid-topics/design-system-variables").FtCssVariable;
23
23
  };
24
- export declare const classicStyles: import("lit").CSSResult[];
24
+ export declare const buttonStyles: import("lit").CSSResult;
@@ -1,5 +1,5 @@
1
1
  import { css } from "lit";
2
- import { designSystemVariables, FtCssVariableFactory, noTextSelect, setVariable } from "@fluid-topics/ft-wc-utils";
2
+ import { designSystemVariables, FtCssVariableFactory, setVariable, } from "@fluid-topics/ft-wc-utils";
3
3
  import { FtRippleCssVariables } from "@fluid-topics/ft-ripple/build/ft-ripple.styles";
4
4
  import { FtTypographyButtonCssVariables } from "@fluid-topics/ft-typography/build/ft-typography.styles";
5
5
  import { FtLoaderCssVariables } from "@fluid-topics/ft-loader/build/ft-loader.styles";
@@ -29,144 +29,141 @@ export const FtButtonDenseCssVariables = {
29
29
  horizontalPadding: FtCssVariableFactory.create("--ft-button-dense-horizontal-padding", "", "SIZE", "4px"),
30
30
  iconPadding: FtCssVariableFactory.create("--ft-button-dense-icon-padding", "", "SIZE", "4px"),
31
31
  };
32
- export const classicStyles = [
33
- css `
34
- :host {
35
- display: inline-block;
36
- max-width: 100%;
37
- pointer-events: none;
38
- }
39
-
40
- .ft-button {
41
- box-shadow: 0px 0px 0px transparent;
42
- border: 0px solid transparent;
43
- text-shadow: 0px 0px 0px transparent;
44
- font-size: ${FtButtonCssVariables.fontSize};
45
- text-decoration: none;
46
- }
47
-
48
- .ft-button:hover {
49
- box-shadow: 0px 0px 0px transparent;
50
- border: 0px solid transparent;
51
- text-shadow: 0px 0px 0px transparent;
52
- }
53
-
54
- .ft-button:active {
55
- outline: none;
56
- border: none;
57
- }
58
-
59
- .ft-button:focus {
60
- outline: 0;
61
- }
62
-
63
- .ft-button {
64
- position: relative;
65
- display: flex;
66
- justify-content: center;
67
- align-items: center;
68
- width: 100%;
69
- overflow: hidden;
70
- box-sizing: border-box;
71
- border: none;
72
- pointer-events: auto;
73
-
74
- --button-internal-line-height: max(calc(${FtButtonCssVariables.fontSize} + 2px), ${FtButtonCssVariables.iconSize});
75
- --button-internal-color: ${FtButtonCssVariables.color};
76
- ${setVariable(FtIconCssVariables.size, FtButtonCssVariables.iconSize)};
77
- ${setVariable(FtRippleCssVariables.color, FtButtonCssVariables.rippleColor)};
78
-
79
- border-radius: ${FtButtonCssVariables.borderRadius};
80
- padding: ${FtButtonCssVariables.verticalPadding} ${FtButtonCssVariables.horizontalPadding};
81
- background-color: ${FtButtonCssVariables.backgroundColor};
82
- color: var(--button-internal-color);
83
- -webkit-mask-image: radial-gradient(white, black);
84
- }
85
-
86
- .ft-button.ft-button--outlined {
87
- border: 1px solid var(--button-internal-color);
88
- padding: calc(${FtButtonCssVariables.verticalPadding} - 1px) calc(${FtButtonCssVariables.horizontalPadding} - 1px);
89
- }
90
-
91
- .ft-button.ft-button--dense {
92
- padding: ${FtButtonDenseCssVariables.verticalPadding} ${FtButtonDenseCssVariables.horizontalPadding};
93
- border-radius: ${FtButtonDenseCssVariables.borderRadius};
94
- gap: ${FtButtonDenseCssVariables.iconPadding};
95
- }
96
-
97
- .ft-button.ft-button--dense.ft-button--outlined {
98
- padding: calc(${FtButtonDenseCssVariables.verticalPadding} - 1px) calc(${FtButtonDenseCssVariables.horizontalPadding} - 1px);
99
- }
100
-
101
- .ft-button:not([disabled]):hover {
102
- cursor: pointer;
103
- }
104
-
105
- .ft-button--round {
106
- border-radius: calc(var(--button-internal-line-height) / 2 + ${FtButtonCssVariables.verticalPadding});
107
- }
108
-
109
- .ft-button--round.ft-button--dense {
110
- border-radius: calc(var(--button-internal-line-height) / 2 + ${FtButtonDenseCssVariables.verticalPadding});
111
- }
112
-
113
- .ft-button[disabled] {
114
- filter: grayscale(1);
115
- opacity: ${FtButtonCssVariables.opacityDisabled};
116
- }
117
-
118
- .ft-button.ft-button--primary {
119
- background-color: ${FtButtonPrimaryCssVariables.backgroundColor};
120
- --button-internal-color: ${FtButtonPrimaryCssVariables.color};
121
- ${setVariable(FtRippleCssVariables.color, FtButtonPrimaryCssVariables.rippleColor)};
122
- }
123
-
124
- .ft-button:focus {
125
- outline: none;
126
- }
127
-
128
- .ft-button--label {
129
- position: relative;
130
- overflow: hidden;
131
- white-space: nowrap;
132
- text-overflow: ellipsis;
133
- display: block;
134
- margin: 0 ${FtButtonCssVariables.iconPadding};
135
- ${setVariable(FtTypographyButtonCssVariables.fontSize, "1em")};
136
- ${setVariable(FtTypographyButtonCssVariables.lineHeight, "var(--button-internal-line-height)")};
137
- }
138
-
139
- .ft-button--dense .ft-button--label {
140
- margin: 0 ${FtButtonDenseCssVariables.iconPadding};
141
- }
142
-
143
- .ft-button--label[hidden] {
144
- display: none;
145
- }
146
-
147
- [part="icon"] {
148
- flex-shrink: 0;
149
- position: relative;
150
- }
151
-
152
- .ft-button--label[hidden] + [part="icon"] {
153
- margin: 0 calc(${FtButtonCssVariables.horizontalPadding} * -1);
154
- padding: 0 ${FtButtonCssVariables.verticalPadding};
155
- }
156
-
157
- .ft-button--dense .ft-button--label[hidden] + [part="icon"] {
158
- margin: 0 calc(${FtButtonDenseCssVariables.horizontalPadding} * -1);
159
- padding: 0 ${FtButtonDenseCssVariables.verticalPadding};
160
- }
161
-
162
- .ft-button:not(.ft-button--trailing-icon) [part="label"] {
163
- order: 2;
164
- }
165
-
166
- ft-loader {
167
- ${setVariable(FtLoaderCssVariables.size, FtButtonCssVariables.iconSize)};
168
- ${setVariable(FtLoaderCssVariables.color, "var(--button-internal-color)")};
169
- }
170
- `,
171
- noTextSelect,
172
- ];
32
+ export const buttonStyles = css `
33
+ :host {
34
+ display: inline-block;
35
+ max-width: 100%;
36
+ pointer-events: none;
37
+ }
38
+
39
+ .ft-button {
40
+ box-shadow: 0px 0px 0px transparent;
41
+ border: 0px solid transparent;
42
+ text-shadow: 0px 0px 0px transparent;
43
+ font-size: ${FtButtonCssVariables.fontSize};
44
+ text-decoration: none;
45
+ }
46
+
47
+ .ft-button:hover {
48
+ box-shadow: 0px 0px 0px transparent;
49
+ border: 0px solid transparent;
50
+ text-shadow: 0px 0px 0px transparent;
51
+ }
52
+
53
+ .ft-button:active {
54
+ outline: none;
55
+ border: none;
56
+ }
57
+
58
+ .ft-button:focus {
59
+ outline: 0;
60
+ }
61
+
62
+ .ft-button {
63
+ position: relative;
64
+ display: flex;
65
+ justify-content: center;
66
+ align-items: center;
67
+ width: 100%;
68
+ overflow: hidden;
69
+ box-sizing: border-box;
70
+ border: none;
71
+ pointer-events: auto;
72
+
73
+ --button-internal-line-height: max(calc(${FtButtonCssVariables.fontSize} + 2px), ${FtButtonCssVariables.iconSize});
74
+ --button-internal-color: ${FtButtonCssVariables.color};
75
+ ${setVariable(FtIconCssVariables.size, FtButtonCssVariables.iconSize)};
76
+ ${setVariable(FtRippleCssVariables.color, FtButtonCssVariables.rippleColor)};
77
+
78
+ border-radius: ${FtButtonCssVariables.borderRadius};
79
+ padding: ${FtButtonCssVariables.verticalPadding} ${FtButtonCssVariables.horizontalPadding};
80
+ background-color: ${FtButtonCssVariables.backgroundColor};
81
+ color: var(--button-internal-color);
82
+ -webkit-mask-image: radial-gradient(white, black);
83
+ }
84
+
85
+ .ft-button.ft-button--outlined {
86
+ border: 1px solid var(--button-internal-color);
87
+ padding: calc(${FtButtonCssVariables.verticalPadding} - 1px) calc(${FtButtonCssVariables.horizontalPadding} - 1px);
88
+ }
89
+
90
+ .ft-button.ft-button--dense {
91
+ padding: ${FtButtonDenseCssVariables.verticalPadding} ${FtButtonDenseCssVariables.horizontalPadding};
92
+ border-radius: ${FtButtonDenseCssVariables.borderRadius};
93
+ gap: ${FtButtonDenseCssVariables.iconPadding};
94
+ }
95
+
96
+ .ft-button.ft-button--dense.ft-button--outlined {
97
+ padding: calc(${FtButtonDenseCssVariables.verticalPadding} - 1px) calc(${FtButtonDenseCssVariables.horizontalPadding} - 1px);
98
+ }
99
+
100
+ .ft-button:not([disabled]):hover {
101
+ cursor: pointer;
102
+ }
103
+
104
+ .ft-button--round {
105
+ border-radius: calc(var(--button-internal-line-height) / 2 + ${FtButtonCssVariables.verticalPadding});
106
+ }
107
+
108
+ .ft-button--round.ft-button--dense {
109
+ border-radius: calc(var(--button-internal-line-height) / 2 + ${FtButtonDenseCssVariables.verticalPadding});
110
+ }
111
+
112
+ .ft-button[disabled] {
113
+ filter: grayscale(1);
114
+ opacity: ${FtButtonCssVariables.opacityDisabled};
115
+ }
116
+
117
+ .ft-button.ft-button--primary {
118
+ background-color: ${FtButtonPrimaryCssVariables.backgroundColor};
119
+ --button-internal-color: ${FtButtonPrimaryCssVariables.color};
120
+ ${setVariable(FtRippleCssVariables.color, FtButtonPrimaryCssVariables.rippleColor)};
121
+ }
122
+
123
+ .ft-button:focus {
124
+ outline: none;
125
+ }
126
+
127
+ .ft-button--label {
128
+ position: relative;
129
+ overflow: hidden;
130
+ white-space: nowrap;
131
+ text-overflow: ellipsis;
132
+ display: block;
133
+ margin: 0 ${FtButtonCssVariables.iconPadding};
134
+ ${setVariable(FtTypographyButtonCssVariables.fontSize, "1em")};
135
+ ${setVariable(FtTypographyButtonCssVariables.lineHeight, "var(--button-internal-line-height)")};
136
+ }
137
+
138
+ .ft-button--dense .ft-button--label {
139
+ margin: 0 ${FtButtonDenseCssVariables.iconPadding};
140
+ }
141
+
142
+ .ft-button--label[hidden] {
143
+ display: none;
144
+ }
145
+
146
+ [part="icon"] {
147
+ flex-shrink: 0;
148
+ position: relative;
149
+ }
150
+
151
+ .ft-button--label[hidden] + [part="icon"] {
152
+ margin: 0 calc(${FtButtonCssVariables.horizontalPadding} * -1);
153
+ padding: 0 ${FtButtonCssVariables.verticalPadding};
154
+ }
155
+
156
+ .ft-button--dense .ft-button--label[hidden] + [part="icon"] {
157
+ margin: 0 calc(${FtButtonDenseCssVariables.horizontalPadding} * -1);
158
+ padding: 0 ${FtButtonDenseCssVariables.verticalPadding};
159
+ }
160
+
161
+ .ft-button:not(.ft-button--trailing-icon) [part="label"] {
162
+ order: 2;
163
+ }
164
+
165
+ ft-loader {
166
+ ${setVariable(FtLoaderCssVariables.size, FtButtonCssVariables.iconSize)};
167
+ ${setVariable(FtLoaderCssVariables.color, "var(--button-internal-color)")};
168
+ }
169
+ `;
package/build/index.d.ts CHANGED
@@ -1,7 +1,4 @@
1
1
  export * from "./ft-button";
2
2
  export * from "./ft-button.styles";
3
3
  export * from "./ft-button.properties";
4
- export * from "./ftds-button";
5
- export * from "./ftds-button.styles";
6
- export * from "./ftds-button.properties";
7
4
  import "./define";
package/build/index.js CHANGED
@@ -1,7 +1,4 @@
1
1
  export * from "./ft-button";
2
2
  export * from "./ft-button.styles";
3
3
  export * from "./ft-button.properties";
4
- export * from "./ftds-button";
5
- export * from "./ftds-button.styles";
6
- export * from "./ftds-button.properties";
7
4
  import "./define";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-topics/ft-button",
3
- "version": "2.0.37",
3
+ "version": "2.1.0",
4
4
  "description": "A generic Fluid Topics tag",
5
5
  "keywords": [
6
6
  "Lit"
@@ -19,14 +19,13 @@
19
19
  "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
20
  },
21
21
  "dependencies": {
22
- "@fluid-topics/design-system-variables": "3.4.1",
23
- "@fluid-topics/ft-icon": "2.0.37",
24
- "@fluid-topics/ft-loader": "2.0.37",
25
- "@fluid-topics/ft-ripple": "2.0.37",
26
- "@fluid-topics/ft-tooltip": "2.0.37",
27
- "@fluid-topics/ft-typography": "2.0.37",
28
- "@fluid-topics/ft-wc-utils": "2.0.37",
22
+ "@fluid-topics/ft-icon": "2.1.0",
23
+ "@fluid-topics/ft-loader": "2.1.0",
24
+ "@fluid-topics/ft-ripple": "2.1.0",
25
+ "@fluid-topics/ft-tooltip": "2.1.0",
26
+ "@fluid-topics/ft-typography": "2.1.0",
27
+ "@fluid-topics/ft-wc-utils": "2.1.0",
29
28
  "lit": "3.1.0"
30
29
  },
31
- "gitHead": "ef1f68e09e0331293931458a6479b551dcc4cecc"
30
+ "gitHead": "4727cf19d04236ad1d2b2cb43ce1c46298834c7e"
32
31
  }
@@ -1,62 +0,0 @@
1
- import { ElementDefinitionsMap, FtLitElement } from "@fluid-topics/ft-wc-utils";
2
- import { Position } from "@fluid-topics/ft-tooltip";
3
- import { FtIconVariants } from "@fluid-topics/ft-icon";
4
- import { HTMLTemplateResult } from "lit";
5
- import { ClassInfo } from "lit/directives/class-map.js";
6
- type HTMLAnchorElementTargetAttribute = "_self" | "_blank" | "_parent" | "_top";
7
- export interface FtBaseButtonProperties {
8
- disabled?: boolean;
9
- label?: string;
10
- href?: string;
11
- target?: HTMLAnchorElementTargetAttribute;
12
- icon?: string;
13
- iconVariant?: FtIconVariants;
14
- trailingIcon?: boolean;
15
- loading?: boolean;
16
- ariaLabel?: string | null;
17
- tooltipPosition?: Position;
18
- hideTooltip?: boolean;
19
- forceTooltip?: boolean;
20
- ariaHasPopup?: string | null;
21
- ariaPressed?: string | null;
22
- }
23
- declare const FtBaseButton_base: import("@fluid-topics/ft-wc-utils").FtFormComponentType<typeof FtLitElement>;
24
- export declare class FtBaseButton extends FtBaseButton_base implements FtBaseButtonProperties {
25
- static elementDefinitions: ElementDefinitionsMap;
26
- href?: string;
27
- target?: HTMLAnchorElementTargetAttribute;
28
- type: "button" | "submit" | "reset";
29
- disabled: boolean;
30
- label: string;
31
- icon?: string;
32
- iconVariant?: FtIconVariants;
33
- trailingIcon: boolean;
34
- loading: boolean;
35
- ariaLabel: string | null;
36
- ariaHasPopup: string | null;
37
- ariaPressed: string | null;
38
- tooltipPosition: Position;
39
- hideTooltip: boolean;
40
- forceTooltip: boolean;
41
- activated: boolean;
42
- private button?;
43
- private slottedContent?;
44
- private tooltip?;
45
- get buttonClasses(): ClassInfo;
46
- get typographyVariant(): string;
47
- constructor();
48
- protected render(): HTMLTemplateResult;
49
- private addTooltipIfNeeded;
50
- private resolveIcon;
51
- focus(): void;
52
- showTooltip(): void;
53
- showTemporaryTooltip(text: string, duration: number): Promise<void> | undefined;
54
- private setTooltipManual;
55
- click(): void;
56
- private getLabel;
57
- getTextContent(): string;
58
- protected hasTextContent(): boolean;
59
- private onSlotchange;
60
- private isDisabled;
61
- }
62
- export {};