@g1cloud/open-bluesea-core 1.0.0-alpha.1 → 1.0.0-alpha.10

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 CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Vue UI Library for Management Console.",
4
4
  "license": "Proprietary",
5
5
  "private": false,
6
- "version": "1.0.0-alpha.1",
6
+ "version": "1.0.0-alpha.10",
7
7
  "type": "module",
8
8
  "engines": {
9
9
  "node": ">= 24.3.0"
@@ -12,20 +12,35 @@
12
12
  "main": "./dist/open-bluesea-core.umd.js",
13
13
  "module": "./dist/open-bluesea-core.es.js",
14
14
  "types": "./dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/open-bluesea-core.es.js",
19
+ "require": "./dist/open-bluesea-core.umd.js"
20
+ },
21
+ "./tailwind.preset": "./tailwind.preset.js",
22
+ "./css/*": "./css/*",
23
+ "./dist/*": "./dist/*"
24
+ },
15
25
  "files": [
16
26
  "dist",
17
27
  "css",
28
+ "tailwind.preset.js",
18
29
  "!dist/tests"
19
30
  ],
20
31
  "devDependencies": {
21
32
  "@rollup/plugin-typescript": "^12.3.0",
33
+ "@tailwindcss/vite": "^4.1.16",
22
34
  "@types/node": "^24.3.0",
23
35
  "@vitejs/plugin-vue": "^6.0.1",
36
+ "tailwindcss": "^4.1.16",
24
37
  "typescript": "~5.9.3",
25
38
  "vite": "^7.1.12",
39
+ "vite-plugin-dts": "^4.5.4",
26
40
  "vue-tsc": "^3.1.3"
27
41
  },
28
42
  "dependencies": {
43
+ "@material-icons/svg": "^1.0.33",
29
44
  "dayjs": "^1.11.19",
30
45
  "tslib": "^2.8.1",
31
46
  "vue": "^3.5.22"
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Bluesea Core Tailwind CSS Preset
3
+ *
4
+ * This preset exposes Bluesea CSS variables as Tailwind theme values.
5
+ * Users can override these values either:
6
+ * 1. Via CSS variables in their stylesheets
7
+ * 2. Via Tailwind theme configuration
8
+ *
9
+ * @example
10
+ * // tailwind.config.js
11
+ * import blueseaPreset from '@g1cloud/open-bluesea-core/tailwind.preset'
12
+ *
13
+ * export default {
14
+ * presets: [blueseaPreset],
15
+ * theme: {
16
+ * extend: {
17
+ * // Override specific values
18
+ * colors: {
19
+ * 'bs-button-bg': '#FF5722',
20
+ * }
21
+ * }
22
+ * }
23
+ * }
24
+ */
25
+
26
+ /** @type {import('tailwindcss').Config} */
27
+ export default {
28
+ theme: {
29
+ extend: {
30
+ colors: {
31
+ // Primary colors
32
+ 'bs-primary': 'var(--primary)',
33
+ 'bs-secondary': 'var(--secondary)',
34
+ 'bs-success': 'var(--success)',
35
+ 'bs-info': 'var(--info)',
36
+ 'bs-warning': 'var(--warning)',
37
+ 'bs-danger': 'var(--danger)',
38
+
39
+ // Button colors
40
+ 'bs-button-bg': 'var(--bs-button-bg)',
41
+ 'bs-button-text': 'var(--bs-button-text)',
42
+ 'bs-button-border': 'var(--bs-button-border)',
43
+ 'bs-button-blue-bg': 'var(--bs-button-blue-bg)',
44
+ 'bs-button-blue-text': 'var(--bs-button-blue-text)',
45
+ 'bs-button-red-bg': 'var(--bs-button-red-bg)',
46
+ 'bs-button-red-text': 'var(--bs-button-red-text)',
47
+ 'bs-button-orange-bg': 'var(--bs-button-orange-bg)',
48
+ 'bs-button-orange-text': 'var(--bs-button-orange-text)',
49
+ 'bs-button-green-bg': 'var(--bs-button-green-bg)',
50
+ 'bs-button-green-text': 'var(--bs-button-green-text)',
51
+ 'bs-button-gray-bg': 'var(--bs-button-gray-bg)',
52
+ 'bs-button-gray-text': 'var(--bs-button-gray-text)',
53
+ 'bs-button-black-bg': 'var(--bs-button-black-bg)',
54
+ 'bs-button-black-text': 'var(--bs-button-black-text)',
55
+
56
+ // Input colors
57
+ 'bs-input-bg': 'var(--bs-input-bg)',
58
+ 'bs-input-text': 'var(--bs-input-text)',
59
+ 'bs-input-border': 'var(--bs-input-border)',
60
+ 'bs-input-border-hover': 'var(--bs-input-border-hover)',
61
+ 'bs-input-border-focus': 'var(--bs-input-border-focus)',
62
+ 'bs-input-placeholder': 'var(--bs-input-placeholder)',
63
+ 'bs-input-disabled-bg': 'var(--bs-input-disabled-bg)',
64
+ 'bs-input-disabled-text': 'var(--bs-input-disabled-text)',
65
+ 'bs-input-modified-border': 'var(--bs-input-modified-border)',
66
+ 'bs-input-error-border': 'var(--bs-input-error-border)',
67
+ 'bs-input-error-text': 'var(--bs-input-error-text)',
68
+ 'bs-input-affix-bg': 'var(--bs-input-affix-bg)',
69
+ 'bs-input-affix-text': 'var(--bs-input-affix-text)',
70
+
71
+ // Checkbox/Radio colors
72
+ 'bs-check-icon-color': 'var(--bs-check-icon-color)',
73
+ 'bs-check-icon-hover': 'var(--bs-check-icon-hover)',
74
+ 'bs-check-icon-focus': 'var(--bs-check-icon-focus)',
75
+ 'bs-check-icon-disabled': 'var(--bs-check-icon-disabled)',
76
+ 'bs-check-icon-modified': 'var(--bs-check-icon-modified)',
77
+ 'bs-check-icon-error': 'var(--bs-check-icon-error)',
78
+
79
+ // Select colors
80
+ 'bs-select-bg': 'var(--bs-select-bg)',
81
+ 'bs-select-text': 'var(--bs-select-text)',
82
+ 'bs-select-border': 'var(--bs-select-border)',
83
+ 'bs-select-border-hover': 'var(--bs-select-border-hover)',
84
+ 'bs-select-border-focus': 'var(--bs-select-border-focus)',
85
+ 'bs-select-placeholder': 'var(--bs-select-placeholder)',
86
+ 'bs-select-disabled-bg': 'var(--bs-select-disabled-bg)',
87
+ 'bs-select-disabled-text': 'var(--bs-select-disabled-text)',
88
+ 'bs-select-modified-border': 'var(--bs-select-modified-border)',
89
+ 'bs-select-error-border': 'var(--bs-select-error-border)',
90
+
91
+ // Radio Button Group colors
92
+ 'bs-radio-switch-bg': 'var(--bs-radio-switch-bg)',
93
+ 'bs-radio-switch-active-bg': 'var(--bs-radio-switch-active-bg)',
94
+ 'bs-radio-switch-active-text': 'var(--bs-radio-switch-active-text)',
95
+ 'bs-radio-switch-inactive-text': 'var(--bs-radio-switch-inactive-text)',
96
+ 'bs-radio-button-bg': 'var(--bs-radio-button-bg)',
97
+ 'bs-radio-button-text': 'var(--bs-radio-button-text)',
98
+ 'bs-radio-button-border': 'var(--bs-radio-button-border)',
99
+ 'bs-radio-button-active-bg': 'var(--bs-radio-button-active-bg)',
100
+ 'bs-radio-button-active-text': 'var(--bs-radio-button-active-text)',
101
+ 'bs-radio-button-active-border': 'var(--bs-radio-button-active-border)',
102
+
103
+ // Date Input colors
104
+ 'bs-date-input-bg': 'var(--bs-date-input-bg)',
105
+ 'bs-date-input-text': 'var(--bs-date-input-text)',
106
+ 'bs-date-input-border': 'var(--bs-date-input-border)',
107
+ 'bs-date-input-border-hover': 'var(--bs-date-input-border-hover)',
108
+ 'bs-date-input-border-focus': 'var(--bs-date-input-border-focus)',
109
+
110
+ // Popup/Tooltip colors
111
+ 'bs-popup-bg': 'var(--bs-popup-bg)',
112
+ 'bs-popup-border': 'var(--bs-popup-border)',
113
+ 'bs-tooltip-bg': 'var(--bs-tooltip-bg)',
114
+ 'bs-tooltip-text': 'var(--bs-tooltip-text)',
115
+
116
+ // Page Navigation colors
117
+ 'bs-page-nav-button-bg': 'var(--bs-page-nav-button-bg)',
118
+ 'bs-page-nav-button-text': 'var(--bs-page-nav-button-text)',
119
+ 'bs-page-nav-button-hover-bg': 'var(--bs-page-nav-button-hover-bg)',
120
+ 'bs-page-nav-button-active-bg': 'var(--bs-page-nav-button-active-bg)',
121
+ 'bs-page-nav-button-active-text': 'var(--bs-page-nav-button-active-text)',
122
+
123
+ // Card Layout colors
124
+ 'bs-card-bg': 'var(--bs-card-bg)',
125
+ 'bs-card-border': 'var(--bs-card-border)',
126
+ 'bs-card-header-bg': 'var(--bs-card-header-bg)',
127
+ 'bs-card-header-text': 'var(--bs-card-header-text)',
128
+
129
+ // Loading
130
+ 'bs-loading-color': 'var(--bs-loading-color)',
131
+
132
+ // Notification colors
133
+ 'bs-notification-bg': 'var(--bs-notification-bg)',
134
+ 'bs-notification-text': 'var(--bs-notification-text)',
135
+ 'bs-notification-success-accent': 'var(--bs-notification-success-accent)',
136
+ 'bs-notification-error-accent': 'var(--bs-notification-error-accent)',
137
+ 'bs-notification-warning-accent': 'var(--bs-notification-warning-accent)',
138
+ 'bs-notification-info-accent': 'var(--bs-notification-info-accent)',
139
+
140
+ // Modal colors
141
+ 'bs-modal-bg': 'var(--bs-modal-bg)',
142
+ 'bs-modal-text': 'var(--bs-modal-text)',
143
+ 'bs-modal-header-bg': 'var(--bs-modal-header-bg)',
144
+ 'bs-modal-header-text': 'var(--bs-modal-header-text)',
145
+ 'bs-modal-overlay-bg': 'var(--bs-modal-overlay-bg)',
146
+
147
+ // Context Menu colors
148
+ 'bs-context-menu-bg': 'var(--bs-context-menu-bg)',
149
+ 'bs-context-menu-text': 'var(--bs-context-menu-text)',
150
+ 'bs-context-menu-border': 'var(--bs-context-menu-border)',
151
+ 'bs-context-menu-item-hover-bg': 'var(--bs-context-menu-item-hover-bg)',
152
+ 'bs-context-menu-separator': 'var(--bs-context-menu-separator)',
153
+ },
154
+
155
+ height: {
156
+ 'bs-input': 'var(--bs-input-height)',
157
+ 'bs-button': 'var(--bs-button-height)',
158
+ 'bs-select': 'var(--bs-select-height)',
159
+ 'bs-date-input': 'var(--bs-date-input-height)',
160
+ 'bs-page-nav-button': 'var(--bs-page-nav-button-size)',
161
+ },
162
+
163
+ width: {
164
+ 'bs-date-input': 'var(--bs-date-input-width)',
165
+ 'bs-page-nav-button': 'var(--bs-page-nav-button-size)',
166
+ 'bs-loading': 'var(--bs-loading-size)',
167
+ },
168
+
169
+ borderRadius: {
170
+ 'bs': 'var(--bs-border-radius)',
171
+ 'bs-input': 'var(--bs-input-border-radius)',
172
+ 'bs-button': 'var(--bs-button-border-radius)',
173
+ 'bs-select': 'var(--bs-select-border-radius)',
174
+ 'bs-date-input': 'var(--bs-date-input-border-radius)',
175
+ 'bs-popup': 'var(--bs-popup-border-radius)',
176
+ 'bs-tooltip': 'var(--bs-tooltip-border-radius)',
177
+ 'bs-page-nav-button': 'var(--bs-page-nav-button-border-radius)',
178
+ 'bs-card': 'var(--bs-card-border-radius)',
179
+ 'bs-notification': 'var(--bs-notification-border-radius)',
180
+ 'bs-modal': 'var(--bs-modal-border-radius)',
181
+ 'bs-context-menu': 'var(--bs-context-menu-border-radius)',
182
+ },
183
+
184
+ padding: {
185
+ 'bs-input-x': 'var(--bs-input-padding-x)',
186
+ 'bs-button-x': 'var(--bs-button-padding-x)',
187
+ 'bs-button-y': 'var(--bs-button-padding-y)',
188
+ 'bs-select-x': 'var(--bs-select-padding-x)',
189
+ 'bs-check-label-x': 'var(--bs-check-label-padding-x)',
190
+ 'bs-check-label-y': 'var(--bs-check-label-padding-y)',
191
+ 'bs-tooltip-x': 'var(--bs-tooltip-padding-x)',
192
+ 'bs-tooltip-y': 'var(--bs-tooltip-padding-y)',
193
+ 'bs-card-header-x': 'var(--bs-card-header-padding-x)',
194
+ 'bs-card-header-y': 'var(--bs-card-header-padding-y)',
195
+ },
196
+
197
+ gap: {
198
+ 'bs-check-group-x': 'var(--bs-check-group-gap-x)',
199
+ 'bs-check-group-y': 'var(--bs-check-group-gap-y)',
200
+ },
201
+
202
+ fontSize: {
203
+ 'bs': 'var(--bs-font-size)',
204
+ 'bs-sm': 'var(--bs-font-size-sm)',
205
+ 'bs-button': 'var(--bs-button-font-size)',
206
+ 'bs-input-affix': 'var(--bs-input-affix-font-size)',
207
+ 'bs-check-icon': 'var(--bs-check-icon-size)',
208
+ 'bs-date-input-icon': 'var(--bs-date-input-icon-size)',
209
+ 'bs-tooltip': 'var(--bs-tooltip-font-size)',
210
+ 'bs-loading': 'var(--bs-loading-size)',
211
+ },
212
+
213
+ boxShadow: {
214
+ 'bs-popup': 'var(--bs-popup-shadow)',
215
+ 'bs-notification': 'var(--bs-notification-shadow)',
216
+ 'bs-modal': 'var(--bs-modal-shadow)',
217
+ 'bs-context-menu': 'var(--bs-context-menu-shadow)',
218
+ },
219
+ },
220
+ },
221
+ }
@@ -1,36 +0,0 @@
1
- import { type InjectionKey, type Plugin } from "vue";
2
- import type { DisplayDateResolution } from "./model/CommonTypes";
3
- export type PopupComponentConfig = {
4
- container?: string | HTMLElement;
5
- hideOnScroll?: boolean;
6
- };
7
- export type ComponentConfig = {
8
- popup?: PopupComponentConfig;
9
- };
10
- export declare class BlueseaConfig {
11
- dateFormat: string;
12
- dateFormatDay: string;
13
- dateFormatMinute: string;
14
- dateFormatSecond: string;
15
- minDateValue: string;
16
- maxDateValue: string;
17
- componentConfig: ComponentConfig;
18
- constructor(config?: BlueseaConfigRaw);
19
- resolveDisplayDateFormat(format?: string | DisplayDateResolution): string;
20
- }
21
- export type BlueseaConfigRaw = {
22
- dateFormat?: string;
23
- dateFormatDay?: string;
24
- dateFormatMinute?: string;
25
- dateFormatSecond?: string;
26
- minDateValue?: string;
27
- maxDateValue?: string;
28
- componentConfig?: ComponentConfig;
29
- };
30
- export declare const BlueseaConfigKey: InjectionKey<BlueseaConfig>;
31
- /**
32
- * App 에 provide 된 BlueseaConfig 를 리턴한다.
33
- * @returns BlueseaConfig
34
- */
35
- export declare const useBlueseaConfig: () => BlueseaConfig;
36
- export declare const BlueseaPlugin: Plugin;
@@ -1,5 +0,0 @@
1
- export type PageInfo = {
2
- offset?: number;
3
- limit?: number;
4
- totalCount?: number;
5
- };
@@ -1,36 +0,0 @@
1
- import { type Component } from "vue";
2
- export declare const ContextMenuPluginKey: unique symbol;
3
- export type MenuItem = {
4
- type?: 'menu' | 'link' | 'route' | 'separator' | 'custom';
5
- menuId?: string;
6
- caption?: string;
7
- component?: Component;
8
- disabled?: boolean;
9
- handler?: () => void;
10
- href?: string;
11
- target?: string;
12
- children?: MenuItem[];
13
- };
14
- export type MenuPosition = {
15
- x: number;
16
- y: number;
17
- };
18
- export type ContextMenuOptions = {
19
- zIndex?: number;
20
- onHideContextMenu?: () => void;
21
- };
22
- export type MousePosition = {
23
- clientX: number;
24
- clientY: number;
25
- };
26
- export declare class BSContextMenuPlugin {
27
- contextMenuItems: import("vue").Ref<MenuItem[] | undefined, MenuItem[] | undefined>;
28
- position: import("vue").Ref<MenuPosition | undefined, MenuPosition | undefined>;
29
- options: import("vue").Ref<ContextMenuOptions | undefined, ContextMenuOptions | undefined>;
30
- showContextMenu(event: MousePosition, menus: MenuItem[], options?: ContextMenuOptions): void;
31
- hideContextMenu(): void;
32
- private markComponentRaw;
33
- }
34
- export declare const useContextMenu: () => BSContextMenuPlugin;
35
- export declare const useContextMenuOptional: () => BSContextMenuPlugin | undefined;
36
- export declare const createContextMenuPlugin: () => BSContextMenuPlugin;
@@ -1,20 +0,0 @@
1
- import type { ObjectDirective } from "vue";
2
- type ClickOutsideContext = {
3
- enabled: boolean;
4
- handler: () => void;
5
- insideElements?: (HTMLElement | string | undefined)[];
6
- };
7
- declare global {
8
- interface HTMLElement {
9
- vClickOutsideListener?: (event: MouseEvent) => void;
10
- vClickOutsideContext?: ClickOutsideContext;
11
- }
12
- }
13
- /**
14
- * ```
15
- * v-click-outside="() => someFunction()"
16
- * v-click-outside="{enabled: true, handler: () => someFunction()}"
17
- * ```
18
- */
19
- declare const vClickOutside: ObjectDirective;
20
- export default vClickOutside;
@@ -1,3 +0,0 @@
1
- import type { ObjectDirective } from "vue";
2
- declare const vFocusOnLoad: ObjectDirective;
3
- export default vFocusOnLoad;
@@ -1,7 +0,0 @@
1
- import type { ObjectDirective } from "vue";
2
- export type TooltipParam = {
3
- content?: string;
4
- delay?: number;
5
- };
6
- declare const vTooltip: ObjectDirective;
7
- export default vTooltip;
@@ -1,29 +0,0 @@
1
- export type LabelProvider<T> = (item: T) => string | undefined;
2
- export type KeyProvider<T> = (item: T) => string | undefined;
3
- export type EnabledItemProvider<T> = (item: T) => boolean;
4
- export type IconProvider<T> = (item: T) => string | undefined;
5
- export type TooltipProvider<T> = (item: T) => string | undefined;
6
- export type LocaleName = string;
7
- export type TimeZone = string;
8
- export type DateResolution = 'DAY' | 'HOUR' | 'MINUTE_30' | 'MINUTE_10' | 'MINUTE' | 'SECOND';
9
- export type DisplayDateResolution = 'DAY' | 'MINUTE' | 'SECOND';
10
- /**
11
- * BSTextInput 등의 prefix, suffix 타입
12
- */
13
- export type PrefixSuffix = {
14
- type: 'text' | 'font-icon' | 'image-url';
15
- value: string;
16
- };
17
- export type StoredFile = {
18
- fileUrl?: string;
19
- mediaType?: 'Image' | 'Video' | 'Youtube' | 'Unknown';
20
- thumbnailUrl?: string;
21
- altText?: string;
22
- width?: number;
23
- height?: number;
24
- imageNo?: number;
25
- file?: File;
26
- thumbnailFile?: File;
27
- };
28
- export declare class IllegalAccessError {
29
- }
@@ -1,7 +0,0 @@
1
- import type { KeyProvider, LabelProvider } from "@/model/CommonTypes";
2
- export declare const defaultLabelProvider: <T>(item: T) => string;
3
- export declare const emptyLabelProvider: <T>(_item: T) => undefined;
4
- export declare const executeLabelProviderOrDefault: <T>(item: T, labelProvider: LabelProvider<T> | undefined, defaultLabel: (item: T) => string) => string;
5
- export declare const defaultKeyProvider: <T>(item: T) => string;
6
- export declare const emptyKeyProvider: <T>(_item: T) => undefined;
7
- export declare const executeKeyProviderOrDefault: <T>(item: T, keyProvider: KeyProvider<T> | undefined, defaultKey: (item: T) => string) => string;
@@ -1,14 +0,0 @@
1
- import type { LocaleName } from "@/model/CommonTypes.ts";
2
- export type IterationContext<T> = {
3
- componentName: string;
4
- record: T;
5
- recordKey?: string;
6
- recordIndex?: number;
7
- data: T[];
8
- };
9
- export type FieldContext<T> = {
10
- iteration?: IterationContext<T>;
11
- locale?: LocaleName;
12
- };
13
- export declare const provideFieldContext: <T>(fieldContext: FieldContext<T>) => void;
14
- export declare const useFieldContext: () => FieldContext<any> | undefined;
@@ -1,31 +0,0 @@
1
- import type { Component, Raw } from "vue";
2
- export type NotificationStyle = 'error' | 'info';
3
- export type NotificationEntry = {
4
- entryId: number;
5
- message: string;
6
- style: NotificationStyle;
7
- duration: number;
8
- };
9
- export declare const notificationEntries: import("vue").Reactive<NotificationEntry[]>;
10
- export declare const showNotification: (message: string, style?: NotificationStyle, durationInMilliSeconds?: number) => void;
11
- export type AlarmEntry = {
12
- entryId: number;
13
- component: Raw<Component>;
14
- duration: number;
15
- };
16
- export declare const alarmEntries: import("vue").Reactive<AlarmEntry[]>;
17
- export declare const showAlarm: (component: Component, durationInMilliSeconds?: number) => void;
18
- export declare const closeAlarm: (entryId: number | AlarmEntry) => void;
19
- export type TooltipEntry = {
20
- content: string;
21
- target: HTMLElement;
22
- cursorInTooltip: boolean;
23
- };
24
- export declare const tooltipEntry: import("vue").Ref<TooltipEntry | undefined, TooltipEntry | undefined>;
25
- export declare const showTooltip: (content: string, target: HTMLElement) => void;
26
- export declare const hideTooltip: () => void;
27
- export declare const isTooltipDisplayed: () => boolean;
28
- export declare const showLoadingIcon: import("vue").Ref<boolean, boolean>;
29
- export declare const showLoading: () => void;
30
- export declare const hideLoading: () => void;
31
- export declare const withLoading: <T>(func: () => Promise<T>) => Promise<T>;
@@ -1,46 +0,0 @@
1
- import type { Ref } from "vue";
2
- export type SavePointValueProvider<T> = {
3
- getCurrentValue: () => T;
4
- setCurrentValue: (value: T) => void;
5
- compare?: (savedValue: T, currentValue: T) => boolean;
6
- };
7
- export type SavePointHandlerRegisterOption<T> = {
8
- field: Ref<HTMLElement | undefined>;
9
- } & SavePointValueProvider<T>;
10
- export interface ChildSavePoint {
11
- set(): void;
12
- rollback(): void;
13
- isModified(): boolean;
14
- }
15
- export interface SavePoint {
16
- registerField<T>(option: SavePointHandlerRegisterOption<T>): SavePointHandler<T>;
17
- unregisterField(field: Ref<HTMLElement | undefined>): void;
18
- addChild(child: ChildSavePoint): void;
19
- removeChild(child: ChildSavePoint): void;
20
- set(): void;
21
- setNextTick(): Promise<void>;
22
- rollback(): void;
23
- isModified(): boolean;
24
- }
25
- export declare class SavePointImpl implements SavePoint {
26
- private fields;
27
- private children?;
28
- registerField<T>(option: SavePointHandlerRegisterOption<T>): SavePointHandler<T>;
29
- unregisterField(field: Ref<HTMLElement | undefined>): void;
30
- addChild(child: ChildSavePoint): void;
31
- removeChild(child: ChildSavePoint): void;
32
- set(): void;
33
- setNextTick(): Promise<void>;
34
- rollback(): void;
35
- isModified(): boolean;
36
- }
37
- export declare const provideSavePoint: () => SavePoint;
38
- export declare const useSavePoint: () => SavePoint | undefined;
39
- export declare const cancelProvidedSavePoint: () => void;
40
- export interface SavePointHandler<T> {
41
- saveValue(): void;
42
- getSavedValue(): T | undefined;
43
- rollbackValue(): void;
44
- isModified(currentValue: T): boolean;
45
- isFieldModified(): boolean;
46
- }
@@ -1,11 +0,0 @@
1
- import type { PrefixSuffix } from "@/model/CommonTypes";
2
- declare const componentUtil: {
3
- handleExternalErrorMessage(showErrorMessage: boolean, errorMessage?: string, elementId?: string): void;
4
- generateNextId(prefix: string): string;
5
- generateNextName(prefix: string): string;
6
- isRelativeSize(size?: string): boolean;
7
- delayed<T>(func: () => T, millis?: number): void;
8
- trimStringValue(value?: string, trim?: boolean): string | undefined;
9
- getPrefixSuffixList(param: string | string[] | PrefixSuffix | PrefixSuffix[] | undefined): PrefixSuffix[];
10
- };
11
- export default componentUtil;
@@ -1,16 +0,0 @@
1
- /**
2
- * debounce 함수를 생성한다.
3
- *
4
- * ```ts
5
- * // 함수를 만들 때 debounce 로 감싼다.
6
- * const debouncedFunc = debounce(() => {
7
- * ...
8
- * }, 500)()
9
- *
10
- * // 여러 번 호출하더라도, 마지막 호출만 실행된다.
11
- * debouncedFunc()
12
- * ```
13
- * @param func
14
- * @param wait
15
- */
16
- export declare const debounce: <T>(func: (...args: any[]) => T, wait: number) => ((...args: any[]) => Promise<T>);
@@ -1,67 +0,0 @@
1
- export declare const formatUtil: {
2
- /**
3
- * 개행 문자('\r', '\n')를 '<br/>' 태그로 변경한다.
4
- * @param str 변경할 String
5
- * @return 개행문자가 '<br/>'로 변경된 String
6
- */
7
- escapeNewLine(str?: string): string;
8
- /**
9
- * `str` 안의 `&<>"'` 문자를 escape 처리한다.
10
- * @param str 변경할 String
11
- */
12
- escapeHtml(str?: string): string;
13
- /**
14
- * String 을 개행 문자('\r', '\n') 기준으로 나눈다.
15
- * @param str
16
- * @return 개행문자로 나누어진 string 의 array
17
- */
18
- splitNewLine(str?: string): Array<string>;
19
- /**
20
- * ISO8601 형식의 string 을 주어진 format 으로 변환한다.
21
- * @param utcDate
22
- * @param format
23
- * @param displayTimeZone
24
- */
25
- /**
26
- * 숫자에 구분점을 넣는다. 소수점 이하가 있는 경우도 처리한다.
27
- * * 12345 -> '12,345'
28
- * * 12345.12345 -> '12,345.12345'
29
- * * 0 -> '0'
30
- * * undefined -> null
31
- * * null -> null
32
- *
33
- * @param value
34
- * @return
35
- */
36
- formatNumber(value?: number | string | null): string | null;
37
- formatNumberByCode(value?: number | string | null, locale?: string | "ko-KR"): string | null;
38
- /**
39
- * 통화단위와 표시위치를 받아 출력한다
40
- * @param value 값
41
- * @param currencyUnit 통화단위
42
- * @param prefix true 이면 withUnit을 앞에 붙이고, false 이면 뒤에 붙인다.
43
- */
44
- formatPrice(value?: number | string | null, currencyUnit?: string | "", prefix?: boolean): string | null;
45
- /**
46
- * rate 를 받아 percent 를 출력한다.
47
- * * 0.1 -> 10%
48
- * * 0.55 -> 55%
49
- * * 0.551 -> 55.1%
50
- * @param value 비율 값
51
- * @param withUnit true 이면 % 를 붙이고, false 이면 붙이지 않는다.
52
- * @param decimalPlace 소숫점 n번째에서 반올림한다.
53
- */
54
- formatPercent(value?: number | string | null, withUnit?: boolean, decimalPlace?: number): string | null;
55
- /**
56
- * 신용카드번호를 4자리 단위로 나누어 구분자를 넣는다.
57
- * @param value
58
- * @param separator 구분자
59
- */
60
- formatCreditCardNo(value: string, separator?: string): string | undefined;
61
- /**
62
- * `HTML`태그가 포함된 문자열에서 text 만 남긴다.
63
- * @param textIncludedHTMLElement HTML 태그를 포함하는 문자열
64
- * @return HTML 태그가 제거된 문자열
65
- */
66
- toPlainText(textIncludedHTMLElement?: string): string;
67
- };
@@ -1,18 +0,0 @@
1
- export type FunctionPropertyNames<T> = {
2
- [K in keyof T]: T[K] extends Function ? K : never;
3
- }[keyof T];
4
- export type FunctionProperties<T> = Pick<T, FunctionPropertyNames<T>>;
5
- export type NonFunctionPropertyNames<T> = {
6
- [K in keyof T]: T[K] extends Function ? never : K;
7
- }[keyof T];
8
- export type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;
9
- export type PartialNonFunctionProperties<T> = Partial<NonFunctionProperties<T>>;
10
- export type RawData<T> = PartialNonFunctionProperties<T>;
11
- /**
12
- * Array 의 filter 로 null/undefined 가 아닌 것을 걸러낼 때 사용한다.
13
- * ```ts
14
- * const array: (string | null)[] = ['test', null, 'sample', undefined]
15
- * const filtered: string[] = array.filter(notNull)
16
- * ```
17
- */
18
- export declare function notNull<T>(value: T | null | undefined): value is T;
@@ -1,19 +0,0 @@
1
- /**
2
- * 특정 조건이 완료될 때까지 여러 번 계속 시도한다.
3
- * @param condition 조건
4
- * @param intervalMilliseconds 시도 간격
5
- * @param maxTrial 최대 시도 수
6
- */
7
- export declare const waitUntil: (condition: () => boolean, intervalMilliseconds?: number, maxTrial?: number) => Promise<void>;
8
- /**
9
- * 일정 시간동안 기다린다.
10
- * @param milliSec 기다리는 시간
11
- */
12
- export declare const waitDuring: (milliSec?: number) => Promise<void>;
13
- export declare const tryUntil: (until: () => boolean | undefined, tryCall: () => void, intervalMilliseconds?: number, maxTrial?: number) => void;
14
- declare const _default: {
15
- waitUntil: (condition: () => boolean, intervalMilliseconds?: number, maxTrial?: number) => Promise<void>;
16
- waitDuring: (milliSec?: number) => Promise<void>;
17
- tryUntil: (until: () => boolean | undefined, tryCall: () => void, intervalMilliseconds?: number, maxTrial?: number) => void;
18
- };
19
- export default _default;