ch3chi-commons-vue 1.2.0 → 1.8.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/package.json +1 -1
- package/dist/api/ApiService.d.ts +0 -233
- package/dist/auth/AuthorizationService.d.ts +0 -56
- package/dist/auth/PermissionDescriptor.d.ts +0 -37
- package/dist/components/CAlert.vue.d.ts +0 -17
- package/dist/components/CAlertDefine.d.ts +0 -14
- package/dist/components/CBSToast.vue.d.ts +0 -6
- package/dist/components/CGlobalSpinner.vue.d.ts +0 -13
- package/dist/components/CRowCheckBox.vue.d.ts +0 -14
- package/dist/components/CRowTextInput.vue.d.ts +0 -10
- package/dist/components/CTable.vue.d.ts +0 -24
- package/dist/components/CTableDefine.d.ts +0 -201
- package/dist/components/CTableTD.vue.d.ts +0 -7
- package/dist/components/form/CChangePasswordFormField.vue.d.ts +0 -14
- package/dist/components/form/CCheckBoxFormField.vue.d.ts +0 -30
- package/dist/components/form/CDateFormField.vue.d.ts +0 -17
- package/dist/components/form/CDateQueryField.vue.d.ts +0 -16
- package/dist/components/form/CDateRangeFormField.vue.d.ts +0 -17
- package/dist/components/form/CFilePickerFormField.vue.d.ts +0 -28
- package/dist/components/form/CRadioFormField.vue.d.ts +0 -30
- package/dist/components/form/CSelectFormField.vue.d.ts +0 -18
- package/dist/components/form/CTextAreaFormField.vue.d.ts +0 -16
- package/dist/components/form/CTextInputFormField.vue.d.ts +0 -22
- package/dist/directive/CBootstrapDirective.d.ts +0 -17
- package/dist/directive/CDateFormatterDirective.d.ts +0 -10
- package/dist/directive/CFTurnstileDirective.d.ts +0 -15
- package/dist/directive/CFormDirective.d.ts +0 -9
- package/dist/directive/PermissionDirective.d.ts +0 -15
- package/dist/index.cjs.js +0 -19103
- package/dist/index.d.ts +0 -45
- package/dist/index.es.js +0 -19086
- package/dist/model/BSFieldStyleConfig.d.ts +0 -121
- package/dist/model/BaseDictionary.d.ts +0 -34
- package/dist/model/BaseFormDataModel.d.ts +0 -199
- package/dist/model/BaseListViewModel.d.ts +0 -165
- package/dist/model/CBSModalViewModel.d.ts +0 -44
- package/dist/model/CFileDataModel.d.ts +0 -74
- package/dist/model/CImageViewModel.d.ts +0 -8
- package/dist/model/CMenuItem.d.ts +0 -86
- package/dist/model/EmailReceiverDataModel.d.ts +0 -57
- package/dist/model/EmptyDataModel.d.ts +0 -7
- package/dist/model/FormOptions.d.ts +0 -60
- package/dist/model/LoginDataModel.d.ts +0 -12
- package/dist/model/PasswordDataModel.d.ts +0 -15
- package/dist/model/QueryParameter.d.ts +0 -92
- package/dist/model/SessionUser.d.ts +0 -45
- package/dist/model/ShowMessageDataModel.d.ts +0 -44
- package/dist/model/TokenUser.d.ts +0 -50
- package/dist/stores/FormDataStore.d.ts +0 -31
- package/dist/stores/ViewStore.d.ts +0 -349
- package/dist/style.css +0 -223
- package/dist/utils/CToolUtils.d.ts +0 -53
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
import { ComponentPublicInstance } from 'vue';
|
|
2
|
-
import { DefineStoreOptions } from 'pinia';
|
|
3
|
-
import { default as CAlert } from '../components/CAlert.vue';
|
|
4
|
-
import { CAlertModalData } from '../components/CAlertDefine';
|
|
5
|
-
import { default as CBSToast } from '../components/CBSToast.vue';
|
|
6
|
-
import { default as CGlobalSpinner } from '../components/CGlobalSpinner.vue';
|
|
7
|
-
import { SessionUser } from '../model/SessionUser';
|
|
8
|
-
import { CMenuItem } from '../model/CMenuItem';
|
|
9
|
-
import { ShowMessageType } from '../model/ShowMessageDataModel';
|
|
10
|
-
import { AccessToken } from '../model/TokenUser';
|
|
11
|
-
import { BaseDictionary, CBaseDictionary } from '../model/BaseDictionary';
|
|
12
|
-
export type RouterNavigationType = 'push' | 'back' | 'forward' | 'unknown';
|
|
13
|
-
/**
|
|
14
|
-
* 全局視圖相關的狀態
|
|
15
|
-
*/
|
|
16
|
-
export type GlobalViewState = {
|
|
17
|
-
navigationType: RouterNavigationType;
|
|
18
|
-
isSidebarOpen: boolean;
|
|
19
|
-
mainBSModal: ComponentPublicInstance<typeof CAlert> | null;
|
|
20
|
-
toastView: ComponentPublicInstance<typeof CBSToast> | null;
|
|
21
|
-
globalSpinner: ComponentPublicInstance<typeof CGlobalSpinner> | null;
|
|
22
|
-
version: string;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* 全局視圖相關的行為
|
|
26
|
-
*/
|
|
27
|
-
export interface GlobalViewActions {
|
|
28
|
-
routerNavigationType(type: RouterNavigationType): void;
|
|
29
|
-
toggleSidebar(): void;
|
|
30
|
-
showModal(data: CAlertModalData): void;
|
|
31
|
-
showModalError(data: CAlertModalData): void;
|
|
32
|
-
showModelAlert(data: CAlertModalData): void;
|
|
33
|
-
showModalConfirm(data: CAlertModalData): void;
|
|
34
|
-
hideModal(): void;
|
|
35
|
-
addToast(data: CAlertModalData): void;
|
|
36
|
-
showSpinner(): void;
|
|
37
|
-
hideSpinner(): void;
|
|
38
|
-
setVersion(version: string): void;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 全局視圖相關的 getters
|
|
42
|
-
*/
|
|
43
|
-
export interface GlobalViewGetters {
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* 全局視圖 store 定義類型
|
|
47
|
-
*/
|
|
48
|
-
export type GlobalViewStoreOptionDefine = Omit<DefineStoreOptions<'view', GlobalViewState, GlobalViewGetters, GlobalViewActions>, 'id'>;
|
|
49
|
-
/**
|
|
50
|
-
* 全局視圖 store 定義
|
|
51
|
-
*/
|
|
52
|
-
export declare const globalViewStoreOptions: GlobalViewStoreOptionDefine;
|
|
53
|
-
/**
|
|
54
|
-
* 保存視圖相關的狀態,例如側邊欄開啟狀態、模態框、Toast、全局加載等
|
|
55
|
-
*/
|
|
56
|
-
export declare const useViewStore: import('pinia').StoreDefinition<"view", GlobalViewState, GlobalViewGetters & ThisType<{
|
|
57
|
-
navigationType: RouterNavigationType;
|
|
58
|
-
isSidebarOpen: boolean;
|
|
59
|
-
mainBSModal: ComponentPublicInstance<typeof CAlert> | null;
|
|
60
|
-
toastView: ComponentPublicInstance<typeof CBSToast> | null;
|
|
61
|
-
globalSpinner: ComponentPublicInstance<typeof CGlobalSpinner> | null;
|
|
62
|
-
version: string;
|
|
63
|
-
} & {} & {} & import('pinia').PiniaCustomProperties<string, import('pinia').StateTree, import('pinia')._GettersTree<import('pinia').StateTree>, import('pinia')._ActionsTree>> & import('pinia')._GettersTree<GlobalViewState>, GlobalViewActions & ThisType<GlobalViewActions & {
|
|
64
|
-
navigationType: RouterNavigationType;
|
|
65
|
-
isSidebarOpen: boolean;
|
|
66
|
-
mainBSModal: ComponentPublicInstance<typeof CAlert> | null;
|
|
67
|
-
toastView: ComponentPublicInstance<typeof CBSToast> | null;
|
|
68
|
-
globalSpinner: ComponentPublicInstance<typeof CGlobalSpinner> | null;
|
|
69
|
-
version: string;
|
|
70
|
-
} & import('pinia')._StoreWithState<"view", GlobalViewState, GlobalViewGetters, GlobalViewActions> & {} & {} & import('pinia').PiniaCustomProperties<string, import('pinia').StateTree, import('pinia')._GettersTree<import('pinia').StateTree>, import('pinia')._ActionsTree>>>;
|
|
71
|
-
export declare const __GlobalViewStoreDefine__: GlobalViewState & GlobalViewActions & GlobalViewGetters & GlobalViewStoreOptionDefine;
|
|
72
|
-
/**
|
|
73
|
-
* 使用者會話相關的狀態
|
|
74
|
-
*/
|
|
75
|
-
export type UserSessionState<T extends SessionUser = SessionUser> = {
|
|
76
|
-
user: T | null;
|
|
77
|
-
token?: AccessToken | null;
|
|
78
|
-
isAuth: boolean;
|
|
79
|
-
sessionCheckTimer: number | null;
|
|
80
|
-
shouldRedirectToLogin: boolean | null;
|
|
81
|
-
shouldRedirectToMessage?: boolean;
|
|
82
|
-
redirectMessageType?: ShowMessageType | null;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* 使用者會話相關的行為
|
|
86
|
-
*/
|
|
87
|
-
export interface UserSessionActions<T extends SessionUser = SessionUser> {
|
|
88
|
-
saveUser(user: T | null): void;
|
|
89
|
-
saveToken(token: AccessToken | null): void;
|
|
90
|
-
setAuthenticated(isAuth: boolean): void;
|
|
91
|
-
checkSessionIsValid(): Promise<boolean>;
|
|
92
|
-
validateSession(helper: () => Promise<T>): Promise<boolean>;
|
|
93
|
-
refreshToken(helper: () => Promise<AccessToken>): Promise<boolean>;
|
|
94
|
-
startSessionCheck(): void;
|
|
95
|
-
stopSessionCheck(): void;
|
|
96
|
-
hasPermission(needPermission: string | string[]): boolean;
|
|
97
|
-
logout(): void;
|
|
98
|
-
triggerManualLogout: () => void;
|
|
99
|
-
resetShouldRedirectToLogin: () => void;
|
|
100
|
-
triggerAuthFailedRedirect: () => void;
|
|
101
|
-
resetAuthFailedRedirect: () => void;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* 使用者會話相關的 getters
|
|
105
|
-
*/
|
|
106
|
-
export interface UserSessionGetters<T extends SessionUser = SessionUser> {
|
|
107
|
-
currentUser(state: UserSessionState<T>): T | null;
|
|
108
|
-
currentToken(state: UserSessionState<T>): AccessToken | null;
|
|
109
|
-
isAuthenticated(state: UserSessionState<T>): boolean;
|
|
110
|
-
userUid(state: UserSessionState<T>): string | undefined;
|
|
111
|
-
account(state: UserSessionState<T>): string | undefined;
|
|
112
|
-
userName(state: UserSessionState<T>): string | undefined;
|
|
113
|
-
email(state: UserSessionState<T>): string | undefined;
|
|
114
|
-
roleCode(state: UserSessionState<T>): string | undefined;
|
|
115
|
-
permissions(state: UserSessionState<T>): string[] | undefined;
|
|
116
|
-
menuItems(): CMenuItem[];
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* 使用者會話 store 定義類型
|
|
120
|
-
*/
|
|
121
|
-
export type UserSessionStoreOptionDefine<T extends SessionUser = SessionUser> = Omit<DefineStoreOptions<'session', UserSessionState<T>, UserSessionGetters<T>, UserSessionActions<T>>, 'id'>;
|
|
122
|
-
/**
|
|
123
|
-
* 使用者會話 store 定義
|
|
124
|
-
* 此方式僅適用於 SessionUser 類型,只使用 session 當作帳號權限驗證
|
|
125
|
-
*/
|
|
126
|
-
export declare const userSessionStoreOptions: UserSessionStoreOptionDefine<SessionUser>;
|
|
127
|
-
/**
|
|
128
|
-
* 持久化設定選項
|
|
129
|
-
*/
|
|
130
|
-
export interface PersistOptions<T extends SessionUser = SessionUser> {
|
|
131
|
-
enabled?: boolean;
|
|
132
|
-
key?: string;
|
|
133
|
-
storage?: Storage;
|
|
134
|
-
paths?: string[];
|
|
135
|
-
userConstructor?: new () => T;
|
|
136
|
-
serializer?: {
|
|
137
|
-
serialize: (state: any) => string;
|
|
138
|
-
deserialize: (str: string) => any;
|
|
139
|
-
};
|
|
140
|
-
onLogout?: (user: T | null, token: AccessToken | null) => void;
|
|
141
|
-
onLogin?: (user: T) => void;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* 創建使用者會話 store 選項的工廠函數,支援自訂的 SessionUser 類型
|
|
145
|
-
* @param persistOptions
|
|
146
|
-
*/
|
|
147
|
-
export declare function createUserSessionOptions<T extends SessionUser = SessionUser>(persistOptions?: PersistOptions<T>): UserSessionStoreOptionDefine<T>;
|
|
148
|
-
/**
|
|
149
|
-
* 創建使用者會話 store 的工廠函數,支援自訂的 SessionUser 類型
|
|
150
|
-
*/
|
|
151
|
-
export declare function createUserSessionStore<T extends SessionUser = SessionUser>(storeId?: string, persistOptions?: PersistOptions<T>): import('pinia').StoreDefinition<string, UserSessionState<T>, UserSessionGetters<T> & ThisType<{
|
|
152
|
-
user: import('vue').UnwrapRef<T> | null;
|
|
153
|
-
token?: {
|
|
154
|
-
tokenType?: string | undefined;
|
|
155
|
-
accessToken?: string | undefined;
|
|
156
|
-
accessTokenExpiresAt?: string | undefined;
|
|
157
|
-
refreshToken?: string | undefined;
|
|
158
|
-
refreshTokenExpiresAt?: string | undefined;
|
|
159
|
-
sessionUid?: string | undefined;
|
|
160
|
-
isExpired: () => boolean;
|
|
161
|
-
isRefreshTokenExpired: () => boolean;
|
|
162
|
-
loadToken: (data: Record<string, any>) => AccessToken;
|
|
163
|
-
toJSON: () => Record<string, any>;
|
|
164
|
-
loadJSON: (data: Record<string, any>) => AccessToken;
|
|
165
|
-
readonly bearerToken: string;
|
|
166
|
-
} | null | undefined;
|
|
167
|
-
isAuth: boolean;
|
|
168
|
-
sessionCheckTimer: number | null;
|
|
169
|
-
shouldRedirectToLogin: boolean | null;
|
|
170
|
-
shouldRedirectToMessage?: boolean | undefined;
|
|
171
|
-
redirectMessageType?: (ShowMessageType | null) | undefined;
|
|
172
|
-
} & {
|
|
173
|
-
readonly currentUser: T | null;
|
|
174
|
-
readonly currentToken: AccessToken | null;
|
|
175
|
-
readonly isAuthenticated: boolean;
|
|
176
|
-
readonly userUid: string | undefined;
|
|
177
|
-
readonly account: string | undefined;
|
|
178
|
-
readonly userName: string | undefined;
|
|
179
|
-
readonly email: string | undefined;
|
|
180
|
-
readonly roleCode: string | undefined;
|
|
181
|
-
readonly permissions: string[] | undefined;
|
|
182
|
-
readonly menuItems: CMenuItem[];
|
|
183
|
-
} & {} & import('pinia').PiniaCustomProperties<string, import('pinia').StateTree, import('pinia')._GettersTree<import('pinia').StateTree>, import('pinia')._ActionsTree>> & import('pinia')._GettersTree<UserSessionState<T>>, UserSessionActions<T> & ThisType<UserSessionActions<T> & {
|
|
184
|
-
user: import('vue').UnwrapRef<T> | null;
|
|
185
|
-
token?: {
|
|
186
|
-
tokenType?: string | undefined;
|
|
187
|
-
accessToken?: string | undefined;
|
|
188
|
-
accessTokenExpiresAt?: string | undefined;
|
|
189
|
-
refreshToken?: string | undefined;
|
|
190
|
-
refreshTokenExpiresAt?: string | undefined;
|
|
191
|
-
sessionUid?: string | undefined;
|
|
192
|
-
isExpired: () => boolean;
|
|
193
|
-
isRefreshTokenExpired: () => boolean;
|
|
194
|
-
loadToken: (data: Record<string, any>) => AccessToken;
|
|
195
|
-
toJSON: () => Record<string, any>;
|
|
196
|
-
loadJSON: (data: Record<string, any>) => AccessToken;
|
|
197
|
-
readonly bearerToken: string;
|
|
198
|
-
} | null | undefined;
|
|
199
|
-
isAuth: boolean;
|
|
200
|
-
sessionCheckTimer: number | null;
|
|
201
|
-
shouldRedirectToLogin: boolean | null;
|
|
202
|
-
shouldRedirectToMessage?: boolean | undefined;
|
|
203
|
-
redirectMessageType?: (ShowMessageType | null) | undefined;
|
|
204
|
-
} & import('pinia')._StoreWithState<"session", UserSessionState<T>, UserSessionGetters<T>, UserSessionActions<T>> & {
|
|
205
|
-
readonly currentUser: T | null;
|
|
206
|
-
readonly currentToken: AccessToken | null;
|
|
207
|
-
readonly isAuthenticated: boolean;
|
|
208
|
-
readonly userUid: string | undefined;
|
|
209
|
-
readonly account: string | undefined;
|
|
210
|
-
readonly userName: string | undefined;
|
|
211
|
-
readonly email: string | undefined;
|
|
212
|
-
readonly roleCode: string | undefined;
|
|
213
|
-
readonly permissions: string[] | undefined;
|
|
214
|
-
readonly menuItems: CMenuItem[];
|
|
215
|
-
} & {} & import('pinia').PiniaCustomProperties<string, import('pinia').StateTree, import('pinia')._GettersTree<import('pinia').StateTree>, import('pinia')._ActionsTree>>>;
|
|
216
|
-
/**
|
|
217
|
-
* 預設的使用者會話 store(使用 SessionUser)
|
|
218
|
-
*/
|
|
219
|
-
export declare const useUserSessionStore: import('pinia').StoreDefinition<string, UserSessionState<SessionUser>, UserSessionGetters<SessionUser> & ThisType<{
|
|
220
|
-
user: {
|
|
221
|
-
userUid?: string | undefined;
|
|
222
|
-
iat?: number | undefined;
|
|
223
|
-
account?: string | undefined;
|
|
224
|
-
name?: string | undefined;
|
|
225
|
-
email?: string | undefined;
|
|
226
|
-
roleCode?: string | undefined;
|
|
227
|
-
roleName?: string | undefined;
|
|
228
|
-
permissions?: string[] | undefined;
|
|
229
|
-
load: (data: Record<string, any>) => SessionUser;
|
|
230
|
-
loadFromValidateSession: (data: any) => SessionUser;
|
|
231
|
-
merge: (data: Partial<SessionUser>) => SessionUser;
|
|
232
|
-
process: (data: Record<string, any>) => Record<string, any>;
|
|
233
|
-
toJSON: () => Record<string, any>;
|
|
234
|
-
loadJSON: (data: Record<string, any>) => SessionUser;
|
|
235
|
-
} | null;
|
|
236
|
-
token?: {
|
|
237
|
-
tokenType?: string | undefined;
|
|
238
|
-
accessToken?: string | undefined;
|
|
239
|
-
accessTokenExpiresAt?: string | undefined;
|
|
240
|
-
refreshToken?: string | undefined;
|
|
241
|
-
refreshTokenExpiresAt?: string | undefined;
|
|
242
|
-
sessionUid?: string | undefined;
|
|
243
|
-
isExpired: () => boolean;
|
|
244
|
-
isRefreshTokenExpired: () => boolean;
|
|
245
|
-
loadToken: (data: Record<string, any>) => AccessToken;
|
|
246
|
-
toJSON: () => Record<string, any>;
|
|
247
|
-
loadJSON: (data: Record<string, any>) => AccessToken;
|
|
248
|
-
readonly bearerToken: string;
|
|
249
|
-
} | null | undefined;
|
|
250
|
-
isAuth: boolean;
|
|
251
|
-
sessionCheckTimer: number | null;
|
|
252
|
-
shouldRedirectToLogin: boolean | null;
|
|
253
|
-
shouldRedirectToMessage?: boolean | undefined;
|
|
254
|
-
redirectMessageType?: (ShowMessageType | null) | undefined;
|
|
255
|
-
} & {
|
|
256
|
-
readonly currentUser: SessionUser | null;
|
|
257
|
-
readonly currentToken: AccessToken | null;
|
|
258
|
-
readonly isAuthenticated: boolean;
|
|
259
|
-
readonly userUid: string | undefined;
|
|
260
|
-
readonly account: string | undefined;
|
|
261
|
-
readonly userName: string | undefined;
|
|
262
|
-
readonly email: string | undefined;
|
|
263
|
-
readonly roleCode: string | undefined;
|
|
264
|
-
readonly permissions: string[] | undefined;
|
|
265
|
-
readonly menuItems: CMenuItem[];
|
|
266
|
-
} & {} & import('pinia').PiniaCustomProperties<string, import('pinia').StateTree, import('pinia')._GettersTree<import('pinia').StateTree>, import('pinia')._ActionsTree>> & import('pinia')._GettersTree<UserSessionState<SessionUser>>, UserSessionActions<SessionUser> & ThisType<UserSessionActions<SessionUser> & {
|
|
267
|
-
user: {
|
|
268
|
-
userUid?: string | undefined;
|
|
269
|
-
iat?: number | undefined;
|
|
270
|
-
account?: string | undefined;
|
|
271
|
-
name?: string | undefined;
|
|
272
|
-
email?: string | undefined;
|
|
273
|
-
roleCode?: string | undefined;
|
|
274
|
-
roleName?: string | undefined;
|
|
275
|
-
permissions?: string[] | undefined;
|
|
276
|
-
load: (data: Record<string, any>) => SessionUser;
|
|
277
|
-
loadFromValidateSession: (data: any) => SessionUser;
|
|
278
|
-
merge: (data: Partial<SessionUser>) => SessionUser;
|
|
279
|
-
process: (data: Record<string, any>) => Record<string, any>;
|
|
280
|
-
toJSON: () => Record<string, any>;
|
|
281
|
-
loadJSON: (data: Record<string, any>) => SessionUser;
|
|
282
|
-
} | null;
|
|
283
|
-
token?: {
|
|
284
|
-
tokenType?: string | undefined;
|
|
285
|
-
accessToken?: string | undefined;
|
|
286
|
-
accessTokenExpiresAt?: string | undefined;
|
|
287
|
-
refreshToken?: string | undefined;
|
|
288
|
-
refreshTokenExpiresAt?: string | undefined;
|
|
289
|
-
sessionUid?: string | undefined;
|
|
290
|
-
isExpired: () => boolean;
|
|
291
|
-
isRefreshTokenExpired: () => boolean;
|
|
292
|
-
loadToken: (data: Record<string, any>) => AccessToken;
|
|
293
|
-
toJSON: () => Record<string, any>;
|
|
294
|
-
loadJSON: (data: Record<string, any>) => AccessToken;
|
|
295
|
-
readonly bearerToken: string;
|
|
296
|
-
} | null | undefined;
|
|
297
|
-
isAuth: boolean;
|
|
298
|
-
sessionCheckTimer: number | null;
|
|
299
|
-
shouldRedirectToLogin: boolean | null;
|
|
300
|
-
shouldRedirectToMessage?: boolean | undefined;
|
|
301
|
-
redirectMessageType?: (ShowMessageType | null) | undefined;
|
|
302
|
-
} & import('pinia')._StoreWithState<"session", UserSessionState<SessionUser>, UserSessionGetters<SessionUser>, UserSessionActions<SessionUser>> & {
|
|
303
|
-
readonly currentUser: SessionUser | null;
|
|
304
|
-
readonly currentToken: AccessToken | null;
|
|
305
|
-
readonly isAuthenticated: boolean;
|
|
306
|
-
readonly userUid: string | undefined;
|
|
307
|
-
readonly account: string | undefined;
|
|
308
|
-
readonly userName: string | undefined;
|
|
309
|
-
readonly email: string | undefined;
|
|
310
|
-
readonly roleCode: string | undefined;
|
|
311
|
-
readonly permissions: string[] | undefined;
|
|
312
|
-
readonly menuItems: CMenuItem[];
|
|
313
|
-
} & {} & import('pinia').PiniaCustomProperties<string, import('pinia').StateTree, import('pinia')._GettersTree<import('pinia').StateTree>, import('pinia')._ActionsTree>>>;
|
|
314
|
-
export declare const __UserSessionTypes__: UserSessionState & UserSessionGetters & UserSessionActions & UserSessionStoreOptionDefine & PersistOptions;
|
|
315
|
-
export interface DictionaryPersistOptions<T extends BaseDictionary = CBaseDictionary> {
|
|
316
|
-
enabled?: boolean;
|
|
317
|
-
key?: string;
|
|
318
|
-
storage?: Storage;
|
|
319
|
-
paths?: string[];
|
|
320
|
-
dictConstructor?: new () => T;
|
|
321
|
-
serializer?: {
|
|
322
|
-
serialize: (state: any) => string;
|
|
323
|
-
deserialize: (str: string) => any;
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
export type DictionaryState<T extends BaseDictionary = CBaseDictionary> = {
|
|
327
|
-
dictionary: T | null;
|
|
328
|
-
};
|
|
329
|
-
export interface DictionaryActions<T extends BaseDictionary = CBaseDictionary> {
|
|
330
|
-
setDictionary(dict: T): void;
|
|
331
|
-
loadAll(): void;
|
|
332
|
-
loadDictionary(key: string): void;
|
|
333
|
-
}
|
|
334
|
-
export interface DictionaryGetters<T extends BaseDictionary = CBaseDictionary> {
|
|
335
|
-
dict(): T | null;
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Dictionary store 定義類型
|
|
339
|
-
*/
|
|
340
|
-
export type DictionaryStoreOptionDefine<T extends BaseDictionary = CBaseDictionary> = Omit<DefineStoreOptions<'dictionary', DictionaryState<T>, DictionaryGetters<T>, DictionaryActions<T>>, 'id'>;
|
|
341
|
-
/**
|
|
342
|
-
* 創建 Dictionary store 選項的工廠函數
|
|
343
|
-
* @param dictConstructor
|
|
344
|
-
*/
|
|
345
|
-
export declare function createDictionaryStoreOptions<T extends BaseDictionary = CBaseDictionary>(options: {
|
|
346
|
-
dictionary?: T;
|
|
347
|
-
persistOptions?: DictionaryPersistOptions<T>;
|
|
348
|
-
}): DictionaryStoreOptionDefine<T>;
|
|
349
|
-
export declare const __DictionaryStoreTypes__: DictionaryState & DictionaryActions & DictionaryGetters & DictionaryStoreOptionDefine;
|
package/dist/style.css
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
.toast.c-toast-error[data-v-5a5057c1] {
|
|
3
|
-
background-color: #ffffff;
|
|
4
|
-
color: #212529;
|
|
5
|
-
border-left: 4px solid #dc3545;
|
|
6
|
-
}
|
|
7
|
-
.toast.c-toast-error .toast-header[data-v-5a5057c1] {
|
|
8
|
-
background-color: #f5c6cb;
|
|
9
|
-
color: #721c24;
|
|
10
|
-
border-bottom: 1px solid #f1aeb5;
|
|
11
|
-
}
|
|
12
|
-
.toast.c-toast-alert[data-v-5a5057c1] {
|
|
13
|
-
background-color: #ffffff;
|
|
14
|
-
color: #212529;
|
|
15
|
-
border-left: 4px solid #fd7e14;
|
|
16
|
-
}
|
|
17
|
-
.toast.c-toast-alert .toast-header[data-v-5a5057c1] {
|
|
18
|
-
background-color: #fde2d3;
|
|
19
|
-
color: #8a4116;
|
|
20
|
-
border-bottom: 1px solid #fde2d3;
|
|
21
|
-
}
|
|
22
|
-
.toast.c-toast-info[data-v-5a5057c1] {
|
|
23
|
-
background-color: #ffffff;
|
|
24
|
-
color: #212529;
|
|
25
|
-
border-left: 4px solid #20c997;
|
|
26
|
-
}
|
|
27
|
-
.toast.c-toast-info .toast-header[data-v-5a5057c1] {
|
|
28
|
-
background-color: #d4f4e6;
|
|
29
|
-
color: #0f5132;
|
|
30
|
-
border-bottom: 1px solid #d4f4e6;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* 增加一些通用樣式改進 */
|
|
34
|
-
.toast[data-v-5a5057c1] {
|
|
35
|
-
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
36
|
-
border-radius: 0.375rem;
|
|
37
|
-
}
|
|
38
|
-
.toast-header[data-v-5a5057c1] {
|
|
39
|
-
font-weight: 600;
|
|
40
|
-
}
|
|
41
|
-
.toast-body[data-v-5a5057c1] {
|
|
42
|
-
padding: 0.75rem;
|
|
43
|
-
background-color: #ffffff;
|
|
44
|
-
color: #212529;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.c-global-overlay[data-v-819a33ab] {
|
|
48
|
-
position: fixed;
|
|
49
|
-
top: 0; left: 0; right: 0; bottom: 0;
|
|
50
|
-
background: rgba(44, 44, 44, 0.5);
|
|
51
|
-
z-index: 30000;
|
|
52
|
-
display: flex;
|
|
53
|
-
align-items: center;
|
|
54
|
-
justify-content: center;
|
|
55
|
-
}
|
|
56
|
-
.c-global-spinner[data-v-819a33ab] {
|
|
57
|
-
--spinner-color: var(--v42442b26);
|
|
58
|
-
}
|
|
59
|
-
.c-global-spinner .spinner-border[data-v-819a33ab] {
|
|
60
|
-
width: 3rem;
|
|
61
|
-
height: 3rem;
|
|
62
|
-
color: var(--spinner-color, #E4B445);
|
|
63
|
-
border-width: 0.4em;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.c-multiline-text[data-v-49ff4b16] {
|
|
67
|
-
white-space: pre-wrap;
|
|
68
|
-
word-break: break-word;
|
|
69
|
-
}
|
|
70
|
-
.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*
|
|
71
|
-
/*rtl:begin:ignore*/left:0/*
|
|
72
|
-
/*rtl:end:ignore*/}/*
|
|
73
|
-
/*rtl:begin:ignore*/
|
|
74
|
-
/*
|
|
75
|
-
/*rtl:end:ignore*/
|
|
76
|
-
.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*
|
|
77
|
-
/*rtl:begin:ignore*/right:0/*
|
|
78
|
-
/*rtl:end:ignore*/}/*
|
|
79
|
-
/*rtl:begin:ignore*/
|
|
80
|
-
/*
|
|
81
|
-
/*rtl:end:ignore*/
|
|
82
|
-
.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
|
|
83
|
-
.c-single-file-box .c-multiple-file[data-v-b1ff243c]{
|
|
84
|
-
display: none;
|
|
85
|
-
}
|
|
86
|
-
.c-multiple-file-box .c-single-file[data-v-b1ff243c] {
|
|
87
|
-
display: none;
|
|
88
|
-
}
|
|
89
|
-
.c-file-upload-list .progress[data-v-b1ff243c] {
|
|
90
|
-
height: 8px;
|
|
91
|
-
}
|
|
92
|
-
.c-file-download-link[data-v-b1ff243c]:is(a) {
|
|
93
|
-
color: var(--bs-link-color);
|
|
94
|
-
cursor: pointer;
|
|
95
|
-
}
|
|
96
|
-
.c-file-download-link[data-v-b1ff243c]:is(a):hover {
|
|
97
|
-
color: var(--bs-link-hover-color);
|
|
98
|
-
text-decoration: underline;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
.c-textarea-readonly[data-v-cf428e50] {
|
|
103
|
-
background-color: #e9ecef;
|
|
104
|
-
opacity: 1;
|
|
105
|
-
min-height: 90px;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
/* 非 scoped 樣式:定義 CSS 變數 */
|
|
110
|
-
.content-table {
|
|
111
|
-
/* 定義 CSS 變數預設值 */
|
|
112
|
-
--c-pagination-bg-color: #fff;
|
|
113
|
-
--c-pagination-text-color: #2e2e2e;
|
|
114
|
-
--c-pagination-border-color: #E4B445;
|
|
115
|
-
--c-pagination-hover-bg-color: #E4B445;
|
|
116
|
-
--c-pagination-hover-text-color: #fff;
|
|
117
|
-
--c-pagination-hover-border-color: #d4a33c;
|
|
118
|
-
--c-pagination-active-bg-color: #E4B445;
|
|
119
|
-
--c-pagination-active-text-color: #fff;
|
|
120
|
-
--c-pagination-active-border-color: #E4B445;
|
|
121
|
-
--c-scrollbar-thumb-color: #E4B445;
|
|
122
|
-
--c-scrollbar-track-color: #f1f1f1;
|
|
123
|
-
--c-scrollbar-thumb-hover-color: #d4a33c;
|
|
124
|
-
--c-scrollbar-height: 8px;
|
|
125
|
-
}
|
|
126
|
-
.content-table-body {
|
|
127
|
-
/* 自訂 scrollbar 樣式 */
|
|
128
|
-
scrollbar-width: thin; /* Firefox */
|
|
129
|
-
scrollbar-color: var(--c-scrollbar-thumb-color) var(--c-scrollbar-track-color); /* Firefox: thumb 和 track 顏色 */
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/* WebKit 瀏覽器 (Chrome, Safari, Edge) */
|
|
133
|
-
.content-table-body::-webkit-scrollbar {
|
|
134
|
-
height: var(--c-scrollbar-height); /* scrollbar 高度 */
|
|
135
|
-
}
|
|
136
|
-
.content-table-body::-webkit-scrollbar-track {
|
|
137
|
-
background: var(--c-scrollbar-track-color); /* track 背景色 */
|
|
138
|
-
border-radius: 4px;
|
|
139
|
-
}
|
|
140
|
-
.content-table-body::-webkit-scrollbar-thumb {
|
|
141
|
-
background: var(--c-scrollbar-thumb-color); /* thumb 顏色 */
|
|
142
|
-
border-radius: 4px;
|
|
143
|
-
transition: background 0.3s;
|
|
144
|
-
}
|
|
145
|
-
.content-table-body::-webkit-scrollbar-thumb:hover {
|
|
146
|
-
background: var(--c-scrollbar-thumb-hover-color); /* hover 時的顏色 */
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
.content-table[data-v-b60bf553] {
|
|
151
|
-
display: flex;
|
|
152
|
-
flex-direction: column;
|
|
153
|
-
justify-content: center;
|
|
154
|
-
align-items: center;
|
|
155
|
-
}
|
|
156
|
-
.content-table table[data-v-b60bf553] {
|
|
157
|
-
table-layout: auto;
|
|
158
|
-
}
|
|
159
|
-
.content-table-body[data-v-b60bf553] {
|
|
160
|
-
width: 100%;
|
|
161
|
-
overflow-x: auto;
|
|
162
|
-
}
|
|
163
|
-
.content-table table th[data-v-b60bf553],
|
|
164
|
-
.content-table table td[data-v-b60bf553] {
|
|
165
|
-
width: auto;
|
|
166
|
-
}
|
|
167
|
-
.content-table table td[data-v-b60bf553] {
|
|
168
|
-
vertical-align: middle;
|
|
169
|
-
text-align: left;
|
|
170
|
-
}
|
|
171
|
-
.content-table-footer[data-v-b60bf553] {
|
|
172
|
-
border-top: 1px solid #dee2e6;
|
|
173
|
-
}
|
|
174
|
-
.content-table .pagination .page-link[data-v-b60bf553] {
|
|
175
|
-
min-width: 36px;
|
|
176
|
-
text-align: center;
|
|
177
|
-
display: inline-block;
|
|
178
|
-
color: var(--c-pagination-text-color, #2e2e2e);
|
|
179
|
-
background-color: var(--c-pagination-bg-color, #fff);
|
|
180
|
-
border: 1px solid var(--c-pagination-border-color, #E4B445);
|
|
181
|
-
margin: 0 2px;
|
|
182
|
-
border-radius: 4px;
|
|
183
|
-
transition: background-color .3s, color .3s;
|
|
184
|
-
}
|
|
185
|
-
.content-table .pagination .page-link[data-v-b60bf553]:hover,
|
|
186
|
-
.content-table .pagination .page-link[data-v-b60bf553]:focus {
|
|
187
|
-
background-color: var(--c-pagination-hover-bg-color, #E4B445);
|
|
188
|
-
color: var(--c-pagination-hover-text-color, #fff);
|
|
189
|
-
border-color: var(--c-pagination-hover-border-color, #d4a33c);
|
|
190
|
-
}
|
|
191
|
-
.content-table .pagination .active .page-link[data-v-b60bf553] {
|
|
192
|
-
background-color: var(--c-pagination-active-bg-color, #E4B445);
|
|
193
|
-
color: var(--c-pagination-active-text-color, #fff);
|
|
194
|
-
border-color: var(--c-pagination-active-border-color, #E4B445);
|
|
195
|
-
}
|
|
196
|
-
.content-table .pagination .page-link.c-page-action[data-v-b60bf553] {
|
|
197
|
-
padding-left: 0.2rem;
|
|
198
|
-
padding-right: 0.2rem;
|
|
199
|
-
}
|
|
200
|
-
.dropdown-menu.c-page-menu[data-v-b60bf553] {
|
|
201
|
-
min-width: 200px;
|
|
202
|
-
}
|
|
203
|
-
.c-sortable[data-v-b60bf553] {
|
|
204
|
-
cursor: pointer;
|
|
205
|
-
user-select: none;
|
|
206
|
-
transition: background-color 0.2s;
|
|
207
|
-
}
|
|
208
|
-
.c-sortable[data-v-b60bf553]:hover {
|
|
209
|
-
background-color: rgba(0, 123, 255, 0.1);
|
|
210
|
-
}
|
|
211
|
-
.c-sort-icon[data-v-b60bf553] {
|
|
212
|
-
font-size: 16px;
|
|
213
|
-
color: #6c757d;
|
|
214
|
-
transition: color 0.2s;
|
|
215
|
-
}
|
|
216
|
-
.c-sortable:hover .c-sort-icon[data-v-b60bf553] {
|
|
217
|
-
color: #007bff;
|
|
218
|
-
}
|
|
219
|
-
.c-sortable .c-arrow-up[data-v-b60bf553],
|
|
220
|
-
.c-sortable .c-arrow-down[data-v-b60bf553] {
|
|
221
|
-
color: #007bff;
|
|
222
|
-
}
|
|
223
|
-
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { default as _ } from 'lodash';
|
|
2
|
-
import * as yup from "yup";
|
|
3
|
-
/**
|
|
4
|
-
* 空函式
|
|
5
|
-
*/
|
|
6
|
-
export declare const voidFunction: () => void;
|
|
7
|
-
/**
|
|
8
|
-
* 延遲指定毫秒數
|
|
9
|
-
* @param ms 毫秒數
|
|
10
|
-
*/
|
|
11
|
-
export declare const delay: (ms: number) => Promise<unknown>;
|
|
12
|
-
/**
|
|
13
|
-
* 從 params 中挑選有值的屬性並指派到 payload 中
|
|
14
|
-
* @param payload
|
|
15
|
-
* @param params
|
|
16
|
-
*/
|
|
17
|
-
export declare const pickAndAssign: (payload: Record<string, any>, params: Record<string, any>) => Record<string, any> & _.Dictionary<any>;
|
|
18
|
-
/**
|
|
19
|
-
* 寫入 Vue ref 物件的值
|
|
20
|
-
* @param refObj
|
|
21
|
-
* @param value
|
|
22
|
-
*/
|
|
23
|
-
export declare const writeVueRefValue: (refObj: any, value: any) => void;
|
|
24
|
-
/**
|
|
25
|
-
* Lodash 擴充工具
|
|
26
|
-
*/
|
|
27
|
-
export declare const lodashExTools: {
|
|
28
|
-
getVal: (obj: any, path: string | null | undefined, defaultValue?: any) => any;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* 檢查是否有相同的檔案
|
|
32
|
-
* @param fileList 檔案列表
|
|
33
|
-
* @param file 要檢查的檔案
|
|
34
|
-
*/
|
|
35
|
-
export declare const checkHasSameFile: (fileList: File[], file: File) => boolean;
|
|
36
|
-
/**
|
|
37
|
-
* 格式化物件中的所有日期屬性為指定格式的字串。
|
|
38
|
-
* @param obj
|
|
39
|
-
*/
|
|
40
|
-
export declare function formatDatesInObject(obj: any): any;
|
|
41
|
-
/**
|
|
42
|
-
* 建立一個日期區間驗證器,用於 yup 的 test 方法中。
|
|
43
|
-
* @param startDateKey
|
|
44
|
-
* @param endDateKey
|
|
45
|
-
* @param startDateMessage
|
|
46
|
-
* @param endDateMessage
|
|
47
|
-
*/
|
|
48
|
-
export declare function makeDateRangeValidator({ startDateKey, endDateKey, startDateMessage, endDateMessage }: {
|
|
49
|
-
startDateKey: string;
|
|
50
|
-
endDateKey: string;
|
|
51
|
-
startDateMessage: string;
|
|
52
|
-
endDateMessage: string;
|
|
53
|
-
}): (this: yup.TestContext, formValues: Record<string, any>) => true | yup.ValidationError;
|