@ticatec/uniface-element 0.1.24 → 0.1.30

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.
Files changed (35) hide show
  1. package/dist/accordion/Accordion.svelte +9 -1
  2. package/dist/accordion/AccordionItemView.svelte +14 -4
  3. package/dist/accordion/AccordionItemView.svelte.d.ts +1 -0
  4. package/dist/app-top-bar/AppTopBar.svelte +9 -13
  5. package/dist/app-top-bar/AppTopBar.svelte.d.ts +1 -1
  6. package/dist/breadcrumbs/Breadcrumb.d.ts +4 -0
  7. package/dist/breadcrumbs/Breadcrumb.js +1 -0
  8. package/dist/breadcrumbs/Breadcrumbs.svelte +21 -0
  9. package/dist/breadcrumbs/Breadcrumbs.svelte.d.ts +24 -0
  10. package/dist/breadcrumbs/index.d.ts +4 -0
  11. package/dist/breadcrumbs/index.js +2 -0
  12. package/dist/button/Button.svelte +2 -2
  13. package/dist/card/Card.svelte +3 -1
  14. package/dist/card/Card.svelte.d.ts +1 -0
  15. package/dist/card/CommonCardActionBar.svelte +4 -2
  16. package/dist/card/CommonCardActionBar.svelte.d.ts +1 -0
  17. package/dist/common/CommonPicker.svelte +5 -2
  18. package/dist/common/Popover.svelte +9 -2
  19. package/dist/common-editor/CommonEditor.svelte +8 -7
  20. package/dist/common-range-editor/CommonRangeEditor.svelte +1 -5
  21. package/dist/date-picker/DatePicker.svelte +2 -2
  22. package/dist/date-picker/DateTimePicker.svelte +1 -1
  23. package/dist/date-range/DateRangeEditor.svelte +1 -1
  24. package/dist/drawer/Drawer.svelte +9 -17
  25. package/dist/drawer/Drawer.svelte.d.ts +3 -7
  26. package/dist/memo-editor/MemoEditor.svelte +1 -1
  27. package/dist/nav-menu/MenuItem.d.ts +1 -1
  28. package/dist/options-multi-select/OptionsMultiSelect.svelte +1 -1
  29. package/dist/options-select/OptionsSelect.svelte +1 -1
  30. package/dist/prompts-text-editor/PromptsTextEditor.svelte +9 -9
  31. package/dist/tabs/Tabs.svelte +2 -2
  32. package/dist/tag/Tag.svelte +1 -1
  33. package/dist/ticatec-uniface-web.css +178 -93
  34. package/dist/unit-number-editor/UnitNumberEditor.svelte +6 -5
  35. package/package.json +6 -2
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type AccordionItem from "./AccordionItem";
4
4
  import Accordion from "./AccordionItemView.svelte";
5
+ import {onMount} from "svelte";
5
6
 
6
7
  export let style: string = '';
7
8
  export {className as class};
@@ -14,6 +15,13 @@
14
15
 
15
16
  let openSet: Set<AccordionItem> = new Set();
16
17
 
18
+ onMount(() => {
19
+ if (exclusive && activeItem == null) {
20
+ openSet.add(accordions[0]);
21
+ accordions = [...accordions];
22
+ }
23
+ })
24
+
17
25
  const handleAccordionClick = (accordion: AccordionItem) => (event: MouseEvent) => {
18
26
  if (exclusive) {
19
27
  if (activeItem != accordion) {
@@ -36,7 +44,7 @@
36
44
 
37
45
  <div class="uniface-accordion-panel {className}" {style} class:compact>
38
46
  {#each accordions as accordion}
39
- <Accordion title={accordion.title} isOpen={openSet.has(accordion)} onClick={handleAccordionClick(accordion)}>
47
+ <Accordion title={accordion.title} isOpen={openSet.has(accordion)} {exclusive} onClick={handleAccordionClick(accordion)}>
40
48
  <svelte:component this={accordion.component} {...accordion.params}/>
41
49
  </Accordion>
42
50
  {/each}
@@ -6,6 +6,8 @@
6
6
  export let onClick: MouseClickHandler = null as unknown as MouseClickHandler;
7
7
  export let header: any = null;
8
8
 
9
+ export let exclusive: boolean;
10
+
9
11
  </script>
10
12
 
11
13
  <style>
@@ -16,14 +18,22 @@
16
18
  <div class="accordion">
17
19
  <div class="header" aria-hidden="true" on:click={onClick}>
18
20
  {#if header}
19
- <svelte:component this={header} {title} {isOpen}/>
21
+ <svelte:component this={header} {title} {isOpen}/> <!-- TODO 自定义每个条目的标题 -->
20
22
  {:else}
21
- <div style="flex: 0 0 auto; padding-right: 8px">
22
- <i class="{isOpen ? 'uniface-icon-chevron-down' : 'uniface-icon-chevron-right'}"></i>
23
- </div>
24
23
  <div style="flex: 1 1 auto; overflow: hidden; white-space: nowrap; text-overflow: ellipsis">
25
24
  <span>{title}</span>
26
25
  </div>
26
+ {#if exclusive}
27
+ {#if isOpen}
28
+ <div style="flex: 0 0 auto;">
29
+ <i class="icon_google_folder_open"></i>
30
+ </div>
31
+ {/if}
32
+ {:else}
33
+ <div style="flex: 0 0 auto;">
34
+ <i class="{isOpen ? 'icon_google_keyboard_arrow_up' : 'icon_google_keyboard_arrow_down'}"></i>
35
+ </div>
36
+ {/if}
27
37
  {/if}
28
38
  </div>
29
39
  {#if isOpen}
@@ -22,6 +22,7 @@ declare const AccordionItemView: $$__sveltets_2_IsomorphicComponent<$$__sveltets
22
22
  isOpen?: boolean;
23
23
  onClick?: MouseClickHandler;
24
24
  header?: any;
25
+ exclusive: boolean;
25
26
  }, {
26
27
  default: {};
27
28
  }>, {
@@ -1,25 +1,21 @@
1
1
  <script lang="ts">
2
- export let title: string = 'My Header';
2
+ export let title: string;
3
3
  export let style: string = '';
4
4
  </script>
5
5
 
6
- <div class="uniface-header" {style}>
6
+ <div class="uniface-top-bar" {style}>
7
7
  {#if $$slots['home']}
8
- <div class="bar-home" style="align-self: center">
9
- <slot name="home">
8
+ <div class="bar-home">
9
+ <slot name="home">
10
10
 
11
- </slot>
12
- </div>
11
+ </slot>
12
+ </div>
13
13
  {/if}
14
- <div class="title">
14
+ <div class="main-content">
15
15
  <slot>
16
16
  <span>{title}</span>
17
17
  </slot>
18
18
  </div>
19
- {#if $$slots['right']}
20
- <div class="bar-right">
21
- <slot name="right">
22
- </slot>
23
- </div>
24
- {/if}
19
+ <slot name="right">
20
+ </slot>
25
21
  </div>
@@ -17,7 +17,7 @@ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
17
17
  children?: any;
18
18
  } : {});
19
19
  declare const AppTopBar: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
20
- title?: string;
20
+ title: string;
21
21
  style?: string;
22
22
  }, {
23
23
  home: {};
@@ -0,0 +1,4 @@
1
+ export default interface Breadcrumb {
2
+ label: string;
3
+ data: any;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ // 定义组件属性
3
+ import type Breadcrumb from "./Breadcrumb";
4
+
5
+ export let items: Array<Breadcrumb> = []; //
6
+ export let separator: string = "/"; // 分隔符
7
+ export let onItemClick: (item: any) => (event: MouseEvent) => void;
8
+
9
+ export let style: string = '';
10
+
11
+ </script>
12
+
13
+
14
+ <div class="uniface-breadcrumbs" {style}>
15
+ {#each items as item}
16
+ <div>
17
+ <span>{separator}</span>
18
+ <span aria-hidden="true" class="breadcrumb" on:click={onItemClick(item.data)}>{item.label}</span>
19
+ </div>
20
+ {/each}
21
+ </div>
@@ -0,0 +1,24 @@
1
+ import type Breadcrumb from "./Breadcrumb";
2
+ 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
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Breadcrumbs: $$__sveltets_2_IsomorphicComponent<{
16
+ items?: Array<Breadcrumb>;
17
+ separator?: string;
18
+ onItemClick: (item: any) => (event: MouseEvent) => void;
19
+ style?: string;
20
+ }, {
21
+ [evt: string]: CustomEvent<any>;
22
+ }, {}, {}, string>;
23
+ type Breadcrumbs = InstanceType<typeof Breadcrumbs>;
24
+ export default Breadcrumbs;
@@ -0,0 +1,4 @@
1
+ import type Breadcrumb from "./Breadcrumb";
2
+ import Breadcrumbs from "./Breadcrumbs.svelte";
3
+ export default Breadcrumbs;
4
+ export type { Breadcrumb };
@@ -0,0 +1,2 @@
1
+ import Breadcrumbs from "./Breadcrumbs.svelte";
2
+ export default Breadcrumbs;
@@ -30,11 +30,11 @@
30
30
  <div {style} class="uniface-button common-button {variant} {size} {type}" aria-hidden="true" class:disabled
31
31
  on:click={handleClick}>
32
32
  {#if icon != null}
33
- <i style="margin-right: 6px" class={icon}></i>
33
+ <i class={icon}></i>
34
34
  {/if}
35
35
  <slot>
36
36
  {#if label != null && label.length > 0}
37
- <span>{label}</span>
37
+ <span style="flex: 1 1 auto">{label}</span>
38
38
  {/if}
39
39
  </slot>
40
40
  </div>
@@ -9,6 +9,8 @@
9
9
  export let actions: Array<CardAction> = [];
10
10
  export let variant: 'plain' | '3d' = 'plain';
11
11
 
12
+ export let iconColor: string | null = null;
13
+
12
14
  </script>
13
15
 
14
16
  <div class="uniface-card" class:shadowBox={variant=='3d'}>
@@ -26,7 +28,7 @@
26
28
  <slot/>
27
29
  </div>
28
30
  {#if actions && actions.length > 0}
29
- <CommonCardActionBar {actions}/>
31
+ <CommonCardActionBar color={iconColor} {actions}/>
30
32
  {:else }
31
33
  {#if $$slots['action-bar']}
32
34
  <div class="card-action-bar">
@@ -22,6 +22,7 @@ declare const Card: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithC
22
22
  title?: string;
23
23
  actions?: Array<CardAction>;
24
24
  variant?: "plain" | "3d";
25
+ iconColor?: string | null;
25
26
  }, {
26
27
  'header-bar': {};
27
28
  default: {};
@@ -3,7 +3,7 @@
3
3
  import utils from "../common/utils";
4
4
 
5
5
  export let actions: Array<CardAction>;
6
-
6
+ export let color: string | null = null;
7
7
 
8
8
  let clickEnable = true;
9
9
 
@@ -16,9 +16,11 @@
16
16
  }
17
17
  }
18
18
 
19
+ $: fontColor = color ? `color: ${color}` : '';
20
+
19
21
  </script>
20
22
 
21
- <div class="card-action-bar simple">
23
+ <div class="card-action-bar simple" style="{fontColor}">
22
24
  {#each actions as action}
23
25
  <div class:disabled={action.disabled} class="action-item">
24
26
  {#if action.icon}
@@ -14,6 +14,7 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
14
14
  }
15
15
  declare const CommonCardActionBar: $$__sveltets_2_IsomorphicComponent<{
16
16
  actions: Array<CardAction>;
17
+ color?: string | null;
17
18
  }, {
18
19
  [evt: string]: CustomEvent<any>;
19
20
  }, {}, {}, string>;
@@ -29,7 +29,10 @@
29
29
  </script>
30
30
  {#if displayMode === DisplayMode.View}
31
31
  <div class="uniface-display-field">
32
- <span>{textValue}</span>
32
+ <div class="content">
33
+ <span>{textValue}</span>
34
+ </div>
35
+
33
36
  </div>
34
37
  {:else}
35
38
  <div bind:this={editorElement} class="uniface-common-editor {variant} uniface-common-picker {className}" tabindex="-1" class:compact
@@ -41,7 +44,7 @@
41
44
  <slot></slot>
42
45
  {#if canClean && textValue && textValue.length > 0}
43
46
  <div class="uniface-editor-clean-icon">
44
- <i class="uniface-icon-x clickable " aria-hidden="true" on:click={clean}></i>
47
+ <i class="icon_google_clear clickable " aria-hidden="true" on:click={clean}></i>
45
48
  </div>
46
49
  {/if}
47
50
  </div>
@@ -74,9 +74,16 @@
74
74
  window.addEventListener("resize", updatePosition);
75
75
  document.addEventListener("scroll", updatePosition, {passive: false});
76
76
  const interval = setInterval(checkPosition, 10); // 每 100ms 检测一次
77
+ const resizeObserver = new ResizeObserver(entries => {
78
+ for (let entry of entries) {
79
+ updatePosition();
80
+ }
81
+ });
82
+ resizeObserver.observe(contentPanel);
77
83
  return () => {
78
84
  window.removeEventListener("resize", updatePosition);
79
85
  document.removeEventListener("scroll", updatePosition);
86
+ resizeObserver.disconnect();
80
87
  clearInterval(interval);
81
88
  };
82
89
  });
@@ -95,8 +102,8 @@
95
102
  </script>
96
103
  <svelte:window bind:innerWidth={w} bind:innerHeight={h}/>
97
104
  <Portal target="body">
98
- <div class="uniface-popover-wrapper" class:hidden style="{vertPos}; left: {position.left-margin}px; width: {position.width}px; ">
99
- <div class="uniface-popover" style="" use:clickOutside
105
+ <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:clickOutside
100
107
  on:outerClick={close}>
101
108
  <div bind:this={contentPanel} style="{horzPos}">
102
109
  <div class="contents" style="{style}">
@@ -43,14 +43,14 @@
43
43
  {:else}
44
44
  <div class:compact class="uniface-common-editor {variant} {className}" tabindex="-1"
45
45
  style="{style}">
46
- {#if !utils.isEmpty(prefix)}
47
- <div class="editor-prefix" tabindex="-1" style="flex: 0 0 auto;">
48
- <span>{prefix}</span>
49
- </div>
50
- {:else if $$slots['leading-icon'] && hasLeadingIcon}
46
+ {#if $$slots['leading-icon'] && hasLeadingIcon}
51
47
  <div class="editor-embed-icon" style="flex: 0 0 auto;">
52
48
  <slot name="leading-icon"/>
53
49
  </div>
50
+ {:else if !utils.isEmpty(prefix)}
51
+ <div class="editor-prefix" tabindex="-1" style="flex: 0 0 auto;">
52
+ <span>{prefix}</span>
53
+ </div>
54
54
  {/if}
55
55
  {#if disabled || readonly}
56
56
  <input style="flex: 1 1 auto" {value} {disabled} {readonly} {placeholder}>
@@ -58,7 +58,7 @@
58
58
  <div style="position: relative; flex: 1 1 auto">
59
59
  <slot/>
60
60
  <div class="uniface-editor-clean-icon {showActionIcon ? '' : 'hidden'}">
61
- <i class="uniface-icon-x clickable" aria-hidden="true" on:click={clean}></i>
61
+ <i class="icon_google_clear clickable" aria-hidden="true" on:click={clean}></i>
62
62
  </div>
63
63
  </div>
64
64
  {/if}
@@ -66,7 +66,8 @@
66
66
  <div class="editor-suffix" style="flex: 0 0 auto;">
67
67
  <span>{suffix}</span>
68
68
  </div>
69
- {:else if $$slots['trailing-icon'] && hasTrailingIcon}
69
+ {/if}
70
+ {#if $$slots['trailing-icon'] && hasTrailingIcon}
70
71
  <div class="editor-embed-icon" style="flex: 0 0 auto;">
71
72
  <slot name="trailing-icon"/>
72
73
  </div>
@@ -1,9 +1,5 @@
1
1
  <script lang="ts">
2
2
 
3
-
4
- import utils from "../common/utils";
5
- import Icon from "../icon";
6
-
7
3
  export let variant: '' | 'plain' | 'outlined' | 'filled' = '';
8
4
  export let compact: boolean = false;
9
5
  export {className as class};
@@ -22,7 +18,7 @@
22
18
  <div class="divider"></div>
23
19
  <slot name="to"/>
24
20
  <div class="uniface-editor-clean-icon {showActionIcon ? '' : 'hidden'}">
25
- <i class="uniface-icon-x clickable" aria-hidden="true" on:click={clean}></i>
21
+ <i class="icon_google_clear clickable" aria-hidden="true" on:click={clean}></i>
26
22
  </div>
27
23
  </div>
28
24
  <slot/>
@@ -46,7 +46,7 @@
46
46
  }
47
47
 
48
48
  const handleCalendarSelect = (d: dayjs.Dayjs) => {
49
- value = d;
49
+ value = d.toDate();
50
50
  showPopup = false;
51
51
  }
52
52
 
@@ -78,7 +78,7 @@
78
78
 
79
79
  </script>
80
80
 
81
- <CommonPicker {displayMode} {variant} {style} className="uniface-date-time-editor" {compact} dropDownIcon="uniface-icon-calendar"
81
+ <CommonPicker {displayMode} {variant} {style} className="uniface-date-time-editor" {compact} dropDownIcon="icon_google_event_available"
82
82
  bind:showPopup canClean={!mandatory && value!=null} autoFit={false} clean={cleanData} {textValue} {readonly} {disabled}>
83
83
 
84
84
  <input style="width: 100%" bind:this={editor} on:click={openPopup} {placeholder} on:keydown={handleKeyDown}
@@ -115,7 +115,7 @@
115
115
 
116
116
  </script>
117
117
 
118
- <CommonPicker {displayMode} {variant} {style} className="uniface-date-time-editor" {compact} dropDownIcon="uniface-icon-calendar"
118
+ <CommonPicker {displayMode} {variant} {style} className="uniface-date-time-editor" {compact} dropDownIcon="icon_google_access_time"
119
119
  bind:showPopup canClean={!mandatory && value!=null} autoFit={false} clean={cleanData} {textValue} {readonly} {disabled}>
120
120
 
121
121
  <input style="width: 100%" bind:this={editor} on:click={openPopup} {placeholder} on:keydown={handleKeyDown}
@@ -66,7 +66,7 @@
66
66
  <input style="width: 100%; text-align: center" readonly on:click={showPopover} value={textTo}/>
67
67
  </svelte:fragment>
68
68
  <svelte:fragment>
69
- <i class="uniface-icon-calendar action-icon" aria-hidden="true" on:click={showPopover}></i>
69
+ <i class="icon_google_event_note action-icon" aria-hidden="true" on:click={showPopover}></i>
70
70
  </svelte:fragment>
71
71
  </CommonRangeEditor>
72
72
 
@@ -1,38 +1,30 @@
1
1
  <script lang="ts">
2
2
  import {fly} from "svelte/transition";
3
- import {createEventDispatcher} from "svelte";
4
3
 
5
4
 
6
- export const open = () => {
7
- visible = true;
8
- hidden = false;
9
- dispatch('open');
10
- }
5
+ export let visible: boolean = false;
11
6
 
12
- export const close = () => {
13
- visible = false;
14
- }
7
+ let hidden: boolean = true;
15
8
 
16
- export let width:number = 300;
17
- export let position: 'left' | 'right' = 'left';
18
9
 
19
- const dispatch = createEventDispatcher();
20
- let hidden: boolean = true;
21
- let visible: boolean = false;
10
+ export let width:number = 300;
11
+ export let position: 'left' | 'right' = 'left'
22
12
 
23
13
  $: if (visible) {
24
14
  hidden = false;
25
15
  }
26
16
 
17
+
18
+
27
19
  let xPos: string;
28
20
 
29
21
  $: xPos = position == 'left' ? `${-width}` : '100%';
30
22
 
31
23
  </script>
32
- <div class="uniface-drawer" style="display: {hidden ? 'none' : 'block'}" on:click={()=>{visible=false; dispatch('close')}}>
24
+ <div class="uniface-drawer" aria-hidden="true" style="display: {hidden ? 'none' : 'block'}" on:click={()=>{visible=false;}}>
33
25
  {#if visible}
34
- <div class={position} style="width: {width}px" transition:fly={{ x: xPos, duration: 1000, opacity: 0.5 }}
35
- on:outroend={()=>{hidden = !visible}} on:click={(e)=>{e.stopPropagation()}}>
26
+ <div class={position} style="width: {width}px" transition:fly={{ x: xPos, duration: 1000, opacity: 0.5 }} aria-hidden="false"
27
+ on:outroend={()=>{hidden = !visible}} on:click|stopPropagation>
36
28
  <div>
37
29
  <slot></slot>
38
30
  </div>
@@ -17,21 +17,17 @@ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
17
17
  children?: any;
18
18
  } : {});
19
19
  declare const Drawer: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
20
- open?: () => void;
21
- close?: () => void;
20
+ visible?: boolean;
22
21
  width?: number;
23
22
  position?: "left" | "right";
24
23
  }, {
25
24
  default: {};
26
25
  }>, {
27
- close: CustomEvent<any>;
26
+ click: MouseEvent;
28
27
  } & {
29
28
  [evt: string]: CustomEvent<any>;
30
29
  }, {
31
30
  default: {};
32
- }, {
33
- open: () => void;
34
- close: () => void;
35
- }, string>;
31
+ }, {}, string>;
36
32
  type Drawer = InstanceType<typeof Drawer>;
37
33
  export default Drawer;
@@ -78,7 +78,7 @@
78
78
  {/if}
79
79
  {#if !disabled && value && value.length > 0}
80
80
  <div class="action-button-wrapper" style="position: absolute; top: 0; left: 0; width: {width}px;">
81
- <Icon name="uniface-icon-x" clickable class="uniface-editor-clean-icon" onClick={clean}/>
81
+ <Icon name="icon_google_clear" clickable class="uniface-editor-clean-icon" onClick={clean}/>
82
82
  </div>
83
83
  {/if}
84
84
  </div>
@@ -2,7 +2,7 @@ export default interface MenuItem {
2
2
  /**
3
3
  * 菜单编码
4
4
  */
5
- code: string;
5
+ code?: string;
6
6
  /**
7
7
  * 菜单文字
8
8
  */
@@ -104,7 +104,7 @@
104
104
 
105
105
  </script>
106
106
 
107
- <CommonPicker {displayMode} {variant} {style} {compact} className="multiple" dropDownIcon="uniface-icon-chevron-down"
107
+ <CommonPicker {displayMode} {variant} {style} {compact} className="multiple" dropDownIcon="icon_google_arrow_drop_down"
108
108
  bind:showPopup canClean={value!=null} autoFit clean={cleanData} {textValue} {readonly} {disabled}>
109
109
 
110
110
  <div class="option-field" aria-hidden="true" on:click={()=>{showPopup = true}}>
@@ -74,7 +74,7 @@
74
74
 
75
75
  </script>
76
76
 
77
- <CommonPicker {displayMode} {variant} {style} {compact} dropDownIcon="uniface-icon-chevron-down"
77
+ <CommonPicker {displayMode} {variant} {style} {compact} dropDownIcon="icon_google_arrow_drop_down"
78
78
  bind:showPopup canClean={!mandatory && value!=null} autoFit clean={cleanData} {textValue} {readonly} {disabled}>
79
79
 
80
80
  <input style="width: 100%" bind:this={editor} on:click={openPopup} {placeholder} readonly
@@ -64,27 +64,27 @@
64
64
 
65
65
  <div bind:this={divPanel}>
66
66
  <CommonEditor {displayMode} {style} {value} {prefix} {suffix} {readonly} {variant} {compact} class={className}
67
- showActionIcon={removable && !readonly && !disabled && !utils.isEmpty(value)} {clean}>
67
+ showActionIcon={removable && !readonly && !disabled && !utils.isEmpty(value)} {clean}
68
+ hasLeadingIcon={$$slots['leading-icon']!=null}>
68
69
  <svelte:fragment slot="leading-icon">
69
70
  {#if $$slots['leading-icon']}
70
- <div class="editor-embed-icon">
71
- <slot name="leading-icon"/>
72
- </div>
71
+ <slot name="leading-icon"/>
73
72
  {/if}
74
73
  </svelte:fragment>
75
- <input bind:this={editor} style="flex: 1 1 auto" {disabled} {placeholder} bind:value={value} {readonly}/>
76
- <div class="editor-embed-icon" slot="trailing-icon">
74
+ <input style="width: 100%" bind:this={editor} {disabled} {placeholder} bind:value={value} {readonly}/>
75
+ <svelte:fragment slot="trailing-icon">
77
76
  {#if !disabled && !readonly}
78
- <i class="option-dropdown uniface-icon-chevron-down" aria-hidden="true" on:click={openPopup}></i>
77
+ <i class="option-dropdown icon_google_arrow_drop_down" aria-hidden="true" on:click={openPopup}></i>
79
78
  {/if}
80
- </div>
79
+ </svelte:fragment>
81
80
  </CommonEditor>
82
81
 
83
82
  {#if showPopup}
84
83
  <Popover target={divPanel} autoFit align="right" on:close={()=>{showPopup=false}}>
85
84
  <div class="options-popover" style={mh}>
86
85
  {#each words as word}
87
- <div style="padding-left: 12px; padding-right: 12px" on:click={handleHintClick(word)} aria-hidden="true">
86
+ <div class="option-item" style="padding-left: 12px; padding-right: 12px" on:click={handleHintClick(word)}
87
+ aria-hidden="true">
88
88
  <span>{word}</span>
89
89
  </div>
90
90
  {/each}
@@ -126,10 +126,10 @@
126
126
  {:else}
127
127
  <span>{tab[textField]}</span>
128
128
  {#if refreshable}
129
- <i class="uniface-icon-rotate-cw tab-refresh" on:click={reloadTab(tab)} aria-hidden="true"></i>
129
+ <i class="icon_google_refresh tab-refresh" on:click={reloadTab(tab)} aria-hidden="true"></i>
130
130
  {/if}
131
131
  {#if closable === true || (typeof (closable) == "function" && closable(tab))}
132
- <i class="uniface-icon-x tab-action" on:click={closeTab(tab)} aria-hidden="true"></i>
132
+ <i class="icon_google_clear tab-action" on:click={closeTab(tab)} aria-hidden="true"></i>
133
133
  {/if}
134
134
  {/if}
135
135
  </div>
@@ -22,6 +22,6 @@
22
22
  <div class="uniface-tag" {style}>
23
23
  <div class="{size} {variant} {className} {colorClass}" class:removable={removable} >
24
24
  <span>{text}</span>
25
- <Icon name="uniface-icon-x" clickable class="uniface-remove-icon" onClick={removeHandler}/>
25
+ <Icon name="icon_google_clear" clickable class="uniface-remove-icon" onClick={removeHandler}/>
26
26
  </div>
27
27
  </div>
@@ -44,38 +44,6 @@
44
44
  --uniface-button-common-reverse-color: #ffffff;
45
45
  --uniface-button-plain-disabled-color: #B3BCCA;
46
46
  --uniface-text-button-plain-hover-color: #374151B0;
47
- --uniface-button-plain-background-color: #f0f0f0;
48
- --uniface-button-plain-border-color: #f0f0f0;
49
- --uniface-button-plain-text-color: #374151;
50
- --uniface-button-plain-hover-color: #f0f0f0B0;
51
- --uniface-button-plainy-active-color: #f0f0f0;
52
- --uniface-button-primary-background-color: #42A5F5;
53
- --uniface-button-primary-border-color: #42B5DB;
54
- --uniface-button-primary-text-color: #ffffff;
55
- --uniface-button-primary-hover-color: #42A5F5B0;
56
- --uniface-button-primary-active-color: #42A5F5;
57
- --uniface-text-button-primary-hover-color: #42A5F5B0;
58
- --uniface-button-secondary-background-color: #FF685B;
59
- --uniface-button-secondary-border-color: #FF7875;
60
- --uniface-button-secondary-text-color: #ffffff;
61
- --uniface-button-secondary-hover-color: #FF685BB0;
62
- --uniface-button-secondary-active-color: #FF4D4F;
63
- --uniface-text-button-secondary-hover-color: #D32F2FB0;
64
- --uniface-button-third-background-color: #2DC071;
65
- --uniface-button-third-border-color: #2DD08B;
66
- --uniface-button-third-text-color: #ffffff;
67
- --uniface-button-third-hover-color: #2DD057B0;
68
- --uniface-button-third-active-color: #2DC071;
69
- --uniface-text-button-third-hover-color: #2DC071B0;
70
- --uniface-button-forth-background-color: #FAD85D;
71
- --uniface-button-forth-border-color: #FAE877;
72
- --uniface-button-forth-text-color: #374151;
73
- --uniface-button-forth-hover-color: #FAD85DB0;
74
- --uniface-button-forth-active-color: #FAD85D;
75
- --uniface-text-button-forth-hover-color: #FAD85DB0;
76
- --uniface-disabled-button-color: #F1F5F9;
77
- --uniface-disabled-button-border-color: #E2E8F0;
78
- --uniface-disabled-button-text-color: #B3BCCA;
79
47
  --uniface-text-button-color: #42A5F5;
80
48
  --uniface-text-button-hover-color: #1e648d;
81
49
  --uniface-active-border-color: #42A5F5;
@@ -430,10 +398,11 @@
430
398
  display: block;
431
399
  visibility: hidden;
432
400
  box-sizing: border-box;
433
- font-size: 18px;
434
401
  color: var(--uniface-editor-text-color, #374151);
435
402
  align-self: center;
436
403
  cursor: pointer;
404
+ font-size: 22px;
405
+ line-height: 1;
437
406
  }
438
407
  .uniface-common-picker .action-icon:active {
439
408
  color: var(--uniface-active-dropdown-color, #9d9d9d);
@@ -526,6 +495,7 @@
526
495
  :root {
527
496
  --uniface-editor-clean-icon-bg: #B3BCCA;
528
497
  --uniface-editor-clean-icon-color: #ffffff;
498
+ --uniface-embed-icon-color: #6B7280;
529
499
  --uniface-editor-text-color: #374151;
530
500
  --uniface-editor-line-height: 16px;
531
501
  --uniface-editor-padding: 0 8px;
@@ -544,6 +514,18 @@
544
514
  --uniface-editor-inline-action-icon-hover-bg: #42A5F51A;
545
515
  }
546
516
 
517
+ .uniface-display-field {
518
+ height: 24px;
519
+ position: relative;
520
+ line-height: 1.25em;
521
+ border-bottom: 1px solid var(--uniface-editor-border-color);
522
+ }
523
+ .uniface-display-field .content {
524
+ position: relative;
525
+ top: 50%;
526
+ transform: translateY(-50%);
527
+ }
528
+
547
529
  /*输入框中的清除按钮*/
548
530
  .uniface-editor-clean-icon {
549
531
  position: absolute;
@@ -581,12 +563,15 @@
581
563
  width: 100%;
582
564
  position: relative;
583
565
  height: 38px;
584
- line-height: var(--uniface-editor-line-height, 16px);
585
566
  display: inline-flex;
586
567
  flex-direction: row;
587
568
  align-items: center;
588
569
  gap: 8px;
589
570
  }
571
+ .uniface-common-editor .editor-embed-icon {
572
+ font-size: 20px;
573
+ color: var(--uniface-embed-icon-color);
574
+ }
590
575
  .uniface-common-editor .editor-embed-icon img {
591
576
  width: 28px;
592
577
  height: 28px;
@@ -768,6 +753,7 @@
768
753
  .uniface-filter-field.horizontal .field-container {
769
754
  grid-template-columns: auto 1fr;
770
755
  align-items: center;
756
+ gap: 8px;
771
757
  }
772
758
  .uniface-filter-field.horizontal .field-label {
773
759
  text-align: var(--uniface-criteria-field-label-alignment);
@@ -894,7 +880,6 @@
894
880
  .uniface-form-field .field-hint {
895
881
  width: 100%;
896
882
  box-sizing: border-box;
897
- padding: 4px 0;
898
883
  font-size: 0.9em;
899
884
  font-style: italic;
900
885
  color: var(--uniface-form-field-invalid-message-color);
@@ -922,7 +907,7 @@
922
907
  .uniface-form-field .form-content {
923
908
  width: 100%;
924
909
  display: grid;
925
- gap: 4px;
910
+ gap: 8px;
926
911
  }
927
912
  .uniface-form-field.vertical .form-content {
928
913
  grid-template-columns: 1fr;
@@ -939,6 +924,7 @@
939
924
  }
940
925
  .uniface-form-field.horizontal .form-content {
941
926
  grid-template-columns: auto 1fr;
927
+ gap: 8px;
942
928
  grid-template-areas: "label field" "empty hint";
943
929
  }
944
930
  .uniface-form-field.horizontal .form-content .field-label {
@@ -986,9 +972,11 @@
986
972
  line-height: 1.5em;
987
973
  color: var(--uniface-default-text-color, #374151);
988
974
  padding: var(--uniface-memo-padding, 6px 8px);
975
+ border-bottom: 1px solid var(--uniface-editor-border-color, #E2E8F0);
989
976
  }
990
977
  .uniface-memo-editor:focus {
991
978
  outline: none;
979
+ border-bottom-color: var(--uniface-editor-outlined-active-border-color, #298DFF);
992
980
  }
993
981
  .uniface-memo-editor.plain {
994
982
  border: none;
@@ -1275,9 +1263,47 @@
1275
1263
  border-top: 1px solid var(--uniface-dialog-divider-color, #F0F0F0);
1276
1264
  }
1277
1265
 
1266
+ :root {
1267
+ --uniface-button-min-width: 80px;
1268
+ --uniface-button-plain-background-color: #f0f0f0;
1269
+ --uniface-button-plain-border-color: #f0f0f0;
1270
+ --uniface-button-plain-text-color: #374151;
1271
+ --uniface-button-plain-hover-color: #f0f0f0B0;
1272
+ --uniface-button-plainy-active-color: #f0f0f0;
1273
+ --uniface-button-primary-background-color: #42A5F5;
1274
+ --uniface-button-primary-border-color: #42B5DB;
1275
+ --uniface-button-primary-text-color: #ffffff;
1276
+ --uniface-button-primary-hover-color: #42A5F5B0;
1277
+ --uniface-button-primary-active-color: #42A5F5;
1278
+ --uniface-text-button-primary-hover-color: #42A5F5B0;
1279
+ --uniface-button-secondary-background-color: #FF685B;
1280
+ --uniface-button-secondary-border-color: #FF7875;
1281
+ --uniface-button-secondary-text-color: #ffffff;
1282
+ --uniface-button-secondary-hover-color: #FF685BB0;
1283
+ --uniface-button-secondary-active-color: #FF4D4F;
1284
+ --uniface-text-button-secondary-hover-color: #D32F2FB0;
1285
+ --uniface-button-third-background-color: #2DC071;
1286
+ --uniface-button-third-border-color: #2DD08B;
1287
+ --uniface-button-third-text-color: #ffffff;
1288
+ --uniface-button-third-hover-color: #2DD057B0;
1289
+ --uniface-button-third-active-color: #2DC071;
1290
+ --uniface-text-button-third-hover-color: #2DC071B0;
1291
+ --uniface-button-forth-background-color: #FAD85D;
1292
+ --uniface-button-forth-border-color: #FAE877;
1293
+ --uniface-button-forth-text-color: #374151;
1294
+ --uniface-button-forth-hover-color: #FAD85DB0;
1295
+ --uniface-button-forth-active-color: #FAD85D;
1296
+ --uniface-text-button-forth-hover-color: #FAD85DB0;
1297
+ --uniface-disabled-button-color: #F1F5F9;
1298
+ --uniface-disabled-button-border-color: #E2E8F0;
1299
+ --uniface-disabled-button-text-color: #B3BCCA;
1300
+ }
1301
+
1278
1302
  /*通用按钮设置*/
1279
1303
  .uniface-button {
1280
- display: inline-block;
1304
+ display: inline-flex;
1305
+ flex-direction: row;
1306
+ align-items: center;
1281
1307
  box-sizing: border-box;
1282
1308
  cursor: pointer;
1283
1309
  text-align: center;
@@ -1285,6 +1311,9 @@
1285
1311
  -moz-user-select: none;
1286
1312
  -ms-user-select: none;
1287
1313
  user-select: none;
1314
+ min-width: var(--uniface-button-min-width);
1315
+ height: 28px;
1316
+ gap: 8px;
1288
1317
  font-size: 12px;
1289
1318
  letter-spacing: 1px;
1290
1319
  transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
@@ -1363,18 +1392,18 @@
1363
1392
  color: var(--uniface-disabled-button-text-color, #B3BCCA);
1364
1393
  }
1365
1394
  .uniface-button.common-button {
1366
- padding: 6px 16px;
1395
+ padding: 0 16px;
1367
1396
  border-radius: 4px;
1368
1397
  }
1369
- .uniface-button.common-button > span {
1370
- padding: 0 4px;
1398
+ .uniface-button.common-button i {
1399
+ font-size: 1.5em;
1371
1400
  }
1372
1401
  .uniface-button.common-button.big {
1373
- padding: 10px 20px;
1402
+ height: 32px;
1374
1403
  font-size: 1.1em;
1375
1404
  }
1376
1405
  .uniface-button.common-button.mini {
1377
- padding: 4px 10px;
1406
+ height: 24px;
1378
1407
  font-size: 0.9em;
1379
1408
  }
1380
1409
  .uniface-button.common-button.plain {
@@ -1390,40 +1419,37 @@
1390
1419
  border-radius: 12px;
1391
1420
  }
1392
1421
  .uniface-button.icon-button {
1393
- width: 32px;
1394
- height: 32px;
1395
- padding: 2px;
1422
+ width: 28px;
1423
+ height: 28px;
1396
1424
  border-radius: 50%;
1425
+ min-width: unset;
1426
+ justify-content: center;
1397
1427
  }
1398
1428
  .uniface-button.icon-button i {
1399
- line-height: 28px;
1400
- font-size: 16px;
1429
+ font-size: 18px;
1401
1430
  }
1402
1431
  .uniface-button.icon-button.big {
1403
- width: 48px;
1404
- height: 48px;
1405
- padding: 4px;
1432
+ width: 32px;
1433
+ height: 32px;
1406
1434
  }
1407
1435
  .uniface-button.icon-button.big i {
1408
- line-height: 40px;
1409
- font-size: 24px;
1436
+ font-size: 22px;
1410
1437
  }
1411
1438
  .uniface-button.icon-button.mini {
1412
1439
  width: 24px;
1413
1440
  height: 24px;
1414
- padding: 2px;
1415
1441
  }
1416
1442
  .uniface-button.icon-button.mini i {
1417
- line-height: 20px;
1418
- font-size: 12px;
1443
+ font-size: 16px;
1419
1444
  }
1420
1445
  .uniface-button.text-button {
1421
1446
  padding: 3px 6px;
1422
1447
  cursor: pointer;
1423
1448
  text-align: center;
1424
1449
  background-color: transparent;
1425
- color: var(--uniface-button-plain-text-color, #374151);
1450
+ color: var(--uniface-button-plain-text-color);
1426
1451
  user-select: none;
1452
+ min-width: unset;
1427
1453
  }
1428
1454
  .uniface-button.text-button.big {
1429
1455
  font-size: 1.2em;
@@ -1686,12 +1712,13 @@
1686
1712
  border-color: var(--uniface-card-divid-border-color, rgba(66, 165, 245, 0.4392156863));
1687
1713
  }
1688
1714
  .uniface-card > div .card-header {
1689
- height: var(--uniface-card-header-height, 54px);
1690
- border-bottom: 1px solid var(--uniface-card-inside-border-color, #E2E8F0);
1691
1715
  box-sizing: border-box;
1692
1716
  font-weight: 600;
1717
+ position: relative;
1693
1718
  }
1694
1719
  .uniface-card > div .card-header.simple {
1720
+ height: var(--uniface-card-header-height, 54px);
1721
+ border-bottom: 1px solid var(--uniface-card-inside-border-color, #E2E8F0);
1695
1722
  line-height: var(--uniface-card-header-height, 54px);
1696
1723
  padding: var(--uniface-card-header-padding, 0 24px);
1697
1724
  width: 100%;
@@ -1746,7 +1773,6 @@
1746
1773
  }
1747
1774
  .uniface-card > div .card-action-bar.simple .action-item i {
1748
1775
  cursor: pointer;
1749
- color: var(--uniface-card-primary-text-color, #374151);
1750
1776
  }
1751
1777
  .uniface-card > div .card-action-bar.simple .action-item i:hover {
1752
1778
  font-size: var(--uniface-action-image-hover-size);
@@ -2191,49 +2217,58 @@
2191
2217
  line-height: 3em;
2192
2218
  }
2193
2219
 
2194
- .uniface-header {
2195
- background-color: var(--uniface-primary-color, #42A5F5);
2196
- color: var(--uniface-primary-text-color, #ffffff);
2220
+ :root {
2221
+ --uniface-top-bar-background-color: #0061FF;
2222
+ --uniface-top-bar-color: #f0f0f0;
2223
+ --uniface-top-bar-height: 48px;
2224
+ --uniface-top-bar-font-szie: 24px;
2225
+ --uniface-top-bar-margin: 12px;
2226
+ --uniface-avatar-size: 40px;
2227
+ --uniface-avatar-radius: 50%;
2228
+ }
2229
+
2230
+ .uniface-top-bar {
2231
+ background-color: var(--uniface-top-bar-background-color);
2232
+ color: var(--uniface-top-bar-color);
2197
2233
  text-align: center;
2198
2234
  width: 100%;
2235
+ height: var(--uniface-top-bar-height);
2236
+ font-size: var(--uniface-top-bar-font-szie);
2199
2237
  display: flex;
2200
2238
  flex-direction: row;
2201
2239
  box-sizing: border-box;
2202
2240
  justify-items: center;
2203
- padding: 0.5em 0.5em;
2241
+ align-items: center;
2242
+ padding: 0 var(--uniface-top-bar-margin);
2243
+ gap: 8px;
2204
2244
  }
2205
- .uniface-header .bar-home, .uniface-header .bar-right {
2245
+ .uniface-top-bar > div {
2206
2246
  flex: 0 0 auto;
2207
- align-self: center;
2208
2247
  }
2209
- .uniface-header .bar-home {
2210
- display: flex;
2248
+ .uniface-top-bar .bar-home {
2211
2249
  position: relative;
2212
- width: 32px;
2213
- height: 32px;
2214
- border-radius: 50%;
2215
- border: 1px solid transparent;
2216
- overflow: hidden;
2217
- box-sizing: border-box;
2218
- flex-direction: column;
2219
- justify-content: center;
2220
- text-align: center;
2221
- font-size: 22px;
2222
- }
2223
- .uniface-header .bar-home:hover {
2224
- border-color: #ffffff;
2250
+ cursor: pointer;
2225
2251
  }
2226
- .uniface-header .bar-home:active {
2252
+ .uniface-top-bar .bar-home:active {
2227
2253
  top: 1px;
2228
2254
  }
2229
- .uniface-header .title {
2255
+ .uniface-top-bar .main-content {
2230
2256
  flex: 1 1 auto;
2231
- overflow: hidden;
2232
- align-self: center;
2257
+ text-align: left;
2233
2258
  }
2234
- .uniface-header .title span {
2235
- padding: 0 4px;
2236
- font-size: 24px;
2259
+ .uniface-top-bar .avatar {
2260
+ height: var(--uniface-avatar-size);
2261
+ }
2262
+ .uniface-top-bar .avatar img {
2263
+ position: relative;
2264
+ width: var(--uniface-avatar-size);
2265
+ height: var(--uniface-avatar-size);
2266
+ border-radius: var(--uniface-avatar-radius);
2267
+ object-fit: cover;
2268
+ cursor: pointer;
2269
+ }
2270
+ .uniface-top-bar .avatar img:active {
2271
+ top: 1px;
2237
2272
  }
2238
2273
 
2239
2274
  .uniface-lookup-editor {
@@ -2612,13 +2647,20 @@
2612
2647
  flex: 0 0 auto;
2613
2648
  }
2614
2649
 
2650
+ :root {
2651
+ --uniface-navigator-menu-background-color: #ffffff;
2652
+ --uniface-navigator-menu-color: #374151;
2653
+ --uniface-navigator-menu-hover-background-color: #81D4FA;
2654
+ --uniface-navigator-menu-hover-color: #374151;
2655
+ }
2656
+
2615
2657
  .uniface-navigator-menu-panel {
2616
2658
  display: block;
2617
2659
  width: 100%;
2618
2660
  height: 100%;
2619
2661
  user-select: none;
2620
- background-color: var(--uniface-primary-color, #42A5F5);
2621
- color: var(--uniface-primary-text-color, #ffffff);
2662
+ background-color: var(--uniface-navigator-menu-background-color);
2663
+ color: var(--uniface-navigator-menu-color);
2622
2664
  position: relative;
2623
2665
  overflow-x: hidden;
2624
2666
  overflow-y: auto;
@@ -2649,7 +2691,7 @@
2649
2691
  }
2650
2692
  .uniface-navigator-menu-panelul li span:hover, .uniface-navigator-menu-panel ul li span:hover {
2651
2693
  background-color: var(--uniface-navigator-menu-hover-background-color, #81D4FA);
2652
- color: var(--uniface-default-text-color, #374151);
2694
+ color: var(--uniface-navigator-menu-hover-color);
2653
2695
  border-radius: 4px;
2654
2696
  }
2655
2697
  .uniface-navigator-menu-panelul li.expandable > span:hover::after, .uniface-navigator-menu-panel ul li.expandable > span:hover::after {
@@ -2658,7 +2700,7 @@
2658
2700
  font-size: 0.9em;
2659
2701
  position: absolute;
2660
2702
  right: 8px;
2661
- color: var(--uniface-default-text-color, #374151);
2703
+ color: var(--uniface-navigator-menu-color);
2662
2704
  }
2663
2705
  .uniface-navigator-menu-panelul li.expandable.fold ul, .uniface-navigator-menu-panel ul li.expandable.fold ul {
2664
2706
  display: none;
@@ -3565,11 +3607,13 @@
3565
3607
  }
3566
3608
  .uniface-accordion-panel .accordion .header {
3567
3609
  background-color: var(--uniface-accordion-title-bg, #F8FAFC);
3568
- padding: 12px 16px;
3610
+ padding: 8px 12px;
3569
3611
  width: 100%;
3570
3612
  box-sizing: border-box;
3571
3613
  cursor: pointer;
3572
3614
  display: flex;
3615
+ gap: 8px;
3616
+ flex-direction: row;
3573
3617
  align-items: center;
3574
3618
  }
3575
3619
  .uniface-accordion-panel .accordion .header:hover {
@@ -3583,7 +3627,7 @@
3583
3627
  transition: height 0.3s ease-out;
3584
3628
  }
3585
3629
  .uniface-accordion-panel.compact .accordion .header {
3586
- padding: 6px 8px;
3630
+ padding: 4px 8px;
3587
3631
  }
3588
3632
  .uniface-accordion-panel.compact .accordion .content {
3589
3633
  padding: 8px;
@@ -4105,6 +4149,47 @@
4105
4149
  overflow-y: hidden;
4106
4150
  }
4107
4151
 
4152
+ :root {
4153
+ --breadcrumbs-gap: 8px;
4154
+ --breadcrumbs-color: var(--uniface-primary-text-color, #374151);
4155
+ --breadcrumbs-hover-color: var(--uniface-primary-hover-color, #298DEF);
4156
+ --breadcrumbs-active-color: var(--uniface-primary-hover-color, #298DEF);
4157
+ --breadcrumbs-active-weight: 600;
4158
+ --breadcrumbs-padding: 8px 12px;
4159
+ }
4160
+
4161
+ .uniface-breadcrumbs {
4162
+ width: 100%;
4163
+ display: flex;
4164
+ flex-direction: row;
4165
+ flex-wrap: nowrap;
4166
+ overflow: hidden;
4167
+ color: var(--breadcrumbs-color);
4168
+ gap: var(--breadcrumbs-gap);
4169
+ padding: var(--breadcrumbs-padding);
4170
+ }
4171
+ .uniface-breadcrumbs .breadcrumb {
4172
+ margin: 0 6px;
4173
+ cursor: pointer;
4174
+ }
4175
+ .uniface-breadcrumbs .breadcrumb:hover {
4176
+ color: var(--breadcrumbs-hover-color);
4177
+ }
4178
+ .uniface-breadcrumbs .breadcrumb:active {
4179
+ color: var(--breadcrumbs-active-color);
4180
+ font-weight: var(--breadcrumbs-active-weight);
4181
+ }
4182
+ .uniface-breadcrumbs > div:last-child .breadcrumb {
4183
+ cursor: default;
4184
+ }
4185
+ .uniface-breadcrumbs > div:last-child .breadcrumb:hover {
4186
+ color: var(--uniface-primary-text-color);
4187
+ }
4188
+ .uniface-breadcrumbs > div:last-child .breadcrumb:active {
4189
+ color: var(--uniface-primary-text-color);
4190
+ font-weight: unset;
4191
+ }
4192
+
4108
4193
  html {
4109
4194
  box-sizing: border-box;
4110
4195
  }
@@ -82,8 +82,9 @@
82
82
 
83
83
 
84
84
  onMount(async () => {
85
- unit = units.find(item => item.code == unitCode) ?? units[0];
86
85
  standardUnit = units.find(item => item.ratio == 1);
86
+ unit = units.find(item => item.code == unitCode) ?? standardUnit ?? units[0];
87
+ unitCode = unit.code;
87
88
  calculateUnitValue();
88
89
  })
89
90
 
@@ -110,18 +111,18 @@
110
111
  <NumberInput bind:this={editor} style="flex: 1 1 auto" {disabled} {placeholder} bind:value={unitValue} precision={unit?.precision}
111
112
  {allowNegative}
112
113
  max={unit?.max} min={unit?.min} {readonly} onChange={handleValueChange}/>
113
- <div class="editor-embed-icon" slot="trailing-icon">
114
+ <svelte:fragment slot="trailing-icon">
114
115
  {#if !disabled && !readonly}
115
- <i class="option-dropdown uniface-icon-chevron-down" aria-hidden="true" on:click={openPopup}></i>
116
+ <i style="font-size: 22px" class="option-dropdown icon_google_arrow_drop_down" aria-hidden="true" on:click={openPopup}></i>
116
117
  {/if}
117
- </div>
118
+ </svelte:fragment>
118
119
  </CommonEditor>
119
120
 
120
121
  {#if showPopup}
121
122
  <Popover target={divPanel} autoFit={false} align="right" on:close={()=>{showPopup=false}}>
122
123
  <div class="options-popover" style="min-width: 90px; box-sizing: border-box; text-align: center; {mh}" >
123
124
  {#each units as op}
124
- <div style="padding-left: 12px; padding-right: 12px" on:click={handleUnitClick(op)} aria-hidden="true">
125
+ <div class="option-item" style="padding-left: 12px; padding-right: 12px" on:click={handleUnitClick(op)} aria-hidden="true">
125
126
  <span>{op.text ?? op.code}</span>
126
127
  </div>
127
128
  {/each}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ticatec/uniface-element",
3
- "version": "0.1.24",
3
+ "version": "0.1.30",
4
4
  "description": "uniface web elements",
5
5
  "scripts": {
6
6
  "dev": "vite dev",
@@ -75,6 +75,10 @@
75
75
  "types": "./dist/attachment-files/index.d.ts",
76
76
  "import": "./dist/attachment-files/index.js"
77
77
  },
78
+ "./Breadcrumbs": {
79
+ "types": "./dist/breadcrumbs/index.d.ts",
80
+ "import": "./dist/breadcrumbs/index.js"
81
+ },
78
82
  "./Box": {
79
83
  "types": "./dist/box/index.d.ts",
80
84
  "svelte": "./dist/box/Box.svelte",
@@ -321,7 +325,7 @@
321
325
  "@sveltejs/kit": "^2.0.0",
322
326
  "@sveltejs/package": "^2.0.0",
323
327
  "@sveltejs/vite-plugin-svelte": "^4.0.0",
324
- "@ticatec/uniface-icons": "^0.2.0",
328
+ "@ticatec/uniface-google-material-icons": "^0.1.1",
325
329
  "dayjs": "^1.11.10",
326
330
  "publint": "^0.3.2",
327
331
  "sass": "^1.57.1",