@entur/expand 3.3.30 → 3.3.32

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/LICENSE.md CHANGED
@@ -208,74 +208,3 @@ The European Commission may update this Appendix to later versions of the above
208
208
  a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the
209
209
  covered Source Code from exclusive appropriation.
210
210
  All other changes or additions to this Appendix require the production of a new EUPL version.
211
-
212
- # Standard Nucleo License
213
-
214
- - Last updated: July 2, 2018
215
- - [Github repo](https://github.com/NucleoApp/license-standard)
216
-
217
- By purchasing the Nucleo icons, you have the right to:
218
-
219
- - Use the Nucleo icons in unlimited personal and commercial projects, for yourself or a client, with no limitation to the number of impressions for your end product.
220
- - Use the Nucleo icons in applications, software, UI/UX design, print, and logo design.
221
- - Modify the Nucleo icons to create your icon variations.
222
-
223
- You don't have the right to:
224
-
225
- - Sublicense, resell, share, transfer, or otherwise redistribute the Nucleo icons (even for free or within a more complex downloadable file).
226
- - Use the Nucleo icons in a product that is directly competitive with Nucleo.
227
-
228
- ## Limitations & Extended license
229
-
230
- - **For each project, you can use a maximum of 250 Nucleo icons** (intended per unique style: for example, if you're using the same icon in both the outline and glyph styles, or in 2 different sizes, you're using 2 icons). You can lift this limit by purchasing an Extended License.
231
- - If you're using Nucleo icons in templates, themes or plugins offered for sale, you can use a maximum of 100 Nucleo icons. You can lift this limit by purchasing an Extended License.
232
- - If you're using the Nucleo icons in open source projects, you can use a maximum of 100 Nucleo icons.
233
- - If you're interested in using the Nucleo icons in items offered for sale (or for free) where the Nucleo icons contribute to the core value of the product being sold/shared, you will need an Extended License (e.g., a CMS where users can browse the Nucleo icons and pick the ones to include in their design).
234
-
235
- [Learn more about the Extended License](https://nucleoapp.com/extended-license)
236
-
237
- ## Freelance Projects & Contracted work
238
-
239
- If you're working on a project for a client, you can share with your client a maximum of 250 Nucleo icons per project. You can't share the Nucleo source files unless the client purchases a license.
240
-
241
- If the Nucleo icons contribute to the core value of the product being sold/shared, or if you (or your client) wish to include more than 250 icons in the project, the [Extended License](https://nucleoapp.com/extended-license) is required.
242
-
243
- ## Templates, Themes, UI Kits & Plugins
244
-
245
- If you're using Nucleo icons in templates, themes or plugins offered for sale (e.g., UI kits, Wordpress Themes, HTML/CSS Templates), **you can include up to 100 icons in the downloadable source files**. This limitation applies to the icon fonts as well.
246
-
247
- The downloadable source file has to include the [Nucleo Copyright Notice](https://nucleoapp.com/copyright-notice).
248
-
249
- If the Nucleo icons contribute to the core value of the template, theme or plugin sold (e.g., a theme builder where users can browse Nucleo icons and pick the ones to include in their design), or if you wish to use more than 100 Nucleo icons, you will need an [Extended License](https://nucleoapp.com/extended-license).
250
-
251
- It's not possible to purchase an Extended License if the template, theme or plugin is distributed for free.
252
-
253
- If you're offering a free and pro version of your product, the free version cannot include more than 100 icons even if you purchased an Extended License to lift the limit. The Extended License applies only to the pro version of your product.
254
-
255
- ## Open source projects
256
-
257
- If you're using the Nucleo icons in open source projects, **you can include up to 100 icons in the downloadable source files**. This limitation applies to the icon fonts as well.
258
-
259
- The downloadable source file has to include the [Nucleo Copyright Notice](https://nucleoapp.com/copyright-notice).
260
-
261
- It's not possible to purchase an Extended License for open source projects.
262
-
263
- ## Sharing Nucleo icons with team members
264
-
265
- If you're the sole owner of a Nucleo license, you can share with your team members only the icons used in your work, with a maximum of 250 icons (e.g., if you're a designer, you can share with the developers of your team only the Nucleo icons used in your design files).
266
-
267
- Your team members cannot reuse the Nucleo icons in other projects unless they purchase a license.
268
-
269
- If more than one team member needs access to the Nucleo icons, you can consider purchasing a [team license](https://nucleoapp.com/pricing).
270
-
271
- ## Design systems
272
-
273
- If you wish to include the Nucleo icons in a design system available on a public server, you can use a maximum of 250 Nucleo icons, even if your team purchased a Nucleo team license.
274
-
275
- If the design system is accessible only by the members of your organization (e.g., is hosted on a password protected server), but you're the sole owner of a Nucleo license, you can share with your colleagues a maximum of 250 Nucleo icons.
276
-
277
- If the design system is on a public server, you can lift the 250 icons limit by buying an [Extended License](https://nucleoapp.com/extended-license). However, please keep in mind you can't provide a link/button to download all the icons.
278
-
279
- If your team purchased a Nucleo team license that covers all the users with access to the design system, and the design system is not public (e.g., is hosted on a password protected server), then there's no limitation to the number of icons that can be included.
280
-
281
- If you're still unclear about what is or isn't allowed under this license, please contact us at info@nucleoapp.com.
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
- declare type Id = string | null;
3
- export declare type AccordionProps = {
2
+ type Id = string | null;
3
+ export type AccordionProps = {
4
4
  /** To eller flere AccordionItem-komponenter */
5
5
  children: React.ReactNode;
6
6
  [key: string]: any;
7
7
  };
8
8
  export declare const Accordion: React.FC<AccordionProps>;
9
- declare type UseAccordionArgs = {
9
+ type UseAccordionArgs = {
10
10
  id: Id;
11
11
  defaultOpen?: boolean;
12
12
  };
@@ -1,5 +1,5 @@
1
1
  import React, { CSSProperties } from 'react';
2
- export declare type AccordionItemProps = {
2
+ export type AccordionItemProps = {
3
3
  /** Teksten som skal stå i panelet */
4
4
  title: React.ReactNode;
5
5
  /** Innholdet som skal vises under panelet */
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- declare type BaseExpandProps = {
2
+ type BaseExpandProps = {
3
3
  /** Innholdet som skal være expandable */
4
4
  children: React.ReactNode;
5
5
  /** Boolean for om innholdet vises eller ikke */
@@ -1,6 +1,6 @@
1
1
  import React, { CSSProperties } from 'react';
2
2
  import './BaseExpandablePanel.scss';
3
- declare type BaseExpandablePanelProps = {
3
+ type BaseExpandablePanelProps = {
4
4
  /** Teksten som skal stå i panelet */
5
5
  title: React.ReactNode;
6
6
  /** Innholdet som skal vises under panelet */
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import './ExpandArrow.scss';
3
- declare type ExpandArrowProps = {
3
+ type ExpandArrowProps = {
4
4
  /** Om innholdet er åpent eller ikke, som bestemmer retningen på pila
5
5
  * @default false
6
6
  */
@@ -1,5 +1,5 @@
1
1
  import React, { CSSProperties } from 'react';
2
- export declare type ExpandablePanelProps = {
2
+ export type ExpandablePanelProps = {
3
3
  /** Teksten som skal stå i panelet */
4
4
  title: React.ReactNode;
5
5
  /** Innholdet som skal vises under panelet */
@@ -1,6 +1,6 @@
1
1
  import React, { CSSProperties } from 'react';
2
2
  import './ExpandableText.scss';
3
- export declare type ExpandableTextProps = {
3
+ export type ExpandableTextProps = {
4
4
  /** Teksten som skal "vises" */
5
5
  title: string;
6
6
  /** Innholdet som skal vises under linken */
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export declare type ExandableTextButtonProps = {
2
+ export type ExandableTextButtonProps = {
3
3
  children: React.ReactNode;
4
4
  /** Prop for om innholdet er åpent */
5
5
  open?: boolean;
@@ -15,42 +15,38 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
15
15
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
16
16
 
17
17
  function _extends() {
18
- _extends = Object.assign || function (target) {
18
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
19
19
  for (var i = 1; i < arguments.length; i++) {
20
20
  var source = arguments[i];
21
-
22
21
  for (var key in source) {
23
22
  if (Object.prototype.hasOwnProperty.call(source, key)) {
24
23
  target[key] = source[key];
25
24
  }
26
25
  }
27
26
  }
28
-
29
27
  return target;
30
28
  };
31
-
32
29
  return _extends.apply(this, arguments);
33
30
  }
34
-
31
+ function _objectDestructuringEmpty(obj) {
32
+ if (obj == null) throw new TypeError("Cannot destructure " + obj);
33
+ }
35
34
  function _objectWithoutPropertiesLoose(source, excluded) {
36
35
  if (source == null) return {};
37
36
  var target = {};
38
37
  var sourceKeys = Object.keys(source);
39
38
  var key, i;
40
-
41
39
  for (i = 0; i < sourceKeys.length; i++) {
42
40
  key = sourceKeys[i];
43
41
  if (excluded.indexOf(key) >= 0) continue;
44
42
  target[key] = source[key];
45
43
  }
46
-
47
44
  return target;
48
45
  }
49
46
 
50
47
  var AccordionContext = /*#__PURE__*/React__default["default"].createContext(null);
51
48
  var Accordion = function Accordion(_ref) {
52
- var rest = _extends({}, _ref);
53
-
49
+ var rest = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
54
50
  var currentlyOpenState = React__default["default"].useState(null);
55
51
  return React__default["default"].createElement(AccordionContext.Provider, _extends({
56
52
  value: currentlyOpenState
@@ -58,15 +54,13 @@ var Accordion = function Accordion(_ref) {
58
54
  };
59
55
  var useAccordion = function useAccordion(_ref2) {
60
56
  var id = _ref2.id,
61
- defaultOpen = _ref2.defaultOpen;
57
+ defaultOpen = _ref2.defaultOpen;
62
58
  var contextValue = React__default["default"].useContext(AccordionContext);
63
-
64
59
  if (!contextValue) {
65
60
  throw new Error('You need to wrap your AccordionItem inside an Accordion');
66
61
  }
67
-
68
62
  var openId = contextValue[0],
69
- setOpenId = contextValue[1];
63
+ setOpenId = contextValue[1];
70
64
  React__default["default"].useEffect(function () {
71
65
  if (defaultOpen) {
72
66
  setOpenId(id);
@@ -84,8 +78,7 @@ var useAccordion = function useAccordion(_ref2) {
84
78
  var _excluded$6 = ["open"];
85
79
  var BaseExpand = function BaseExpand(_ref) {
86
80
  var open = _ref.open,
87
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
88
-
81
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
89
82
  return React__default["default"].createElement(reactCollapse.UnmountClosed, {
90
83
  isOpened: open
91
84
  }, React__default["default"].createElement("div", _extends({}, rest)));
@@ -94,10 +87,9 @@ var BaseExpand = function BaseExpand(_ref) {
94
87
  var _excluded$5 = ["open", "className"];
95
88
  var ExpandArrow = function ExpandArrow(_ref) {
96
89
  var _ref$open = _ref.open,
97
- open = _ref$open === void 0 ? false : _ref$open,
98
- className = _ref.className,
99
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
100
-
90
+ open = _ref$open === void 0 ? false : _ref$open,
91
+ className = _ref.className,
92
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
101
93
  return React__default["default"].createElement(icons.DownArrowIcon, _extends({
102
94
  className: classNames__default["default"](className, 'eds-expandable-arrow', {
103
95
  'eds-expandable-arrow--open': open
@@ -108,14 +100,13 @@ var ExpandArrow = function ExpandArrow(_ref) {
108
100
  var _excluded$4 = ["title", "children", "className", "id", "open", "onToggle", "contentStyle"];
109
101
  var BaseExpandablePanel = function BaseExpandablePanel(_ref) {
110
102
  var title = _ref.title,
111
- children = _ref.children,
112
- className = _ref.className,
113
- id = _ref.id,
114
- open = _ref.open,
115
- onToggle = _ref.onToggle,
116
- contentStyle = _ref.contentStyle,
117
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
118
-
103
+ children = _ref.children,
104
+ className = _ref.className,
105
+ id = _ref.id,
106
+ open = _ref.open,
107
+ onToggle = _ref.onToggle,
108
+ contentStyle = _ref.contentStyle,
109
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
119
110
  return React__default["default"].createElement("div", {
120
111
  className: classNames__default["default"]('eds-expandable-panel', className)
121
112
  }, React__default["default"].createElement("button", _extends({
@@ -144,21 +135,18 @@ var BaseExpandablePanel = function BaseExpandablePanel(_ref) {
144
135
  var _excluded$3 = ["defaultOpen", "id", "contentStyle"];
145
136
  var AccordionItem = function AccordionItem(_ref) {
146
137
  var _ref$defaultOpen = _ref.defaultOpen,
147
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
148
- overrideId = _ref.id,
149
- contentStyle = _ref.contentStyle,
150
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
151
-
138
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
139
+ overrideId = _ref.id,
140
+ contentStyle = _ref.contentStyle,
141
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
152
142
  var randomId = utils.useRandomId('eds-accordion-item');
153
143
  var id = overrideId || randomId;
154
-
155
144
  var _useAccordion = useAccordion({
156
- id: id,
157
- defaultOpen: defaultOpen
158
- }),
159
- isOpen = _useAccordion.isOpen,
160
- toggle = _useAccordion.toggle;
161
-
145
+ id: id,
146
+ defaultOpen: defaultOpen
147
+ }),
148
+ isOpen = _useAccordion.isOpen,
149
+ toggle = _useAccordion.toggle;
162
150
  return React__default["default"].createElement(BaseExpandablePanel, _extends({}, rest, {
163
151
  contentStyle: contentStyle,
164
152
  id: id,
@@ -170,16 +158,13 @@ var AccordionItem = function AccordionItem(_ref) {
170
158
  var _excluded$2 = ["defaultOpen", "contentStyle"];
171
159
  var ExpandablePanel = function ExpandablePanel(_ref) {
172
160
  var _ref$defaultOpen = _ref.defaultOpen,
173
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
174
- contentStyle = _ref.contentStyle,
175
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
176
-
161
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
162
+ contentStyle = _ref.contentStyle,
163
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
177
164
  var randomId = utils.useRandomId('eds-expandable');
178
-
179
165
  var _React$useState = React__default["default"].useState(defaultOpen),
180
- isOpen = _React$useState[0],
181
- setOpen = _React$useState[1];
182
-
166
+ isOpen = _React$useState[0],
167
+ setOpen = _React$useState[1];
183
168
  return React__default["default"].createElement(BaseExpandablePanel, _extends({
184
169
  id: randomId,
185
170
  open: isOpen,
@@ -195,12 +180,11 @@ var ExpandablePanel = function ExpandablePanel(_ref) {
195
180
  var _excluded$1 = ["children", "open", "onToggle", "as"];
196
181
  var ExpandableTextButton = function ExpandableTextButton(_ref) {
197
182
  var children = _ref.children,
198
- open = _ref.open,
199
- onToggle = _ref.onToggle,
200
- _ref$as = _ref.as,
201
- Component = _ref$as === void 0 ? typography.Heading5 : _ref$as,
202
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
203
-
183
+ open = _ref.open,
184
+ onToggle = _ref.onToggle,
185
+ _ref$as = _ref.as,
186
+ Component = _ref$as === void 0 ? typography.Heading5 : _ref$as,
187
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
204
188
  return React__default["default"].createElement("button", _extends({
205
189
  className: "eds-expandable-text__trigger",
206
190
  "aria-expanded": open,
@@ -218,20 +202,17 @@ var ExpandableTextButton = function ExpandableTextButton(_ref) {
218
202
  var _excluded = ["title", "children", "defaultOpen", "contentStyle", "titleElement"];
219
203
  var ExpandableText = function ExpandableText(_ref) {
220
204
  var title = _ref.title,
221
- children = _ref.children,
222
- _ref$defaultOpen = _ref.defaultOpen,
223
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
224
- contentStyle = _ref.contentStyle,
225
- _ref$titleElement = _ref.titleElement,
226
- titleElement = _ref$titleElement === void 0 ? 'Heading5' : _ref$titleElement,
227
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
228
-
205
+ children = _ref.children,
206
+ _ref$defaultOpen = _ref.defaultOpen,
207
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
208
+ contentStyle = _ref.contentStyle,
209
+ _ref$titleElement = _ref.titleElement,
210
+ titleElement = _ref$titleElement === void 0 ? 'Heading5' : _ref$titleElement,
211
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
229
212
  var randomId = utils.useRandomId('eds-expandable-text');
230
-
231
213
  var _React$useState = React__default["default"].useState(defaultOpen),
232
- isOpen = _React$useState[0],
233
- setOpen = _React$useState[1];
234
-
214
+ isOpen = _React$useState[0],
215
+ setOpen = _React$useState[1];
235
216
  var Element = React__default["default"].useMemo(function () {
236
217
  return GetTypographyComponent(titleElement);
237
218
  }, [titleElement]);
@@ -251,18 +232,14 @@ var ExpandableText = function ExpandableText(_ref) {
251
232
  style: contentStyle
252
233
  }, rest), children));
253
234
  };
254
-
255
235
  function GetTypographyComponent(element) {
256
236
  switch (element) {
257
237
  case 'Heading5':
258
238
  return typography.Heading5;
259
-
260
239
  case 'Paragraph':
261
240
  return typography.Paragraph;
262
-
263
241
  case 'SubParagraph':
264
242
  return typography.SubParagraph;
265
-
266
243
  default:
267
244
  return typography.Heading5;
268
245
  }
@@ -1 +1 @@
1
- {"version":3,"file":"expand.cjs.development.js","sources":["../src/Accordion.tsx","../src/BaseExpand.tsx","../src/ExpandArrow.tsx","../src/BaseExpandablePanel.tsx","../src/AccordionItem.tsx","../src/ExpandablePanel.tsx","../src/ExpandableTextButton.tsx","../src/ExpandableText.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\n\ntype Id = string | null;\ntype AccordionContextType = [Id, React.Dispatch<React.SetStateAction<Id>>];\nconst AccordionContext = React.createContext<AccordionContextType | null>(null);\n\nexport type AccordionProps = {\n /** To eller flere AccordionItem-komponenter */\n children: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({ ...rest }) => {\n const currentlyOpenState = React.useState<Id>(null);\n return <AccordionContext.Provider value={currentlyOpenState} {...rest} />;\n};\n\ntype UseAccordionArgs = {\n id: Id;\n defaultOpen?: boolean;\n};\n\nexport const useAccordion: ({ id, defaultOpen }: UseAccordionArgs) => {\n isOpen: boolean;\n toggle: () => void;\n} = ({ id, defaultOpen }: UseAccordionArgs) => {\n const contextValue = React.useContext(AccordionContext);\n if (!contextValue) {\n throw new Error('You need to wrap your AccordionItem inside an Accordion');\n }\n\n const [openId, setOpenId] = contextValue;\n\n React.useEffect(() => {\n if (defaultOpen) {\n setOpenId(id);\n }\n }, [defaultOpen, id, setOpenId]);\n\n const isOpen = openId === id;\n\n return {\n isOpen,\n toggle: () => setOpenId(isOpen ? null : id),\n };\n};\n","import React from 'react';\n\nimport { UnmountClosed } from 'react-collapse';\n\ntype BaseExpandProps = {\n /** Innholdet som skal være expandable */\n children: React.ReactNode;\n /** Boolean for om innholdet vises eller ikke */\n open: boolean;\n [key: string]: any;\n};\nexport const BaseExpand: React.FC<BaseExpandProps> = ({ open, ...rest }) => {\n return (\n <UnmountClosed isOpened={open}>\n <div {...rest} />\n </UnmountClosed>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport './ExpandArrow.scss';\n\ntype ExpandArrowProps = {\n /** Om innholdet er åpent eller ikke, som bestemmer retningen på pila\n * @default false\n */\n open?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const ExpandArrow: React.FC<ExpandArrowProps> = ({\n open = false,\n className,\n ...rest\n}) => {\n return (\n <DownArrowIcon\n className={classNames(className, 'eds-expandable-arrow', {\n 'eds-expandable-arrow--open': open,\n })}\n {...rest}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport { BaseExpand } from './BaseExpand';\n\nimport './BaseExpandablePanel.scss';\nimport { ExpandArrow } from './ExpandArrow';\n\ntype BaseExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** IDen til expand-panelet */\n id: string;\n /** Prop for om innholdet er åpent */\n open: boolean;\n /** Funksjonen som styrer åpningen av BaseExpandablePanel */\n onToggle: () => void;\n /** Styling som sendes til innholdet av BaseExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const BaseExpandablePanel: React.FC<BaseExpandablePanelProps> = ({\n title,\n children,\n className,\n id,\n open,\n onToggle,\n contentStyle,\n ...rest\n}) => {\n return (\n <div className={classNames('eds-expandable-panel', className)}>\n <button\n type=\"button\"\n className=\"eds-expandable-panel__trigger\"\n onClick={onToggle}\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n {...rest}\n >\n <span className=\"eds-expandable-panel__grid\">\n <Heading5 margin=\"none\" as=\"span\">\n {title}\n </Heading5>\n <span className=\"eds-expandable-panel__icon-container\">\n <ExpandArrow open={open} />\n </span>\n </span>\n </button>\n <BaseExpand\n className=\"eds-expandable-panel__content\"\n id={id}\n open={open}\n style={contentStyle}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\nimport { useAccordion } from './Accordion';\n\nexport type AccordionItemProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand AccordionItem skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Styling som sendes til innholdet av AccordionItem */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n defaultOpen = false,\n id: overrideId,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-accordion-item');\n const id = overrideId || randomId;\n const { isOpen, toggle } = useAccordion({ id, defaultOpen });\n\n return (\n <BaseExpandablePanel\n {...rest}\n contentStyle={contentStyle}\n id={id}\n onToggle={toggle}\n open={isOpen}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\n\nexport type ExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandablePanel skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Funksjonen som styrer åpningen av ExpandablePanel */\n onToggle?: () => void;\n /** Styling som sendes til innholdet av ExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const ExpandablePanel: React.FC<ExpandablePanelProps> = ({\n defaultOpen = false,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable');\n\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n return (\n <BaseExpandablePanel\n id={randomId}\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n contentStyle={contentStyle}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { Heading5 } from '@entur/typography';\nimport { ExpandArrow } from './ExpandArrow';\n\nexport type ExandableTextButtonProps = {\n children: React.ReactNode;\n /** Prop for om innholdet er åpent */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableTextButton */\n onToggle: () => void;\n /** Den typografiske komponenten for tittelen\n * @default Heading5\n */\n as?: React.ElementType;\n [key: string]: any;\n};\n\nexport const ExpandableTextButton: React.FC<ExandableTextButtonProps> = ({\n children,\n open,\n onToggle,\n as: Component = Heading5,\n ...rest\n}) => {\n return (\n <button\n className=\"eds-expandable-text__trigger\"\n aria-expanded={open}\n type=\"button\"\n onClick={onToggle}\n {...rest}\n >\n <Component as=\"span\">{children}</Component>\n <ExpandArrow open={open} className=\"eds-expandable-text__arrow\" inline />\n </button>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { ExpandableTextButton } from './ExpandableTextButton';\nimport { BaseExpand } from './BaseExpand';\nimport { Heading5, Paragraph, SubParagraph } from '@entur/typography';\nimport './ExpandableText.scss';\n\nexport type ExpandableTextProps = {\n /** Teksten som skal \"vises\" */\n title: string;\n /** Innholdet som skal vises under linken */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandableText skal ha som default (med mindre den er kontrollert)\n * @default false\n */\n defaultOpen?: boolean;\n /** Prop for om innholdet er åpent. Brukes hvis du vil kontrollere ExpandableText, sammen med onToggle */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableText */\n onToggle?: () => void;\n /**Styling som sendes til innholdet av ExpandableText */\n contentStyle?: CSSProperties;\n /** Hvilket typografisk element tittelen er\n * @default \"Heading5\"\n */\n titleElement?: 'Heading5' | 'Paragraph' | 'SubParagraph';\n [key: string]: any;\n};\n\nexport const ExpandableText: React.FC<ExpandableTextProps> = ({\n title,\n children,\n defaultOpen = false,\n contentStyle,\n titleElement = 'Heading5',\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable-text');\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n const Element: React.ElementType = React.useMemo(\n () => GetTypographyComponent(titleElement),\n [titleElement],\n );\n\n return (\n <>\n <ExpandableTextButton\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n aria-controls={isOpen ? randomId : undefined}\n as={Element}\n {...rest}\n >\n {title}\n </ExpandableTextButton>\n <BaseExpand\n className=\"eds-expandable-text__content\"\n id={randomId}\n open={isOpen}\n style={contentStyle}\n {...rest}\n >\n {children}\n </BaseExpand>\n </>\n );\n};\n\nfunction GetTypographyComponent(\n element: 'Heading5' | 'Paragraph' | 'SubParagraph',\n) {\n switch (element) {\n case 'Heading5':\n return Heading5;\n case 'Paragraph':\n return Paragraph;\n case 'SubParagraph':\n return SubParagraph;\n default:\n return Heading5;\n }\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('expand', 'typography', 'icons');\n\nexport * from './Accordion';\nexport * from './AccordionItem';\nexport * from './ExpandablePanel';\nexport * from './BaseExpand';\nexport * from './ExpandableText';\nexport * from './ExpandableTextButton';\nexport * from './ExpandArrow';\n"],"names":["AccordionContext","React","createContext","Accordion","rest","currentlyOpenState","useState","Provider","value","useAccordion","id","defaultOpen","contextValue","useContext","Error","openId","setOpenId","useEffect","isOpen","toggle","BaseExpand","open","UnmountClosed","isOpened","ExpandArrow","className","DownArrowIcon","classNames","BaseExpandablePanel","title","children","onToggle","contentStyle","type","onClick","undefined","Heading5","margin","as","style","AccordionItem","overrideId","randomId","useRandomId","ExpandablePanel","setOpen","prev","ExpandableTextButton","Component","inline","ExpandableText","titleElement","Element","useMemo","GetTypographyComponent","element","Paragraph","SubParagraph","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"expand.cjs.development.js","sources":["../src/Accordion.tsx","../src/BaseExpand.tsx","../src/ExpandArrow.tsx","../src/BaseExpandablePanel.tsx","../src/AccordionItem.tsx","../src/ExpandablePanel.tsx","../src/ExpandableTextButton.tsx","../src/ExpandableText.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\n\ntype Id = string | null;\ntype AccordionContextType = [Id, React.Dispatch<React.SetStateAction<Id>>];\nconst AccordionContext = React.createContext<AccordionContextType | null>(null);\n\nexport type AccordionProps = {\n /** To eller flere AccordionItem-komponenter */\n children: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({ ...rest }) => {\n const currentlyOpenState = React.useState<Id>(null);\n return <AccordionContext.Provider value={currentlyOpenState} {...rest} />;\n};\n\ntype UseAccordionArgs = {\n id: Id;\n defaultOpen?: boolean;\n};\n\nexport const useAccordion: ({ id, defaultOpen }: UseAccordionArgs) => {\n isOpen: boolean;\n toggle: () => void;\n} = ({ id, defaultOpen }: UseAccordionArgs) => {\n const contextValue = React.useContext(AccordionContext);\n if (!contextValue) {\n throw new Error('You need to wrap your AccordionItem inside an Accordion');\n }\n\n const [openId, setOpenId] = contextValue;\n\n React.useEffect(() => {\n if (defaultOpen) {\n setOpenId(id);\n }\n }, [defaultOpen, id, setOpenId]);\n\n const isOpen = openId === id;\n\n return {\n isOpen,\n toggle: () => setOpenId(isOpen ? null : id),\n };\n};\n","import React from 'react';\n\nimport { UnmountClosed } from 'react-collapse';\n\ntype BaseExpandProps = {\n /** Innholdet som skal være expandable */\n children: React.ReactNode;\n /** Boolean for om innholdet vises eller ikke */\n open: boolean;\n [key: string]: any;\n};\nexport const BaseExpand: React.FC<BaseExpandProps> = ({ open, ...rest }) => {\n return (\n <UnmountClosed isOpened={open}>\n <div {...rest} />\n </UnmountClosed>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport './ExpandArrow.scss';\n\ntype ExpandArrowProps = {\n /** Om innholdet er åpent eller ikke, som bestemmer retningen på pila\n * @default false\n */\n open?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const ExpandArrow: React.FC<ExpandArrowProps> = ({\n open = false,\n className,\n ...rest\n}) => {\n return (\n <DownArrowIcon\n className={classNames(className, 'eds-expandable-arrow', {\n 'eds-expandable-arrow--open': open,\n })}\n {...rest}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport { BaseExpand } from './BaseExpand';\n\nimport './BaseExpandablePanel.scss';\nimport { ExpandArrow } from './ExpandArrow';\n\ntype BaseExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** IDen til expand-panelet */\n id: string;\n /** Prop for om innholdet er åpent */\n open: boolean;\n /** Funksjonen som styrer åpningen av BaseExpandablePanel */\n onToggle: () => void;\n /** Styling som sendes til innholdet av BaseExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const BaseExpandablePanel: React.FC<BaseExpandablePanelProps> = ({\n title,\n children,\n className,\n id,\n open,\n onToggle,\n contentStyle,\n ...rest\n}) => {\n return (\n <div className={classNames('eds-expandable-panel', className)}>\n <button\n type=\"button\"\n className=\"eds-expandable-panel__trigger\"\n onClick={onToggle}\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n {...rest}\n >\n <span className=\"eds-expandable-panel__grid\">\n <Heading5 margin=\"none\" as=\"span\">\n {title}\n </Heading5>\n <span className=\"eds-expandable-panel__icon-container\">\n <ExpandArrow open={open} />\n </span>\n </span>\n </button>\n <BaseExpand\n className=\"eds-expandable-panel__content\"\n id={id}\n open={open}\n style={contentStyle}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\nimport { useAccordion } from './Accordion';\n\nexport type AccordionItemProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand AccordionItem skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Styling som sendes til innholdet av AccordionItem */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n defaultOpen = false,\n id: overrideId,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-accordion-item');\n const id = overrideId || randomId;\n const { isOpen, toggle } = useAccordion({ id, defaultOpen });\n\n return (\n <BaseExpandablePanel\n {...rest}\n contentStyle={contentStyle}\n id={id}\n onToggle={toggle}\n open={isOpen}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\n\nexport type ExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandablePanel skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Funksjonen som styrer åpningen av ExpandablePanel */\n onToggle?: () => void;\n /** Styling som sendes til innholdet av ExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const ExpandablePanel: React.FC<ExpandablePanelProps> = ({\n defaultOpen = false,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable');\n\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n return (\n <BaseExpandablePanel\n id={randomId}\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n contentStyle={contentStyle}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { Heading5 } from '@entur/typography';\nimport { ExpandArrow } from './ExpandArrow';\n\nexport type ExandableTextButtonProps = {\n children: React.ReactNode;\n /** Prop for om innholdet er åpent */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableTextButton */\n onToggle: () => void;\n /** Den typografiske komponenten for tittelen\n * @default Heading5\n */\n as?: React.ElementType;\n [key: string]: any;\n};\n\nexport const ExpandableTextButton: React.FC<ExandableTextButtonProps> = ({\n children,\n open,\n onToggle,\n as: Component = Heading5,\n ...rest\n}) => {\n return (\n <button\n className=\"eds-expandable-text__trigger\"\n aria-expanded={open}\n type=\"button\"\n onClick={onToggle}\n {...rest}\n >\n <Component as=\"span\">{children}</Component>\n <ExpandArrow open={open} className=\"eds-expandable-text__arrow\" inline />\n </button>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { ExpandableTextButton } from './ExpandableTextButton';\nimport { BaseExpand } from './BaseExpand';\nimport { Heading5, Paragraph, SubParagraph } from '@entur/typography';\nimport './ExpandableText.scss';\n\nexport type ExpandableTextProps = {\n /** Teksten som skal \"vises\" */\n title: string;\n /** Innholdet som skal vises under linken */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandableText skal ha som default (med mindre den er kontrollert)\n * @default false\n */\n defaultOpen?: boolean;\n /** Prop for om innholdet er åpent. Brukes hvis du vil kontrollere ExpandableText, sammen med onToggle */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableText */\n onToggle?: () => void;\n /**Styling som sendes til innholdet av ExpandableText */\n contentStyle?: CSSProperties;\n /** Hvilket typografisk element tittelen er\n * @default \"Heading5\"\n */\n titleElement?: 'Heading5' | 'Paragraph' | 'SubParagraph';\n [key: string]: any;\n};\n\nexport const ExpandableText: React.FC<ExpandableTextProps> = ({\n title,\n children,\n defaultOpen = false,\n contentStyle,\n titleElement = 'Heading5',\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable-text');\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n const Element: React.ElementType = React.useMemo(\n () => GetTypographyComponent(titleElement),\n [titleElement],\n );\n\n return (\n <>\n <ExpandableTextButton\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n aria-controls={isOpen ? randomId : undefined}\n as={Element}\n {...rest}\n >\n {title}\n </ExpandableTextButton>\n <BaseExpand\n className=\"eds-expandable-text__content\"\n id={randomId}\n open={isOpen}\n style={contentStyle}\n {...rest}\n >\n {children}\n </BaseExpand>\n </>\n );\n};\n\nfunction GetTypographyComponent(\n element: 'Heading5' | 'Paragraph' | 'SubParagraph',\n) {\n switch (element) {\n case 'Heading5':\n return Heading5;\n case 'Paragraph':\n return Paragraph;\n case 'SubParagraph':\n return SubParagraph;\n default:\n return Heading5;\n }\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('expand', 'typography', 'icons');\n\nexport * from './Accordion';\nexport * from './AccordionItem';\nexport * from './ExpandablePanel';\nexport * from './BaseExpand';\nexport * from './ExpandableText';\nexport * from './ExpandableTextButton';\nexport * from './ExpandArrow';\n"],"names":["AccordionContext","React","createContext","Accordion","rest","currentlyOpenState","useState","createElement","Provider","value","useAccordion","id","defaultOpen","contextValue","useContext","Error","openId","setOpenId","useEffect","isOpen","toggle","BaseExpand","open","_excluded","UnmountClosed","isOpened","ExpandArrow","className","DownArrowIcon","classNames","BaseExpandablePanel","title","children","onToggle","contentStyle","type","onClick","undefined","Heading5","margin","as","style","AccordionItem","overrideId","randomId","useRandomId","ExpandablePanel","setOpen","prev","ExpandableTextButton","Component","inline","ExpandableText","titleElement","Element","useMemo","GetTypographyComponent","Fragment","element","Paragraph","SubParagraph","warnAboutMissingStyles"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),a=require("@entur/typography"),r=require("react-collapse"),l=require("@entur/icons");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(t),u=o(n);function c(){return c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},c.apply(this,arguments)}function i(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}var s=d.default.createContext(null),p=function(e){var t=e.id,n=e.defaultOpen,a=d.default.useContext(s);if(!a)throw new Error("You need to wrap your AccordionItem inside an Accordion");var r=a[0],l=a[1];d.default.useEffect((function(){n&&l(t)}),[n,t,l]);var o=r===t;return{isOpen:o,toggle:function(){return l(o?null:t)}}},f=["open"],m=function(e){var t=e.open,n=i(e,f);return d.default.createElement(r.UnmountClosed,{isOpened:t},d.default.createElement("div",c({},n)))},g=["open","className"],x=function(e){var t=e.open,n=void 0!==t&&t,a=e.className,r=i(e,g);return d.default.createElement(l.DownArrowIcon,c({className:u.default(a,"eds-expandable-arrow",{"eds-expandable-arrow--open":n})},r))},v=["title","children","className","id","open","onToggle","contentStyle"],E=function(e){var t=e.title,n=e.children,r=e.className,l=e.id,o=e.open,s=e.onToggle,p=e.contentStyle,f=i(e,v);return d.default.createElement("div",{className:u.default("eds-expandable-panel",r)},d.default.createElement("button",c({type:"button",className:"eds-expandable-panel__trigger",onClick:s,"aria-expanded":o,"aria-controls":o?l:void 0},f),d.default.createElement("span",{className:"eds-expandable-panel__grid"},d.default.createElement(a.Heading5,{margin:"none",as:"span"},t),d.default.createElement("span",{className:"eds-expandable-panel__icon-container"},d.default.createElement(x,{open:o})))),d.default.createElement(m,{className:"eds-expandable-panel__content",id:l,open:o,style:p},n))},b=["defaultOpen","id","contentStyle"],y=["defaultOpen","contentStyle"],h=["children","open","onToggle","as"],O=function(e){var t=e.children,n=e.open,r=e.onToggle,l=e.as,o=void 0===l?a.Heading5:l,u=i(e,h);return d.default.createElement("button",c({className:"eds-expandable-text__trigger","aria-expanded":n,type:"button",onClick:r},u),d.default.createElement(o,{as:"span"},t),d.default.createElement(x,{open:n,className:"eds-expandable-text__arrow",inline:!0}))},S=["title","children","defaultOpen","contentStyle","titleElement"];e.warnAboutMissingStyles("expand","typography","icons"),exports.Accordion=function(e){var t=c({},e),n=d.default.useState(null);return d.default.createElement(s.Provider,c({value:n},t))},exports.AccordionItem=function(t){var n=t.defaultOpen,a=void 0!==n&&n,r=t.id,l=t.contentStyle,o=i(t,b),u=e.useRandomId("eds-accordion-item"),s=r||u,f=p({id:s,defaultOpen:a});return d.default.createElement(E,c({},o,{contentStyle:l,id:s,onToggle:f.toggle,open:f.isOpen}))},exports.BaseExpand=m,exports.ExpandArrow=x,exports.ExpandablePanel=function(t){var n=t.defaultOpen,a=void 0!==n&&n,r=t.contentStyle,l=i(t,y),o=e.useRandomId("eds-expandable"),u=d.default.useState(a),s=u[1];return d.default.createElement(E,c({id:o,open:u[0],onToggle:function(){return s((function(e){return!e}))},contentStyle:r},l))},exports.ExpandableText=function(t){var n=t.title,r=t.children,l=t.defaultOpen,o=void 0!==l&&l,u=t.contentStyle,s=t.titleElement,p=void 0===s?"Heading5":s,f=i(t,S),g=e.useRandomId("eds-expandable-text"),x=d.default.useState(o),v=x[0],E=x[1],b=d.default.useMemo((function(){return function(e){switch(e){case"Heading5":default:return a.Heading5;case"Paragraph":return a.Paragraph;case"SubParagraph":return a.SubParagraph}}(p)}),[p]);return d.default.createElement(d.default.Fragment,null,d.default.createElement(O,c({open:v,onToggle:function(){return E((function(e){return!e}))},"aria-controls":v?g:void 0,as:b},f),n),d.default.createElement(m,c({className:"eds-expandable-text__content",id:g,open:v,style:u},f),r))},exports.ExpandableTextButton=O,exports.useAccordion=p;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),a=require("@entur/typography"),r=require("react-collapse"),l=require("@entur/icons");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=o(t),u=o(n);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},c.apply(this,arguments)}function i(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}var s=d.default.createContext(null),p=function(e){var t=e.id,n=e.defaultOpen,a=d.default.useContext(s);if(!a)throw new Error("You need to wrap your AccordionItem inside an Accordion");var r=a[0],l=a[1];d.default.useEffect((function(){n&&l(t)}),[n,t,l]);var o=r===t;return{isOpen:o,toggle:function(){return l(o?null:t)}}},f=["open"],m=function(e){var t=e.open,n=i(e,f);return d.default.createElement(r.UnmountClosed,{isOpened:t},d.default.createElement("div",c({},n)))},g=["open","className"],x=function(e){var t=e.open,n=void 0!==t&&t,a=e.className,r=i(e,g);return d.default.createElement(l.DownArrowIcon,c({className:u.default(a,"eds-expandable-arrow",{"eds-expandable-arrow--open":n})},r))},v=["title","children","className","id","open","onToggle","contentStyle"],b=function(e){var t=e.title,n=e.children,r=e.className,l=e.id,o=e.open,s=e.onToggle,p=e.contentStyle,f=i(e,v);return d.default.createElement("div",{className:u.default("eds-expandable-panel",r)},d.default.createElement("button",c({type:"button",className:"eds-expandable-panel__trigger",onClick:s,"aria-expanded":o,"aria-controls":o?l:void 0},f),d.default.createElement("span",{className:"eds-expandable-panel__grid"},d.default.createElement(a.Heading5,{margin:"none",as:"span"},t),d.default.createElement("span",{className:"eds-expandable-panel__icon-container"},d.default.createElement(x,{open:o})))),d.default.createElement(m,{className:"eds-expandable-panel__content",id:l,open:o,style:p},n))},E=["defaultOpen","id","contentStyle"],y=["defaultOpen","contentStyle"],h=["children","open","onToggle","as"],O=function(e){var t=e.children,n=e.open,r=e.onToggle,l=e.as,o=void 0===l?a.Heading5:l,u=i(e,h);return d.default.createElement("button",c({className:"eds-expandable-text__trigger","aria-expanded":n,type:"button",onClick:r},u),d.default.createElement(o,{as:"span"},t),d.default.createElement(x,{open:n,className:"eds-expandable-text__arrow",inline:!0}))},S=["title","children","defaultOpen","contentStyle","titleElement"];e.warnAboutMissingStyles("expand","typography","icons"),exports.Accordion=function(e){var t=c({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e)),n=d.default.useState(null);return d.default.createElement(s.Provider,c({value:n},t))},exports.AccordionItem=function(t){var n=t.defaultOpen,a=void 0!==n&&n,r=t.id,l=t.contentStyle,o=i(t,E),u=e.useRandomId("eds-accordion-item"),s=r||u,f=p({id:s,defaultOpen:a});return d.default.createElement(b,c({},o,{contentStyle:l,id:s,onToggle:f.toggle,open:f.isOpen}))},exports.BaseExpand=m,exports.ExpandArrow=x,exports.ExpandablePanel=function(t){var n=t.defaultOpen,a=void 0!==n&&n,r=t.contentStyle,l=i(t,y),o=e.useRandomId("eds-expandable"),u=d.default.useState(a),s=u[1];return d.default.createElement(b,c({id:o,open:u[0],onToggle:function(){return s((function(e){return!e}))},contentStyle:r},l))},exports.ExpandableText=function(t){var n=t.title,r=t.children,l=t.defaultOpen,o=void 0!==l&&l,u=t.contentStyle,s=t.titleElement,p=void 0===s?"Heading5":s,f=i(t,S),g=e.useRandomId("eds-expandable-text"),x=d.default.useState(o),v=x[0],b=x[1],E=d.default.useMemo((function(){return function(e){switch(e){case"Heading5":default:return a.Heading5;case"Paragraph":return a.Paragraph;case"SubParagraph":return a.SubParagraph}}(p)}),[p]);return d.default.createElement(d.default.Fragment,null,d.default.createElement(O,c({open:v,onToggle:function(){return b((function(e){return!e}))},"aria-controls":v?g:void 0,as:E},f),n),d.default.createElement(m,c({className:"eds-expandable-text__content",id:g,open:v,style:u},f),r))},exports.ExpandableTextButton=O,exports.useAccordion=p;
2
2
  //# sourceMappingURL=expand.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expand.cjs.production.min.js","sources":["../src/Accordion.tsx","../src/BaseExpand.tsx","../src/ExpandArrow.tsx","../src/BaseExpandablePanel.tsx","../src/ExpandableTextButton.tsx","../src/index.tsx","../src/AccordionItem.tsx","../src/ExpandablePanel.tsx","../src/ExpandableText.tsx"],"sourcesContent":["import React from 'react';\n\ntype Id = string | null;\ntype AccordionContextType = [Id, React.Dispatch<React.SetStateAction<Id>>];\nconst AccordionContext = React.createContext<AccordionContextType | null>(null);\n\nexport type AccordionProps = {\n /** To eller flere AccordionItem-komponenter */\n children: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({ ...rest }) => {\n const currentlyOpenState = React.useState<Id>(null);\n return <AccordionContext.Provider value={currentlyOpenState} {...rest} />;\n};\n\ntype UseAccordionArgs = {\n id: Id;\n defaultOpen?: boolean;\n};\n\nexport const useAccordion: ({ id, defaultOpen }: UseAccordionArgs) => {\n isOpen: boolean;\n toggle: () => void;\n} = ({ id, defaultOpen }: UseAccordionArgs) => {\n const contextValue = React.useContext(AccordionContext);\n if (!contextValue) {\n throw new Error('You need to wrap your AccordionItem inside an Accordion');\n }\n\n const [openId, setOpenId] = contextValue;\n\n React.useEffect(() => {\n if (defaultOpen) {\n setOpenId(id);\n }\n }, [defaultOpen, id, setOpenId]);\n\n const isOpen = openId === id;\n\n return {\n isOpen,\n toggle: () => setOpenId(isOpen ? null : id),\n };\n};\n","import React from 'react';\n\nimport { UnmountClosed } from 'react-collapse';\n\ntype BaseExpandProps = {\n /** Innholdet som skal være expandable */\n children: React.ReactNode;\n /** Boolean for om innholdet vises eller ikke */\n open: boolean;\n [key: string]: any;\n};\nexport const BaseExpand: React.FC<BaseExpandProps> = ({ open, ...rest }) => {\n return (\n <UnmountClosed isOpened={open}>\n <div {...rest} />\n </UnmountClosed>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport './ExpandArrow.scss';\n\ntype ExpandArrowProps = {\n /** Om innholdet er åpent eller ikke, som bestemmer retningen på pila\n * @default false\n */\n open?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const ExpandArrow: React.FC<ExpandArrowProps> = ({\n open = false,\n className,\n ...rest\n}) => {\n return (\n <DownArrowIcon\n className={classNames(className, 'eds-expandable-arrow', {\n 'eds-expandable-arrow--open': open,\n })}\n {...rest}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport { BaseExpand } from './BaseExpand';\n\nimport './BaseExpandablePanel.scss';\nimport { ExpandArrow } from './ExpandArrow';\n\ntype BaseExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** IDen til expand-panelet */\n id: string;\n /** Prop for om innholdet er åpent */\n open: boolean;\n /** Funksjonen som styrer åpningen av BaseExpandablePanel */\n onToggle: () => void;\n /** Styling som sendes til innholdet av BaseExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const BaseExpandablePanel: React.FC<BaseExpandablePanelProps> = ({\n title,\n children,\n className,\n id,\n open,\n onToggle,\n contentStyle,\n ...rest\n}) => {\n return (\n <div className={classNames('eds-expandable-panel', className)}>\n <button\n type=\"button\"\n className=\"eds-expandable-panel__trigger\"\n onClick={onToggle}\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n {...rest}\n >\n <span className=\"eds-expandable-panel__grid\">\n <Heading5 margin=\"none\" as=\"span\">\n {title}\n </Heading5>\n <span className=\"eds-expandable-panel__icon-container\">\n <ExpandArrow open={open} />\n </span>\n </span>\n </button>\n <BaseExpand\n className=\"eds-expandable-panel__content\"\n id={id}\n open={open}\n style={contentStyle}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import React from 'react';\nimport { Heading5 } from '@entur/typography';\nimport { ExpandArrow } from './ExpandArrow';\n\nexport type ExandableTextButtonProps = {\n children: React.ReactNode;\n /** Prop for om innholdet er åpent */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableTextButton */\n onToggle: () => void;\n /** Den typografiske komponenten for tittelen\n * @default Heading5\n */\n as?: React.ElementType;\n [key: string]: any;\n};\n\nexport const ExpandableTextButton: React.FC<ExandableTextButtonProps> = ({\n children,\n open,\n onToggle,\n as: Component = Heading5,\n ...rest\n}) => {\n return (\n <button\n className=\"eds-expandable-text__trigger\"\n aria-expanded={open}\n type=\"button\"\n onClick={onToggle}\n {...rest}\n >\n <Component as=\"span\">{children}</Component>\n <ExpandArrow open={open} className=\"eds-expandable-text__arrow\" inline />\n </button>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('expand', 'typography', 'icons');\n\nexport * from './Accordion';\nexport * from './AccordionItem';\nexport * from './ExpandablePanel';\nexport * from './BaseExpand';\nexport * from './ExpandableText';\nexport * from './ExpandableTextButton';\nexport * from './ExpandArrow';\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\nimport { useAccordion } from './Accordion';\n\nexport type AccordionItemProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand AccordionItem skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Styling som sendes til innholdet av AccordionItem */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n defaultOpen = false,\n id: overrideId,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-accordion-item');\n const id = overrideId || randomId;\n const { isOpen, toggle } = useAccordion({ id, defaultOpen });\n\n return (\n <BaseExpandablePanel\n {...rest}\n contentStyle={contentStyle}\n id={id}\n onToggle={toggle}\n open={isOpen}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\n\nexport type ExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandablePanel skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Funksjonen som styrer åpningen av ExpandablePanel */\n onToggle?: () => void;\n /** Styling som sendes til innholdet av ExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const ExpandablePanel: React.FC<ExpandablePanelProps> = ({\n defaultOpen = false,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable');\n\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n return (\n <BaseExpandablePanel\n id={randomId}\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n contentStyle={contentStyle}\n {...rest}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { ExpandableTextButton } from './ExpandableTextButton';\nimport { BaseExpand } from './BaseExpand';\nimport { Heading5, Paragraph, SubParagraph } from '@entur/typography';\nimport './ExpandableText.scss';\n\nexport type ExpandableTextProps = {\n /** Teksten som skal \"vises\" */\n title: string;\n /** Innholdet som skal vises under linken */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandableText skal ha som default (med mindre den er kontrollert)\n * @default false\n */\n defaultOpen?: boolean;\n /** Prop for om innholdet er åpent. Brukes hvis du vil kontrollere ExpandableText, sammen med onToggle */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableText */\n onToggle?: () => void;\n /**Styling som sendes til innholdet av ExpandableText */\n contentStyle?: CSSProperties;\n /** Hvilket typografisk element tittelen er\n * @default \"Heading5\"\n */\n titleElement?: 'Heading5' | 'Paragraph' | 'SubParagraph';\n [key: string]: any;\n};\n\nexport const ExpandableText: React.FC<ExpandableTextProps> = ({\n title,\n children,\n defaultOpen = false,\n contentStyle,\n titleElement = 'Heading5',\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable-text');\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n const Element: React.ElementType = React.useMemo(\n () => GetTypographyComponent(titleElement),\n [titleElement],\n );\n\n return (\n <>\n <ExpandableTextButton\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n aria-controls={isOpen ? randomId : undefined}\n as={Element}\n {...rest}\n >\n {title}\n </ExpandableTextButton>\n <BaseExpand\n className=\"eds-expandable-text__content\"\n id={randomId}\n open={isOpen}\n style={contentStyle}\n {...rest}\n >\n {children}\n </BaseExpand>\n </>\n );\n};\n\nfunction GetTypographyComponent(\n element: 'Heading5' | 'Paragraph' | 'SubParagraph',\n) {\n switch (element) {\n case 'Heading5':\n return Heading5;\n case 'Paragraph':\n return Paragraph;\n case 'SubParagraph':\n return SubParagraph;\n default:\n return Heading5;\n }\n}\n"],"names":["AccordionContext","React","createContext","useAccordion","id","defaultOpen","contextValue","useContext","Error","openId","setOpenId","useEffect","isOpen","toggle","BaseExpand","open","rest","UnmountClosed","isOpened","ExpandArrow","className","DownArrowIcon","classNames","BaseExpandablePanel","title","children","onToggle","contentStyle","type","onClick","undefined","Heading5","margin","as","style","ExpandableTextButton","Component","inline","warnAboutMissingStyles","currentlyOpenState","useState","Provider","value","overrideId","randomId","useRandomId","setOpen","prev","titleElement","Element","useMemo","element","Paragraph","SubParagraph","GetTypographyComponent"],"mappings":"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"}
1
+ {"version":3,"file":"expand.cjs.production.min.js","sources":["../src/Accordion.tsx","../src/BaseExpand.tsx","../src/ExpandArrow.tsx","../src/BaseExpandablePanel.tsx","../src/ExpandableTextButton.tsx","../src/index.tsx","../src/AccordionItem.tsx","../src/ExpandablePanel.tsx","../src/ExpandableText.tsx"],"sourcesContent":["import React from 'react';\n\ntype Id = string | null;\ntype AccordionContextType = [Id, React.Dispatch<React.SetStateAction<Id>>];\nconst AccordionContext = React.createContext<AccordionContextType | null>(null);\n\nexport type AccordionProps = {\n /** To eller flere AccordionItem-komponenter */\n children: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({ ...rest }) => {\n const currentlyOpenState = React.useState<Id>(null);\n return <AccordionContext.Provider value={currentlyOpenState} {...rest} />;\n};\n\ntype UseAccordionArgs = {\n id: Id;\n defaultOpen?: boolean;\n};\n\nexport const useAccordion: ({ id, defaultOpen }: UseAccordionArgs) => {\n isOpen: boolean;\n toggle: () => void;\n} = ({ id, defaultOpen }: UseAccordionArgs) => {\n const contextValue = React.useContext(AccordionContext);\n if (!contextValue) {\n throw new Error('You need to wrap your AccordionItem inside an Accordion');\n }\n\n const [openId, setOpenId] = contextValue;\n\n React.useEffect(() => {\n if (defaultOpen) {\n setOpenId(id);\n }\n }, [defaultOpen, id, setOpenId]);\n\n const isOpen = openId === id;\n\n return {\n isOpen,\n toggle: () => setOpenId(isOpen ? null : id),\n };\n};\n","import React from 'react';\n\nimport { UnmountClosed } from 'react-collapse';\n\ntype BaseExpandProps = {\n /** Innholdet som skal være expandable */\n children: React.ReactNode;\n /** Boolean for om innholdet vises eller ikke */\n open: boolean;\n [key: string]: any;\n};\nexport const BaseExpand: React.FC<BaseExpandProps> = ({ open, ...rest }) => {\n return (\n <UnmountClosed isOpened={open}>\n <div {...rest} />\n </UnmountClosed>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport './ExpandArrow.scss';\n\ntype ExpandArrowProps = {\n /** Om innholdet er åpent eller ikke, som bestemmer retningen på pila\n * @default false\n */\n open?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const ExpandArrow: React.FC<ExpandArrowProps> = ({\n open = false,\n className,\n ...rest\n}) => {\n return (\n <DownArrowIcon\n className={classNames(className, 'eds-expandable-arrow', {\n 'eds-expandable-arrow--open': open,\n })}\n {...rest}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport { BaseExpand } from './BaseExpand';\n\nimport './BaseExpandablePanel.scss';\nimport { ExpandArrow } from './ExpandArrow';\n\ntype BaseExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** IDen til expand-panelet */\n id: string;\n /** Prop for om innholdet er åpent */\n open: boolean;\n /** Funksjonen som styrer åpningen av BaseExpandablePanel */\n onToggle: () => void;\n /** Styling som sendes til innholdet av BaseExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const BaseExpandablePanel: React.FC<BaseExpandablePanelProps> = ({\n title,\n children,\n className,\n id,\n open,\n onToggle,\n contentStyle,\n ...rest\n}) => {\n return (\n <div className={classNames('eds-expandable-panel', className)}>\n <button\n type=\"button\"\n className=\"eds-expandable-panel__trigger\"\n onClick={onToggle}\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n {...rest}\n >\n <span className=\"eds-expandable-panel__grid\">\n <Heading5 margin=\"none\" as=\"span\">\n {title}\n </Heading5>\n <span className=\"eds-expandable-panel__icon-container\">\n <ExpandArrow open={open} />\n </span>\n </span>\n </button>\n <BaseExpand\n className=\"eds-expandable-panel__content\"\n id={id}\n open={open}\n style={contentStyle}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import React from 'react';\nimport { Heading5 } from '@entur/typography';\nimport { ExpandArrow } from './ExpandArrow';\n\nexport type ExandableTextButtonProps = {\n children: React.ReactNode;\n /** Prop for om innholdet er åpent */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableTextButton */\n onToggle: () => void;\n /** Den typografiske komponenten for tittelen\n * @default Heading5\n */\n as?: React.ElementType;\n [key: string]: any;\n};\n\nexport const ExpandableTextButton: React.FC<ExandableTextButtonProps> = ({\n children,\n open,\n onToggle,\n as: Component = Heading5,\n ...rest\n}) => {\n return (\n <button\n className=\"eds-expandable-text__trigger\"\n aria-expanded={open}\n type=\"button\"\n onClick={onToggle}\n {...rest}\n >\n <Component as=\"span\">{children}</Component>\n <ExpandArrow open={open} className=\"eds-expandable-text__arrow\" inline />\n </button>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('expand', 'typography', 'icons');\n\nexport * from './Accordion';\nexport * from './AccordionItem';\nexport * from './ExpandablePanel';\nexport * from './BaseExpand';\nexport * from './ExpandableText';\nexport * from './ExpandableTextButton';\nexport * from './ExpandArrow';\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\nimport { useAccordion } from './Accordion';\n\nexport type AccordionItemProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand AccordionItem skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Styling som sendes til innholdet av AccordionItem */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n defaultOpen = false,\n id: overrideId,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-accordion-item');\n const id = overrideId || randomId;\n const { isOpen, toggle } = useAccordion({ id, defaultOpen });\n\n return (\n <BaseExpandablePanel\n {...rest}\n contentStyle={contentStyle}\n id={id}\n onToggle={toggle}\n open={isOpen}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { BaseExpandablePanel } from './BaseExpandablePanel';\n\nexport type ExpandablePanelProps = {\n /** Teksten som skal stå i panelet */\n title: React.ReactNode;\n /** Innholdet som skal vises under panelet */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandablePanel skal ha som default\n * @default false\n */\n defaultOpen?: boolean;\n /** Funksjonen som styrer åpningen av ExpandablePanel */\n onToggle?: () => void;\n /** Styling som sendes til innholdet av ExpandablePanel */\n contentStyle?: CSSProperties;\n [key: string]: any;\n};\nexport const ExpandablePanel: React.FC<ExpandablePanelProps> = ({\n defaultOpen = false,\n contentStyle,\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable');\n\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n return (\n <BaseExpandablePanel\n id={randomId}\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n contentStyle={contentStyle}\n {...rest}\n />\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { useRandomId } from '@entur/utils';\nimport { ExpandableTextButton } from './ExpandableTextButton';\nimport { BaseExpand } from './BaseExpand';\nimport { Heading5, Paragraph, SubParagraph } from '@entur/typography';\nimport './ExpandableText.scss';\n\nexport type ExpandableTextProps = {\n /** Teksten som skal \"vises\" */\n title: string;\n /** Innholdet som skal vises under linken */\n children: React.ReactNode;\n /** Hvilken tilstand ExpandableText skal ha som default (med mindre den er kontrollert)\n * @default false\n */\n defaultOpen?: boolean;\n /** Prop for om innholdet er åpent. Brukes hvis du vil kontrollere ExpandableText, sammen med onToggle */\n open?: boolean;\n /** Funksjonen som styrer åpningen av ExpandableText */\n onToggle?: () => void;\n /**Styling som sendes til innholdet av ExpandableText */\n contentStyle?: CSSProperties;\n /** Hvilket typografisk element tittelen er\n * @default \"Heading5\"\n */\n titleElement?: 'Heading5' | 'Paragraph' | 'SubParagraph';\n [key: string]: any;\n};\n\nexport const ExpandableText: React.FC<ExpandableTextProps> = ({\n title,\n children,\n defaultOpen = false,\n contentStyle,\n titleElement = 'Heading5',\n ...rest\n}) => {\n const randomId = useRandomId('eds-expandable-text');\n const [isOpen, setOpen] = React.useState(defaultOpen);\n\n const Element: React.ElementType = React.useMemo(\n () => GetTypographyComponent(titleElement),\n [titleElement],\n );\n\n return (\n <>\n <ExpandableTextButton\n open={isOpen}\n onToggle={() => setOpen(prev => !prev)}\n aria-controls={isOpen ? randomId : undefined}\n as={Element}\n {...rest}\n >\n {title}\n </ExpandableTextButton>\n <BaseExpand\n className=\"eds-expandable-text__content\"\n id={randomId}\n open={isOpen}\n style={contentStyle}\n {...rest}\n >\n {children}\n </BaseExpand>\n </>\n );\n};\n\nfunction GetTypographyComponent(\n element: 'Heading5' | 'Paragraph' | 'SubParagraph',\n) {\n switch (element) {\n case 'Heading5':\n return Heading5;\n case 'Paragraph':\n return Paragraph;\n case 'SubParagraph':\n return SubParagraph;\n default:\n return Heading5;\n }\n}\n"],"names":["AccordionContext","React","createContext","useAccordion","_ref2","id","defaultOpen","contextValue","useContext","Error","openId","setOpenId","useEffect","isOpen","toggle","BaseExpand","_ref","open","rest","_objectWithoutPropertiesLoose","_excluded","createElement","UnmountClosed","isOpened","_extends","ExpandArrow","_ref$open","className","DownArrowIcon","classNames","BaseExpandablePanel","title","children","onToggle","contentStyle","type","onClick","undefined","Heading5","margin","as","style","ExpandableTextButton","_ref$as","Component","inline","warnAboutMissingStyles","_objectDestructuringEmpty","currentlyOpenState","useState","Provider","value","_ref$defaultOpen","overrideId","randomId","useRandomId","_useAccordion","_React$useState","setOpen","prev","_ref$titleElement","titleElement","Element","useMemo","element","Paragraph","SubParagraph","GetTypographyComponent","Fragment"],"mappings":"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"}