@omegagrid/core 0.6.85 → 0.6.87

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.
@@ -8,6 +8,7 @@ export declare class ListSortEvent extends Event {
8
8
  readonly toIndex: number;
9
9
  readonly sourceList: SortableList;
10
10
  readonly targetList: SortableList;
11
+ readonly drop: 'before' | 'after';
11
12
  constructor(args: Partial<ListSortEvent>);
12
13
  }
13
14
  export declare class SortableList extends List {
@@ -1 +1 @@
1
- {"version":3,"file":"sortableList.d.ts","sourceRoot":"","sources":["../../src/ui/sortableList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACpD,UAAU,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;gBAEtB,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;CAKxC;AAED,qBACa,YAAa,SAAQ,IAAI;IAErC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAChC,cAAc,EAAE,YAAY,EAAE,CAAC;IAG/B,YAAY,UAAS;IAErB,OAAO,CAAC,QAAQ,CAAS;IACzB,IAAI,OAAO,IAAK,OAAO,CAAyB;IAChD,IAAI,gBAAgB,IAAK,OAAO,CAE/B;IAED,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAAY;IAEvC,MAAM,CAAC,aAAa,4BAgBjB;;IAMH,YAAY,CAAC,IAAI,EAAE,eAAe;IAOlC,UAAU;IAIV,WAAW,CAAC,aAAa,CAAC,EAAE,OAAO;IAmBnC,eAAe,CAAC,SAAS,EAAE,SAAS;IAcpC,cAAc;IAQd,YAAY,MAAO,UAAU,UAc5B;IAED,UAAU,aAET;IAED,YAAY,MAAO,UAAU,UAiC5B;IAED,YAAY;CAOZ"}
1
+ {"version":3,"file":"sortableList.d.ts","sourceRoot":"","sources":["../../src/ui/sortableList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACpD,UAAU,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAC,OAAO,CAAC;gBAEpB,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;CAKxC;AAED,qBACa,YAAa,SAAQ,IAAI;IAErC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAChC,cAAc,EAAE,YAAY,EAAE,CAAC;IAG/B,YAAY,UAAS;IAErB,OAAO,CAAC,QAAQ,CAAS;IACzB,IAAI,OAAO,IAAK,OAAO,CAAyB;IAChD,IAAI,gBAAgB,IAAK,OAAO,CAE/B;IAED,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,mBAAmB,CAAY;IAEvC,MAAM,CAAC,aAAa,4BAgBjB;;IAMH,YAAY,CAAC,IAAI,EAAE,eAAe;IAOlC,UAAU;IAIV,WAAW,CAAC,aAAa,CAAC,EAAE,OAAO;IAoBnC,eAAe,CAAC,SAAS,EAAE,SAAS;IAcpC,cAAc;IAQd,YAAY,MAAO,UAAU,UAc5B;IAED,UAAU,aAET;IAED,YAAY,MAAO,UAAU,UAiC5B;IAED,YAAY;CAOZ"}
@@ -95,13 +95,13 @@ let SortableList = SortableList_1 = class SortableList extends List {
95
95
  this.removeMark();
96
96
  if (this.targetIndex > -1) {
97
97
  if (dispatchEvent) {
98
- if (this.sortIndex != this.targetIndex)
99
- this.dispatchEvent(new ListSortEvent({
100
- fromIndex: this.sortIndex,
101
- toIndex: this.targetIndex,
102
- sourceList: SortableList_1.sourceList,
103
- targetList: this
104
- }));
98
+ this.dispatchEvent(new ListSortEvent({
99
+ fromIndex: (SortableList_1.sourceList ? SortableList_1.sourceList : this).sortIndex,
100
+ toIndex: this.targetIndex,
101
+ sourceList: SortableList_1.sourceList,
102
+ targetList: this,
103
+ drop: this.markedItem.index > this.targetIndex ? 'before' : 'after'
104
+ }));
105
105
  }
106
106
  }
107
107
  this.targetIndex = -1;
@@ -1 +1 @@
1
- {"version":3,"file":"sortableList.js","sourceRoot":"","sources":["../../src/ui/sortableList.ts"],"names":[],"mappings":"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","sourcesContent":["import { css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { List, ListItemElement } from './list';\nimport { dom } from '../common';\nimport { Direction } from '../types';\nimport constants from '../constants';\n\nexport interface SortableListItem extends HTMLElement {\n\tmoveHandle?: HTMLElement;\n}\n\nexport class ListSortEvent extends Event {\n\n\treadonly fromIndex: number;\n\treadonly toIndex: number;\n\treadonly sourceList: SortableList;\n\treadonly targetList: SortableList;\n\n\tconstructor(args: Partial<ListSortEvent>) {\n\t\tsuper('list.sort', {bubbles: true, composed: true});\n\t\tObject.assign(this, args);\n\t}\n\n}\n\n@customElement(`og-sortablelist`)\nexport class SortableList extends List {\n\n\tstatic sourceList: SortableList;\n\tconnectedLists: SortableList[];\n\n\t@property({type: Boolean, reflect: true})\n\tcustomHandle = false;\n\n\tprivate _sorting = false;\n\tget sorting() : boolean { return this._sorting }\n\tget connectedSorting() : boolean { \n\t\treturn this.connectedLists && this.connectedLists.some(list => list.sorting);\n\t}\n\n\tprivate sortIndex = -1;\n\tprivate targetIndex = -1;\n\tprivate markedItem: HTMLElement;\n\tprivate autoscrollTimer: number;\n\tprivate autoscrollDirection: Direction;\n\n\tstatic contentStyles = [...List.contentStyles, css`\n\t\t.item {\n\t\t\tcursor: move !important;\n\t\t}\n\n\t\t:host([customHandle]) .item {\n\t\t\tcursor: default !important;\t\t\t\n\t\t}\n\n\t\t.item.target-prev {\n\t\t\tborder-top: 2px solid var(--og-accent-color);\n\t\t}\n\n\t\t.item.target-next {\n\t\t\tborder-bottom: 2px solid var(--og-accent-color);\n\t\t}\n\t`];\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tstartSorting(item: ListItemElement) {\n\t\tSortableList.sourceList = this;\n\t\tthis._sorting = true;\n\t\tthis.sortIndex = item.index;\n\t\tdocument.body.addEventListener('mouseup', () => this.stopSorting(false), {once: true});\n\t}\n\n\tremoveMark() {\n\t\tthis.markedItem?.classList.remove('target-prev', 'target-next');\n\t}\n\n\tstopSorting(dispatchEvent?: boolean) {\n\t\tthis._sorting = false;\n\t\tthis.stopAutoscroll();\n\t\tthis.removeMark();\n\t\tif (this.targetIndex > -1) {\n\t\t\tif (dispatchEvent) {\n\t\t\t\tif (this.sortIndex != this.targetIndex) this.dispatchEvent(new ListSortEvent({\n\t\t\t\t\tfromIndex: this.sortIndex, \n\t\t\t\t\ttoIndex: this.targetIndex,\n\t\t\t\t\tsourceList: SortableList.sourceList,\n\t\t\t\t\ttargetList: this\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\tthis.targetIndex = -1;\n\t\tthis.sortIndex = -1;\n\t\tSortableList.sourceList = null;\n\t}\n\n\tstartAutoscroll(direction: Direction) {\n\t\tif (this.autoscrollDirection == direction) return;\n\t\tthis.autoscrollDirection = direction;\n\t\tthis.autoscrollTimer = window.setInterval(() => {\n\t\t\tif (this.autoscrollDirection == 'down') {\n\t\t\t\tconst offset = Math.min(this.offset + this.itemHeight, this.size * this.itemHeight - this.clientHeight);\n\t\t\t\tif (offset > this.offset) this.scrollToOffset(offset);\n\t\t\t} else {\n\t\t\t\tconst offset = Math.max(0, this.offset - this.itemHeight);\n\t\t\t\tif (offset < this.offset) this.scrollToOffset(offset);\n\t\t\t}\n\t\t}, constants.LIST_AUTOSCROLL_DELAY);\n\t}\n\n\tstopAutoscroll() {\n\t\tif (this.autoscrollTimer != null) {\n\t\t\tclearInterval(this.autoscrollTimer);\n\t\t\tthis.autoscrollTimer = null;\n\t\t\tthis.autoscrollDirection = null;\n\t\t}\n\t}\n\n\t_onMouseDown = (e: MouseEvent) => {\n\t\tconst path = e.composedPath();\n\t\tconst item = path.find((el: HTMLElement) => el.classList && el.classList.contains('item')) as ListItemElement;\n\t\t\n\t\tif (this.customHandle) {\n\t\t\tlet handle = item && (item as SortableListItem).moveHandle;\n\t\t\tif (!handle && item?.firstElementChild) {\n\t\t\t\thandle = (item.firstElementChild as SortableListItem).moveHandle;\n\t\t\t}\n\n\t\t\tif (handle && path.find((el: HTMLElement) => el == handle)) {\n\t\t\t\tthis.startSorting(item);\n\t\t\t}\n\t\t} else if (item) this.startSorting(item);\n\t}\n\n\t_onMouseUp = () => {\n\t\tthis.stopSorting(true);\n\t}\n\n\t_onMouseMove = (e: MouseEvent) => {\n\t\tif (this.sorting || this.connectedSorting) {\n\t\t\tthis.connectedLists?.forEach(list => list.removeMark());\n\n\t\t\tconst item = e.composedPath().find(\n\t\t\t\t(el: HTMLElement) => el.classList && el.classList.contains('item')\n\t\t\t) as ListItemElement;\n\t\t\tif (!(item instanceof HTMLElement)) return;\n\t\t\tconst offset = dom.getElementOffset(item as HTMLElement, this.container);\n\t\t\tconst top = offset.top + e.offsetY;\n\n\t\t\tif (top < constants.LIST_AUTOSCROLL_TRESHOLD) {\n\t\t\t\tthis.startAutoscroll('up');\n\t\t\t} else if (this.container.clientHeight - top < constants.LIST_AUTOSCROLL_TRESHOLD) {\n\t\t\t\tthis.startAutoscroll('down');\n\t\t\t} else {\n\t\t\t\tthis.stopAutoscroll();\n\t\t\t}\n\t\t\t\n\t\t\tif (this.markedItem) this.markedItem.classList.remove('target-prev', 'target-next');\n\n\t\t\tlet targetIndex = item.index;\n\t\t\tif (e.offsetY > item.clientHeight / 2) {\n\t\t\t\tif (this.sortIndex > targetIndex) targetIndex++;\n\t\t\t\titem.classList.add('target-next');\n\t\t\t} else {\n\t\t\t\tif (this.sortIndex < targetIndex) targetIndex--;\n\t\t\t\titem.classList.add('target-prev');\n\t\t\t}\n\n\t\t\tthis.markedItem = item;\n\t\t\tthis.targetIndex = targetIndex;\n\t\t}\n\t}\n\t\n\tfirstUpdated() {\n\t\tsuper.firstUpdated();\n\t\tthis.container.addEventListener('mousedown', this._onMouseDown);\n\t\tthis.container.addEventListener('mousemove', this._onMouseMove);\n\t\tthis.container.addEventListener('mouseup', this._onMouseUp);\n\t}\n\t\n}"]}
1
+ {"version":3,"file":"sortableList.js","sourceRoot":"","sources":["../../src/ui/sortableList.ts"],"names":[],"mappings":"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","sourcesContent":["import { css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { List, ListItemElement } from './list';\nimport { dom } from '../common';\nimport { Direction } from '../types';\nimport constants from '../constants';\n\nexport interface SortableListItem extends HTMLElement {\n\tmoveHandle?: HTMLElement;\n}\n\nexport class ListSortEvent extends Event {\n\n\treadonly fromIndex: number;\n\treadonly toIndex: number;\n\treadonly sourceList: SortableList;\n\treadonly targetList: SortableList;\n\treadonly drop: 'before'|'after';\n\n\tconstructor(args: Partial<ListSortEvent>) {\n\t\tsuper('list.sort', {bubbles: true, composed: true});\n\t\tObject.assign(this, args);\n\t}\n\n}\n\n@customElement(`og-sortablelist`)\nexport class SortableList extends List {\n\n\tstatic sourceList: SortableList;\n\tconnectedLists: SortableList[];\n\n\t@property({type: Boolean, reflect: true})\n\tcustomHandle = false;\n\n\tprivate _sorting = false;\n\tget sorting() : boolean { return this._sorting }\n\tget connectedSorting() : boolean { \n\t\treturn this.connectedLists && this.connectedLists.some(list => list.sorting);\n\t}\n\n\tprivate sortIndex = -1;\n\tprivate targetIndex = -1;\n\tprivate markedItem: ListItemElement;\n\tprivate autoscrollTimer: number;\n\tprivate autoscrollDirection: Direction;\n\n\tstatic contentStyles = [...List.contentStyles, css`\n\t\t.item {\n\t\t\tcursor: move !important;\n\t\t}\n\n\t\t:host([customHandle]) .item {\n\t\t\tcursor: default !important;\t\t\t\n\t\t}\n\n\t\t.item.target-prev {\n\t\t\tborder-top: 2px solid var(--og-accent-color);\n\t\t}\n\n\t\t.item.target-next {\n\t\t\tborder-bottom: 2px solid var(--og-accent-color);\n\t\t}\n\t`];\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tstartSorting(item: ListItemElement) {\n\t\tSortableList.sourceList = this;\n\t\tthis._sorting = true;\n\t\tthis.sortIndex = item.index;\n\t\tdocument.body.addEventListener('mouseup', () => this.stopSorting(false), {once: true});\n\t}\n\n\tremoveMark() {\n\t\tthis.markedItem?.classList.remove('target-prev', 'target-next');\n\t}\n\n\tstopSorting(dispatchEvent?: boolean) {\n\t\tthis._sorting = false;\n\t\tthis.stopAutoscroll();\n\t\tthis.removeMark();\n\t\tif (this.targetIndex > -1) {\n\t\t\tif (dispatchEvent) {\n\t\t\t\tthis.dispatchEvent(new ListSortEvent({\n\t\t\t\t\tfromIndex: (SortableList.sourceList ? SortableList.sourceList : this).sortIndex, \n\t\t\t\t\ttoIndex: this.targetIndex,\n\t\t\t\t\tsourceList: SortableList.sourceList,\n\t\t\t\t\ttargetList: this,\n\t\t\t\t\tdrop: this.markedItem.index > this.targetIndex ? 'before' : 'after'\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\tthis.targetIndex = -1;\n\t\tthis.sortIndex = -1;\n\t\tSortableList.sourceList = null;\n\t}\n\n\tstartAutoscroll(direction: Direction) {\n\t\tif (this.autoscrollDirection == direction) return;\n\t\tthis.autoscrollDirection = direction;\n\t\tthis.autoscrollTimer = window.setInterval(() => {\n\t\t\tif (this.autoscrollDirection == 'down') {\n\t\t\t\tconst offset = Math.min(this.offset + this.itemHeight, this.size * this.itemHeight - this.clientHeight);\n\t\t\t\tif (offset > this.offset) this.scrollToOffset(offset);\n\t\t\t} else {\n\t\t\t\tconst offset = Math.max(0, this.offset - this.itemHeight);\n\t\t\t\tif (offset < this.offset) this.scrollToOffset(offset);\n\t\t\t}\n\t\t}, constants.LIST_AUTOSCROLL_DELAY);\n\t}\n\n\tstopAutoscroll() {\n\t\tif (this.autoscrollTimer != null) {\n\t\t\tclearInterval(this.autoscrollTimer);\n\t\t\tthis.autoscrollTimer = null;\n\t\t\tthis.autoscrollDirection = null;\n\t\t}\n\t}\n\n\t_onMouseDown = (e: MouseEvent) => {\n\t\tconst path = e.composedPath();\n\t\tconst item = path.find((el: HTMLElement) => el.classList && el.classList.contains('item')) as ListItemElement;\n\t\t\n\t\tif (this.customHandle) {\n\t\t\tlet handle = item && (item as SortableListItem).moveHandle;\n\t\t\tif (!handle && item?.firstElementChild) {\n\t\t\t\thandle = (item.firstElementChild as SortableListItem).moveHandle;\n\t\t\t}\n\n\t\t\tif (handle && path.find((el: HTMLElement) => el == handle)) {\n\t\t\t\tthis.startSorting(item);\n\t\t\t}\n\t\t} else if (item) this.startSorting(item);\n\t}\n\n\t_onMouseUp = () => {\n\t\tthis.stopSorting(true);\n\t}\n\n\t_onMouseMove = (e: MouseEvent) => {\n\t\tif (this.sorting || this.connectedSorting) {\n\t\t\tthis.connectedLists?.forEach(list => list.removeMark());\n\n\t\t\tconst item = e.composedPath().find(\n\t\t\t\t(el: HTMLElement) => el.classList && el.classList.contains('item')\n\t\t\t) as ListItemElement;\n\t\t\tif (!(item instanceof HTMLElement)) return;\n\t\t\tconst offset = dom.getElementOffset(item as HTMLElement, this.container);\n\t\t\tconst top = offset.top + e.offsetY;\n\n\t\t\tif (top < constants.LIST_AUTOSCROLL_TRESHOLD) {\n\t\t\t\tthis.startAutoscroll('up');\n\t\t\t} else if (this.container.clientHeight - top < constants.LIST_AUTOSCROLL_TRESHOLD) {\n\t\t\t\tthis.startAutoscroll('down');\n\t\t\t} else {\n\t\t\t\tthis.stopAutoscroll();\n\t\t\t}\n\t\t\t\n\t\t\tif (this.markedItem) this.markedItem.classList.remove('target-prev', 'target-next');\n\n\t\t\tlet targetIndex = item.index;\n\t\t\tif (e.offsetY > item.clientHeight / 2) {\n\t\t\t\tif (this.sortIndex > targetIndex) targetIndex++;\n\t\t\t\titem.classList.add('target-next');\n\t\t\t} else {\n\t\t\t\tif (this.sortIndex < targetIndex) targetIndex--;\n\t\t\t\titem.classList.add('target-prev');\n\t\t\t}\n\n\t\t\tthis.markedItem = item;\n\t\t\tthis.targetIndex = targetIndex;\n\t\t}\n\t}\n\t\n\tfirstUpdated() {\n\t\tsuper.firstUpdated();\n\t\tthis.container.addEventListener('mousedown', this._onMouseDown);\n\t\tthis.container.addEventListener('mousemove', this._onMouseMove);\n\t\tthis.container.addEventListener('mouseup', this._onMouseUp);\n\t}\n\t\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/core",
3
- "version": "0.6.85",
3
+ "version": "0.6.87",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Core components",
6
6
  "main": "./dist/index.js",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@fortawesome/fontawesome-svg-core": "6.4.2",
39
- "@omegagrid/localize": "^0.6.85",
39
+ "@omegagrid/localize": "^0.6.87",
40
40
  "@riovir/wc-fontawesome": "^0.1.9",
41
41
  "color": "^4.2.3",
42
42
  "date-fns": "^3.2.0",