poe-svelte-ui-lib 1.1.20 → 1.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47,9 +47,10 @@
47
47
  {/if}
48
48
 
49
49
  <div class="flex w-full flex-col items-center">
50
- <div class="relative h-2 w-full rounded bg-gray-400">
51
- <div class="absolute top-0 left-0 h-full rounded bg-(--bg-color)" style="width: {progressPercent()}%;"></div>
50
+ <div class="relative h-7 w-full rounded-full bg-gray-400">
51
+ <div class="absolute top-0 left-0 flex h-full rounded-full bg-(--bg-color)" style="width: {progressPercent()}%;">
52
+ <span class="m-auto font-semibold">{numericValue?.toFixed(2)}{number.units}</span>
53
+ </div>
52
54
  </div>
53
- <span class="ml-2 font-semibold">{numericValue?.toFixed(2)}{number.units}</span>
54
55
  </div>
55
56
  </div>
@@ -144,6 +144,8 @@
144
144
  />
145
145
  <UI.Input
146
146
  label={{ name: $t('constructor.props.value') }}
147
+ type="number"
148
+ number={{ minNum: component.properties.number.minNum, maxNum: component.properties.number.maxNum, step: 1 }}
147
149
  value={component.properties.value}
148
150
  onUpdate={(value) => updateProperty('value', value as string, component, onPropertyChange)}
149
151
  />
@@ -90,7 +90,8 @@
90
90
  help={{ info: $t('constructor.props.argument.info'), autocomplete: 'on', regExp: /^[a-zA-Z0-9\-_]{0,32}$/ }}
91
91
  onUpdate={(value) => updateProperty('eventHandler.Argument', value as string, component, onPropertyChange)}
92
92
  />
93
-
93
+ </div>
94
+ <div class="flex w-1/3 flex-col items-center px-2">
94
95
  <UI.Select
95
96
  label={{ name: $t('constructor.props.type') }}
96
97
  type="buttons"
@@ -98,8 +99,6 @@
98
99
  options={$optionsStore.SELECT_TYPE_OPTIONS}
99
100
  onUpdate={(item) => updateProperty('type', item.value as string, component, onPropertyChange)}
100
101
  />
101
- </div>
102
- <div class="flex w-1/3 flex-col items-center px-2">
103
102
  <UI.Select
104
103
  wrapperClass="h-14"
105
104
  label={{ name: $t('constructor.props.valuetype') }}
@@ -117,21 +116,6 @@
117
116
  updateProperty('options', options, component, onPropertyChange)
118
117
  }}
119
118
  />
120
- <UI.Select
121
- wrapperClass=" h-14"
122
- label={{ name: $t('constructor.props.colors') }}
123
- type="buttons"
124
- options={$optionsStore.COLOR_OPTIONS}
125
- value={initialColor}
126
- onUpdate={(option) => {
127
- updateProperty('wrapperClass', twMerge(component.properties.wrapperClass, option.value), component, onPropertyChange)
128
- const options = [...(component.properties?.options || [])]
129
- options.forEach((o) => {
130
- o['class'] = option.value
131
- })
132
- updateProperty('options', options, component, onPropertyChange)
133
- }}
134
- />
135
119
  </div>
136
120
  <div class="flex w-1/3 flex-col items-center px-2">
137
121
  <UI.Input
@@ -161,7 +145,8 @@
161
145
  onClick={() => {
162
146
  const newOption: ISelectOption = {
163
147
  id: crypto.randomUUID(),
164
- name: 'New Button',
148
+ name: `Option ${component.properties?.options.length + 1}`,
149
+ value: component.properties?.options.length + 1,
165
150
  class: 'bg-max',
166
151
  }
167
152
  const options = [...(component.properties?.options || []), newOption]
@@ -232,21 +217,6 @@
232
217
  value={component.properties.wrapperClass}
233
218
  onUpdate={(value) => updateProperty('wrapperClass', value as string, component, onPropertyChange)}
234
219
  />
235
- <UI.Select
236
- wrapperClass=" h-14"
237
- label={{ name: $t('constructor.props.colors') }}
238
- type="buttons"
239
- options={$optionsStore.COLOR_OPTIONS}
240
- value={initialColor}
241
- onUpdate={(option) => {
242
- updateProperty('wrapperClass', twMerge(component.properties.wrapperClass, option.value), component, onPropertyChange)
243
- const options = [...(component.properties?.options || [])]
244
- options.forEach((o) => {
245
- o['class'] = option.value
246
- })
247
- updateProperty('options', options, component, onPropertyChange)
248
- }}
249
- />
250
220
  </div>
251
221
  <div class="flex w-1/3 flex-col items-center px-2">
252
222
  <UI.Input
@@ -259,6 +229,12 @@
259
229
  value={component.properties.label.class}
260
230
  onUpdate={(value) => updateProperty('label.class', value as string, component, onPropertyChange)}
261
231
  />
232
+ <UI.Switch
233
+ wrapperClass="bg-blue"
234
+ label={{ name: $t('constructor.props.disabled') }}
235
+ value={component.properties.disabled ? 2 : 1}
236
+ onChange={(value) => updateProperty('disabled', value === 2, component, onPropertyChange)}
237
+ />
262
238
  </div>
263
239
  <div class="flex w-1/3 flex-col items-center px-2">
264
240
  <UI.Select
@@ -285,12 +261,6 @@
285
261
  updateProperty('options', options, component, onPropertyChange)
286
262
  }}
287
263
  />
288
- <UI.Switch
289
- wrapperClass="bg-blue"
290
- label={{ name: $t('constructor.props.disabled') }}
291
- value={component.properties.disabled ? 2 : 1}
292
- onChange={(value) => updateProperty('disabled', value === 2, component, onPropertyChange)}
293
- />
294
264
  </div>
295
265
  </div>
296
266
 
@@ -306,7 +276,8 @@
306
276
  onClick={() => {
307
277
  const newOption: ISelectOption = {
308
278
  id: crypto.randomUUID(),
309
- name: 'New Button',
279
+ name: `Option ${component.properties?.options.length + 1}`,
280
+ value: component.properties?.options.length + 1,
310
281
  class: 'bg-max',
311
282
  }
312
283
  const options = [...(component.properties?.options || []), newOption]
@@ -7,7 +7,7 @@
7
7
  id = crypto.randomUUID(),
8
8
  disabled = false,
9
9
  wrapperClass = '',
10
- label = { name: '', captionLeft: '', captionRight: '' },
10
+ label = { name: '', class: '', captionLeft: '', captionRight: '' },
11
11
  height = '2rem',
12
12
  value = $bindable(),
13
13
  onChange = () => {},
@@ -46,7 +46,7 @@
46
46
 
47
47
  <div class={twMerge(`bg-blue relative flex w-full flex-col items-center justify-center`, wrapperClass)}>
48
48
  {#if label.name}
49
- <h5 class={`w-full px-4 text-center`}>{label.name}</h5>
49
+ <h5 class={twMerge(`w-full px-4 text-center`, label.class)}>{label.name}</h5>
50
50
  {/if}
51
51
 
52
52
  <div class="relative flex w-full grow items-center justify-center bg-transparent">
@@ -12,6 +12,7 @@
12
12
  body = [],
13
13
  header = [],
14
14
  footer = '',
15
+ outline = false,
15
16
  cursor = null,
16
17
  loader,
17
18
  getData = () => {},
@@ -126,11 +127,22 @@
126
127
  <h5 class={twMerge(`w-full px-4 text-center`, label.class)}>{label.name}</h5>
127
128
  {/if}
128
129
 
129
- <div class="flex h-full flex-col overflow-hidden rounded-xl border-(--border-color)">
130
+ <div class="flex h-full flex-col overflow-hidden rounded-xl border {outline ? ' border-(--border-color)' : 'border-transparent'} ">
130
131
  <!-- Table Header -->
131
132
  <div class="grid font-semibold" style={`grid-template-columns: ${header.map((c) => c.width || 'minmax(0, 1fr)').join(' ')};`}>
132
- {#each header as column (column)}
133
- <div class={twMerge(`justify-center bg-(--bg-color) p-2 text-left`, column.label?.class)}>
133
+ {#each header as column, index (column)}
134
+ <div
135
+ class={twMerge(
136
+ `justify-center border-l ${outline && index !== 0 ? ' border-(--border-color)' : 'border-transparent'} ${
137
+ column.align?.header === 'center'
138
+ ? 'flex justify-center text-center'
139
+ : column.align?.header === 'right'
140
+ ? 'flex justify-end text-right'
141
+ : 'flex justify-start text-left'
142
+ } bg-(--bg-color) p-2 text-left`,
143
+ column.label?.class,
144
+ )}
145
+ >
134
146
  <span>{column.label?.name}</span>
135
147
  {#if column.sortable}
136
148
  <button
@@ -148,21 +160,24 @@
148
160
  <div class="flex-1 overflow-y-auto bg-(--container-color)/50" bind:this={container} onscroll={handleScroll}>
149
161
  <div class="grid min-w-0" style={`grid-template-columns: ${header.map((c) => c.width || 'minmax(0, 1fr)').join(' ')};`}>
150
162
  {#each body as row, index (row)}
151
- {#each header as column (column)}
163
+ {#each header as column, j (column)}
152
164
  <div
153
165
  class="relative flex w-full min-w-0 items-center px-2 py-1 wrap-break-word
154
166
  {index % 2 ? 'bg-(--back-color)/40' : 'bg-[#edeef3] dark:bg-[#1f2a3a]'}
155
- {column.align === 'center'
167
+ {column.align?.content === 'center'
156
168
  ? 'flex justify-center text-center'
157
- : column.align === 'right'
169
+ : column.align?.content === 'right'
158
170
  ? 'flex justify-end text-right'
159
- : 'flex justify-start text-left'}"
171
+ : 'flex justify-start text-left'}
172
+ border-t
173
+ {j !== 0 ? ' border-l ' : ''}
174
+ {outline ? 'border-(--border-color)' : 'border-transparent'} "
160
175
  >
161
176
  {#if column.buttons}
162
177
  <div class="flex w-full flex-col gap-1">
163
178
  {#each column.buttons as button (button)}
164
179
  <button
165
- class="{twMerge(`cursor-pointer rounded-full
180
+ class="{twMerge(`cursor-pointer rounded-full
166
181
  px-4 py-1 font-medium transition-shadow outline-none select-none hover:shadow-md
167
182
  ${typeof button.class === 'function' ? button.class(row) : button.class}`)} bg-(--bg-color)"
168
183
  onclick={() => buttonClick(row, button)}
@@ -191,7 +206,7 @@
191
206
  <div
192
207
  class="w-full max-w-full wrap-break-word {column.overflow?.truncated
193
208
  ? 'overflow-hidden text-ellipsis whitespace-nowrap'
194
- : 'whitespace-normal'}"
209
+ : 'whitespace-normal '}"
195
210
  onmouseenter={column.overflow?.truncated ? (e) => showTooltip(e, row[column.key], column.overflow?.formatting) : undefined}
196
211
  onmouseleave={column.overflow?.truncated ? hideTooltip : undefined}
197
212
  onmousemove={column.overflow?.truncated
@@ -103,6 +103,11 @@
103
103
  value={initialColor}
104
104
  onUpdate={(option) => updateProperty('wrapperClass', twMerge(component.properties.wrapperClass, option.value), component, onPropertyChange)}
105
105
  />
106
+ <UI.Switch
107
+ label={{ name: $t('constructor.props.outline') }}
108
+ value={component.properties.outline ? 2 : 1}
109
+ onChange={(value) => updateProperty('outline', value === 2, component, onPropertyChange)}
110
+ />
106
111
  </div>
107
112
  <div class="flex w-1/3 flex-col px-2">
108
113
  <UI.Input
@@ -163,6 +168,7 @@
163
168
  />
164
169
  <UI.Input
165
170
  label={{ name: $t('constructor.props.table.columns.width') }}
171
+ wrapperClass="w-120"
166
172
  type="number"
167
173
  value={Number(column.width.replace('%', ''))}
168
174
  onUpdate={(value) => updateTableHeader(columnIndex, 'width', `${value}%`)}
@@ -181,7 +187,7 @@
181
187
  />
182
188
  <UI.Button
183
189
  wrapperClass="w-8"
184
- content={{ icon: ButtonAdd, info: $t('constructor.props.table.addaction') }}
190
+ content={{ icon: ButtonAdd, info: { text: $t('constructor.props.table.addaction'), side: 'top' } }}
185
191
  onClick={() => {
186
192
  const newButton = {
187
193
  name: `button${(component.properties.header[columnIndex].buttons ? component.properties.header[columnIndex].buttons.length : 0) + 1}`,
@@ -204,9 +210,9 @@
204
210
  />
205
211
  </div>
206
212
  {#if column.buttons && column.buttons.length > 0}
207
- <div class="mb-5 rounded-lg p-1">
213
+ <div class="mb-5 rounded-lg py-1">
208
214
  {#each column.buttons as button, buttonIndex (buttonIndex)}
209
- <div class="mx-14 flex items-end justify-around gap-2">
215
+ <div class="ml-14 flex items-end justify-around gap-2">
210
216
  <UI.Input
211
217
  label={{ name: $t('constructor.props.name') }}
212
218
  wrapperClass="!w-3/10"
@@ -294,11 +300,19 @@
294
300
  value={component.properties.label.class}
295
301
  onUpdate={(value) => updateProperty('label.class', value as string, component, onPropertyChange)}
296
302
  />
303
+ </div>
304
+
305
+ <div class="flex w-1/3 flex-col px-2">
297
306
  <UI.Input
298
307
  label={{ name: $t('constructor.props.footer') }}
299
308
  value={component.properties.footer}
300
309
  onUpdate={(value) => updateProperty('footer', value as string, component, onPropertyChange)}
301
310
  />
311
+ <UI.Switch
312
+ label={{ name: $t('constructor.props.outline') }}
313
+ value={component.properties.outline ? 2 : 1}
314
+ onChange={(value) => updateProperty('outline', value === 2, component, onPropertyChange)}
315
+ />
302
316
  </div>
303
317
  </div>
304
318
 
@@ -330,6 +344,7 @@
330
344
  <div class="mr-2 flex items-end justify-around gap-6">
331
345
  <UI.Input
332
346
  label={{ name: $t('constructor.props.table.columns.key') }}
347
+ wrapperClass="w-150"
333
348
  value={column.key}
334
349
  help={{ regExp: /^[0-9a-zA-Z_-]{0,16}$/ }}
335
350
  onUpdate={(value) => {
@@ -345,26 +360,34 @@
345
360
  }}
346
361
  />
347
362
  <UI.Input
348
- label={{ name: $t('constructor.props.table.columns.width') }}
363
+ label={{ name: $t('constructor.props.table.columns.width'), class: 'px-0' }}
364
+ wrapperClass="w-150"
349
365
  type="number"
350
366
  value={Number(column.width.replace('%', ''))}
351
367
  onUpdate={(value) => updateTableHeader(columnIndex, 'width', `${value}%`)}
352
368
  />
369
+ <UI.Select
370
+ label={{ name: $t('constructor.props.align.header') }}
371
+ type="buttons"
372
+ value={$optionsStore.ALIGN_OPTIONS.find((a) => (a.value as string).includes(column.align?.header) || 'left')}
373
+ options={$optionsStore.ALIGN_OPTIONS}
374
+ onUpdate={(option) => updateTableHeader(columnIndex, 'align', { header: option.value, content: column.align?.content })}
375
+ />
353
376
  <UI.Switch
354
- wrapperClass="w-2/10"
355
- label={{ name: $t('constructor.props.table.columns.sortable') }}
377
+ label={{ name: $t('constructor.props.table.columns.sortable'), class: 'px-0' }}
378
+ wrapperClass="w-30"
356
379
  value={column.sortable ? 2 : 1}
357
380
  onChange={(value) => updateTableHeader(columnIndex, 'sortable', value === 2)}
358
381
  />
359
382
  <UI.Switch
360
- wrapperClass="w-2/10"
361
- label={{ name: $t('constructor.props.copy') }}
383
+ label={{ name: $t('constructor.props.copy'), class: 'px-0' }}
384
+ wrapperClass="w-30"
362
385
  value={column.overflow?.copy ? 2 : 1}
363
- onChange={(value) => updateTableHeader(columnIndex, 'overflow', { copy: value === 2 })}
386
+ onChange={(value) => updateTableHeader(columnIndex, 'overflow', { copy: value === 2, truncated: column.overflow?.truncated })}
364
387
  />
365
388
  <UI.Button
366
389
  wrapperClass="w-8"
367
- content={{ icon: ButtonAdd, info: $t('constructor.props.table.addaction') }}
390
+ content={{ icon: ButtonAdd, info: { text: $t('constructor.props.table.addaction'), side: 'top' } }}
368
391
  onClick={() => {
369
392
  const newButton = {
370
393
  name: `button${(component.properties.header[columnIndex].buttons ? component.properties.header[columnIndex].buttons.length : 0) + 1}`,
@@ -388,30 +411,24 @@
388
411
  </div>
389
412
  <div class="mr-2 flex items-end justify-around gap-6">
390
413
  <UI.Select
391
- label={{ name: $t('constructor.props.align') }}
414
+ label={{ name: $t('constructor.props.align.content') }}
392
415
  type="buttons"
393
- value={$optionsStore.ALIGN_OPTIONS.find((a) => (a.value as string).includes(column.align) || 'left')}
416
+ value={$optionsStore.ALIGN_OPTIONS.find((a) => (a.value as string).includes(column.align?.content) || 'left')}
394
417
  options={$optionsStore.ALIGN_OPTIONS}
395
- onUpdate={(option) => updateTableHeader(columnIndex, 'align', option.value)}
418
+ onUpdate={(option) => updateTableHeader(columnIndex, 'align', { header: column.align?.header, content: option.value })}
396
419
  />
397
420
  <UI.Switch
398
421
  wrapperClass="w-2/10"
399
422
  label={{ name: $t('constructor.props.table.columns.truncated') }}
400
423
  value={column.overflow?.truncated ? 2 : 1}
401
- onChange={(value) => updateTableHeader(columnIndex, 'overflow', { ['truncated']: value === 2 })}
402
- />
403
- <UI.Input
404
- label={{ name: $t('constructor.props.table.columns.alt') }}
405
- value={column.image?.alt}
406
- onUpdate={(value) => {
407
- updateTableHeader(columnIndex, 'image', { ['alt']: value })
408
- }}
424
+ onChange={(value) => updateTableHeader(columnIndex, 'overflow', { truncated: value === 2, copy: column.overflow?.copy })}
409
425
  />
426
+
410
427
  <UI.Input
411
428
  label={{ name: $t('constructor.props.table.columns.class') }}
412
429
  value={column.image?.class}
413
430
  onUpdate={(value) => {
414
- updateTableHeader(columnIndex, 'image', { ['class']: value })
431
+ updateTableHeader(columnIndex, 'image', { class: value, width: column.image?.width, height: column.image?.height })
415
432
  }}
416
433
  />
417
434
  <UI.Input
@@ -419,7 +436,7 @@
419
436
  wrapperClass="w-150"
420
437
  value={column.image?.width}
421
438
  onUpdate={(value) => {
422
- updateTableHeader(columnIndex, 'image', { ['width']: value })
439
+ updateTableHeader(columnIndex, 'image', { class: column.image?.class, width: value, height: column.image?.height })
423
440
  }}
424
441
  />
425
442
  <UI.Input
@@ -427,7 +444,7 @@
427
444
  wrapperClass="w-150"
428
445
  value={column.image?.height}
429
446
  onUpdate={(value) => {
430
- updateTableHeader(columnIndex, 'image', { ['height']: value })
447
+ updateTableHeader(columnIndex, 'image', { class: column.image?.class, width: column.image?.width, height: value })
431
448
  }}
432
449
  />
433
450
  </div>
@@ -62,12 +62,15 @@ const translations = {
62
62
  'constructor.props.value': 'Значение',
63
63
  'constructor.props.value.info': 'Поле для ввода Value пакета в формате JSON',
64
64
  'constructor.props.align': 'Выравнивание',
65
+ 'constructor.props.align.header': 'Выравнивание заголовка',
66
+ 'constructor.props.align.content': 'Выравнивание контента',
65
67
  'constructor.props.image': 'Фоновое изображение',
66
68
  'constructor.props.labelicon': 'Иконка заголовка',
67
69
  'constructor.props.removeimage': 'Удалить изображение',
68
70
  'constructor.props.name': 'Текст',
69
71
  'constructor.props.height': 'Высота',
70
72
  'constructor.props.colors': 'Цвет фона',
73
+ 'constructor.props.outline': 'Границы таблицы',
71
74
  'constructor.props.textcolors': 'Цвет текста',
72
75
  'constructor.props.textarea.rows': 'Количество строк',
73
76
  'constructor.props.autocomplete': 'Автозаполнение',
@@ -109,9 +112,9 @@ const translations = {
109
112
  'constructor.props.size.height': 'Высота сетки',
110
113
  'constructor.props.size.width': 'Ширина сетки',
111
114
  'constructor.props.table.columns': 'Колонки таблицы',
112
- 'constructor.props.table.columns.key': 'Имя ключа',
113
- 'constructor.props.table.columns.label': 'Название',
114
- 'constructor.props.table.columns.width': 'Ширина',
115
+ 'constructor.props.table.columns.key': 'Ключ',
116
+ 'constructor.props.table.columns.label': 'Название колонки',
117
+ 'constructor.props.table.columns.width': 'Ширина, %',
115
118
  'constructor.props.table.columns.sortable': 'Сортировка',
116
119
  'constructor.props.table.columns.truncated': 'Скрыть',
117
120
  'constructor.props.table.columns.alt': 'Альтернативное название иконок',
@@ -134,19 +137,61 @@ const translations = {
134
137
  'constructor.props.icon.settings': 'Настройки',
135
138
  'constructor.props.autocomplete.on': 'Включено',
136
139
  'constructor.props.autocomplete.off': 'Выключено',
140
+ 'constructor.props.autocomplete.name': 'Полное имя',
141
+ 'constructor.props.autocomplete.honorific-prefix': 'Обращение (г-н, г-жа, др.)',
137
142
  'constructor.props.autocomplete.given-name': 'Имя',
138
- 'constructor.props.autocomplete.family-name': 'family-name',
139
- 'constructor.props.autocomplete.name': 'name',
140
- 'constructor.props.autocomplete.email': 'email',
141
- 'constructor.props.autocomplete.username': 'username',
142
- 'constructor.props.autocomplete.new-password': 'new-password',
143
- 'constructor.props.autocomplete.current-password': 'current-password',
144
- 'constructor.props.autocomplete.tel': 'tel',
145
- 'constructor.props.autocomplete.country-name': 'country-name',
146
- 'constructor.props.autocomplete.address-level1': 'address-level1',
147
- 'constructor.props.autocomplete.address-level2': 'address-level2',
148
- 'constructor.props.autocomplete.street-address': 'street-address',
149
- 'constructor.props.autocomplete.postal-code': 'postal-code',
143
+ 'constructor.props.autocomplete.additional-name': 'Отчество',
144
+ 'constructor.props.autocomplete.family-name': 'Фамилия',
145
+ 'constructor.props.autocomplete.honorific-suffix': 'Постфикс (мл., ст.)',
146
+ 'constructor.props.autocomplete.nickname': 'Псевдоним',
147
+ 'constructor.props.autocomplete.username': 'Имя пользователя',
148
+ 'constructor.props.autocomplete.new-password': 'Новый пароль',
149
+ 'constructor.props.autocomplete.current-password': 'Текущий пароль',
150
+ 'constructor.props.autocomplete.one-time-code': 'Одноразовый код',
151
+ 'constructor.props.autocomplete.organization-title': 'Должность',
152
+ 'constructor.props.autocomplete.organization': 'Организация',
153
+ 'constructor.props.autocomplete.street-address': 'Адрес, начиная с улицы',
154
+ 'constructor.props.autocomplete.address-line1': 'Адресная строка 1',
155
+ 'constructor.props.autocomplete.address-line2': 'Адресная строка 2',
156
+ 'constructor.props.autocomplete.address-line3': 'Адресная строка 3',
157
+ 'constructor.props.autocomplete.address-level4': 'Уровень адреса 4',
158
+ 'constructor.props.autocomplete.address-level3': 'Уровень адреса 3',
159
+ 'constructor.props.autocomplete.address-level2': 'Населённый пункт',
160
+ 'constructor.props.autocomplete.address-level1': 'Область, регион или штат',
161
+ 'constructor.props.autocomplete.country': 'Код страны',
162
+ 'constructor.props.autocomplete.country-name': 'Страна',
163
+ 'constructor.props.autocomplete.postal-code': 'Почтовый индекс',
164
+ 'constructor.props.autocomplete.cc-name': 'Имя владельца карты',
165
+ 'constructor.props.autocomplete.cc-given-name': 'Имя владельца карты',
166
+ 'constructor.props.autocomplete.cc-additional-name': 'Отчество владельца карты',
167
+ 'constructor.props.autocomplete.cc-family-name': 'Фамилия владельца карты',
168
+ 'constructor.props.autocomplete.cc-number': 'Номер карты',
169
+ 'constructor.props.autocomplete.cc-exp': 'Срок действия',
170
+ 'constructor.props.autocomplete.cc-exp-month': 'Месяц срока действия',
171
+ 'constructor.props.autocomplete.cc-exp-year': 'Год срока действия',
172
+ 'constructor.props.autocomplete.cc-csc': 'Код безопасности',
173
+ 'constructor.props.autocomplete.cc-type': 'Тип карты',
174
+ 'constructor.props.autocomplete.transaction-currency': 'Валюта транзакции',
175
+ 'constructor.props.autocomplete.transaction-amount': 'Сумма транзакции',
176
+ 'constructor.props.autocomplete.language': 'Язык',
177
+ 'constructor.props.autocomplete.bday': 'Дата рождения',
178
+ 'constructor.props.autocomplete.bday-day': 'День рождения',
179
+ 'constructor.props.autocomplete.bday-month': 'Месяц рождения',
180
+ 'constructor.props.autocomplete.bday-year': 'Год рождения',
181
+ 'constructor.props.autocomplete.sex': 'Пол',
182
+ 'constructor.props.autocomplete.url': 'URL-адрес',
183
+ 'constructor.props.autocomplete.photo': 'Фото',
184
+ 'constructor.props.autocomplete.email': 'Адрес электронной почты',
185
+ 'constructor.props.autocomplete.tel': 'Полный номер телефона',
186
+ 'constructor.props.autocomplete.tel-country-code': 'Код страны телефона',
187
+ 'constructor.props.autocomplete.tel-national': 'Национальный номер телефона',
188
+ 'constructor.props.autocomplete.tel-area-code': 'Код региона/области',
189
+ 'constructor.props.autocomplete.tel-local': 'Местный номер',
190
+ 'constructor.props.autocomplete.tel-local-prefix': 'Префикс местного номера',
191
+ 'constructor.props.autocomplete.tel-local-suffix': 'Суффикс местного номера',
192
+ 'constructor.props.autocomplete.tel-extension': 'Добавочный номер',
193
+ 'constructor.props.autocomplete.impp': 'Мессенджер',
194
+ 'constructor.props.autocomplete.fax': 'Номер факса',
150
195
  },
151
196
  en: {},
152
197
  zh: {},
package/dist/options.js CHANGED
@@ -108,34 +108,86 @@ export const optionsStore = derived(t, ($t) => {
108
108
  { id: id(), value: 'off', name: $t('constructor.props.autocomplete.off') },
109
109
  { id: id(), value: 'given-name', name: $t('constructor.props.autocomplete.given-name') },
110
110
  { id: id(), value: 'family-name', name: $t('constructor.props.autocomplete.family-name') },
111
- { id: id(), value: 'name', name: $t('constructor.props.autocomplete.name') },
112
- { id: id(), value: 'email', name: $t('constructor.props.autocomplete.email') },
111
+ { id: id(), value: 'nickname', name: $t('constructor.props.autocomplete.nickname') },
113
112
  { id: id(), value: 'username', name: $t('constructor.props.autocomplete.username') },
114
113
  { id: id(), value: 'new-password', name: $t('constructor.props.autocomplete.new-password') },
115
114
  { id: id(), value: 'current-password', name: $t('constructor.props.autocomplete.current-password') },
116
- { id: id(), value: 'tel', name: $t('constructor.props.autocomplete.tel') },
115
+ { id: id(), value: 'organization-title', name: $t('constructor.props.autocomplete.organization-title') },
117
116
  { id: id(), value: 'country-name', name: $t('constructor.props.autocomplete.country-name') },
118
117
  { id: id(), value: 'address-level1', name: $t('constructor.props.autocomplete.address-level1') },
119
118
  { id: id(), value: 'address-level2', name: $t('constructor.props.autocomplete.address-level2') },
120
119
  { id: id(), value: 'street-address', name: $t('constructor.props.autocomplete.street-address') },
121
120
  { id: id(), value: 'postal-code', name: $t('constructor.props.autocomplete.postal-code') },
121
+ { id: id(), value: 'email', name: $t('constructor.props.autocomplete.email') },
122
+ { id: id(), value: 'tel', name: $t('constructor.props.autocomplete.tel') },
122
123
  ],
123
124
  AUTOCOMPLETE_OPTIONS: [
125
+ // Основные значения
124
126
  { id: id(), value: 'on', name: $t('constructor.props.autocomplete.on') },
125
127
  { id: id(), value: 'off', name: $t('constructor.props.autocomplete.off') },
128
+ // Имя и фамилия
129
+ { id: id(), value: 'name', name: $t('constructor.props.autocomplete.name') },
130
+ { id: id(), value: 'honorific-prefix', name: $t('constructor.props.autocomplete.honorific-prefix') },
126
131
  { id: id(), value: 'given-name', name: $t('constructor.props.autocomplete.given-name') },
132
+ { id: id(), value: 'additional-name', name: $t('constructor.props.autocomplete.additional-name') },
127
133
  { id: id(), value: 'family-name', name: $t('constructor.props.autocomplete.family-name') },
128
- { id: id(), value: 'name', name: $t('constructor.props.autocomplete.name') },
129
- { id: id(), value: 'email', name: $t('constructor.props.autocomplete.email') },
134
+ { id: id(), value: 'honorific-suffix', name: $t('constructor.props.autocomplete.honorific-suffix') },
135
+ { id: id(), value: 'nickname', name: $t('constructor.props.autocomplete.nickname') },
136
+ // Пользовательская информация
130
137
  { id: id(), value: 'username', name: $t('constructor.props.autocomplete.username') },
131
138
  { id: id(), value: 'new-password', name: $t('constructor.props.autocomplete.new-password') },
132
139
  { id: id(), value: 'current-password', name: $t('constructor.props.autocomplete.current-password') },
133
- { id: id(), value: 'tel', name: $t('constructor.props.autocomplete.tel') },
134
- { id: id(), value: 'country-name', name: $t('constructor.props.autocomplete.country-name') },
135
- { id: id(), value: 'address-level1', name: $t('constructor.props.autocomplete.address-level1') },
136
- { id: id(), value: 'address-level2', name: $t('constructor.props.autocomplete.address-level2') },
140
+ { id: id(), value: 'one-time-code', name: $t('constructor.props.autocomplete.one-time-code') },
141
+ // Организация
142
+ { id: id(), value: 'organization-title', name: $t('constructor.props.autocomplete.organization-title') },
143
+ { id: id(), value: 'organization', name: $t('constructor.props.autocomplete.organization') },
144
+ // Адрес
137
145
  { id: id(), value: 'street-address', name: $t('constructor.props.autocomplete.street-address') },
146
+ { id: id(), value: 'address-line1', name: $t('constructor.props.autocomplete.address-line1') },
147
+ { id: id(), value: 'address-line2', name: $t('constructor.props.autocomplete.address-line2') },
148
+ { id: id(), value: 'address-line3', name: $t('constructor.props.autocomplete.address-line3') },
149
+ { id: id(), value: 'address-level4', name: $t('constructor.props.autocomplete.address-level4') },
150
+ { id: id(), value: 'address-level3', name: $t('constructor.props.autocomplete.address-level3') },
151
+ { id: id(), value: 'address-level2', name: $t('constructor.props.autocomplete.address-level2') },
152
+ { id: id(), value: 'address-level1', name: $t('constructor.props.autocomplete.address-level1') },
153
+ { id: id(), value: 'country', name: $t('constructor.props.autocomplete.country') },
154
+ { id: id(), value: 'country-name', name: $t('constructor.props.autocomplete.country-name') },
138
155
  { id: id(), value: 'postal-code', name: $t('constructor.props.autocomplete.postal-code') },
156
+ // Контактная информация
157
+ { id: id(), value: 'cc-name', name: $t('constructor.props.autocomplete.cc-name') },
158
+ { id: id(), value: 'cc-given-name', name: $t('constructor.props.autocomplete.cc-given-name') },
159
+ { id: id(), value: 'cc-additional-name', name: $t('constructor.props.autocomplete.cc-additional-name') },
160
+ { id: id(), value: 'cc-family-name', name: $t('constructor.props.autocomplete.cc-family-name') },
161
+ { id: id(), value: 'cc-number', name: $t('constructor.props.autocomplete.cc-number') },
162
+ { id: id(), value: 'cc-exp', name: $t('constructor.props.autocomplete.cc-exp') },
163
+ { id: id(), value: 'cc-exp-month', name: $t('constructor.props.autocomplete.cc-exp-month') },
164
+ { id: id(), value: 'cc-exp-year', name: $t('constructor.props.autocomplete.cc-exp-year') },
165
+ { id: id(), value: 'cc-csc', name: $t('constructor.props.autocomplete.cc-csc') },
166
+ { id: id(), value: 'cc-type', name: $t('constructor.props.autocomplete.cc-type') },
167
+ // Контакт
168
+ { id: id(), value: 'transaction-currency', name: $t('constructor.props.autocomplete.transaction-currency') },
169
+ { id: id(), value: 'transaction-amount', name: $t('constructor.props.autocomplete.transaction-amount') },
170
+ { id: id(), value: 'language', name: $t('constructor.props.autocomplete.language') },
171
+ { id: id(), value: 'bday', name: $t('constructor.props.autocomplete.bday') },
172
+ { id: id(), value: 'bday-day', name: $t('constructor.props.autocomplete.bday-day') },
173
+ { id: id(), value: 'bday-month', name: $t('constructor.props.autocomplete.bday-month') },
174
+ { id: id(), value: 'bday-year', name: $t('constructor.props.autocomplete.bday-year') },
175
+ // Связь
176
+ { id: id(), value: 'sex', name: $t('constructor.props.autocomplete.sex') },
177
+ { id: id(), value: 'url', name: $t('constructor.props.autocomplete.url') },
178
+ { id: id(), value: 'photo', name: $t('constructor.props.autocomplete.photo') },
179
+ // Email и телефон
180
+ { id: id(), value: 'email', name: $t('constructor.props.autocomplete.email') },
181
+ { id: id(), value: 'tel', name: $t('constructor.props.autocomplete.tel') },
182
+ { id: id(), value: 'tel-country-code', name: $t('constructor.props.autocomplete.tel-country-code') },
183
+ { id: id(), value: 'tel-national', name: $t('constructor.props.autocomplete.tel-national') },
184
+ { id: id(), value: 'tel-area-code', name: $t('constructor.props.autocomplete.tel-area-code') },
185
+ { id: id(), value: 'tel-local', name: $t('constructor.props.autocomplete.tel-local') },
186
+ { id: id(), value: 'tel-local-prefix', name: $t('constructor.props.autocomplete.tel-local-prefix') },
187
+ { id: id(), value: 'tel-local-suffix', name: $t('constructor.props.autocomplete.tel-local-suffix') },
188
+ { id: id(), value: 'tel-extension', name: $t('constructor.props.autocomplete.tel-extension') },
189
+ { id: id(), value: 'impp', name: $t('constructor.props.autocomplete.impp') },
190
+ { id: id(), value: 'fax', name: $t('constructor.props.autocomplete.fax') },
139
191
  ],
140
192
  };
141
193
  });
package/dist/types.d.ts CHANGED
@@ -89,7 +89,7 @@ export interface IInputProps {
89
89
  info?: string;
90
90
  copyButton?: boolean;
91
91
  regExp?: string | RegExp;
92
- autocomplete?: 'on' | 'off' | 'given-name' | 'family-name' | 'name' | 'email' | 'username' | 'new-password' | 'current-password' | 'tel' | 'country-name' | 'address-level1' | 'address-level2' | 'street-address' | 'postal-code' | null;
92
+ autocomplete?: 'on' | 'off' | 'given-name' | 'family-name' | 'nickname' | 'username' | 'new-password' | 'current-password' | 'organization-title' | 'country-name' | 'address-level1' | 'address-level2' | 'street-address' | 'postal-code' | 'email' | 'tel' | null;
93
93
  };
94
94
  eventHandler?: IUIComponentHandler;
95
95
  onUpdate?: (value: string | number) => void;
@@ -123,6 +123,7 @@ export interface ISwitchProps {
123
123
  disabled?: boolean;
124
124
  label?: {
125
125
  name?: string;
126
+ class?: string;
126
127
  captionLeft?: string;
127
128
  captionRight?: string;
128
129
  };
@@ -209,7 +210,10 @@ export interface ITableHeader<T extends object> {
209
210
  key: keyof T;
210
211
  sortable?: boolean;
211
212
  width?: string;
212
- align?: 'left' | 'center' | 'right';
213
+ align?: {
214
+ header?: 'left' | 'center' | 'right';
215
+ content?: 'left' | 'center' | 'right';
216
+ };
213
217
  overflow?: {
214
218
  truncated?: boolean;
215
219
  formatting?: (text: string) => string;
@@ -241,6 +245,7 @@ export interface ITableProps<T extends object> {
241
245
  header: ITableHeader<T>[];
242
246
  body: T[];
243
247
  footer?: string;
248
+ outline?: boolean;
244
249
  cursor?: string | null;
245
250
  loader?: Writable<boolean>;
246
251
  getData?: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-svelte-ui-lib",
3
- "version": "1.1.20",
3
+ "version": "1.1.21",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -9,7 +9,7 @@
9
9
  "preview": "vite preview",
10
10
  "prepack": "svelte-kit sync && svelte-package && publint",
11
11
  "CheckUpdate": "npx npm-check-updates -u && npm install",
12
- "FiLeS": "tsx src/lib/Accordion/IconsLib/iconsLib.ts"
12
+ "UpdateIconsLib": "tsx src/lib/Accordion/IconsLib/iconsLib.ts"
13
13
  },
14
14
  "svelte": "./dist/index.js",
15
15
  "types": "./dist/index.d.ts",
@@ -43,12 +43,12 @@
43
43
  "typescript": "^5.9.3"
44
44
  },
45
45
  "devDependencies": {
46
- "@sveltejs/kit": "^2.47.3",
46
+ "@sveltejs/kit": "^2.48.0",
47
47
  "@sveltejs/package": "^2.5.4",
48
48
  "@sveltejs/vite-plugin-svelte": "^6.2.1",
49
49
  "@types/node": "^24.9.1",
50
50
  "publint": "^0.3.15",
51
- "svelte": "^5.41.3",
51
+ "svelte": "^5.42.2",
52
52
  "svelte-preprocess": "^6.0.3",
53
53
  "vite": "^7.1.12",
54
54
  "vite-plugin-compression": "^0.5.1"