@likable-hair/svelte 3.0.20 → 3.0.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.
Files changed (43) hide show
  1. package/dist/components/composed/common/MenuOrDrawer.svelte +3 -2
  2. package/dist/components/composed/common/MenuOrDrawer.svelte.d.ts +2 -1
  3. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +2 -2
  4. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +1 -1
  5. package/dist/components/composed/forms/Dropdown.svelte +6 -4
  6. package/dist/components/composed/forms/Dropdown.svelte.d.ts +3 -0
  7. package/dist/components/composed/list/PaginatedTable.svelte +62 -10
  8. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +3 -0
  9. package/dist/components/composed/search/FilterEditor.svelte +260 -0
  10. package/dist/components/composed/search/FilterEditor.svelte.d.ts +29 -0
  11. package/dist/components/composed/search/Filters.svelte +445 -42
  12. package/dist/components/composed/search/Filters.svelte.d.ts +24 -4
  13. package/dist/components/composed/search/MobileFilterEditor.svelte +342 -0
  14. package/dist/components/composed/search/MobileFilterEditor.svelte.d.ts +34 -0
  15. package/dist/components/composed/search/SearchBar.svelte +12 -11
  16. package/dist/components/composed/search/SearchBar.svelte.d.ts +1 -0
  17. package/dist/components/simple/buttons/Button.svelte +4 -0
  18. package/dist/components/simple/common/Menu.svelte +29 -10
  19. package/dist/components/simple/common/Menu.svelte.d.ts +2 -0
  20. package/dist/components/simple/dates/DatePickerTextField.svelte +91 -61
  21. package/dist/components/simple/dates/DatePickerTextField.svelte.d.ts +2 -0
  22. package/dist/components/simple/dialogs/Dialog.svelte.d.ts +1 -1
  23. package/dist/components/simple/forms/Autocomplete.css +1 -0
  24. package/dist/components/simple/forms/Autocomplete.svelte +96 -46
  25. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +3 -0
  26. package/dist/components/simple/lists/SelectableVerticalList.svelte +52 -9
  27. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +9 -0
  28. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +2 -2
  29. package/dist/components/simple/lists/columnTypes.d.ts +1 -1
  30. package/dist/components/simple/media/DescriptiveAvatar.svelte.d.ts +1 -1
  31. package/dist/components/simple/navigation/Chip.css +2 -1
  32. package/dist/components/simple/navigation/Chip.svelte +16 -5
  33. package/dist/components/simple/navigation/Chip.svelte.d.ts +1 -0
  34. package/dist/components/simple/navigation/Drawer.svelte +10 -0
  35. package/dist/components/simple/navigation/Drawer.svelte.d.ts +1 -0
  36. package/dist/utils/filters/builder.d.ts +1 -1
  37. package/dist/utils/filters/builder.js +1 -1
  38. package/dist/utils/filters/filters.d.ts +67 -4
  39. package/dist/utils/filters/filters.js +73 -0
  40. package/dist/utils/filters/modifiers/where.d.ts +1 -1
  41. package/dist/utils/filters/validator.d.ts +4 -0
  42. package/dist/utils/filters/validator.js +30 -0
  43. package/package.json +2 -1
@@ -6,8 +6,10 @@ import Icon from "../media/Icon.svelte";
6
6
  import { onMount } from "svelte";
7
7
  import { DateTime } from "luxon";
8
8
  import { createEventDispatcher } from "svelte";
9
+ import MediaQuery from "../common/MediaQuery.svelte";
10
+ import Dialog from "../dialogs/Dialog.svelte";
9
11
  let dispatch = createEventDispatcher();
10
- export let menuOpened = false, openingId = "date-picker-text-field", pattern = "dd/MM/yyyy", selectedMonth = void 0, selectedYear = void 0, visibleMonth = void 0, visibleYear = void 0, selectedDate = void 0;
12
+ export let menuOpened = false, openingId = "date-picker-text-field", pattern = "dd/MM/yyyy", selectedMonth = void 0, selectedYear = void 0, visibleMonth = void 0, visibleYear = void 0, selectedDate = void 0, placeholder = void 0, mobileDialog = true;
11
13
  let activator, refreshPosition = false, menuElement, inputElement, mask = {
12
14
  value: void 0
13
15
  }, maskFactoryArgs = {
@@ -47,8 +49,10 @@ let activator, refreshPosition = false, menuElement, inputElement, mask = {
47
49
  }
48
50
  }
49
51
  };
50
- function handleTextFieldFocus() {
51
- menuOpened = true;
52
+ function handleTextFieldFocus(mobile) {
53
+ if (!mobile || !mobileDialog) {
54
+ menuOpened = true;
55
+ }
52
56
  }
53
57
  onMount(() => {
54
58
  mask = IMask(
@@ -100,64 +104,90 @@ function handleMonthSelect() {
100
104
  }
101
105
  </script>
102
106
 
103
- <div
104
- bind:this={activator}
105
- style:width="fit-content"
106
- >
107
- <SimpleTextField
108
- bind:value={mask.value}
109
- on:focus={handleTextFieldFocus}
110
- on:keypress={handleInputChange}
111
- bind:input={inputElement}
112
- >
113
- <svelte:fragment slot="prepend-inner" let:prependInnerIcon let:iconSize>
114
- <slot name="prepend-inner" {prependInnerIcon} {iconSize}>
115
- <Icon
116
- name="mdi-calendar"
117
- click
118
- on:click={() => menuOpened = !menuOpened}
119
- ></Icon>
120
- </slot>
121
- </svelte:fragment>
122
- <svelte:fragment slot="append-inner" let:appendInnerIcon let:iconSize>
123
- <slot name="append-inner" {appendInnerIcon} {iconSize}>
124
- </slot>
125
- </svelte:fragment>
126
- <svelte:fragment slot="prepend" let:prependIcon let:iconSize>
127
- <slot name="append-inner" {prependIcon} {iconSize}>
128
- </slot>
129
- </svelte:fragment>
130
- <svelte:fragment slot="append" let:appendIcon let:iconSize>
131
- <slot name="append-inner" {appendIcon} {iconSize}>
132
- </slot>
133
- </svelte:fragment>
134
- </SimpleTextField>
135
- </div>
136
-
137
- <Menu
138
- {activator}
139
- _width={"300px"}
140
- _boxShadow={"rgb(var(--global-color-background-300), .5) 0px 2px 4px"}
141
- _borderRadius={"5px"}
142
- bind:open={menuOpened}
143
- anchor="bottom-center"
144
- closeOnClickOutside
145
- bind:refreshPosition
146
- bind:menuElement
147
- bind:openingId={openingId}
148
- >
107
+ <MediaQuery let:mAndDown>
149
108
  <div
150
- style:background-color="rgb(var(--global-color-background-100))"
109
+ bind:this={activator}
151
110
  >
152
- <DatePicker
153
- bind:selectedDate={selectedDate}
154
- bind:selectedMonth={selectedMonth}
155
- bind:selectedYear={selectedYear}
156
- bind:visibleMonth
157
- bind:visibleYear
158
- on:day-click={handleDateSelect}
159
- on:year-click={handleYearSelect}
160
- on:month-click={handleMonthSelect}
161
- ></DatePicker>
111
+ <SimpleTextField
112
+ bind:value={mask.value}
113
+ on:focus={() => handleTextFieldFocus(mAndDown)}
114
+ on:keypress={handleInputChange}
115
+ bind:input={inputElement}
116
+ bind:placeholder
117
+ >
118
+ <svelte:fragment slot="prepend-inner" let:prependInnerIcon let:iconSize>
119
+ <slot name="prepend-inner" {prependInnerIcon} {iconSize}>
120
+ <Icon
121
+ name="mdi-calendar"
122
+ click
123
+ on:click={() => menuOpened = !menuOpened}
124
+ ></Icon>
125
+ </slot>
126
+ </svelte:fragment>
127
+ <svelte:fragment slot="append-inner" let:appendInnerIcon let:iconSize>
128
+ <slot name="append-inner" {appendInnerIcon} {iconSize}>
129
+ </slot>
130
+ </svelte:fragment>
131
+ <svelte:fragment slot="prepend" let:prependIcon let:iconSize>
132
+ <slot name="append-inner" {prependIcon} {iconSize}>
133
+ </slot>
134
+ </svelte:fragment>
135
+ <svelte:fragment slot="append" let:appendIcon let:iconSize>
136
+ <slot name="append-inner" {appendIcon} {iconSize}>
137
+ </slot>
138
+ </svelte:fragment>
139
+ </SimpleTextField>
162
140
  </div>
163
- </Menu>
141
+
142
+ {#if mAndDown && mobileDialog}
143
+ <Dialog
144
+ bind:open={menuOpened}
145
+ >
146
+ <div
147
+ style:background-color="rgb(var(--global-color-background-100))"
148
+ style:width="300px"
149
+ style:border-radius="10px"
150
+ >
151
+ <DatePicker
152
+ bind:selectedDate={selectedDate}
153
+ bind:selectedMonth={selectedMonth}
154
+ bind:selectedYear={selectedYear}
155
+ bind:visibleMonth
156
+ bind:visibleYear
157
+ on:day-click={handleDateSelect}
158
+ on:year-click={handleYearSelect}
159
+ on:month-click={handleMonthSelect}
160
+ ></DatePicker>
161
+ </div>
162
+ </Dialog>
163
+ {:else}
164
+ <Menu
165
+ {activator}
166
+ _width={"300px"}
167
+ _boxShadow={"rgb(var(--global-color-background-300), .5) 0px 2px 4px"}
168
+ _borderRadius={"5px"}
169
+ bind:open={menuOpened}
170
+ anchor="bottom-center"
171
+ closeOnClickOutside
172
+ bind:refreshPosition
173
+ bind:menuElement
174
+ bind:openingId={openingId}
175
+ >
176
+ <div
177
+ style:background-color="rgb(var(--global-color-background-100))"
178
+ >
179
+ <DatePicker
180
+ bind:selectedDate={selectedDate}
181
+ bind:selectedMonth={selectedMonth}
182
+ bind:selectedYear={selectedYear}
183
+ bind:visibleMonth
184
+ bind:visibleYear
185
+ on:day-click={handleDateSelect}
186
+ on:year-click={handleYearSelect}
187
+ on:month-click={handleMonthSelect}
188
+ ></DatePicker>
189
+ </div>
190
+ </Menu>
191
+ {/if}
192
+ </MediaQuery>
193
+
@@ -10,6 +10,8 @@ declare const __propDef: {
10
10
  visibleMonth?: number | undefined;
11
11
  visibleYear?: number | undefined;
12
12
  selectedDate?: Date | undefined;
13
+ placeholder?: string | undefined;
14
+ mobileDialog?: boolean | undefined;
13
15
  };
14
16
  events: {
15
17
  'day-click': CustomEvent<{
@@ -2,7 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  open?: boolean | undefined;
5
- transition?: "scale" | "fly-down" | "fly-up" | "fly-horizontal" | "fade" | undefined;
5
+ transition?: "fly-down" | "fly-up" | "fly-horizontal" | "scale" | "fade" | undefined;
6
6
  _overlayOpacity?: string | undefined;
7
7
  _overlayColor?: string | undefined;
8
8
  _overlayBackdropFilter?: string | undefined;
@@ -9,4 +9,5 @@
9
9
  --autocomplete-default-min-height: 2rem;
10
10
  --autocomplete-default-padding: 0.5rem .5rem .5rem .5rem;
11
11
  --autocomplete-default-border-radius: 1.5rem;
12
+ --autocomplete-default-options-max-width: 100%;
12
13
  }
@@ -5,7 +5,7 @@ import "./Autocomplete.css";
5
5
  import { scrollInMenu } from "../common/scroller";
6
6
  let clazz = {};
7
7
  export { clazz as class };
8
- export let values = [], items, searchFunction = void 0, multiple = false, disabled = false, mandatory = false, placeholder = "", width = "auto", height = "auto", maxWidth = void 0, openingId = "autocomplete-menu", searchText = void 0, maxVisibleChips = void 0, menuBoxShadow = "rgb(var(--global-color-background-300), .5) 0px 2px 4px", menuBorderRadius = "5px";
8
+ export let values = [], items, searchFunction = void 0, multiple = false, disabled = false, mandatory = false, placeholder = "", width = "auto", height = "auto", maxWidth = void 0, openingId = "autocomplete-menu", searchText = void 0, maxVisibleChips = void 0, menuOpened = false, menuBoxShadow = "rgb(var(--global-color-background-300), .5) 0px 2px 4px", menuBorderRadius = "5px", mobileDrawer = false;
9
9
  let dispatch = createEventDispatcher();
10
10
  function select(item) {
11
11
  const alreadyPresent = values.findIndex((i) => i.value === item.value) != -1;
@@ -52,7 +52,7 @@ function toggle(item) {
52
52
  else
53
53
  select(item);
54
54
  }
55
- let menuWidth = void 0, menuHeight = "auto", menuOpened = false, refreshPosition = false;
55
+ let menuWidth = void 0, menuHeight = "auto", refreshPosition = false;
56
56
  function openMenu() {
57
57
  refreshMenuWidth();
58
58
  menuOpened = true;
@@ -124,11 +124,12 @@ $:
124
124
  filteredItems = items;
125
125
  }
126
126
  $:
127
- notVisibleChipNumber = Math.max(values.length - (maxVisibleChips || 0), 0);
127
+ notVisibleChipNumber = Math.max((values?.length || 0) - (maxVisibleChips || 0), 0);
128
128
  import Chip from "../navigation/Chip.svelte";
129
129
  import Menu from "../common/Menu.svelte";
130
130
  import { createEventDispatcher } from "svelte";
131
131
  import SimpleTextField from "./SimpleTextField.svelte";
132
+ import MenuOrDrawer from "../../composed/common/MenuOrDrawer.svelte";
132
133
  </script>
133
134
 
134
135
  <svelte:window />
@@ -147,7 +148,7 @@ import SimpleTextField from "./SimpleTextField.svelte";
147
148
  <div
148
149
  class="selection-container"
149
150
  >
150
- {#each values.slice(0, maxVisibleChips) as selection}
151
+ {#each (values || []).slice(0, maxVisibleChips) as selection}
151
152
  <slot name="selection" {selection}>
152
153
  <div tabindex="-1">
153
154
  <Chip
@@ -155,7 +156,10 @@ import SimpleTextField from "./SimpleTextField.svelte";
155
156
  on:close={() => unselect(selection)}
156
157
  --chip-default-border-radius="var(--autocomplete-border-radius, var(--autocomplete-default-border-radius))"
157
158
  buttonTabIndex={-1}
158
- >{selection.label}</Chip>
159
+ truncateText
160
+ >
161
+ {selection.label}
162
+ </Chip>
159
163
  </div>
160
164
  </slot>
161
165
  {/each}
@@ -188,51 +192,93 @@ import SimpleTextField from "./SimpleTextField.svelte";
188
192
  </div>
189
193
 
190
194
  <slot name="menu">
191
- <Menu
192
- {activator}
193
- _width={menuWidth || ""}
194
- _height={menuHeight}
195
- _maxHeight="300px"
196
- _boxShadow={menuBoxShadow}
197
- _borderRadius={menuBorderRadius}
198
- bind:open={menuOpened}
199
- anchor="bottom-center"
200
- closeOnClickOutside
201
- bind:refreshPosition
202
- bind:menuElement
203
- bind:openingId={openingId}
204
- flipOnOverflow
205
- >
206
- <ul
207
- class={clazz.menu || ''}
208
- style:background-color="rgb(var(--global-color-background-100))"
195
+ {#if !mobileDrawer}
196
+ <Menu
197
+ {activator}
198
+ _width={menuWidth || ""}
199
+ _height={menuHeight}
200
+ _maxHeight="300px"
201
+ _boxShadow={menuBoxShadow}
202
+ _borderRadius={menuBorderRadius}
203
+ bind:open={menuOpened}
204
+ anchor="bottom-center"
205
+ closeOnClickOutside
206
+ bind:refreshPosition
207
+ bind:menuElement
208
+ bind:openingId={openingId}
209
+ flipOnOverflow
209
210
  >
210
- {#each filteredItems as item, index}
211
- <li class="item-{index}">
212
- <slot
213
- name="item"
214
- {item}
215
- {index}
216
- selected={values.findIndex((i) => {
217
- return i.value == item.value;
218
- }) != -1}
219
- >
220
- <div
221
- class:selection-item={true}
222
- class:focused={index == focusedIndex}
223
- class:selected={values.findIndex((i) => {
211
+ <ul
212
+ class={clazz.menu || ''}
213
+ style:background-color="rgb(var(--global-color-background-100))"
214
+ >
215
+ {#each filteredItems as item, index}
216
+ <li class="item-{index}">
217
+ <slot
218
+ name="item"
219
+ {item}
220
+ {index}
221
+ selected={(values || []).findIndex((i) => {
224
222
  return i.value == item.value;
225
223
  }) != -1}
226
- on:click={() => toggle(item)}
227
- on:keypress={() => toggle(item)}
228
224
  >
229
- {item.label}
230
- </div>
231
- </slot>
232
- </li>
233
- {/each}
234
- </ul>
235
- </Menu>
225
+ <div
226
+ class:selection-item={true}
227
+ class:focused={index == focusedIndex}
228
+ class:selected={(values || []).findIndex((i) => {
229
+ return i.value == item.value;
230
+ }) != -1}
231
+ on:click={() => toggle(item)}
232
+ on:keypress={() => toggle(item)}
233
+ >
234
+ {item.label}
235
+ </div>
236
+ </slot>
237
+ </li>
238
+ {/each}
239
+ </ul>
240
+ </Menu>
241
+ {:else}
242
+ <MenuOrDrawer
243
+ {activator}
244
+ _height={menuHeight}
245
+ _maxHeight="300px"
246
+ _boxShadow={menuBoxShadow}
247
+ _borderRadius={menuBorderRadius}
248
+ bind:open={menuOpened}
249
+ on:close
250
+ >
251
+ <ul
252
+ class={clazz.menu || ''}
253
+ style:background-color="rgb(var(--global-color-background-100))"
254
+ >
255
+ {#each filteredItems as item, index}
256
+ <li class="item-{index}">
257
+ <slot
258
+ name="item"
259
+ {item}
260
+ {index}
261
+ selected={(values || []).findIndex((i) => {
262
+ return i.value == item.value;
263
+ }) != -1}
264
+ >
265
+ <div
266
+ class:selection-item={true}
267
+ class:focused={index == focusedIndex}
268
+ class:selected={(values || []).findIndex((i) => {
269
+ return i.value == item.value;
270
+ }) != -1}
271
+ on:click={() => toggle(item)}
272
+ on:keypress={() => toggle(item)}
273
+ >
274
+ {item.label}
275
+ </div>
276
+ </slot>
277
+ </li>
278
+ {/each}
279
+ </ul>
280
+ </MenuOrDrawer>
281
+ {/if}
236
282
  </slot>
237
283
 
238
284
  <style>
@@ -271,6 +317,10 @@ import SimpleTextField from "./SimpleTextField.svelte";
271
317
 
272
318
  .selection-item {
273
319
  padding: 10px;
320
+ max-width: var(--autocomplete-options-max-width, var(--autocomplete-default-options-max-width));
321
+ text-overflow: ellipsis;
322
+ white-space: nowrap;
323
+ overflow: hidden;
274
324
  }
275
325
 
276
326
  .selection-item.selected {
@@ -25,13 +25,16 @@ declare const __propDef: {
25
25
  openingId?: string | undefined;
26
26
  searchText?: string | undefined;
27
27
  maxVisibleChips?: number | undefined;
28
+ menuOpened?: boolean | undefined;
28
29
  menuBoxShadow?: string | undefined;
29
30
  menuBorderRadius?: string | undefined;
31
+ mobileDrawer?: boolean | undefined;
30
32
  };
31
33
  events: {
32
34
  focus: FocusEvent;
33
35
  blur: FocusEvent;
34
36
  keydown: KeyboardEvent;
37
+ close: CustomEvent<{}>;
35
38
  } & {
36
39
  [evt: string]: CustomEvent<any>;
37
40
  };
@@ -5,7 +5,7 @@ import "./SelectableVerticalList.css";
5
5
  import keyboarder from "../../../utils/keyboarder";
6
6
  import { createEventDispatcher, onMount } from "svelte";
7
7
  import Icon from "../media/Icon.svelte";
8
- export let activeKeyboard = false, loopSelection = true, focused = void 0, selected = void 0, elements = [];
8
+ export let activeKeyboard = false, loopSelection = true, focused = void 0, selected = void 0, elements = [], centered = false, bicolor = false, appendIconSize = "20pt";
9
9
  let dispatch = createEventDispatcher();
10
10
  $:
11
11
  focusedIndex = elements.findIndex((el) => el.name == focused);
@@ -53,6 +53,12 @@ onMount(() => {
53
53
  keyboarder.off(handleKeypress);
54
54
  };
55
55
  });
56
+ function handleIconClick(index, element) {
57
+ dispatch("iconClick", {
58
+ index,
59
+ element
60
+ });
61
+ }
56
62
  </script>
57
63
 
58
64
  <ul
@@ -62,6 +68,7 @@ onMount(() => {
62
68
  {#each elements as element, index (element.name)}
63
69
  <li
64
70
  class="element"
71
+ class:bicolor
65
72
  class:focused={focused == element.name}
66
73
  aria-selected={selected == element.name}
67
74
  on:mouseover={() => handleElementMouseover(element)}
@@ -71,20 +78,19 @@ onMount(() => {
71
78
  style:color={element.style?.color}
72
79
  style:background-color={element.style?.backgroundColor}
73
80
  >
74
- <slot
81
+ <slot
75
82
  name="element"
76
83
  focused={focused == element.name}
77
84
  selected={selected == element.name}
78
85
  >
79
86
  {#if !!element.icon}
80
- <Icon
81
- name={element.icon}
82
- --icon-default-size="20px"
87
+ <Icon
88
+ name={element.icon}
83
89
  ></Icon>
84
90
  {/if}
85
- <div class="title-description-container">
91
+ <div class="title-description-container" class:centered>
86
92
  <div class="title">
87
- <slot
93
+ <slot
88
94
  name="title"
89
95
  focused={focused == element.name}
90
96
  selected={selected == element.name}
@@ -93,9 +99,9 @@ onMount(() => {
93
99
  {element.title}
94
100
  </slot>
95
101
  </div>
96
- {#if !!element.description}
102
+ {#if !!element.description}
97
103
  <div class="description">
98
- <slot
104
+ <slot
99
105
  name="description"
100
106
  focused={focused == element.name}
101
107
  selected={selected == element.name}
@@ -106,6 +112,18 @@ onMount(() => {
106
112
  </div>
107
113
  {/if}
108
114
  </div>
115
+ {#if !!element.appendIcon}
116
+ <div
117
+ class="append"
118
+ on:click|stopPropagation={() => {handleIconClick(index, element)}}
119
+ on:keypress
120
+ >
121
+ <Icon
122
+ name={element.appendIcon}
123
+ --icon-size={appendIconSize}
124
+ ></Icon>
125
+ </div>
126
+ {/if}
109
127
  </slot>
110
128
  </li>
111
129
  {/each}
@@ -162,6 +180,17 @@ onMount(() => {
162
180
  margin-top: 0.2rem;
163
181
  }
164
182
 
183
+ .bicolor:nth-child(even) {
184
+ background-color: var(
185
+ --selectable-vertical-list-focus-background-color,
186
+ var(--selectable-vertical-list-default-focus-background-color)
187
+ );
188
+ color: var(
189
+ --selectable-vertical-list-focus-color,
190
+ var(--selectable-vertical-list-default-focus-color)
191
+ )
192
+ }
193
+
165
194
  .element {
166
195
  padding: var(
167
196
  --selectable-vertical-list-element-padding,
@@ -183,6 +212,7 @@ onMount(() => {
183
212
  display: flex;
184
213
  align-items: center;
185
214
  gap: 10px;
215
+ -webkit-tap-highlight-color: transparent;
186
216
  }
187
217
 
188
218
  .title-description-container {
@@ -214,4 +244,17 @@ onMount(() => {
214
244
  var(--selectable-vertical-list-default-selection-color)
215
245
  )
216
246
  }
247
+
248
+
249
+ .centered {
250
+ width: 100%;
251
+ text-align: center;
252
+ }
253
+
254
+ .append {
255
+ padding: 10px 20px 10px 20px;
256
+ position: absolute;
257
+ right: 0;
258
+ }
259
+
217
260
  </style>
@@ -9,6 +9,7 @@ export type Element = {
9
9
  color?: string;
10
10
  backgroundColor?: string;
11
11
  };
12
+ appendIcon?: string;
12
13
  };
13
14
  import '../../../css/main.css';
14
15
  import './SelectableVerticalList.css';
@@ -19,14 +20,22 @@ declare const __propDef: {
19
20
  focused?: string | number | undefined;
20
21
  selected?: string | number | undefined;
21
22
  elements?: Element[] | undefined;
23
+ centered?: boolean | undefined;
24
+ bicolor?: boolean | undefined;
25
+ appendIconSize?: string | undefined;
22
26
  };
23
27
  events: {
28
+ keypress: KeyboardEvent;
24
29
  select: CustomEvent<{
25
30
  element: Element;
26
31
  }>;
27
32
  focus: CustomEvent<{
28
33
  element: Element;
29
34
  }>;
35
+ iconClick: CustomEvent<{
36
+ index: number;
37
+ element: Element;
38
+ }>;
30
39
  } & {
31
40
  [evt: string]: CustomEvent<any>;
32
41
  };
@@ -1,5 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- export type HeaderType = ColumnBoolean | ColumnString | ColumnNumber | ColumnDate | ColumnIcon | ColumnCheckBox | ColumnCostom;
2
+ export type HeaderType = ColumnBoolean | ColumnString | ColumnNumber | ColumnDate | ColumnIcon | ColumnCheckBox | ColumnCustom;
3
3
  export type Header = {
4
4
  value: string;
5
5
  label: string;
@@ -13,7 +13,7 @@ export type Header = {
13
13
  };
14
14
  import '../../../css/main.css';
15
15
  import './SimpleTable.css';
16
- import type { ColumnBoolean, ColumnCheckBox, ColumnCostom, ColumnDate, ColumnIcon, ColumnNumber, ColumnString } from './columnTypes';
16
+ import type { ColumnBoolean, ColumnCheckBox, ColumnCustom, ColumnDate, ColumnIcon, ColumnNumber, ColumnString } from './columnTypes';
17
17
  declare const __propDef: {
18
18
  props: {
19
19
  class?: {
@@ -25,7 +25,7 @@ export type ColumnNumber = {
25
25
  key: "number";
26
26
  params?: {};
27
27
  };
28
- export type ColumnCostom = {
28
+ export type ColumnCustom = {
29
29
  key: "custom";
30
30
  params?: {};
31
31
  };
@@ -4,7 +4,7 @@ declare const __propDef: {
4
4
  src: string;
5
5
  title?: string | undefined;
6
6
  description?: string | undefined;
7
- direction?: "row" | "column" | undefined;
7
+ direction?: "column" | "row" | undefined;
8
8
  reverse?: boolean | undefined;
9
9
  avatarSpacing?: string | undefined;
10
10
  width?: string | undefined;
@@ -10,5 +10,6 @@
10
10
  --chip-default-font-size: inherit;
11
11
  --chip-default-line-height: inherit;
12
12
  --chip-default-cursor: pointer;
13
- --chip-default-hover-background-color: rgb(var(--global-color-primary-600))
13
+ --chip-default-hover-background-color: rgb(var(--global-color-primary-600));
14
+ --chip-default-text-max-width: 200px
14
15
  }
@@ -3,12 +3,13 @@ import "./Chip.css";
3
3
  import Icon from "../media/Icon.svelte";
4
4
  import Button from "../buttons/Button.svelte";
5
5
  import { createEventDispatcher } from "svelte";
6
- export let close = false, closeIcon = "mdi-close-circle", disabled = false, filter = false, filterIcon = "mdi-check", label = false, outlined = false, buttonTabIndex = null;
6
+ export let close = false, closeIcon = "mdi-close-circle", disabled = false, filter = false, filterIcon = "mdi-check", label = false, outlined = false, buttonTabIndex = null, truncateText = false;
7
7
  const dispatch = createEventDispatcher();
8
8
  function handleChipClick() {
9
9
  dispatch("click");
10
10
  }
11
- function handleCloseClick() {
11
+ function handleCloseClick(e) {
12
+ e.detail.nativeEvent.stopPropagation();
12
13
  dispatch("close");
13
14
  }
14
15
  </script>
@@ -26,8 +27,9 @@ function handleCloseClick() {
26
27
  <Icon name={filterIcon} />
27
28
  </div>
28
29
  {/if}
29
- <div
30
- class="text"
30
+ <div
31
+ class="text"
32
+ class:truncate={truncateText}
31
33
  >
32
34
  <slot />
33
35
  </div>
@@ -40,7 +42,8 @@ function handleCloseClick() {
40
42
  --button-background-color="transparent"
41
43
  --button-padding="0px"
42
44
  --button-color="var(--chip-color, var(--chip-default-color))"
43
- on:click={handleCloseClick}
45
+ on:click
46
+ ={handleCloseClick}
44
47
  />
45
48
  </div>
46
49
  {/if}
@@ -69,6 +72,14 @@ function handleCloseClick() {
69
72
  );
70
73
  }
71
74
 
75
+ .truncate {
76
+ max-width: var(--chip-text-max-width, var(--chip-default-text-max-width));
77
+ text-overflow: ellipsis;
78
+ white-space: nowrap;
79
+ overflow: hidden;
80
+ }
81
+
82
+
72
83
  .chip:not(.outlined) {
73
84
  background-color: var(
74
85
  --chip-background-color,
@@ -11,6 +11,7 @@ declare const __propDef: {
11
11
  label?: boolean | undefined;
12
12
  outlined?: boolean | undefined;
13
13
  buttonTabIndex?: number | null | undefined;
14
+ truncateText?: boolean | undefined;
14
15
  };
15
16
  events: {
16
17
  click: CustomEvent<any>;