poe-svelte-ui-lib 1.2.25 → 1.2.27

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.
@@ -40,8 +40,9 @@
40
40
  options={VARIABLE_OPTIONS}
41
41
  value={VARIABLE_OPTIONS.find((opt) => opt.value === component.properties.id)}
42
42
  onUpdate={(value) => {
43
- updateProperty('id', value.value as string, component, onPropertyChange, value.name?.split('—')[1].trim())
43
+ updateProperty('id', value.value as string, component, onPropertyChange)
44
44
  updateProperty('eventHandler.Variables', value.value as string, component, onPropertyChange)
45
+ onPropertyChange(null, value.name?.split('—')[1].trim(), null)
45
46
  }}
46
47
  />
47
48
  <UI.Select
@@ -53,6 +54,13 @@
53
54
  updateProperty('eventHandler.Argument', option.value as string, component, onPropertyChange)
54
55
  }}
55
56
  />
57
+ <UI.Select
58
+ label={{ name: $t('constructor.props.access') }}
59
+ type="buttons"
60
+ options={$optionsStore.ACCESS_OPTION}
61
+ value={$optionsStore.ACCESS_OPTION.find((o) => o.value === component.access)}
62
+ onUpdate={(option) => onPropertyChange(null, null, option.value)}
63
+ />
56
64
  </div>
57
65
  <div class="flex w-1/3 flex-col px-2">
58
66
  <UI.Select
@@ -144,6 +152,13 @@
144
152
  />
145
153
  </div>
146
154
  <div class="flex w-1/3 flex-col px-2">
155
+ <UI.Select
156
+ label={{ name: $t('constructor.props.access') }}
157
+ type="buttons"
158
+ options={$optionsStore.ACCESS_OPTION}
159
+ value={$optionsStore.ACCESS_OPTION.find((o) => o.value === component.access)}
160
+ onUpdate={(option) => onPropertyChange(null, null, option.value)}
161
+ />
147
162
  <UI.Input
148
163
  label={{ name: $t('constructor.props.label') }}
149
164
  value={component.properties.label.name}
@@ -36,8 +36,9 @@
36
36
  options={VARIABLE_OPTIONS}
37
37
  value={VARIABLE_OPTIONS.find((opt) => opt.value === component.properties.id)}
38
38
  onUpdate={(value) => {
39
- updateProperty('id', value.value as string, component, onPropertyChange, value.name?.split('—')[1].trim())
39
+ updateProperty('id', value.value as string, component, onPropertyChange)
40
40
  updateProperty('eventHandler.Variables', value.value as string, component, onPropertyChange)
41
+ onPropertyChange(null, value.name?.split('—')[1].trim(), null)
41
42
  }}
42
43
  />
43
44
  <UI.Select
@@ -49,6 +50,16 @@
49
50
  updateProperty('eventHandler.Argument', option.value as string, component, onPropertyChange)
50
51
  }}
51
52
  />
53
+ <UI.Select
54
+ label={{ name: $t('constructor.props.access') }}
55
+ type="buttons"
56
+ options={$optionsStore.ACCESS_OPTION}
57
+ value={$optionsStore.ACCESS_OPTION.find((o) => o.value === component.access)}
58
+ onUpdate={(option) => onPropertyChange(null, null, option.value)}
59
+ />
60
+ </div>
61
+
62
+ <div class="flex w-1/3 flex-col px-2">
52
63
  <UI.Select
53
64
  wrapperClass="!h-14"
54
65
  label={{ name: $t('constructor.props.type') }}
@@ -58,9 +69,7 @@
58
69
  value={$optionsStore.SWITCH_OPTIONS.find((option) => option.value == component.properties.type)}
59
70
  onUpdate={(option) => updateProperty('type', option.value as string, component, onPropertyChange)}
60
71
  />
61
- </div>
62
- {#if !component.properties.bitMode}
63
- <div class="flex w-1/3 flex-col px-2">
72
+ {#if !component.properties.bitMode}
64
73
  <UI.Input
65
74
  label={{ name: $t('constructor.props.caption.left') }}
66
75
  value={component.properties.label.captionLeft}
@@ -83,8 +92,9 @@
83
92
  updateProperty('options', options, component, onPropertyChange)
84
93
  }}
85
94
  />
86
- </div>
87
- {/if}
95
+ {/if}
96
+ </div>
97
+
88
98
  <div class="flex w-1/3 flex-col px-2">
89
99
  <UI.Input
90
100
  label={{ name: $t('constructor.props.label') }}
@@ -215,6 +225,13 @@
215
225
  value={component.properties.id}
216
226
  onUpdate={(value) => updateProperty('id', value as string, component, onPropertyChange)}
217
227
  />
228
+ <UI.Select
229
+ label={{ name: $t('constructor.props.access') }}
230
+ type="buttons"
231
+ options={$optionsStore.ACCESS_OPTION}
232
+ value={$optionsStore.ACCESS_OPTION.find((o) => o.value === component.access)}
233
+ onUpdate={(option) => onPropertyChange(null, null, option.value)}
234
+ />
218
235
  <UI.Input
219
236
  label={{ name: $t('constructor.props.wrapperclass') }}
220
237
  value={component.properties.wrapperClass}
@@ -166,13 +166,13 @@
166
166
  {#each header as column, index (column)}
167
167
  <div
168
168
  class={twMerge(
169
- `justify-center border-l ${outline && index !== 0 ? ' border-(--border-color)' : 'border-transparent'} ${
169
+ `items-center justify-center border-l ${outline && index !== 0 ? ' border-(--border-color)' : 'border-transparent'} ${
170
170
  column.align?.header === 'center'
171
171
  ? 'flex justify-center text-center'
172
172
  : column.align?.header === 'right'
173
173
  ? 'flex justify-end text-right'
174
174
  : 'flex justify-start text-left'
175
- } bg-(--bg-color) p-2 text-left`,
175
+ } gap-1 bg-(--bg-color) p-2 text-left`,
176
176
  column.label?.class,
177
177
  )}
178
178
  >
@@ -81,10 +81,18 @@
81
81
  options={VARIABLE_OPTIONS}
82
82
  value={VARIABLE_OPTIONS.find((opt) => opt.value === component.properties.id)}
83
83
  onUpdate={(value) => {
84
- updateProperty('id', value.value as string, component, onPropertyChange, value.name?.split('—')[1].trim())
84
+ updateProperty('id', value.value as string, component, onPropertyChange)
85
85
  updateProperty('eventHandler.Variables', value.value as string, component, onPropertyChange)
86
+ onPropertyChange(null, value.name?.split('—')[1].trim(), null)
86
87
  }}
87
88
  />
89
+ <UI.Select
90
+ label={{ name: $t('constructor.props.access') }}
91
+ type="buttons"
92
+ options={$optionsStore.ACCESS_OPTION}
93
+ value={$optionsStore.ACCESS_OPTION.find((o) => o.value === component.access)}
94
+ onUpdate={(option) => onPropertyChange(null, null, option.value)}
95
+ />
88
96
  </div>
89
97
  <div class="flex w-1/3 flex-col px-2">
90
98
  <UI.Select
@@ -145,6 +153,7 @@
145
153
  <div class="mr-2 flex items-end justify-around gap-6">
146
154
  <UI.Input
147
155
  label={{ name: $t('constructor.props.table.columns.key') }}
156
+ wrapperClass="w-170"
148
157
  value={column.key}
149
158
  help={{ regExp: /^[0-9a-zA-Z_-]{0,16}$/ }}
150
159
  onUpdate={(value) => {
@@ -161,21 +170,30 @@
161
170
  />
162
171
  <UI.Input
163
172
  label={{ name: $t('constructor.props.table.columns.width') }}
164
- wrapperClass="w-120"
173
+ wrapperClass="w-150"
165
174
  type="number"
166
175
  value={Number(column.width.replace('%', ''))}
167
176
  onUpdate={(value) => updateTableHeader(columnIndex, 'width', `${value}%`)}
168
177
  />
178
+ <UI.Select
179
+ label={{ name: $t('constructor.props.align.content') }}
180
+ type="buttons"
181
+ value={$optionsStore.ALIGN_OPTIONS.find((a) => (a.value as string).includes(column.align?.content) || 'left')}
182
+ options={$optionsStore.ALIGN_OPTIONS}
183
+ onUpdate={(option) => {
184
+ updateTableHeader(columnIndex, 'align', { header: option.value, content: option.value })
185
+ }}
186
+ />
169
187
  <UI.Switch
170
- wrapperClass="w-2/10"
171
- label={{ name: $t('constructor.props.table.columns.sortable') }}
188
+ wrapperClass="w-30"
189
+ label={{ name: $t('constructor.props.table.columns.sortable'), class: 'px-0' }}
172
190
  options={[{ id: crypto.randomUUID(), value: 0, class: '' }]}
173
191
  value={column.sortable}
174
192
  onChange={(value) => updateTableHeader(columnIndex, 'sortable', value)}
175
193
  />
176
194
  <UI.Switch
177
- wrapperClass="w-2/10"
178
- label={{ name: $t('constructor.props.copy') }}
195
+ wrapperClass="w-30"
196
+ label={{ name: $t('constructor.props.copy'), class: 'px-0' }}
179
197
  options={[{ id: crypto.randomUUID(), value: 0, class: '' }]}
180
198
  value={column.overflow?.copy}
181
199
  onChange={(value) => updateTableHeader(columnIndex, 'overflow', { copy: value })}
@@ -263,6 +281,7 @@
263
281
  value={component.properties.id}
264
282
  onUpdate={(value) => updateProperty('id', value as string, component, onPropertyChange)}
265
283
  />
284
+
266
285
  <UI.Input
267
286
  label={{ name: $t('constructor.props.wrapperclass') }}
268
287
  value={component.properties.wrapperClass}
@@ -285,6 +304,13 @@
285
304
  />
286
305
  </div>
287
306
  <div class="flex w-1/3 flex-col px-2">
307
+ <UI.Select
308
+ label={{ name: $t('constructor.props.access') }}
309
+ type="buttons"
310
+ options={$optionsStore.ACCESS_OPTION}
311
+ value={$optionsStore.ACCESS_OPTION.find((o) => o.value === component.access)}
312
+ onUpdate={(option) => onPropertyChange(null, null, option.value)}
313
+ />
288
314
  <UI.Input
289
315
  label={{ name: $t('constructor.props.label') }}
290
316
  value={component.properties.label.name}
@@ -30,8 +30,8 @@
30
30
  (c.value as string).includes(component.properties.wrapperClass?.split(' ').find((cls: string) => cls.startsWith('text-'))),
31
31
  ),
32
32
  )
33
- const initialBold = $derived(component.properties.content?.class?.split(' ').find((cls: string) => cls.startsWith('font-bold')))
34
- const initialItalic = $derived(component.properties.content?.class?.split(' ').find((cls: string) => cls.startsWith('italic')))
33
+ const initialBold = $derived(component.properties.content?.class?.split(' ').some((cls: string) => cls.includes('font-bold')))
34
+ const initialItalic = $derived(component.properties.content?.class?.split(' ').some((cls: string) => cls.startsWith('italic')))
35
35
  </script>
36
36
 
37
37
  {#if forConstructor}
@@ -42,8 +42,9 @@
42
42
  options={VARIABLE_OPTIONS}
43
43
  value={VARIABLE_OPTIONS.find((opt) => opt.value === component.properties.id)}
44
44
  onUpdate={(value) => {
45
- updateProperty('id', value.value as string, component, onPropertyChange, value.name?.split('—')[1].trim())
45
+ updateProperty('id', value.value as string, component, onPropertyChange)
46
46
  updateProperty('eventHandler.Variables', value.value as string, component, onPropertyChange)
47
+ onPropertyChange(null, value.name?.split('—')[1].trim(), null)
47
48
  }}
48
49
  />
49
50
  <UI.Input
@@ -77,6 +78,7 @@
77
78
  />
78
79
  </div>
79
80
  <div class="flex w-1/3 flex-col px-2">
81
+ <!-- <p>{component.properties.content?.class?.split(' ').includes((cls: string) => cls.startsWith('font-bold'))}</p> -->
80
82
  <UI.Switch
81
83
  label={{ name: $t('constructor.props.bold') }}
82
84
  value={initialBold}
@@ -84,7 +86,7 @@
84
86
  onChange={(value) =>
85
87
  updateProperty(
86
88
  'content.class',
87
- `${component.properties.content.class} ${value ? 'font-bold' : 'font-normal'}`,
89
+ twMerge(`${component.properties.content.class} ${value ? 'font-bold' : 'font-normal'}`),
88
90
  component,
89
91
  onPropertyChange,
90
92
  )}
@@ -94,7 +96,12 @@
94
96
  value={initialItalic}
95
97
  options={[{ id: crypto.randomUUID(), value: 0, class: '' }]}
96
98
  onChange={(value) =>
97
- updateProperty('content.class', `${component.properties.content.class} ${value ? 'italic' : 'not-italic'}`, component, onPropertyChange)}
99
+ updateProperty(
100
+ 'content.class',
101
+ twMerge(`${component.properties.content.class} ${value ? 'italic' : 'not-italic'}`),
102
+ component,
103
+ onPropertyChange,
104
+ )}
98
105
  />
99
106
  <UI.Switch
100
107
  label={{ name: $t('constructor.props.background') }}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,8 @@ export { default as InputProps } from './Input/InputProps.svelte';
12
12
  export { default as Joystick } from './Joystick/Joystick.svelte';
13
13
  export { default as JoystickProps } from './Joystick/JoystickProps.svelte';
14
14
  export { default as Modal } from './Modal.svelte';
15
+ export { default as Map } from './Map/Map.svelte';
16
+ export { default as MapProps } from './Map/MapProps.svelte';
15
17
  export { default as ProgressBar } from './ProgressBar/ProgressBar.svelte';
16
18
  export { default as ProgressBarProps } from './ProgressBar/ProgressBarProps.svelte';
17
19
  export { default as Select } from './Select/Select.svelte';
@@ -28,4 +30,4 @@ export { default as TextField } from './TextField/TextField.svelte';
28
30
  export { default as TextFieldProps } from './TextField/TextFieldProps.svelte';
29
31
  export * from './locales/i18n';
30
32
  export * from './locales/translations';
31
- export { type UIComponent, type Position, type IUIComponentHandler, type IButtonProps, type IAccordionProps, type IInputProps, type ISelectProps, type ISelectOption, type ISwitchProps, type IColorPickerProps, type ISliderProps, type ITextFieldProps, type IProgressBarProps, type IGraphProps, type IGraphDataObject, type ITableHeader, type ITableProps, type ITabsProps, type IJoystickProps, } from './types';
33
+ export { type UIComponent, type Position, type IUIComponentHandler, type IButtonProps, type IAccordionProps, type IInputProps, type ISelectProps, type ISelectOption, type ISwitchProps, type IColorPickerProps, type ISliderProps, type ITextFieldProps, type IMapProps, type IProgressBarProps, type IGraphProps, type IGraphDataObject, type ITableHeader, type ITableProps, type ITabsProps, type IJoystickProps, } from './types';
package/dist/index.js CHANGED
@@ -13,6 +13,8 @@ export { default as InputProps } from './Input/InputProps.svelte';
13
13
  export { default as Joystick } from './Joystick/Joystick.svelte';
14
14
  export { default as JoystickProps } from './Joystick/JoystickProps.svelte';
15
15
  export { default as Modal } from './Modal.svelte';
16
+ export { default as Map } from './Map/Map.svelte';
17
+ export { default as MapProps } from './Map/MapProps.svelte';
16
18
  export { default as ProgressBar } from './ProgressBar/ProgressBar.svelte';
17
19
  export { default as ProgressBarProps } from './ProgressBar/ProgressBarProps.svelte';
18
20
  export { default as Select } from './Select/Select.svelte';
@@ -41,7 +41,7 @@ const translations = {
41
41
  'constructor.props.type.vertical': 'Вертикально',
42
42
  'constructor.props.type.checkbox': 'Галочка',
43
43
  'constructor.props.type.full': 'Полный',
44
- 'constructor.props.type.viewOnly': 'Только просмотр',
44
+ 'constructor.props.type.viewOnly': 'Просмотр',
45
45
  'constructor.props.type.hidden': 'Скрыто',
46
46
  /* Общие для редактора свойств */
47
47
  'constructor.props.id': 'Идентификатор',
@@ -67,11 +67,12 @@ const translations = {
67
67
  'constructor.props.variables.info': 'Поле для ввода имён переменных, разделенных пробелами',
68
68
  'constructor.props.value': 'Значение',
69
69
  'constructor.props.value.info': 'Поле для ввода Value пакета в формате JSON',
70
- 'constructor.props.align': 'Выравнивание',
70
+ 'constructor.props.align': 'Выравнивание надписи',
71
71
  'constructor.props.align.header': 'Выравнивание заголовка',
72
72
  'constructor.props.align.content': 'Выравнивание контента',
73
73
  'constructor.props.image': 'Фоновое изображение',
74
74
  'constructor.props.labelicon': 'Иконка заголовка',
75
+ 'constructor.props.markerIcon': 'Иконка маркера',
75
76
  'constructor.props.removeimage': 'Удалить изображение',
76
77
  'constructor.props.name': 'Текст',
77
78
  'constructor.props.height': 'Высота',
@@ -120,13 +121,12 @@ const translations = {
120
121
  'constructor.props.copy': 'Копирование',
121
122
  'constructor.props.size.height': 'Высота сетки',
122
123
  'constructor.props.size.width': 'Ширина сетки',
123
- 'constructor.props.range.start': 'Начальный бит ',
124
- 'constructor.props.range.end': 'Последний бит',
125
- 'constructor.props.range.start.help': 'Позиция начального бита диапазона ',
126
- 'constructor.props.range.end.help': 'Позиция последнего бита диапазона',
124
+ 'constructor.props.range': 'Диапазон позиции битов ',
127
125
  'constructor.props.icon.text.position': 'Положение иконки',
128
126
  'constructor.props.equal': 'Равные',
129
127
  'constructor.props.bitmode': 'Битовый режим',
128
+ 'constructor.props.access': 'Доступ (не для владельца)',
129
+ 'constructor.props.map.timeout': 'Таймаут маркеров:',
130
130
  'constructor.props.table.columns': 'Колонки таблицы',
131
131
  'constructor.props.table.columns.key': 'Ключ',
132
132
  'constructor.props.table.columns.label': 'Название колонки',
package/dist/types.d.ts CHANGED
@@ -8,8 +8,8 @@ export interface UIComponent {
8
8
  id: string;
9
9
  name?: string;
10
10
  access?: 'full' | 'viewOnly' | 'hidden';
11
- type: 'Button' | 'Accordion' | 'Input' | 'Select' | 'Switch' | 'ColorPicker' | 'Slider' | 'TextField' | 'Joystick' | 'ProgressBar' | 'Graph' | 'Table' | 'Tabs' | 'FileAttach';
12
- properties: IAccordionProps | IButtonProps | IInputProps | ISelectProps | ISwitchProps | IColorPickerProps | ISliderProps | ITextFieldProps | IProgressBarProps | IGraphProps | ITableProps<object> | ITabsProps | IFileInputProps | IJoystickProps;
11
+ type: 'Button' | 'Accordion' | 'Input' | 'Select' | 'Switch' | 'ColorPicker' | 'Slider' | 'TextField' | 'Joystick' | 'ProgressBar' | 'Graph' | 'Table' | 'Tabs' | 'FileAttach' | 'Map';
12
+ properties: IAccordionProps | IButtonProps | IInputProps | ISelectProps | ISwitchProps | IColorPickerProps | ISliderProps | ITextFieldProps | IProgressBarProps | IGraphProps | ITableProps<object> | ITabsProps | IFileInputProps | IJoystickProps | IMapProps;
13
13
  position: Position;
14
14
  parentId: string;
15
15
  }
@@ -298,3 +298,21 @@ export interface IJoystickProps {
298
298
  }[];
299
299
  onUpdate?: (value: number[]) => void;
300
300
  }
301
+ export interface IDeviceGNSS {
302
+ NavLat: number;
303
+ NavLon: number;
304
+ NavAlt: number;
305
+ DevName: string;
306
+ DevSN: string;
307
+ NavHeading: number;
308
+ NavSatUse: number;
309
+ }
310
+ export interface IMapProps {
311
+ id?: string;
312
+ label?: {
313
+ name?: string;
314
+ class?: string;
315
+ };
316
+ data: IDeviceGNSS | null;
317
+ markerIcon?: string;
318
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-svelte-ui-lib",
3
- "version": "1.2.25",
3
+ "version": "1.2.27",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -36,6 +36,7 @@
36
36
  "prettier": "^3.6.2",
37
37
  "prettier-plugin-svelte": "^3.4.0",
38
38
  "prettier-plugin-tailwindcss": "^0.7.1",
39
+ "svelte-maplibre-gl": "^1.0.2",
39
40
  "tailwind-merge": "^3.4.0",
40
41
  "tailwindcss": "^4.1.17",
41
42
  "tsx": "^4.20.6",
@@ -43,14 +44,14 @@
43
44
  },
44
45
  "devDependencies": {
45
46
  "@sveltejs/adapter-static": "^3.0.10",
46
- "@sveltejs/kit": "^2.48.5",
47
- "@sveltejs/package": "^2.5.4",
47
+ "@sveltejs/kit": "^2.49.0",
48
+ "@sveltejs/package": "^2.5.6",
48
49
  "@sveltejs/vite-plugin-svelte": "^6.2.1",
49
50
  "@types/node": "^24.10.1",
50
51
  "publint": "^0.3.15",
51
- "svelte": "^5.43.10",
52
+ "svelte": "^5.43.14",
52
53
  "svelte-preprocess": "^6.0.3",
53
- "vite": "^7.2.2",
54
+ "vite": "^7.2.4",
54
55
  "vite-plugin-compression": "^0.5.1"
55
56
  }
56
57
  }