@elliemae/ds-tabs 1.56.0-rc.2 → 1.57.0-rc.10

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/cjs/Carousel.js CHANGED
@@ -3,8 +3,7 @@
3
3
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
4
  var React = require('react');
5
5
  var PropTypes = require('prop-types');
6
- var ChevronRight = require('@elliemae/ds-icons/ChevronRight');
7
- var ChevronLeft = require('@elliemae/ds-icons/ChevronLeft');
6
+ var dsIcons = require('@elliemae/ds-icons');
8
7
  var styled = require('styled-components');
9
8
  var DSButton = require('@elliemae/ds-button');
10
9
  var useResize = require('./useResize.js');
@@ -15,8 +14,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
15
14
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
16
15
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
16
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
18
- var ChevronRight__default = /*#__PURE__*/_interopDefaultLegacy(ChevronRight);
19
- var ChevronLeft__default = /*#__PURE__*/_interopDefaultLegacy(ChevronLeft);
20
17
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
21
18
  var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
22
19
 
@@ -168,7 +165,7 @@ var Carousel = function Carousel(_ref2) {
168
165
  buttonType: "link",
169
166
  innerRef: leftRef,
170
167
  size: "s",
171
- icon: /*#__PURE__*/React__default['default'].createElement(ChevronLeft__default['default'], {
168
+ icon: /*#__PURE__*/React__default['default'].createElement(dsIcons.ChevronLeft, {
172
169
  size: "s",
173
170
  color: ['brand-primary', '600']
174
171
  }),
@@ -180,7 +177,7 @@ var Carousel = function Carousel(_ref2) {
180
177
  right: true,
181
178
  size: "s",
182
179
  buttonType: "link",
183
- icon: /*#__PURE__*/React__default['default'].createElement(ChevronRight__default['default'], {
180
+ icon: /*#__PURE__*/React__default['default'].createElement(dsIcons.ChevronRight, {
184
181
  size: "s",
185
182
  color: ['brand-primary', '600']
186
183
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sources":["../../src/Carousel.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ChevronRight from '@elliemae/ds-icons/ChevronRight';\nimport ChevronLeft from '@elliemae/ds-icons/ChevronLeft';\nimport styled from 'styled-components';\nimport DSButton from '@elliemae/ds-button';\nimport { useResize } from './useResize';\n\nconst CarouselBtn = styled(DSButton)`\n position: absolute;\n z-index: 1;\n margin: 0;\n\n &:focus {\n & span {\n background-color: ${(props) => props.theme.colors.brand[200]};\n background-size: 90%;\n border-radius: 2px;\n border-color: transparent;\n }\n }\n\n && {\n width: 16px;\n // offset needed for svg gap caused by resizing icons and to\n // avoid covering blue active underline\n height: calc(100% - 2px);\n\n @media (min-width: ${({ theme }) => theme.breakpoints.medium}) {\n height: calc(100% - 4px);\n &:focus {\n & span {\n background-color: unset;\n }\n }\n }\n }\n ${(props) => (props.right ? 'right: 0;' : 'left: 0;')}\n\n && .em-ds-icon {\n height: 16px;\n width: 16px;\n }\n`;\n\nconst CarouselWrapper = styled.span`\n position: relative;\n padding: 0 16px;\n width: 100%;\n`;\n\nconst ChildrenWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n flex: 1;\n overflow: hidden;\n`;\n\nfunction isVisibleElement(el, container) {\n const rect = el.getBoundingClientRect();\n const cRect = container.getBoundingClientRect();\n const elemLeft = rect.left + 3;\n const elemRight = rect.right - 3;\n\n // Only completely visible elements return true:\n const isVisible = elemLeft >= cRect.left && elemRight <= cRect.right;\n return isVisible;\n}\n\nconst Carousel = ({ children, onScroll }) => {\n const itemsRef = useRef([]);\n const wrapRef = useRef(null);\n const leftRef = useRef(null);\n const rightRef = useRef(null);\n\n const shouldShowLeft = () =>\n children &&\n children[0] &&\n wrapRef.current &&\n itemsRef.current[0] &&\n !isVisibleElement(itemsRef.current[0], wrapRef.current);\n const shouldShowRight = () =>\n children &&\n children[children.length - 1] &&\n wrapRef.current &&\n itemsRef.current[children.length - 1] &&\n !isVisibleElement(itemsRef.current[children.length - 1], wrapRef.current);\n\n const [{ right, left, CHEVRON_FOCUS_FLAG }, setShow] = useState({\n right: false,\n left: false,\n CHEVRON_FOCUS_FLAG: false, // flag to replace lack of callback in useState hook\n });\n const recalcChevrons = () =>\n setShow({ right: shouldShowRight(), left: shouldShowLeft() });\n\n useEffect(() => {\n recalcChevrons();\n }, []);\n\n useEffect(() => {\n if (CHEVRON_FOCUS_FLAG) {\n // focus opposite chevron when current one hides\n if (!left && right && rightRef.current) {\n rightRef.current.focus();\n } else if (!right && left && leftRef.current) {\n leftRef.current.focus();\n }\n setShow({ right, left, CHEVRON_FOCUS_FLAG: false });\n }\n }, [CHEVRON_FOCUS_FLAG]);\n\n useResize(wrapRef, recalcChevrons);\n\n const getVisibleItemsOffset = () =>\n itemsRef.current.reduce((acc, c) => {\n if (isVisibleElement(c, wrapRef.current)) {\n const styles = window.getComputedStyle(c);\n const width = c.offsetWidth;\n const margin =\n parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n return acc + (width + margin);\n }\n return acc;\n }, 0);\n\n const rightClick = () => {\n wrapRef.current.scrollLeft += getVisibleItemsOffset();\n };\n\n const leftClick = () => {\n wrapRef.current.scrollLeft -= getVisibleItemsOffset();\n };\n\n const handleScroll = (e) => {\n // forces render when element.scrollTop is changed (out of react flow)\n setShow({\n right: shouldShowRight(),\n left: shouldShowLeft(),\n // to trigger focus logic at effect above\n CHEVRON_FOCUS_FLAG: true,\n });\n onScroll(e);\n };\n\n const handleClick = (e, onClick = () => {}) => {\n const tabListDomEl = wrapRef.current;\n const el = e.target;\n const rect = el.getBoundingClientRect();\n const cRect = tabListDomEl.getBoundingClientRect();\n\n if (!isVisibleElement(el, tabListDomEl)) {\n const containerWidth = cRect.width;\n const halfContainer = containerWidth / 2;\n const elementScrollPosition = rect.left - cRect.left;\n const positionInContainer = elementScrollPosition % containerWidth;\n const width = el.offsetWidth;\n\n // align to right\n if (positionInContainer > halfContainer) {\n wrapRef.current.scrollLeft +=\n width + positionInContainer - containerWidth;\n } else {\n // align left\n wrapRef.current.scrollLeft += positionInContainer;\n }\n recalcChevrons();\n }\n onClick(e);\n };\n\n return (\n <CarouselWrapper>\n {left && (\n <CarouselBtn\n data-testid=\"chevron-left\"\n buttonType=\"link\"\n innerRef={leftRef}\n size=\"s\"\n icon={<ChevronLeft size=\"s\" color={['brand-primary', '600']} />}\n onClick={leftClick}\n tabIndex={-1}\n />\n )}\n {right && (\n <CarouselBtn\n data-testid=\"chevron-right\"\n innerRef={rightRef}\n right\n size=\"s\"\n buttonType=\"link\"\n icon={<ChevronRight size=\"s\" color={['brand-primary', '600']} />}\n onClick={rightClick}\n tabIndex={-1}\n />\n )}\n <ChildrenWrap onScroll={handleScroll} ref={wrapRef}>\n {React.Children.map(children, (child, idx) =>\n React.cloneElement(child, {\n onClick: (e) => handleClick(e, child.props?.onClick),\n key: 'carousel'.concat(idx),\n ref: (el) => {\n itemsRef.current[idx] = el;\n // keep old refs\n if (typeof child.ref === 'function') {\n child.ref(el);\n }\n },\n }),\n )}\n </ChildrenWrap>\n </CarouselWrapper>\n );\n};\n\nCarousel.defaultProps = {\n onScroll: () => null,\n};\n\nCarousel.propTypes = {\n children: PropTypes.arrayOf(PropTypes.element).isRequired,\n onScroll: PropTypes.func,\n};\n\nexport default Carousel;\n"],"names":["CarouselBtn","styled","DSButton","props","theme","colors","brand","breakpoints","medium","right","CarouselWrapper","span","ChildrenWrap","div","isVisibleElement","el","container","rect","getBoundingClientRect","cRect","elemLeft","left","elemRight","isVisible","Carousel","children","onScroll","itemsRef","useRef","wrapRef","leftRef","rightRef","shouldShowLeft","current","shouldShowRight","length","useState","CHEVRON_FOCUS_FLAG","setShow","recalcChevrons","useEffect","focus","useResize","getVisibleItemsOffset","reduce","acc","c","styles","window","getComputedStyle","width","offsetWidth","margin","parseFloat","marginLeft","marginRight","rightClick","scrollLeft","leftClick","handleScroll","e","handleClick","onClick","tabListDomEl","target","containerWidth","halfContainer","elementScrollPosition","positionInContainer","React","ChevronLeft","ChevronRight","Children","map","child","idx","cloneElement","key","concat","ref","defaultProps","propTypes","PropTypes","arrayOf","element","isRequired","func"],"mappings":"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"}
1
+ {"version":3,"file":"Carousel.js","sources":["../../src/Carousel.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ChevronRight, ChevronLeft } from '@elliemae/ds-icons';\nimport styled from 'styled-components';\nimport DSButton from '@elliemae/ds-button';\nimport { useResize } from './useResize';\n\nconst CarouselBtn = styled(DSButton)`\n position: absolute;\n z-index: 1;\n margin: 0;\n\n &:focus {\n & span {\n background-color: ${(props) => props.theme.colors.brand[200]};\n background-size: 90%;\n border-radius: 2px;\n border-color: transparent;\n }\n }\n\n && {\n width: 16px;\n // offset needed for svg gap caused by resizing icons and to\n // avoid covering blue active underline\n height: calc(100% - 2px);\n\n @media (min-width: ${({ theme }) => theme.breakpoints.medium}) {\n height: calc(100% - 4px);\n &:focus {\n & span {\n background-color: unset;\n }\n }\n }\n }\n ${(props) => (props.right ? 'right: 0;' : 'left: 0;')}\n\n && .em-ds-icon {\n height: 16px;\n width: 16px;\n }\n`;\n\nconst CarouselWrapper = styled.span`\n position: relative;\n padding: 0 16px;\n width: 100%;\n`;\n\nconst ChildrenWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n flex: 1;\n overflow: hidden;\n`;\n\nfunction isVisibleElement(el, container) {\n const rect = el.getBoundingClientRect();\n const cRect = container.getBoundingClientRect();\n const elemLeft = rect.left + 3;\n const elemRight = rect.right - 3;\n\n // Only completely visible elements return true:\n const isVisible = elemLeft >= cRect.left && elemRight <= cRect.right;\n return isVisible;\n}\n\nconst Carousel = ({ children, onScroll }) => {\n const itemsRef = useRef([]);\n const wrapRef = useRef(null);\n const leftRef = useRef(null);\n const rightRef = useRef(null);\n\n const shouldShowLeft = () =>\n children &&\n children[0] &&\n wrapRef.current &&\n itemsRef.current[0] &&\n !isVisibleElement(itemsRef.current[0], wrapRef.current);\n const shouldShowRight = () =>\n children &&\n children[children.length - 1] &&\n wrapRef.current &&\n itemsRef.current[children.length - 1] &&\n !isVisibleElement(itemsRef.current[children.length - 1], wrapRef.current);\n\n const [{ right, left, CHEVRON_FOCUS_FLAG }, setShow] = useState({\n right: false,\n left: false,\n CHEVRON_FOCUS_FLAG: false, // flag to replace lack of callback in useState hook\n });\n const recalcChevrons = () => setShow({ right: shouldShowRight(), left: shouldShowLeft() });\n\n useEffect(() => {\n recalcChevrons();\n }, []);\n\n useEffect(() => {\n if (CHEVRON_FOCUS_FLAG) {\n // focus opposite chevron when current one hides\n if (!left && right && rightRef.current) {\n rightRef.current.focus();\n } else if (!right && left && leftRef.current) {\n leftRef.current.focus();\n }\n setShow({ right, left, CHEVRON_FOCUS_FLAG: false });\n }\n }, [CHEVRON_FOCUS_FLAG]);\n\n useResize(wrapRef, recalcChevrons);\n\n const getVisibleItemsOffset = () =>\n itemsRef.current.reduce((acc, c) => {\n if (isVisibleElement(c, wrapRef.current)) {\n const styles = window.getComputedStyle(c);\n const width = c.offsetWidth;\n const margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n return acc + (width + margin);\n }\n return acc;\n }, 0);\n\n const rightClick = () => {\n wrapRef.current.scrollLeft += getVisibleItemsOffset();\n };\n\n const leftClick = () => {\n wrapRef.current.scrollLeft -= getVisibleItemsOffset();\n };\n\n const handleScroll = (e) => {\n // forces render when element.scrollTop is changed (out of react flow)\n setShow({\n right: shouldShowRight(),\n left: shouldShowLeft(),\n // to trigger focus logic at effect above\n CHEVRON_FOCUS_FLAG: true,\n });\n onScroll(e);\n };\n\n const handleClick = (e, onClick = () => {}) => {\n const tabListDomEl = wrapRef.current;\n const el = e.target;\n const rect = el.getBoundingClientRect();\n const cRect = tabListDomEl.getBoundingClientRect();\n\n if (!isVisibleElement(el, tabListDomEl)) {\n const containerWidth = cRect.width;\n const halfContainer = containerWidth / 2;\n const elementScrollPosition = rect.left - cRect.left;\n const positionInContainer = elementScrollPosition % containerWidth;\n const width = el.offsetWidth;\n\n // align to right\n if (positionInContainer > halfContainer) {\n wrapRef.current.scrollLeft += width + positionInContainer - containerWidth;\n } else {\n // align left\n wrapRef.current.scrollLeft += positionInContainer;\n }\n recalcChevrons();\n }\n onClick(e);\n };\n\n return (\n <CarouselWrapper>\n {left && (\n <CarouselBtn\n data-testid=\"chevron-left\"\n buttonType=\"link\"\n innerRef={leftRef}\n size=\"s\"\n icon={<ChevronLeft size=\"s\" color={['brand-primary', '600']} />}\n onClick={leftClick}\n tabIndex={-1}\n />\n )}\n {right && (\n <CarouselBtn\n data-testid=\"chevron-right\"\n innerRef={rightRef}\n right\n size=\"s\"\n buttonType=\"link\"\n icon={<ChevronRight size=\"s\" color={['brand-primary', '600']} />}\n onClick={rightClick}\n tabIndex={-1}\n />\n )}\n <ChildrenWrap onScroll={handleScroll} ref={wrapRef}>\n {React.Children.map(children, (child, idx) =>\n React.cloneElement(child, {\n onClick: (e) => handleClick(e, child.props?.onClick),\n key: 'carousel'.concat(idx),\n ref: (el) => {\n itemsRef.current[idx] = el;\n // keep old refs\n if (typeof child.ref === 'function') {\n child.ref(el);\n }\n },\n }),\n )}\n </ChildrenWrap>\n </CarouselWrapper>\n );\n};\n\nCarousel.defaultProps = {\n onScroll: () => null,\n};\n\nCarousel.propTypes = {\n children: PropTypes.arrayOf(PropTypes.element).isRequired,\n onScroll: PropTypes.func,\n};\n\nexport default Carousel;\n"],"names":["CarouselBtn","styled","DSButton","props","theme","colors","brand","breakpoints","medium","right","CarouselWrapper","span","ChildrenWrap","div","isVisibleElement","el","container","rect","getBoundingClientRect","cRect","elemLeft","left","elemRight","isVisible","Carousel","children","onScroll","itemsRef","useRef","wrapRef","leftRef","rightRef","shouldShowLeft","current","shouldShowRight","length","useState","CHEVRON_FOCUS_FLAG","setShow","recalcChevrons","useEffect","focus","useResize","getVisibleItemsOffset","reduce","acc","c","styles","window","getComputedStyle","width","offsetWidth","margin","parseFloat","marginLeft","marginRight","rightClick","scrollLeft","leftClick","handleScroll","e","handleClick","onClick","tabListDomEl","target","containerWidth","halfContainer","elementScrollPosition","positionInContainer","React","ChevronLeft","ChevronRight","Children","map","child","idx","cloneElement","key","concat","ref","defaultProps","propTypes","PropTypes","arrayOf","element","isRequired","func"],"mappings":";;;;;;;;;;;;;;;;;;;AAQA,IAAMA,WAAW,gBAAGC,0BAAM,CAACC,4BAAD,CAAT;AAAA;AAAA,gUAOS,UAACC,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CAPT,EAoBQ;AAAA,MAAGF,KAAH,QAAGA,KAAH;AAAA,SAAeA,KAAK,CAACG,WAAN,CAAkBC,MAAjC;AAAA,CApBR,EA6Bb,UAACL,KAAD;AAAA,SAAYA,KAAK,CAACM,KAAN,GAAc,WAAd,GAA4B,UAAxC;AAAA,CA7Ba,CAAjB;AAqCA,IAAMC,eAAe,gBAAGT,0BAAM,CAACU,IAAV;AAAA;AAAA,oDAArB;AAMA,IAAMC,YAAY,gBAAGX,0BAAM,CAACY,GAAV;AAAA;AAAA,6DAAlB;;AAOA,SAASC,gBAAT,CAA0BC,EAA1B,EAA8BC,SAA9B,EAAyC;AACvC,MAAMC,IAAI,GAAGF,EAAE,CAACG,qBAAH,EAAb;AACA,MAAMC,KAAK,GAAGH,SAAS,CAACE,qBAAV,EAAd;AACA,MAAME,QAAQ,GAAGH,IAAI,CAACI,IAAL,GAAY,CAA7B;AACA,MAAMC,SAAS,GAAGL,IAAI,CAACR,KAAL,GAAa,CAA/B,CAJuC;;AAOvC,MAAMc,SAAS,GAAGH,QAAQ,IAAID,KAAK,CAACE,IAAlB,IAA0BC,SAAS,IAAIH,KAAK,CAACV,KAA/D;AACA,SAAOc,SAAP;AACD;;IAEKC,QAAQ,GAAG,SAAXA,QAAW,QAA4B;AAAA,MAAzBC,QAAyB,SAAzBA,QAAyB;AAAA,MAAfC,QAAe,SAAfA,QAAe;AAC3C,MAAMC,QAAQ,GAAGC,YAAM,CAAC,EAAD,CAAvB;AACA,MAAMC,OAAO,GAAGD,YAAM,CAAC,IAAD,CAAtB;AACA,MAAME,OAAO,GAAGF,YAAM,CAAC,IAAD,CAAtB;AACA,MAAMG,QAAQ,GAAGH,YAAM,CAAC,IAAD,CAAvB;;AAEA,MAAMI,cAAc,GAAG,SAAjBA,cAAiB;AAAA,WACrBP,QAAQ,IACRA,QAAQ,CAAC,CAAD,CADR,IAEAI,OAAO,CAACI,OAFR,IAGAN,QAAQ,CAACM,OAAT,CAAiB,CAAjB,CAHA,IAIA,CAACnB,gBAAgB,CAACa,QAAQ,CAACM,OAAT,CAAiB,CAAjB,CAAD,EAAsBJ,OAAO,CAACI,OAA9B,CALI;AAAA,GAAvB;;AAMA,MAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,WACtBT,QAAQ,IACRA,QAAQ,CAACA,QAAQ,CAACU,MAAT,GAAkB,CAAnB,CADR,IAEAN,OAAO,CAACI,OAFR,IAGAN,QAAQ,CAACM,OAAT,CAAiBR,QAAQ,CAACU,MAAT,GAAkB,CAAnC,CAHA,IAIA,CAACrB,gBAAgB,CAACa,QAAQ,CAACM,OAAT,CAAiBR,QAAQ,CAACU,MAAT,GAAkB,CAAnC,CAAD,EAAwCN,OAAO,CAACI,OAAhD,CALK;AAAA,GAAxB;;AAOA,kBAAuDG,cAAQ,CAAC;AAC9D3B,IAAAA,KAAK,EAAE,KADuD;AAE9DY,IAAAA,IAAI,EAAE,KAFwD;AAG9DgB,IAAAA,kBAAkB,EAAE,KAH0C;;AAAA,GAAD,CAA/D;AAAA;AAAA;AAAA,MAAS5B,KAAT,eAASA,KAAT;AAAA,MAAgBY,IAAhB,eAAgBA,IAAhB;AAAA,MAAsBgB,kBAAtB,eAAsBA,kBAAtB;AAAA,MAA4CC,OAA5C;;AAKA,MAAMC,cAAc,GAAG,SAAjBA,cAAiB;AAAA,WAAMD,OAAO,CAAC;AAAE7B,MAAAA,KAAK,EAAEyB,eAAe,EAAxB;AAA4Bb,MAAAA,IAAI,EAAEW,cAAc;AAAhD,KAAD,CAAb;AAAA,GAAvB;;AAEAQ,EAAAA,eAAS,CAAC,YAAM;AACdD,IAAAA,cAAc;AACf,GAFQ,EAEN,EAFM,CAAT;AAIAC,EAAAA,eAAS,CAAC,YAAM;AACd,QAAIH,kBAAJ,EAAwB;AACtB;AACA,UAAI,CAAChB,IAAD,IAASZ,KAAT,IAAkBsB,QAAQ,CAACE,OAA/B,EAAwC;AACtCF,QAAAA,QAAQ,CAACE,OAAT,CAAiBQ,KAAjB;AACD,OAFD,MAEO,IAAI,CAAChC,KAAD,IAAUY,IAAV,IAAkBS,OAAO,CAACG,OAA9B,EAAuC;AAC5CH,QAAAA,OAAO,CAACG,OAAR,CAAgBQ,KAAhB;AACD;;AACDH,MAAAA,OAAO,CAAC;AAAE7B,QAAAA,KAAK,EAALA,KAAF;AAASY,QAAAA,IAAI,EAAJA,IAAT;AAAegB,QAAAA,kBAAkB,EAAE;AAAnC,OAAD,CAAP;AACD;AACF,GAVQ,EAUN,CAACA,kBAAD,CAVM,CAAT;AAYAK,EAAAA,mBAAS,CAACb,OAAD,EAAUU,cAAV,CAAT;;AAEA,MAAMI,qBAAqB,GAAG,SAAxBA,qBAAwB;AAAA,WAC5BhB,QAAQ,CAACM,OAAT,CAAiBW,MAAjB,CAAwB,UAACC,GAAD,EAAMC,CAAN,EAAY;AAClC,UAAIhC,gBAAgB,CAACgC,CAAD,EAAIjB,OAAO,CAACI,OAAZ,CAApB,EAA0C;AACxC,YAAMc,MAAM,GAAGC,MAAM,CAACC,gBAAP,CAAwBH,CAAxB,CAAf;AACA,YAAMI,KAAK,GAAGJ,CAAC,CAACK,WAAhB;AACA,YAAMC,MAAM,GAAGC,UAAU,CAACN,MAAM,CAACO,UAAR,CAAV,GAAgCD,UAAU,CAACN,MAAM,CAACQ,WAAR,CAAzD;AACA,eAAOV,GAAG,IAAIK,KAAK,GAAGE,MAAZ,CAAV;AACD;;AACD,aAAOP,GAAP;AACD,KARD,EAQG,CARH,CAD4B;AAAA,GAA9B;;AAWA,MAAMW,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB3B,IAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8Bd,qBAAqB,EAAnD;AACD,GAFD;;AAIA,MAAMe,SAAS,GAAG,SAAZA,SAAY,GAAM;AACtB7B,IAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8Bd,qBAAqB,EAAnD;AACD,GAFD;;AAIA,MAAMgB,YAAY,GAAG,SAAfA,YAAe,CAACC,CAAD,EAAO;AAC1B;AACAtB,IAAAA,OAAO,CAAC;AACN7B,MAAAA,KAAK,EAAEyB,eAAe,EADhB;AAENb,MAAAA,IAAI,EAAEW,cAAc,EAFd;AAGN;AACAK,MAAAA,kBAAkB,EAAE;AAJd,KAAD,CAAP;AAMAX,IAAAA,QAAQ,CAACkC,CAAD,CAAR;AACD,GATD;;AAWA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACD,CAAD,EAA2B;AAAA,QAAvBE,OAAuB,uEAAb,YAAM,EAAO;AAC7C,QAAMC,YAAY,GAAGlC,OAAO,CAACI,OAA7B;AACA,QAAMlB,EAAE,GAAG6C,CAAC,CAACI,MAAb;AACA,QAAM/C,IAAI,GAAGF,EAAE,CAACG,qBAAH,EAAb;AACA,QAAMC,KAAK,GAAG4C,YAAY,CAAC7C,qBAAb,EAAd;;AAEA,QAAI,CAACJ,gBAAgB,CAACC,EAAD,EAAKgD,YAAL,CAArB,EAAyC;AACvC,UAAME,cAAc,GAAG9C,KAAK,CAAC+B,KAA7B;AACA,UAAMgB,aAAa,GAAGD,cAAc,GAAG,CAAvC;AACA,UAAME,qBAAqB,GAAGlD,IAAI,CAACI,IAAL,GAAYF,KAAK,CAACE,IAAhD;AACA,UAAM+C,mBAAmB,GAAGD,qBAAqB,GAAGF,cAApD;AACA,UAAMf,KAAK,GAAGnC,EAAE,CAACoC,WAAjB,CALuC;;AAQvC,UAAIiB,mBAAmB,GAAGF,aAA1B,EAAyC;AACvCrC,QAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8BP,KAAK,GAAGkB,mBAAR,GAA8BH,cAA5D;AACD,OAFD,MAEO;AACL;AACApC,QAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8BW,mBAA9B;AACD;;AACD7B,MAAAA,cAAc;AACf;;AACDuB,IAAAA,OAAO,CAACF,CAAD,CAAP;AACD,GAvBD;;AAyBA,sBACES,wCAAC,eAAD,QACGhD,IAAI,iBACHgD,wCAAC,WAAD;AACE,mBAAY,cADd;AAEE,IAAA,UAAU,EAAC,MAFb;AAGE,IAAA,QAAQ,EAAEvC,OAHZ;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,IAAI,eAAEuC,wCAACC,mBAAD;AAAa,MAAA,IAAI,EAAC,GAAlB;AAAsB,MAAA,KAAK,EAAE,CAAC,eAAD,EAAkB,KAAlB;AAA7B,MALR;AAME,IAAA,OAAO,EAAEZ,SANX;AAOE,IAAA,QAAQ,EAAE,CAAC;AAPb,IAFJ,EAYGjD,KAAK,iBACJ4D,wCAAC,WAAD;AACE,mBAAY,eADd;AAEE,IAAA,QAAQ,EAAEtC,QAFZ;AAGE,IAAA,KAAK,MAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,UAAU,EAAC,MALb;AAME,IAAA,IAAI,eAAEsC,wCAACE,oBAAD;AAAc,MAAA,IAAI,EAAC,GAAnB;AAAuB,MAAA,KAAK,EAAE,CAAC,eAAD,EAAkB,KAAlB;AAA9B,MANR;AAOE,IAAA,OAAO,EAAEf,UAPX;AAQE,IAAA,QAAQ,EAAE,CAAC;AARb,IAbJ,eAwBEa,wCAAC,YAAD;AAAc,IAAA,QAAQ,EAAEV,YAAxB;AAAsC,IAAA,GAAG,EAAE9B;AAA3C,KACGwC,yBAAK,CAACG,QAAN,CAAeC,GAAf,CAAmBhD,QAAnB,EAA6B,UAACiD,KAAD,EAAQC,GAAR;AAAA,wBAC5BN,yBAAK,CAACO,YAAN,CAAmBF,KAAnB,EAA0B;AACxBZ,MAAAA,OAAO,EAAE,iBAACF,CAAD;AAAA;;AAAA,eAAOC,WAAW,CAACD,CAAD,kBAAIc,KAAK,CAACvE,KAAV,iDAAI,aAAa2D,OAAjB,CAAlB;AAAA,OADe;AAExBe,MAAAA,GAAG,EAAE,WAAWC,MAAX,CAAkBH,GAAlB,CAFmB;AAGxBI,MAAAA,GAAG,EAAE,aAAChE,EAAD,EAAQ;AACXY,QAAAA,QAAQ,CAACM,OAAT,CAAiB0C,GAAjB,IAAwB5D,EAAxB,CADW;;AAGX,YAAI,OAAO2D,KAAK,CAACK,GAAb,KAAqB,UAAzB,EAAqC;AACnCL,UAAAA,KAAK,CAACK,GAAN,CAAUhE,EAAV;AACD;AACF;AATuB,KAA1B,CAD4B;AAAA,GAA7B,CADH,CAxBF,CADF;AA0CD;;AAEDS,QAAQ,CAACwD,YAAT,GAAwB;AACtBtD,EAAAA,QAAQ,EAAE;AAAA,WAAM,IAAN;AAAA;AADY,CAAxB;AAIAF,QAAQ,CAACyD,SAAT,GAAqB;AACnBxD,EAAAA,QAAQ,EAAEyD,6BAAS,CAACC,OAAV,CAAkBD,6BAAS,CAACE,OAA5B,EAAqCC,UAD5B;AAEnB3D,EAAAA,QAAQ,EAAEwD,6BAAS,CAACI;AAFD,CAArB;;;;"}
package/cjs/DSTabs.js CHANGED
@@ -29,8 +29,7 @@ require('@elliemae/ds-form/RequiredMark');
29
29
  require('resize-observer');
30
30
  require('styled-components');
31
31
  require('./Carousel.js');
32
- require('@elliemae/ds-icons/ChevronRight');
33
- require('@elliemae/ds-icons/ChevronLeft');
32
+ require('@elliemae/ds-icons');
34
33
  require('@elliemae/ds-button');
35
34
  require('./useResize.js');
36
35
  require('./SubTabBar.js');
package/cjs/DSTabs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"DSTabs.js","sources":["../../src/DSTabs.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport { TabTypes } from './TabTypes';\nimport TabsImpl from './TabsImpl';\nimport DSTab from './DSTab';\n\nconst DSTabs = ({\n containerProps = {},\n innerRef,\n animated = true,\n enableMouseEvents = false,\n allowTextSelection = false,\n onTabChange = () => null,\n tabsListAriaLabel = 'Tab list',\n type = TabTypes.NORMAL,\n tabBarExtraContent = undefined,\n children: tabs,\n onlyRenderActiveTab = false,\n activeTab,\n withCarousel = false,\n firstSubtabRef,\n lastTabRef,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile = false,\n}) => (\n <TabsImpl\n activeTab={activeTab}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRef}\n allowTextSelection={allowTextSelection}\n animated={animated}\n containerProps={containerProps}\n enableMouseEvents={enableMouseEvents}\n innerRef={innerRef}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={onTabChange}\n tabBarExtraContent={tabBarExtraContent}\n tabsListAriaLabel={tabsListAriaLabel}\n type={type}\n withCarousel={withCarousel}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n isDSMobile={isDSMobile}\n >\n {tabs}\n </TabsImpl>\n);\n\nconst props = {\n /** Whether the tab transition should animate or not */\n animated: PropTypes.bool.description(\n 'Whether the tab transition should animate or not',\n ),\n /** Enables tab transition with mouse drag events */\n enableMouseEvents: PropTypes.bool.description(\n 'Enables tab transition with mouse drag events',\n ),\n /** Allow text selection when mouse drag events are active */\n allowTextSelection: PropTypes.bool.description(\n 'Allow text selection when mouse drag events are active',\n ),\n /** Handler when a user clicks on a different tab */\n onTabChange: PropTypes.func.description(\n 'Handler when a user clicks on a different tab',\n ),\n /** Tab type */\n type: PropTypes.oneOf(['normal', 'subtabs']).description('Tab type'),\n /** Extra content next to the tabs pills */\n tabBarExtraContent: PropTypes.element.description(\n 'Extra content next to the tabs pills',\n ),\n /** Only renders the active tab in the DOM */\n onlyRenderActiveTab: PropTypes.bool.description(\n 'Only renders the active tab in the DOM',\n ),\n /** Mobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool.description(\n 'Mobile only flexible tabs mode',\n ),\n /** Mobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool.description('Mobile only fixed tabs mode'),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool.description(\n \"Whether or not it's a ds-tab from DSMobile tabs\",\n ),\n /** Activate carousel behavior */\n withCarousel: PropTypes.bool.description('Activate carousel behavior'),\n /** The active tabId */\n activeTab: PropTypes.string.description('The active tabId'),\n /** tabs children */\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.instanceOf([\n PropTypes.instanceOf(DSTab),\n PropTypes.array,\n ]),\n }),\n ).isRequired.description('tabs children'),\n /** Aria label for the list */\n tabsListAriaLabel: PropTypes.string.description('Aria label for the list'),\n /** Additional properties for the container */\n containerProps: PropTypes.object.description(\n 'Additional properties for the container',\n ),\n /** REF */\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('REF'),\n /** internal ref to handle keyboard a11y behavior */\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n /** internal ref to handle keyboard a11y behavior */\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n};\n\nDSTabs.propTypes = props;\nconst DSTabsWithSchema = describe(DSTabs);\nDSTabsWithSchema.propTypes = props;\n\nexport { DSTabs, DSTabsWithSchema };\nexport default DSTabs;\n"],"names":["DSTabs","containerProps","innerRef","animated","enableMouseEvents","allowTextSelection","onTabChange","tabsListAriaLabel","type","TabTypes","NORMAL","tabBarExtraContent","undefined","tabs","children","onlyRenderActiveTab","activeTab","withCarousel","firstSubtabRef","lastTabRef","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","React","props","PropTypes","bool","description","func","oneOf","element","string","arrayOf","shape","instanceOf","DSTab","array","isRequired","object","oneOfType","current","any","propTypes","DSTabsWithSchema","describe"],"mappings":"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"}
1
+ {"version":3,"file":"DSTabs.js","sources":["../../src/DSTabs.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport { TabTypes } from './TabTypes';\nimport TabsImpl from './TabsImpl';\nimport DSTab from './DSTab';\n\nconst DSTabs = ({\n containerProps = {},\n innerRef,\n animated = true,\n enableMouseEvents = false,\n allowTextSelection = false,\n onTabChange = () => null,\n tabsListAriaLabel = 'Tab list',\n type = TabTypes.NORMAL,\n tabBarExtraContent = undefined,\n children: tabs,\n onlyRenderActiveTab = false,\n activeTab,\n withCarousel = false,\n firstSubtabRef,\n lastTabRef,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile = false,\n}) => (\n <TabsImpl\n activeTab={activeTab}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRef}\n allowTextSelection={allowTextSelection}\n animated={animated}\n containerProps={containerProps}\n enableMouseEvents={enableMouseEvents}\n innerRef={innerRef}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={onTabChange}\n tabBarExtraContent={tabBarExtraContent}\n tabsListAriaLabel={tabsListAriaLabel}\n type={type}\n withCarousel={withCarousel}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n isDSMobile={isDSMobile}\n >\n {tabs}\n </TabsImpl>\n);\n\nconst props = {\n /** Whether the tab transition should animate or not */\n animated: PropTypes.bool.description(\n 'Whether the tab transition should animate or not',\n ),\n /** Enables tab transition with mouse drag events */\n enableMouseEvents: PropTypes.bool.description(\n 'Enables tab transition with mouse drag events',\n ),\n /** Allow text selection when mouse drag events are active */\n allowTextSelection: PropTypes.bool.description(\n 'Allow text selection when mouse drag events are active',\n ),\n /** Handler when a user clicks on a different tab */\n onTabChange: PropTypes.func.description(\n 'Handler when a user clicks on a different tab',\n ),\n /** Tab type */\n type: PropTypes.oneOf(['normal', 'subtabs']).description('Tab type'),\n /** Extra content next to the tabs pills */\n tabBarExtraContent: PropTypes.element.description(\n 'Extra content next to the tabs pills',\n ),\n /** Only renders the active tab in the DOM */\n onlyRenderActiveTab: PropTypes.bool.description(\n 'Only renders the active tab in the DOM',\n ),\n /** Mobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool.description(\n 'Mobile only flexible tabs mode',\n ),\n /** Mobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool.description('Mobile only fixed tabs mode'),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool.description(\n \"Whether or not it's a ds-tab from DSMobile tabs\",\n ),\n /** Activate carousel behavior */\n withCarousel: PropTypes.bool.description('Activate carousel behavior'),\n /** The active tabId */\n activeTab: PropTypes.string.description('The active tabId'),\n /** tabs children */\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.instanceOf([\n PropTypes.instanceOf(DSTab),\n PropTypes.array,\n ]),\n }),\n ).isRequired.description('tabs children'),\n /** Aria label for the list */\n tabsListAriaLabel: PropTypes.string.description('Aria label for the list'),\n /** Additional properties for the container */\n containerProps: PropTypes.object.description(\n 'Additional properties for the container',\n ),\n /** REF */\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('REF'),\n /** internal ref to handle keyboard a11y behavior */\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n /** internal ref to handle keyboard a11y behavior */\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n};\n\nDSTabs.propTypes = props;\nconst DSTabsWithSchema = describe(DSTabs);\nDSTabsWithSchema.propTypes = props;\n\nexport { DSTabs, DSTabsWithSchema };\nexport default DSTabs;\n"],"names":["DSTabs","containerProps","innerRef","animated","enableMouseEvents","allowTextSelection","onTabChange","tabsListAriaLabel","type","TabTypes","NORMAL","tabBarExtraContent","undefined","tabs","children","onlyRenderActiveTab","activeTab","withCarousel","firstSubtabRef","lastTabRef","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","React","props","PropTypes","bool","description","func","oneOf","element","string","arrayOf","shape","instanceOf","DSTab","array","isRequired","object","oneOfType","current","any","propTypes","DSTabsWithSchema","describe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;IAOMA,MAAM,GAAG,SAATA,MAAS;AAAA,iCACbC,cADa;AAAA,MACbA,cADa,oCACI,EADJ;AAAA,MAEbC,QAFa,QAEbA,QAFa;AAAA,2BAGbC,QAHa;AAAA,MAGbA,QAHa,8BAGF,IAHE;AAAA,mCAIbC,iBAJa;AAAA,MAIbA,iBAJa,sCAIO,KAJP;AAAA,mCAKbC,kBALa;AAAA,MAKbA,kBALa,sCAKQ,KALR;AAAA,8BAMbC,WANa;AAAA,MAMbA,WANa,iCAMC;AAAA,WAAM,IAAN;AAAA,GAND;AAAA,mCAObC,iBAPa;AAAA,MAObA,iBAPa,sCAOO,UAPP;AAAA,uBAQbC,IARa;AAAA,MAQbA,IARa,0BAQNC,iBAAQ,CAACC,MARH;AAAA,mCASbC,kBATa;AAAA,MASbA,kBATa,sCASQC,SATR;AAAA,MAUHC,IAVG,QAUbC,QAVa;AAAA,mCAWbC,mBAXa;AAAA,MAWbA,mBAXa,sCAWS,KAXT;AAAA,MAYbC,SAZa,QAYbA,SAZa;AAAA,+BAabC,YAba;AAAA,MAabA,YAba,kCAaE,KAbF;AAAA,MAcbC,cAda,QAcbA,cAda;AAAA,MAebC,UAfa,QAebA,UAfa;AAAA,MAgBbC,mBAhBa,QAgBbA,mBAhBa;AAAA,MAiBbC,gBAjBa,QAiBbA,gBAjBa;AAAA,6BAkBbC,UAlBa;AAAA,MAkBbA,UAlBa,gCAkBA,KAlBA;AAAA,sBAoBbC,wCAAC,QAAD;AACE,IAAA,SAAS,EAAEP,SADb;AAEE,IAAA,cAAc,EAAEE,cAFlB;AAGE,IAAA,UAAU,EAAEC,UAHd;AAIE,IAAA,kBAAkB,EAAEd,kBAJtB;AAKE,IAAA,QAAQ,EAAEF,QALZ;AAME,IAAA,cAAc,EAAEF,cANlB;AAOE,IAAA,iBAAiB,EAAEG,iBAPrB;AAQE,IAAA,QAAQ,EAAEF,QARZ;AASE,IAAA,mBAAmB,EAAEa,mBATvB;AAUE,IAAA,WAAW,EAAET,WAVf;AAWE,IAAA,kBAAkB,EAAEK,kBAXtB;AAYE,IAAA,iBAAiB,EAAEJ,iBAZrB;AAaE,IAAA,IAAI,EAAEC,IAbR;AAcE,IAAA,YAAY,EAAES,YAdhB;AAeE,IAAA,mBAAmB,EAAEG,mBAfvB;AAgBE,IAAA,gBAAgB,EAAEC,gBAhBpB;AAiBE,IAAA,UAAU,EAAEC;AAjBd,KAmBGT,IAnBH,CApBa;AAAA;;AA2Cf,IAAMW,KAAK,GAAG;AACZ;AACArB,EAAAA,QAAQ,EAAEsB,mBAAS,CAACC,IAAV,CAAeC,WAAf,CACR,kDADQ,CAFE;;AAKZ;AACAvB,EAAAA,iBAAiB,EAAEqB,mBAAS,CAACC,IAAV,CAAeC,WAAf,CACjB,+CADiB,CANP;;AASZ;AACAtB,EAAAA,kBAAkB,EAAEoB,mBAAS,CAACC,IAAV,CAAeC,WAAf,CAClB,wDADkB,CAVR;;AAaZ;AACArB,EAAAA,WAAW,EAAEmB,mBAAS,CAACG,IAAV,CAAeD,WAAf,CACX,+CADW,CAdD;;AAiBZ;AACAnB,EAAAA,IAAI,EAAEiB,mBAAS,CAACI,KAAV,CAAgB,CAAC,QAAD,EAAW,SAAX,CAAhB,EAAuCF,WAAvC,CAAmD,UAAnD,CAlBM;;AAmBZ;AACAhB,EAAAA,kBAAkB,EAAEc,mBAAS,CAACK,OAAV,CAAkBH,WAAlB,CAClB,sCADkB,CApBR;;AAuBZ;AACAZ,EAAAA,mBAAmB,EAAEU,mBAAS,CAACC,IAAV,CAAeC,WAAf,CACnB,wCADmB,CAxBT;;AA2BZ;AACAP,EAAAA,mBAAmB,EAAEK,mBAAS,CAACC,IAAV,CAAeC,WAAf,CACnB,gCADmB,CA5BT;;AA+BZ;AACAN,EAAAA,gBAAgB,EAAEI,mBAAS,CAACC,IAAV,CAAeC,WAAf,CAA2B,6BAA3B,CAhCN;;AAiCZ;AACAL,EAAAA,UAAU,EAAEG,mBAAS,CAACC,IAAV,CAAeC,WAAf,CACV,iDADU,CAlCA;;AAqCZ;AACAV,EAAAA,YAAY,EAAEQ,mBAAS,CAACC,IAAV,CAAeC,WAAf,CAA2B,4BAA3B,CAtCF;;AAuCZ;AACAX,EAAAA,SAAS,EAAES,mBAAS,CAACM,MAAV,CAAiBJ,WAAjB,CAA6B,kBAA7B,CAxCC;;AAyCZ;AACAb,EAAAA,QAAQ,EAAEW,mBAAS,CAACO,OAAV,CACRP,mBAAS,CAACQ,KAAV,CAAgB;AACdzB,IAAAA,IAAI,EAAEiB,mBAAS,CAACS,UAAV,CAAqB,CACzBT,mBAAS,CAACS,UAAV,CAAqBC,WAArB,CADyB,EAEzBV,mBAAS,CAACW,KAFe,CAArB;AADQ,GAAhB,CADQ,EAORC,UAPQ,CAOGV,WAPH,CAOe,eAPf,CA1CE;;AAkDZ;AACApB,EAAAA,iBAAiB,EAAEkB,mBAAS,CAACM,MAAV,CAAiBJ,WAAjB,CAA6B,yBAA7B,CAnDP;;AAoDZ;AACA1B,EAAAA,cAAc,EAAEwB,mBAAS,CAACa,MAAV,CAAiBX,WAAjB,CACd,yCADc,CArDJ;;AAwDZ;AACAzB,EAAAA,QAAQ,EAAEuB,mBAAS,CAACc,SAAV,CAAoB,CAC5Bd,mBAAS,CAACG,IADkB,EAE5BH,mBAAS,CAACQ,KAAV,CAAgB;AAAEO,IAAAA,OAAO,EAAEf,mBAAS,CAACgB;AAArB,GAAhB,CAF4B,CAApB,EAGPd,WAHO,CAGK,KAHL,CAzDE;;AA6DZ;AACAT,EAAAA,cAAc,EAAEO,mBAAS,CAACc,SAAV,CAAoB,CAClCd,mBAAS,CAACG,IADwB,EAElCH,mBAAS,CAACQ,KAAV,CAAgB;AAAEO,IAAAA,OAAO,EAAEf,mBAAS,CAACgB;AAArB,GAAhB,CAFkC,CAApB,EAGbd,WAHa,CAGD,+CAHC,CA9DJ;;AAkEZ;AACAR,EAAAA,UAAU,EAAEM,mBAAS,CAACc,SAAV,CAAoB,CAC9Bd,mBAAS,CAACG,IADoB,EAE9BH,mBAAS,CAACQ,KAAV,CAAgB;AAAEO,IAAAA,OAAO,EAAEf,mBAAS,CAACgB;AAArB,GAAhB,CAF8B,CAApB,EAGTd,WAHS,CAGG,+CAHH;AAnEA,CAAd;AAyEA3B,MAAM,CAAC0C,SAAP,GAAmBlB,KAAnB;IACMmB,gBAAgB,GAAGC,kBAAQ,CAAC5C,MAAD;AACjC2C,gBAAgB,CAACD,SAAjB,GAA6BlB,KAA7B;;;;;;"}
package/cjs/SubTabBar.js CHANGED
@@ -18,8 +18,7 @@ require('memoize-one');
18
18
  require('resize-observer');
19
19
  require('styled-components');
20
20
  require('@babel/runtime/helpers/slicedToArray');
21
- require('@elliemae/ds-icons/ChevronRight');
22
- require('@elliemae/ds-icons/ChevronLeft');
21
+ require('@elliemae/ds-icons');
23
22
  require('@elliemae/ds-button');
24
23
  require('./useResize.js');
25
24
 
@@ -1 +1 @@
1
- {"version":3,"file":"SubTabBar.js","sources":["../../src/SubTabBar.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabBar from './TabBar';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\n\nconst SubTabList = aggregatedClasses('div')(\n blockName,\n 'subtabs-list',\n ({ withCarousel }) => ({ carousel: withCarousel }),\n);\n\nconst SubTabBar = ({\n withCarousel,\n tabs = [],\n activeTab = '',\n onTabClick = () => null,\n firstSubtabRef,\n handleUpArrow,\n}) => (\n <TabBar\n activeTab={activeTab}\n onTabClick={onTabClick}\n handleUpArrow={handleUpArrow}\n firstSubtabRef={firstSubtabRef}\n renderCustomTabBar={({ tabsComponents, innerRef }) => (\n <SubTabList\n withCarousel={withCarousel}\n innerRef={innerRef}\n data-testid=\"subtabs-list\"\n >\n {withCarousel ? <Carousel>{tabsComponents}</Carousel> : tabsComponents}\n </SubTabList>\n )}\n showSelectionIndicator={false}\n showSeparator\n tabs={tabs}\n />\n);\n\nSubTabBar.propTypes = {\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n activeTab: PropTypes.string,\n onTabClick: PropTypes.func.isRequired,\n withCarousel: PropTypes.bool,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n};\n\nexport default SubTabBar;\n"],"names":["blockName","SubTabList","aggregatedClasses","withCarousel","carousel","SubTabBar","tabs","activeTab","onTabClick","firstSubtabRef","handleUpArrow","React","tabsComponents","innerRef","propTypes","PropTypes","arrayOf","element","isRequired","string","func","bool","oneOfType","shape","current","any"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,SAAS,GAAG,cAAlB;AAEA,IAAMC,UAAU,GAAGC,8BAAiB,CAAC,KAAD,CAAjB,CACjBF,SADiB,EAEjB,cAFiB,EAGjB;AAAA,MAAGG,YAAH,QAAGA,YAAH;AAAA,SAAuB;AAAEC,IAAAA,QAAQ,EAAED;AAAZ,GAAvB;AAAA,CAHiB,CAAnB;;IAMME,SAAS,GAAG,SAAZA,SAAY;AAAA,MAChBF,YADgB,SAChBA,YADgB;AAAA,yBAEhBG,IAFgB;AAAA,MAEhBA,IAFgB,2BAET,EAFS;AAAA,8BAGhBC,SAHgB;AAAA,MAGhBA,SAHgB,gCAGJ,EAHI;AAAA,+BAIhBC,UAJgB;AAAA,MAIhBA,UAJgB,iCAIH;AAAA,WAAM,IAAN;AAAA,GAJG;AAAA,MAKhBC,cALgB,SAKhBA,cALgB;AAAA,MAMhBC,aANgB,SAMhBA,aANgB;AAAA,sBAQhBC,wCAAC,MAAD;AACE,IAAA,SAAS,EAAEJ,SADb;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,aAAa,EAAEE,aAHjB;AAIE,IAAA,cAAc,EAAED,cAJlB;AAKE,IAAA,kBAAkB,EAAE;AAAA,UAAGG,cAAH,SAAGA,cAAH;AAAA,UAAmBC,QAAnB,SAAmBA,QAAnB;AAAA,0BAClBF,wCAAC,UAAD;AACE,QAAA,YAAY,EAAER,YADhB;AAEE,QAAA,QAAQ,EAAEU,QAFZ;AAGE,uBAAY;AAHd,SAKGV,YAAY,gBAAGQ,wCAAC,QAAD,QAAWC,cAAX,CAAH,GAA2CA,cAL1D,CADkB;AAAA,KALtB;AAcE,IAAA,sBAAsB,EAAE,KAd1B;AAeE,IAAA,aAAa,MAff;AAgBE,IAAA,IAAI,EAAEN;AAhBR,IARgB;AAAA;;AA4BlBD,SAAS,CAACS,SAAV,GAAsB;AACpBR,EAAAA,IAAI,EAAES,6BAAS,CAACC,OAAV,CAAkBD,6BAAS,CAACE,OAA5B,EAAqCC,UADvB;AAEpBX,EAAAA,SAAS,EAAEQ,6BAAS,CAACI,MAFD;AAGpBX,EAAAA,UAAU,EAAEO,6BAAS,CAACK,IAAV,CAAeF,UAHP;AAIpBf,EAAAA,YAAY,EAAEY,6BAAS,CAACM,IAJJ;AAKpBX,EAAAA,aAAa,EAAEK,6BAAS,CAACK,IALL;AAMpBX,EAAAA,cAAc,EAAEM,6BAAS,CAACO,SAAV,CAAoB,CAClCP,6BAAS,CAACK,IADwB,EAElCL,6BAAS,CAACQ,KAAV,CAAgB;AAAEC,IAAAA,OAAO,EAAET,6BAAS,CAACU;AAArB,GAAhB,CAFkC,CAApB;AANI,CAAtB;;;;"}
1
+ {"version":3,"file":"SubTabBar.js","sources":["../../src/SubTabBar.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabBar from './TabBar';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\n\nconst SubTabList = aggregatedClasses('div')(\n blockName,\n 'subtabs-list',\n ({ withCarousel }) => ({ carousel: withCarousel }),\n);\n\nconst SubTabBar = ({\n withCarousel,\n tabs = [],\n activeTab = '',\n onTabClick = () => null,\n firstSubtabRef,\n handleUpArrow,\n}) => (\n <TabBar\n activeTab={activeTab}\n onTabClick={onTabClick}\n handleUpArrow={handleUpArrow}\n firstSubtabRef={firstSubtabRef}\n renderCustomTabBar={({ tabsComponents, innerRef }) => (\n <SubTabList\n withCarousel={withCarousel}\n innerRef={innerRef}\n data-testid=\"subtabs-list\"\n >\n {withCarousel ? <Carousel>{tabsComponents}</Carousel> : tabsComponents}\n </SubTabList>\n )}\n showSelectionIndicator={false}\n showSeparator\n tabs={tabs}\n />\n);\n\nSubTabBar.propTypes = {\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n activeTab: PropTypes.string,\n onTabClick: PropTypes.func.isRequired,\n withCarousel: PropTypes.bool,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n};\n\nexport default SubTabBar;\n"],"names":["blockName","SubTabList","aggregatedClasses","withCarousel","carousel","SubTabBar","tabs","activeTab","onTabClick","firstSubtabRef","handleUpArrow","React","tabsComponents","innerRef","propTypes","PropTypes","arrayOf","element","isRequired","string","func","bool","oneOfType","shape","current","any"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,SAAS,GAAG,cAAlB;AAEA,IAAMC,UAAU,GAAGC,8BAAiB,CAAC,KAAD,CAAjB,CACjBF,SADiB,EAEjB,cAFiB,EAGjB;AAAA,MAAGG,YAAH,QAAGA,YAAH;AAAA,SAAuB;AAAEC,IAAAA,QAAQ,EAAED;AAAZ,GAAvB;AAAA,CAHiB,CAAnB;;IAMME,SAAS,GAAG,SAAZA,SAAY;AAAA,MAChBF,YADgB,SAChBA,YADgB;AAAA,yBAEhBG,IAFgB;AAAA,MAEhBA,IAFgB,2BAET,EAFS;AAAA,8BAGhBC,SAHgB;AAAA,MAGhBA,SAHgB,gCAGJ,EAHI;AAAA,+BAIhBC,UAJgB;AAAA,MAIhBA,UAJgB,iCAIH;AAAA,WAAM,IAAN;AAAA,GAJG;AAAA,MAKhBC,cALgB,SAKhBA,cALgB;AAAA,MAMhBC,aANgB,SAMhBA,aANgB;AAAA,sBAQhBC,wCAAC,MAAD;AACE,IAAA,SAAS,EAAEJ,SADb;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,aAAa,EAAEE,aAHjB;AAIE,IAAA,cAAc,EAAED,cAJlB;AAKE,IAAA,kBAAkB,EAAE;AAAA,UAAGG,cAAH,SAAGA,cAAH;AAAA,UAAmBC,QAAnB,SAAmBA,QAAnB;AAAA,0BAClBF,wCAAC,UAAD;AACE,QAAA,YAAY,EAAER,YADhB;AAEE,QAAA,QAAQ,EAAEU,QAFZ;AAGE,uBAAY;AAHd,SAKGV,YAAY,gBAAGQ,wCAAC,QAAD,QAAWC,cAAX,CAAH,GAA2CA,cAL1D,CADkB;AAAA,KALtB;AAcE,IAAA,sBAAsB,EAAE,KAd1B;AAeE,IAAA,aAAa,MAff;AAgBE,IAAA,IAAI,EAAEN;AAhBR,IARgB;AAAA;;AA4BlBD,SAAS,CAACS,SAAV,GAAsB;AACpBR,EAAAA,IAAI,EAAES,6BAAS,CAACC,OAAV,CAAkBD,6BAAS,CAACE,OAA5B,EAAqCC,UADvB;AAEpBX,EAAAA,SAAS,EAAEQ,6BAAS,CAACI,MAFD;AAGpBX,EAAAA,UAAU,EAAEO,6BAAS,CAACK,IAAV,CAAeF,UAHP;AAIpBf,EAAAA,YAAY,EAAEY,6BAAS,CAACM,IAJJ;AAKpBX,EAAAA,aAAa,EAAEK,6BAAS,CAACK,IALL;AAMpBX,EAAAA,cAAc,EAAEM,6BAAS,CAACO,SAAV,CAAoB,CAClCP,6BAAS,CAACK,IADwB,EAElCL,6BAAS,CAACQ,KAAV,CAAgB;AAAEC,IAAAA,OAAO,EAAET,6BAAS,CAACU;AAArB,GAAhB,CAFkC,CAApB;AANI,CAAtB;;;;"}
package/cjs/TabBar.js CHANGED
@@ -17,8 +17,7 @@ var resizeObserver = require('resize-observer');
17
17
  var styled = require('styled-components');
18
18
  var Carousel = require('./Carousel.js');
19
19
  require('@babel/runtime/helpers/slicedToArray');
20
- require('@elliemae/ds-icons/ChevronRight');
21
- require('@elliemae/ds-icons/ChevronLeft');
20
+ require('@elliemae/ds-icons');
22
21
  require('@elliemae/ds-button');
23
22
  require('./useResize.js');
24
23
 
package/cjs/TabBar.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.js","sources":["../../src/TabBar.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { debounce } from 'lodash';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport RequiredMark from '@elliemae/ds-form/RequiredMark';\nimport memoizeOne from 'memoize-one';\nimport { ResizeObserver } from 'resize-observer';\nimport styled from 'styled-components';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\nconst gradientWidth = 24;\n\nconst StyledTabWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n ${({ flexibleTabsHeaders }) => (flexibleTabsHeaders ? '' : 'overflow-x: hidden')};\n`;\n\nconst StyledTabList = aggregatedClasses('div')(\n blockName,\n 'list',\n ({ withCarousel, flexibleTabsHeaders, fixedTabsHeaders, isDSMobile, withLeftGradients, withRightGradients }) => ({\n carousel: withCarousel,\n 'flexible-table-headers': isDSMobile && flexibleTabsHeaders,\n 'fixed-table-headers': isDSMobile && fixedTabsHeaders,\n 'left-gradients': isDSMobile && flexibleTabsHeaders && withLeftGradients,\n 'right-gradients': isDSMobile && flexibleTabsHeaders && withRightGradients,\n }),\n {\n propsToRemoveFromFinalElement: [\n 'withCarousel',\n 'flexibleTabsHeaders',\n 'fixedTabsHeaders',\n 'withLeftGradients',\n 'withRightGradients',\n 'isDSMobile',\n ],\n },\n);\nconst TabContainer = aggregatedClasses('button', {\n role: 'tab',\n})(blockName, 'tab', ({ isActive, showSeparator, disabled }) => ({\n active: isActive,\n separator: showSeparator,\n disabled,\n}));\nconst SelectionIndicator = aggregatedClasses('div')(blockName, 'selection-indicator');\n\nclass TabBar extends Component {\n constructor(props) {\n super(props);\n this.tabListRef = React.createRef();\n this.resizeObserver = new ResizeObserver(() => this.setIndicatorStyle());\n this.state = {\n indicatorStyle: null,\n withLeftGradients: false,\n withRightGradients: false,\n };\n this.setIndicatorStyle = this.setIndicatorStyle.bind(this);\n this.getIndicatorStyles = this.getIndicatorStyles.bind(this);\n this.handleGradients = this.handleGradients.bind(this);\n this.handleTabsHeadersHorizontalScroll = this.handleTabsHeadersHorizontalScroll.bind(this);\n this.tabsRef = {};\n }\n\n componentDidMount() {\n const { showSelectionIndicator } = this.props;\n this.resizeObserver.observe(this.tabListRef.current);\n if (showSelectionIndicator) {\n this.setIndicatorStyle();\n }\n\n window.addEventListener('resize', this.handleGradients);\n window.addEventListener('orientationchange', this.handleGradients);\n this.handleGradients();\n }\n\n componentDidUpdate(prevProps) {\n const { activeTab, showSelectionIndicator } = this.props;\n\n if (showSelectionIndicator && prevProps.activeTab !== activeTab) {\n this.setIndicatorStyle(activeTab);\n }\n }\n\n componentWillUnmount() {\n this.resizeObserver.unobserve(this.tabListRef.current);\n window.removeEventListener('resize', this.handleGradients);\n window.removeEventListener('orientationchange', this.handleGradients);\n }\n\n handleGradients() {\n const { scrollLeft, scrollWidth, clientWidth } = this.tabListRef.current;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n this.setState({ withLeftGradients, withRightGradients });\n }\n\n shouldHaveLeftGradient(scrollLeft, gWidth) {\n return Math.abs(scrollLeft) > gWidth;\n }\n\n // eslint-disable-next-line max-params\n shouldHaveRightGradient(scrollLeft, gWidth, clientWidth, scrollWidth) {\n return Math.abs(scrollLeft) <= scrollWidth - (clientWidth + gWidth);\n }\n\n setIndicatorStyle() {\n const { activeTab } = this.props;\n setTimeout(\n () =>\n this.setState({\n indicatorStyle: this.getIndicatorStyles(activeTab),\n }),\n 100,\n );\n }\n\n getActiveTabElement(activeTab) {\n const tabListEl = this.tabListRef.current;\n\n const tabSelector = `[data-tab-id=\"${activeTab}\"]`;\n\n return tabListEl && tabListEl.querySelector(tabSelector);\n }\n\n isElementVisible(el, holder) {\n const { left, right, width } = el.getBoundingClientRect();\n const holderRect = holder.getBoundingClientRect();\n\n return left <= holderRect.left ? holderRect.left - left <= width : right - holderRect.right <= width;\n }\n\n getVisibleDimensions(node, referenceNode) {\n const pos = node.getBoundingClientRect();\n const referencePos = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referencePos.left + referenceNode.clientWidth - pos.left,\n node.clientWidth - (referencePos.left - pos.left),\n ),\n height: Math.min(\n node.clientHeight,\n referencePos.top + referenceNode.clientHeight - pos.top,\n node.clientHeight - (referencePos.top - pos.top),\n ),\n };\n }\n\n getIndicatorStyles(activeTab) {\n const tabListEl = this.tabListRef.current;\n const { withCarousel } = this.props;\n const activeTabEl = this.getActiveTabElement(activeTab);\n\n if (!activeTabEl || !this.isElementVisible(activeTabEl, tabListEl)) return null;\n\n const { clientHeight, clientWidth, offsetTop, offsetLeft } = activeTabEl;\n const { left } = activeTabEl.getBoundingClientRect();\n const leftOff = withCarousel ? Math.max(0, left - tabListEl.getBoundingClientRect().left) : offsetLeft;\n const width = withCarousel ? this.getVisibleDimensions(activeTabEl, tabListEl).width + 2 : clientWidth + 2;\n return {\n height: clientHeight,\n left: `${Math.floor(leftOff)}px`, // using left and top for ie compatibility\n top: `${Math.floor(offsetTop)}px`,\n width,\n };\n }\n\n handleTabClick = (tabId, e) => {\n const { tabListRef, props } = this;\n const { onTabClick, flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const el = e.target;\n const { offsetLeft } = el;\n const { width: elWidth } = el.getBoundingClientRect();\n const { width: listWidth } = tabListDomEl.getBoundingClientRect();\n const extraSideSpace = listWidth - elWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabListDomEl.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n }\n e.preventDefault();\n onTabClick(tabId);\n };\n\n handleKeyPress = (tabId, e, index) => {\n const {\n tabs,\n handleDownArrow,\n handleUpArrow,\n // onTabClick,\n } = this.props;\n if (e.keyCode === 39) {\n const nextTab = tabs[index + 1];\n if (!nextTab && handleDownArrow) handleDownArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index + 1]?.focus();\n }\n if (e.keyCode === 37) {\n const nextTab = tabs[index - 1];\n if (!nextTab && handleUpArrow) handleUpArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index - 1]?.focus();\n }\n\n if (e.keyCode === 40 && handleDownArrow) {\n handleDownArrow(e);\n }\n\n if (e.keyCode === 38 && handleUpArrow) {\n handleUpArrow(e);\n }\n };\n\n handleTabsHeadersHorizontalScroll = debounce(() => {\n const { tabListRef, props } = this;\n const { flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const { scrollLeft, scrollWidth, clientWidth } = tabListDomEl;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n\n this.setState({\n withLeftGradients,\n withRightGradients,\n });\n }\n }, 50);\n\n renderTabs = memoizeOne((activeTab, tabs) => {\n const { showSeparator } = this.props;\n return React.Children.map(\n tabs,\n (tab, index) => {\n const { tabId, title, style, required, disabled } = tab.props;\n const isActive = activeTab === tabId;\n return [\n <TabContainer\n key={tabId}\n // eslint-disable-next-line no-return-assign\n ref={(t) => {\n this.tabsRef[index] = t;\n if (index === 0 && this.props.firstSubtabRef) {\n this.props.firstSubtabRef.current = t;\n }\n if (index === tabs.length - 1 && this.props.lastTabRef) {\n this.props.lastTabRef.current = t;\n }\n }}\n aria-controls={tabId}\n aria-selected={isActive}\n aria-disabled={!!disabled}\n classProps={{ isActive, showSeparator, disabled }}\n data-tab-id={tabId}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) this.handleTabClick(tabId, e, index);\n }}\n onKeyDown={(e) => {\n if (!disabled) this.handleKeyPress(tabId, e, index);\n }}\n style={style}\n tabIndex={0}\n >\n {title}\n <RequiredMark required={required} />\n </TabContainer>,\n ];\n },\n null,\n );\n });\n\n render() {\n const { id, tabs, activeTab, renderCustomTabBar, withCarousel, isDSMobile, flexibleTabsHeaders, fixedTabsHeaders } =\n this.props;\n const { indicatorStyle, withLeftGradients, withRightGradients } = this.state;\n\n if (renderCustomTabBar) {\n return renderCustomTabBar({\n innerRef: this.tabListRef,\n withCarousel,\n tabsComponents: this.renderTabs(activeTab, tabs),\n });\n }\n\n const shouldUseCarousel = !isDSMobile && withCarousel;\n\n return (\n <>\n <StyledTabList\n withCarousel={withCarousel}\n aria-label={id}\n innerRef={this.tabListRef}\n role=\"tablist\"\n data-testid=\"tab-list\"\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n withLeftGradients={withLeftGradients}\n withRightGradients={withRightGradients}\n fixedTabsHeaders={fixedTabsHeaders}\n onScroll={this.handleTabsHeadersHorizontalScroll}\n style={{ width: '100%' }}\n >\n <StyledTabWrapper\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n >\n {shouldUseCarousel ? (\n <Carousel onScroll={this.setIndicatorStyle}>{this.renderTabs(activeTab, tabs)}</Carousel>\n ) : null}\n {!shouldUseCarousel ? this.renderTabs(activeTab, tabs) : null}\n <SelectionIndicator style={indicatorStyle} />\n </StyledTabWrapper>\n </StyledTabList>\n </>\n );\n }\n}\n\nTabBar.defaultProps = {\n showSelectionIndicator: true,\n showSeparator: false,\n isDSMobile: false,\n};\n\nTabBar.propTypes = {\n /** Separator between tabs */\n showSeparator: PropTypes.bool,\n /** Blue border under selected tab */\n showSelectionIndicator: PropTypes.bool,\n /** Tab list id */\n id: PropTypes.string,\n /** Array of tabs */\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n /** Renders a custom tabbar */\n renderCustomTabBar: PropTypes.func,\n /** tabId of active tab */\n activeTab: PropTypes.string,\n /** on tab click callback */\n onTabClick: PropTypes.func,\n /** carousel behavior */\n withCarousel: PropTypes.bool,\n handleDownArrow: PropTypes.func,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n lastTabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n /** Whether we are in mobile mode or not */\n};\n\nexport default TabBar;\n"],"names":["blockName","gradientWidth","StyledTabWrapper","styled","div","flexibleTabsHeaders","StyledTabList","aggregatedClasses","withCarousel","fixedTabsHeaders","isDSMobile","withLeftGradients","withRightGradients","carousel","propsToRemoveFromFinalElement","TabContainer","role","isActive","showSeparator","disabled","active","separator","SelectionIndicator","TabBar","props","tabId","e","tabListRef","onTabClick","tabListDomEl","current","el","target","offsetLeft","getBoundingClientRect","elWidth","width","listWidth","extraSideSpace","leftOffsetToCenter","centeredLeftOffset","scrollTo","top","left","behavior","preventDefault","index","tabs","handleDownArrow","handleUpArrow","keyCode","nextTab","tabsRef","focus","debounce","scrollLeft","scrollWidth","clientWidth","shouldHaveLeftGradient","shouldHaveRightGradient","setState","memoizeOne","activeTab","React","Children","map","tab","title","style","required","t","firstSubtabRef","length","lastTabRef","handleTabClick","handleKeyPress","RequiredMark","createRef","resizeObserver","ResizeObserver","setIndicatorStyle","state","indicatorStyle","bind","getIndicatorStyles","handleGradients","handleTabsHeadersHorizontalScroll","showSelectionIndicator","observe","window","addEventListener","prevProps","unobserve","removeEventListener","gWidth","Math","abs","setTimeout","tabListEl","tabSelector","querySelector","holder","right","holderRect","node","referenceNode","pos","referencePos","min","height","clientHeight","activeTabEl","getActiveTabElement","isElementVisible","offsetTop","leftOff","max","getVisibleDimensions","floor","id","renderCustomTabBar","innerRef","tabsComponents","renderTabs","shouldUseCarousel","Component","defaultProps","propTypes","PropTypes","bool","string","arrayOf","element","isRequired","func","oneOfType","shape","any"],"mappings":"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"}
1
+ {"version":3,"file":"TabBar.js","sources":["../../src/TabBar.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { debounce } from 'lodash';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport RequiredMark from '@elliemae/ds-form/RequiredMark';\nimport memoizeOne from 'memoize-one';\nimport { ResizeObserver } from 'resize-observer';\nimport styled from 'styled-components';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\nconst gradientWidth = 24;\n\nconst StyledTabWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n ${({ flexibleTabsHeaders }) => (flexibleTabsHeaders ? '' : 'overflow-x: hidden')};\n`;\n\nconst StyledTabList = aggregatedClasses('div')(\n blockName,\n 'list',\n ({ withCarousel, flexibleTabsHeaders, fixedTabsHeaders, isDSMobile, withLeftGradients, withRightGradients }) => ({\n carousel: withCarousel,\n 'flexible-table-headers': isDSMobile && flexibleTabsHeaders,\n 'fixed-table-headers': isDSMobile && fixedTabsHeaders,\n 'left-gradients': isDSMobile && flexibleTabsHeaders && withLeftGradients,\n 'right-gradients': isDSMobile && flexibleTabsHeaders && withRightGradients,\n }),\n {\n propsToRemoveFromFinalElement: [\n 'withCarousel',\n 'flexibleTabsHeaders',\n 'fixedTabsHeaders',\n 'withLeftGradients',\n 'withRightGradients',\n 'isDSMobile',\n ],\n },\n);\nconst TabContainer = aggregatedClasses('button', {\n role: 'tab',\n})(blockName, 'tab', ({ isActive, showSeparator, disabled }) => ({\n active: isActive,\n separator: showSeparator,\n disabled,\n}));\nconst SelectionIndicator = aggregatedClasses('div')(blockName, 'selection-indicator');\n\nclass TabBar extends Component {\n constructor(props) {\n super(props);\n this.tabListRef = React.createRef();\n this.resizeObserver = new ResizeObserver(() => this.setIndicatorStyle());\n this.state = {\n indicatorStyle: null,\n withLeftGradients: false,\n withRightGradients: false,\n };\n this.setIndicatorStyle = this.setIndicatorStyle.bind(this);\n this.getIndicatorStyles = this.getIndicatorStyles.bind(this);\n this.handleGradients = this.handleGradients.bind(this);\n this.handleTabsHeadersHorizontalScroll = this.handleTabsHeadersHorizontalScroll.bind(this);\n this.tabsRef = {};\n }\n\n componentDidMount() {\n const { showSelectionIndicator } = this.props;\n this.resizeObserver.observe(this.tabListRef.current);\n if (showSelectionIndicator) {\n this.setIndicatorStyle();\n }\n\n window.addEventListener('resize', this.handleGradients);\n window.addEventListener('orientationchange', this.handleGradients);\n this.handleGradients();\n }\n\n componentDidUpdate(prevProps) {\n const { activeTab, showSelectionIndicator } = this.props;\n\n if (showSelectionIndicator && prevProps.activeTab !== activeTab) {\n this.setIndicatorStyle(activeTab);\n }\n }\n\n componentWillUnmount() {\n this.resizeObserver.unobserve(this.tabListRef.current);\n window.removeEventListener('resize', this.handleGradients);\n window.removeEventListener('orientationchange', this.handleGradients);\n }\n\n handleGradients() {\n const { scrollLeft, scrollWidth, clientWidth } = this.tabListRef.current;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n this.setState({ withLeftGradients, withRightGradients });\n }\n\n shouldHaveLeftGradient(scrollLeft, gWidth) {\n return Math.abs(scrollLeft) > gWidth;\n }\n\n // eslint-disable-next-line max-params\n shouldHaveRightGradient(scrollLeft, gWidth, clientWidth, scrollWidth) {\n return Math.abs(scrollLeft) <= scrollWidth - (clientWidth + gWidth);\n }\n\n setIndicatorStyle() {\n const { activeTab } = this.props;\n setTimeout(\n () =>\n this.setState({\n indicatorStyle: this.getIndicatorStyles(activeTab),\n }),\n 100,\n );\n }\n\n getActiveTabElement(activeTab) {\n const tabListEl = this.tabListRef.current;\n\n const tabSelector = `[data-tab-id=\"${activeTab}\"]`;\n\n return tabListEl && tabListEl.querySelector(tabSelector);\n }\n\n isElementVisible(el, holder) {\n const { left, right, width } = el.getBoundingClientRect();\n const holderRect = holder.getBoundingClientRect();\n\n return left <= holderRect.left ? holderRect.left - left <= width : right - holderRect.right <= width;\n }\n\n getVisibleDimensions(node, referenceNode) {\n const pos = node.getBoundingClientRect();\n const referencePos = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referencePos.left + referenceNode.clientWidth - pos.left,\n node.clientWidth - (referencePos.left - pos.left),\n ),\n height: Math.min(\n node.clientHeight,\n referencePos.top + referenceNode.clientHeight - pos.top,\n node.clientHeight - (referencePos.top - pos.top),\n ),\n };\n }\n\n getIndicatorStyles(activeTab) {\n const tabListEl = this.tabListRef.current;\n const { withCarousel } = this.props;\n const activeTabEl = this.getActiveTabElement(activeTab);\n\n if (!activeTabEl || !this.isElementVisible(activeTabEl, tabListEl)) return null;\n\n const { clientHeight, clientWidth, offsetTop, offsetLeft } = activeTabEl;\n const { left } = activeTabEl.getBoundingClientRect();\n const leftOff = withCarousel ? Math.max(0, left - tabListEl.getBoundingClientRect().left) : offsetLeft;\n const width = withCarousel ? this.getVisibleDimensions(activeTabEl, tabListEl).width + 2 : clientWidth + 2;\n return {\n height: clientHeight,\n left: `${Math.floor(leftOff)}px`, // using left and top for ie compatibility\n top: `${Math.floor(offsetTop)}px`,\n width,\n };\n }\n\n handleTabClick = (tabId, e) => {\n const { tabListRef, props } = this;\n const { onTabClick, flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const el = e.target;\n const { offsetLeft } = el;\n const { width: elWidth } = el.getBoundingClientRect();\n const { width: listWidth } = tabListDomEl.getBoundingClientRect();\n const extraSideSpace = listWidth - elWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabListDomEl.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n }\n e.preventDefault();\n onTabClick(tabId);\n };\n\n handleKeyPress = (tabId, e, index) => {\n const {\n tabs,\n handleDownArrow,\n handleUpArrow,\n // onTabClick,\n } = this.props;\n if (e.keyCode === 39) {\n const nextTab = tabs[index + 1];\n if (!nextTab && handleDownArrow) handleDownArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index + 1]?.focus();\n }\n if (e.keyCode === 37) {\n const nextTab = tabs[index - 1];\n if (!nextTab && handleUpArrow) handleUpArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index - 1]?.focus();\n }\n\n if (e.keyCode === 40 && handleDownArrow) {\n handleDownArrow(e);\n }\n\n if (e.keyCode === 38 && handleUpArrow) {\n handleUpArrow(e);\n }\n };\n\n handleTabsHeadersHorizontalScroll = debounce(() => {\n const { tabListRef, props } = this;\n const { flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const { scrollLeft, scrollWidth, clientWidth } = tabListDomEl;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n\n this.setState({\n withLeftGradients,\n withRightGradients,\n });\n }\n }, 50);\n\n renderTabs = memoizeOne((activeTab, tabs) => {\n const { showSeparator } = this.props;\n return React.Children.map(\n tabs,\n (tab, index) => {\n const { tabId, title, style, required, disabled } = tab.props;\n const isActive = activeTab === tabId;\n return [\n <TabContainer\n key={tabId}\n // eslint-disable-next-line no-return-assign\n ref={(t) => {\n this.tabsRef[index] = t;\n if (index === 0 && this.props.firstSubtabRef) {\n this.props.firstSubtabRef.current = t;\n }\n if (index === tabs.length - 1 && this.props.lastTabRef) {\n this.props.lastTabRef.current = t;\n }\n }}\n aria-controls={tabId}\n aria-selected={isActive}\n aria-disabled={!!disabled}\n classProps={{ isActive, showSeparator, disabled }}\n data-tab-id={tabId}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) this.handleTabClick(tabId, e, index);\n }}\n onKeyDown={(e) => {\n if (!disabled) this.handleKeyPress(tabId, e, index);\n }}\n style={style}\n tabIndex={0}\n >\n {title}\n <RequiredMark required={required} />\n </TabContainer>,\n ];\n },\n null,\n );\n });\n\n render() {\n const { id, tabs, activeTab, renderCustomTabBar, withCarousel, isDSMobile, flexibleTabsHeaders, fixedTabsHeaders } =\n this.props;\n const { indicatorStyle, withLeftGradients, withRightGradients } = this.state;\n\n if (renderCustomTabBar) {\n return renderCustomTabBar({\n innerRef: this.tabListRef,\n withCarousel,\n tabsComponents: this.renderTabs(activeTab, tabs),\n });\n }\n\n const shouldUseCarousel = !isDSMobile && withCarousel;\n\n return (\n <>\n <StyledTabList\n withCarousel={withCarousel}\n aria-label={id}\n innerRef={this.tabListRef}\n role=\"tablist\"\n data-testid=\"tab-list\"\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n withLeftGradients={withLeftGradients}\n withRightGradients={withRightGradients}\n fixedTabsHeaders={fixedTabsHeaders}\n onScroll={this.handleTabsHeadersHorizontalScroll}\n style={{ width: '100%' }}\n >\n <StyledTabWrapper\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n >\n {shouldUseCarousel ? (\n <Carousel onScroll={this.setIndicatorStyle}>{this.renderTabs(activeTab, tabs)}</Carousel>\n ) : null}\n {!shouldUseCarousel ? this.renderTabs(activeTab, tabs) : null}\n <SelectionIndicator style={indicatorStyle} />\n </StyledTabWrapper>\n </StyledTabList>\n </>\n );\n }\n}\n\nTabBar.defaultProps = {\n showSelectionIndicator: true,\n showSeparator: false,\n isDSMobile: false,\n};\n\nTabBar.propTypes = {\n /** Separator between tabs */\n showSeparator: PropTypes.bool,\n /** Blue border under selected tab */\n showSelectionIndicator: PropTypes.bool,\n /** Tab list id */\n id: PropTypes.string,\n /** Array of tabs */\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n /** Renders a custom tabbar */\n renderCustomTabBar: PropTypes.func,\n /** tabId of active tab */\n activeTab: PropTypes.string,\n /** on tab click callback */\n onTabClick: PropTypes.func,\n /** carousel behavior */\n withCarousel: PropTypes.bool,\n handleDownArrow: PropTypes.func,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n lastTabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n /** Whether we are in mobile mode or not */\n};\n\nexport default TabBar;\n"],"names":["blockName","gradientWidth","StyledTabWrapper","styled","div","flexibleTabsHeaders","StyledTabList","aggregatedClasses","withCarousel","fixedTabsHeaders","isDSMobile","withLeftGradients","withRightGradients","carousel","propsToRemoveFromFinalElement","TabContainer","role","isActive","showSeparator","disabled","active","separator","SelectionIndicator","TabBar","props","tabId","e","tabListRef","onTabClick","tabListDomEl","current","el","target","offsetLeft","getBoundingClientRect","elWidth","width","listWidth","extraSideSpace","leftOffsetToCenter","centeredLeftOffset","scrollTo","top","left","behavior","preventDefault","index","tabs","handleDownArrow","handleUpArrow","keyCode","nextTab","tabsRef","focus","debounce","scrollLeft","scrollWidth","clientWidth","shouldHaveLeftGradient","shouldHaveRightGradient","setState","memoizeOne","activeTab","React","Children","map","tab","title","style","required","t","firstSubtabRef","length","lastTabRef","handleTabClick","handleKeyPress","RequiredMark","createRef","resizeObserver","ResizeObserver","setIndicatorStyle","state","indicatorStyle","bind","getIndicatorStyles","handleGradients","handleTabsHeadersHorizontalScroll","showSelectionIndicator","observe","window","addEventListener","prevProps","unobserve","removeEventListener","gWidth","Math","abs","setTimeout","tabListEl","tabSelector","querySelector","holder","right","holderRect","node","referenceNode","pos","referencePos","min","height","clientHeight","activeTabEl","getActiveTabElement","isElementVisible","offsetTop","leftOff","max","getVisibleDimensions","floor","id","renderCustomTabBar","innerRef","tabsComponents","renderTabs","shouldUseCarousel","Component","defaultProps","propTypes","PropTypes","bool","string","arrayOf","element","isRequired","func","oneOfType","shape","any"],"mappings":"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"}
package/cjs/TabsImpl.js CHANGED
@@ -25,8 +25,7 @@ require('@elliemae/ds-form/RequiredMark');
25
25
  require('resize-observer');
26
26
  require('styled-components');
27
27
  require('./Carousel.js');
28
- require('@elliemae/ds-icons/ChevronRight');
29
- require('@elliemae/ds-icons/ChevronLeft');
28
+ require('@elliemae/ds-icons');
30
29
  require('@elliemae/ds-button');
31
30
  require('./useResize.js');
32
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"TabsImpl.js","sources":["../../src/TabsImpl.tsx"],"sourcesContent":["/* eslint-disable indent */\n/* eslint-disable max-lines */\nimport React, {\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabsPanels from './TabsPanels';\nimport TabBar from './TabBar';\nimport SubTabBar from './SubTabBar';\nimport { TabTypes } from './TabTypes';\n\nconst blockName = 'tabs';\n\nconst StyledTabsContainer = aggregatedClasses('div')(blockName);\nconst StyledTabBarContainer = aggregatedClasses('div')(\n blockName,\n 'tab-bar-container',\n);\n\nconst TabBarComponentsByType = {\n [TabTypes.NORMAL]: TabBar,\n [TabTypes.SUBTABS]: SubTabBar,\n};\n\nconst TabsImpl = (props) => {\n const {\n animated,\n children: tabs,\n type,\n tabBarExtraContent,\n onTabChange,\n enableMouseEvents,\n innerRef,\n onlyRenderActiveTab,\n containerProps,\n allowTextSelection,\n tabsListAriaLabel,\n activeTab,\n firstSubtabRef,\n lastTabRef,\n withCarousel,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile,\n } = props;\n const [actualActiveTab, setActualActiveTab] = useState(\n activeTab || tabs?.[0]?.props?.tabId,\n );\n const firstTabRefByParent = useRef(null);\n const lastTabRefByParent = useRef(null);\n\n useEffect(() => {\n if (activeTab) {\n setActualActiveTab(activeTab);\n }\n }, [activeTab]);\n\n const handleTabClick = useCallback(\n (tab) => {\n setActualActiveTab(tab);\n onTabChange(tab);\n },\n [onTabChange],\n );\n const handleDownArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (firstTabRefByParent?.current) firstTabRefByParent.current?.focus();\n },\n [firstTabRefByParent],\n );\n const handleUpArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (lastTabRef?.current) lastTabRef.current?.focus();\n },\n [lastTabRef],\n );\n\n const PureTabBarComponent = useMemo(() => {\n const TabBarComponent = TabBarComponentsByType[type] || TabBar;\n return (\n <TabBarComponent\n withCarousel={withCarousel}\n activeTab={actualActiveTab}\n onTabClick={handleTabClick}\n tabs={tabs}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRefByParent}\n handleDownArrow={handleDownArrow}\n handleUpArrow={handleUpArrow}\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n />\n );\n }, [\n type,\n withCarousel,\n actualActiveTab,\n handleTabClick,\n tabs,\n firstSubtabRef,\n lastTabRefByParent,\n handleDownArrow,\n handleUpArrow,\n isDSMobile,\n ]);\n const PureTabsPanels = useMemo(\n () => (\n <TabsPanels\n activeTab={actualActiveTab}\n allowTextSelection={allowTextSelection}\n animated={animated}\n enableMouseEvents={enableMouseEvents}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={handleTabClick}\n tabsComponents={tabs}\n lastTabRef={lastTabRefByParent}\n firstTabRefByParent={firstTabRefByParent}\n />\n ),\n [\n actualActiveTab,\n allowTextSelection,\n animated,\n enableMouseEvents,\n onlyRenderActiveTab,\n handleTabClick,\n tabs,\n lastTabRefByParent,\n firstTabRefByParent,\n ],\n );\n const PureTabsImpl = useMemo(\n () => (\n <StyledTabsContainer\n {...containerProps}\n aria-label={tabsListAriaLabel}\n innerRef={innerRef}\n role=\"tablist\"\n >\n <StyledTabBarContainer>\n {PureTabBarComponent}\n {tabBarExtraContent}\n </StyledTabBarContainer>\n {PureTabsPanels}\n </StyledTabsContainer>\n ),\n [\n containerProps,\n tabsListAriaLabel,\n innerRef,\n PureTabBarComponent,\n tabBarExtraContent,\n PureTabsPanels,\n ],\n );\n return PureTabsImpl;\n};\n\nTabsImpl.propTypes = {\n animated: PropTypes.bool,\n enableMouseEvents: PropTypes.bool,\n allowTextSelection: PropTypes.bool,\n onTabChange: PropTypes.func,\n type: PropTypes.oneOf(['normal', 'subtabs']),\n tabBarExtraContent: PropTypes.element,\n onlyRenderActiveTab: PropTypes.bool,\n withCarousel: PropTypes.bool,\n activeTab: PropTypes.string,\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.any,\n }),\n ).isRequired,\n tabsListAriaLabel: PropTypes.string,\n containerProps: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n};\n\nexport default TabsImpl;\n"],"names":["blockName","StyledTabsContainer","aggregatedClasses","StyledTabBarContainer","TabBarComponentsByType","TabTypes","NORMAL","TabBar","SUBTABS","SubTabBar","TabsImpl","props","animated","tabs","children","type","tabBarExtraContent","onTabChange","enableMouseEvents","innerRef","onlyRenderActiveTab","containerProps","allowTextSelection","tabsListAriaLabel","activeTab","firstSubtabRef","lastTabRef","withCarousel","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","useState","tabId","actualActiveTab","setActualActiveTab","firstTabRefByParent","useRef","lastTabRefByParent","useEffect","handleTabClick","useCallback","tab","handleDownArrow","e","preventDefault","stopPropagation","current","focus","handleUpArrow","PureTabBarComponent","useMemo","TabBarComponent","React","PureTabsPanels","PureTabsImpl","propTypes","PropTypes","bool","func","oneOf","element","string","arrayOf","shape","any","isRequired","object","oneOfType"],"mappings":"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"}
1
+ {"version":3,"file":"TabsImpl.js","sources":["../../src/TabsImpl.tsx"],"sourcesContent":["/* eslint-disable indent */\n/* eslint-disable max-lines */\nimport React, {\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabsPanels from './TabsPanels';\nimport TabBar from './TabBar';\nimport SubTabBar from './SubTabBar';\nimport { TabTypes } from './TabTypes';\n\nconst blockName = 'tabs';\n\nconst StyledTabsContainer = aggregatedClasses('div')(blockName);\nconst StyledTabBarContainer = aggregatedClasses('div')(\n blockName,\n 'tab-bar-container',\n);\n\nconst TabBarComponentsByType = {\n [TabTypes.NORMAL]: TabBar,\n [TabTypes.SUBTABS]: SubTabBar,\n};\n\nconst TabsImpl = (props) => {\n const {\n animated,\n children: tabs,\n type,\n tabBarExtraContent,\n onTabChange,\n enableMouseEvents,\n innerRef,\n onlyRenderActiveTab,\n containerProps,\n allowTextSelection,\n tabsListAriaLabel,\n activeTab,\n firstSubtabRef,\n lastTabRef,\n withCarousel,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile,\n } = props;\n const [actualActiveTab, setActualActiveTab] = useState(\n activeTab || tabs?.[0]?.props?.tabId,\n );\n const firstTabRefByParent = useRef(null);\n const lastTabRefByParent = useRef(null);\n\n useEffect(() => {\n if (activeTab) {\n setActualActiveTab(activeTab);\n }\n }, [activeTab]);\n\n const handleTabClick = useCallback(\n (tab) => {\n setActualActiveTab(tab);\n onTabChange(tab);\n },\n [onTabChange],\n );\n const handleDownArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (firstTabRefByParent?.current) firstTabRefByParent.current?.focus();\n },\n [firstTabRefByParent],\n );\n const handleUpArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (lastTabRef?.current) lastTabRef.current?.focus();\n },\n [lastTabRef],\n );\n\n const PureTabBarComponent = useMemo(() => {\n const TabBarComponent = TabBarComponentsByType[type] || TabBar;\n return (\n <TabBarComponent\n withCarousel={withCarousel}\n activeTab={actualActiveTab}\n onTabClick={handleTabClick}\n tabs={tabs}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRefByParent}\n handleDownArrow={handleDownArrow}\n handleUpArrow={handleUpArrow}\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n />\n );\n }, [\n type,\n withCarousel,\n actualActiveTab,\n handleTabClick,\n tabs,\n firstSubtabRef,\n lastTabRefByParent,\n handleDownArrow,\n handleUpArrow,\n isDSMobile,\n ]);\n const PureTabsPanels = useMemo(\n () => (\n <TabsPanels\n activeTab={actualActiveTab}\n allowTextSelection={allowTextSelection}\n animated={animated}\n enableMouseEvents={enableMouseEvents}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={handleTabClick}\n tabsComponents={tabs}\n lastTabRef={lastTabRefByParent}\n firstTabRefByParent={firstTabRefByParent}\n />\n ),\n [\n actualActiveTab,\n allowTextSelection,\n animated,\n enableMouseEvents,\n onlyRenderActiveTab,\n handleTabClick,\n tabs,\n lastTabRefByParent,\n firstTabRefByParent,\n ],\n );\n const PureTabsImpl = useMemo(\n () => (\n <StyledTabsContainer\n {...containerProps}\n aria-label={tabsListAriaLabel}\n innerRef={innerRef}\n role=\"tablist\"\n >\n <StyledTabBarContainer>\n {PureTabBarComponent}\n {tabBarExtraContent}\n </StyledTabBarContainer>\n {PureTabsPanels}\n </StyledTabsContainer>\n ),\n [\n containerProps,\n tabsListAriaLabel,\n innerRef,\n PureTabBarComponent,\n tabBarExtraContent,\n PureTabsPanels,\n ],\n );\n return PureTabsImpl;\n};\n\nTabsImpl.propTypes = {\n animated: PropTypes.bool,\n enableMouseEvents: PropTypes.bool,\n allowTextSelection: PropTypes.bool,\n onTabChange: PropTypes.func,\n type: PropTypes.oneOf(['normal', 'subtabs']),\n tabBarExtraContent: PropTypes.element,\n onlyRenderActiveTab: PropTypes.bool,\n withCarousel: PropTypes.bool,\n activeTab: PropTypes.string,\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.any,\n }),\n ).isRequired,\n tabsListAriaLabel: PropTypes.string,\n containerProps: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n};\n\nexport default TabsImpl;\n"],"names":["blockName","StyledTabsContainer","aggregatedClasses","StyledTabBarContainer","TabBarComponentsByType","TabTypes","NORMAL","TabBar","SUBTABS","SubTabBar","TabsImpl","props","animated","tabs","children","type","tabBarExtraContent","onTabChange","enableMouseEvents","innerRef","onlyRenderActiveTab","containerProps","allowTextSelection","tabsListAriaLabel","activeTab","firstSubtabRef","lastTabRef","withCarousel","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","useState","tabId","actualActiveTab","setActualActiveTab","firstTabRefByParent","useRef","lastTabRefByParent","useEffect","handleTabClick","useCallback","tab","handleDownArrow","e","preventDefault","stopPropagation","current","focus","handleUpArrow","PureTabBarComponent","useMemo","TabBarComponent","React","PureTabsPanels","PureTabsImpl","propTypes","PropTypes","bool","func","oneOf","element","string","arrayOf","shape","any","isRequired","object","oneOfType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAMA,SAAS,GAAG,MAAlB;AAEA,IAAMC,mBAAmB,GAAGC,8BAAiB,CAAC,KAAD,CAAjB,CAAyBF,SAAzB,CAA5B;AACA,IAAMG,qBAAqB,GAAGD,8BAAiB,CAAC,KAAD,CAAjB,CAC5BF,SAD4B,EAE5B,mBAF4B,CAA9B;AAKA,IAAMI,sBAAsB,2FACzBC,iBAAQ,CAACC,MADgB,EACPC,MADO,8DAEzBF,iBAAQ,CAACG,OAFgB,EAENC,SAFM,yBAA5B;;IAKMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAW;AAAA;;AAC1B,MACEC,QADF,GAmBID,KAnBJ,CACEC,QADF;AAAA,MAEYC,IAFZ,GAmBIF,KAnBJ,CAEEG,QAFF;AAAA,MAGEC,IAHF,GAmBIJ,KAnBJ,CAGEI,IAHF;AAAA,MAIEC,kBAJF,GAmBIL,KAnBJ,CAIEK,kBAJF;AAAA,MAKEC,WALF,GAmBIN,KAnBJ,CAKEM,WALF;AAAA,MAMEC,iBANF,GAmBIP,KAnBJ,CAMEO,iBANF;AAAA,MAOEC,QAPF,GAmBIR,KAnBJ,CAOEQ,QAPF;AAAA,MAQEC,mBARF,GAmBIT,KAnBJ,CAQES,mBARF;AAAA,MASEC,cATF,GAmBIV,KAnBJ,CASEU,cATF;AAAA,MAUEC,kBAVF,GAmBIX,KAnBJ,CAUEW,kBAVF;AAAA,MAWEC,iBAXF,GAmBIZ,KAnBJ,CAWEY,iBAXF;AAAA,MAYEC,SAZF,GAmBIb,KAnBJ,CAYEa,SAZF;AAAA,MAaEC,cAbF,GAmBId,KAnBJ,CAaEc,cAbF;AAAA,MAcEC,UAdF,GAmBIf,KAnBJ,CAcEe,UAdF;AAAA,MAeEC,YAfF,GAmBIhB,KAnBJ,CAeEgB,YAfF;AAAA,MAgBEC,mBAhBF,GAmBIjB,KAnBJ,CAgBEiB,mBAhBF;AAAA,MAiBEC,gBAjBF,GAmBIlB,KAnBJ,CAiBEkB,gBAjBF;AAAA,MAkBEC,UAlBF,GAmBInB,KAnBJ,CAkBEmB,UAlBF;;AAoBA,kBAA8CC,cAAQ,CACpDP,SAAS,KAAIX,IAAJ,aAAIA,IAAJ,iCAAIA,IAAI,CAAG,CAAH,CAAR,2DAAI,OAAWF,KAAf,iDAAI,aAAkBqB,KAAtB,CAD2C,CAAtD;AAAA;AAAA,MAAOC,eAAP;AAAA,MAAwBC,kBAAxB;;AAGA,MAAMC,mBAAmB,GAAGC,YAAM,CAAC,IAAD,CAAlC;AACA,MAAMC,kBAAkB,GAAGD,YAAM,CAAC,IAAD,CAAjC;AAEAE,EAAAA,eAAS,CAAC,YAAM;AACd,QAAId,SAAJ,EAAe;AACbU,MAAAA,kBAAkB,CAACV,SAAD,CAAlB;AACD;AACF,GAJQ,EAIN,CAACA,SAAD,CAJM,CAAT;AAMA,MAAMe,cAAc,GAAGC,iBAAW,CAChC,UAACC,GAAD,EAAS;AACPP,IAAAA,kBAAkB,CAACO,GAAD,CAAlB;AACAxB,IAAAA,WAAW,CAACwB,GAAD,CAAX;AACD,GAJ+B,EAKhC,CAACxB,WAAD,CALgC,CAAlC;AAOA,MAAMyB,eAAe,GAAGF,iBAAW,CACjC,UAACG,CAAD,EAAO;AAAA;;AACLA,IAAAA,CAAC,CAACC,cAAF;AACAD,IAAAA,CAAC,CAACE,eAAF;AACA,QAAIV,mBAAJ,aAAIA,mBAAJ,eAAIA,mBAAmB,CAAEW,OAAzB,EAAkC,yBAAAX,mBAAmB,CAACW,OAApB,gFAA6BC,KAA7B;AACnC,GALgC,EAMjC,CAACZ,mBAAD,CANiC,CAAnC;AAQA,MAAMa,aAAa,GAAGR,iBAAW,CAC/B,UAACG,CAAD,EAAO;AAAA;;AACLA,IAAAA,CAAC,CAACC,cAAF;AACAD,IAAAA,CAAC,CAACE,eAAF;AACA,QAAInB,UAAJ,aAAIA,UAAJ,eAAIA,UAAU,CAAEoB,OAAhB,EAAyB,uBAAApB,UAAU,CAACoB,OAAX,4EAAoBC,KAApB;AAC1B,GAL8B,EAM/B,CAACrB,UAAD,CAN+B,CAAjC;AASA,MAAMuB,mBAAmB,GAAGC,aAAO,CAAC,YAAM;AACxC,QAAMC,eAAe,GAAG/C,sBAAsB,CAACW,IAAD,CAAtB,IAAgCR,MAAxD;AACA,wBACE6C,wCAAC,eAAD;AACE,MAAA,YAAY,EAAEzB,YADhB;AAEE,MAAA,SAAS,EAAEM,eAFb;AAGE,MAAA,UAAU,EAAEM,cAHd;AAIE,MAAA,IAAI,EAAE1B,IAJR;AAKE,MAAA,cAAc,EAAEY,cALlB;AAME,MAAA,UAAU,EAAEY,kBANd;AAOE,MAAA,eAAe,EAAEK,eAPnB;AAQE,MAAA,aAAa,EAAEM,aARjB;AASE,MAAA,UAAU,EAAElB,UATd;AAUE,MAAA,mBAAmB,EAAEF,mBAVvB;AAWE,MAAA,gBAAgB,EAAEC;AAXpB,MADF;AAeD,GAjBkC,EAiBhC,CACDd,IADC,EAEDY,YAFC,EAGDM,eAHC,EAIDM,cAJC,EAKD1B,IALC,EAMDY,cANC,EAODY,kBAPC,EAQDK,eARC,EASDM,aATC,EAUDlB,UAVC,CAjBgC,CAAnC;AA6BA,MAAMuB,cAAc,GAAGH,aAAO,CAC5B;AAAA,wBACEE,wCAAC,UAAD;AACE,MAAA,SAAS,EAAEnB,eADb;AAEE,MAAA,kBAAkB,EAAEX,kBAFtB;AAGE,MAAA,QAAQ,EAAEV,QAHZ;AAIE,MAAA,iBAAiB,EAAEM,iBAJrB;AAKE,MAAA,mBAAmB,EAAEE,mBALvB;AAME,MAAA,WAAW,EAAEmB,cANf;AAOE,MAAA,cAAc,EAAE1B,IAPlB;AAQE,MAAA,UAAU,EAAEwB,kBARd;AASE,MAAA,mBAAmB,EAAEF;AATvB,MADF;AAAA,GAD4B,EAc5B,CACEF,eADF,EAEEX,kBAFF,EAGEV,QAHF,EAIEM,iBAJF,EAKEE,mBALF,EAMEmB,cANF,EAOE1B,IAPF,EAQEwB,kBARF,EASEF,mBATF,CAd4B,CAA9B;AA0BA,MAAMmB,YAAY,GAAGJ,aAAO,CAC1B;AAAA,wBACEE,wCAAC,mBAAD,mCACM/B,cADN;AAEE,oBAAYE,iBAFd;AAGE,MAAA,QAAQ,EAAEJ,QAHZ;AAIE,MAAA,IAAI,EAAC;AAJP,qBAMEiC,wCAAC,qBAAD,QACGH,mBADH,EAEGjC,kBAFH,CANF,EAUGqC,cAVH,CADF;AAAA,GAD0B,EAe1B,CACEhC,cADF,EAEEE,iBAFF,EAGEJ,QAHF,EAIE8B,mBAJF,EAKEjC,kBALF,EAMEqC,cANF,CAf0B,CAA5B;AAwBA,SAAOC,YAAP;AACD;;AAED5C,QAAQ,CAAC6C,SAAT,GAAqB;AACnB3C,EAAAA,QAAQ,EAAE4C,6BAAS,CAACC,IADD;AAEnBvC,EAAAA,iBAAiB,EAAEsC,6BAAS,CAACC,IAFV;AAGnBnC,EAAAA,kBAAkB,EAAEkC,6BAAS,CAACC,IAHX;AAInBxC,EAAAA,WAAW,EAAEuC,6BAAS,CAACE,IAJJ;AAKnB3C,EAAAA,IAAI,EAAEyC,6BAAS,CAACG,KAAV,CAAgB,CAAC,QAAD,EAAW,SAAX,CAAhB,CALa;AAMnB3C,EAAAA,kBAAkB,EAAEwC,6BAAS,CAACI,OANX;AAOnBxC,EAAAA,mBAAmB,EAAEoC,6BAAS,CAACC,IAPZ;AAQnB9B,EAAAA,YAAY,EAAE6B,6BAAS,CAACC,IARL;AASnBjC,EAAAA,SAAS,EAAEgC,6BAAS,CAACK,MATF;AAUnB/C,EAAAA,QAAQ,EAAE0C,6BAAS,CAACM,OAAV,CACRN,6BAAS,CAACO,KAAV,CAAgB;AACdhD,IAAAA,IAAI,EAAEyC,6BAAS,CAACQ;AADF,GAAhB,CADQ,EAIRC,UAdiB;AAenB1C,EAAAA,iBAAiB,EAAEiC,6BAAS,CAACK,MAfV;AAgBnBxC,EAAAA,cAAc,EAAEmC,6BAAS,CAACU,MAhBP;AAiBnB/C,EAAAA,QAAQ,EAAEqC,6BAAS,CAACW,SAAV,CAAoB,CAC5BX,6BAAS,CAACE,IADkB,EAE5BF,6BAAS,CAACO,KAAV,CAAgB;AAAEjB,IAAAA,OAAO,EAAEU,6BAAS,CAACQ;AAArB,GAAhB,CAF4B,CAApB,CAjBS;AAqBnBvC,EAAAA,cAAc,EAAE+B,6BAAS,CAACW,SAAV,CAAoB,CAClCX,6BAAS,CAACE,IADwB,EAElCF,6BAAS,CAACO,KAAV,CAAgB;AAAEjB,IAAAA,OAAO,EAAEU,6BAAS,CAACQ;AAArB,GAAhB,CAFkC,CAApB,CArBG;AAyBnBtC,EAAAA,UAAU,EAAE8B,6BAAS,CAACW,SAAV,CAAoB,CAC9BX,6BAAS,CAACE,IADoB,EAE9BF,6BAAS,CAACO,KAAV,CAAgB;AAAEjB,IAAAA,OAAO,EAAEU,6BAAS,CAACQ;AAArB,GAAhB,CAF8B,CAApB,CAzBO;;AA6BnB;AACAlC,EAAAA,UAAU,EAAE0B,6BAAS,CAACC,IA9BH;;AA+BnB;AACA7B,EAAAA,mBAAmB,EAAE4B,6BAAS,CAACC,IAhCZ;;AAiCnB;AACA5B,EAAAA,gBAAgB,EAAE2B,6BAAS,CAACC;AAlCT,CAArB;;;;"}
package/cjs/index.js CHANGED
@@ -30,8 +30,7 @@ require('@elliemae/ds-form/RequiredMark');
30
30
  require('resize-observer');
31
31
  require('styled-components');
32
32
  require('./Carousel.js');
33
- require('@elliemae/ds-icons/ChevronRight');
34
- require('@elliemae/ds-icons/ChevronLeft');
33
+ require('@elliemae/ds-icons');
35
34
  require('@elliemae/ds-button');
36
35
  require('./useResize.js');
37
36
  require('./SubTabBar.js');
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/esm/Carousel.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
2
2
  import React, { useRef, useState, useEffect } from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import ChevronRight from '@elliemae/ds-icons/ChevronRight';
5
- import ChevronLeft from '@elliemae/ds-icons/ChevronLeft';
4
+ import { ChevronLeft, ChevronRight } from '@elliemae/ds-icons';
6
5
  import styled from 'styled-components';
7
6
  import DSButton from '@elliemae/ds-button';
8
7
  import { useResize } from './useResize.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sources":["../../src/Carousel.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ChevronRight from '@elliemae/ds-icons/ChevronRight';\nimport ChevronLeft from '@elliemae/ds-icons/ChevronLeft';\nimport styled from 'styled-components';\nimport DSButton from '@elliemae/ds-button';\nimport { useResize } from './useResize';\n\nconst CarouselBtn = styled(DSButton)`\n position: absolute;\n z-index: 1;\n margin: 0;\n\n &:focus {\n & span {\n background-color: ${(props) => props.theme.colors.brand[200]};\n background-size: 90%;\n border-radius: 2px;\n border-color: transparent;\n }\n }\n\n && {\n width: 16px;\n // offset needed for svg gap caused by resizing icons and to\n // avoid covering blue active underline\n height: calc(100% - 2px);\n\n @media (min-width: ${({ theme }) => theme.breakpoints.medium}) {\n height: calc(100% - 4px);\n &:focus {\n & span {\n background-color: unset;\n }\n }\n }\n }\n ${(props) => (props.right ? 'right: 0;' : 'left: 0;')}\n\n && .em-ds-icon {\n height: 16px;\n width: 16px;\n }\n`;\n\nconst CarouselWrapper = styled.span`\n position: relative;\n padding: 0 16px;\n width: 100%;\n`;\n\nconst ChildrenWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n flex: 1;\n overflow: hidden;\n`;\n\nfunction isVisibleElement(el, container) {\n const rect = el.getBoundingClientRect();\n const cRect = container.getBoundingClientRect();\n const elemLeft = rect.left + 3;\n const elemRight = rect.right - 3;\n\n // Only completely visible elements return true:\n const isVisible = elemLeft >= cRect.left && elemRight <= cRect.right;\n return isVisible;\n}\n\nconst Carousel = ({ children, onScroll }) => {\n const itemsRef = useRef([]);\n const wrapRef = useRef(null);\n const leftRef = useRef(null);\n const rightRef = useRef(null);\n\n const shouldShowLeft = () =>\n children &&\n children[0] &&\n wrapRef.current &&\n itemsRef.current[0] &&\n !isVisibleElement(itemsRef.current[0], wrapRef.current);\n const shouldShowRight = () =>\n children &&\n children[children.length - 1] &&\n wrapRef.current &&\n itemsRef.current[children.length - 1] &&\n !isVisibleElement(itemsRef.current[children.length - 1], wrapRef.current);\n\n const [{ right, left, CHEVRON_FOCUS_FLAG }, setShow] = useState({\n right: false,\n left: false,\n CHEVRON_FOCUS_FLAG: false, // flag to replace lack of callback in useState hook\n });\n const recalcChevrons = () =>\n setShow({ right: shouldShowRight(), left: shouldShowLeft() });\n\n useEffect(() => {\n recalcChevrons();\n }, []);\n\n useEffect(() => {\n if (CHEVRON_FOCUS_FLAG) {\n // focus opposite chevron when current one hides\n if (!left && right && rightRef.current) {\n rightRef.current.focus();\n } else if (!right && left && leftRef.current) {\n leftRef.current.focus();\n }\n setShow({ right, left, CHEVRON_FOCUS_FLAG: false });\n }\n }, [CHEVRON_FOCUS_FLAG]);\n\n useResize(wrapRef, recalcChevrons);\n\n const getVisibleItemsOffset = () =>\n itemsRef.current.reduce((acc, c) => {\n if (isVisibleElement(c, wrapRef.current)) {\n const styles = window.getComputedStyle(c);\n const width = c.offsetWidth;\n const margin =\n parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n return acc + (width + margin);\n }\n return acc;\n }, 0);\n\n const rightClick = () => {\n wrapRef.current.scrollLeft += getVisibleItemsOffset();\n };\n\n const leftClick = () => {\n wrapRef.current.scrollLeft -= getVisibleItemsOffset();\n };\n\n const handleScroll = (e) => {\n // forces render when element.scrollTop is changed (out of react flow)\n setShow({\n right: shouldShowRight(),\n left: shouldShowLeft(),\n // to trigger focus logic at effect above\n CHEVRON_FOCUS_FLAG: true,\n });\n onScroll(e);\n };\n\n const handleClick = (e, onClick = () => {}) => {\n const tabListDomEl = wrapRef.current;\n const el = e.target;\n const rect = el.getBoundingClientRect();\n const cRect = tabListDomEl.getBoundingClientRect();\n\n if (!isVisibleElement(el, tabListDomEl)) {\n const containerWidth = cRect.width;\n const halfContainer = containerWidth / 2;\n const elementScrollPosition = rect.left - cRect.left;\n const positionInContainer = elementScrollPosition % containerWidth;\n const width = el.offsetWidth;\n\n // align to right\n if (positionInContainer > halfContainer) {\n wrapRef.current.scrollLeft +=\n width + positionInContainer - containerWidth;\n } else {\n // align left\n wrapRef.current.scrollLeft += positionInContainer;\n }\n recalcChevrons();\n }\n onClick(e);\n };\n\n return (\n <CarouselWrapper>\n {left && (\n <CarouselBtn\n data-testid=\"chevron-left\"\n buttonType=\"link\"\n innerRef={leftRef}\n size=\"s\"\n icon={<ChevronLeft size=\"s\" color={['brand-primary', '600']} />}\n onClick={leftClick}\n tabIndex={-1}\n />\n )}\n {right && (\n <CarouselBtn\n data-testid=\"chevron-right\"\n innerRef={rightRef}\n right\n size=\"s\"\n buttonType=\"link\"\n icon={<ChevronRight size=\"s\" color={['brand-primary', '600']} />}\n onClick={rightClick}\n tabIndex={-1}\n />\n )}\n <ChildrenWrap onScroll={handleScroll} ref={wrapRef}>\n {React.Children.map(children, (child, idx) =>\n React.cloneElement(child, {\n onClick: (e) => handleClick(e, child.props?.onClick),\n key: 'carousel'.concat(idx),\n ref: (el) => {\n itemsRef.current[idx] = el;\n // keep old refs\n if (typeof child.ref === 'function') {\n child.ref(el);\n }\n },\n }),\n )}\n </ChildrenWrap>\n </CarouselWrapper>\n );\n};\n\nCarousel.defaultProps = {\n onScroll: () => null,\n};\n\nCarousel.propTypes = {\n children: PropTypes.arrayOf(PropTypes.element).isRequired,\n onScroll: PropTypes.func,\n};\n\nexport default Carousel;\n"],"names":["CarouselBtn","styled","DSButton","props","theme","colors","brand","breakpoints","medium","right","CarouselWrapper","span","ChildrenWrap","div","isVisibleElement","el","container","rect","getBoundingClientRect","cRect","elemLeft","left","elemRight","isVisible","Carousel","children","onScroll","itemsRef","useRef","wrapRef","leftRef","rightRef","shouldShowLeft","current","shouldShowRight","length","useState","CHEVRON_FOCUS_FLAG","setShow","recalcChevrons","useEffect","focus","useResize","getVisibleItemsOffset","reduce","acc","c","styles","window","getComputedStyle","width","offsetWidth","margin","parseFloat","marginLeft","marginRight","rightClick","scrollLeft","leftClick","handleScroll","e","handleClick","onClick","tabListDomEl","target","containerWidth","halfContainer","elementScrollPosition","positionInContainer","React","Children","map","child","idx","cloneElement","key","concat","ref","defaultProps","propTypes","PropTypes","arrayOf","element","isRequired","func"],"mappings":";;;;;;;;;;AASA,IAAMA,WAAW,gBAAGC,MAAM,CAACC,QAAD,CAAT;AAAA;AAAA,gUAOS,UAACC,KAAD;AAAA,SAAWA,KAAK,CAACC,KAAN,CAAYC,MAAZ,CAAmBC,KAAnB,CAAyB,GAAzB,CAAX;AAAA,CAPT,EAoBQ;AAAA,MAAGF,KAAH,QAAGA,KAAH;AAAA,SAAeA,KAAK,CAACG,WAAN,CAAkBC,MAAjC;AAAA,CApBR,EA6Bb,UAACL,KAAD;AAAA,SAAYA,KAAK,CAACM,KAAN,GAAc,WAAd,GAA4B,UAAxC;AAAA,CA7Ba,CAAjB;AAqCA,IAAMC,eAAe,gBAAGT,MAAM,CAACU,IAAV;AAAA;AAAA,oDAArB;AAMA,IAAMC,YAAY,gBAAGX,MAAM,CAACY,GAAV;AAAA;AAAA,6DAAlB;;AAOA,SAASC,gBAAT,CAA0BC,EAA1B,EAA8BC,SAA9B,EAAyC;AACvC,MAAMC,IAAI,GAAGF,EAAE,CAACG,qBAAH,EAAb;AACA,MAAMC,KAAK,GAAGH,SAAS,CAACE,qBAAV,EAAd;AACA,MAAME,QAAQ,GAAGH,IAAI,CAACI,IAAL,GAAY,CAA7B;AACA,MAAMC,SAAS,GAAGL,IAAI,CAACR,KAAL,GAAa,CAA/B,CAJuC;;AAOvC,MAAMc,SAAS,GAAGH,QAAQ,IAAID,KAAK,CAACE,IAAlB,IAA0BC,SAAS,IAAIH,KAAK,CAACV,KAA/D;AACA,SAAOc,SAAP;AACD;;IAEKC,QAAQ,GAAG,SAAXA,QAAW,QAA4B;AAAA,MAAzBC,QAAyB,SAAzBA,QAAyB;AAAA,MAAfC,QAAe,SAAfA,QAAe;AAC3C,MAAMC,QAAQ,GAAGC,MAAM,CAAC,EAAD,CAAvB;AACA,MAAMC,OAAO,GAAGD,MAAM,CAAC,IAAD,CAAtB;AACA,MAAME,OAAO,GAAGF,MAAM,CAAC,IAAD,CAAtB;AACA,MAAMG,QAAQ,GAAGH,MAAM,CAAC,IAAD,CAAvB;;AAEA,MAAMI,cAAc,GAAG,SAAjBA,cAAiB;AAAA,WACrBP,QAAQ,IACRA,QAAQ,CAAC,CAAD,CADR,IAEAI,OAAO,CAACI,OAFR,IAGAN,QAAQ,CAACM,OAAT,CAAiB,CAAjB,CAHA,IAIA,CAACnB,gBAAgB,CAACa,QAAQ,CAACM,OAAT,CAAiB,CAAjB,CAAD,EAAsBJ,OAAO,CAACI,OAA9B,CALI;AAAA,GAAvB;;AAMA,MAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,WACtBT,QAAQ,IACRA,QAAQ,CAACA,QAAQ,CAACU,MAAT,GAAkB,CAAnB,CADR,IAEAN,OAAO,CAACI,OAFR,IAGAN,QAAQ,CAACM,OAAT,CAAiBR,QAAQ,CAACU,MAAT,GAAkB,CAAnC,CAHA,IAIA,CAACrB,gBAAgB,CAACa,QAAQ,CAACM,OAAT,CAAiBR,QAAQ,CAACU,MAAT,GAAkB,CAAnC,CAAD,EAAwCN,OAAO,CAACI,OAAhD,CALK;AAAA,GAAxB;;AAOA,kBAAuDG,QAAQ,CAAC;AAC9D3B,IAAAA,KAAK,EAAE,KADuD;AAE9DY,IAAAA,IAAI,EAAE,KAFwD;AAG9DgB,IAAAA,kBAAkB,EAAE,KAH0C;;AAAA,GAAD,CAA/D;AAAA;AAAA;AAAA,MAAS5B,KAAT,eAASA,KAAT;AAAA,MAAgBY,IAAhB,eAAgBA,IAAhB;AAAA,MAAsBgB,kBAAtB,eAAsBA,kBAAtB;AAAA,MAA4CC,OAA5C;;AAKA,MAAMC,cAAc,GAAG,SAAjBA,cAAiB;AAAA,WACrBD,OAAO,CAAC;AAAE7B,MAAAA,KAAK,EAAEyB,eAAe,EAAxB;AAA4Bb,MAAAA,IAAI,EAAEW,cAAc;AAAhD,KAAD,CADc;AAAA,GAAvB;;AAGAQ,EAAAA,SAAS,CAAC,YAAM;AACdD,IAAAA,cAAc;AACf,GAFQ,EAEN,EAFM,CAAT;AAIAC,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIH,kBAAJ,EAAwB;AACtB;AACA,UAAI,CAAChB,IAAD,IAASZ,KAAT,IAAkBsB,QAAQ,CAACE,OAA/B,EAAwC;AACtCF,QAAAA,QAAQ,CAACE,OAAT,CAAiBQ,KAAjB;AACD,OAFD,MAEO,IAAI,CAAChC,KAAD,IAAUY,IAAV,IAAkBS,OAAO,CAACG,OAA9B,EAAuC;AAC5CH,QAAAA,OAAO,CAACG,OAAR,CAAgBQ,KAAhB;AACD;;AACDH,MAAAA,OAAO,CAAC;AAAE7B,QAAAA,KAAK,EAALA,KAAF;AAASY,QAAAA,IAAI,EAAJA,IAAT;AAAegB,QAAAA,kBAAkB,EAAE;AAAnC,OAAD,CAAP;AACD;AACF,GAVQ,EAUN,CAACA,kBAAD,CAVM,CAAT;AAYAK,EAAAA,SAAS,CAACb,OAAD,EAAUU,cAAV,CAAT;;AAEA,MAAMI,qBAAqB,GAAG,SAAxBA,qBAAwB;AAAA,WAC5BhB,QAAQ,CAACM,OAAT,CAAiBW,MAAjB,CAAwB,UAACC,GAAD,EAAMC,CAAN,EAAY;AAClC,UAAIhC,gBAAgB,CAACgC,CAAD,EAAIjB,OAAO,CAACI,OAAZ,CAApB,EAA0C;AACxC,YAAMc,MAAM,GAAGC,MAAM,CAACC,gBAAP,CAAwBH,CAAxB,CAAf;AACA,YAAMI,KAAK,GAAGJ,CAAC,CAACK,WAAhB;AACA,YAAMC,MAAM,GACVC,UAAU,CAACN,MAAM,CAACO,UAAR,CAAV,GAAgCD,UAAU,CAACN,MAAM,CAACQ,WAAR,CAD5C;AAEA,eAAOV,GAAG,IAAIK,KAAK,GAAGE,MAAZ,CAAV;AACD;;AACD,aAAOP,GAAP;AACD,KATD,EASG,CATH,CAD4B;AAAA,GAA9B;;AAYA,MAAMW,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB3B,IAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8Bd,qBAAqB,EAAnD;AACD,GAFD;;AAIA,MAAMe,SAAS,GAAG,SAAZA,SAAY,GAAM;AACtB7B,IAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8Bd,qBAAqB,EAAnD;AACD,GAFD;;AAIA,MAAMgB,YAAY,GAAG,SAAfA,YAAe,CAACC,CAAD,EAAO;AAC1B;AACAtB,IAAAA,OAAO,CAAC;AACN7B,MAAAA,KAAK,EAAEyB,eAAe,EADhB;AAENb,MAAAA,IAAI,EAAEW,cAAc,EAFd;AAGN;AACAK,MAAAA,kBAAkB,EAAE;AAJd,KAAD,CAAP;AAMAX,IAAAA,QAAQ,CAACkC,CAAD,CAAR;AACD,GATD;;AAWA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACD,CAAD,EAA2B;AAAA,QAAvBE,OAAuB,uEAAb,YAAM,EAAO;AAC7C,QAAMC,YAAY,GAAGlC,OAAO,CAACI,OAA7B;AACA,QAAMlB,EAAE,GAAG6C,CAAC,CAACI,MAAb;AACA,QAAM/C,IAAI,GAAGF,EAAE,CAACG,qBAAH,EAAb;AACA,QAAMC,KAAK,GAAG4C,YAAY,CAAC7C,qBAAb,EAAd;;AAEA,QAAI,CAACJ,gBAAgB,CAACC,EAAD,EAAKgD,YAAL,CAArB,EAAyC;AACvC,UAAME,cAAc,GAAG9C,KAAK,CAAC+B,KAA7B;AACA,UAAMgB,aAAa,GAAGD,cAAc,GAAG,CAAvC;AACA,UAAME,qBAAqB,GAAGlD,IAAI,CAACI,IAAL,GAAYF,KAAK,CAACE,IAAhD;AACA,UAAM+C,mBAAmB,GAAGD,qBAAqB,GAAGF,cAApD;AACA,UAAMf,KAAK,GAAGnC,EAAE,CAACoC,WAAjB,CALuC;;AAQvC,UAAIiB,mBAAmB,GAAGF,aAA1B,EAAyC;AACvCrC,QAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IACEP,KAAK,GAAGkB,mBAAR,GAA8BH,cADhC;AAED,OAHD,MAGO;AACL;AACApC,QAAAA,OAAO,CAACI,OAAR,CAAgBwB,UAAhB,IAA8BW,mBAA9B;AACD;;AACD7B,MAAAA,cAAc;AACf;;AACDuB,IAAAA,OAAO,CAACF,CAAD,CAAP;AACD,GAxBD;;AA0BA,sBACE,oBAAC,eAAD,QACGvC,IAAI,iBACH,oBAAC,WAAD;AACE,mBAAY,cADd;AAEE,IAAA,UAAU,EAAC,MAFb;AAGE,IAAA,QAAQ,EAAES,OAHZ;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,IAAI,eAAE,oBAAC,WAAD;AAAa,MAAA,IAAI,EAAC,GAAlB;AAAsB,MAAA,KAAK,EAAE,CAAC,eAAD,EAAkB,KAAlB;AAA7B,MALR;AAME,IAAA,OAAO,EAAE4B,SANX;AAOE,IAAA,QAAQ,EAAE,CAAC;AAPb,IAFJ,EAYGjD,KAAK,iBACJ,oBAAC,WAAD;AACE,mBAAY,eADd;AAEE,IAAA,QAAQ,EAAEsB,QAFZ;AAGE,IAAA,KAAK,MAHP;AAIE,IAAA,IAAI,EAAC,GAJP;AAKE,IAAA,UAAU,EAAC,MALb;AAME,IAAA,IAAI,eAAE,oBAAC,YAAD;AAAc,MAAA,IAAI,EAAC,GAAnB;AAAuB,MAAA,KAAK,EAAE,CAAC,eAAD,EAAkB,KAAlB;AAA9B,MANR;AAOE,IAAA,OAAO,EAAEyB,UAPX;AAQE,IAAA,QAAQ,EAAE,CAAC;AARb,IAbJ,eAwBE,oBAAC,YAAD;AAAc,IAAA,QAAQ,EAAEG,YAAxB;AAAsC,IAAA,GAAG,EAAE9B;AAA3C,KACGwC,KAAK,CAACC,QAAN,CAAeC,GAAf,CAAmB9C,QAAnB,EAA6B,UAAC+C,KAAD,EAAQC,GAAR;AAAA,wBAC5BJ,KAAK,CAACK,YAAN,CAAmBF,KAAnB,EAA0B;AACxBV,MAAAA,OAAO,EAAE,iBAACF,CAAD;AAAA;;AAAA,eAAOC,WAAW,CAACD,CAAD,kBAAIY,KAAK,CAACrE,KAAV,iDAAI,aAAa2D,OAAjB,CAAlB;AAAA,OADe;AAExBa,MAAAA,GAAG,EAAE,WAAWC,MAAX,CAAkBH,GAAlB,CAFmB;AAGxBI,MAAAA,GAAG,EAAE,aAAC9D,EAAD,EAAQ;AACXY,QAAAA,QAAQ,CAACM,OAAT,CAAiBwC,GAAjB,IAAwB1D,EAAxB,CADW;;AAGX,YAAI,OAAOyD,KAAK,CAACK,GAAb,KAAqB,UAAzB,EAAqC;AACnCL,UAAAA,KAAK,CAACK,GAAN,CAAU9D,EAAV;AACD;AACF;AATuB,KAA1B,CAD4B;AAAA,GAA7B,CADH,CAxBF,CADF;AA0CD;;AAEDS,QAAQ,CAACsD,YAAT,GAAwB;AACtBpD,EAAAA,QAAQ,EAAE;AAAA,WAAM,IAAN;AAAA;AADY,CAAxB;AAIAF,QAAQ,CAACuD,SAAT,GAAqB;AACnBtD,EAAAA,QAAQ,EAAEuD,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,OAA5B,EAAqCC,UAD5B;AAEnBzD,EAAAA,QAAQ,EAAEsD,SAAS,CAACI;AAFD,CAArB;;;;"}
1
+ {"version":3,"file":"Carousel.js","sources":["../../src/Carousel.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ChevronRight, ChevronLeft } from '@elliemae/ds-icons';\nimport styled from 'styled-components';\nimport DSButton from '@elliemae/ds-button';\nimport { useResize } from './useResize';\n\nconst CarouselBtn = styled(DSButton)`\n position: absolute;\n z-index: 1;\n margin: 0;\n\n &:focus {\n & span {\n background-color: ${(props) => props.theme.colors.brand[200]};\n background-size: 90%;\n border-radius: 2px;\n border-color: transparent;\n }\n }\n\n && {\n width: 16px;\n // offset needed for svg gap caused by resizing icons and to\n // avoid covering blue active underline\n height: calc(100% - 2px);\n\n @media (min-width: ${({ theme }) => theme.breakpoints.medium}) {\n height: calc(100% - 4px);\n &:focus {\n & span {\n background-color: unset;\n }\n }\n }\n }\n ${(props) => (props.right ? 'right: 0;' : 'left: 0;')}\n\n && .em-ds-icon {\n height: 16px;\n width: 16px;\n }\n`;\n\nconst CarouselWrapper = styled.span`\n position: relative;\n padding: 0 16px;\n width: 100%;\n`;\n\nconst ChildrenWrap = styled.div`\n display: flex;\n flex-wrap: nowrap;\n flex: 1;\n overflow: hidden;\n`;\n\nfunction isVisibleElement(el, container) {\n const rect = el.getBoundingClientRect();\n const cRect = container.getBoundingClientRect();\n const elemLeft = rect.left + 3;\n const elemRight = rect.right - 3;\n\n // Only completely visible elements return true:\n const isVisible = elemLeft >= cRect.left && elemRight <= cRect.right;\n return isVisible;\n}\n\nconst Carousel = ({ children, onScroll }) => {\n const itemsRef = useRef([]);\n const wrapRef = useRef(null);\n const leftRef = useRef(null);\n const rightRef = useRef(null);\n\n const shouldShowLeft = () =>\n children &&\n children[0] &&\n wrapRef.current &&\n itemsRef.current[0] &&\n !isVisibleElement(itemsRef.current[0], wrapRef.current);\n const shouldShowRight = () =>\n children &&\n children[children.length - 1] &&\n wrapRef.current &&\n itemsRef.current[children.length - 1] &&\n !isVisibleElement(itemsRef.current[children.length - 1], wrapRef.current);\n\n const [{ right, left, CHEVRON_FOCUS_FLAG }, setShow] = useState({\n right: false,\n left: false,\n CHEVRON_FOCUS_FLAG: false, // flag to replace lack of callback in useState hook\n });\n const recalcChevrons = () => setShow({ right: shouldShowRight(), left: shouldShowLeft() });\n\n useEffect(() => {\n recalcChevrons();\n }, []);\n\n useEffect(() => {\n if (CHEVRON_FOCUS_FLAG) {\n // focus opposite chevron when current one hides\n if (!left && right && rightRef.current) {\n rightRef.current.focus();\n } else if (!right && left && leftRef.current) {\n leftRef.current.focus();\n }\n setShow({ right, left, CHEVRON_FOCUS_FLAG: false });\n }\n }, [CHEVRON_FOCUS_FLAG]);\n\n useResize(wrapRef, recalcChevrons);\n\n const getVisibleItemsOffset = () =>\n itemsRef.current.reduce((acc, c) => {\n if (isVisibleElement(c, wrapRef.current)) {\n const styles = window.getComputedStyle(c);\n const width = c.offsetWidth;\n const margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n return acc + (width + margin);\n }\n return acc;\n }, 0);\n\n const rightClick = () => {\n wrapRef.current.scrollLeft += getVisibleItemsOffset();\n };\n\n const leftClick = () => {\n wrapRef.current.scrollLeft -= getVisibleItemsOffset();\n };\n\n const handleScroll = (e) => {\n // forces render when element.scrollTop is changed (out of react flow)\n setShow({\n right: shouldShowRight(),\n left: shouldShowLeft(),\n // to trigger focus logic at effect above\n CHEVRON_FOCUS_FLAG: true,\n });\n onScroll(e);\n };\n\n const handleClick = (e, onClick = () => {}) => {\n const tabListDomEl = wrapRef.current;\n const el = e.target;\n const rect = el.getBoundingClientRect();\n const cRect = tabListDomEl.getBoundingClientRect();\n\n if (!isVisibleElement(el, tabListDomEl)) {\n const containerWidth = cRect.width;\n const halfContainer = containerWidth / 2;\n const elementScrollPosition = rect.left - cRect.left;\n const positionInContainer = elementScrollPosition % containerWidth;\n const width = el.offsetWidth;\n\n // align to right\n if (positionInContainer > halfContainer) {\n wrapRef.current.scrollLeft += width + positionInContainer - containerWidth;\n } else {\n // align left\n wrapRef.current.scrollLeft += positionInContainer;\n }\n recalcChevrons();\n }\n onClick(e);\n };\n\n return (\n <CarouselWrapper>\n {left && (\n <CarouselBtn\n data-testid=\"chevron-left\"\n buttonType=\"link\"\n innerRef={leftRef}\n size=\"s\"\n icon={<ChevronLeft size=\"s\" color={['brand-primary', '600']} />}\n onClick={leftClick}\n tabIndex={-1}\n />\n )}\n {right && (\n <CarouselBtn\n data-testid=\"chevron-right\"\n innerRef={rightRef}\n right\n size=\"s\"\n buttonType=\"link\"\n icon={<ChevronRight size=\"s\" color={['brand-primary', '600']} />}\n onClick={rightClick}\n tabIndex={-1}\n />\n )}\n <ChildrenWrap onScroll={handleScroll} ref={wrapRef}>\n {React.Children.map(children, (child, idx) =>\n React.cloneElement(child, {\n onClick: (e) => handleClick(e, child.props?.onClick),\n key: 'carousel'.concat(idx),\n ref: (el) => {\n itemsRef.current[idx] = el;\n // keep old refs\n if (typeof child.ref === 'function') {\n child.ref(el);\n }\n },\n }),\n )}\n </ChildrenWrap>\n </CarouselWrapper>\n );\n};\n\nCarousel.defaultProps = {\n onScroll: () => null,\n};\n\nCarousel.propTypes = {\n children: PropTypes.arrayOf(PropTypes.element).isRequired,\n onScroll: PropTypes.func,\n};\n\nexport default Carousel;\n"],"names":["CarouselBtn","styled","DSButton","props","theme","colors","brand","breakpoints","medium","right","CarouselWrapper","span","ChildrenWrap","div","isVisibleElement","el","container","rect","getBoundingClientRect","cRect","elemLeft","left","elemRight","isVisible","Carousel","children","onScroll","itemsRef","useRef","wrapRef","leftRef","rightRef","shouldShowLeft","current","shouldShowRight","length","useState","CHEVRON_FOCUS_FLAG","setShow","recalcChevrons","useEffect","focus","useResize","getVisibleItemsOffset","reduce","acc","c","styles","window","getComputedStyle","width","offsetWidth","margin","parseFloat","marginLeft","marginRight","rightClick","scrollLeft","leftClick","handleScroll","e","handleClick","onClick","tabListDomEl","target","containerWidth","halfContainer","elementScrollPosition","positionInContainer","React","Children","map","child","idx","cloneElement","key","concat","ref","defaultProps","propTypes","PropTypes","arrayOf","element","isRequired","func"],"mappings":"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"}
package/esm/DSTabs.js CHANGED
@@ -25,8 +25,7 @@ import '@elliemae/ds-form/RequiredMark';
25
25
  import 'resize-observer';
26
26
  import 'styled-components';
27
27
  import './Carousel.js';
28
- import '@elliemae/ds-icons/ChevronRight';
29
- import '@elliemae/ds-icons/ChevronLeft';
28
+ import '@elliemae/ds-icons';
30
29
  import '@elliemae/ds-button';
31
30
  import './useResize.js';
32
31
  import './SubTabBar.js';
package/esm/DSTabs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"DSTabs.js","sources":["../../src/DSTabs.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport { TabTypes } from './TabTypes';\nimport TabsImpl from './TabsImpl';\nimport DSTab from './DSTab';\n\nconst DSTabs = ({\n containerProps = {},\n innerRef,\n animated = true,\n enableMouseEvents = false,\n allowTextSelection = false,\n onTabChange = () => null,\n tabsListAriaLabel = 'Tab list',\n type = TabTypes.NORMAL,\n tabBarExtraContent = undefined,\n children: tabs,\n onlyRenderActiveTab = false,\n activeTab,\n withCarousel = false,\n firstSubtabRef,\n lastTabRef,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile = false,\n}) => (\n <TabsImpl\n activeTab={activeTab}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRef}\n allowTextSelection={allowTextSelection}\n animated={animated}\n containerProps={containerProps}\n enableMouseEvents={enableMouseEvents}\n innerRef={innerRef}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={onTabChange}\n tabBarExtraContent={tabBarExtraContent}\n tabsListAriaLabel={tabsListAriaLabel}\n type={type}\n withCarousel={withCarousel}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n isDSMobile={isDSMobile}\n >\n {tabs}\n </TabsImpl>\n);\n\nconst props = {\n /** Whether the tab transition should animate or not */\n animated: PropTypes.bool.description(\n 'Whether the tab transition should animate or not',\n ),\n /** Enables tab transition with mouse drag events */\n enableMouseEvents: PropTypes.bool.description(\n 'Enables tab transition with mouse drag events',\n ),\n /** Allow text selection when mouse drag events are active */\n allowTextSelection: PropTypes.bool.description(\n 'Allow text selection when mouse drag events are active',\n ),\n /** Handler when a user clicks on a different tab */\n onTabChange: PropTypes.func.description(\n 'Handler when a user clicks on a different tab',\n ),\n /** Tab type */\n type: PropTypes.oneOf(['normal', 'subtabs']).description('Tab type'),\n /** Extra content next to the tabs pills */\n tabBarExtraContent: PropTypes.element.description(\n 'Extra content next to the tabs pills',\n ),\n /** Only renders the active tab in the DOM */\n onlyRenderActiveTab: PropTypes.bool.description(\n 'Only renders the active tab in the DOM',\n ),\n /** Mobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool.description(\n 'Mobile only flexible tabs mode',\n ),\n /** Mobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool.description('Mobile only fixed tabs mode'),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool.description(\n \"Whether or not it's a ds-tab from DSMobile tabs\",\n ),\n /** Activate carousel behavior */\n withCarousel: PropTypes.bool.description('Activate carousel behavior'),\n /** The active tabId */\n activeTab: PropTypes.string.description('The active tabId'),\n /** tabs children */\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.instanceOf([\n PropTypes.instanceOf(DSTab),\n PropTypes.array,\n ]),\n }),\n ).isRequired.description('tabs children'),\n /** Aria label for the list */\n tabsListAriaLabel: PropTypes.string.description('Aria label for the list'),\n /** Additional properties for the container */\n containerProps: PropTypes.object.description(\n 'Additional properties for the container',\n ),\n /** REF */\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('REF'),\n /** internal ref to handle keyboard a11y behavior */\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n /** internal ref to handle keyboard a11y behavior */\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n};\n\nDSTabs.propTypes = props;\nconst DSTabsWithSchema = describe(DSTabs);\nDSTabsWithSchema.propTypes = props;\n\nexport { DSTabs, DSTabsWithSchema };\nexport default DSTabs;\n"],"names":["DSTabs","containerProps","innerRef","animated","enableMouseEvents","allowTextSelection","onTabChange","tabsListAriaLabel","type","TabTypes","NORMAL","tabBarExtraContent","undefined","tabs","children","onlyRenderActiveTab","activeTab","withCarousel","firstSubtabRef","lastTabRef","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","props","PropTypes","bool","description","func","oneOf","element","string","arrayOf","shape","instanceOf","DSTab","array","isRequired","object","oneOfType","current","any","propTypes","DSTabsWithSchema","describe"],"mappings":"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"}
1
+ {"version":3,"file":"DSTabs.js","sources":["../../src/DSTabs.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport { TabTypes } from './TabTypes';\nimport TabsImpl from './TabsImpl';\nimport DSTab from './DSTab';\n\nconst DSTabs = ({\n containerProps = {},\n innerRef,\n animated = true,\n enableMouseEvents = false,\n allowTextSelection = false,\n onTabChange = () => null,\n tabsListAriaLabel = 'Tab list',\n type = TabTypes.NORMAL,\n tabBarExtraContent = undefined,\n children: tabs,\n onlyRenderActiveTab = false,\n activeTab,\n withCarousel = false,\n firstSubtabRef,\n lastTabRef,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile = false,\n}) => (\n <TabsImpl\n activeTab={activeTab}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRef}\n allowTextSelection={allowTextSelection}\n animated={animated}\n containerProps={containerProps}\n enableMouseEvents={enableMouseEvents}\n innerRef={innerRef}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={onTabChange}\n tabBarExtraContent={tabBarExtraContent}\n tabsListAriaLabel={tabsListAriaLabel}\n type={type}\n withCarousel={withCarousel}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n isDSMobile={isDSMobile}\n >\n {tabs}\n </TabsImpl>\n);\n\nconst props = {\n /** Whether the tab transition should animate or not */\n animated: PropTypes.bool.description(\n 'Whether the tab transition should animate or not',\n ),\n /** Enables tab transition with mouse drag events */\n enableMouseEvents: PropTypes.bool.description(\n 'Enables tab transition with mouse drag events',\n ),\n /** Allow text selection when mouse drag events are active */\n allowTextSelection: PropTypes.bool.description(\n 'Allow text selection when mouse drag events are active',\n ),\n /** Handler when a user clicks on a different tab */\n onTabChange: PropTypes.func.description(\n 'Handler when a user clicks on a different tab',\n ),\n /** Tab type */\n type: PropTypes.oneOf(['normal', 'subtabs']).description('Tab type'),\n /** Extra content next to the tabs pills */\n tabBarExtraContent: PropTypes.element.description(\n 'Extra content next to the tabs pills',\n ),\n /** Only renders the active tab in the DOM */\n onlyRenderActiveTab: PropTypes.bool.description(\n 'Only renders the active tab in the DOM',\n ),\n /** Mobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool.description(\n 'Mobile only flexible tabs mode',\n ),\n /** Mobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool.description('Mobile only fixed tabs mode'),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool.description(\n \"Whether or not it's a ds-tab from DSMobile tabs\",\n ),\n /** Activate carousel behavior */\n withCarousel: PropTypes.bool.description('Activate carousel behavior'),\n /** The active tabId */\n activeTab: PropTypes.string.description('The active tabId'),\n /** tabs children */\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.instanceOf([\n PropTypes.instanceOf(DSTab),\n PropTypes.array,\n ]),\n }),\n ).isRequired.description('tabs children'),\n /** Aria label for the list */\n tabsListAriaLabel: PropTypes.string.description('Aria label for the list'),\n /** Additional properties for the container */\n containerProps: PropTypes.object.description(\n 'Additional properties for the container',\n ),\n /** REF */\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('REF'),\n /** internal ref to handle keyboard a11y behavior */\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n /** internal ref to handle keyboard a11y behavior */\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]).description('internal ref to handle keyboard a11y behavior'),\n};\n\nDSTabs.propTypes = props;\nconst DSTabsWithSchema = describe(DSTabs);\nDSTabsWithSchema.propTypes = props;\n\nexport { DSTabs, DSTabsWithSchema };\nexport default DSTabs;\n"],"names":["DSTabs","containerProps","innerRef","animated","enableMouseEvents","allowTextSelection","onTabChange","tabsListAriaLabel","type","TabTypes","NORMAL","tabBarExtraContent","undefined","tabs","children","onlyRenderActiveTab","activeTab","withCarousel","firstSubtabRef","lastTabRef","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","props","PropTypes","bool","description","func","oneOf","element","string","arrayOf","shape","instanceOf","DSTab","array","isRequired","object","oneOfType","current","any","propTypes","DSTabsWithSchema","describe"],"mappings":"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"}
package/esm/SubTabBar.js CHANGED
@@ -16,8 +16,7 @@ import 'memoize-one';
16
16
  import 'resize-observer';
17
17
  import 'styled-components';
18
18
  import '@babel/runtime/helpers/esm/slicedToArray';
19
- import '@elliemae/ds-icons/ChevronRight';
20
- import '@elliemae/ds-icons/ChevronLeft';
19
+ import '@elliemae/ds-icons';
21
20
  import '@elliemae/ds-button';
22
21
  import './useResize.js';
23
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"SubTabBar.js","sources":["../../src/SubTabBar.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabBar from './TabBar';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\n\nconst SubTabList = aggregatedClasses('div')(\n blockName,\n 'subtabs-list',\n ({ withCarousel }) => ({ carousel: withCarousel }),\n);\n\nconst SubTabBar = ({\n withCarousel,\n tabs = [],\n activeTab = '',\n onTabClick = () => null,\n firstSubtabRef,\n handleUpArrow,\n}) => (\n <TabBar\n activeTab={activeTab}\n onTabClick={onTabClick}\n handleUpArrow={handleUpArrow}\n firstSubtabRef={firstSubtabRef}\n renderCustomTabBar={({ tabsComponents, innerRef }) => (\n <SubTabList\n withCarousel={withCarousel}\n innerRef={innerRef}\n data-testid=\"subtabs-list\"\n >\n {withCarousel ? <Carousel>{tabsComponents}</Carousel> : tabsComponents}\n </SubTabList>\n )}\n showSelectionIndicator={false}\n showSeparator\n tabs={tabs}\n />\n);\n\nSubTabBar.propTypes = {\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n activeTab: PropTypes.string,\n onTabClick: PropTypes.func.isRequired,\n withCarousel: PropTypes.bool,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n};\n\nexport default SubTabBar;\n"],"names":["blockName","SubTabList","aggregatedClasses","withCarousel","carousel","SubTabBar","tabs","activeTab","onTabClick","firstSubtabRef","handleUpArrow","tabsComponents","innerRef","propTypes","PropTypes","arrayOf","element","isRequired","string","func","bool","oneOfType","shape","current","any"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,SAAS,GAAG,cAAlB;AAEA,IAAMC,UAAU,GAAGC,iBAAiB,CAAC,KAAD,CAAjB,CACjBF,SADiB,EAEjB,cAFiB,EAGjB;AAAA,MAAGG,YAAH,QAAGA,YAAH;AAAA,SAAuB;AAAEC,IAAAA,QAAQ,EAAED;AAAZ,GAAvB;AAAA,CAHiB,CAAnB;;IAMME,SAAS,GAAG,SAAZA,SAAY;AAAA,MAChBF,YADgB,SAChBA,YADgB;AAAA,yBAEhBG,IAFgB;AAAA,MAEhBA,IAFgB,2BAET,EAFS;AAAA,8BAGhBC,SAHgB;AAAA,MAGhBA,SAHgB,gCAGJ,EAHI;AAAA,+BAIhBC,UAJgB;AAAA,MAIhBA,UAJgB,iCAIH;AAAA,WAAM,IAAN;AAAA,GAJG;AAAA,MAKhBC,cALgB,SAKhBA,cALgB;AAAA,MAMhBC,aANgB,SAMhBA,aANgB;AAAA,sBAQhB,oBAAC,MAAD;AACE,IAAA,SAAS,EAAEH,SADb;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,aAAa,EAAEE,aAHjB;AAIE,IAAA,cAAc,EAAED,cAJlB;AAKE,IAAA,kBAAkB,EAAE;AAAA,UAAGE,cAAH,SAAGA,cAAH;AAAA,UAAmBC,QAAnB,SAAmBA,QAAnB;AAAA,0BAClB,oBAAC,UAAD;AACE,QAAA,YAAY,EAAET,YADhB;AAEE,QAAA,QAAQ,EAAES,QAFZ;AAGE,uBAAY;AAHd,SAKGT,YAAY,gBAAG,oBAAC,QAAD,QAAWQ,cAAX,CAAH,GAA2CA,cAL1D,CADkB;AAAA,KALtB;AAcE,IAAA,sBAAsB,EAAE,KAd1B;AAeE,IAAA,aAAa,MAff;AAgBE,IAAA,IAAI,EAAEL;AAhBR,IARgB;AAAA;;AA4BlBD,SAAS,CAACQ,SAAV,GAAsB;AACpBP,EAAAA,IAAI,EAAEQ,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,OAA5B,EAAqCC,UADvB;AAEpBV,EAAAA,SAAS,EAAEO,SAAS,CAACI,MAFD;AAGpBV,EAAAA,UAAU,EAAEM,SAAS,CAACK,IAAV,CAAeF,UAHP;AAIpBd,EAAAA,YAAY,EAAEW,SAAS,CAACM,IAJJ;AAKpBV,EAAAA,aAAa,EAAEI,SAAS,CAACK,IALL;AAMpBV,EAAAA,cAAc,EAAEK,SAAS,CAACO,SAAV,CAAoB,CAClCP,SAAS,CAACK,IADwB,EAElCL,SAAS,CAACQ,KAAV,CAAgB;AAAEC,IAAAA,OAAO,EAAET,SAAS,CAACU;AAArB,GAAhB,CAFkC,CAApB;AANI,CAAtB;;;;"}
1
+ {"version":3,"file":"SubTabBar.js","sources":["../../src/SubTabBar.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabBar from './TabBar';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\n\nconst SubTabList = aggregatedClasses('div')(\n blockName,\n 'subtabs-list',\n ({ withCarousel }) => ({ carousel: withCarousel }),\n);\n\nconst SubTabBar = ({\n withCarousel,\n tabs = [],\n activeTab = '',\n onTabClick = () => null,\n firstSubtabRef,\n handleUpArrow,\n}) => (\n <TabBar\n activeTab={activeTab}\n onTabClick={onTabClick}\n handleUpArrow={handleUpArrow}\n firstSubtabRef={firstSubtabRef}\n renderCustomTabBar={({ tabsComponents, innerRef }) => (\n <SubTabList\n withCarousel={withCarousel}\n innerRef={innerRef}\n data-testid=\"subtabs-list\"\n >\n {withCarousel ? <Carousel>{tabsComponents}</Carousel> : tabsComponents}\n </SubTabList>\n )}\n showSelectionIndicator={false}\n showSeparator\n tabs={tabs}\n />\n);\n\nSubTabBar.propTypes = {\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n activeTab: PropTypes.string,\n onTabClick: PropTypes.func.isRequired,\n withCarousel: PropTypes.bool,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n};\n\nexport default SubTabBar;\n"],"names":["blockName","SubTabList","aggregatedClasses","withCarousel","carousel","SubTabBar","tabs","activeTab","onTabClick","firstSubtabRef","handleUpArrow","tabsComponents","innerRef","propTypes","PropTypes","arrayOf","element","isRequired","string","func","bool","oneOfType","shape","current","any"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,SAAS,GAAG,cAAlB;AAEA,IAAMC,UAAU,GAAGC,iBAAiB,CAAC,KAAD,CAAjB,CACjBF,SADiB,EAEjB,cAFiB,EAGjB;AAAA,MAAGG,YAAH,QAAGA,YAAH;AAAA,SAAuB;AAAEC,IAAAA,QAAQ,EAAED;AAAZ,GAAvB;AAAA,CAHiB,CAAnB;;IAMME,SAAS,GAAG,SAAZA,SAAY;AAAA,MAChBF,YADgB,SAChBA,YADgB;AAAA,yBAEhBG,IAFgB;AAAA,MAEhBA,IAFgB,2BAET,EAFS;AAAA,8BAGhBC,SAHgB;AAAA,MAGhBA,SAHgB,gCAGJ,EAHI;AAAA,+BAIhBC,UAJgB;AAAA,MAIhBA,UAJgB,iCAIH;AAAA,WAAM,IAAN;AAAA,GAJG;AAAA,MAKhBC,cALgB,SAKhBA,cALgB;AAAA,MAMhBC,aANgB,SAMhBA,aANgB;AAAA,sBAQhB,oBAAC,MAAD;AACE,IAAA,SAAS,EAAEH,SADb;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,aAAa,EAAEE,aAHjB;AAIE,IAAA,cAAc,EAAED,cAJlB;AAKE,IAAA,kBAAkB,EAAE;AAAA,UAAGE,cAAH,SAAGA,cAAH;AAAA,UAAmBC,QAAnB,SAAmBA,QAAnB;AAAA,0BAClB,oBAAC,UAAD;AACE,QAAA,YAAY,EAAET,YADhB;AAEE,QAAA,QAAQ,EAAES,QAFZ;AAGE,uBAAY;AAHd,SAKGT,YAAY,gBAAG,oBAAC,QAAD,QAAWQ,cAAX,CAAH,GAA2CA,cAL1D,CADkB;AAAA,KALtB;AAcE,IAAA,sBAAsB,EAAE,KAd1B;AAeE,IAAA,aAAa,MAff;AAgBE,IAAA,IAAI,EAAEL;AAhBR,IARgB;AAAA;;AA4BlBD,SAAS,CAACQ,SAAV,GAAsB;AACpBP,EAAAA,IAAI,EAAEQ,SAAS,CAACC,OAAV,CAAkBD,SAAS,CAACE,OAA5B,EAAqCC,UADvB;AAEpBV,EAAAA,SAAS,EAAEO,SAAS,CAACI,MAFD;AAGpBV,EAAAA,UAAU,EAAEM,SAAS,CAACK,IAAV,CAAeF,UAHP;AAIpBd,EAAAA,YAAY,EAAEW,SAAS,CAACM,IAJJ;AAKpBV,EAAAA,aAAa,EAAEI,SAAS,CAACK,IALL;AAMpBV,EAAAA,cAAc,EAAEK,SAAS,CAACO,SAAV,CAAoB,CAClCP,SAAS,CAACK,IADwB,EAElCL,SAAS,CAACQ,KAAV,CAAgB;AAAEC,IAAAA,OAAO,EAAET,SAAS,CAACU;AAArB,GAAhB,CAFkC,CAApB;AANI,CAAtB;;;;"}
package/esm/TabBar.js CHANGED
@@ -15,8 +15,7 @@ import { ResizeObserver } from 'resize-observer';
15
15
  import styled from 'styled-components';
16
16
  import Carousel from './Carousel.js';
17
17
  import '@babel/runtime/helpers/esm/slicedToArray';
18
- import '@elliemae/ds-icons/ChevronRight';
19
- import '@elliemae/ds-icons/ChevronLeft';
18
+ import '@elliemae/ds-icons';
20
19
  import '@elliemae/ds-button';
21
20
  import './useResize.js';
22
21
 
package/esm/TabBar.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.js","sources":["../../src/TabBar.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { debounce } from 'lodash';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport RequiredMark from '@elliemae/ds-form/RequiredMark';\nimport memoizeOne from 'memoize-one';\nimport { ResizeObserver } from 'resize-observer';\nimport styled from 'styled-components';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\nconst gradientWidth = 24;\n\nconst StyledTabWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n ${({ flexibleTabsHeaders }) => (flexibleTabsHeaders ? '' : 'overflow-x: hidden')};\n`;\n\nconst StyledTabList = aggregatedClasses('div')(\n blockName,\n 'list',\n ({ withCarousel, flexibleTabsHeaders, fixedTabsHeaders, isDSMobile, withLeftGradients, withRightGradients }) => ({\n carousel: withCarousel,\n 'flexible-table-headers': isDSMobile && flexibleTabsHeaders,\n 'fixed-table-headers': isDSMobile && fixedTabsHeaders,\n 'left-gradients': isDSMobile && flexibleTabsHeaders && withLeftGradients,\n 'right-gradients': isDSMobile && flexibleTabsHeaders && withRightGradients,\n }),\n {\n propsToRemoveFromFinalElement: [\n 'withCarousel',\n 'flexibleTabsHeaders',\n 'fixedTabsHeaders',\n 'withLeftGradients',\n 'withRightGradients',\n 'isDSMobile',\n ],\n },\n);\nconst TabContainer = aggregatedClasses('button', {\n role: 'tab',\n})(blockName, 'tab', ({ isActive, showSeparator, disabled }) => ({\n active: isActive,\n separator: showSeparator,\n disabled,\n}));\nconst SelectionIndicator = aggregatedClasses('div')(blockName, 'selection-indicator');\n\nclass TabBar extends Component {\n constructor(props) {\n super(props);\n this.tabListRef = React.createRef();\n this.resizeObserver = new ResizeObserver(() => this.setIndicatorStyle());\n this.state = {\n indicatorStyle: null,\n withLeftGradients: false,\n withRightGradients: false,\n };\n this.setIndicatorStyle = this.setIndicatorStyle.bind(this);\n this.getIndicatorStyles = this.getIndicatorStyles.bind(this);\n this.handleGradients = this.handleGradients.bind(this);\n this.handleTabsHeadersHorizontalScroll = this.handleTabsHeadersHorizontalScroll.bind(this);\n this.tabsRef = {};\n }\n\n componentDidMount() {\n const { showSelectionIndicator } = this.props;\n this.resizeObserver.observe(this.tabListRef.current);\n if (showSelectionIndicator) {\n this.setIndicatorStyle();\n }\n\n window.addEventListener('resize', this.handleGradients);\n window.addEventListener('orientationchange', this.handleGradients);\n this.handleGradients();\n }\n\n componentDidUpdate(prevProps) {\n const { activeTab, showSelectionIndicator } = this.props;\n\n if (showSelectionIndicator && prevProps.activeTab !== activeTab) {\n this.setIndicatorStyle(activeTab);\n }\n }\n\n componentWillUnmount() {\n this.resizeObserver.unobserve(this.tabListRef.current);\n window.removeEventListener('resize', this.handleGradients);\n window.removeEventListener('orientationchange', this.handleGradients);\n }\n\n handleGradients() {\n const { scrollLeft, scrollWidth, clientWidth } = this.tabListRef.current;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n this.setState({ withLeftGradients, withRightGradients });\n }\n\n shouldHaveLeftGradient(scrollLeft, gWidth) {\n return Math.abs(scrollLeft) > gWidth;\n }\n\n // eslint-disable-next-line max-params\n shouldHaveRightGradient(scrollLeft, gWidth, clientWidth, scrollWidth) {\n return Math.abs(scrollLeft) <= scrollWidth - (clientWidth + gWidth);\n }\n\n setIndicatorStyle() {\n const { activeTab } = this.props;\n setTimeout(\n () =>\n this.setState({\n indicatorStyle: this.getIndicatorStyles(activeTab),\n }),\n 100,\n );\n }\n\n getActiveTabElement(activeTab) {\n const tabListEl = this.tabListRef.current;\n\n const tabSelector = `[data-tab-id=\"${activeTab}\"]`;\n\n return tabListEl && tabListEl.querySelector(tabSelector);\n }\n\n isElementVisible(el, holder) {\n const { left, right, width } = el.getBoundingClientRect();\n const holderRect = holder.getBoundingClientRect();\n\n return left <= holderRect.left ? holderRect.left - left <= width : right - holderRect.right <= width;\n }\n\n getVisibleDimensions(node, referenceNode) {\n const pos = node.getBoundingClientRect();\n const referencePos = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referencePos.left + referenceNode.clientWidth - pos.left,\n node.clientWidth - (referencePos.left - pos.left),\n ),\n height: Math.min(\n node.clientHeight,\n referencePos.top + referenceNode.clientHeight - pos.top,\n node.clientHeight - (referencePos.top - pos.top),\n ),\n };\n }\n\n getIndicatorStyles(activeTab) {\n const tabListEl = this.tabListRef.current;\n const { withCarousel } = this.props;\n const activeTabEl = this.getActiveTabElement(activeTab);\n\n if (!activeTabEl || !this.isElementVisible(activeTabEl, tabListEl)) return null;\n\n const { clientHeight, clientWidth, offsetTop, offsetLeft } = activeTabEl;\n const { left } = activeTabEl.getBoundingClientRect();\n const leftOff = withCarousel ? Math.max(0, left - tabListEl.getBoundingClientRect().left) : offsetLeft;\n const width = withCarousel ? this.getVisibleDimensions(activeTabEl, tabListEl).width + 2 : clientWidth + 2;\n return {\n height: clientHeight,\n left: `${Math.floor(leftOff)}px`, // using left and top for ie compatibility\n top: `${Math.floor(offsetTop)}px`,\n width,\n };\n }\n\n handleTabClick = (tabId, e) => {\n const { tabListRef, props } = this;\n const { onTabClick, flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const el = e.target;\n const { offsetLeft } = el;\n const { width: elWidth } = el.getBoundingClientRect();\n const { width: listWidth } = tabListDomEl.getBoundingClientRect();\n const extraSideSpace = listWidth - elWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabListDomEl.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n }\n e.preventDefault();\n onTabClick(tabId);\n };\n\n handleKeyPress = (tabId, e, index) => {\n const {\n tabs,\n handleDownArrow,\n handleUpArrow,\n // onTabClick,\n } = this.props;\n if (e.keyCode === 39) {\n const nextTab = tabs[index + 1];\n if (!nextTab && handleDownArrow) handleDownArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index + 1]?.focus();\n }\n if (e.keyCode === 37) {\n const nextTab = tabs[index - 1];\n if (!nextTab && handleUpArrow) handleUpArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index - 1]?.focus();\n }\n\n if (e.keyCode === 40 && handleDownArrow) {\n handleDownArrow(e);\n }\n\n if (e.keyCode === 38 && handleUpArrow) {\n handleUpArrow(e);\n }\n };\n\n handleTabsHeadersHorizontalScroll = debounce(() => {\n const { tabListRef, props } = this;\n const { flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const { scrollLeft, scrollWidth, clientWidth } = tabListDomEl;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n\n this.setState({\n withLeftGradients,\n withRightGradients,\n });\n }\n }, 50);\n\n renderTabs = memoizeOne((activeTab, tabs) => {\n const { showSeparator } = this.props;\n return React.Children.map(\n tabs,\n (tab, index) => {\n const { tabId, title, style, required, disabled } = tab.props;\n const isActive = activeTab === tabId;\n return [\n <TabContainer\n key={tabId}\n // eslint-disable-next-line no-return-assign\n ref={(t) => {\n this.tabsRef[index] = t;\n if (index === 0 && this.props.firstSubtabRef) {\n this.props.firstSubtabRef.current = t;\n }\n if (index === tabs.length - 1 && this.props.lastTabRef) {\n this.props.lastTabRef.current = t;\n }\n }}\n aria-controls={tabId}\n aria-selected={isActive}\n aria-disabled={!!disabled}\n classProps={{ isActive, showSeparator, disabled }}\n data-tab-id={tabId}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) this.handleTabClick(tabId, e, index);\n }}\n onKeyDown={(e) => {\n if (!disabled) this.handleKeyPress(tabId, e, index);\n }}\n style={style}\n tabIndex={0}\n >\n {title}\n <RequiredMark required={required} />\n </TabContainer>,\n ];\n },\n null,\n );\n });\n\n render() {\n const { id, tabs, activeTab, renderCustomTabBar, withCarousel, isDSMobile, flexibleTabsHeaders, fixedTabsHeaders } =\n this.props;\n const { indicatorStyle, withLeftGradients, withRightGradients } = this.state;\n\n if (renderCustomTabBar) {\n return renderCustomTabBar({\n innerRef: this.tabListRef,\n withCarousel,\n tabsComponents: this.renderTabs(activeTab, tabs),\n });\n }\n\n const shouldUseCarousel = !isDSMobile && withCarousel;\n\n return (\n <>\n <StyledTabList\n withCarousel={withCarousel}\n aria-label={id}\n innerRef={this.tabListRef}\n role=\"tablist\"\n data-testid=\"tab-list\"\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n withLeftGradients={withLeftGradients}\n withRightGradients={withRightGradients}\n fixedTabsHeaders={fixedTabsHeaders}\n onScroll={this.handleTabsHeadersHorizontalScroll}\n style={{ width: '100%' }}\n >\n <StyledTabWrapper\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n >\n {shouldUseCarousel ? (\n <Carousel onScroll={this.setIndicatorStyle}>{this.renderTabs(activeTab, tabs)}</Carousel>\n ) : null}\n {!shouldUseCarousel ? this.renderTabs(activeTab, tabs) : null}\n <SelectionIndicator style={indicatorStyle} />\n </StyledTabWrapper>\n </StyledTabList>\n </>\n );\n }\n}\n\nTabBar.defaultProps = {\n showSelectionIndicator: true,\n showSeparator: false,\n isDSMobile: false,\n};\n\nTabBar.propTypes = {\n /** Separator between tabs */\n showSeparator: PropTypes.bool,\n /** Blue border under selected tab */\n showSelectionIndicator: PropTypes.bool,\n /** Tab list id */\n id: PropTypes.string,\n /** Array of tabs */\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n /** Renders a custom tabbar */\n renderCustomTabBar: PropTypes.func,\n /** tabId of active tab */\n activeTab: PropTypes.string,\n /** on tab click callback */\n onTabClick: PropTypes.func,\n /** carousel behavior */\n withCarousel: PropTypes.bool,\n handleDownArrow: PropTypes.func,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n lastTabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n /** Whether we are in mobile mode or not */\n};\n\nexport default TabBar;\n"],"names":["blockName","gradientWidth","StyledTabWrapper","styled","div","flexibleTabsHeaders","StyledTabList","aggregatedClasses","withCarousel","fixedTabsHeaders","isDSMobile","withLeftGradients","withRightGradients","carousel","propsToRemoveFromFinalElement","TabContainer","role","isActive","showSeparator","disabled","active","separator","SelectionIndicator","TabBar","props","tabId","e","tabListRef","onTabClick","tabListDomEl","current","el","target","offsetLeft","getBoundingClientRect","elWidth","width","listWidth","extraSideSpace","leftOffsetToCenter","centeredLeftOffset","scrollTo","top","left","behavior","preventDefault","index","tabs","handleDownArrow","handleUpArrow","keyCode","nextTab","tabsRef","focus","debounce","scrollLeft","scrollWidth","clientWidth","shouldHaveLeftGradient","shouldHaveRightGradient","setState","memoizeOne","activeTab","React","Children","map","tab","title","style","required","t","firstSubtabRef","length","lastTabRef","handleTabClick","handleKeyPress","createRef","resizeObserver","ResizeObserver","setIndicatorStyle","state","indicatorStyle","bind","getIndicatorStyles","handleGradients","handleTabsHeadersHorizontalScroll","showSelectionIndicator","observe","window","addEventListener","prevProps","unobserve","removeEventListener","gWidth","Math","abs","setTimeout","tabListEl","tabSelector","querySelector","holder","right","holderRect","node","referenceNode","pos","referencePos","min","height","clientHeight","activeTabEl","getActiveTabElement","isElementVisible","offsetTop","leftOff","max","getVisibleDimensions","floor","id","renderCustomTabBar","innerRef","tabsComponents","renderTabs","shouldUseCarousel","Component","defaultProps","propTypes","PropTypes","bool","string","arrayOf","element","isRequired","func","oneOfType","shape","any"],"mappings":"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"}
1
+ {"version":3,"file":"TabBar.js","sources":["../../src/TabBar.tsx"],"sourcesContent":["/* eslint-disable max-statements */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { Component } from 'react';\nimport { debounce } from 'lodash';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport RequiredMark from '@elliemae/ds-form/RequiredMark';\nimport memoizeOne from 'memoize-one';\nimport { ResizeObserver } from 'resize-observer';\nimport styled from 'styled-components';\nimport Carousel from './Carousel';\n\nconst blockName = 'tabs-tab-bar';\nconst gradientWidth = 24;\n\nconst StyledTabWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n ${({ flexibleTabsHeaders }) => (flexibleTabsHeaders ? '' : 'overflow-x: hidden')};\n`;\n\nconst StyledTabList = aggregatedClasses('div')(\n blockName,\n 'list',\n ({ withCarousel, flexibleTabsHeaders, fixedTabsHeaders, isDSMobile, withLeftGradients, withRightGradients }) => ({\n carousel: withCarousel,\n 'flexible-table-headers': isDSMobile && flexibleTabsHeaders,\n 'fixed-table-headers': isDSMobile && fixedTabsHeaders,\n 'left-gradients': isDSMobile && flexibleTabsHeaders && withLeftGradients,\n 'right-gradients': isDSMobile && flexibleTabsHeaders && withRightGradients,\n }),\n {\n propsToRemoveFromFinalElement: [\n 'withCarousel',\n 'flexibleTabsHeaders',\n 'fixedTabsHeaders',\n 'withLeftGradients',\n 'withRightGradients',\n 'isDSMobile',\n ],\n },\n);\nconst TabContainer = aggregatedClasses('button', {\n role: 'tab',\n})(blockName, 'tab', ({ isActive, showSeparator, disabled }) => ({\n active: isActive,\n separator: showSeparator,\n disabled,\n}));\nconst SelectionIndicator = aggregatedClasses('div')(blockName, 'selection-indicator');\n\nclass TabBar extends Component {\n constructor(props) {\n super(props);\n this.tabListRef = React.createRef();\n this.resizeObserver = new ResizeObserver(() => this.setIndicatorStyle());\n this.state = {\n indicatorStyle: null,\n withLeftGradients: false,\n withRightGradients: false,\n };\n this.setIndicatorStyle = this.setIndicatorStyle.bind(this);\n this.getIndicatorStyles = this.getIndicatorStyles.bind(this);\n this.handleGradients = this.handleGradients.bind(this);\n this.handleTabsHeadersHorizontalScroll = this.handleTabsHeadersHorizontalScroll.bind(this);\n this.tabsRef = {};\n }\n\n componentDidMount() {\n const { showSelectionIndicator } = this.props;\n this.resizeObserver.observe(this.tabListRef.current);\n if (showSelectionIndicator) {\n this.setIndicatorStyle();\n }\n\n window.addEventListener('resize', this.handleGradients);\n window.addEventListener('orientationchange', this.handleGradients);\n this.handleGradients();\n }\n\n componentDidUpdate(prevProps) {\n const { activeTab, showSelectionIndicator } = this.props;\n\n if (showSelectionIndicator && prevProps.activeTab !== activeTab) {\n this.setIndicatorStyle(activeTab);\n }\n }\n\n componentWillUnmount() {\n this.resizeObserver.unobserve(this.tabListRef.current);\n window.removeEventListener('resize', this.handleGradients);\n window.removeEventListener('orientationchange', this.handleGradients);\n }\n\n handleGradients() {\n const { scrollLeft, scrollWidth, clientWidth } = this.tabListRef.current;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n this.setState({ withLeftGradients, withRightGradients });\n }\n\n shouldHaveLeftGradient(scrollLeft, gWidth) {\n return Math.abs(scrollLeft) > gWidth;\n }\n\n // eslint-disable-next-line max-params\n shouldHaveRightGradient(scrollLeft, gWidth, clientWidth, scrollWidth) {\n return Math.abs(scrollLeft) <= scrollWidth - (clientWidth + gWidth);\n }\n\n setIndicatorStyle() {\n const { activeTab } = this.props;\n setTimeout(\n () =>\n this.setState({\n indicatorStyle: this.getIndicatorStyles(activeTab),\n }),\n 100,\n );\n }\n\n getActiveTabElement(activeTab) {\n const tabListEl = this.tabListRef.current;\n\n const tabSelector = `[data-tab-id=\"${activeTab}\"]`;\n\n return tabListEl && tabListEl.querySelector(tabSelector);\n }\n\n isElementVisible(el, holder) {\n const { left, right, width } = el.getBoundingClientRect();\n const holderRect = holder.getBoundingClientRect();\n\n return left <= holderRect.left ? holderRect.left - left <= width : right - holderRect.right <= width;\n }\n\n getVisibleDimensions(node, referenceNode) {\n const pos = node.getBoundingClientRect();\n const referencePos = referenceNode.getBoundingClientRect();\n\n return {\n width: Math.min(\n node.clientWidth,\n referencePos.left + referenceNode.clientWidth - pos.left,\n node.clientWidth - (referencePos.left - pos.left),\n ),\n height: Math.min(\n node.clientHeight,\n referencePos.top + referenceNode.clientHeight - pos.top,\n node.clientHeight - (referencePos.top - pos.top),\n ),\n };\n }\n\n getIndicatorStyles(activeTab) {\n const tabListEl = this.tabListRef.current;\n const { withCarousel } = this.props;\n const activeTabEl = this.getActiveTabElement(activeTab);\n\n if (!activeTabEl || !this.isElementVisible(activeTabEl, tabListEl)) return null;\n\n const { clientHeight, clientWidth, offsetTop, offsetLeft } = activeTabEl;\n const { left } = activeTabEl.getBoundingClientRect();\n const leftOff = withCarousel ? Math.max(0, left - tabListEl.getBoundingClientRect().left) : offsetLeft;\n const width = withCarousel ? this.getVisibleDimensions(activeTabEl, tabListEl).width + 2 : clientWidth + 2;\n return {\n height: clientHeight,\n left: `${Math.floor(leftOff)}px`, // using left and top for ie compatibility\n top: `${Math.floor(offsetTop)}px`,\n width,\n };\n }\n\n handleTabClick = (tabId, e) => {\n const { tabListRef, props } = this;\n const { onTabClick, flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const el = e.target;\n const { offsetLeft } = el;\n const { width: elWidth } = el.getBoundingClientRect();\n const { width: listWidth } = tabListDomEl.getBoundingClientRect();\n const extraSideSpace = listWidth - elWidth;\n const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;\n const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;\n tabListDomEl.scrollTo({\n top: 0,\n left: centeredLeftOffset,\n behavior: 'smooth',\n });\n }\n e.preventDefault();\n onTabClick(tabId);\n };\n\n handleKeyPress = (tabId, e, index) => {\n const {\n tabs,\n handleDownArrow,\n handleUpArrow,\n // onTabClick,\n } = this.props;\n if (e.keyCode === 39) {\n const nextTab = tabs[index + 1];\n if (!nextTab && handleDownArrow) handleDownArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index + 1]?.focus();\n }\n if (e.keyCode === 37) {\n const nextTab = tabs[index - 1];\n if (!nextTab && handleUpArrow) handleUpArrow(e);\n if (!nextTab) return;\n // const { props } = nextTab\n // onTabClick(props.tabId)\n this.tabsRef[index - 1]?.focus();\n }\n\n if (e.keyCode === 40 && handleDownArrow) {\n handleDownArrow(e);\n }\n\n if (e.keyCode === 38 && handleUpArrow) {\n handleUpArrow(e);\n }\n };\n\n handleTabsHeadersHorizontalScroll = debounce(() => {\n const { tabListRef, props } = this;\n const { flexibleTabsHeaders, isDSMobile } = props;\n if (isDSMobile && flexibleTabsHeaders) {\n const tabListDomEl = tabListRef.current;\n const { scrollLeft, scrollWidth, clientWidth } = tabListDomEl;\n\n const withLeftGradients = this.shouldHaveLeftGradient(scrollLeft, gradientWidth);\n\n const withRightGradients = this.shouldHaveRightGradient(scrollLeft, gradientWidth, clientWidth, scrollWidth);\n\n this.setState({\n withLeftGradients,\n withRightGradients,\n });\n }\n }, 50);\n\n renderTabs = memoizeOne((activeTab, tabs) => {\n const { showSeparator } = this.props;\n return React.Children.map(\n tabs,\n (tab, index) => {\n const { tabId, title, style, required, disabled } = tab.props;\n const isActive = activeTab === tabId;\n return [\n <TabContainer\n key={tabId}\n // eslint-disable-next-line no-return-assign\n ref={(t) => {\n this.tabsRef[index] = t;\n if (index === 0 && this.props.firstSubtabRef) {\n this.props.firstSubtabRef.current = t;\n }\n if (index === tabs.length - 1 && this.props.lastTabRef) {\n this.props.lastTabRef.current = t;\n }\n }}\n aria-controls={tabId}\n aria-selected={isActive}\n aria-disabled={!!disabled}\n classProps={{ isActive, showSeparator, disabled }}\n data-tab-id={tabId}\n id={`${tabId}-label`}\n onClick={(e) => {\n if (!disabled) this.handleTabClick(tabId, e, index);\n }}\n onKeyDown={(e) => {\n if (!disabled) this.handleKeyPress(tabId, e, index);\n }}\n style={style}\n tabIndex={0}\n >\n {title}\n <RequiredMark required={required} />\n </TabContainer>,\n ];\n },\n null,\n );\n });\n\n render() {\n const { id, tabs, activeTab, renderCustomTabBar, withCarousel, isDSMobile, flexibleTabsHeaders, fixedTabsHeaders } =\n this.props;\n const { indicatorStyle, withLeftGradients, withRightGradients } = this.state;\n\n if (renderCustomTabBar) {\n return renderCustomTabBar({\n innerRef: this.tabListRef,\n withCarousel,\n tabsComponents: this.renderTabs(activeTab, tabs),\n });\n }\n\n const shouldUseCarousel = !isDSMobile && withCarousel;\n\n return (\n <>\n <StyledTabList\n withCarousel={withCarousel}\n aria-label={id}\n innerRef={this.tabListRef}\n role=\"tablist\"\n data-testid=\"tab-list\"\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n withLeftGradients={withLeftGradients}\n withRightGradients={withRightGradients}\n fixedTabsHeaders={fixedTabsHeaders}\n onScroll={this.handleTabsHeadersHorizontalScroll}\n style={{ width: '100%' }}\n >\n <StyledTabWrapper\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n >\n {shouldUseCarousel ? (\n <Carousel onScroll={this.setIndicatorStyle}>{this.renderTabs(activeTab, tabs)}</Carousel>\n ) : null}\n {!shouldUseCarousel ? this.renderTabs(activeTab, tabs) : null}\n <SelectionIndicator style={indicatorStyle} />\n </StyledTabWrapper>\n </StyledTabList>\n </>\n );\n }\n}\n\nTabBar.defaultProps = {\n showSelectionIndicator: true,\n showSeparator: false,\n isDSMobile: false,\n};\n\nTabBar.propTypes = {\n /** Separator between tabs */\n showSeparator: PropTypes.bool,\n /** Blue border under selected tab */\n showSelectionIndicator: PropTypes.bool,\n /** Tab list id */\n id: PropTypes.string,\n /** Array of tabs */\n tabs: PropTypes.arrayOf(PropTypes.element).isRequired,\n /** Renders a custom tabbar */\n renderCustomTabBar: PropTypes.func,\n /** tabId of active tab */\n activeTab: PropTypes.string,\n /** on tab click callback */\n onTabClick: PropTypes.func,\n /** carousel behavior */\n withCarousel: PropTypes.bool,\n handleDownArrow: PropTypes.func,\n handleUpArrow: PropTypes.func,\n firstSubtabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n lastTabRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.any })]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n /** Whether we are in mobile mode or not */\n};\n\nexport default TabBar;\n"],"names":["blockName","gradientWidth","StyledTabWrapper","styled","div","flexibleTabsHeaders","StyledTabList","aggregatedClasses","withCarousel","fixedTabsHeaders","isDSMobile","withLeftGradients","withRightGradients","carousel","propsToRemoveFromFinalElement","TabContainer","role","isActive","showSeparator","disabled","active","separator","SelectionIndicator","TabBar","props","tabId","e","tabListRef","onTabClick","tabListDomEl","current","el","target","offsetLeft","getBoundingClientRect","elWidth","width","listWidth","extraSideSpace","leftOffsetToCenter","centeredLeftOffset","scrollTo","top","left","behavior","preventDefault","index","tabs","handleDownArrow","handleUpArrow","keyCode","nextTab","tabsRef","focus","debounce","scrollLeft","scrollWidth","clientWidth","shouldHaveLeftGradient","shouldHaveRightGradient","setState","memoizeOne","activeTab","React","Children","map","tab","title","style","required","t","firstSubtabRef","length","lastTabRef","handleTabClick","handleKeyPress","createRef","resizeObserver","ResizeObserver","setIndicatorStyle","state","indicatorStyle","bind","getIndicatorStyles","handleGradients","handleTabsHeadersHorizontalScroll","showSelectionIndicator","observe","window","addEventListener","prevProps","unobserve","removeEventListener","gWidth","Math","abs","setTimeout","tabListEl","tabSelector","querySelector","holder","right","holderRect","node","referenceNode","pos","referencePos","min","height","clientHeight","activeTabEl","getActiveTabElement","isElementVisible","offsetTop","leftOff","max","getVisibleDimensions","floor","id","renderCustomTabBar","innerRef","tabsComponents","renderTabs","shouldUseCarousel","Component","defaultProps","propTypes","PropTypes","bool","string","arrayOf","element","isRequired","func","oneOfType","shape","any"],"mappings":"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"}
package/esm/TabsImpl.js CHANGED
@@ -23,8 +23,7 @@ import '@elliemae/ds-form/RequiredMark';
23
23
  import 'resize-observer';
24
24
  import 'styled-components';
25
25
  import './Carousel.js';
26
- import '@elliemae/ds-icons/ChevronRight';
27
- import '@elliemae/ds-icons/ChevronLeft';
26
+ import '@elliemae/ds-icons';
28
27
  import '@elliemae/ds-button';
29
28
  import './useResize.js';
30
29
 
@@ -1 +1 @@
1
- {"version":3,"file":"TabsImpl.js","sources":["../../src/TabsImpl.tsx"],"sourcesContent":["/* eslint-disable indent */\n/* eslint-disable max-lines */\nimport React, {\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabsPanels from './TabsPanels';\nimport TabBar from './TabBar';\nimport SubTabBar from './SubTabBar';\nimport { TabTypes } from './TabTypes';\n\nconst blockName = 'tabs';\n\nconst StyledTabsContainer = aggregatedClasses('div')(blockName);\nconst StyledTabBarContainer = aggregatedClasses('div')(\n blockName,\n 'tab-bar-container',\n);\n\nconst TabBarComponentsByType = {\n [TabTypes.NORMAL]: TabBar,\n [TabTypes.SUBTABS]: SubTabBar,\n};\n\nconst TabsImpl = (props) => {\n const {\n animated,\n children: tabs,\n type,\n tabBarExtraContent,\n onTabChange,\n enableMouseEvents,\n innerRef,\n onlyRenderActiveTab,\n containerProps,\n allowTextSelection,\n tabsListAriaLabel,\n activeTab,\n firstSubtabRef,\n lastTabRef,\n withCarousel,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile,\n } = props;\n const [actualActiveTab, setActualActiveTab] = useState(\n activeTab || tabs?.[0]?.props?.tabId,\n );\n const firstTabRefByParent = useRef(null);\n const lastTabRefByParent = useRef(null);\n\n useEffect(() => {\n if (activeTab) {\n setActualActiveTab(activeTab);\n }\n }, [activeTab]);\n\n const handleTabClick = useCallback(\n (tab) => {\n setActualActiveTab(tab);\n onTabChange(tab);\n },\n [onTabChange],\n );\n const handleDownArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (firstTabRefByParent?.current) firstTabRefByParent.current?.focus();\n },\n [firstTabRefByParent],\n );\n const handleUpArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (lastTabRef?.current) lastTabRef.current?.focus();\n },\n [lastTabRef],\n );\n\n const PureTabBarComponent = useMemo(() => {\n const TabBarComponent = TabBarComponentsByType[type] || TabBar;\n return (\n <TabBarComponent\n withCarousel={withCarousel}\n activeTab={actualActiveTab}\n onTabClick={handleTabClick}\n tabs={tabs}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRefByParent}\n handleDownArrow={handleDownArrow}\n handleUpArrow={handleUpArrow}\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n />\n );\n }, [\n type,\n withCarousel,\n actualActiveTab,\n handleTabClick,\n tabs,\n firstSubtabRef,\n lastTabRefByParent,\n handleDownArrow,\n handleUpArrow,\n isDSMobile,\n ]);\n const PureTabsPanels = useMemo(\n () => (\n <TabsPanels\n activeTab={actualActiveTab}\n allowTextSelection={allowTextSelection}\n animated={animated}\n enableMouseEvents={enableMouseEvents}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={handleTabClick}\n tabsComponents={tabs}\n lastTabRef={lastTabRefByParent}\n firstTabRefByParent={firstTabRefByParent}\n />\n ),\n [\n actualActiveTab,\n allowTextSelection,\n animated,\n enableMouseEvents,\n onlyRenderActiveTab,\n handleTabClick,\n tabs,\n lastTabRefByParent,\n firstTabRefByParent,\n ],\n );\n const PureTabsImpl = useMemo(\n () => (\n <StyledTabsContainer\n {...containerProps}\n aria-label={tabsListAriaLabel}\n innerRef={innerRef}\n role=\"tablist\"\n >\n <StyledTabBarContainer>\n {PureTabBarComponent}\n {tabBarExtraContent}\n </StyledTabBarContainer>\n {PureTabsPanels}\n </StyledTabsContainer>\n ),\n [\n containerProps,\n tabsListAriaLabel,\n innerRef,\n PureTabBarComponent,\n tabBarExtraContent,\n PureTabsPanels,\n ],\n );\n return PureTabsImpl;\n};\n\nTabsImpl.propTypes = {\n animated: PropTypes.bool,\n enableMouseEvents: PropTypes.bool,\n allowTextSelection: PropTypes.bool,\n onTabChange: PropTypes.func,\n type: PropTypes.oneOf(['normal', 'subtabs']),\n tabBarExtraContent: PropTypes.element,\n onlyRenderActiveTab: PropTypes.bool,\n withCarousel: PropTypes.bool,\n activeTab: PropTypes.string,\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.any,\n }),\n ).isRequired,\n tabsListAriaLabel: PropTypes.string,\n containerProps: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n};\n\nexport default TabsImpl;\n"],"names":["blockName","StyledTabsContainer","aggregatedClasses","StyledTabBarContainer","TabBarComponentsByType","TabTypes","NORMAL","TabBar","SUBTABS","SubTabBar","TabsImpl","props","animated","tabs","children","type","tabBarExtraContent","onTabChange","enableMouseEvents","innerRef","onlyRenderActiveTab","containerProps","allowTextSelection","tabsListAriaLabel","activeTab","firstSubtabRef","lastTabRef","withCarousel","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","useState","tabId","actualActiveTab","setActualActiveTab","firstTabRefByParent","useRef","lastTabRefByParent","useEffect","handleTabClick","useCallback","tab","handleDownArrow","e","preventDefault","stopPropagation","current","focus","handleUpArrow","PureTabBarComponent","useMemo","TabBarComponent","PureTabsPanels","PureTabsImpl","propTypes","PropTypes","bool","func","oneOf","element","string","arrayOf","shape","any","isRequired","object","oneOfType"],"mappings":"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"}
1
+ {"version":3,"file":"TabsImpl.js","sources":["../../src/TabsImpl.tsx"],"sourcesContent":["/* eslint-disable indent */\n/* eslint-disable max-lines */\nimport React, {\n useCallback,\n useState,\n useEffect,\n useRef,\n useMemo,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport TabsPanels from './TabsPanels';\nimport TabBar from './TabBar';\nimport SubTabBar from './SubTabBar';\nimport { TabTypes } from './TabTypes';\n\nconst blockName = 'tabs';\n\nconst StyledTabsContainer = aggregatedClasses('div')(blockName);\nconst StyledTabBarContainer = aggregatedClasses('div')(\n blockName,\n 'tab-bar-container',\n);\n\nconst TabBarComponentsByType = {\n [TabTypes.NORMAL]: TabBar,\n [TabTypes.SUBTABS]: SubTabBar,\n};\n\nconst TabsImpl = (props) => {\n const {\n animated,\n children: tabs,\n type,\n tabBarExtraContent,\n onTabChange,\n enableMouseEvents,\n innerRef,\n onlyRenderActiveTab,\n containerProps,\n allowTextSelection,\n tabsListAriaLabel,\n activeTab,\n firstSubtabRef,\n lastTabRef,\n withCarousel,\n flexibleTabsHeaders,\n fixedTabsHeaders,\n isDSMobile,\n } = props;\n const [actualActiveTab, setActualActiveTab] = useState(\n activeTab || tabs?.[0]?.props?.tabId,\n );\n const firstTabRefByParent = useRef(null);\n const lastTabRefByParent = useRef(null);\n\n useEffect(() => {\n if (activeTab) {\n setActualActiveTab(activeTab);\n }\n }, [activeTab]);\n\n const handleTabClick = useCallback(\n (tab) => {\n setActualActiveTab(tab);\n onTabChange(tab);\n },\n [onTabChange],\n );\n const handleDownArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (firstTabRefByParent?.current) firstTabRefByParent.current?.focus();\n },\n [firstTabRefByParent],\n );\n const handleUpArrow = useCallback(\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (lastTabRef?.current) lastTabRef.current?.focus();\n },\n [lastTabRef],\n );\n\n const PureTabBarComponent = useMemo(() => {\n const TabBarComponent = TabBarComponentsByType[type] || TabBar;\n return (\n <TabBarComponent\n withCarousel={withCarousel}\n activeTab={actualActiveTab}\n onTabClick={handleTabClick}\n tabs={tabs}\n firstSubtabRef={firstSubtabRef}\n lastTabRef={lastTabRefByParent}\n handleDownArrow={handleDownArrow}\n handleUpArrow={handleUpArrow}\n isDSMobile={isDSMobile}\n flexibleTabsHeaders={flexibleTabsHeaders}\n fixedTabsHeaders={fixedTabsHeaders}\n />\n );\n }, [\n type,\n withCarousel,\n actualActiveTab,\n handleTabClick,\n tabs,\n firstSubtabRef,\n lastTabRefByParent,\n handleDownArrow,\n handleUpArrow,\n isDSMobile,\n ]);\n const PureTabsPanels = useMemo(\n () => (\n <TabsPanels\n activeTab={actualActiveTab}\n allowTextSelection={allowTextSelection}\n animated={animated}\n enableMouseEvents={enableMouseEvents}\n onlyRenderActiveTab={onlyRenderActiveTab}\n onTabChange={handleTabClick}\n tabsComponents={tabs}\n lastTabRef={lastTabRefByParent}\n firstTabRefByParent={firstTabRefByParent}\n />\n ),\n [\n actualActiveTab,\n allowTextSelection,\n animated,\n enableMouseEvents,\n onlyRenderActiveTab,\n handleTabClick,\n tabs,\n lastTabRefByParent,\n firstTabRefByParent,\n ],\n );\n const PureTabsImpl = useMemo(\n () => (\n <StyledTabsContainer\n {...containerProps}\n aria-label={tabsListAriaLabel}\n innerRef={innerRef}\n role=\"tablist\"\n >\n <StyledTabBarContainer>\n {PureTabBarComponent}\n {tabBarExtraContent}\n </StyledTabBarContainer>\n {PureTabsPanels}\n </StyledTabsContainer>\n ),\n [\n containerProps,\n tabsListAriaLabel,\n innerRef,\n PureTabBarComponent,\n tabBarExtraContent,\n PureTabsPanels,\n ],\n );\n return PureTabsImpl;\n};\n\nTabsImpl.propTypes = {\n animated: PropTypes.bool,\n enableMouseEvents: PropTypes.bool,\n allowTextSelection: PropTypes.bool,\n onTabChange: PropTypes.func,\n type: PropTypes.oneOf(['normal', 'subtabs']),\n tabBarExtraContent: PropTypes.element,\n onlyRenderActiveTab: PropTypes.bool,\n withCarousel: PropTypes.bool,\n activeTab: PropTypes.string,\n children: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.any,\n }),\n ).isRequired,\n tabsListAriaLabel: PropTypes.string,\n containerProps: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n firstSubtabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n lastTabRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any }),\n ]),\n /** Whether or not it's a ds-tab from DSMobile tabs */\n isDSMobile: PropTypes.bool,\n /** DSMobile only flexible tabs mode */\n flexibleTabsHeaders: PropTypes.bool,\n /** DSMobile only fixed tabs mode */\n fixedTabsHeaders: PropTypes.bool,\n};\n\nexport default TabsImpl;\n"],"names":["blockName","StyledTabsContainer","aggregatedClasses","StyledTabBarContainer","TabBarComponentsByType","TabTypes","NORMAL","TabBar","SUBTABS","SubTabBar","TabsImpl","props","animated","tabs","children","type","tabBarExtraContent","onTabChange","enableMouseEvents","innerRef","onlyRenderActiveTab","containerProps","allowTextSelection","tabsListAriaLabel","activeTab","firstSubtabRef","lastTabRef","withCarousel","flexibleTabsHeaders","fixedTabsHeaders","isDSMobile","useState","tabId","actualActiveTab","setActualActiveTab","firstTabRefByParent","useRef","lastTabRefByParent","useEffect","handleTabClick","useCallback","tab","handleDownArrow","e","preventDefault","stopPropagation","current","focus","handleUpArrow","PureTabBarComponent","useMemo","TabBarComponent","PureTabsPanels","PureTabsImpl","propTypes","PropTypes","bool","func","oneOf","element","string","arrayOf","shape","any","isRequired","object","oneOfType"],"mappings":"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"}
package/esm/index.js CHANGED
@@ -26,8 +26,7 @@ import '@elliemae/ds-form/RequiredMark';
26
26
  import 'resize-observer';
27
27
  import 'styled-components';
28
28
  import './Carousel.js';
29
- import '@elliemae/ds-icons/ChevronRight';
30
- import '@elliemae/ds-icons/ChevronLeft';
29
+ import '@elliemae/ds-icons';
31
30
  import '@elliemae/ds-button';
32
31
  import './useResize.js';
33
32
  import './SubTabBar.js';
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-tabs",
3
- "version": "1.56.0-rc.2",
3
+ "version": "1.57.0-rc.10",
4
4
  "license": "MIT",
5
5
  "description": "Ellie Mae - Dim Sum - Tabs",
6
6
  "module": "esm/index.js",
@@ -16,10 +16,10 @@
16
16
  "build": "node ../../scripts/build/build.js"
17
17
  },
18
18
  "dependencies": {
19
- "@elliemae/ds-button": "1.56.0-rc.2",
20
- "@elliemae/ds-classnames": "1.56.0-rc.2",
21
- "@elliemae/ds-form": "1.56.0-rc.2",
22
- "@elliemae/ds-icons": "1.56.0-rc.2",
19
+ "@elliemae/ds-button": "1.57.0-rc.10",
20
+ "@elliemae/ds-classnames": "1.57.0-rc.10",
21
+ "@elliemae/ds-form": "1.57.0-rc.10",
22
+ "@elliemae/ds-icons": "1.57.0-rc.10",
23
23
  "memoize-one": "~5.1.1",
24
24
  "prop-types": "~15.7.2",
25
25
  "react-desc": "^4.1.2",