@ticatec/uniface-element 0.2.0 → 0.2.2
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/README.md +320 -1
- package/README_CN.md +392 -0
- package/dist/accordion/Accordion.svelte +1 -1
- package/dist/action-bar/ActionBar.svelte +7 -1
- package/dist/attachment-files/FileRender.svelte +1 -1
- package/dist/attachment-files/FileUploadBar.svelte +7 -6
- package/dist/attachment-files/FileUploadPanel.svelte +2 -2
- package/dist/base-calendar/DateContext.js +5 -4
- package/dist/base-calendar/YearPickupPanel.svelte +4 -4
- package/dist/card/Card.svelte +1 -1
- package/dist/card/Card.svelte.d.ts +1 -1
- package/dist/cascade-options-select/CascadeOptionSelect.svelte +2 -3
- package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +46 -1
- package/dist/cascade-options-select/CascadePanel.svelte +1 -1
- package/dist/checkbox/CheckBox.svelte +1 -1
- package/dist/color-picker/ColorPicker.svelte +9 -9
- package/dist/color-picker/ColorPicker.svelte.d.ts +0 -2
- package/dist/color-picker/ColorPickerPanel.svelte +11 -15
- package/dist/color-picker/ColorPickerPanel.svelte.d.ts +1 -1
- package/dist/common/CommonPicker.svelte +2 -2
- package/dist/common/CommonPicker.svelte.d.ts +1 -1
- package/dist/common/MouseClickHandler.d.ts +1 -1
- package/dist/common/Popover.svelte +28 -6
- package/dist/common/Popover.svelte.d.ts +9 -3
- package/dist/common/uniface-utils.js +6 -4
- package/dist/common-editor/CommonEditor.svelte +1 -1
- package/dist/common-editor/CommonEditor.svelte.d.ts +1 -1
- package/dist/common-editor/NumberInput.svelte +1 -1
- package/dist/common-editor/NumberInput.svelte.d.ts +1 -1
- package/dist/concise-data-table/ConciseListTable.svelte +7 -2
- package/dist/concise-data-table/ConciseListTable.svelte.d.ts +1 -0
- package/dist/concise-data-table/DataRow.svelte +1 -1
- package/dist/concise-data-table/TableOptions.d.ts +1 -1
- package/dist/data-table/DataTable.svelte +1 -1
- package/dist/data-table/parts/ActionsPanel.svelte +4 -3
- package/dist/data-table/parts/ActionsRow.svelte +3 -3
- package/dist/data-table/parts/ContentPanel.svelte +3 -2
- package/dist/data-table/parts/FixedColumnsPanel.svelte +0 -1
- package/dist/data-table/parts/FixedColumnsPanel.svelte.d.ts +1 -2
- package/dist/data-table/parts/FixedHeaderPanel.svelte +2 -2
- package/dist/data-table/parts/FixedRow.svelte +2 -1
- package/dist/data-table/parts/FixedRow.svelte.d.ts +1 -1
- package/dist/data-table/parts/HrefCell.svelte +23 -2
- package/dist/data-table/parts/PopupMenu.svelte +25 -2
- package/dist/data-table/parts/PopupMenu.svelte.d.ts +8 -1
- package/dist/date-picker/DatePicker.svelte +0 -1
- package/dist/date-picker/DateTimePicker.svelte +3 -3
- package/dist/date-picker/ScrollBar.svelte +4 -7
- package/dist/date-range/DateRangeEditor.svelte +1 -1
- package/dist/dialog/CommonDialog.svelte +8 -5
- package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
- package/dist/dialog/Dialog.svelte +37 -12
- package/dist/dialog/Dialog.svelte.d.ts +4 -3
- package/dist/dialog/DialogBoard.svelte +11 -8
- package/dist/dialog/DialogWrapper.svelte +10 -0
- package/dist/{common-editor/DateInput.svelte.d.ts → dialog/DialogWrapper.svelte.d.ts} +6 -13
- package/dist/dialog/Dialogs.js +1 -1
- package/dist/dialog/ModalResult.d.ts +5 -0
- package/dist/dialog/ModalResult.js +5 -0
- package/dist/drawer/Drawer.svelte +1 -1
- package/dist/form-field/FormField.svelte +2 -1
- package/dist/form-field/FormField.svelte.d.ts +1 -0
- package/dist/form-panel/flex-row-form/FormContainer.svelte +1 -1
- package/dist/form-panel/grid-form/EmptyCell.svelte +8 -7
- package/dist/form-panel/grid-form/EmptyCell.svelte.d.ts +2 -2
- package/dist/form-panel/grid-form/GridField.svelte +1 -1
- package/dist/i18nRes/i18nRes.d.ts +2 -0
- package/dist/i18nRes/i18nRes.js +44 -0
- package/dist/i18nRes/index.d.ts +2 -0
- package/dist/i18nRes/index.js +2 -0
- package/dist/image-files/ImageFilesField.svelte +1 -1
- package/dist/indicator/IndicatorBoard.svelte +1 -1
- package/dist/inline-cell-editor/InvalidEditor.svelte +1 -0
- package/dist/input-options-select/InputOptionsSelect.svelte +6 -6
- package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +1 -1
- package/dist/layout/flex/FlexBlock.svelte +1 -1
- package/dist/lookup-editor/LookupEditor.svelte +1 -1
- package/dist/memo-editor/MemoEditor.svelte +2 -2
- package/dist/message-box/IMessageBox.d.ts +2 -4
- package/dist/message-box/IMessageBox.js +4 -6
- package/dist/message-box/MessageBoxBoard.svelte +1 -3
- package/dist/options-multi-select/OptionsMultiSelect.svelte +1 -1
- package/dist/prompts-text-editor/PromptsTextEditor.svelte +2 -2
- package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +1 -1
- package/dist/property-editor/PropertyEditor.svelte +3 -3
- package/dist/text-editor/PasswordEditor.svelte +1 -1
- package/dist/transfer/Transfer.svelte +17 -12
- package/dist/transfer/Transfer.svelte.d.ts +0 -1
- package/dist/unit-number-editor/UnitNumberEditor.svelte +2 -2
- package/docs/buttons/cn/ActionBar.md +459 -0
- package/docs/buttons/cn/Button.md +228 -0
- package/docs/buttons/cn/IconButton.md +294 -0
- package/docs/buttons/cn/README.md +600 -0
- package/docs/buttons/cn/TextButton.md +163 -0
- package/docs/buttons/en/ActionBar.md +459 -0
- package/docs/buttons/en/Button.md +228 -0
- package/docs/buttons/en/IconButton.md +294 -0
- package/docs/buttons/en/README.md +600 -0
- package/docs/buttons/en/TextButton.md +163 -0
- package/docs/containers/cn/accordion.md +622 -0
- package/docs/containers/cn/box.md +445 -0
- package/docs/containers/cn/card.md +404 -0
- package/docs/containers/cn/page.md +576 -0
- package/docs/containers/cn/tabs.md +686 -0
- package/docs/containers/en/accordion.md +622 -0
- package/docs/containers/en/box.md +445 -0
- package/docs/containers/en/card.md +404 -0
- package/docs/containers/en/page.md +576 -0
- package/docs/containers/en/tabs.md +686 -0
- package/docs/data-display/cn/concise-data-table.md +731 -0
- package/docs/data-display/cn/listbox.md +786 -0
- package/docs/data-display/cn/treeview.md +863 -0
- package/docs/data-display/en/concise-data-table.md +732 -0
- package/docs/data-display/en/listbox.md +786 -0
- package/docs/data-display/en/treeview.md +863 -0
- package/docs/data-table/cn/README.md +596 -0
- package/docs/data-table/en/README.md +596 -0
- package/docs/dialog/cn/README.md +767 -0
- package/docs/dialog/en/README.md +767 -0
- package/docs/form/cn/README.md +847 -0
- package/docs/form/en/README.md +847 -0
- package/docs/form-components/cn/README.md +495 -0
- package/docs/form-components/cn/attachmentfilesfield.md +757 -0
- package/docs/form-components/cn/cascade-options-select.md +374 -0
- package/docs/form-components/cn/checkbox.md +58 -0
- package/docs/form-components/cn/date-picker.md +138 -0
- package/docs/form-components/cn/datetime-picker.md +228 -0
- package/docs/form-components/cn/group-checkbox.md +405 -0
- package/docs/form-components/cn/group-radiobox.md +525 -0
- package/docs/form-components/cn/imagefilesfield.md +651 -0
- package/docs/form-components/cn/input-options-select.md +250 -0
- package/docs/form-components/cn/lookup-editor.md +406 -0
- package/docs/form-components/cn/memoeditor.md +409 -0
- package/docs/form-components/cn/number-editor.md +261 -0
- package/docs/form-components/cn/options-multi-select.md +177 -0
- package/docs/form-components/cn/options-select.md +83 -0
- package/docs/form-components/cn/passwordeditor.md +538 -0
- package/docs/form-components/cn/prompts-text-editor.md +241 -0
- package/docs/form-components/cn/radiobutton.md +84 -0
- package/docs/form-components/cn/switch.md +178 -0
- package/docs/form-components/cn/text-editor.md +142 -0
- package/docs/form-components/cn/time-editor.md +159 -0
- package/docs/form-components/cn/unit-number-editor.md +164 -0
- package/docs/form-components/en/README.md +463 -0
- package/docs/form-components/en/attachmentfilesfield.md +757 -0
- package/docs/form-components/en/cascade-options-select.md +358 -0
- package/docs/form-components/en/checkbox.md +59 -0
- package/docs/form-components/en/date-picker.md +138 -0
- package/docs/form-components/en/datetime-picker.md +228 -0
- package/docs/form-components/en/group-checkbox.md +395 -0
- package/docs/form-components/en/group-radiobox.md +498 -0
- package/docs/form-components/en/imagefilesfield.md +651 -0
- package/docs/form-components/en/input-options-select.md +239 -0
- package/docs/form-components/en/lookup-editor.md +389 -0
- package/docs/form-components/en/memoeditor.md +409 -0
- package/docs/form-components/en/number-editor.md +249 -0
- package/docs/form-components/en/options-multi-select.md +177 -0
- package/docs/form-components/en/options-select.md +83 -0
- package/docs/form-components/en/passwordeditor.md +538 -0
- package/docs/form-components/en/prompts-text-editor.md +241 -0
- package/docs/form-components/en/radiobutton.md +84 -0
- package/docs/form-components/en/switch.md +180 -0
- package/docs/form-components/en/text-editor.md +142 -0
- package/docs/form-components/en/time-editor.md +159 -0
- package/docs/form-components/en/unit-number-editor.md +164 -0
- package/docs/form-layout/cn/criteria-field.md +652 -0
- package/docs/form-layout/cn/flex-form.md +454 -0
- package/docs/form-layout/cn/flex-row-form.md +542 -0
- package/docs/form-layout/cn/form-field.md +923 -0
- package/docs/form-layout/cn/grid-form.md +676 -0
- package/docs/form-layout/en/criteria-field.md +652 -0
- package/docs/form-layout/en/flex-form.md +454 -0
- package/docs/form-layout/en/flex-row-form.md +542 -0
- package/docs/form-layout/en/form-field.md +923 -0
- package/docs/form-layout/en/grid-form.md +676 -0
- package/docs/global/cn/README.md +534 -0
- package/docs/global/en/README.md +534 -0
- package/docs/layout/cn/classiclayout.md +460 -0
- package/docs/layout/cn/headerlayout.md +524 -0
- package/docs/layout/cn/sidebarlayout.md +263 -0
- package/docs/layout/en/classiclayout.md +951 -0
- package/docs/layout/en/headerlayout.md +524 -0
- package/docs/layout/en/sidebarlayout.md +262 -0
- package/docs/misc/cn/README.md +1217 -0
- package/docs/misc/en/README.md +1217 -0
- package/docs/navigation/cn/breadcrumb.md +291 -0
- package/docs/navigation/cn/navigator.md +322 -0
- package/docs/navigation/cn/navigatormenu.md +512 -0
- package/docs/navigation/cn/progressbar.md +199 -0
- package/docs/navigation/cn/progressstepbar.md +299 -0
- package/docs/navigation/en/breadcrumb.md +291 -0
- package/docs/navigation/en/navigator.md +322 -0
- package/docs/navigation/en/navigatormenu.md +512 -0
- package/docs/navigation/en/progressbar.md +199 -0
- package/docs/navigation/en/progressstepbar.md +299 -0
- package/docs/search-filters/cn/daterange.md +1156 -0
- package/docs/search-filters/cn/numberrange.md +688 -0
- package/docs/search-filters/cn/searchbox.md +1582 -0
- package/docs/search-filters/en/daterange.md +1156 -0
- package/docs/search-filters/en/numberrange.md +688 -0
- package/docs/search-filters/en/searchbox.md +1582 -0
- package/package.json +53 -13
- package/dist/common-editor/DateInput.svelte +0 -27
- package/dist/i18n_resources/index.d.ts +0 -3
- package/dist/i18n_resources/index.js +0 -3
- /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.d.ts +0 -0
- /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.js +0 -0
- /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.d.ts +0 -0
- /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.js +0 -0
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
import type {OnChangeHandler} from "../common/OnChangeHandler";
|
|
6
6
|
import CommonPicker from "../common/CommonPicker.svelte";
|
|
7
7
|
|
|
8
|
-
type OnActionHandler = () => void;
|
|
8
|
+
//type OnActionHandler = () => void;
|
|
9
9
|
|
|
10
|
-
export let showHex = true;
|
|
11
|
-
export let showRgb = false;
|
|
10
|
+
//export let showHex = true;
|
|
11
|
+
//export let showRgb = false;
|
|
12
12
|
|
|
13
13
|
export let variant: '' | 'plain' | 'outlined' | 'filled' = '';
|
|
14
14
|
export let disabled: boolean = false;
|
|
@@ -28,17 +28,17 @@
|
|
|
28
28
|
let editor: any;
|
|
29
29
|
|
|
30
30
|
const clean = () => {
|
|
31
|
-
|
|
31
|
+
onChange(null)
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const handleActionIconClick = () => {
|
|
34
|
+
const handleActionIconClick = async () => {
|
|
35
35
|
editor.click();
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function handleColorChange(event) {
|
|
39
|
-
selectedColor = event.target.value;
|
|
40
|
-
rgbValues = hexToRgb(selectedColor);
|
|
41
|
-
console.log(selectedColor, rgbValues);
|
|
38
|
+
function handleColorChange(event: Event) {
|
|
39
|
+
// selectedColor = (event.target as HTMLElement).value;
|
|
40
|
+
// rgbValues = hexToRgb(selectedColor);
|
|
41
|
+
// console.log(selectedColor, rgbValues);
|
|
42
42
|
// dispatch('change', {
|
|
43
43
|
// hex: selectedColor,
|
|
44
44
|
// rgb: rgbValues
|
|
@@ -13,8 +13,6 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
13
13
|
z_$$bindings?: Bindings;
|
|
14
14
|
}
|
|
15
15
|
declare const ColorPicker: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
-
showHex?: boolean;
|
|
17
|
-
showRgb?: boolean;
|
|
18
16
|
variant?: "" | "plain" | "outlined" | "filled";
|
|
19
17
|
disabled?: boolean;
|
|
20
18
|
readonly?: boolean;
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
import i18n from "@ticatec/i18n";
|
|
6
|
-
import langRes from "../i18n_resources/uniface_en_resource";
|
|
4
|
+
import i18nRes from "../i18nRes";
|
|
7
5
|
|
|
8
6
|
export let initialColor = "#ffffff";
|
|
9
7
|
export let showHex = true;
|
|
10
8
|
export let showRgb = false;
|
|
11
|
-
export let swatches = [];
|
|
9
|
+
export let swatches: Array<any> = [];
|
|
12
10
|
|
|
13
11
|
let selectedColor = initialColor;
|
|
14
12
|
let rgbValues = hexToRgb(initialColor);
|
|
15
13
|
|
|
16
14
|
|
|
17
15
|
// Convert hex to RGB
|
|
18
|
-
function hexToRgb(hex) {
|
|
16
|
+
function hexToRgb(hex: string) {
|
|
19
17
|
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
20
18
|
return result ? {
|
|
21
19
|
r: parseInt(result[1], 16),
|
|
@@ -25,17 +23,17 @@
|
|
|
25
23
|
}
|
|
26
24
|
|
|
27
25
|
// Emit change event when color changes
|
|
28
|
-
function handleColorChange(event) {
|
|
29
|
-
selectedColor = event.target
|
|
26
|
+
function handleColorChange(event: Event) {
|
|
27
|
+
selectedColor = "0x000000"; //event.target?.value;
|
|
30
28
|
rgbValues = hexToRgb(selectedColor);
|
|
31
|
-
dispatch('change', {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
29
|
+
// dispatch('change', {
|
|
30
|
+
// hex: selectedColor,
|
|
31
|
+
// rgb: rgbValues
|
|
32
|
+
// });
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
// Select a swatch
|
|
38
|
-
function selectSwatch(color) {
|
|
36
|
+
function selectSwatch(color: any) {
|
|
39
37
|
selectedColor = color;
|
|
40
38
|
rgbValues = hexToRgb(selectedColor);
|
|
41
39
|
// dispatch('change', {
|
|
@@ -47,8 +45,7 @@
|
|
|
47
45
|
|
|
48
46
|
<div class="color-picker">
|
|
49
47
|
<label for="color-input">
|
|
50
|
-
{
|
|
51
|
-
}
|
|
48
|
+
{i18nRes.pickupColor}
|
|
52
49
|
</label>
|
|
53
50
|
|
|
54
51
|
<div class="color-input-group">
|
|
@@ -116,7 +113,6 @@
|
|
|
116
113
|
}
|
|
117
114
|
|
|
118
115
|
input[type="color"] {
|
|
119
|
-
-webkit-appearance: none;
|
|
120
116
|
width: 40px;
|
|
121
117
|
height: 40px;
|
|
122
118
|
border: none;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
export let autoFit: boolean = true;
|
|
16
16
|
export let canClean: boolean;
|
|
17
17
|
export let textValue: string;
|
|
18
|
-
export let dropDownIcon: string
|
|
18
|
+
export let dropDownIcon: string = null as unknown as string;
|
|
19
19
|
export let clean: () => void;
|
|
20
20
|
export let iconClickHandler: MouseClickHandler = null as unknown as MouseClickHandler;
|
|
21
21
|
export let showPopup: boolean = false;
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
{/if}
|
|
59
59
|
</div>
|
|
60
60
|
{#if showPopup}
|
|
61
|
-
<Popover target={editorElement}
|
|
61
|
+
<Popover target={editorElement} onClose={()=>{showPopup=false}} {autoFit}>
|
|
62
62
|
<slot name="popup-panel"></slot>
|
|
63
63
|
</Popover>
|
|
64
64
|
{/if}
|
|
@@ -29,7 +29,7 @@ declare const CommonPicker: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_Pr
|
|
|
29
29
|
autoFit?: boolean;
|
|
30
30
|
canClean: boolean;
|
|
31
31
|
textValue: string;
|
|
32
|
-
dropDownIcon?: string
|
|
32
|
+
dropDownIcon?: string;
|
|
33
33
|
clean: () => void;
|
|
34
34
|
iconClickHandler?: MouseClickHandler;
|
|
35
35
|
showPopup?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type MouseClickHandler = (event: MouseEvent) => void
|
|
1
|
+
export type MouseClickHandler = (event: MouseEvent) => Promise<void>;
|
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
|
|
2
2
|
<script lang="ts">
|
|
3
|
-
import {
|
|
4
|
-
import {clickOutside} from './uniface-utils';
|
|
3
|
+
import { onDestroy, onMount} from 'svelte';
|
|
5
4
|
import Portal from "svelte-portal";
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
export let onClose: (()=>void) | null = null;
|
|
7
|
+
|
|
8
|
+
export function outerClick(node: HTMLElement, callback: () => void) {
|
|
9
|
+
const handleClick = (event: MouseEvent) => {
|
|
10
|
+
// 如果点击目标不在node内,则触发回调
|
|
11
|
+
if (!node.contains(event.target as Node)) {
|
|
12
|
+
callback();
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// 监听全局点击事件(useCapture=true,避免事件冒泡造成的问题)
|
|
17
|
+
document.addEventListener('click', handleClick, true);
|
|
18
|
+
|
|
19
|
+
// 清理事件监听器
|
|
20
|
+
onDestroy(() => {
|
|
21
|
+
document.removeEventListener('click', handleClick, true);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// action 必须返回一个对象,可以选实现 update 和 destroy
|
|
25
|
+
return {
|
|
26
|
+
destroy() {
|
|
27
|
+
document.removeEventListener('click', handleClick, true);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
8
31
|
|
|
9
32
|
export let style: string = '';
|
|
10
33
|
export let target: any;
|
|
@@ -89,7 +112,7 @@
|
|
|
89
112
|
});
|
|
90
113
|
|
|
91
114
|
const close = () => {
|
|
92
|
-
|
|
115
|
+
onClose?.();
|
|
93
116
|
};
|
|
94
117
|
|
|
95
118
|
let contentPanel: any;
|
|
@@ -103,8 +126,7 @@
|
|
|
103
126
|
<svelte:window bind:innerWidth={w} bind:innerHeight={h}/>
|
|
104
127
|
<Portal target="body">
|
|
105
128
|
<div class="uniface-popover-wrapper" class:hidden style="{vertPos}; height: auto; left: {position.left-margin}px; width: {position.width}px; ">
|
|
106
|
-
<div class="uniface-popover" use:
|
|
107
|
-
on:outerClick={close}>
|
|
129
|
+
<div class="uniface-popover" use:outerClick={close}>
|
|
108
130
|
<div bind:this={contentPanel} style="{horzPos}">
|
|
109
131
|
<div class="contents" style="{style}">
|
|
110
132
|
<div class="contents-inner">
|
|
@@ -17,6 +17,10 @@ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
|
17
17
|
children?: any;
|
|
18
18
|
} : {});
|
|
19
19
|
declare const Popover: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
20
|
+
onClose?: (() => void) | null;
|
|
21
|
+
outerClick?: (node: HTMLElement, callback: () => void) => {
|
|
22
|
+
destroy(): void;
|
|
23
|
+
};
|
|
20
24
|
style?: string;
|
|
21
25
|
target: any;
|
|
22
26
|
align?: "left" | "right" | "center";
|
|
@@ -25,11 +29,13 @@ declare const Popover: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWi
|
|
|
25
29
|
}, {
|
|
26
30
|
default: {};
|
|
27
31
|
}>, {
|
|
28
|
-
close: CustomEvent<any>;
|
|
29
|
-
} & {
|
|
30
32
|
[evt: string]: CustomEvent<any>;
|
|
31
33
|
}, {
|
|
32
34
|
default: {};
|
|
33
|
-
}, {
|
|
35
|
+
}, {
|
|
36
|
+
outerClick: (node: HTMLElement, callback: () => void) => {
|
|
37
|
+
destroy(): void;
|
|
38
|
+
};
|
|
39
|
+
}, string>;
|
|
34
40
|
type Popover = InstanceType<typeof Popover>;
|
|
35
41
|
export default Popover;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export function clickOutside(node) {
|
|
2
2
|
const handleClick = (event) => {
|
|
3
|
-
// @ts-ignore
|
|
3
|
+
// @ts-ignore 因为 event.target 是 EventTarget,不能直接传给 contains
|
|
4
4
|
if (node && !node.contains(event.target) && !event.defaultPrevented) {
|
|
5
|
-
node.dispatchEvent(
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
node.dispatchEvent(new CustomEvent('outerClick', {
|
|
6
|
+
bubbles: true, // 通常自定义事件要冒泡,方便捕获
|
|
7
|
+
cancelable: true, // 可取消
|
|
8
|
+
detail: { originalEvent: event } // 可选:传递原始事件信息
|
|
9
|
+
}));
|
|
8
10
|
event.stopPropagation();
|
|
9
11
|
event.preventDefault();
|
|
10
12
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
export let input$class: string = null as unknown as string;
|
|
18
18
|
export let displayMode: DisplayMode = DisplayMode.Edit;
|
|
19
19
|
export let showActionIcon: boolean = false;
|
|
20
|
-
export let clean: () => void;
|
|
20
|
+
export let clean: (() => void) | null = null;
|
|
21
21
|
|
|
22
22
|
export let hasLeadingIcon: boolean = true;
|
|
23
23
|
export let hasTrailingIcon: boolean = true;
|
|
@@ -31,7 +31,7 @@ declare const CommonEditor: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_Pr
|
|
|
31
31
|
input$class?: string;
|
|
32
32
|
displayMode?: DisplayMode;
|
|
33
33
|
showActionIcon?: boolean;
|
|
34
|
-
clean
|
|
34
|
+
clean?: (() => void) | null;
|
|
35
35
|
hasLeadingIcon?: boolean;
|
|
36
36
|
hasTrailingIcon?: boolean;
|
|
37
37
|
}, {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
export let max: number | null = null;
|
|
15
15
|
export let min: number | null = null;
|
|
16
16
|
export let onChange: OnChangeHandler<number | null> = null as unknown as OnChangeHandler<number | null>;
|
|
17
|
-
export let textValue: string;
|
|
17
|
+
export let textValue: string = '';
|
|
18
18
|
export const focus = () => {
|
|
19
19
|
editor.focus();
|
|
20
20
|
}
|
|
@@ -23,7 +23,7 @@ declare const NumberInput: $$__sveltets_2_IsomorphicComponent<{
|
|
|
23
23
|
max?: number | null;
|
|
24
24
|
min?: number | null;
|
|
25
25
|
onChange?: OnChangeHandler<number | null>;
|
|
26
|
-
textValue
|
|
26
|
+
textValue?: string;
|
|
27
27
|
focus?: () => void;
|
|
28
28
|
}, {
|
|
29
29
|
[evt: string]: CustomEvent<any>;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import DataRow from "./DataRow.svelte";
|
|
5
5
|
import {type RowClickHandler, type TableOptions} from "./TableOptions";
|
|
6
6
|
import utils from "./utils";
|
|
7
|
+
import type Column from "./Column";
|
|
7
8
|
|
|
8
9
|
// list array to display
|
|
9
10
|
export let list: Array<any>;
|
|
@@ -120,6 +121,10 @@
|
|
|
120
121
|
|
|
121
122
|
$: tableStyle = utils.generateTableStyle(id, columns, tabOptions, viewWidth);
|
|
122
123
|
|
|
124
|
+
const handleRowClick = (row: any) => (event: MouseEvent) => {
|
|
125
|
+
rowClickHandler?.(row)
|
|
126
|
+
}
|
|
127
|
+
|
|
123
128
|
|
|
124
129
|
</script>
|
|
125
130
|
|
|
@@ -141,11 +146,11 @@
|
|
|
141
146
|
<div class="table-body-container" bind:this={viewPanel} class:auto-scroll={autoScroll}>
|
|
142
147
|
<div class="table-body" style="transition: transform {autoScroll ? '2s' : '0s'} ease;">
|
|
143
148
|
{#each list as row, rowIndex}
|
|
144
|
-
<DataRow data={row} {columns} showAlternative={rowIndex % 2 == 1} on:click={
|
|
149
|
+
<DataRow data={row} {columns} showAlternative={rowIndex % 2 == 1} on:click={handleRowClick(row)}/>
|
|
145
150
|
{/each}
|
|
146
151
|
{#if autoScroll && list.length > visibleRowCount}
|
|
147
152
|
{#each list.slice(0, visibleRowCount) as row, rowIndex}
|
|
148
|
-
<DataRow data={row} {columns} showAlternative={rowIndex % 2 == 1} on:click={
|
|
153
|
+
<DataRow data={row} {columns} showAlternative={rowIndex % 2 == 1} on:click={handleRowClick(row)}/>
|
|
149
154
|
{/each}
|
|
150
155
|
{/if}
|
|
151
156
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type RowClickHandler, type TableOptions } from "./TableOptions";
|
|
2
|
+
import type Column from "./Column";
|
|
2
3
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
3
4
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
5
|
$$bindings?: Bindings;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
export let showAlternative: boolean;
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
|
-
<div class="table-row" class:alternative={showAlternative} on:click>
|
|
11
|
+
<div class="table-row" class:alternative={showAlternative} aria-hidden="true" on:click>
|
|
12
12
|
{#each columns as column, idx}
|
|
13
13
|
<DataCell {idx} {column} {data}/>
|
|
14
14
|
{/each}
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
{#if table && dataColumns && fixedCols}
|
|
107
107
|
{#if indicatorColumn || fixedCols.length > 0}
|
|
108
108
|
<FixedColumnsPanel {handleRowExpand} bind:selectedRows {orderDirection} {orderColumn} {handleCellClick} {indicatorColumn}
|
|
109
|
-
bind:expandRow
|
|
109
|
+
bind:expandRow
|
|
110
110
|
{rowHeight} {fixedCols} {inlineRowHeight} {rows} {handleWidthChange} width={frozenWidth}
|
|
111
111
|
bind:scrollTop/>
|
|
112
112
|
{/if}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import type ActionsColumn from "../lib/ActionsColumn";
|
|
5
5
|
import type TableRow from "./TableRow";
|
|
6
6
|
import {onDestroy, onMount} from "svelte";
|
|
7
|
-
import
|
|
7
|
+
import i18nRes from "../../i18nRes";
|
|
8
8
|
|
|
9
9
|
export let actionsColumn: ActionsColumn;
|
|
10
10
|
export let scrollTop: number = 0;
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
export let rowHeight: number;
|
|
18
18
|
|
|
19
19
|
const handleActionPanelScroll = (e: Event) => {
|
|
20
|
-
|
|
20
|
+
const target = e.target as HTMLDivElement;
|
|
21
|
+
scrollTop = target.scrollTop;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
let scrollPanel: any;
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
resizeObserver.disconnect();
|
|
44
45
|
});
|
|
45
46
|
|
|
46
|
-
let actionText =
|
|
47
|
+
let actionText = i18nRes.dataTable.actions;
|
|
47
48
|
|
|
48
49
|
</script>
|
|
49
50
|
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
onClick={()=>action.callback(row.data)}/>
|
|
97
97
|
{:else}
|
|
98
98
|
<TextButton style="flex-shrink: 0; top: 0" size="mini" type="{action.type ?? 'primary'}" label={action.label}
|
|
99
|
-
onClick={()=>action.callback(row.data)}/>
|
|
99
|
+
onClick={async ()=>action.callback(row.data)}/>
|
|
100
100
|
{/if}
|
|
101
101
|
{/each}
|
|
102
102
|
{#if popupList.length > 0}
|
|
@@ -111,10 +111,10 @@
|
|
|
111
111
|
<div class="action-popover" style="padding: 4px 6px; text-align: center">
|
|
112
112
|
{#if action.icon}
|
|
113
113
|
<IconButton style="flex-shrink: 0; top: 0" size="mini" type="{action.type ?? 'primary'}" icon={action.icon}
|
|
114
|
-
onClick={()=>{action.callback(row.data); showPopup=false}}/>
|
|
114
|
+
onClick={async ()=>{action.callback(row.data); showPopup=false}}/>
|
|
115
115
|
{:else}
|
|
116
116
|
<TextButton style="flex-shrink: 0; top: 0" size="mini" type="{action.type ?? 'primary'}" label={action.label}
|
|
117
|
-
onClick={()=>{action.callback(row.data); showPopup=false}}/>
|
|
117
|
+
onClick={async ()=>{action.callback(row.data); showPopup=false}}/>
|
|
118
118
|
{/if}
|
|
119
119
|
</div>
|
|
120
120
|
{/each}
|
|
@@ -57,10 +57,11 @@
|
|
|
57
57
|
})
|
|
58
58
|
|
|
59
59
|
const handleDataTableScroll = (e: Event) => {
|
|
60
|
+
const target = e.target as HTMLElement;
|
|
60
61
|
if (showVerticalScroll) {
|
|
61
|
-
scrollTop =
|
|
62
|
+
scrollTop = target.scrollTop;
|
|
62
63
|
}
|
|
63
|
-
scrollLeft =
|
|
64
|
+
scrollLeft = target.scrollLeft;
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type TableRow from "./TableRow";
|
|
2
2
|
import type { IndicatorColumn } from "..";
|
|
3
|
-
import
|
|
3
|
+
import { type RowEventHandler, type TableEventHandler } from "../UniDataTable";
|
|
4
4
|
import type DataColumn from "../lib/DataColumn";
|
|
5
5
|
import { OrderDirection } from "../lib/OrderDirection";
|
|
6
6
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
@@ -22,7 +22,6 @@ declare const FixedColumnsPanel: $$__sveltets_2_IsomorphicComponent<{
|
|
|
22
22
|
width: number;
|
|
23
23
|
scrollTop?: number;
|
|
24
24
|
rows: Array<TableRow>;
|
|
25
|
-
table: UniDataTable;
|
|
26
25
|
handleWidthChange: TableEventHandler;
|
|
27
26
|
handleRowExpand: RowEventHandler;
|
|
28
27
|
handleCellClick: (col: DataColumn) => any;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import {type SelectionEventHandler, SelectionMode, type TableEventHandler} from "../UniDataTable";
|
|
6
6
|
import utils from "../../common/utils";
|
|
7
7
|
import {OrderDirection} from "../lib/OrderDirection";
|
|
8
|
-
import
|
|
8
|
+
import i18nRes from "../../i18nRes";
|
|
9
9
|
|
|
10
10
|
export let columns: Array<DataColumn>;
|
|
11
11
|
export let indicatorColumn: IndicatorColumn | null;
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
{:else }
|
|
85
85
|
<div style="text-align: center" class="vertical-center">
|
|
86
86
|
{#if indicatorColumn.displayNo}
|
|
87
|
-
<span>{
|
|
87
|
+
<span>{i18nRes.dataTable.rowNo}</span>
|
|
88
88
|
{/if}
|
|
89
89
|
</div>
|
|
90
90
|
{/if}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
import type {RowEventHandler, RowSelectEventHandler} from "../UniDataTable";
|
|
5
5
|
import DataCell from "./DataCell.svelte";
|
|
6
6
|
import type DataColumn from "../lib/DataColumn";
|
|
7
|
-
import type {IndicatorColumn} from "
|
|
7
|
+
import type {IndicatorColumn} from "..";
|
|
8
|
+
|
|
8
9
|
|
|
9
10
|
export let selectable: boolean = false;
|
|
10
11
|
export let rowNo: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type TableRow from "./TableRow";
|
|
2
2
|
import type { RowEventHandler, RowSelectEventHandler } from "../UniDataTable";
|
|
3
3
|
import type DataColumn from "../lib/DataColumn";
|
|
4
|
-
import type { IndicatorColumn } from "
|
|
4
|
+
import type { IndicatorColumn } from "..";
|
|
5
5
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
6
6
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
7
7
|
$$bindings?: Bindings;
|
|
@@ -15,6 +15,27 @@
|
|
|
15
15
|
</script>
|
|
16
16
|
<div style="display: flex; flex-direction: row; gap: 8px; justify-content: center">
|
|
17
17
|
{#each list as item, idx}
|
|
18
|
-
<
|
|
18
|
+
<button class="link-style" on:click|preventDefault={()=>item.action()}>{item.text}</button>
|
|
19
19
|
{/each}
|
|
20
|
-
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<style>
|
|
23
|
+
button.link-style {
|
|
24
|
+
background: none;
|
|
25
|
+
border: none;
|
|
26
|
+
color: blue;
|
|
27
|
+
text-decoration: underline;
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
font: inherit;
|
|
30
|
+
padding: 0;
|
|
31
|
+
}
|
|
32
|
+
button.link-style:focus {
|
|
33
|
+
outline: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
button.link-style:active {
|
|
37
|
+
/* 取消默认的active边框或者阴影 */
|
|
38
|
+
outline: none;
|
|
39
|
+
box-shadow: none;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -24,6 +24,30 @@
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
export function outerClick(node: HTMLElement, callback: () => void) {
|
|
28
|
+
const handleClick = (event: MouseEvent) => {
|
|
29
|
+
// 如果点击目标不在node内,则触发回调
|
|
30
|
+
if (!node.contains(event.target as Node)) {
|
|
31
|
+
callback();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// 监听全局点击事件(useCapture=true,避免事件冒泡造成的问题)
|
|
36
|
+
document.addEventListener('click', handleClick, true);
|
|
37
|
+
|
|
38
|
+
// 清理事件监听器
|
|
39
|
+
onDestroy(() => {
|
|
40
|
+
document.removeEventListener('click', handleClick, true);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// action 必须返回一个对象,可以选实现 update 和 destroy
|
|
44
|
+
return {
|
|
45
|
+
destroy() {
|
|
46
|
+
document.removeEventListener('click', handleClick, true);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
27
51
|
onMount(async () => {
|
|
28
52
|
resizeObserver = new ResizeObserver(() => {
|
|
29
53
|
checkPosition();
|
|
@@ -38,8 +62,7 @@
|
|
|
38
62
|
|
|
39
63
|
</script>
|
|
40
64
|
|
|
41
|
-
|
|
42
65
|
<div bind:this={panel} style="position: absolute; right: 8px; {style}; background-color: #FFFFFF; border: 1px solid #e1e1e1; z-index: 5"
|
|
43
|
-
use:clickOutside
|
|
66
|
+
use:clickOutside use:outerClick={close}>
|
|
44
67
|
<slot></slot>
|
|
45
68
|
</div>
|
|
@@ -19,12 +19,19 @@ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
|
19
19
|
declare const PopupMenu: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
20
20
|
closeCallback: () => void;
|
|
21
21
|
parentRect: DOMRect;
|
|
22
|
+
outerClick?: (node: HTMLElement, callback: () => void) => {
|
|
23
|
+
destroy(): void;
|
|
24
|
+
};
|
|
22
25
|
}, {
|
|
23
26
|
default: {};
|
|
24
27
|
}>, {
|
|
25
28
|
[evt: string]: CustomEvent<any>;
|
|
26
29
|
}, {
|
|
27
30
|
default: {};
|
|
28
|
-
}, {
|
|
31
|
+
}, {
|
|
32
|
+
outerClick: (node: HTMLElement, callback: () => void) => {
|
|
33
|
+
destroy(): void;
|
|
34
|
+
};
|
|
35
|
+
}, string>;
|
|
29
36
|
type PopupMenu = InstanceType<typeof PopupMenu>;
|
|
30
37
|
export default PopupMenu;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import {onMount, tick} from "svelte";
|
|
4
4
|
import {DisplayMode} from "../common/DisplayMode";
|
|
5
|
-
import Popover from "../common/Popover.svelte";
|
|
6
5
|
import dayjs from "dayjs";
|
|
7
6
|
import Calendar from "../base-calendar";
|
|
8
7
|
import type {OnChangeHandler} from "../common/OnChangeHandler";
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import {TextButton} from "../button";
|
|
10
10
|
import type {OnChangeHandler} from "../common/OnChangeHandler";
|
|
11
11
|
import CommonPicker from "../common/CommonPicker.svelte";
|
|
12
|
-
import
|
|
12
|
+
import i18nRes from "../i18nRes";
|
|
13
13
|
|
|
14
14
|
export let disabled: boolean = false;
|
|
15
15
|
export let readonly: boolean = false;
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
let confirmText =
|
|
34
|
+
let confirmText = i18nRes.calendar.confirmText;
|
|
35
35
|
let textValue: string;
|
|
36
36
|
let editor: any;
|
|
37
37
|
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
const confirm = () => {
|
|
79
|
+
const confirm = async () => {
|
|
80
80
|
if (dateUtils.toDayjs(value)?.toDate() != currentValue.toDate()) {
|
|
81
81
|
value = currentValue;
|
|
82
82
|
onChange?.(currentValue.toDate());
|