fuma 0.3.30 → 0.3.32

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.
@@ -5,12 +5,18 @@ export type Position = {
5
5
  clientY: number;
6
6
  };
7
7
  export type DragHandler = ReturnType<typeof createDragHandler>;
8
- export declare function createDragHandler<Type = unknown>(listElement: HTMLDivElement, itemElement: HTMLElement, options: ListEditableOptions<Type>): {
9
- on: (event: "dragStart" | "dragMove" | "dragEnd", callback: Callback) => void;
10
- off: (event: "dragStart" | "dragMove" | "dragEnd", callback: Callback) => void;
8
+ export declare function createDragHandler<Type = unknown>(listElement: HTMLDivElement | HTMLUListElement, itemElement: HTMLElement, options: ListEditableOptions<Type>): {
9
+ on: <K extends "dragStart" | "dragMove" | "dragEnd">(eventKey: K, callback: (arg: {
10
+ dragStart: void;
11
+ dragMove: void;
12
+ dragEnd: void;
13
+ }[K]) => unknown) => void;
14
+ off: <K_1 extends "dragStart" | "dragMove" | "dragEnd">(eventKey: K_1, callback: (arg: {
15
+ dragStart: void;
16
+ dragMove: void;
17
+ dragEnd: void;
18
+ }[K_1]) => unknown) => void;
11
19
  start(position: Position): void;
12
20
  move(position?: Position): void;
13
21
  end(): void;
14
22
  };
15
- type Callback = () => void;
16
- export {};
@@ -1,8 +1,9 @@
1
1
  import './index.css';
2
2
  import { CLASSNAME_DRAG_ACTIVE } from './index.js';
3
3
  import { initDragStyle, resetDragStyle } from './style.js';
4
- import { createPlaceholder, computeLimits, getNewOrderIndex, getListItemIndex, } from './utils.js';
4
+ import { createPlaceholder, computeLimits, getNewOrderIndex, getListItemIndex } from './utils.js';
5
5
  import { scroll } from './store.js';
6
+ import { createEventEmitter } from '../../utils/eventEmitter.js';
6
7
  export function createDragHandler(listElement, itemElement, options) {
7
8
  let originMouseY = 0;
8
9
  let limits = null;
@@ -13,7 +14,7 @@ export function createDragHandler(listElement, itemElement, options) {
13
14
  const events = createEventEmitter({
14
15
  dragStart: options.onDragStart ? [options.onDragStart] : [],
15
16
  dragMove: options.onDragMove ? [options.onDragMove] : [],
16
- dragEnd: options.onDragEnd ? [options.onDragEnd] : [],
17
+ dragEnd: options.onDragEnd ? [options.onDragEnd] : []
17
18
  });
18
19
  return {
19
20
  on: events.on,
@@ -72,21 +73,6 @@ export function createDragHandler(listElement, itemElement, options) {
72
73
  options.onChange(newOrderItems);
73
74
  options.items = newOrderItems;
74
75
  }
75
- },
76
- };
77
- }
78
- function createEventEmitter(initialEvents) {
79
- const events = { ...initialEvents };
80
- return {
81
- on(event, callback) {
82
- events[event].push(callback);
83
- },
84
- off(event, callback) {
85
- const index = events[event].indexOf(callback);
86
- events[event].splice(index, 1);
87
- },
88
- emit(event) {
89
- events[event].forEach((callback) => callback());
90
- },
76
+ }
91
77
  };
92
78
  }
@@ -17,7 +17,7 @@ export interface ListEditableOptions<Type = unknown> {
17
17
  /** Only handle reorder from this elements */
18
18
  dragElementsSelector?: string;
19
19
  }
20
- export declare function listEditable<Type = unknown>(node: HTMLDivElement, options?: ListEditableOptions<Type>): {
20
+ export declare function listEditable<Type = unknown>(node: HTMLDivElement | HTMLUListElement, options?: ListEditableOptions<Type>): {
21
21
  destroy(): void;
22
22
  update({ items }: ListEditableOptions<Type>): void;
23
23
  };
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  key: string;
5
- value?: string | undefined;
5
+ value?: string | undefined | null;
6
6
  };
7
7
  events: {
8
8
  [evt: string]: CustomEvent<any>;
@@ -9,6 +9,7 @@ import { mdiOrderBoolAscendingVariant } from "@mdi/js";
9
9
  export let field;
10
10
  export let options;
11
11
  export let multiSelect = false;
12
+ export let placeholder = "No option";
12
13
  let _options = initOptions($page.url);
13
14
  page.subscribe(({ url }) => _options = initOptions(url));
14
15
  $:
@@ -78,6 +79,10 @@ const getHref = derived(urlParam, (params) => (value) => {
78
79
  {/if}
79
80
  <span class="whitespace-nowrap font-normal">{label}</span>
80
81
  </a>
82
+ {:else}
83
+ <div class="menu-item disabled px-10">
84
+ <span class="opacity-40">{placeholder}</span>
85
+ </div>
81
86
  {/each}
82
87
  </div>
83
88
  </DropDown>
@@ -6,6 +6,7 @@ declare const __propDef: {
6
6
  field: TableField;
7
7
  options: Options;
8
8
  multiSelect?: boolean | undefined;
9
+ placeholder?: string | undefined;
9
10
  };
10
11
  events: {
11
12
  [evt: string]: CustomEvent<any>;
@@ -0,0 +1,10 @@
1
+ export declare function createEventEmitter<EventMap extends Record<string, any>>(initialEvents: {
2
+ [K in keyof EventMap]: Callback<EventMap[K]>[];
3
+ }): {
4
+ on<K extends keyof EventMap>(eventKey: K, callback: Callback<EventMap[K]>): void;
5
+ off<K_1 extends keyof EventMap>(eventKey: K_1, callback: Callback<EventMap[K_1]>): void;
6
+ emit<K_2 extends keyof EventMap>(...args: EventEmitterArgs<EventMap, K_2>): void;
7
+ };
8
+ type Callback<Arg> = (arg: Arg) => unknown;
9
+ type EventEmitterArgs<EventMap extends Record<string, any>, K extends keyof EventMap> = undefined extends EventMap[K] ? [type: K, parameter?: EventMap[K]] : [type: K, parameter: EventMap[K]];
10
+ export {};
@@ -0,0 +1,16 @@
1
+ export function createEventEmitter(initialEvents) {
2
+ const events = { ...initialEvents };
3
+ return {
4
+ on(eventKey, callback) {
5
+ events[eventKey].push(callback);
6
+ },
7
+ off(eventKey, callback) {
8
+ const index = events[eventKey].indexOf(callback);
9
+ events[eventKey].splice(index, 1);
10
+ },
11
+ emit(...args) {
12
+ // @ts-ignore
13
+ events[args[0]].forEach((callback) => callback(args[1]));
14
+ }
15
+ };
16
+ }
@@ -8,3 +8,4 @@ export * from './tippy.js';
8
8
  export * from './nestedPaths.js';
9
9
  export * from './constant.js';
10
10
  export * from './csv.js';
11
+ export * from './eventEmitter.js';
@@ -8,3 +8,4 @@ export * from './tippy.js';
8
8
  export * from './nestedPaths.js';
9
9
  export * from './constant.js';
10
10
  export * from './csv.js';
11
+ export * from './eventEmitter.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fuma",
3
- "version": "0.3.30",
3
+ "version": "0.3.32",
4
4
  "description": "My fullstack material build with sveltekit, daisyui, zod, prisma, lucia",
5
5
  "author": {
6
6
  "name": "Jonas Voisard",