@luizleon/sf.prefeiturasp.vuecomponents 4.0.2 → 4.0.3
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/package.json +5 -2
- package/src/axios/axiosClient.ts +0 -207
- package/src/common/appResult.ts +0 -34
- package/src/components/button/Button.vue +0 -104
- package/src/components/content/Content.vue +0 -49
- package/src/components/drawer/Drawer.vue +0 -146
- package/src/components/icon/Icon.vue +0 -96
- package/src/components/internal/HeaderAvatar.vue +0 -73
- package/src/components/internal/LoadingCircle.vue +0 -16
- package/src/components/internal/MenuIcon.vue +0 -13
- package/src/components/internal/ScrollToTop.vue +0 -26
- package/src/components/internal/ThemeToggle.ts +0 -41
- package/src/components/internal/ThemeToggle.vue +0 -23
- package/src/components/internal/cssClassBuilder.ts +0 -44
- package/src/components/internal/getMaxZindex.ts +0 -15
- package/src/components/layout/Layout.d.ts +0 -38
- package/src/components/layout/Layout.vue +0 -58
- package/src/components/message/Message.vue +0 -65
- package/src/components/navmenu/NavMenu.vue +0 -109
- package/src/components/tabnavigation/TabNavigation.vue +0 -125
- package/src/components/tooltip/Tooltip.vue +0 -91
- package/src/index.ts +0 -53
- package/src/keycloak.d.ts +0 -671
- package/src/keycloak.js +0 -1731
- package/src/services/authService.ts +0 -118
- package/src/services/dialogService.ts +0 -109
- package/src/services/navMenuService.ts +0 -21
- package/src/style/componentes.scss +0 -20
- package/src/style/src/_functions.scss +0 -19
- package/src/style/src/_mixins.scss +0 -193
- package/src/style/src/_variables.scss +0 -12
- package/src/style/src/components/_button.scss +0 -104
- package/src/style/src/components/_content.scss +0 -57
- package/src/style/src/components/_drawer.scss +0 -89
- package/src/style/src/components/_headerAvatar.scss +0 -22
- package/src/style/src/components/_icon.scss +0 -119
- package/src/style/src/components/_layout.scss +0 -160
- package/src/style/src/components/_loading-circle.scss +0 -24
- package/src/style/src/components/_mask.scss +0 -35
- package/src/style/src/components/_message.scss +0 -47
- package/src/style/src/components/_navmenulink.scss +0 -31
- package/src/style/src/components/_scrollToTop.scss +0 -28
- package/src/style/src/components/_svg_icon.scss +0 -5
- package/src/style/src/components/_tab-navigation.scss +0 -93
- package/src/style/src/components/_themetoggle.scss +0 -52
- package/src/style/src/components/_tooltip.scss +0 -53
- package/src/style/src/sweetalert/_sweetalert.scss +0 -9
- package/src/style/src/sweetalert/scss/_animations.scss +0 -197
- package/src/style/src/sweetalert/scss/_body.scss +0 -45
- package/src/style/src/sweetalert/scss/_core.scss +0 -862
- package/src/style/src/sweetalert/scss/_mixins.scss +0 -16
- package/src/style/src/sweetalert/scss/_theming.scss +0 -8
- package/src/style/src/sweetalert/scss/_toasts-animations.scss +0 -83
- package/src/style/src/sweetalert/scss/_toasts-body.scss +0 -85
- package/src/style/src/sweetalert/scss/_toasts.scss +0 -203
- package/src/style/src/sweetalert/scss/_variables.scss +0 -271
- package/src/ts-helpers.d.ts +0 -44
- package/src/types/index.ts +0 -59
- package/src/vite-env.d.ts +0 -1
- package/tsconfig.json +0 -22
- package/vite.config.js +0 -29
- /package/dist/{src/axios → axios}/axiosClient.d.ts +0 -0
- /package/dist/{src/common → common}/appResult.d.ts +0 -0
- /package/dist/{src/components → components}/button/Button.d.ts +0 -0
- /package/dist/{src/components → components}/content/Content.d.ts +0 -0
- /package/dist/{src/components → components}/drawer/Drawer.d.ts +0 -0
- /package/dist/{src/components → components}/icon/Icon.d.ts +0 -0
- /package/dist/{src/components → components}/internal/HeaderAvatar.d.ts +0 -0
- /package/dist/{src/components → components}/internal/LoadingCircle.d.ts +0 -0
- /package/dist/{src/components → components}/internal/MenuIcon.d.ts +0 -0
- /package/dist/{src/components → components}/internal/ScrollToTop.d.ts +0 -0
- /package/dist/{src/components → components}/internal/ThemeToggle.d.ts +0 -0
- /package/dist/{src/components → components}/internal/cssClassBuilder.d.ts +0 -0
- /package/dist/{src/components → components}/internal/getMaxZindex.d.ts +0 -0
- /package/dist/{src/components → components}/layout/Layout.d.ts +0 -0
- /package/dist/{src/components → components}/message/Message.d.ts +0 -0
- /package/dist/{src/components → components}/navmenu/NavMenu.d.ts +0 -0
- /package/dist/{src/components → components}/tabnavigation/TabNavigation.d.ts +0 -0
- /package/dist/{src/components → components}/tooltip/Tooltip.d.ts +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/keycloak.d.ts → keycloak.d.ts} +0 -0
- /package/dist/{src/services → services}/authService.d.ts +0 -0
- /package/dist/{src/services → services}/dialogService.d.ts +0 -0
- /package/dist/{src/services → services}/navMenuService.d.ts +0 -0
- /package/dist/{src/types → types}/index.d.ts +0 -0
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { IAuthService, User } from "../types";
|
|
2
|
-
import Keycloak, {
|
|
3
|
-
KeycloakConfig,
|
|
4
|
-
KeycloakInitOptions,
|
|
5
|
-
} from "./../keycloak";
|
|
6
|
-
|
|
7
|
-
async function CheckSilentLoginFile() {
|
|
8
|
-
const fileName = "silent-login.html";
|
|
9
|
-
const result = await fetch(location.origin + "/" + fileName)
|
|
10
|
-
.then(async (r) => {
|
|
11
|
-
if (r.status !== 200) return false;
|
|
12
|
-
const text = await r.text();
|
|
13
|
-
return text.includes("silent-login-iframe-result");
|
|
14
|
-
})
|
|
15
|
-
.catch(() => {
|
|
16
|
-
return false;
|
|
17
|
-
});
|
|
18
|
-
if (!result) {
|
|
19
|
-
const error = `O arquivo ${fileName} não foi localizado no projeto ou não possui o conteúdo correto!`;
|
|
20
|
-
console.warn(error);
|
|
21
|
-
document.documentElement.setAttribute("data-app-message", error);
|
|
22
|
-
}
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
let AuthService: IAuthService;
|
|
27
|
-
|
|
28
|
-
function ConfigAuthService(config?: KeycloakConfig): IAuthService {
|
|
29
|
-
if (!config) {
|
|
30
|
-
return AuthService;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const keycloakInstance = new Keycloak(config);
|
|
34
|
-
|
|
35
|
-
const User: User = {} as User;
|
|
36
|
-
|
|
37
|
-
const Init = async (
|
|
38
|
-
initOptions: KeycloakInitOptions = {},
|
|
39
|
-
callback?: () => void
|
|
40
|
-
) => {
|
|
41
|
-
const check = await CheckSilentLoginFile();
|
|
42
|
-
if (!check) return;
|
|
43
|
-
if (initOptions.onLoad === "login-required") {
|
|
44
|
-
document.documentElement.setAttribute(
|
|
45
|
-
"data-app-message",
|
|
46
|
-
"Autorizando..."
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
return keycloakInstance
|
|
50
|
-
.init(initOptions)
|
|
51
|
-
.then(async (authenticated) => {
|
|
52
|
-
if (authenticated) {
|
|
53
|
-
await FetchUserInfo();
|
|
54
|
-
}
|
|
55
|
-
if (callback && typeof callback === "function") {
|
|
56
|
-
try {
|
|
57
|
-
callback();
|
|
58
|
-
document.documentElement.classList.add("app-mounted");
|
|
59
|
-
} catch (e) {
|
|
60
|
-
console.error(e);
|
|
61
|
-
document.documentElement.setAttribute(
|
|
62
|
-
"data-app-message",
|
|
63
|
-
"Ocorreu um erro na inicialização. Verifique o console para mais detalhes."
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
.catch((e: any) => {
|
|
69
|
-
document.documentElement.setAttribute(
|
|
70
|
-
"data-app-message",
|
|
71
|
-
"Ocorreu na comunicação com o servidor de autenticação."
|
|
72
|
-
);
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const FetchUserInfo = async () => {
|
|
77
|
-
const info: any = await keycloakInstance.loadUserInfo();
|
|
78
|
-
User.email = info.email ?? "";
|
|
79
|
-
User.emailVerified = info.email_verified === true;
|
|
80
|
-
User.firstName = info.given_name ?? "";
|
|
81
|
-
User.lastName = info.family_name ?? "";
|
|
82
|
-
User.name = info.name ?? "";
|
|
83
|
-
User.sub = info.sub ?? "";
|
|
84
|
-
User.username = info.preferred_username ?? "";
|
|
85
|
-
User.roles = [...(info.role ?? [])];
|
|
86
|
-
User.groups = [...(info.group ?? [])];
|
|
87
|
-
User.IsInRole = (role: string) => {
|
|
88
|
-
return User.roles.includes(role);
|
|
89
|
-
};
|
|
90
|
-
sessionStorage.setItem("name", User.name);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
const Logout = () => {
|
|
94
|
-
keycloakInstance
|
|
95
|
-
.logout({
|
|
96
|
-
redirectUri: location.origin,
|
|
97
|
-
})
|
|
98
|
-
.then(() => {
|
|
99
|
-
sessionStorage.removeItem("name");
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
AuthService = {
|
|
104
|
-
Instance: keycloakInstance,
|
|
105
|
-
User,
|
|
106
|
-
Init,
|
|
107
|
-
Logout,
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
return AuthService;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const UseAuthService = () => AuthService;
|
|
114
|
-
|
|
115
|
-
const StartAuthService = (config: KeycloakConfig) =>
|
|
116
|
-
ConfigAuthService(config);
|
|
117
|
-
|
|
118
|
-
export { StartAuthService, UseAuthService };
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import Swal, { SweetAlertIcon } from "sweetalert2";
|
|
2
|
-
import DOMPurify from "dompurify";
|
|
3
|
-
|
|
4
|
-
interface ConfirmOptions {
|
|
5
|
-
text: string;
|
|
6
|
-
title?: string;
|
|
7
|
-
confirmLabel?: string;
|
|
8
|
-
rejectLabel?: string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
interface AlertOptions {
|
|
12
|
-
text: string | string[];
|
|
13
|
-
title?: string;
|
|
14
|
-
icon?: SweetAlertIcon;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
class Base {
|
|
18
|
-
get IsVisible(): boolean {
|
|
19
|
-
return Swal.isVisible();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
class AlertService extends Base {
|
|
24
|
-
constructor() {
|
|
25
|
-
super();
|
|
26
|
-
}
|
|
27
|
-
async CreateAlertAsync(
|
|
28
|
-
options: AlertOptions | string | string[]
|
|
29
|
-
): Promise<boolean> {
|
|
30
|
-
let icon: SweetAlertIcon = "info";
|
|
31
|
-
let html: string;
|
|
32
|
-
let title: string;
|
|
33
|
-
if (typeof options === "string" || Array.isArray(options)) {
|
|
34
|
-
html = Array.isArray(options)
|
|
35
|
-
? options.join("<br />")
|
|
36
|
-
: options;
|
|
37
|
-
} else {
|
|
38
|
-
icon = options.icon ?? "info";
|
|
39
|
-
title = options.title ?? "";
|
|
40
|
-
html = Array.isArray(options.text)
|
|
41
|
-
? options.text.join("<br />")
|
|
42
|
-
: options.text;
|
|
43
|
-
}
|
|
44
|
-
return new Promise((r) => {
|
|
45
|
-
Swal.fire({
|
|
46
|
-
allowEscapeKey: false,
|
|
47
|
-
allowOutsideClick: false,
|
|
48
|
-
icon,
|
|
49
|
-
title,
|
|
50
|
-
html: `<div style="max-height: 50vh; overflow: auto">${DOMPurify.sanitize(
|
|
51
|
-
html
|
|
52
|
-
)}</div>`,
|
|
53
|
-
}).then(() => r(true));
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async AlertAsync(message: string | string[]): Promise<boolean> {
|
|
58
|
-
return this.CreateAlertAsync({
|
|
59
|
-
text: message,
|
|
60
|
-
icon: "info",
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async AlertErrorAsync(error: string | string[]): Promise<boolean> {
|
|
65
|
-
return this.CreateAlertAsync({
|
|
66
|
-
text: error,
|
|
67
|
-
icon: "error",
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
async AlertSuccessAsync(
|
|
72
|
-
message: string | string[]
|
|
73
|
-
): Promise<boolean> {
|
|
74
|
-
return this.CreateAlertAsync({
|
|
75
|
-
text: message,
|
|
76
|
-
icon: "success",
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
class ConfirmService extends Base {
|
|
82
|
-
async CreateConfirmAsync(
|
|
83
|
-
options: ConfirmOptions
|
|
84
|
-
): Promise<boolean> {
|
|
85
|
-
return new Promise((r) => {
|
|
86
|
-
Swal.fire({
|
|
87
|
-
showCancelButton: true,
|
|
88
|
-
allowEscapeKey: false,
|
|
89
|
-
allowOutsideClick: false,
|
|
90
|
-
icon: "question",
|
|
91
|
-
title: options.title,
|
|
92
|
-
html: DOMPurify.sanitize(options.text),
|
|
93
|
-
confirmButtonText: options.confirmLabel ?? "confirmar",
|
|
94
|
-
cancelButtonText: options.rejectLabel ?? "cancelar",
|
|
95
|
-
}).then((x: any) => {
|
|
96
|
-
r(x.isConfirmed === true);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
async ConfirmAsync(message: string) {
|
|
101
|
-
return this.CreateConfirmAsync({
|
|
102
|
-
text: message,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export const UseAlertService = () => new AlertService();
|
|
108
|
-
|
|
109
|
-
export const UseConfirmService = () => new ConfirmService();
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ref, Ref } from "vue";
|
|
2
|
-
|
|
3
|
-
class NavMenuService {
|
|
4
|
-
private _visible: Ref<boolean> = ref(false);
|
|
5
|
-
get IsVisible() {
|
|
6
|
-
return this._visible.value === true;
|
|
7
|
-
}
|
|
8
|
-
Toggle() {
|
|
9
|
-
this._visible.value = !this._visible.value;
|
|
10
|
-
}
|
|
11
|
-
Close() {
|
|
12
|
-
this._visible.value = false;
|
|
13
|
-
}
|
|
14
|
-
Open() {
|
|
15
|
-
this._visible.value = true;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const LkNavMenuService = new NavMenuService();
|
|
20
|
-
|
|
21
|
-
export const UseNavMenuService = () => LkNavMenuService;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
@use "./src/mixins" as mx;
|
|
2
|
-
|
|
3
|
-
@include mx.theme-colors-class();
|
|
4
|
-
|
|
5
|
-
@import "./src/components/layout";
|
|
6
|
-
@import "./src/components/themetoggle";
|
|
7
|
-
@import "./src/components/svg_icon";
|
|
8
|
-
@import "./src/components/loading-circle";
|
|
9
|
-
@import "./src/components/icon";
|
|
10
|
-
@import "./src/components/tooltip";
|
|
11
|
-
@import "./src/components/drawer";
|
|
12
|
-
@import "./src/components/navmenulink";
|
|
13
|
-
@import "./src/components/content";
|
|
14
|
-
@import "./src/components/scrollToTop";
|
|
15
|
-
@import "./src/sweetalert/sweetalert";
|
|
16
|
-
@import "./src/components/headerAvatar";
|
|
17
|
-
@import "./src/components/tab-navigation";
|
|
18
|
-
@import "./src/components/button";
|
|
19
|
-
@import "./src/components/mask";
|
|
20
|
-
@import "./src/components/message";
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
@function theme-colors($dark: false) {
|
|
2
|
-
@return "primary", "info", "success", "warn", "help", "error",
|
|
3
|
-
"secondary";
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
@function str-replace($string, $search, $replace: "") {
|
|
7
|
-
$index: str-index($string, $search);
|
|
8
|
-
|
|
9
|
-
@if $index {
|
|
10
|
-
@return str-slice($string, 1, $index - 1) + $replace +
|
|
11
|
-
str-replace(
|
|
12
|
-
str-slice($string, $index + str-length($search)),
|
|
13
|
-
$search,
|
|
14
|
-
$replace
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@return $string;
|
|
19
|
-
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
@use "sass:map";
|
|
2
|
-
@use "sass:list";
|
|
3
|
-
@use "sass:color";
|
|
4
|
-
@use "sass:math";
|
|
5
|
-
@import "./variables";
|
|
6
|
-
@import "./functions";
|
|
7
|
-
|
|
8
|
-
@mixin avatar-colors($dark: false) {
|
|
9
|
-
$red: #f44336;
|
|
10
|
-
$pink: #e91e63;
|
|
11
|
-
$purple: #9c27b0;
|
|
12
|
-
$deepPurple: #673ab7;
|
|
13
|
-
$indigo: #3f51b5;
|
|
14
|
-
$blue: #2196f3;
|
|
15
|
-
$lightBlue: #03a9f4;
|
|
16
|
-
$cyan: #00bcd4;
|
|
17
|
-
$teal: #009688;
|
|
18
|
-
$green: #4caf50;
|
|
19
|
-
$lightGreen: #8bc34a;
|
|
20
|
-
$lime: #cddc39;
|
|
21
|
-
$yellow: #ffeb3b;
|
|
22
|
-
$amber: #ffc107;
|
|
23
|
-
$orange: #ff9800;
|
|
24
|
-
$deepOrange: #ff5722;
|
|
25
|
-
$brown: #795548;
|
|
26
|
-
$gray: #9e9e9e;
|
|
27
|
-
$blueGray: #607d8b;
|
|
28
|
-
|
|
29
|
-
$colors: (
|
|
30
|
-
"--red": $red,
|
|
31
|
-
"--pink": $pink,
|
|
32
|
-
"--purple": $purple,
|
|
33
|
-
"--deepPurple": $deepPurple,
|
|
34
|
-
"--indigo": $indigo,
|
|
35
|
-
"--blue": $blue,
|
|
36
|
-
"--lightBlue": $lightBlue,
|
|
37
|
-
"--cyan": $cyan,
|
|
38
|
-
"--teal": $teal,
|
|
39
|
-
"--green": $green,
|
|
40
|
-
"--lightGreen": $lightGreen,
|
|
41
|
-
"--lime": $lime,
|
|
42
|
-
"--yellow": $yellow,
|
|
43
|
-
"--amber": $amber,
|
|
44
|
-
"--orange": $orange,
|
|
45
|
-
"--deepOrange": $deepOrange,
|
|
46
|
-
"--brown": $brown,
|
|
47
|
-
"--gray": $gray,
|
|
48
|
-
"--blueGray": $blueGray,
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
$incr: 0;
|
|
52
|
-
|
|
53
|
-
@each $key, $value in $colors {
|
|
54
|
-
$bgColor: color.scale($value, $lightness: -40%);
|
|
55
|
-
$color: color.scale($value, $lightness: 90%);
|
|
56
|
-
|
|
57
|
-
@if ($dark) {
|
|
58
|
-
$bgColor: color.scale($value, $lightness: 40%);
|
|
59
|
-
$color: color.scale($value, $lightness: -90%);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
&[data-cor="#{$incr}"] {
|
|
63
|
-
color: $color;
|
|
64
|
-
background-color: $bgColor;
|
|
65
|
-
|
|
66
|
-
&[data-hover]:hover {
|
|
67
|
-
box-shadow: 0 0 0 2px color.scale($bgColor, $alpha: -50%);
|
|
68
|
-
cursor: pointer;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
$incr: $incr + 1;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@mixin button-colors($dark: false) {
|
|
77
|
-
@each $color in $theme-colors-list {
|
|
78
|
-
$button-var-color: var(#{$color}-color);
|
|
79
|
-
$button-filled-color: #fff;
|
|
80
|
-
@if ($color == "--warn") {
|
|
81
|
-
$button-filled-color: #000;
|
|
82
|
-
}
|
|
83
|
-
&[data-color="#{str-replace($color, '--')}"] {
|
|
84
|
-
@media (pointer: fine) {
|
|
85
|
-
&:focus-visible {
|
|
86
|
-
outline: 2px solid $button-var-color;
|
|
87
|
-
outline-offset: 1px;
|
|
88
|
-
border-color: var(--bg-color);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
&:active {
|
|
92
|
-
transition: 0s;
|
|
93
|
-
filter: brightness(0.9);
|
|
94
|
-
}
|
|
95
|
-
&.#{$prefix}button-filled {
|
|
96
|
-
color: #{$button-filled-color};
|
|
97
|
-
background-color: $button-var-color;
|
|
98
|
-
}
|
|
99
|
-
&.#{$prefix}button-outlined,
|
|
100
|
-
&.#{$prefix}button-text {
|
|
101
|
-
color: $button-var-color;
|
|
102
|
-
background-color: transparent;
|
|
103
|
-
@media (pointer: fine) {
|
|
104
|
-
&:hover,
|
|
105
|
-
&:focus-visible {
|
|
106
|
-
background: color-mix(
|
|
107
|
-
in srgb,
|
|
108
|
-
currentColor 10%,
|
|
109
|
-
transparent
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
&.#{$prefix}button-text {
|
|
115
|
-
border-color: transparent !important;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
@mixin dot-colors() {
|
|
122
|
-
@each $color in $theme-colors-list {
|
|
123
|
-
$colorName: str-replace($color, "--");
|
|
124
|
-
&[data-color="#{$colorName}"] {
|
|
125
|
-
background-color: var(#{$color}-color);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
@mixin input-colors() {
|
|
131
|
-
@each $color in $theme-colors-list {
|
|
132
|
-
$colorName: str-replace($color, "--");
|
|
133
|
-
&[data-color="#{$colorName}"] {
|
|
134
|
-
color: var(#{$color}-color);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
@mixin toast-colors() {
|
|
140
|
-
@each $color, $colorValue in $theme-colors-list {
|
|
141
|
-
$colorName: str-replace($color, "--");
|
|
142
|
-
&.toast-#{$colorName} {
|
|
143
|
-
--toast-progress-color: var(#{$color}-color);
|
|
144
|
-
--toast-bg-color: hsla(
|
|
145
|
-
var(#{$color}-color-h),
|
|
146
|
-
var(#{$color}-color-s),
|
|
147
|
-
var(#{$color}-color-l),
|
|
148
|
-
0.9
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
@mixin theme-colors-class() {
|
|
155
|
-
@each $color in $theme-colors-list {
|
|
156
|
-
$colorName: str-replace($color, "--");
|
|
157
|
-
.#{$colorName}-color:not(
|
|
158
|
-
:disabled,
|
|
159
|
-
.disabled,
|
|
160
|
-
.component-disabled
|
|
161
|
-
) {
|
|
162
|
-
color: var(#{$color}-color) !important;
|
|
163
|
-
}
|
|
164
|
-
.#{$colorName}-bgcolor:not(
|
|
165
|
-
:disabled,
|
|
166
|
-
.disabled,
|
|
167
|
-
.component-disabled
|
|
168
|
-
) {
|
|
169
|
-
background-color: var(#{$color}-color) !important;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
@mixin material-symbols-outlined {
|
|
175
|
-
font-family: "Material Symbols Outlined";
|
|
176
|
-
font-weight: normal;
|
|
177
|
-
font-style: normal;
|
|
178
|
-
font-size: 24px;
|
|
179
|
-
line-height: 1;
|
|
180
|
-
letter-spacing: normal;
|
|
181
|
-
text-transform: none;
|
|
182
|
-
display: inline-block;
|
|
183
|
-
white-space: nowrap;
|
|
184
|
-
word-wrap: normal;
|
|
185
|
-
direction: ltr;
|
|
186
|
-
font-feature-settings: "liga";
|
|
187
|
-
-webkit-font-smoothing: antialiased;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
@mixin material-symbols-filled {
|
|
191
|
-
@include material-symbols-outlined;
|
|
192
|
-
font-variation-settings: "FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24;
|
|
193
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
@use "../mixins";
|
|
2
|
-
|
|
3
|
-
.#{$prefix}button {
|
|
4
|
-
position: relative;
|
|
5
|
-
display: inline-flex;
|
|
6
|
-
align-items: center;
|
|
7
|
-
border-radius: 6px;
|
|
8
|
-
border: 1px solid transparent;
|
|
9
|
-
width: fit-content;
|
|
10
|
-
word-break: break-word;
|
|
11
|
-
font-weight: 400;
|
|
12
|
-
transition: opacity 0.2s ease-in-out;
|
|
13
|
-
&:hover {
|
|
14
|
-
cursor: pointer;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.#{$prefix}button-label {
|
|
18
|
-
white-space: wrap;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.#{$prefix}icon {
|
|
22
|
-
position: absolute;
|
|
23
|
-
color: unset !important;
|
|
24
|
-
> button {
|
|
25
|
-
color: currentColor !important;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
&.#{$prefix}component-loading {
|
|
30
|
-
color: var(--disabled-color) !important;
|
|
31
|
-
border-color: var(--disabled-color) !important;
|
|
32
|
-
.#{$prefix}button-label {
|
|
33
|
-
color: transparent !important;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
&.#{$prefix}button-filled:disabled {
|
|
38
|
-
background-color: hsla(
|
|
39
|
-
var(--disabled-color-h),
|
|
40
|
-
var(--disabled-color-s),
|
|
41
|
-
var(--disabled-color-l),
|
|
42
|
-
0.5
|
|
43
|
-
) !important;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
&.#{$prefix}button-small {
|
|
47
|
-
min-height: 32px;
|
|
48
|
-
font-size: 0.875rem;
|
|
49
|
-
padding: 0 12px;
|
|
50
|
-
&.#{$prefix}button-with-icon {
|
|
51
|
-
padding-left: 28px;
|
|
52
|
-
}
|
|
53
|
-
.#{$prefix}icon {
|
|
54
|
-
inset: 0 0 0 6px;
|
|
55
|
-
&.#{$prefix}component-loading {
|
|
56
|
-
inset: 0 0 0 50%;
|
|
57
|
-
margin-left: -8px;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
&.#{$prefix}button-medium {
|
|
63
|
-
min-height: 36px;
|
|
64
|
-
font-size: 1rem;
|
|
65
|
-
padding: 0 12px;
|
|
66
|
-
&.#{$prefix}button-with-icon {
|
|
67
|
-
padding-left: 38px;
|
|
68
|
-
}
|
|
69
|
-
.#{$prefix}icon {
|
|
70
|
-
inset: 0 0 0 8px;
|
|
71
|
-
&.#{$prefix}component-loading {
|
|
72
|
-
inset: 0 0 0 50%;
|
|
73
|
-
margin-left: -12px;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
&.#{$prefix}button-large {
|
|
79
|
-
min-height: 48px;
|
|
80
|
-
font-size: 1.25rem;
|
|
81
|
-
padding: 0 16px;
|
|
82
|
-
&.#{$prefix}button-with-icon {
|
|
83
|
-
padding-left: 54px;
|
|
84
|
-
}
|
|
85
|
-
.#{$prefix}icon {
|
|
86
|
-
inset: 0 0 0 10px;
|
|
87
|
-
&.#{$prefix}component-loading {
|
|
88
|
-
inset: 0 0 0 50%;
|
|
89
|
-
margin-left: -18px;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
.#{$prefix}button-label {
|
|
93
|
-
line-height: 48px;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
@include button-colors;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
html.dark {
|
|
101
|
-
.#{$prefix}button {
|
|
102
|
-
@include button-colors(true);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
@import "../mixins";
|
|
2
|
-
|
|
3
|
-
.sf-content {
|
|
4
|
-
height: 100%;
|
|
5
|
-
overflow: hidden;
|
|
6
|
-
position: relative;
|
|
7
|
-
> .sf-content-body {
|
|
8
|
-
height: calc(100% - 25%);
|
|
9
|
-
overflow: auto;
|
|
10
|
-
scroll-behavior: smooth;
|
|
11
|
-
padding: 1rem;
|
|
12
|
-
&.sf-content-no-padding {
|
|
13
|
-
padding: 0;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
> .sf-content-header {
|
|
17
|
-
top: 0;
|
|
18
|
-
border-bottom: 1px solid var(--surface-900-color);
|
|
19
|
-
}
|
|
20
|
-
> .sf-content-footer {
|
|
21
|
-
bottom: 0;
|
|
22
|
-
border-top: 1px solid var(--surface-900-color);
|
|
23
|
-
}
|
|
24
|
-
> .sf-content-header,
|
|
25
|
-
> .sf-content-footer {
|
|
26
|
-
width: 100%;
|
|
27
|
-
padding: 0 1rem;
|
|
28
|
-
height: 60px;
|
|
29
|
-
display: flex;
|
|
30
|
-
align-items: center;
|
|
31
|
-
gap: 0.5rem;
|
|
32
|
-
&:empty {
|
|
33
|
-
display: none;
|
|
34
|
-
height: 0;
|
|
35
|
-
}
|
|
36
|
-
&.sf-content-no-padding {
|
|
37
|
-
padding: 0;
|
|
38
|
-
gap: 0;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
> .sf-content-header {
|
|
42
|
-
background-color: var(--bg-color);
|
|
43
|
-
}
|
|
44
|
-
> .sf-content-footer {
|
|
45
|
-
background-color: var(--surface-300-color);
|
|
46
|
-
}
|
|
47
|
-
&:has(.sf-content-header:empty) > .sf-content-body {
|
|
48
|
-
height: calc(100% - 60px);
|
|
49
|
-
}
|
|
50
|
-
&:has(.sf-content-footer:empty) > .sf-content-body {
|
|
51
|
-
height: calc(100% - 60px);
|
|
52
|
-
}
|
|
53
|
-
&:has(.sf-content-header:empty):has(.sf-content-footer:empty)
|
|
54
|
-
> .sf-content-body {
|
|
55
|
-
height: 100%;
|
|
56
|
-
}
|
|
57
|
-
}
|