@dataloop-ai/components 0.17.109 → 0.17.111

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataloop-ai/components",
3
- "version": "0.17.109",
3
+ "version": "0.17.111",
4
4
  "exports": {
5
5
  ".": "./index.ts",
6
6
  "./models": "./models.ts",
@@ -41,7 +41,7 @@ export default defineComponent({
41
41
  default: 3
42
42
  }
43
43
  },
44
- emits: ['update:modelValue'],
44
+ emits: ['update:modelValue', 'layout-changed'],
45
45
  computed: {
46
46
  gridStyles(): object {
47
47
  return {
@@ -88,10 +88,14 @@ export default defineComponent({
88
88
  const htmlElement = element as HTMLElement
89
89
  htmlElement.style.order = `${orderIndex}`
90
90
  htmlElement.style.gridColumn = gridTemplate[orderIndex - 1]
91
- htmlElement.addEventListener('change-position', (e) => {
91
+ htmlElement.addEventListener('position-changing', (e) => {
92
92
  if (!isCustomEvent(e)) return
93
93
  this.changePosition(e)
94
94
  })
95
+ htmlElement.addEventListener(
96
+ 'position-changed',
97
+ this.layoutChanged.bind(this)
98
+ )
95
99
  })
96
100
  },
97
101
  changePosition(e: CustomEvent) {
@@ -123,7 +127,14 @@ export default defineComponent({
123
127
  side,
124
128
  this.maxElementsPerRow
125
129
  )
130
+ // Update modelValue is required to trigger visualization of the changes
126
131
  this.$emit('update:modelValue', newLayout)
132
+ if (e.detail.endDragging) {
133
+ this.layoutChanged()
134
+ }
135
+ },
136
+ layoutChanged() {
137
+ this.$emit('layout-changed', this.modelValue)
127
138
  }
128
139
  }
129
140
  })
@@ -128,13 +128,17 @@ export default defineComponent({
128
128
  const target = getElementAbove(e.target as HTMLElement, 'dl-widget')
129
129
  const change = {
130
130
  source: this.draggedWidget,
131
- target
131
+ target,
132
+ endDragging: true
132
133
  }
134
+ const wrapper = this.$refs.wrapper as HTMLElement
133
135
  if (target && this.draggedWidget) {
134
- const event = new CustomEvent('change-position', {
136
+ const event = new CustomEvent('position-changing', {
135
137
  detail: change
136
138
  })
137
- ;(this.$refs.wrapper as HTMLElement).dispatchEvent(event)
139
+ wrapper.dispatchEvent(event)
140
+ } else {
141
+ wrapper.dispatchEvent(new CustomEvent('position-changed'))
138
142
  }
139
143
  window.removeEventListener('mousemove', this.moveClone)
140
144
  window.removeEventListener('mouseup', this.stopDragging)
@@ -165,7 +169,7 @@ export default defineComponent({
165
169
  this.hoveredWidget,
166
170
  'widget-wrapper'
167
171
  )
168
- const event = new CustomEvent('change-position', {
172
+ const event = new CustomEvent('position-changing', {
169
173
  detail: {
170
174
  source: this.$refs.wrapper,
171
175
  target: targetWidget,
@@ -131,6 +131,13 @@ export default defineComponent({
131
131
  default: 'left',
132
132
  validator: (v: string) =>
133
133
  ['left', 'right', 'justify', 'center'].includes(v)
134
+ },
135
+ /**
136
+ * the % of the parent element that triggers the tooltips visibility
137
+ */
138
+ triggerPercentage: {
139
+ type: Number,
140
+ default: 1
134
141
  }
135
142
  },
136
143
  setup(props, { emit, attrs }) {
@@ -266,9 +273,10 @@ export default defineComponent({
266
273
  }
267
274
 
268
275
  function CheckAnchorElVisiblity(domElement: any) {
276
+ const intersectionRatio = props.triggerPercentage ?? 1
269
277
  return new Promise((resolve) => {
270
278
  const o = new IntersectionObserver(([entry]) => {
271
- resolve(entry.intersectionRatio === 1)
279
+ resolve(entry.intersectionRatio >= intersectionRatio)
272
280
  o.disconnect()
273
281
  })
274
282
  o.observe(domElement)