@humandialog/forms.svelte 0.5.7 → 0.5.8

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.
@@ -53,8 +53,8 @@ export function _scrollViewToCard() {
53
53
  card?.scrollIntoView(
54
54
  {
55
55
  behavior: "smooth",
56
- block: "start",
57
- inline: "center"
56
+ block: "nearest",
57
+ inline: "nearest"
58
58
  }
59
59
  );
60
60
  }
@@ -131,7 +131,7 @@ export async function editProperty(field) {
131
131
 
132
132
  <!-- svelte-ignore a11y-click-events-have-key-events -->
133
133
 
134
- <li class="mx-2 pt-2 pb-4 px-1 rounded-md border border-transparent {selectedClass} {focusedClass}"
134
+ <li class="mx-2 pt-2 pb-4 px-1 rounded-md border border-transparent {selectedClass} {focusedClass} scroll-mt-[50px] sm:scroll-mt-[40px]"
135
135
  class:cursor-pointer={!isCardActive}
136
136
  on:click={activate}
137
137
  use:selectable={item}
@@ -150,6 +150,13 @@ afterUpdate(() => {
150
150
  }
151
151
  }
152
152
  });
153
+ export function scrollViewToCard(item) {
154
+ columns.forEach((c2) => {
155
+ const card = c2.findCardByItem(item);
156
+ if (card)
157
+ card._scrollViewToCard();
158
+ });
159
+ }
153
160
  export function moveUp(item) {
154
161
  const columnIdx = getColumnIdx(item);
155
162
  let allItems = definition.getItems();
@@ -13,6 +13,7 @@ declare const __propDef: {
13
13
  reload?: ((data: object | object[], selectElement?: number) => Promise<void>) | undefined;
14
14
  getColumnIdx?: ((item: any) => number) | undefined;
15
15
  edit?: ((item: object, field: string) => void) | undefined;
16
+ scrollViewToCard?: ((item: any) => void) | undefined;
16
17
  moveUp?: ((item: object) => void) | undefined;
17
18
  moveDown?: ((item: object) => void) | undefined;
18
19
  replace?: ((item: any, toColumnIdx: any, afterElement: any) => void) | undefined;
@@ -51,6 +52,7 @@ export default class Kanban extends SvelteComponentTyped<KanbanProps, KanbanEven
51
52
  get reload(): (data: object | object[], selectElement?: number) => Promise<void>;
52
53
  get getColumnIdx(): (item: any) => number;
53
54
  get edit(): (item: object, field: string) => void;
55
+ get scrollViewToCard(): (item: any) => void;
54
56
  get moveUp(): (item: object) => void;
55
57
  get moveDown(): (item: object) => void;
56
58
  get replace(): (item: any, toColumnIdx: any, afterElement: any) => void;
@@ -189,16 +189,27 @@ function setSelectionAtEnd(element) {
189
189
  sel.removeAllRanges();
190
190
  sel.addRange(range);
191
191
  }
192
+ let rootElement;
193
+ export function scrollToView() {
194
+ rootElement.scrollIntoView(
195
+ {
196
+ behavior: "smooth",
197
+ block: "nearest",
198
+ inline: "nearest"
199
+ }
200
+ );
201
+ }
192
202
  </script>
193
203
 
194
204
  <!-- svelte-ignore a11y-click-events-have-key-events -->
195
205
  {#if item}
196
206
  {@const element_title = item[title]}
197
207
 
198
- <section class="mt-3 flex flex-row my-0 w-full text-sm text-stone-700 dark:text-stone-300 cursor-default rounded-md border border-transparent {selected_class} {focused_class}"
208
+ <section class="mt-3 flex flex-row my-0 w-full text-sm text-stone-700 dark:text-stone-300 cursor-default rounded-md border border-transparent {selected_class} {focused_class} scroll-mt-[50px] sm:scroll-mt-[40px]"
199
209
  on:contextmenu={on_contextmenu}
200
210
  role="menu"
201
- tabindex="-1">
211
+ tabindex="-1"
212
+ bind:this={rootElement}>
202
213
 
203
214
  <slot name="left" element={item}/>
204
215
 
@@ -9,6 +9,7 @@ declare const __propDef: {
9
9
  contextMenu: any;
10
10
  activate?: (() => void) | undefined;
11
11
  editProperty?: ((field: string) => void) | undefined;
12
+ scrollToView?: (() => void) | undefined;
12
13
  };
13
14
  events: {
14
15
  [evt: string]: CustomEvent<any>;
@@ -25,5 +26,6 @@ export type ListSlots = typeof __propDef.slots;
25
26
  export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
26
27
  get activate(): () => void;
27
28
  get editProperty(): (field: string) => void;
29
+ get scrollToView(): () => void;
28
30
  }
29
31
  export {};
@@ -135,7 +135,7 @@ export function reload(data, selectElement = KEEP_SELECTION) {
135
135
  if (!activate_after_dom_update)
136
136
  activateItem("props", null, []);
137
137
  }
138
- export function moveUp(element) {
138
+ export async function moveUp(element) {
139
139
  if (!orderAttrib)
140
140
  return;
141
141
  let prev = getPrev(items, element);
@@ -143,11 +143,13 @@ export function moveUp(element) {
143
143
  return;
144
144
  items = swapElements(items, element, prev);
145
145
  [element[orderAttrib], prev[orderAttrib]] = [prev[orderAttrib], element[orderAttrib]];
146
+ await tick();
147
+ scrollToSelectedElement();
146
148
  informModification(element, orderAttrib);
147
149
  informModification(prev, orderAttrib);
148
150
  pushChanges();
149
151
  }
150
- export function moveDown(element) {
152
+ export async function moveDown(element) {
151
153
  if (!orderAttrib)
152
154
  return;
153
155
  let next = getNext(items, element);
@@ -155,6 +157,8 @@ export function moveDown(element) {
155
157
  return;
156
158
  items = swapElements(items, element, next);
157
159
  [element[orderAttrib], next[orderAttrib]] = [next[orderAttrib], element[orderAttrib]];
160
+ await tick();
161
+ scrollToSelectedElement();
158
162
  informModification(element, orderAttrib);
159
163
  informModification(next, orderAttrib);
160
164
  pushChanges();
@@ -182,6 +186,15 @@ export async function addRowAfter(after = null) {
182
186
  }
183
187
  });
184
188
  }
189
+ function scrollToSelectedElement() {
190
+ const activeItem = getActive("props");
191
+ if (!activeItem)
192
+ return;
193
+ const activeItemKey = getItemKey(activeItem);
194
+ const activeIdx = items?.findIndex((i) => getItemKey(i) == activeItemKey);
195
+ if (activeIdx >= 0)
196
+ rows[activeIdx].scrollToView();
197
+ }
185
198
  export function remove(element) {
186
199
  let removing_idx = items?.findIndex((e) => e == element);
187
200
  if (removing_idx < 0)
@@ -21,8 +21,8 @@ declare const __propDef: {
21
21
  MIN_ORDER?: 0 | undefined;
22
22
  rereder?: (() => void) | undefined;
23
23
  reload?: ((data: object | object[], selectElement?: number) => void) | undefined;
24
- moveUp?: ((element: object) => void) | undefined;
25
- moveDown?: ((element: object) => void) | undefined;
24
+ moveUp?: ((element: object) => Promise<void>) | undefined;
25
+ moveDown?: ((element: object) => Promise<void>) | undefined;
26
26
  addRowAfter?: ((after?: object | null) => Promise<void>) | undefined;
27
27
  remove?: ((element: object) => void) | undefined;
28
28
  edit?: ((element: object, property_name: string) => void) | undefined;
@@ -50,8 +50,8 @@ export default class List extends SvelteComponentTyped<ListProps, ListEvents, Li
50
50
  get MIN_ORDER(): 0;
51
51
  get rereder(): () => void;
52
52
  get reload(): (data: object | object[], selectElement?: number) => void;
53
- get moveUp(): (element: object) => void;
54
- get moveDown(): (element: object) => void;
53
+ get moveUp(): (element: object) => Promise<void>;
54
+ get moveDown(): (element: object) => Promise<void>;
55
55
  get addRowAfter(): (after?: object | null) => Promise<void>;
56
56
  get remove(): (element: object) => void;
57
57
  get edit(): (element: object, property_name: string) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humandialog/forms.svelte",
3
- "version": "0.5.7",
3
+ "version": "0.5.8",
4
4
  "description": "Basic Svelte UI components for Object Reef applications",
5
5
  "devDependencies": {
6
6
  "@playwright/test": "^1.28.1",