@veltra/utils 1.6.1 → 1.6.3
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/dist/dom/position.js.map +1 -1
- package/package.json +10 -1
package/dist/dom/position.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","names":[],"sources":["../../src/dom/position.ts"],"sourcesContent":["/**\n * 获取可滚动的父级(纵向或横向可滚动均计入:overflow-x 容器如横向滚动条\n * 也是滚动父级,弹层需监听其 scroll 事件)\n * @param el 元素\n * @returns\n */\nexport function getScrollParents(el: HTMLElement): HTMLElement[] {\n const parents: HTMLElement[] = []\n let parent = el.parentElement\n while (parent) {\n if (parent.scrollHeight > parent.clientHeight || parent.scrollWidth > parent.clientWidth) {\n parents.push(parent)\n }\n\n parent = parent.parentElement\n }\n return parents\n}\n\n/**\n * 获取最近的可滚动父级(纵向或横向可滚动均计入)\n * @param el 元素\n * @returns 最近的可滚动父级\n */\nexport function getNearestScrollParent(el: HTMLElement): HTMLElement | null {\n let parent = el.parentElement\n while (parent) {\n if (parent.scrollHeight > parent.clientHeight || parent.scrollWidth > parent.clientWidth) {\n return parent\n }\n parent = parent.parentElement\n }\n return null\n}\n\ntype ScrollViewPosition = 'center' | 'start' | 'end'\n\n/**\n * 滚动元素到容器视图中\n * @description 用于替代 `el.scrollIntoView` 方法,因为 `el.scrollIntoView` 在某些情况下会导致外部元素滚动\n * @param el 元素\n * @param container 可滚动容器\n * @param options 滚动选项\n */\nexport function scrollIntoContainerView(\n el: HTMLElement,\n container: HTMLElement | null,\n options?: { block?: ScrollViewPosition; inline?: ScrollViewPosition }\n): void {\n container = container || getNearestScrollParent(el)\n if (!container) return\n\n const { block = 'center', inline = 'center' } = options || {}\n\n const {\n offsetTop: eOffsetTop,\n offsetLeft: eOffsetLeft,\n offsetHeight: eOffsetHeight,\n offsetWidth: eOffsetWidth\n } = el\n\n const {\n clientHeight: cClientHeight,\n clientWidth: cClientWidth,\n scrollTop: cScrollTop,\n scrollLeft: cScrollLeft\n } = container\n\n const isVerticalInView =\n cScrollTop + cClientHeight > eOffsetTop + eOffsetHeight && cScrollTop < eOffsetTop\n\n const isHorizontalInView =\n cScrollLeft + cClientWidth > eOffsetLeft + eOffsetWidth && cScrollLeft < eOffsetLeft\n\n // 垂直方向和水平方向都已经在视图中,则不进行滚动\n if (isVerticalInView && isHorizontalInView) return\n\n if (!isVerticalInView) {\n if (block === 'center') {\n container.scrollTop = eOffsetTop - cClientHeight / 2 + eOffsetHeight / 2\n } else if (block === 'start') {\n container.scrollTop = eOffsetTop\n } else if (block === 'end') {\n container.scrollTop = eOffsetTop - cClientHeight + eOffsetHeight\n }\n }\n\n if (!isHorizontalInView) {\n if (inline === 'center') {\n container.scrollLeft = eOffsetLeft - cClientWidth / 2 + eOffsetWidth / 2\n } else if (inline === 'start') {\n container.scrollLeft = eOffsetLeft\n } else if (inline === 'end') {\n container.scrollLeft = eOffsetLeft - cClientWidth + eOffsetWidth\n }\n }\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,iBAAiB,IAAgC;CAC/D,MAAM,UAAyB,CAAC;CAChC,IAAI,SAAS,GAAG;CAChB,OAAO,QAAQ;EACb,IAAI,OAAO,eAAe,OAAO,gBAAgB,OAAO,cAAc,OAAO,aAC3E,QAAQ,KAAK,MAAM;EAGrB,SAAS,OAAO;CAClB;CACA,OAAO;AACT;;;;;;AAOA,SAAgB,uBAAuB,IAAqC;CAC1E,IAAI,SAAS,GAAG;CAChB,OAAO,QAAQ;EACb,IAAI,OAAO,eAAe,OAAO,gBAAgB,OAAO,cAAc,OAAO,aAC3E,OAAO;EAET,SAAS,OAAO;CAClB;CACA,OAAO;AACT;;;;;;;;AAWA,SAAgB,wBACd,IACA,WACA,SACM;CACN,YAAY,aAAa,uBAAuB,EAAE;CAClD,IAAI,CAAC,WAAW;CAEhB,MAAM,EAAE,QAAQ,UAAU,SAAS,aAAa,WAAW,CAAC;CAE5D,MAAM,EACJ,WAAW,YACX,YAAY,aACZ,cAAc,eACd,aAAa,iBACX;CAEJ,MAAM,EACJ,cAAc,eACd,aAAa,cACb,WAAW,YACX,YAAY,gBACV;CAEJ,MAAM,mBACJ,aAAa,gBAAgB,aAAa,iBAAiB,aAAa;CAE1E,MAAM,qBACJ,cAAc,eAAe,cAAc,gBAAgB,cAAc;CAG3E,IAAI,oBAAoB,oBAAoB;CAE5C,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"position.js","names":[],"sources":["../../src/dom/position.ts"],"sourcesContent":["/**\n * 获取可滚动的父级(纵向或横向可滚动均计入:overflow-x 容器如横向滚动条\n * 也是滚动父级,弹层需监听其 scroll 事件)\n * @param el 元素\n * @returns\n */\nexport function getScrollParents(el: HTMLElement): HTMLElement[] {\n const parents: HTMLElement[] = []\n let parent = el.parentElement\n while (parent) {\n if (parent.scrollHeight > parent.clientHeight || parent.scrollWidth > parent.clientWidth) {\n parents.push(parent)\n }\n\n parent = parent.parentElement\n }\n return parents\n}\n\n/**\n * 获取最近的可滚动父级(纵向或横向可滚动均计入)\n * @param el 元素\n * @returns 最近的可滚动父级\n */\nexport function getNearestScrollParent(el: HTMLElement): HTMLElement | null {\n let parent = el.parentElement\n while (parent) {\n if (parent.scrollHeight > parent.clientHeight || parent.scrollWidth > parent.clientWidth) {\n return parent\n }\n parent = parent.parentElement\n }\n return null\n}\n\ntype ScrollViewPosition = 'center' | 'start' | 'end'\n\n/**\n * 滚动元素到容器视图中\n * @description 用于替代 `el.scrollIntoView` 方法,因为 `el.scrollIntoView` 在某些情况下会导致外部元素滚动\n * @param el 元素\n * @param container 可滚动容器\n * @param options 滚动选项\n */\nexport function scrollIntoContainerView(\n el: HTMLElement,\n container: HTMLElement | null,\n options?: { block?: ScrollViewPosition; inline?: ScrollViewPosition }\n): void {\n container = container || getNearestScrollParent(el)\n if (!container) return\n\n const { block = 'center', inline = 'center' } = options || {}\n\n const {\n offsetTop: eOffsetTop,\n offsetLeft: eOffsetLeft,\n offsetHeight: eOffsetHeight,\n offsetWidth: eOffsetWidth\n } = el\n\n const {\n clientHeight: cClientHeight,\n clientWidth: cClientWidth,\n scrollTop: cScrollTop,\n scrollLeft: cScrollLeft\n } = container\n\n const isVerticalInView =\n cScrollTop + cClientHeight > eOffsetTop + eOffsetHeight && cScrollTop < eOffsetTop\n\n const isHorizontalInView =\n cScrollLeft + cClientWidth > eOffsetLeft + eOffsetWidth && cScrollLeft < eOffsetLeft\n\n // 垂直方向和水平方向都已经在视图中,则不进行滚动\n if (isVerticalInView && isHorizontalInView) return\n\n if (!isVerticalInView) {\n if (block === 'center') {\n container.scrollTop = eOffsetTop - cClientHeight / 2 + eOffsetHeight / 2\n } else if (block === 'start') {\n container.scrollTop = eOffsetTop\n } else if (block === 'end') {\n container.scrollTop = eOffsetTop - cClientHeight + eOffsetHeight\n }\n }\n\n if (!isHorizontalInView) {\n if (inline === 'center') {\n container.scrollLeft = eOffsetLeft - cClientWidth / 2 + eOffsetWidth / 2\n } else if (inline === 'start') {\n container.scrollLeft = eOffsetLeft\n } else if (inline === 'end') {\n container.scrollLeft = eOffsetLeft - cClientWidth + eOffsetWidth\n }\n }\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,iBAAiB,IAAgC;CAC/D,MAAM,UAAyB,CAAC;CAChC,IAAI,SAAS,GAAG;CAChB,OAAO,QAAQ;EACb,IAAI,OAAO,eAAe,OAAO,gBAAgB,OAAO,cAAc,OAAO,aAC3E,QAAQ,KAAK,MAAM;EAGrB,SAAS,OAAO;CAClB;CACA,OAAO;AACT;;;;;;AAOA,SAAgB,uBAAuB,IAAqC;CAC1E,IAAI,SAAS,GAAG;CAChB,OAAO,QAAQ;EACb,IAAI,OAAO,eAAe,OAAO,gBAAgB,OAAO,cAAc,OAAO,aAC3E,OAAO;EAET,SAAS,OAAO;CAClB;CACA,OAAO;AACT;;;;;;;;AAWA,SAAgB,wBACd,IACA,WACA,SACM;CACN,YAAY,aAAa,uBAAuB,EAAE;CAClD,IAAI,CAAC,WAAW;CAEhB,MAAM,EAAE,QAAQ,UAAU,SAAS,aAAa,WAAW,CAAC;CAE5D,MAAM,EACJ,WAAW,YACX,YAAY,aACZ,cAAc,eACd,aAAa,iBACX;CAEJ,MAAM,EACJ,cAAc,eACd,aAAa,cACb,WAAW,YACX,YAAY,gBACV;CAEJ,MAAM,mBACJ,aAAa,gBAAgB,aAAa,iBAAiB,aAAa;CAE1E,MAAM,qBACJ,cAAc,eAAe,cAAc,gBAAgB,cAAc;CAG3E,IAAI,oBAAoB,oBAAoB;CAE5C,IAAI,CAAC,kBAAkB;EACrB,IAAI,UAAU,UACZ,UAAU,YAAY,aAAa,gBAAgB,IAAI,gBAAgB;OAClE,IAAI,UAAU,SACnB,UAAU,YAAY;OACjB,IAAI,UAAU,OACnB,UAAU,YAAY,aAAa,gBAAgB;CAEvD;CAEA,IAAI,CAAC,oBAAoB;EACvB,IAAI,WAAW,UACb,UAAU,aAAa,cAAc,eAAe,IAAI,eAAe;OAClE,IAAI,WAAW,SACpB,UAAU,aAAa;OAClB,IAAI,WAAW,OACpB,UAAU,aAAa,cAAc,eAAe;CAExD;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veltra/utils",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.3",
|
|
4
|
+
"homepage": "https://github.com/cabinet-fe/ultra-ui#readme",
|
|
5
|
+
"bugs": {
|
|
6
|
+
"url": "https://github.com/cabinet-fe/ultra-ui/issues"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/cabinet-fe/ultra-ui",
|
|
11
|
+
"directory": "packages/utils"
|
|
12
|
+
},
|
|
4
13
|
"files": [
|
|
5
14
|
"dist",
|
|
6
15
|
"src"
|