@g1cloud/bluesea 5.0.0-beta.2 → 5.0.0-beta.21
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/css/bluesea.css +171 -35
- package/dist/{BSAlertModal-BixCrZDD.js → BSAlertModal-CYU9CQls.js} +1 -1
- package/dist/{BSGridColumnSettingModal-CVVenSnr.js → BSGridColumnSettingModal-ZZsojFuF.js} +1 -1
- package/dist/{BSRichTextMaximizedModal-BqzE5__U.js → BSRichTextMaximizedModal-SyLzOqK2.js} +1 -1
- package/dist/{BSYesNoModal-B5lERw_k.js → BSYesNoModal-BnlBSnTl.js} +1 -1
- package/dist/{BSYoutubeInputModal-eRBqHjeW.js → BSYoutubeInputModal-DoEETszL.js} +7 -2
- package/dist/{ImageInsertModal-DvKLXL1n.js → ImageInsertModal-CB7nCYk5.js} +2 -2
- package/dist/{ImageProperties.vue_vue_type_script_setup_true_lang-DVUZuLfG.js → ImageProperties.vue_vue_type_script_setup_true_lang-D6zZgPOW.js} +1 -1
- package/dist/{ImagePropertiesModal-Dsg6BS63.js → ImagePropertiesModal-DhC1BIGM.js} +2 -2
- package/dist/{LinkPropertiesModal-Ct0ykD4j.js → LinkPropertiesModal-CiC7e3lM.js} +1 -1
- package/dist/{TableInsertModal-BhyzkcTU.js → TableInsertModal-D6pcuU2G.js} +1 -1
- package/dist/TablePropertiesModal-dyMd6ysL.js +353 -0
- package/dist/{VideoInsertModal-BAwRYBzU.js → VideoInsertModal-B1uHQRye.js} +2 -2
- package/dist/{VideoProperties.vue_vue_type_script_setup_true_lang-BfwBHyER.js → VideoProperties.vue_vue_type_script_setup_true_lang-CuzZ0FvR.js} +1 -1
- package/dist/{VideoPropertiesModal-B2FeEw4W.js → VideoPropertiesModal-CWq4UM9A.js} +2 -2
- package/dist/{YoutubeInsertModal-EU6G-021.js → YoutubeInsertModal-BrhwLQmb.js} +3 -3
- package/dist/{YoutubeProperties.vue_vue_type_script_setup_true_lang-Ci3ndkZR.js → YoutubeProperties.vue_vue_type_script_setup_true_lang-AiYZ7nOr.js} +1 -1
- package/dist/{YoutubePropertiesModal-CRy6zJwZ.js → YoutubePropertiesModal-BcDH9UvU.js} +2 -2
- package/dist/bluesea.css +143 -32
- package/dist/bluesea.js +218 -209
- package/dist/bluesea.umd.cjs +2299 -1275
- package/dist/component/grid/BSGrid.vue.d.ts +3 -3
- package/dist/component/grid/BSGridLookup.vue.d.ts +3 -1
- package/dist/component/grid/DateFilterModel.d.ts +15 -0
- package/dist/component/grid/GridLib.d.ts +2 -1
- package/dist/component/grid/GridModel.d.ts +8 -0
- package/dist/component/input/BSCheckboxGroup.vue.d.ts +3 -0
- package/dist/component/input/BSColorInput.vue.d.ts +2 -0
- package/dist/component/input/BSDateInput.vue.d.ts +2 -0
- package/dist/component/input/BSDateRange.vue.d.ts +2 -0
- package/dist/component/input/BSDateRangePresets.vue.d.ts +2 -2
- package/dist/component/input/BSFileUpload.vue.d.ts +76 -0
- package/dist/component/input/BSImageUpload.vue.d.ts +2 -0
- package/dist/component/input/BSMultiSelect.vue.d.ts +12 -6
- package/dist/component/input/BSNumberInput.vue.d.ts +7 -0
- package/dist/component/input/BSPercentInput.vue.d.ts +166 -0
- package/dist/component/input/BSPopupSelect.vue.d.ts +3 -3
- package/dist/component/input/BSPriceInput.vue.d.ts +7 -0
- package/dist/component/input/BSRadioButton.vue.d.ts +3 -3
- package/dist/component/input/BSRadioButtonGroup.vue.d.ts +3 -0
- package/dist/component/input/BSSelect.vue.d.ts +15 -6
- package/dist/component/input/BSSelectPopup.vue.d.ts +6 -6
- package/dist/component/input/BSTextArea.vue.d.ts +2 -0
- package/dist/component/input/BSTextInput.vue.d.ts +2 -0
- package/dist/component/input/BSTreeMultiSelect.vue.d.ts +12 -6
- package/dist/component/input/BSTreeSelect.vue.d.ts +12 -6
- package/dist/component/input/BSYesNoGroup.vue.d.ts +4 -0
- package/dist/component/input/BSYesNoSelect.vue.d.ts +4 -0
- package/dist/component/input/DateRangePresetModel.d.ts +2 -0
- package/dist/component/input/ImageUploadModel.d.ts +2 -0
- package/dist/component/layout/BSCardLayout.vue.d.ts +6 -10
- package/dist/component/layout/BSListLayout.vue.d.ts +3 -0
- package/dist/component/layout/BSListLayoutItem.vue.d.ts +3 -0
- package/dist/component/multilang/BSMultiLangTextArea.vue.d.ts +2 -0
- package/dist/component/multilang/BSMultiLangTextInput.vue.d.ts +2 -0
- package/dist/component/richtext/RichTextModel.d.ts +1 -0
- package/dist/component/richtext/richTextUtil.d.ts +1 -1
- package/dist/component/richtext/table/RichTextTableCell.d.ts +1 -0
- package/dist/component/richtext/table/RichTextTableLib.d.ts +7 -1
- package/dist/component/tree/BSTree.vue.d.ts +9 -3
- package/dist/component/tree/BSTreeRow.vue.d.ts +9 -6
- package/dist/component/tree/TreeLib.d.ts +20 -0
- package/dist/component/tree/TreeModel.d.ts +33 -1
- package/dist/config/config.d.ts +14 -6
- package/dist/directive/vT.d.ts +6 -0
- package/dist/frame/default/DefaultFrameModel.d.ts +2 -0
- package/dist/{index-CDwzpZX0.js → index-D3w5seMa.js} +2183 -1333
- package/dist/index.d.ts +4 -1
- package/dist/model/CommonTypes.d.ts +1 -1
- package/dist/util/formatUtil.d.ts +4 -4
- package/dist/validator/FormValidator.d.ts +5 -0
- package/package.json +3 -3
- package/text/bluesea_text_en.json +20 -0
- package/text/bluesea_text_fr.json +20 -0
- package/text/bluesea_text_ja.json +20 -0
- package/text/bluesea_text_ko.json +20 -0
- package/text/bluesea_text_zh.json +20 -0
- package/dist/TablePropertiesModal-BAxcByTD.js +0 -184
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export { default as BSCalendar } from './component/basic/BSCalendar.vue';
|
|
|
16
16
|
export { default as BSCalendarRange } from './component/basic/BSCalendarRange.vue';
|
|
17
17
|
export { default as BSNumberInput } from './component/input/BSNumberInput.vue';
|
|
18
18
|
export { default as BSPriceInput } from './component/input/BSPriceInput.vue';
|
|
19
|
+
export { default as BSPercentInput } from './component/input/BSPercentInput.vue';
|
|
19
20
|
export { default as BSColorInput } from './component/input/BSColorInput.vue';
|
|
20
21
|
export { default as BSDateInput } from './component/input/BSDateInput.vue';
|
|
21
22
|
export { default as BSDateRange } from './component/input/BSDateRange.vue';
|
|
@@ -39,6 +40,7 @@ export * from './component/input/ImageUploadModel';
|
|
|
39
40
|
export { default as BSImageUpload } from './component/input/BSImageUpload.vue';
|
|
40
41
|
export { default as BSMultiImageUpload } from './component/input/BSMultiImageUpload.vue';
|
|
41
42
|
export { default as BSPositionedImageUpload } from './component/input/BSPositionedImageUpload.vue';
|
|
43
|
+
export { default as BSFileUpload } from './component/input/BSFileUpload.vue';
|
|
42
44
|
export { default as BSGrid } from './component/grid/BSGrid.vue';
|
|
43
45
|
export * from './component/grid/GridModel';
|
|
44
46
|
export * from './component/grid/GridExtension';
|
|
@@ -97,6 +99,7 @@ export * from './model/SearchModel';
|
|
|
97
99
|
export type * from './model/SearchModel';
|
|
98
100
|
export * from './model/FieldContext';
|
|
99
101
|
export type * from './model/FieldContext';
|
|
102
|
+
export * from './model/MoneySerializer';
|
|
100
103
|
export { default as BSModalContainer } from './modal/BSModalContainer.vue';
|
|
101
104
|
export { default as BSModalFrame } from './modal/BSModalFrame.vue';
|
|
102
105
|
export * from './modal/modalPlugin';
|
|
@@ -117,7 +120,7 @@ export * from './frame/default/DefaultFrameModel';
|
|
|
117
120
|
export * from './frame/ShortcutKeyHandler';
|
|
118
121
|
export * from './text/i18n';
|
|
119
122
|
export { default as vClickOutside } from './directive/vClickOutside';
|
|
120
|
-
export { default as vT, interpretMultiLangText } from './directive/vT';
|
|
123
|
+
export { default as vT, t, interpretMultiLangText } from './directive/vT';
|
|
121
124
|
export { default as vTooltip } from './directive/vTooltip';
|
|
122
125
|
export { default as vFocusOnLoad } from './directive/vFocusOnLoad';
|
|
123
126
|
export { default as vFocusJump } from './directive/vFocusJump';
|
|
@@ -5,7 +5,7 @@ export type IconProvider<T> = (item: T) => string | undefined;
|
|
|
5
5
|
export type TooltipProvider<T> = (item: T) => MultiLangText | undefined;
|
|
6
6
|
export type LocaleName = string;
|
|
7
7
|
export type TimeZone = string;
|
|
8
|
-
export type DateResolution = 'DAY' | 'HOUR' | 'MINUTE_10' | 'MINUTE';
|
|
8
|
+
export type DateResolution = 'DAY' | 'HOUR' | 'MINUTE_30' | 'MINUTE_10' | 'MINUTE' | 'SECOND';
|
|
9
9
|
export type DisplayDateResolution = 'DAY' | 'MINUTE' | 'SECOND';
|
|
10
10
|
/**
|
|
11
11
|
* {ko:'버튼', en:'Button'} 처럼, 언어코드별로 텍스트를 갖고있는 타입
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DisplayDateResolution, TimeZone } from '../model/CommonTypes.ts';
|
|
1
|
+
import { DisplayDateResolution, Money, TimeZone } from '../model/CommonTypes.ts';
|
|
2
2
|
|
|
3
3
|
export declare const formatUtil: {
|
|
4
4
|
/**
|
|
@@ -40,11 +40,11 @@ export declare const formatUtil: {
|
|
|
40
40
|
formatNumberByCode(value?: number | string | null, locale?: string | 'ko-KR'): string | null;
|
|
41
41
|
/**
|
|
42
42
|
* 통화단위와 표시위치를 받아 출력한다
|
|
43
|
-
* @param value 값
|
|
44
|
-
* @param currencyUnit 통화단위
|
|
43
|
+
* @param value 값 또는 Money 객체
|
|
44
|
+
* @param currencyUnit 통화단위 (Money 객체인 경우 무시됨)
|
|
45
45
|
* @param prefix true 이면 withUnit을 앞에 붙이고, false 이면 뒤에 붙인다.
|
|
46
46
|
*/
|
|
47
|
-
formatPrice(value?: number | string | null, currencyUnit?: string | '', prefix?: boolean): string | null;
|
|
47
|
+
formatPrice(value?: number | string | Money | null, currencyUnit?: string | '', prefix?: boolean): string | null;
|
|
48
48
|
/**
|
|
49
49
|
* rate 를 받아 percent 를 출력한다.
|
|
50
50
|
* * 0.1 -> 10%
|
|
@@ -22,6 +22,11 @@ export type FormValidator = {
|
|
|
22
22
|
* Form 안의 FieldValidator 를 모두 가져온다.
|
|
23
23
|
*/
|
|
24
24
|
getFieldValidators: () => FieldValidator<unknown>[];
|
|
25
|
+
/**
|
|
26
|
+
* name 속성으로 FieldValidator 를 가져온다.
|
|
27
|
+
* @param name
|
|
28
|
+
*/
|
|
29
|
+
getFieldValidator: (name: string) => FieldValidator<unknown> | undefined;
|
|
25
30
|
/**
|
|
26
31
|
* validation result 를 모두 제거하고, validation 을 수행하지 않은 상태로 돌아간다.
|
|
27
32
|
*/
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@g1cloud/bluesea",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.21",
|
|
5
5
|
"description": "Ui Library for g1cloud BackOffice.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"engines": {
|
|
@@ -54,13 +54,13 @@
|
|
|
54
54
|
"@vitest/coverage-v8": "^1.5.3",
|
|
55
55
|
"@vue/test-utils": "^2.4.6",
|
|
56
56
|
"jsdom": "^26.1.0",
|
|
57
|
+
"sass": "^1.86.3",
|
|
57
58
|
"typescript": "^5.4.5",
|
|
58
59
|
"vite": "^6.3.2",
|
|
59
60
|
"vite-plugin-dts": "^3.9.0",
|
|
60
61
|
"vitest": "^3.1.1",
|
|
61
62
|
"vitest-canvas-mock": "^0.3.3",
|
|
62
|
-
"vue-tsc": "^2.2.8"
|
|
63
|
-
"sass": "^1.86.3"
|
|
63
|
+
"vue-tsc": "^2.2.8"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"dayjs": "^1.11.11",
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"key": "bs.addYoutubeUrl",
|
|
8
8
|
"text": "Add YouTube URL"
|
|
9
9
|
},
|
|
10
|
+
{
|
|
11
|
+
"key": "bs.align",
|
|
12
|
+
"text": "Align"
|
|
13
|
+
},
|
|
10
14
|
{
|
|
11
15
|
"key": "bs.am",
|
|
12
16
|
"text": "AM"
|
|
@@ -35,6 +39,10 @@
|
|
|
35
39
|
"key": "bs.clear",
|
|
36
40
|
"text": "Clear"
|
|
37
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"key": "bs.clearAll",
|
|
44
|
+
"text": "Clear All"
|
|
45
|
+
},
|
|
38
46
|
{
|
|
39
47
|
"key": "bs.cleared",
|
|
40
48
|
"text": "It has been cleared."
|
|
@@ -312,6 +320,14 @@
|
|
|
312
320
|
"key": "bs.expandAll",
|
|
313
321
|
"text": "Expand All"
|
|
314
322
|
},
|
|
323
|
+
{
|
|
324
|
+
"key": "bs.fileUpload.noFile",
|
|
325
|
+
"text": "No file"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"key": "bs.fileUpload.selectFile",
|
|
329
|
+
"text": "Select file"
|
|
330
|
+
},
|
|
315
331
|
{
|
|
316
332
|
"key": "bs.fileupload.action",
|
|
317
333
|
"text": "Delete"
|
|
@@ -765,6 +781,10 @@
|
|
|
765
781
|
"key": "bs.richtext.table",
|
|
766
782
|
"text": "Table"
|
|
767
783
|
},
|
|
784
|
+
{
|
|
785
|
+
"key": "bs.richtext.tableColumnInfo",
|
|
786
|
+
"text": "Column Info."
|
|
787
|
+
},
|
|
768
788
|
{
|
|
769
789
|
"key": "bs.richtext.tableProperties",
|
|
770
790
|
"text": "Table Properties"
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"key": "bs.addYoutubeUrl",
|
|
8
8
|
"text": "Ajouter une URL YouTube"
|
|
9
9
|
},
|
|
10
|
+
{
|
|
11
|
+
"key": "bs.align",
|
|
12
|
+
"text": "Aligner"
|
|
13
|
+
},
|
|
10
14
|
{
|
|
11
15
|
"key": "bs.am",
|
|
12
16
|
"text": "SUIS"
|
|
@@ -35,6 +39,10 @@
|
|
|
35
39
|
"key": "bs.clear",
|
|
36
40
|
"text": "Clair"
|
|
37
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"key": "bs.clearAll",
|
|
44
|
+
"text": "Tout effacer"
|
|
45
|
+
},
|
|
38
46
|
{
|
|
39
47
|
"key": "bs.cleared",
|
|
40
48
|
"text": "Cela a été effacé."
|
|
@@ -312,6 +320,14 @@
|
|
|
312
320
|
"key": "bs.expandAll",
|
|
313
321
|
"text": "Développer tout"
|
|
314
322
|
},
|
|
323
|
+
{
|
|
324
|
+
"key": "bs.fileUpload.noFile",
|
|
325
|
+
"text": "Aucun fichier"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"key": "bs.fileUpload.selectFile",
|
|
329
|
+
"text": "Sélectionner un fichier"
|
|
330
|
+
},
|
|
315
331
|
{
|
|
316
332
|
"key": "bs.fileupload.action",
|
|
317
333
|
"text": "Supprimer"
|
|
@@ -765,6 +781,10 @@
|
|
|
765
781
|
"key": "bs.richtext.table",
|
|
766
782
|
"text": "Tableau"
|
|
767
783
|
},
|
|
784
|
+
{
|
|
785
|
+
"key": "bs.richtext.tableColumnInfo",
|
|
786
|
+
"text": "Info. sur la colonne"
|
|
787
|
+
},
|
|
768
788
|
{
|
|
769
789
|
"key": "bs.richtext.tableProperties",
|
|
770
790
|
"text": "Propriétés du tableau"
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"key": "bs.addYoutubeUrl",
|
|
8
8
|
"text": "YouTube動画登録"
|
|
9
9
|
},
|
|
10
|
+
{
|
|
11
|
+
"key": "bs.align",
|
|
12
|
+
"text": "並べ替え"
|
|
13
|
+
},
|
|
10
14
|
{
|
|
11
15
|
"key": "bs.am",
|
|
12
16
|
"text": "午前"
|
|
@@ -35,6 +39,10 @@
|
|
|
35
39
|
"key": "bs.clear",
|
|
36
40
|
"text": "クリア"
|
|
37
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"key": "bs.clearAll",
|
|
44
|
+
"text": "全体初期化"
|
|
45
|
+
},
|
|
38
46
|
{
|
|
39
47
|
"key": "bs.cleared",
|
|
40
48
|
"text": "初期化されました。"
|
|
@@ -312,6 +320,14 @@
|
|
|
312
320
|
"key": "bs.expandAll",
|
|
313
321
|
"text": "フルオープン"
|
|
314
322
|
},
|
|
323
|
+
{
|
|
324
|
+
"key": "bs.fileUpload.noFile",
|
|
325
|
+
"text": "ファイルなし"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"key": "bs.fileUpload.selectFile",
|
|
329
|
+
"text": "ファイル選択"
|
|
330
|
+
},
|
|
315
331
|
{
|
|
316
332
|
"key": "bs.fileupload.action",
|
|
317
333
|
"text": "削除"
|
|
@@ -765,6 +781,10 @@
|
|
|
765
781
|
"key": "bs.richtext.table",
|
|
766
782
|
"text": "テーブル"
|
|
767
783
|
},
|
|
784
|
+
{
|
|
785
|
+
"key": "bs.richtext.tableColumnInfo",
|
|
786
|
+
"text": "コラム情報"
|
|
787
|
+
},
|
|
768
788
|
{
|
|
769
789
|
"key": "bs.richtext.tableProperties",
|
|
770
790
|
"text": "テーブル属性"
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"key": "bs.addYoutubeUrl",
|
|
8
8
|
"text": "YouTube 동영상 등록"
|
|
9
9
|
},
|
|
10
|
+
{
|
|
11
|
+
"key": "bs.align",
|
|
12
|
+
"text": "정렬"
|
|
13
|
+
},
|
|
10
14
|
{
|
|
11
15
|
"key": "bs.am",
|
|
12
16
|
"text": "오전"
|
|
@@ -35,6 +39,10 @@
|
|
|
35
39
|
"key": "bs.clear",
|
|
36
40
|
"text": "초기화"
|
|
37
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"key": "bs.clearAll",
|
|
44
|
+
"text": "전체 초기화"
|
|
45
|
+
},
|
|
38
46
|
{
|
|
39
47
|
"key": "bs.cleared",
|
|
40
48
|
"text": "초기화 되었습니다."
|
|
@@ -312,6 +320,14 @@
|
|
|
312
320
|
"key": "bs.expandAll",
|
|
313
321
|
"text": "전체열기"
|
|
314
322
|
},
|
|
323
|
+
{
|
|
324
|
+
"key": "bs.fileUpload.noFile",
|
|
325
|
+
"text": "파일 없음"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"key": "bs.fileUpload.selectFile",
|
|
329
|
+
"text": "파일 선택"
|
|
330
|
+
},
|
|
315
331
|
{
|
|
316
332
|
"key": "bs.fileupload.action",
|
|
317
333
|
"text": "삭제"
|
|
@@ -765,6 +781,10 @@
|
|
|
765
781
|
"key": "bs.richtext.table",
|
|
766
782
|
"text": "테이블"
|
|
767
783
|
},
|
|
784
|
+
{
|
|
785
|
+
"key": "bs.richtext.tableColumnInfo",
|
|
786
|
+
"text": "칼럼 정보"
|
|
787
|
+
},
|
|
768
788
|
{
|
|
769
789
|
"key": "bs.richtext.tableProperties",
|
|
770
790
|
"text": "테이블 속성"
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
"key": "bs.addYoutubeUrl",
|
|
8
8
|
"text": "YouTube 视频注册"
|
|
9
9
|
},
|
|
10
|
+
{
|
|
11
|
+
"key": "bs.align",
|
|
12
|
+
"text": "對齊"
|
|
13
|
+
},
|
|
10
14
|
{
|
|
11
15
|
"key": "bs.am",
|
|
12
16
|
"text": "早晨"
|
|
@@ -35,6 +39,10 @@
|
|
|
35
39
|
"key": "bs.clear",
|
|
36
40
|
"text": "清除"
|
|
37
41
|
},
|
|
42
|
+
{
|
|
43
|
+
"key": "bs.clearAll",
|
|
44
|
+
"text": "完全擦拭"
|
|
45
|
+
},
|
|
38
46
|
{
|
|
39
47
|
"key": "bs.cleared",
|
|
40
48
|
"text": "已初始化。"
|
|
@@ -312,6 +320,14 @@
|
|
|
312
320
|
"key": "bs.expandAll",
|
|
313
321
|
"text": "全开"
|
|
314
322
|
},
|
|
323
|
+
{
|
|
324
|
+
"key": "bs.fileUpload.noFile",
|
|
325
|
+
"text": "无文件"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"key": "bs.fileUpload.selectFile",
|
|
329
|
+
"text": "选择文件"
|
|
330
|
+
},
|
|
315
331
|
{
|
|
316
332
|
"key": "bs.fileupload.action",
|
|
317
333
|
"text": "删除"
|
|
@@ -765,6 +781,10 @@
|
|
|
765
781
|
"key": "bs.richtext.table",
|
|
766
782
|
"text": "桌子"
|
|
767
783
|
},
|
|
784
|
+
{
|
|
785
|
+
"key": "bs.richtext.tableColumnInfo",
|
|
786
|
+
"text": "欄位資訊"
|
|
787
|
+
},
|
|
768
788
|
{
|
|
769
789
|
"key": "bs.richtext.tableProperties",
|
|
770
790
|
"text": "表格屬性"
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { defineComponent, computed, ref, onMounted, useTemplateRef, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createCommentVNode, withDirectives, createTextVNode, unref } from "vue";
|
|
2
|
-
import { k as componentUtil, u as useModalHandle, _ as _sfc_main$1, B as BSButton, b as _sfc_main$2, c as _sfc_main$3, v as vT, l as formValidator } from "./index-CDwzpZX0.js";
|
|
3
|
-
const findTableNode = (selection, type) => {
|
|
4
|
-
const head = selection.$head;
|
|
5
|
-
let depth = head.depth;
|
|
6
|
-
let node = head.node(depth);
|
|
7
|
-
while (depth > 0 && node && node.type.name !== type) {
|
|
8
|
-
node = head.node(--depth);
|
|
9
|
-
}
|
|
10
|
-
if (node && node.type.name === type) {
|
|
11
|
-
const nodePos = head.start(depth);
|
|
12
|
-
return { node, nodePos };
|
|
13
|
-
} else {
|
|
14
|
-
return {};
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const tableInfoNumberToPixel = (data) => {
|
|
18
|
-
return {
|
|
19
|
-
...data,
|
|
20
|
-
width: componentUtil.numberToPixel(data.width),
|
|
21
|
-
height: componentUtil.numberToPixel(data.height),
|
|
22
|
-
maxWidth: componentUtil.numberToPixel(data.maxWidth),
|
|
23
|
-
maxHeight: componentUtil.numberToPixel(data.maxHeight),
|
|
24
|
-
marginLeft: componentUtil.numberToPixel(data.marginLeft),
|
|
25
|
-
marginTop: componentUtil.numberToPixel(data.marginTop),
|
|
26
|
-
marginRight: componentUtil.numberToPixel(data.marginRight),
|
|
27
|
-
marginBottom: componentUtil.numberToPixel(data.marginBottom)
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
const _hoisted_1 = { class: "title" };
|
|
31
|
-
const _hoisted_2 = { class: "title" };
|
|
32
|
-
const _hoisted_3 = { class: "bs-layout-horizontal justify-content-end gap-8" };
|
|
33
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
34
|
-
__name: "TablePropertiesModal",
|
|
35
|
-
props: {
|
|
36
|
-
editor: {}
|
|
37
|
-
},
|
|
38
|
-
setup(__props) {
|
|
39
|
-
const props = __props;
|
|
40
|
-
const disabled = computed(() => !props.editor.isEditable);
|
|
41
|
-
const data = ref();
|
|
42
|
-
onMounted(() => {
|
|
43
|
-
const selection = props.editor.state.selection;
|
|
44
|
-
const { node } = findTableNode(selection, "table");
|
|
45
|
-
if (node) {
|
|
46
|
-
data.value = {
|
|
47
|
-
...node.attrs
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
const modalHandle = useModalHandle();
|
|
52
|
-
const form = useTemplateRef("form");
|
|
53
|
-
const validator = formValidator({ element: form });
|
|
54
|
-
const save = async () => {
|
|
55
|
-
await validator.validate();
|
|
56
|
-
props.editor.chain().focus().command(({ tr }) => {
|
|
57
|
-
const { node, nodePos } = findTableNode(tr.selection, "table");
|
|
58
|
-
if (node && nodePos && data.value) {
|
|
59
|
-
tr.setNodeMarkup(nodePos - 1, null, {
|
|
60
|
-
...node.attrs,
|
|
61
|
-
...tableInfoNumberToPixel(data.value)
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
65
|
-
}).run();
|
|
66
|
-
modalHandle.close();
|
|
67
|
-
};
|
|
68
|
-
const close = () => {
|
|
69
|
-
modalHandle.close();
|
|
70
|
-
};
|
|
71
|
-
modalHandle.setDefaultStyle({
|
|
72
|
-
width: "500px",
|
|
73
|
-
height: "400px"
|
|
74
|
-
});
|
|
75
|
-
return (_ctx, _cache) => {
|
|
76
|
-
return openBlock(), createBlock(_sfc_main$1, { title: { key: "bs.richtext.table" } }, {
|
|
77
|
-
default: withCtx(() => [
|
|
78
|
-
data.value ? (openBlock(), createElementBlock("div", {
|
|
79
|
-
key: 0,
|
|
80
|
-
ref_key: "form",
|
|
81
|
-
ref: form,
|
|
82
|
-
class: "bs-layout-form title-w-8"
|
|
83
|
-
}, [
|
|
84
|
-
createElementVNode("div", null, [
|
|
85
|
-
createElementVNode("div", _hoisted_1, [
|
|
86
|
-
createVNode(_sfc_main$2, { label: { key: "bs.size" } })
|
|
87
|
-
]),
|
|
88
|
-
createElementVNode("div", null, [
|
|
89
|
-
withDirectives(createVNode(_sfc_main$3, {
|
|
90
|
-
modelValue: data.value.width,
|
|
91
|
-
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => data.value.width = $event),
|
|
92
|
-
disabled: disabled.value,
|
|
93
|
-
name: "width",
|
|
94
|
-
prefix: "W",
|
|
95
|
-
width: "100px"
|
|
96
|
-
}, null, 8, ["modelValue", "disabled"]), [
|
|
97
|
-
[
|
|
98
|
-
unref(vT),
|
|
99
|
-
{ key: "bs.width" },
|
|
100
|
-
void 0,
|
|
101
|
-
{ title: true }
|
|
102
|
-
]
|
|
103
|
-
]),
|
|
104
|
-
_cache[4] || (_cache[4] = createTextVNode(" x ")),
|
|
105
|
-
withDirectives(createVNode(_sfc_main$3, {
|
|
106
|
-
modelValue: data.value.height,
|
|
107
|
-
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => data.value.height = $event),
|
|
108
|
-
disabled: disabled.value,
|
|
109
|
-
name: "height",
|
|
110
|
-
prefix: "H",
|
|
111
|
-
width: "100px"
|
|
112
|
-
}, null, 8, ["modelValue", "disabled"]), [
|
|
113
|
-
[
|
|
114
|
-
unref(vT),
|
|
115
|
-
{ key: "bs.height" },
|
|
116
|
-
void 0,
|
|
117
|
-
{ title: true }
|
|
118
|
-
]
|
|
119
|
-
])
|
|
120
|
-
])
|
|
121
|
-
]),
|
|
122
|
-
createElementVNode("div", null, [
|
|
123
|
-
createElementVNode("div", _hoisted_2, [
|
|
124
|
-
createVNode(_sfc_main$2, { label: { key: "bs.maxSize" } })
|
|
125
|
-
]),
|
|
126
|
-
createElementVNode("div", null, [
|
|
127
|
-
withDirectives(createVNode(_sfc_main$3, {
|
|
128
|
-
modelValue: data.value.maxWidth,
|
|
129
|
-
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => data.value.maxWidth = $event),
|
|
130
|
-
disabled: disabled.value,
|
|
131
|
-
name: "maxWidth",
|
|
132
|
-
prefix: "W",
|
|
133
|
-
width: "100px"
|
|
134
|
-
}, null, 8, ["modelValue", "disabled"]), [
|
|
135
|
-
[
|
|
136
|
-
unref(vT),
|
|
137
|
-
{ key: "bs.maxWidth" },
|
|
138
|
-
void 0,
|
|
139
|
-
{ title: true }
|
|
140
|
-
]
|
|
141
|
-
]),
|
|
142
|
-
_cache[5] || (_cache[5] = createTextVNode(" x ")),
|
|
143
|
-
withDirectives(createVNode(_sfc_main$3, {
|
|
144
|
-
modelValue: data.value.maxHeight,
|
|
145
|
-
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => data.value.maxHeight = $event),
|
|
146
|
-
disabled: disabled.value,
|
|
147
|
-
name: "maxHeight",
|
|
148
|
-
prefix: "H",
|
|
149
|
-
width: "100px"
|
|
150
|
-
}, null, 8, ["modelValue", "disabled"]), [
|
|
151
|
-
[
|
|
152
|
-
unref(vT),
|
|
153
|
-
{ key: "bs.maxHeight" },
|
|
154
|
-
void 0,
|
|
155
|
-
{ title: true }
|
|
156
|
-
]
|
|
157
|
-
])
|
|
158
|
-
])
|
|
159
|
-
])
|
|
160
|
-
], 512)) : createCommentVNode("", true)
|
|
161
|
-
]),
|
|
162
|
-
buttons: withCtx(() => [
|
|
163
|
-
createElementVNode("div", _hoisted_3, [
|
|
164
|
-
createVNode(BSButton, {
|
|
165
|
-
caption: { key: "bs.ok" },
|
|
166
|
-
"button-color": "blue",
|
|
167
|
-
"data-id": "okBtn",
|
|
168
|
-
onClick: save
|
|
169
|
-
}),
|
|
170
|
-
createVNode(BSButton, {
|
|
171
|
-
caption: { key: "bs.cancel" },
|
|
172
|
-
"data-id": "cancelBtn",
|
|
173
|
-
onClick: close
|
|
174
|
-
})
|
|
175
|
-
])
|
|
176
|
-
]),
|
|
177
|
-
_: 1
|
|
178
|
-
});
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
export {
|
|
183
|
-
_sfc_main as default
|
|
184
|
-
};
|