@ticatec/uniface-element 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/accordion/README.md +169 -0
  2. package/dist/accordion/README_CN.md +176 -0
  3. package/dist/action-bar/README.md +275 -0
  4. package/dist/action-bar/README_CN.md +285 -0
  5. package/dist/app-layout/README.md +374 -0
  6. package/dist/app-layout/README_CN.md +381 -0
  7. package/dist/app-top-bar/README.md +357 -0
  8. package/dist/app-top-bar/README_CN.md +365 -0
  9. package/dist/attachment-files/AttachmentFilesField.svelte +67 -1
  10. package/dist/attachment-files/AttachmentFilesField.svelte.d.ts +8 -1
  11. package/dist/base-calendar/CalendarBase.svelte +0 -3
  12. package/dist/box/README.md +385 -0
  13. package/dist/box/README_CN.md +393 -0
  14. package/dist/breadcrumbs/README.md +442 -0
  15. package/dist/breadcrumbs/README_CN.md +442 -0
  16. package/dist/button/Button.svelte +27 -7
  17. package/dist/button/Button.svelte.d.ts +3 -1
  18. package/dist/button/IconButton.svelte +26 -6
  19. package/dist/button/IconButton.svelte.d.ts +3 -1
  20. package/dist/button/IconButton_README.md +513 -0
  21. package/dist/button/IconButton_README_CN.md +513 -0
  22. package/dist/button/README.md +428 -0
  23. package/dist/button/README_CN.md +428 -0
  24. package/dist/button/TextButton.svelte +26 -6
  25. package/dist/button/TextButton.svelte.d.ts +3 -1
  26. package/dist/button/TextButton_README.md +571 -0
  27. package/dist/button/TextButton_README_CN.md +571 -0
  28. package/dist/card/README.md +666 -0
  29. package/dist/card/README_CN.md +666 -0
  30. package/dist/cascade-options-select/CascadeOptionSelect.svelte +43 -7
  31. package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +3 -4
  32. package/dist/cascade-options-select/README.md +663 -2
  33. package/dist/cascade-options-select/README_CN.md +664 -0
  34. package/dist/checkbox/CheckBox.svelte +20 -6
  35. package/dist/checkbox/CheckBox.svelte.d.ts +4 -2
  36. package/dist/checkbox/README.md +562 -0
  37. package/dist/checkbox/README_CN.md +727 -0
  38. package/dist/common-editor/NumberInput.svelte +39 -26
  39. package/dist/common-editor/NumberInput.svelte.d.ts +5 -1
  40. package/dist/concise-data-table/ConciseListTable.svelte +133 -36
  41. package/dist/concise-data-table/ConciseListTable.svelte.d.ts +8 -1
  42. package/dist/concise-data-table/DataCell.svelte +5 -6
  43. package/dist/concise-data-table/DataRow.svelte +22 -2
  44. package/dist/concise-data-table/DataRow.svelte.d.ts +1 -0
  45. package/dist/concise-data-table/README.md +606 -0
  46. package/dist/concise-data-table/README_CN.md +611 -0
  47. package/dist/context-menu/ContextMenu.svelte +138 -21
  48. package/dist/context-menu/ContextMenu.svelte.d.ts +5 -0
  49. package/dist/context-menu/ContextMenuItem.d.ts +20 -4
  50. package/dist/context-menu/README.md +551 -0
  51. package/dist/context-menu/README_CN.md +551 -0
  52. package/dist/criteria-field/CriteriaField.svelte +3 -5
  53. package/dist/criteria-field/README.md +532 -0
  54. package/dist/criteria-field/README_CN.md +532 -0
  55. package/dist/data-table/README.md +712 -0
  56. package/dist/data-table/README_CN.md +712 -0
  57. package/dist/date-picker/DatePicker.svelte +44 -7
  58. package/dist/date-picker/DatePicker.svelte.d.ts +3 -4
  59. package/dist/date-picker/DateTimePicker.svelte +32 -8
  60. package/dist/date-picker/DateTimePicker.svelte.d.ts +3 -4
  61. package/dist/date-picker/README.md +326 -0
  62. package/dist/date-picker/README_CN.md +316 -0
  63. package/dist/date-picker/ScrollBar.svelte +18 -8
  64. package/dist/date-picker/ScrollBar.svelte.d.ts +1 -1
  65. package/dist/date-picker/TimePanel.svelte +5 -5
  66. package/dist/date-picker/TimePanel.svelte.d.ts +1 -1
  67. package/dist/date-range/README.md +374 -0
  68. package/dist/date-range/README_CN.md +374 -0
  69. package/dist/dialog/DialogBoard.svelte +1 -1
  70. package/dist/dialog/README.md +596 -0
  71. package/dist/dialog/README_CN.md +596 -0
  72. package/dist/drawer/README.md +679 -1
  73. package/dist/drawer/README_CN.md +679 -0
  74. package/dist/group-box/group-check-box/GroupCheckBox.svelte +62 -5
  75. package/dist/group-box/group-check-box/GroupCheckBox.svelte.d.ts +7 -2
  76. package/dist/group-box/group-check-box/README.md +749 -0
  77. package/dist/group-box/group-check-box/README_CN.md +750 -0
  78. package/dist/group-box/group-radio-box/GroupRadioBox.svelte +69 -4
  79. package/dist/group-box/group-radio-box/GroupRadioBox.svelte.d.ts +8 -2
  80. package/dist/group-box/group-radio-box/README.md +920 -0
  81. package/dist/group-box/group-radio-box/README_CN.md +920 -0
  82. package/dist/image-files/README.md +1346 -0
  83. package/dist/image-files/README_CN.md +1346 -0
  84. package/dist/input-options-select/InputOptionsSelect.svelte +161 -65
  85. package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +4 -1
  86. package/dist/lib/forwardAllEvents.d.ts +3 -0
  87. package/dist/lib/forwardAllEvents.js +24 -0
  88. package/dist/list-box/README.md +579 -0
  89. package/dist/list-box/README_CN.md +682 -0
  90. package/dist/lookup-editor/LookupEditor.svelte +15 -3
  91. package/dist/lookup-editor/LookupEditor.svelte.d.ts +3 -4
  92. package/dist/lookup-editor/README.md +684 -0
  93. package/dist/lookup-editor/README_CN.md +684 -0
  94. package/dist/memo-editor/MemoEditor.svelte +77 -27
  95. package/dist/memo-editor/MemoEditor.svelte.d.ts +6 -3
  96. package/dist/memo-editor/README.md +819 -0
  97. package/dist/memo-editor/README_CN.md +819 -0
  98. package/dist/message-box/README.md +398 -0
  99. package/dist/message-box/README_CN.md +398 -0
  100. package/dist/number-editor/NumberEditor.svelte +2 -2
  101. package/dist/number-editor/NumberEditor.svelte.d.ts +1 -1
  102. package/dist/number-editor/README.md +353 -22
  103. package/dist/number-editor/README_CN.md +357 -0
  104. package/dist/number-range/README.md +443 -0
  105. package/dist/number-range/README_CN.md +443 -0
  106. package/dist/options-multi-select/OptionsMultiSelect.svelte +87 -12
  107. package/dist/options-multi-select/OptionsMultiSelect.svelte.d.ts +3 -1
  108. package/dist/options-multi-select/README.md +480 -0
  109. package/dist/options-multi-select/README_CN.md +480 -0
  110. package/dist/options-select/OptionsSelect.svelte +36 -5
  111. package/dist/options-select/OptionsSelect.svelte.d.ts +3 -4
  112. package/dist/options-select/README.md +632 -0
  113. package/dist/options-select/README_CN.md +632 -0
  114. package/dist/page/README.md +605 -0
  115. package/dist/page/README_CN.md +605 -0
  116. package/dist/pagination/README.md +946 -0
  117. package/dist/pagination/README_CN.md +946 -0
  118. package/dist/pagination-panel/README.md +1075 -0
  119. package/dist/pagination-panel/README_CN.md +1075 -0
  120. package/dist/popup-hint/README.md +841 -0
  121. package/dist/popup-hint/README_CN.md +840 -0
  122. package/dist/progress-bar/README.md +242 -0
  123. package/dist/progress-bar/README_CN.md +242 -0
  124. package/dist/progress-step-bar/README.md +316 -0
  125. package/dist/progress-step-bar/README_CN.md +316 -0
  126. package/dist/prompts-text-editor/PromptsTextEditor.svelte +6 -3
  127. package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +3 -1
  128. package/dist/prompts-text-editor/README.md +329 -0
  129. package/dist/prompts-text-editor/README_CN.md +329 -0
  130. package/dist/property-editor/README.md +969 -0
  131. package/dist/property-editor/README_CN.md +969 -0
  132. package/dist/radio-button/README.md +372 -0
  133. package/dist/radio-button/README_CN.md +372 -0
  134. package/dist/radio-button/RadioButton.svelte +32 -3
  135. package/dist/radio-button/RadioButton.svelte.d.ts +12 -1
  136. package/dist/search-box/README.md +425 -0
  137. package/dist/search-box/README_CN.md +424 -0
  138. package/dist/search-box/SearchBox.svelte +22 -6
  139. package/dist/search-box/SearchBox.svelte.d.ts +4 -1
  140. package/dist/tabs/README.md +919 -0
  141. package/dist/tabs/README_CN.md +920 -0
  142. package/dist/tag/README.md +922 -0
  143. package/dist/tag/README_CN.md +922 -0
  144. package/dist/text-editor/PasswordEditor.svelte +17 -2
  145. package/dist/text-editor/PasswordEditor.svelte.d.ts +3 -3
  146. package/dist/text-editor/PasswordEditor_README.md +551 -0
  147. package/dist/text-editor/PasswordEditor_README_CN.md +551 -0
  148. package/dist/text-editor/README.md +466 -0
  149. package/dist/text-editor/README_CN.md +466 -0
  150. package/dist/text-editor/TextEditor.svelte +51 -19
  151. package/dist/text-editor/TextEditor.svelte.d.ts +0 -1
  152. package/dist/ticatec-uniface-web.css +1 -0
  153. package/dist/time-editor/README.md +498 -24
  154. package/dist/time-editor/README_CN.md +498 -0
  155. package/dist/time-editor/TimeEditor.svelte +7 -3
  156. package/dist/time-editor/TimeEditor.svelte.d.ts +3 -1
  157. package/dist/toast/README.md +667 -0
  158. package/dist/toast/README_CN.md +667 -0
  159. package/dist/transfer/README.md +795 -0
  160. package/dist/transfer/Transfer.svelte +6 -4
  161. package/dist/transfer/Transfer.svelte.d.ts +3 -1
  162. package/dist/tree-view/README.md +761 -0
  163. package/dist/tree-view/README_CN.md +761 -0
  164. package/dist/tree-view/TreeView.svelte +5 -3
  165. package/dist/tree-view/TreeView.svelte.d.ts +3 -1
  166. package/dist/unit-number-editor/README.md +546 -20
  167. package/dist/unit-number-editor/README_CN.md +525 -0
  168. package/dist/unit-number-editor/UnitNumberEditor.svelte +62 -8
  169. package/dist/unit-number-editor/UnitNumberEditor.svelte.d.ts +5 -1
  170. package/docs/form-field/cn/README_CN.md +364 -0
  171. package/docs/form-field/en/README.md +364 -0
  172. package/docs/form-panel/flex-form/cn/README_CN.md +586 -0
  173. package/docs/form-panel/flex-form/en/README.md +586 -0
  174. package/docs/form-panel/flex-row-form/cn/README_CN.md +787 -0
  175. package/docs/form-panel/flex-row-form/en/README.md +787 -0
  176. package/docs/form-panel/grid-form/en/README.md +744 -0
  177. package/package.json +1 -1
  178. package/dist/drawer/README-CN.md +0 -1
@@ -0,0 +1,169 @@
1
+ # Accordion Component
2
+
3
+ A flexible and customizable accordion component for collapsible content sections.
4
+
5
+ ## Features
6
+
7
+ - **Collapsible Sections**: Expandable and collapsible content panels
8
+ - **Two Modes**:
9
+ - **Multiple Mode**: Multiple panels can be open simultaneously
10
+ - **Exclusive Mode**: Only one panel can be open at a time
11
+ - **Dynamic Content**: Support for any Svelte component as panel content
12
+ - **Custom Headers**: Optional custom header components
13
+ - **Responsive Design**: Compact mode for smaller screens
14
+ - **Accessible**: Built with accessibility best practices
15
+
16
+ ## Basic Usage
17
+
18
+ ```svelte
19
+ <script>
20
+ import Accordion, { type AccordionItem } from '@ticatec/uniface-element/Accordion';
21
+ import MyComponent from './MyComponent.svelte';
22
+
23
+ const accordionItems: AccordionItem[] = [
24
+ {
25
+ title: 'Section 1',
26
+ component: MyComponent,
27
+ params: { data: 'example' }
28
+ },
29
+ {
30
+ title: 'Section 2',
31
+ component: MyComponent,
32
+ params: { data: 'another example' }
33
+ }
34
+ ];
35
+ </script>
36
+
37
+ <Accordion accordions={accordionItems} />
38
+ ```
39
+
40
+ ## Props
41
+
42
+ | Prop | Type | Default | Description |
43
+ |------|------|---------|-------------|
44
+ | `accordions` | `AccordionItem[]` | `[]` | Array of accordion items to display |
45
+ | `exclusive` | `boolean` | `false` | Whether only one panel can be open at a time |
46
+ | `activeItem` | `AccordionItem` | `null` | Currently active item (used in exclusive mode) |
47
+ | `compact` | `boolean` | `false` | Enable compact styling for smaller screens |
48
+ | `style` | `string` | `''` | Custom CSS styles |
49
+ | `class` | `string` | `''` | Additional CSS classes |
50
+
51
+ ## AccordionItem Interface
52
+
53
+ ```typescript
54
+ interface AccordionItem {
55
+ title: string; // Display title for the accordion header
56
+ component: any; // Svelte component to render in the panel
57
+ params?: any; // Props to pass to the component
58
+ }
59
+ ```
60
+
61
+ ## Examples
62
+
63
+ ### Multiple Open Panels (Default)
64
+
65
+ ```svelte
66
+ <Accordion accordions={items} />
67
+ ```
68
+
69
+ ### Exclusive Mode (Only One Open)
70
+
71
+ ```svelte
72
+ <Accordion
73
+ accordions={items}
74
+ exclusive={true}
75
+ bind:activeItem={currentActive}
76
+ />
77
+ ```
78
+
79
+ ### Compact Mode
80
+
81
+ ```svelte
82
+ <Accordion
83
+ accordions={items}
84
+ compact={true}
85
+ />
86
+ ```
87
+
88
+ ### Custom Styling
89
+
90
+ ```svelte
91
+ <Accordion
92
+ accordions={items}
93
+ style="border: 1px solid #ccc; border-radius: 8px;"
94
+ class="my-custom-accordion"
95
+ />
96
+ ```
97
+
98
+ ## Behavior
99
+
100
+ ### Multiple Mode
101
+ - Users can expand/collapse any number of panels
102
+ - Clicking a panel header toggles its open/closed state
103
+ - No automatic closing of other panels
104
+
105
+ ### Exclusive Mode
106
+ - Only one panel can be open at a time
107
+ - Opening a new panel automatically closes the previously open panel
108
+ - First panel opens automatically on mount if no `activeItem` is specified
109
+ - Shows folder icon for the currently open panel
110
+
111
+ ## Styling
112
+
113
+ The component uses the following CSS classes:
114
+
115
+ - `.uniface-accordion-panel` - Main container
116
+ - `.accordion` - Individual accordion item
117
+ - `.header` - Accordion header (clickable)
118
+ - `.content` - Accordion content area
119
+ - `.compact` - Applied when compact mode is enabled
120
+
121
+ ## Accessibility
122
+
123
+ - Headers are clickable for keyboard navigation
124
+ - Proper ARIA attributes for screen readers
125
+ - Visual indicators for open/closed states
126
+ - Focus management for keyboard users
127
+
128
+ ## Icon Usage
129
+
130
+ The component uses Google Material Icons:
131
+ - `icon_google_keyboard_arrow_down` - Collapsed state (multiple mode)
132
+ - `icon_google_keyboard_arrow_up` - Expanded state (multiple mode)
133
+ - `icon_google_folder_open` - Active state (exclusive mode)
134
+
135
+ ## Advanced Usage
136
+
137
+ ### Custom Header Component
138
+
139
+ You can provide a custom header component by setting the `header` prop on AccordionItemView:
140
+
141
+ ```svelte
142
+ <AccordionItemView
143
+ title={item.title}
144
+ isOpen={isOpen}
145
+ header={CustomHeaderComponent}
146
+ onClick={handleClick}
147
+ >
148
+ <!-- content -->
149
+ </AccordionItemView>
150
+ ```
151
+
152
+ ### Dynamic Content
153
+
154
+ Accordion items can contain any Svelte component with dynamic parameters:
155
+
156
+ ```javascript
157
+ const dynamicItems = [
158
+ {
159
+ title: 'User Profile',
160
+ component: UserProfile,
161
+ params: { userId: 123, editable: true }
162
+ },
163
+ {
164
+ title: 'Settings',
165
+ component: SettingsPanel,
166
+ params: { theme: 'dark', language: 'en' }
167
+ }
168
+ ];
169
+ ```
@@ -0,0 +1,176 @@
1
+ # 手风琴组件
2
+
3
+ 一个灵活且可定制的手风琴组件,用于可折叠的内容区域。
4
+
5
+ ## 功能特性
6
+
7
+ - **可折叠区域**: 可展开和折叠的内容面板
8
+ - **两种模式**:
9
+ - **多选模式**: 多个面板可以同时打开
10
+ - **独占模式**: 同时只能打开一个面板
11
+ - **动态内容**: 支持任何Svelte组件作为面板内容
12
+ - **自定义标题**: 可选的自定义标题组件
13
+ - **响应式设计**: 紧凑模式适配小屏幕
14
+ - **无障碍访问**: 基于无障碍最佳实践构建
15
+
16
+ ## 基本用法
17
+
18
+ ```svelte
19
+ <script>
20
+ import Accordion, { type AccordionItem } from '@ticatec/uniface-element/Accordion';
21
+ import MyComponent from './MyComponent.svelte';
22
+
23
+ const accordionItems: AccordionItem[] = [
24
+ {
25
+ title: '第一部分',
26
+ component: MyComponent,
27
+ params: { data: '示例数据' }
28
+ },
29
+ {
30
+ title: '第二部分',
31
+ component: MyComponent,
32
+ params: { data: '另一个示例' }
33
+ }
34
+ ];
35
+ </script>
36
+
37
+ <Accordion accordions={accordionItems} />
38
+ ```
39
+
40
+ ## 属性参数
41
+
42
+ | 属性 | 类型 | 默认值 | 描述 |
43
+ |------|------|---------|-------------|
44
+ | `accordions` | `AccordionItem[]` | `[]` | 要显示的手风琴项目数组 |
45
+ | `exclusive` | `boolean` | `false` | 是否同时只能打开一个面板 |
46
+ | `activeItem` | `AccordionItem` | `null` | 当前激活的项目(在独占模式下使用) |
47
+ | `compact` | `boolean` | `false` | 启用紧凑样式以适配小屏幕 |
48
+ | `style` | `string` | `''` | 自定义CSS样式 |
49
+ | `class` | `string` | `''` | 额外的CSS类名 |
50
+
51
+ ## AccordionItem 接口
52
+
53
+ ```typescript
54
+ interface AccordionItem {
55
+ title: string; // 手风琴标题的显示文本
56
+ component: any; // 要在面板中渲染的Svelte组件
57
+ params?: any; // 传递给组件的属性参数
58
+ }
59
+ ```
60
+
61
+ ## 使用示例
62
+
63
+ ### 多面板模式(默认)
64
+
65
+ ```svelte
66
+ <Accordion accordions={items} />
67
+ ```
68
+
69
+ ### 独占模式(只能打开一个)
70
+
71
+ ```svelte
72
+ <Accordion
73
+ accordions={items}
74
+ exclusive={true}
75
+ bind:activeItem={currentActive}
76
+ />
77
+ ```
78
+
79
+ ### 紧凑模式
80
+
81
+ ```svelte
82
+ <Accordion
83
+ accordions={items}
84
+ compact={true}
85
+ />
86
+ ```
87
+
88
+ ### 自定义样式
89
+
90
+ ```svelte
91
+ <Accordion
92
+ accordions={items}
93
+ style="border: 1px solid #ccc; border-radius: 8px;"
94
+ class="my-custom-accordion"
95
+ />
96
+ ```
97
+
98
+ ## 行为特性
99
+
100
+ ### 多选模式
101
+ - 用户可以展开/折叠任意数量的面板
102
+ - 点击面板标题切换其打开/关闭状态
103
+ - 不会自动关闭其他面板
104
+
105
+ ### 独占模式
106
+ - 同时只能打开一个面板
107
+ - 打开新面板会自动关闭之前打开的面板
108
+ - 如果没有指定`activeItem`,首个面板会在挂载时自动打开
109
+ - 为当前打开的面板显示文件夹图标
110
+
111
+ ## 样式定制
112
+
113
+ 组件使用以下CSS类名:
114
+
115
+ - `.uniface-accordion-panel` - 主容器
116
+ - `.accordion` - 单个手风琴项目
117
+ - `.header` - 手风琴标题(可点击)
118
+ - `.content` - 手风琴内容区域
119
+ - `.compact` - 启用紧凑模式时应用
120
+
121
+ ## 无障碍访问
122
+
123
+ - 标题可点击,支持键盘导航
124
+ - 为屏幕阅读器提供适当的ARIA属性
125
+ - 为打开/关闭状态提供视觉指示器
126
+ - 为键盘用户提供焦点管理
127
+
128
+ ## 图标使用
129
+
130
+ 组件使用Google Material图标:
131
+ - `icon_google_keyboard_arrow_down` - 折叠状态(多选模式)
132
+ - `icon_google_keyboard_arrow_up` - 展开状态(多选模式)
133
+ - `icon_google_folder_open` - 激活状态(独占模式)
134
+
135
+ ## 高级用法
136
+
137
+ ### 自定义标题组件
138
+
139
+ 你可以通过在AccordionItemView上设置`header`属性来提供自定义标题组件:
140
+
141
+ ```svelte
142
+ <AccordionItemView
143
+ title={item.title}
144
+ isOpen={isOpen}
145
+ header={CustomHeaderComponent}
146
+ onClick={handleClick}
147
+ >
148
+ <!-- 内容 -->
149
+ </AccordionItemView>
150
+ ```
151
+
152
+ ### 动态内容
153
+
154
+ 手风琴项目可以包含任何带有动态参数的Svelte组件:
155
+
156
+ ```javascript
157
+ const dynamicItems = [
158
+ {
159
+ title: '用户资料',
160
+ component: UserProfile,
161
+ params: { userId: 123, editable: true }
162
+ },
163
+ {
164
+ title: '设置',
165
+ component: SettingsPanel,
166
+ params: { theme: 'dark', language: 'zh-CN' }
167
+ }
168
+ ];
169
+ ```
170
+
171
+ ## 注意事项
172
+
173
+ - 确保传递给组件的参数与目标组件的属性接口匹配
174
+ - 在独占模式下,建议监听`activeItem`的变化以响应用户交互
175
+ - 组件内容会在面板展开时渲染,折叠时从DOM中移除
176
+ - 适合用于FAQ、设置面板、内容分类等场景
@@ -0,0 +1,275 @@
1
+ # ActionBar Component
2
+
3
+ A flexible action bar component for organizing and displaying action buttons with optional separators.
4
+
5
+ ## Features
6
+
7
+ - **Button Organization**: Display multiple action buttons in a horizontal layout
8
+ - **Flexible Configuration**: Define buttons through data or use slot content
9
+ - **Separators**: Add visual separators between button groups using `null` values
10
+ - **Customizable Styling**: Control gap spacing and apply custom styles
11
+ - **Button Types**: Support all button types (primary, secondary, danger, etc.)
12
+ - **Icon Support**: Display icons alongside button labels
13
+ - **Disabled State**: Individual button disable functionality
14
+ - **Responsive**: Adapts to container width
15
+
16
+ ## Basic Usage
17
+
18
+ ```svelte
19
+ <script>
20
+ import ActionBar, { type ButtonAction } from '@ticatec/uniface-element/ActionBar';
21
+
22
+ const actions: ButtonAction[] = [
23
+ {
24
+ label: 'Save',
25
+ type: 'primary',
26
+ icon: 'icon_google_save',
27
+ handler: () => console.log('Save clicked')
28
+ },
29
+ {
30
+ label: 'Cancel',
31
+ type: 'secondary',
32
+ handler: () => console.log('Cancel clicked')
33
+ }
34
+ ];
35
+ </script>
36
+
37
+ <ActionBar buttons={actions} />
38
+ ```
39
+
40
+ ## Props
41
+
42
+ | Prop | Type | Default | Description |
43
+ |------|------|---------|-------------|
44
+ | `buttons` | `ButtonActions` | `[]` | Array of button actions or null for separators |
45
+ | `style` | `string` | `''` | Custom CSS styles for the action bar |
46
+ | `gap` | `number` | `8` | Gap spacing between buttons in pixels |
47
+
48
+ ## ButtonAction Interface
49
+
50
+ ```typescript
51
+ interface ButtonAction {
52
+ label: string; // Button text
53
+ disabled?: boolean; // Whether the button is disabled
54
+ icon?: string; // Icon class name (optional)
55
+ type?: ButtonType; // Button style type
56
+ handler?: MouseClickHandler; // Click event handler
57
+ }
58
+
59
+ type ButtonActions = Array<ButtonAction | null>;
60
+ ```
61
+
62
+ ## ButtonType Options
63
+
64
+ The component supports all standard button types:
65
+ - `'primary'` - Primary action button
66
+ - `'secondary'` - Secondary action button
67
+ - `'danger'` - Destructive action button
68
+ - `'success'` - Success/confirmation button
69
+ - `'warning'` - Warning button
70
+ - `'info'` - Informational button
71
+
72
+ ## Examples
73
+
74
+ ### Basic Action Bar
75
+
76
+ ```svelte
77
+ <script>
78
+ const basicActions = [
79
+ { label: 'New', handler: createNew },
80
+ { label: 'Edit', handler: editItem },
81
+ { label: 'Delete', type: 'danger', handler: deleteItem }
82
+ ];
83
+ </script>
84
+
85
+ <ActionBar buttons={basicActions} />
86
+ ```
87
+
88
+ ### With Icons
89
+
90
+ ```svelte
91
+ <script>
92
+ const iconActions = [
93
+ {
94
+ label: 'Save',
95
+ icon: 'icon_google_save',
96
+ type: 'primary',
97
+ handler: save
98
+ },
99
+ {
100
+ label: 'Print',
101
+ icon: 'icon_google_print',
102
+ handler: print
103
+ }
104
+ ];
105
+ </script>
106
+
107
+ <ActionBar buttons={iconActions} />
108
+ ```
109
+
110
+ ### With Separators
111
+
112
+ ```svelte
113
+ <script>
114
+ const actionsWithSeparators = [
115
+ { label: 'Copy', handler: copy },
116
+ { label: 'Paste', handler: paste },
117
+ null, // Separator
118
+ { label: 'Delete', type: 'danger', handler: remove }
119
+ ];
120
+ </script>
121
+
122
+ <ActionBar buttons={actionsWithSeparators} />
123
+ ```
124
+
125
+ ### Custom Spacing
126
+
127
+ ```svelte
128
+ <ActionBar
129
+ buttons={actions}
130
+ gap={16}
131
+ style="padding: 12px; background: #f5f5f5;"
132
+ />
133
+ ```
134
+
135
+ ### Using Slot Content
136
+
137
+ ```svelte
138
+ <ActionBar>
139
+ <Button label="Custom" type="primary" />
140
+ <Button label="Actions" type="secondary" />
141
+ </ActionBar>
142
+ ```
143
+
144
+ ## Dynamic Actions
145
+
146
+ ```svelte
147
+ <script>
148
+ let isEditing = false;
149
+
150
+ $: actions = isEditing ? [
151
+ { label: 'Save', type: 'primary', handler: save },
152
+ { label: 'Cancel', handler: cancel }
153
+ ] : [
154
+ { label: 'Edit', handler: startEdit },
155
+ { label: 'Delete', type: 'danger', handler: remove }
156
+ ];
157
+ </script>
158
+
159
+ <ActionBar buttons={actions} />
160
+ ```
161
+
162
+ ## Conditional Buttons
163
+
164
+ ```svelte
165
+ <script>
166
+ let hasPermission = true;
167
+ let isLoading = false;
168
+
169
+ $: actions = [
170
+ { label: 'Refresh', handler: refresh },
171
+ hasPermission ? {
172
+ label: 'Save',
173
+ type: 'primary',
174
+ disabled: isLoading,
175
+ handler: save
176
+ } : null,
177
+ hasPermission ? {
178
+ label: 'Delete',
179
+ type: 'danger',
180
+ disabled: isLoading,
181
+ handler: remove
182
+ } : null
183
+ ].filter(Boolean); // Remove null values
184
+ </script>
185
+
186
+ <ActionBar buttons={actions} />
187
+ ```
188
+
189
+ ## Behavior
190
+
191
+ ### Button Rendering
192
+ - Buttons are rendered using the internal Button component
193
+ - Each button receives the configured label, icon, type, and disabled state
194
+ - Click handlers are automatically bound to the button events
195
+
196
+ ### Separators
197
+ - Use `null` values in the buttons array to insert visual separators
198
+ - Separators appear as vertical lines with 24px height
199
+ - Useful for grouping related actions
200
+
201
+ ### Fallback Content
202
+ - If no buttons are provided or the array is empty, slot content is displayed
203
+ - Allows for completely custom action bar layouts
204
+
205
+ ## Styling
206
+
207
+ The component uses the following CSS classes:
208
+
209
+ - `.uniface-action-bar` - Main container with flexbox layout
210
+
211
+ ### CSS Variables
212
+
213
+ You can customize the appearance using CSS:
214
+
215
+ ```css
216
+ .uniface-action-bar {
217
+ /* Custom styling */
218
+ background: #ffffff;
219
+ border: 1px solid #e0e0e0;
220
+ border-radius: 4px;
221
+ padding: 8px;
222
+ }
223
+ ```
224
+
225
+ ## Accessibility
226
+
227
+ - Uses semantic button elements for proper keyboard navigation
228
+ - Disabled buttons are properly marked and non-interactive
229
+ - Focus management follows standard button behavior
230
+ - Screen readers can properly identify action buttons
231
+
232
+ ## Common Use Cases
233
+
234
+ ### Toolbar Actions
235
+ ```svelte
236
+ <ActionBar buttons={[
237
+ { label: 'New', icon: 'icon_google_add' },
238
+ { label: 'Open', icon: 'icon_google_folder_open' },
239
+ { label: 'Save', icon: 'icon_google_save' },
240
+ null,
241
+ { label: 'Cut', icon: 'icon_google_content_cut' },
242
+ { label: 'Copy', icon: 'icon_google_content_copy' },
243
+ { label: 'Paste', icon: 'icon_google_content_paste' }
244
+ ]} />
245
+ ```
246
+
247
+ ### Form Actions
248
+ ```svelte
249
+ <ActionBar
250
+ buttons={[
251
+ { label: 'Save', type: 'primary', handler: submit },
252
+ { label: 'Cancel', handler: cancel }
253
+ ]}
254
+ style="justify-content: flex-end; margin-top: 16px;"
255
+ />
256
+ ```
257
+
258
+ ### CRUD Operations
259
+ ```svelte
260
+ <ActionBar buttons={[
261
+ { label: 'Create', type: 'primary', handler: create },
262
+ { label: 'Edit', handler: edit },
263
+ { label: 'Delete', type: 'danger', handler: remove },
264
+ null,
265
+ { label: 'Refresh', handler: refresh }
266
+ ]} />
267
+ ```
268
+
269
+ ## Best Practices
270
+
271
+ 1. **Group Related Actions**: Use separators to group related functionality
272
+ 2. **Consistent Icons**: Use consistent icon styles throughout your application
273
+ 3. **Button Types**: Use appropriate button types (primary for main actions, danger for destructive actions)
274
+ 4. **Disable States**: Disable buttons when actions are not available or during loading
275
+ 5. **Responsive Design**: Consider button labels and spacing for mobile devices