@pie-element/passage 1.10.3-next.40 → 1.10.3-next.45

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.
@@ -122,6 +122,48 @@ var StimulusTabs = /*#__PURE__*/function (_React$Component) {
122
122
  window.dispatchEvent(tabChangeEvent);
123
123
  });
124
124
  });
125
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (event, currentTabId) {
126
+ var key = event.key;
127
+ var tabs = _this.props.tabs;
128
+ var newTabIndex = -1;
129
+ var currentIndex = tabs.findIndex(function (tab) {
130
+ return tab.id === currentTabId;
131
+ });
132
+
133
+ switch (key) {
134
+ case 'ArrowRight':
135
+ case 'ArrowDown':
136
+ newTabIndex = (currentIndex + 1) % tabs.length;
137
+ break;
138
+
139
+ case 'ArrowLeft':
140
+ case 'ArrowUp':
141
+ newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;
142
+ break;
143
+
144
+ case 'Home':
145
+ newTabIndex = 0;
146
+ break;
147
+
148
+ case 'End':
149
+ newTabIndex = tabs.length - 1;
150
+ break;
151
+
152
+ case 'Enter':
153
+ case ' ':
154
+ newTabIndex = currentIndex;
155
+ break;
156
+
157
+ default:
158
+ break;
159
+ }
160
+
161
+ if (newTabIndex !== -1) {
162
+ event.preventDefault();
163
+
164
+ _this.handleChange(event, tabs[newTabIndex].id);
165
+ }
166
+ });
125
167
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "parsedText", function (text) {
126
168
  // fix imported audio content for Safari PD-1391
127
169
  var div = document.createElement('div');
@@ -195,7 +237,15 @@ var StimulusTabs = /*#__PURE__*/function (_React$Component) {
195
237
  __html: _this2.parsedText(tab.title)
196
238
  }
197
239
  })),
198
- value: tab.id
240
+ value: tab.id,
241
+ tabIndex: activeTab === tab.id ? 0 : -1,
242
+ "aria-selected": activeTab === tab.id,
243
+ onFocus: function onFocus() {
244
+ return _this2.handleChange(null, tab.id);
245
+ },
246
+ onKeyDown: function onKeyDown(event) {
247
+ return _this2.handleKeyDown(event, tab.id);
248
+ }
199
249
  });
200
250
  })), tabs.map(function (tab) {
201
251
  return activeTab === tab.id ? /*#__PURE__*/_react["default"].createElement(TabContainer, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/stimulus-tabs.jsx"],"names":["styles","theme","root","flexGrow","backgroundColor","color","background","text","tab","fontSize","stickyTabs","paddingBottom","spacing","unit","position","top","title","textTransform","padding","borderBottom","secondary","width","marginBottom","buttonContainer","palette","common","white","TabContainer","props","multiple","children","propTypes","PropTypes","node","isRequired","bool","StimulusTabs","activeTab","event","setState","setTimeout","tabChangeEvent","CustomEvent","detail","window","dispatchEvent","div","document","createElement","innerHTML","replace","audio","querySelector","source","setAttribute","getAttribute","removeAttribute","appendChild","classes","tabs","disabledTabs","state","length","map","id","__html","parsedText","flexContainer","handleChange","whiteSpace","React","Component","object","arrayOf","shape","number","string"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,IAAI,EAAE;AACJC,MAAAA,QAAQ,EAAE,CADN;AAEJC,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EAFb;AAGJD,MAAAA,KAAK,EAAEA,gBAAME,IAAN;AAHH,KADmB;AAMzBC,IAAAA,GAAG,EAAE;AACHC,MAAAA,QAAQ,EAAE;AADP,KANoB;AASzBC,IAAAA,UAAU,EAAE;AACVJ,MAAAA,UAAU,EAAED,gBAAMC,UAAN,EADF;AAEVK,MAAAA,aAAa,EAAEV,KAAK,CAACW,OAAN,CAAcC,IAAd,GAAqB,GAF1B;AAGVC,MAAAA,QAAQ,EAAE,QAHA;AAIVC,MAAAA,GAAG,EAAE;AAJK,KATa;AAezBC,IAAAA,KAAK,EAAE;AACLC,MAAAA,aAAa,EAAE,WADV;AAELC,MAAAA,OAAO,YAAKjB,KAAK,CAACW,OAAN,CAAcC,IAAnB,gBAA6BZ,KAAK,CAACW,OAAN,CAAcC,IAAd,GAAqB,CAAlD,OAFF;AAGLM,MAAAA,YAAY,sBAAed,gBAAMe,SAAN,EAAf,CAHP;AAILC,MAAAA,KAAK,EAAE,aAJF;AAKLC,MAAAA,YAAY,EAAErB,KAAK,CAACW,OAAN,CAAcC;AALvB,KAfkB;AAsBzBU,IAAAA,eAAe,EAAE;AACfjB,MAAAA,UAAU,EAAEL,KAAK,CAACuB,OAAN,CAAcC,MAAd,CAAqBC;AADlB;AAtBQ,GAAZ;AAAA,CAAf;;AA2BA,SAASC,YAAT,CAAsBC,KAAtB,EAA6B;AAC3B,MAAMV,OAAO,GAAGU,KAAK,CAACC,QAAN,GAAiB,kBAAjB,GAAsC,MAAtD;AAEA,sBACE,gCAAC,sBAAD;AACE,IAAA,SAAS,EAAC,KADZ;AAEE,IAAA,KAAK,EAAE;AACLX,MAAAA,OAAO,EAAPA,OADK;AAELT,MAAAA,QAAQ,EAAE,SAFL;AAGLL,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EAHZ;AAILD,MAAAA,KAAK,EAAEA,gBAAME,IAAN;AAJF;AAFT,KASGqB,KAAK,CAACE,QATT,CADF;AAaD;;AAEDH,YAAY,CAACI,SAAb,GAAyB;AACvBD,EAAAA,QAAQ,EAAEE,sBAAUC,IAAV,CAAeC,UADF;AAEvBL,EAAAA,QAAQ,EAAEG,sBAAUG;AAFG,CAAzB;;IAKMC,Y;;;;;;;;;;;;;;;8FACI;AACNC,MAAAA,SAAS,EAAE;AADL,K;qGAIO,UAACC,KAAD,EAAQD,SAAR,EAAsB;AACnC,YAAKE,QAAL,CAAc;AAAA,eAAO;AAAEF,UAAAA,SAAS,EAATA;AAAF,SAAP;AAAA,OAAd;;AACAG,MAAAA,UAAU,CAAC,YAAM;AACf,YAAMC,cAAc,GAAG,IAAIC,WAAJ,CAAgB,2BAAhB,EAA6C;AAClEC,UAAAA,MAAM,EAAE;AACNnC,YAAAA,GAAG,EAAE6B;AADC;AAD0D,SAA7C,CAAvB;AAMAO,QAAAA,MAAM,CAACC,aAAP,CAAqBJ,cAArB;AACD,OARS,CAAV;AASD,K;mGAEY,UAAClC,IAAD,EAAU;AACrB;AACA,UAAMuC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AACAF,MAAAA,GAAG,CAACG,SAAJ,GAAgB1C,IAAI,CAAC2C,OAAL,CAAa,aAAb,EAA4B,OAA5B,CAAhB;AAEA,UAAMC,KAAK,GAAGL,GAAG,CAACM,aAAJ,CAAkB,OAAlB,CAAd;;AACA,UAAID,KAAJ,EAAW;AACT,YAAME,MAAM,GAAGN,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AAEAK,QAAAA,MAAM,CAACC,YAAP,CAAoB,MAApB,EAA4B,WAA5B;AACAD,QAAAA,MAAM,CAACC,YAAP,CAAoB,KAApB,EAA2BH,KAAK,CAACI,YAAN,CAAmB,KAAnB,CAA3B;AAEAJ,QAAAA,KAAK,CAACK,eAAN,CAAsB,KAAtB;AACAL,QAAAA,KAAK,CAACM,WAAN,CAAkBJ,MAAlB;AACD;;AAED,aAAOP,GAAG,CAACG,SAAX;AACD,K;;;;;;WAED,kBAAS;AAAA;;AACP,wBAAwC,KAAKrB,KAA7C;AAAA,UAAQ8B,OAAR,eAAQA,OAAR;AAAA,UAAiBC,IAAjB,eAAiBA,IAAjB;AAAA,UAAuBC,YAAvB,eAAuBA,YAAvB;AACA,UAAQvB,SAAR,GAAsB,KAAKwB,KAA3B,CAAQxB,SAAR;;AAEA,UAAIsB,IAAI,IAAIA,IAAI,CAACG,MAAL,GAAc,CAA1B,EAA6B;AAC3B,eAAOF,YAAY,gBACjB;AAAK,UAAA,SAAS,EAAC;AAAf,WACGD,IAAI,CAACI,GAAL,CAAS,UAACvD,GAAD;AAAA,8BACR;AAAK,YAAA,GAAG,EAAEA,GAAG,CAACwD,EAAd;AAAkB,YAAA,SAAS,oBAAaxD,GAAG,CAACwD,EAAjB;AAA3B,0BACE,gCAAC,YAAD;AAAc,YAAA,QAAQ;AAAtB,0BACE;AACE,YAAA,SAAS,EAAE,4BAAWN,OAAO,CAAC1C,KAAnB,EAA0B,OAA1B,CADb;AAEE,YAAA,uBAAuB,EAAE;AAAEiD,cAAAA,MAAM,EAAE,MAAI,CAACC,UAAL,CAAgB1D,GAAG,CAACQ,KAApB;AAAV;AAF3B,YADF,eAKE,gCAAC,iBAAD;AAAS,YAAA,OAAO,EAAC;AAAjB,0BACE;AAAK,YAAA,SAAS,EAAC,MAAf;AAAsB,YAAA,GAAG,EAAER,GAAG,CAACwD,EAA/B;AAAmC,YAAA,uBAAuB,EAAE;AAAEC,cAAAA,MAAM,EAAE,MAAI,CAACC,UAAL,CAAgB1D,GAAG,CAACD,IAApB;AAAV;AAA5D,YADF,CALF,CADF,CADQ;AAAA,SAAT,CADH,CADiB,gBAiBjB;AAAK,UAAA,SAAS,EAAEmD,OAAO,CAACxD;AAAxB,wBACE,gCAAC,gBAAD;AACE,UAAA,OAAO,EAAE;AACPA,YAAAA,IAAI,EAAEwD,OAAO,CAAChD,UADP;AAEPyD,YAAAA,aAAa,EAAET,OAAO,CAACnC;AAFhB,WADX;AAKE,UAAA,KAAK,EAAEc,SALT;AAME,UAAA,QAAQ,EAAE,KAAK+B;AANjB,WAQGT,IAAI,CAACI,GAAL,CAAS,UAACvD,GAAD;AAAA,8BACR,gCAAC,eAAD;AACE,YAAA,SAAS,EAAEkD,OAAO,CAAClD,GADrB;AAEE,YAAA,GAAG,EAAEA,GAAG,CAACwD,EAFX;AAGE,YAAA,KAAK,eACH,gCAAC,iBAAD;AAAS,cAAA,OAAO,EAAC;AAAjB,4BACE;AAAM,cAAA,uBAAuB,EAAE;AAAEC,gBAAAA,MAAM,EAAE,MAAI,CAACC,UAAL,CAAgB1D,GAAG,CAACQ,KAApB;AAAV;AAA/B,cADF,CAJJ;AAQE,YAAA,KAAK,EAAER,GAAG,CAACwD;AARb,YADQ;AAAA,SAAT,CARH,CADF,EAuBGL,IAAI,CAACI,GAAL,CAAS,UAACvD,GAAD;AAAA,iBACR6B,SAAS,KAAK7B,GAAG,CAACwD,EAAlB,gBACE,gCAAC,YAAD;AAAc,YAAA,QAAQ,MAAtB;AAAuB,YAAA,GAAG,EAAExD,GAAG,CAACwD;AAAhC,0BACE,gCAAC,iBAAD;AAAS,YAAA,OAAO,EAAC;AAAjB,0BACE;AAAK,YAAA,GAAG,EAAExD,GAAG,CAACwD,EAAd;AAAkB,YAAA,uBAAuB,EAAE;AAAEC,cAAAA,MAAM,EAAE,MAAI,CAACC,UAAL,CAAgB1D,GAAG,CAACD,IAApB;AAAV;AAA3C,YADF,CADF,CADF,GAMI,IAPI;AAAA,SAAT,CAvBH,CAjBF;AAmDD,OApDD,MAoDO,IAAIoD,IAAI,IAAIA,IAAI,CAAC,CAAD,CAAhB,EAAqB;AAC1B,4BACE;AAAK,UAAA,SAAS,EAAC,SAAf;AAAyB,UAAA,KAAK,EAAE;AAAEU,YAAAA,UAAU,EAAE;AAAd;AAAhC,wBACE,gCAAC,YAAD,qBACE;AAAK,UAAA,SAAS,EAAC,MAAf;AAAsB,UAAA,uBAAuB,EAAE;AAAEJ,YAAAA,MAAM,EAAE,KAAKC,UAAL,CAAgBP,IAAI,CAAC,CAAD,CAAJ,CAAQpD,IAAxB;AAAV;AAA/C,UADF,CADF,CADF;AAOD;AACF;;;EAtGwB+D,kBAAMC,S;;AAyGjCnC,YAAY,CAACL,SAAb,GAAyB;AACvB2B,EAAAA,OAAO,EAAE1B,sBAAUwC,MAAV,CAAiBtC,UADH;AAEvByB,EAAAA,IAAI,EAAE3B,sBAAUyC,OAAV,CACJzC,sBAAU0C,KAAV,CAAgB;AACdV,IAAAA,EAAE,EAAEhC,sBAAU2C,MAAV,CAAiBzC,UADP;AAEdlB,IAAAA,KAAK,EAAEgB,sBAAU4C,MAAV,CAAiB1C,UAFV;AAGd3B,IAAAA,IAAI,EAAEyB,sBAAU4C,MAAV,CAAiB1C;AAHT,GAAhB,EAIGA,UALC,EAMJA,UARqB;AASvB0B,EAAAA,YAAY,EAAE5B,sBAAUG;AATD,CAAzB;;eAYe,wBAAWnC,MAAX,EAAmBoC,YAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { color, Purpose } from '@pie-lib/render-ui';\nimport classNames from 'classnames';\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n backgroundColor: color.background(),\n color: color.text(),\n },\n tab: {\n fontSize: '0.8125em',\n },\n stickyTabs: {\n background: color.background(),\n paddingBottom: theme.spacing.unit * 2.5,\n position: 'sticky',\n top: 0,\n },\n title: {\n textTransform: 'uppercase',\n padding: `${theme.spacing.unit}px ${theme.spacing.unit * 3}px`,\n borderBottom: `2px solid ${color.secondary()}`,\n width: 'fit-content',\n marginBottom: theme.spacing.unit,\n },\n buttonContainer: {\n background: theme.palette.common.white,\n },\n});\n\nfunction TabContainer(props) {\n const padding = props.multiple ? '0 24px 24px 24px' : '24px';\n\n return (\n <Typography\n component=\"div\"\n style={{\n padding,\n fontSize: '0.875em',\n backgroundColor: color.background(),\n color: color.text(),\n }}\n >\n {props.children}\n </Typography>\n );\n}\n\nTabContainer.propTypes = {\n children: PropTypes.node.isRequired,\n multiple: PropTypes.bool,\n};\n\nclass StimulusTabs extends React.Component {\n state = {\n activeTab: 0,\n };\n\n handleChange = (event, activeTab) => {\n this.setState(() => ({ activeTab }));\n setTimeout(() => {\n const tabChangeEvent = new CustomEvent('pie-ui-passage-tabChanged', {\n detail: {\n tab: activeTab,\n },\n });\n\n window.dispatchEvent(tabChangeEvent);\n });\n };\n\n parsedText = (text) => {\n // fix imported audio content for Safari PD-1391\n const div = document.createElement('div');\n div.innerHTML = text.replace(/(<br\\/>\\n)/g, '<br/>');\n\n const audio = div.querySelector('audio');\n if (audio) {\n const source = document.createElement('source');\n\n source.setAttribute('type', 'audio/mp3');\n source.setAttribute('src', audio.getAttribute('src'));\n\n audio.removeAttribute('src');\n audio.appendChild(source);\n }\n\n return div.innerHTML;\n };\n\n render() {\n const { classes, tabs, disabledTabs } = this.props;\n const { activeTab } = this.state;\n\n if (tabs && tabs.length > 1) {\n return disabledTabs ? (\n <div className=\"passages\">\n {tabs.map((tab) => (\n <div key={tab.id} className={`passage-${tab.id}`}>\n <TabContainer multiple>\n <div\n className={classNames(classes.title, 'title')}\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.title) }}\n />\n <Purpose purpose=\"passage-text\">\n <div className=\"text\" key={tab.id} dangerouslySetInnerHTML={{ __html: this.parsedText(tab.text) }} />\n </Purpose>\n </TabContainer>\n </div>\n ))}\n </div>\n ) : (\n <div className={classes.root}>\n <Tabs\n classes={{\n root: classes.stickyTabs,\n flexContainer: classes.buttonContainer,\n }}\n value={activeTab}\n onChange={this.handleChange}\n >\n {tabs.map((tab) => (\n <Tab\n className={classes.tab}\n key={tab.id}\n label={\n <Purpose purpose=\"passage-title\">\n <span dangerouslySetInnerHTML={{ __html: this.parsedText(tab.title) }} />\n </Purpose>\n }\n value={tab.id}\n />\n ))}\n </Tabs>\n\n {tabs.map((tab) =>\n activeTab === tab.id ? (\n <TabContainer multiple key={tab.id}>\n <Purpose purpose=\"passage-text\">\n <div key={tab.id} dangerouslySetInnerHTML={{ __html: this.parsedText(tab.text) }} />\n </Purpose>\n </TabContainer>\n ) : null,\n )}\n </div>\n );\n } else if (tabs && tabs[0]) {\n return (\n <div className=\"passage\" style={{ whiteSpace: 'break-spaces' }}>\n <TabContainer>\n <div className=\"text\" dangerouslySetInnerHTML={{ __html: this.parsedText(tabs[0].text) }} />\n </TabContainer>\n </div>\n );\n }\n }\n}\n\nStimulusTabs.propTypes = {\n classes: PropTypes.object.isRequired,\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n }).isRequired,\n ).isRequired,\n disabledTabs: PropTypes.bool,\n};\n\nexport default withStyles(styles)(StimulusTabs);\n"],"file":"stimulus-tabs.js"}
1
+ {"version":3,"sources":["../src/stimulus-tabs.jsx"],"names":["styles","theme","root","flexGrow","backgroundColor","color","background","text","tab","fontSize","stickyTabs","paddingBottom","spacing","unit","position","top","title","textTransform","padding","borderBottom","secondary","width","marginBottom","buttonContainer","palette","common","white","TabContainer","props","multiple","children","propTypes","PropTypes","node","isRequired","bool","StimulusTabs","activeTab","event","setState","setTimeout","tabChangeEvent","CustomEvent","detail","window","dispatchEvent","currentTabId","key","tabs","newTabIndex","currentIndex","findIndex","id","length","preventDefault","handleChange","div","document","createElement","innerHTML","replace","audio","querySelector","source","setAttribute","getAttribute","removeAttribute","appendChild","classes","disabledTabs","state","map","__html","parsedText","flexContainer","handleKeyDown","whiteSpace","React","Component","object","arrayOf","shape","number","string"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { color, Purpose } from '@pie-lib/render-ui';\nimport classNames from 'classnames';\n\nconst styles = (theme) => ({\n root: {\n flexGrow: 1,\n backgroundColor: color.background(),\n color: color.text(),\n },\n tab: {\n fontSize: '0.8125em',\n },\n stickyTabs: {\n background: color.background(),\n paddingBottom: theme.spacing.unit * 2.5,\n position: 'sticky',\n top: 0,\n },\n title: {\n textTransform: 'uppercase',\n padding: `${theme.spacing.unit}px ${theme.spacing.unit * 3}px`,\n borderBottom: `2px solid ${color.secondary()}`,\n width: 'fit-content',\n marginBottom: theme.spacing.unit,\n },\n buttonContainer: {\n background: theme.palette.common.white,\n },\n});\n\nfunction TabContainer(props) {\n const padding = props.multiple ? '0 24px 24px 24px' : '24px';\n\n return (\n <Typography\n component=\"div\"\n style={{\n padding,\n fontSize: '0.875em',\n backgroundColor: color.background(),\n color: color.text(),\n }}\n >\n {props.children}\n </Typography>\n );\n}\n\nTabContainer.propTypes = {\n children: PropTypes.node.isRequired,\n multiple: PropTypes.bool,\n};\n\nclass StimulusTabs extends React.Component {\n state = {\n activeTab: 0,\n };\n\n handleChange = (event, activeTab) => {\n this.setState(() => ({ activeTab }));\n setTimeout(() => {\n const tabChangeEvent = new CustomEvent('pie-ui-passage-tabChanged', {\n detail: {\n tab: activeTab,\n },\n });\n\n window.dispatchEvent(tabChangeEvent);\n });\n };\n\n handleKeyDown = (event, currentTabId) => {\n const { key } = event;\n const { tabs } = this.props;\n \n let newTabIndex = -1;\n const currentIndex = tabs.findIndex((tab) => tab.id === currentTabId);\n \n switch (key) {\n case 'ArrowRight':\n case 'ArrowDown':\n newTabIndex = (currentIndex + 1) % tabs.length;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n newTabIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n break;\n case 'Home':\n newTabIndex = 0;\n break;\n case 'End':\n newTabIndex = tabs.length - 1;\n break;\n case 'Enter':\n case ' ':\n newTabIndex = currentIndex;\n break;\n default:\n break;\n }\n \n if (newTabIndex !== -1) {\n event.preventDefault();\n this.handleChange(event, tabs[newTabIndex].id);\n }\n };\n \n \n parsedText = (text) => {\n // fix imported audio content for Safari PD-1391\n const div = document.createElement('div');\n div.innerHTML = text.replace(/(<br\\/>\\n)/g, '<br/>');\n\n const audio = div.querySelector('audio');\n if (audio) {\n const source = document.createElement('source');\n\n source.setAttribute('type', 'audio/mp3');\n source.setAttribute('src', audio.getAttribute('src'));\n\n audio.removeAttribute('src');\n audio.appendChild(source);\n }\n\n return div.innerHTML;\n };\n\n render() {\n const { classes, tabs, disabledTabs } = this.props;\n const { activeTab } = this.state;\n\n if (tabs && tabs.length > 1) {\n return disabledTabs ? (\n <div className=\"passages\">\n {tabs.map((tab) => (\n <div key={tab.id} className={`passage-${tab.id}`}>\n <TabContainer multiple>\n <div\n className={classNames(classes.title, 'title')}\n dangerouslySetInnerHTML={{ __html: this.parsedText(tab.title) }}\n />\n <Purpose purpose=\"passage-text\">\n <div className=\"text\" key={tab.id} dangerouslySetInnerHTML={{ __html: this.parsedText(tab.text) }} />\n </Purpose>\n </TabContainer>\n </div>\n ))}\n </div>\n ) : (\n <div className={classes.root}>\n <Tabs\n classes={{\n root: classes.stickyTabs,\n flexContainer: classes.buttonContainer,\n }}\n value={activeTab}\n onChange={this.handleChange}\n >\n {tabs.map((tab) => (\n <Tab\n className={classes.tab}\n key={tab.id}\n label={\n <Purpose purpose=\"passage-title\">\n <span dangerouslySetInnerHTML={{ __html: this.parsedText(tab.title) }} />\n </Purpose>\n }\n value={tab.id}\n tabIndex={activeTab === tab.id ? 0 : -1}\n aria-selected={activeTab === tab.id}\n onFocus={() => this.handleChange(null, tab.id)}\n onKeyDown={(event) => this.handleKeyDown(event, tab.id)}\n />\n ))}\n </Tabs>\n\n {tabs.map((tab) =>\n activeTab === tab.id ? (\n <TabContainer multiple key={tab.id}>\n <Purpose purpose=\"passage-text\">\n <div key={tab.id} dangerouslySetInnerHTML={{ __html: this.parsedText(tab.text) }} />\n </Purpose>\n </TabContainer>\n ) : null,\n )}\n </div>\n );\n } else if (tabs && tabs[0]) {\n return (\n <div className=\"passage\" style={{ whiteSpace: 'break-spaces' }}>\n <TabContainer>\n <div className=\"text\" dangerouslySetInnerHTML={{ __html: this.parsedText(tabs[0].text) }} />\n </TabContainer>\n </div>\n );\n }\n }\n}\n\nStimulusTabs.propTypes = {\n classes: PropTypes.object.isRequired,\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n }).isRequired,\n ).isRequired,\n disabledTabs: PropTypes.bool,\n};\n\nexport default withStyles(styles)(StimulusTabs);\n"],"file":"stimulus-tabs.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/passage",
3
- "version": "1.10.3-next.40+7221991a3",
3
+ "version": "1.10.3-next.45+62ff92a85",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -17,7 +17,7 @@
17
17
  "react": "^16.8.1",
18
18
  "react-dom": "^16.8.1"
19
19
  },
20
- "gitHead": "7221991a389629223844bd070d84c7d7483ef9d9",
20
+ "gitHead": "62ff92a8524033abfcc7a323b126605d76eb73c7",
21
21
  "scripts": {
22
22
  "postpublish": "../../scripts/postpublish"
23
23
  },