@economic/taco 0.0.32-alpha.0 → 0.0.33-alpha.0

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.
@@ -3,7 +3,7 @@ import { Button } from '../../primitives/Button.js';
3
3
  import { Tooltip } from '../Tooltip/Tooltip.js';
4
4
 
5
5
  const getButtonClasses = () => {
6
- return 'min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] h-max inline-flex items-center justify-center border';
6
+ return 'min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] gap-1 h-max inline-flex items-center justify-center border';
7
7
  };
8
8
  const getAppearanceClasses = (value, icon = false) => {
9
9
  switch (value) {
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../src/components/Button/util.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Appearance } from '../../types';\r\nimport * as ButtonPrimitive from '../../primitives/Button';\r\nimport { Tooltip } from '../Tooltip/Tooltip';\r\n\r\nexport const getButtonClasses = () => {\r\n return 'min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] h-max inline-flex items-center justify-center border';\r\n};\r\n\r\nexport const getAppearanceClasses = (value: Appearance | undefined, icon = false): string => {\r\n switch (value) {\r\n case 'primary':\r\n return `yt-blue-solid border-blue focus:bg-blue focus:text-white focus:yt-focus active:bg-blue-dark active:text-white hover:bg-blue-light hover:border-blue-light hover:text-white hover:focus:bg-blue-light hover:focus:border-blue-light hover:focus:text-white disabled:hover:yt-blue-solid`;\r\n\r\n case 'danger':\r\n return `yt-red-solid border-red focus:bg-red focus:text-white focus:yt-focus-red active:bg-red-dark active:text-white hover:bg-red-light hover:text-white hover:focus:bg-red-light hover:focus:text-white disabled:hover:yt-red-solid`;\r\n\r\n case 'ghost':\r\n return `yt-blue-inverted focus:bg-transparent focus:text-blue focus:yt-focus active:bg-blue-lightest active:border-blue active:text-blue-dark hover:bg-blue-lightest hover:border-blue-light hover:text-blue-light hover:focus:bg-blue-lightest hover:focus:border-blue-light hover:focus:text-blue-light disabled:hover:yt-blue-inverted`;\r\n\r\n case 'discrete': {\r\n if (icon) {\r\n return `bg-transparent text-black border-transparent focus:text-black focus:yt-focus active:text-black hover:text-grey-darkest hover:focus:text-grey-darkest disabled:hover:yt-transparent`;\r\n }\r\n\r\n return `yt-transparent border-transparent focus:text-blue focus:yt-focus active:text-blue-dark hover:text-blue-light hover:focus:text-blue-light disabled:hover:yt-transparent`;\r\n }\r\n\r\n default:\r\n return `yt-grey-solid border-grey focus:bg-grey focus:yt-focus active:bg-grey-dark active:text-black hover:bg-grey-light hover:text-grey-darkest hover:focus:bg-grey-light hover:focus:text-grey-darkest disabled:hover:yt-grey-solid`;\r\n }\r\n};\r\n\r\nexport const createButton = (\r\n props: any,\r\n className: string,\r\n ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>\r\n): JSX.Element => {\r\n const { dialog, hanger, menu, popover, tooltip, ...otherProps } = props;\r\n\r\n let button = <ButtonPrimitive.Button {...otherProps} className={className} ref={ref} />;\r\n\r\n if (typeof dialog === 'function') {\r\n button = dialog({ trigger: button });\r\n } else if (typeof menu === 'function') {\r\n button = menu({ trigger: button, appearance: otherProps.appearance });\r\n } else if (typeof popover === 'function') {\r\n button = popover({ trigger: button });\r\n }\r\n\r\n if (typeof hanger === 'function') {\r\n button = hanger({ anchor: button });\r\n }\r\n\r\n if (tooltip) {\r\n button = <Tooltip title={tooltip}>{button}</Tooltip>;\r\n }\r\n\r\n return button;\r\n};\r\n"],"names":["getButtonClasses","getAppearanceClasses","value","icon","createButton","props","className","ref","dialog","hanger","menu","popover","tooltip","otherProps","button","React","ButtonPrimitive","trigger","appearance","anchor","Tooltip","title"],"mappings":";;;;MAKaA,gBAAgB,GAAG;AAC5B,SAAO,wGAAP;AACH;MAEYC,oBAAoB,GAAG,CAACC,KAAD,EAAgCC,IAAI,GAAG,KAAvC;AAChC,UAAQD,KAAR;AACI,SAAK,SAAL;AACI,sSAAA;;AAEJ,SAAK,QAAL;AACI,6OAAA;;AAEJ,SAAK,OAAL;AACI,iVAAA;;AAEJ,SAAK,UAAL;AAAiB;AACb,YAAIC,IAAJ,EAAU;AACN,qMAAA;AACH;;AAED,uLAAA;AACH;;AAED;AACI,4OAAA;AAnBR;AAqBH;MAEYC,YAAY,GAAG,CACxBC,KADwB,EAExBC,SAFwB,EAGxBC,GAHwB;AAKxB,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA,MAAV;AAAkBC,IAAAA,IAAlB;AAAwBC,IAAAA,OAAxB;AAAiCC,IAAAA,OAAjC;AAA0C,OAAGC;AAA7C,MAA4DR,KAAlE;AAEA,MAAIS,MAAM,GAAGC,4BAAA,CAACC,MAAD,oBAA4BH;AAAYP,IAAAA,SAAS,EAAEA;AAAWC,IAAAA,GAAG,EAAEA;IAAnE,CAAb;;AAEA,MAAI,OAAOC,MAAP,KAAkB,UAAtB,EAAkC;AAC9BM,IAAAA,MAAM,GAAGN,MAAM,CAAC;AAAES,MAAAA,OAAO,EAAEH;AAAX,KAAD,CAAf;AACH,GAFD,MAEO,IAAI,OAAOJ,IAAP,KAAgB,UAApB,EAAgC;AACnCI,IAAAA,MAAM,GAAGJ,IAAI,CAAC;AAAEO,MAAAA,OAAO,EAAEH,MAAX;AAAmBI,MAAAA,UAAU,EAAEL,UAAU,CAACK;AAA1C,KAAD,CAAb;AACH,GAFM,MAEA,IAAI,OAAOP,OAAP,KAAmB,UAAvB,EAAmC;AACtCG,IAAAA,MAAM,GAAGH,OAAO,CAAC;AAAEM,MAAAA,OAAO,EAAEH;AAAX,KAAD,CAAhB;AACH;;AAED,MAAI,OAAOL,MAAP,KAAkB,UAAtB,EAAkC;AAC9BK,IAAAA,MAAM,GAAGL,MAAM,CAAC;AAAEU,MAAAA,MAAM,EAAEL;AAAV,KAAD,CAAf;AACH;;AAED,MAAIF,OAAJ,EAAa;AACTE,IAAAA,MAAM,GAAGC,4BAAA,CAACK,OAAD;AAASC,MAAAA,KAAK,EAAET;KAAhB,EAA0BE,MAA1B,CAAT;AACH;;AAED,SAAOA,MAAP;AACH;;;;"}
1
+ {"version":3,"file":"util.js","sources":["../../../../src/components/Button/util.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Appearance } from '../../types';\r\nimport * as ButtonPrimitive from '../../primitives/Button';\r\nimport { Tooltip } from '../Tooltip/Tooltip';\r\n\r\nexport const getButtonClasses = () => {\r\n return 'min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] gap-1 h-max inline-flex items-center justify-center border';\r\n};\r\n\r\nexport const getAppearanceClasses = (value: Appearance | undefined, icon = false): string => {\r\n switch (value) {\r\n case 'primary':\r\n return `yt-blue-solid border-blue focus:bg-blue focus:text-white focus:yt-focus active:bg-blue-dark active:text-white hover:bg-blue-light hover:border-blue-light hover:text-white hover:focus:bg-blue-light hover:focus:border-blue-light hover:focus:text-white disabled:hover:yt-blue-solid`;\r\n\r\n case 'danger':\r\n return `yt-red-solid border-red focus:bg-red focus:text-white focus:yt-focus-red active:bg-red-dark active:text-white hover:bg-red-light hover:text-white hover:focus:bg-red-light hover:focus:text-white disabled:hover:yt-red-solid`;\r\n\r\n case 'ghost':\r\n return `yt-blue-inverted focus:bg-transparent focus:text-blue focus:yt-focus active:bg-blue-lightest active:border-blue active:text-blue-dark hover:bg-blue-lightest hover:border-blue-light hover:text-blue-light hover:focus:bg-blue-lightest hover:focus:border-blue-light hover:focus:text-blue-light disabled:hover:yt-blue-inverted`;\r\n\r\n case 'discrete': {\r\n if (icon) {\r\n return `bg-transparent text-black border-transparent focus:text-black focus:yt-focus active:text-black hover:text-grey-darkest hover:focus:text-grey-darkest disabled:hover:yt-transparent`;\r\n }\r\n\r\n return `yt-transparent border-transparent focus:text-blue focus:yt-focus active:text-blue-dark hover:text-blue-light hover:focus:text-blue-light disabled:hover:yt-transparent`;\r\n }\r\n\r\n default:\r\n return `yt-grey-solid border-grey focus:bg-grey focus:yt-focus active:bg-grey-dark active:text-black hover:bg-grey-light hover:text-grey-darkest hover:focus:bg-grey-light hover:focus:text-grey-darkest disabled:hover:yt-grey-solid`;\r\n }\r\n};\r\n\r\nexport const createButton = (\r\n props: any,\r\n className: string,\r\n ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>\r\n): JSX.Element => {\r\n const { dialog, hanger, menu, popover, tooltip, ...otherProps } = props;\r\n\r\n let button = <ButtonPrimitive.Button {...otherProps} className={className} ref={ref} />;\r\n\r\n if (typeof dialog === 'function') {\r\n button = dialog({ trigger: button });\r\n } else if (typeof menu === 'function') {\r\n button = menu({ trigger: button, appearance: otherProps.appearance });\r\n } else if (typeof popover === 'function') {\r\n button = popover({ trigger: button });\r\n }\r\n\r\n if (typeof hanger === 'function') {\r\n button = hanger({ anchor: button });\r\n }\r\n\r\n if (tooltip) {\r\n button = <Tooltip title={tooltip}>{button}</Tooltip>;\r\n }\r\n\r\n return button;\r\n};\r\n"],"names":["getButtonClasses","getAppearanceClasses","value","icon","createButton","props","className","ref","dialog","hanger","menu","popover","tooltip","otherProps","button","React","ButtonPrimitive","trigger","appearance","anchor","Tooltip","title"],"mappings":";;;;MAKaA,gBAAgB,GAAG;AAC5B,SAAO,8GAAP;AACH;MAEYC,oBAAoB,GAAG,CAACC,KAAD,EAAgCC,IAAI,GAAG,KAAvC;AAChC,UAAQD,KAAR;AACI,SAAK,SAAL;AACI,sSAAA;;AAEJ,SAAK,QAAL;AACI,6OAAA;;AAEJ,SAAK,OAAL;AACI,iVAAA;;AAEJ,SAAK,UAAL;AAAiB;AACb,YAAIC,IAAJ,EAAU;AACN,qMAAA;AACH;;AAED,uLAAA;AACH;;AAED;AACI,4OAAA;AAnBR;AAqBH;MAEYC,YAAY,GAAG,CACxBC,KADwB,EAExBC,SAFwB,EAGxBC,GAHwB;AAKxB,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA,MAAV;AAAkBC,IAAAA,IAAlB;AAAwBC,IAAAA,OAAxB;AAAiCC,IAAAA,OAAjC;AAA0C,OAAGC;AAA7C,MAA4DR,KAAlE;AAEA,MAAIS,MAAM,GAAGC,4BAAA,CAACC,MAAD,oBAA4BH;AAAYP,IAAAA,SAAS,EAAEA;AAAWC,IAAAA,GAAG,EAAEA;IAAnE,CAAb;;AAEA,MAAI,OAAOC,MAAP,KAAkB,UAAtB,EAAkC;AAC9BM,IAAAA,MAAM,GAAGN,MAAM,CAAC;AAAES,MAAAA,OAAO,EAAEH;AAAX,KAAD,CAAf;AACH,GAFD,MAEO,IAAI,OAAOJ,IAAP,KAAgB,UAApB,EAAgC;AACnCI,IAAAA,MAAM,GAAGJ,IAAI,CAAC;AAAEO,MAAAA,OAAO,EAAEH,MAAX;AAAmBI,MAAAA,UAAU,EAAEL,UAAU,CAACK;AAA1C,KAAD,CAAb;AACH,GAFM,MAEA,IAAI,OAAOP,OAAP,KAAmB,UAAvB,EAAmC;AACtCG,IAAAA,MAAM,GAAGH,OAAO,CAAC;AAAEM,MAAAA,OAAO,EAAEH;AAAX,KAAD,CAAhB;AACH;;AAED,MAAI,OAAOL,MAAP,KAAkB,UAAtB,EAAkC;AAC9BK,IAAAA,MAAM,GAAGL,MAAM,CAAC;AAAEU,MAAAA,MAAM,EAAEL;AAAV,KAAD,CAAf;AACH;;AAED,MAAIF,OAAJ,EAAa;AACTE,IAAAA,MAAM,GAAGC,4BAAA,CAACK,OAAD;AAASC,MAAAA,KAAK,EAAET;KAAhB,EAA0BE,MAA1B,CAAT;AACH;;AAED,SAAOA,MAAP;AACH;;;;"}
@@ -1,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useState, useMemo, createElement } from 'react';
2
3
  import { MenuContext } from './Context.js';
3
4
  import { Root } from '@radix-ui/react-dropdown-menu';
@@ -10,26 +11,48 @@ import { RadioGroup } from './components/RadioGroup.js';
10
11
  import { Separator } from './components/Separator.js';
11
12
  import { Header } from './components/Header.js';
12
13
 
13
- const Menu = externalProps => {
14
- const {
15
- appearance: externalAppearance,
16
- children,
17
- trigger,
18
- ...props
19
- } = externalProps;
20
- const [open, setOpen] = useState(false);
21
- const [appearance, setAppearance] = useState(externalAppearance !== null && externalAppearance !== void 0 ? externalAppearance : 'default');
22
- const [indented, setIndented] = useState(false);
23
- const [minWidth, setMinWidth] = useState(undefined);
24
- const context = useMemo(() => ({
25
- appearance,
26
- setAppearance: appearance => setAppearance(appearance),
27
- indented,
28
- registerIndentation: () => setIndented(true),
29
- minWidth,
30
- setMinWidth: width => setMinWidth(width),
31
- close: () => setOpen(false)
32
- }), [indented, minWidth, appearance]);
14
+ var _excluded = ["appearance", "children", "trigger"];
15
+ var Menu = function Menu(externalProps) {
16
+ var externalAppearance = externalProps.appearance,
17
+ children = externalProps.children,
18
+ trigger = externalProps.trigger,
19
+ props = _objectWithoutPropertiesLoose(externalProps, _excluded);
20
+
21
+ var _React$useState = useState(false),
22
+ open = _React$useState[0],
23
+ setOpen = _React$useState[1];
24
+
25
+ var _React$useState2 = useState(externalAppearance !== null && externalAppearance !== void 0 ? externalAppearance : 'default'),
26
+ appearance = _React$useState2[0],
27
+ _setAppearance = _React$useState2[1];
28
+
29
+ var _React$useState3 = useState(false),
30
+ indented = _React$useState3[0],
31
+ setIndented = _React$useState3[1];
32
+
33
+ var _React$useState4 = useState(undefined),
34
+ minWidth = _React$useState4[0],
35
+ _setMinWidth = _React$useState4[1];
36
+
37
+ var context = useMemo(function () {
38
+ return {
39
+ appearance: appearance,
40
+ setAppearance: function setAppearance(appearance) {
41
+ return _setAppearance(appearance);
42
+ },
43
+ indented: indented,
44
+ registerIndentation: function registerIndentation() {
45
+ return setIndented(true);
46
+ },
47
+ minWidth: minWidth,
48
+ setMinWidth: function setMinWidth(width) {
49
+ return _setMinWidth(width);
50
+ },
51
+ close: function close() {
52
+ return setOpen(false);
53
+ }
54
+ };
55
+ }, [indented, minWidth, appearance]);
33
56
  return createElement(MenuContext.Provider, {
34
57
  value: context
35
58
  }, createElement(Root, Object.assign({}, props, {
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\r\nimport { MenuContext } from './Context';\r\nimport { Content } from './components/Content';\r\nimport { Item } from './components/Item';\r\nimport { Link } from './components/Link';\r\nimport { Trigger } from './components/Trigger';\r\nimport { Checkbox } from './components/Checkbox';\r\nimport { RadioGroup } from './components/RadioGroup';\r\nimport { Separator } from './components/Separator';\r\nimport { Header } from './components/Header';\r\nimport { Appearance } from '../..';\r\n\r\nexport type MenuProps = {\r\n /** Appearance will change the style of the button */\r\n appearance?: Appearance;\r\n children: React.ReactNode;\r\n id?: string;\r\n /** A trigger to be used for the menu, should not be set if `children` already contains a trigger */\r\n trigger?: JSX.Element;\r\n};\r\n\r\nexport const Menu = (externalProps: MenuProps): JSX.Element => {\r\n const { appearance: externalAppearance, children, trigger, ...props } = externalProps;\r\n const [open, setOpen] = React.useState(false);\r\n const [appearance, setAppearance] = React.useState<Appearance>(externalAppearance ?? 'default');\r\n const [indented, setIndented] = React.useState(false);\r\n const [minWidth, setMinWidth] = React.useState<number | undefined>(undefined);\r\n\r\n const context = React.useMemo(\r\n () => ({\r\n appearance,\r\n setAppearance: (appearance: Appearance) => setAppearance(appearance),\r\n indented,\r\n registerIndentation: () => setIndented(true),\r\n minWidth,\r\n setMinWidth: (width: number) => setMinWidth(width),\r\n close: () => setOpen(false),\r\n }),\r\n [indented, minWidth, appearance]\r\n );\r\n\r\n return (\r\n <MenuContext.Provider value={context}>\r\n <DropdownMenuPrimitive.Root {...props} modal={false} open={open} onOpenChange={setOpen}>\r\n {trigger && <Trigger>{trigger}</Trigger>}\r\n {children}\r\n </DropdownMenuPrimitive.Root>\r\n </MenuContext.Provider>\r\n );\r\n};\r\nMenu.Trigger = Trigger;\r\nMenu.Content = Content;\r\nMenu.Item = Item;\r\nMenu.Link = Link;\r\nMenu.Checkbox = Checkbox;\r\nMenu.Separator = Separator;\r\nMenu.Header = Header;\r\nMenu.RadioGroup = RadioGroup;\r\n"],"names":["Menu","externalProps","appearance","externalAppearance","children","trigger","props","open","setOpen","React","setAppearance","indented","setIndented","minWidth","setMinWidth","undefined","context","registerIndentation","width","close","MenuContext","Provider","value","DropdownMenuPrimitive","modal","onOpenChange","Trigger","Content","Item","Link","Checkbox","Separator","Header","RadioGroup"],"mappings":";;;;;;;;;;;;MAsBaA,IAAI,GAAIC,aAAD;AAChB,QAAM;AAAEC,IAAAA,UAAU,EAAEC,kBAAd;AAAkCC,IAAAA,QAAlC;AAA4CC,IAAAA,OAA5C;AAAqD,OAAGC;AAAxD,MAAkEL,aAAxE;AACA,QAAM,CAACM,IAAD,EAAOC,OAAP,IAAkBC,QAAA,CAAe,KAAf,CAAxB;AACA,QAAM,CAACP,UAAD,EAAaQ,aAAb,IAA8BD,QAAA,CAA2BN,kBAA3B,aAA2BA,kBAA3B,cAA2BA,kBAA3B,GAAiD,SAAjD,CAApC;AACA,QAAM,CAACQ,QAAD,EAAWC,WAAX,IAA0BH,QAAA,CAAe,KAAf,CAAhC;AACA,QAAM,CAACI,QAAD,EAAWC,WAAX,IAA0BL,QAAA,CAAmCM,SAAnC,CAAhC;AAEA,QAAMC,OAAO,GAAGP,OAAA,CACZ,OAAO;AACHP,IAAAA,UADG;AAEHQ,IAAAA,aAAa,EAAGR,UAAD,IAA4BQ,aAAa,CAACR,UAAD,CAFrD;AAGHS,IAAAA,QAHG;AAIHM,IAAAA,mBAAmB,EAAE,MAAML,WAAW,CAAC,IAAD,CAJnC;AAKHC,IAAAA,QALG;AAMHC,IAAAA,WAAW,EAAGI,KAAD,IAAmBJ,WAAW,CAACI,KAAD,CANxC;AAOHC,IAAAA,KAAK,EAAE,MAAMX,OAAO,CAAC,KAAD;AAPjB,GAAP,CADY,EAUZ,CAACG,QAAD,EAAWE,QAAX,EAAqBX,UAArB,CAVY,CAAhB;AAaA,SACIO,aAAA,CAACW,WAAW,CAACC,QAAb;AAAsBC,IAAAA,KAAK,EAAEN;GAA7B,EACIP,aAAA,CAACc,IAAD,oBAAgCjB;AAAOkB,IAAAA,KAAK,EAAE;AAAOjB,IAAAA,IAAI,EAAEA;AAAMkB,IAAAA,YAAY,EAAEjB;IAA/E,EACKH,OAAO,IAAII,aAAA,CAACiB,OAAD,MAAA,EAAUrB,OAAV,CADhB,EAEKD,QAFL,CADJ,CADJ;AAQH;AACDJ,IAAI,CAAC0B,OAAL,GAAeA,OAAf;AACA1B,IAAI,CAAC2B,OAAL,GAAeA,OAAf;AACA3B,IAAI,CAAC4B,IAAL,GAAYA,IAAZ;AACA5B,IAAI,CAAC6B,IAAL,GAAYA,IAAZ;AACA7B,IAAI,CAAC8B,QAAL,GAAgBA,QAAhB;AACA9B,IAAI,CAAC+B,SAAL,GAAiBA,SAAjB;AACA/B,IAAI,CAACgC,MAAL,GAAcA,MAAd;AACAhC,IAAI,CAACiC,UAAL,GAAkBA,UAAlB;;;;"}
1
+ {"version":3,"file":"Menu.js","sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\r\nimport { MenuContext } from './Context';\r\nimport { Content } from './components/Content';\r\nimport { Item } from './components/Item';\r\nimport { Link } from './components/Link';\r\nimport { Trigger } from './components/Trigger';\r\nimport { Checkbox } from './components/Checkbox';\r\nimport { RadioGroup } from './components/RadioGroup';\r\nimport { Separator } from './components/Separator';\r\nimport { Header } from './components/Header';\r\nimport { Appearance } from '../..';\r\n\r\nexport type MenuProps = {\r\n /** Appearance will change the style of the button */\r\n appearance?: Appearance;\r\n children: React.ReactNode;\r\n id?: string;\r\n /** A trigger to be used for the menu, should not be set if `children` already contains a trigger */\r\n trigger?: JSX.Element;\r\n};\r\n\r\nexport const Menu = (externalProps: MenuProps): JSX.Element => {\r\n const { appearance: externalAppearance, children, trigger, ...props } = externalProps;\r\n const [open, setOpen] = React.useState(false);\r\n const [appearance, setAppearance] = React.useState<Appearance>(externalAppearance ?? 'default');\r\n const [indented, setIndented] = React.useState(false);\r\n const [minWidth, setMinWidth] = React.useState<number | undefined>(undefined);\r\n\r\n const context = React.useMemo(\r\n () => ({\r\n appearance,\r\n setAppearance: (appearance: Appearance) => setAppearance(appearance),\r\n indented,\r\n registerIndentation: () => setIndented(true),\r\n minWidth,\r\n setMinWidth: (width: number) => setMinWidth(width),\r\n close: () => setOpen(false),\r\n }),\r\n [indented, minWidth, appearance]\r\n );\r\n\r\n return (\r\n <MenuContext.Provider value={context}>\r\n <DropdownMenuPrimitive.Root {...props} modal={false} open={open} onOpenChange={setOpen}>\r\n {trigger && <Trigger>{trigger}</Trigger>}\r\n {children}\r\n </DropdownMenuPrimitive.Root>\r\n </MenuContext.Provider>\r\n );\r\n};\r\nMenu.Trigger = Trigger;\r\nMenu.Content = Content;\r\nMenu.Item = Item;\r\nMenu.Link = Link;\r\nMenu.Checkbox = Checkbox;\r\nMenu.Separator = Separator;\r\nMenu.Header = Header;\r\nMenu.RadioGroup = RadioGroup;\r\n"],"names":["Menu","externalProps","externalAppearance","appearance","children","trigger","props","React","open","setOpen","setAppearance","indented","setIndented","undefined","minWidth","setMinWidth","context","registerIndentation","width","close","MenuContext","Provider","value","DropdownMenuPrimitive","modal","onOpenChange","Trigger","Content","Item","Link","Checkbox","Separator","Header","RadioGroup"],"mappings":";;;;;;;;;;;;;;IAsBaA,IAAI,GAAG,SAAPA,IAAO,CAACC,aAAD;AAChB,MAAoBC,kBAApB,GAAwED,aAAxE,CAAQE,UAAR;AAAA,MAAwCC,QAAxC,GAAwEH,aAAxE,CAAwCG,QAAxC;AAAA,MAAkDC,OAAlD,GAAwEJ,aAAxE,CAAkDI,OAAlD;AAAA,MAA8DC,KAA9D,iCAAwEL,aAAxE;;AACA,wBAAwBM,QAAA,CAAe,KAAf,CAAxB;AAAA,MAAOC,IAAP;AAAA,MAAaC,OAAb;;AACA,yBAAoCF,QAAA,CAA2BL,kBAA3B,aAA2BA,kBAA3B,cAA2BA,kBAA3B,GAAiD,SAAjD,CAApC;AAAA,MAAOC,UAAP;AAAA,MAAmBO,cAAnB;;AACA,yBAAgCH,QAAA,CAAe,KAAf,CAAhC;AAAA,MAAOI,QAAP;AAAA,MAAiBC,WAAjB;;AACA,yBAAgCL,QAAA,CAAmCM,SAAnC,CAAhC;AAAA,MAAOC,QAAP;AAAA,MAAiBC,YAAjB;;AAEA,MAAMC,OAAO,GAAGT,OAAA,CACZ;AAAA,WAAO;AACHJ,MAAAA,UAAU,EAAVA,UADG;AAEHO,MAAAA,aAAa,EAAE,uBAACP,UAAD;AAAA,eAA4BO,cAAa,CAACP,UAAD,CAAzC;AAAA,OAFZ;AAGHQ,MAAAA,QAAQ,EAARA,QAHG;AAIHM,MAAAA,mBAAmB,EAAE;AAAA,eAAML,WAAW,CAAC,IAAD,CAAjB;AAAA,OAJlB;AAKHE,MAAAA,QAAQ,EAARA,QALG;AAMHC,MAAAA,WAAW,EAAE,qBAACG,KAAD;AAAA,eAAmBH,YAAW,CAACG,KAAD,CAA9B;AAAA,OANV;AAOHC,MAAAA,KAAK,EAAE;AAAA,eAAMV,OAAO,CAAC,KAAD,CAAb;AAAA;AAPJ,KAAP;AAAA,GADY,EAUZ,CAACE,QAAD,EAAWG,QAAX,EAAqBX,UAArB,CAVY,CAAhB;AAaA,SACII,aAAA,CAACa,WAAW,CAACC,QAAb;AAAsBC,IAAAA,KAAK,EAAEN;GAA7B,EACIT,aAAA,CAACgB,IAAD,oBAAgCjB;AAAOkB,IAAAA,KAAK,EAAE;AAAOhB,IAAAA,IAAI,EAAEA;AAAMiB,IAAAA,YAAY,EAAEhB;IAA/E,EACKJ,OAAO,IAAIE,aAAA,CAACmB,OAAD,MAAA,EAAUrB,OAAV,CADhB,EAEKD,QAFL,CADJ,CADJ;AAQH;AACDJ,IAAI,CAAC0B,OAAL,GAAeA,OAAf;AACA1B,IAAI,CAAC2B,OAAL,GAAeA,OAAf;AACA3B,IAAI,CAAC4B,IAAL,GAAYA,IAAZ;AACA5B,IAAI,CAAC6B,IAAL,GAAYA,IAAZ;AACA7B,IAAI,CAAC8B,QAAL,GAAgBA,QAAhB;AACA9B,IAAI,CAAC+B,SAAL,GAAiBA,SAAjB;AACA/B,IAAI,CAACgC,MAAL,GAAcA,MAAd;AACAhC,IAAI,CAACiC,UAAL,GAAkBA,UAAlB;;;;"}
@@ -1,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import React__default from 'react';
2
3
  import cn from 'classnames';
3
4
  import { Icon } from '../Icon/Icon.js';
@@ -5,20 +6,25 @@ import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
5
6
  import { Treeview } from '../Treeview/Treeview.js';
6
7
  import { useDropTarget } from '../../utils/hooks/useDropTarget.js';
7
8
 
8
- const Item = /*#__PURE__*/React__default.forwardRef(function Item(props, ref) {
9
- const {
10
- active,
11
- children,
12
- onDrop,
13
- postfix,
14
- prefix,
15
- role,
16
- ...otherProps
17
- } = props;
18
- const proxyRef = useProxiedRef(ref);
19
- const [isDraggedOver, dropTargetProps] = useDropTarget(onDrop);
20
- const isTreeitem = role === 'treeitem';
21
- const className = cn('yt-navigation__item cursor-pointer', {
9
+ var _excluded = ["active", "children", "onDrop", "postfix", "prefix", "role"],
10
+ _excluded2 = ["children"];
11
+ var Item = /*#__PURE__*/React__default.forwardRef(function Item(props, ref) {
12
+ var active = props.active,
13
+ children = props.children,
14
+ onDrop = props.onDrop,
15
+ postfix = props.postfix,
16
+ prefix = props.prefix,
17
+ role = props.role,
18
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded);
19
+
20
+ var proxyRef = useProxiedRef(ref);
21
+
22
+ var _useDropTarget = useDropTarget(onDrop),
23
+ isDraggedOver = _useDropTarget[0],
24
+ dropTargetProps = _useDropTarget[1];
25
+
26
+ var isTreeitem = role === 'treeitem';
27
+ var className = cn('yt-navigation__item cursor-pointer', {
22
28
  'w-full mb-px py-1 px-3 flex items-center hover:bg-grey-dark': isTreeitem,
23
29
  'bg-white w-full h-10 px-3 flex-shrink-0 flex items-center justify-between cursor-pointer': !isTreeitem,
24
30
  'yt-navigation__item--active': active && !isDraggedOver,
@@ -26,7 +32,7 @@ const Item = /*#__PURE__*/React__default.forwardRef(function Item(props, ref) {
26
32
  'yt-navigation__item--dropping bg-blue': isDraggedOver
27
33
  }, props.className);
28
34
 
29
- const handleClick = event => {
35
+ var handleClick = function handleClick(event) {
30
36
  if (event.target instanceof HTMLAnchorElement || event.target instanceof HTMLButtonElement) {
31
37
  return;
32
38
  }
@@ -49,19 +55,19 @@ const Item = /*#__PURE__*/React__default.forwardRef(function Item(props, ref) {
49
55
  className: "yt-navigation__item__postfix ml-1"
50
56
  }, postfix));
51
57
  });
52
- const Panel = /*#__PURE__*/React__default.forwardRef(function Panel(props, ref) {
58
+ var Panel = /*#__PURE__*/React__default.forwardRef(function Panel(props, ref) {
53
59
  return React__default.createElement("div", Object.assign({}, props, {
54
60
  className: cn('w-full bg-white p-3', props.className),
55
61
  ref: ref
56
62
  }));
57
63
  });
58
- const MenuGroup = /*#__PURE__*/React__default.forwardRef(function MenuGroup(props, ref) {
59
- const className = cn('flex-shrink-0 space-y-1 outline-none', {
64
+ var MenuGroup = /*#__PURE__*/React__default.forwardRef(function MenuGroup(props, ref) {
65
+ var className = cn('flex-shrink-0 space-y-1 outline-none', {
60
66
  'bg-white pb-2': props.fixed
61
67
  }, props.className);
62
68
 
63
- const title = expanded => {
64
- const className = cn('bg-white h-10 pl-3 pr-1 flex items-center justify-between w-full', {
69
+ var title = function title(expanded) {
70
+ var className = cn('bg-white h-10 pl-3 pr-1 flex items-center justify-between w-full', {
65
71
  'mb-1': expanded,
66
72
  'cursor-pointer hover:text-blue': !props.fixed
67
73
  });
@@ -78,14 +84,16 @@ const MenuGroup = /*#__PURE__*/React__default.forwardRef(function MenuGroup(prop
78
84
  ref: ref
79
85
  }));
80
86
  });
81
- const Menu = /*#__PURE__*/React__default.forwardRef(function Menu(props, ref) {
82
- const scrollableAreas = React__default.useMemo(() => {
83
- const scrollableAreas = [];
84
- React__default.Children.toArray(props.children).filter(child => !!child).map(child => {
87
+ var Menu = /*#__PURE__*/React__default.forwardRef(function Menu(props, ref) {
88
+ var scrollableAreas = React__default.useMemo(function () {
89
+ var scrollableAreas = [];
90
+ React__default.Children.toArray(props.children).filter(function (child) {
91
+ return !!child;
92
+ }).map(function (child) {
85
93
  if (child.props.fixed) {
86
94
  scrollableAreas.push(child);
87
95
  } else {
88
- const x = scrollableAreas[scrollableAreas.length - 1];
96
+ var x = scrollableAreas[scrollableAreas.length - 1];
89
97
 
90
98
  if (Array.isArray(x)) {
91
99
  x.push(child);
@@ -99,18 +107,19 @@ const Menu = /*#__PURE__*/React__default.forwardRef(function Menu(props, ref) {
99
107
  return React__default.createElement(Treeview, Object.assign({}, props, {
100
108
  className: cn('divide-grey-light flex flex-grow flex-col divide-y-2 overflow-y-auto', props.className),
101
109
  ref: ref
102
- }), scrollableAreas.map((area, i) => Array.isArray(area) ? React__default.createElement("div", {
103
- className: "divide-grey-light flex h-0 flex-auto flex-shrink-0 flex-grow flex-col divide-y-2 overflow-y-auto",
104
- key: i
105
- }, area) : area));
110
+ }), scrollableAreas.map(function (area, i) {
111
+ return Array.isArray(area) ? React__default.createElement("div", {
112
+ className: "divide-grey-light flex h-0 flex-auto flex-shrink-0 flex-grow flex-col divide-y-2 overflow-y-auto",
113
+ key: i
114
+ }, area) : area;
115
+ }));
106
116
  });
107
117
  Menu.Group = MenuGroup;
108
- const Navigation = /*#__PURE__*/React__default.forwardRef(function Navigation(props, ref) {
109
- const {
110
- children,
111
- ...otherProps
112
- } = props;
113
- const className = cn('h-full flex flex-col bg-grey-light divide-y-2 divide-grey-light', props.className);
118
+ var Navigation = /*#__PURE__*/React__default.forwardRef(function Navigation(props, ref) {
119
+ var children = props.children,
120
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded2);
121
+
122
+ var className = cn('h-full flex flex-col bg-grey-light divide-y-2 divide-grey-light', props.className);
114
123
  return React__default.createElement("div", Object.assign({}, otherProps, {
115
124
  className: className,
116
125
  "data-taco": "navigation",
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.js","sources":["../../../../src/components/Navigation/Navigation.tsx"],"sourcesContent":["import React from 'react';\r\nimport cn from 'classnames';\r\nimport { TreeviewProps, Treeview, TreeviewGroupProps, TreeviewItemProps } from '../Treeview/Treeview';\r\nimport { Icon } from '../Icon/Icon';\r\nimport { useDropTarget } from '../../utils/hooks/useDropTarget';\r\nimport './Navigation.css';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\n\r\n// Item\r\nexport type NavigationItemProps = Omit<TreeviewItemProps, 'prefix'> & {\r\n /** Change the style to indicate the link is selected */\r\n active?: boolean;\r\n /** Handler to be used when dropping a dragged element over the navigation link */\r\n onDrop?: React.DragEventHandler;\r\n /**\r\n * Small amount of information placed next to the text of the link.\r\n * This can be any valid react element, for e.g. a `span`.\r\n * Should be used to indicate a relevant information of the link,\r\n * for e.g. the number of unread notifications\r\n */\r\n postfix?: React.ReactNode;\r\n /**\r\n * Small amount of information placed before the text of the link.\r\n * This can be any valid react element, for e.g. a `span`.\r\n * Should be used to indicate a feedback for user,\r\n * for e.g. display some sort of visual informational state or a relevant icon.\r\n */\r\n prefix?: React.ReactNode;\r\n /** Target of the link */\r\n target?: string;\r\n};\r\n\r\nconst Item = React.forwardRef(function Item(props: NavigationItemProps, ref: React.Ref<HTMLAnchorElement>) {\r\n const { active, children, onDrop, postfix, prefix, role, ...otherProps } = props;\r\n const proxyRef = useProxiedRef<HTMLAnchorElement>(ref);\r\n const [isDraggedOver, dropTargetProps] = useDropTarget(onDrop);\r\n const isTreeitem = role === 'treeitem';\r\n const className = cn(\r\n 'yt-navigation__item cursor-pointer',\r\n {\r\n 'w-full mb-px py-1 px-3 flex items-center hover:bg-grey-dark': isTreeitem,\r\n 'bg-white w-full h-10 px-3 flex-shrink-0 flex items-center justify-between cursor-pointer': !isTreeitem,\r\n 'yt-navigation__item--active': active && !isDraggedOver,\r\n 'bg-grey-dark': isTreeitem && active && !isDraggedOver,\r\n 'yt-navigation__item--dropping bg-blue': isDraggedOver,\r\n },\r\n props.className\r\n );\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>): void => {\r\n if (event.target instanceof HTMLAnchorElement || event.target instanceof HTMLButtonElement) {\r\n return;\r\n }\r\n\r\n if (proxyRef.current) {\r\n proxyRef.current.click();\r\n }\r\n };\r\n\r\n return (\r\n <span {...dropTargetProps} className={className} onClick={handleClick} role={role}>\r\n {prefix && <span className=\"yt-navigation__item__prefix flex items-center\">{prefix}</span>}\r\n <a {...otherProps} className=\"block flex-grow truncate\" ref={proxyRef}>\r\n {children}\r\n </a>\r\n {postfix && <span className=\"yt-navigation__item__postfix ml-1\">{postfix}</span>}\r\n </span>\r\n );\r\n});\r\n\r\n// Panel\r\nexport type NavigationPanelProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nconst Panel = React.forwardRef(function Panel(props: NavigationPanelProps, ref: React.Ref<HTMLDivElement>) {\r\n return <div {...props} className={cn('w-full bg-white p-3', props.className)} ref={ref} />;\r\n});\r\n\r\n// Group\r\nexport type NavigationMenuGroupProps = TreeviewGroupProps;\r\n\r\nconst MenuGroup = React.forwardRef(function MenuGroup(props: NavigationMenuGroupProps, ref: React.Ref<HTMLDivElement>) {\r\n const className = cn(\r\n 'flex-shrink-0 space-y-1 outline-none',\r\n {\r\n 'bg-white pb-2': props.fixed,\r\n },\r\n props.className\r\n );\r\n const title = (expanded: boolean): JSX.Element => {\r\n const className = cn('bg-white h-10 pl-3 pr-1 flex items-center justify-between w-full', {\r\n 'mb-1': expanded,\r\n 'cursor-pointer hover:text-blue': !props.fixed,\r\n });\r\n\r\n return (\r\n <span className={className}>\r\n {typeof props.title === 'function' ? props.title(expanded) : props.title}\r\n {!props.fixed && <Icon name={expanded ? 'chevron-up' : 'chevron-down'} />}\r\n </span>\r\n );\r\n };\r\n\r\n return <Treeview.Group {...props} className={className} title={title} ref={ref} />;\r\n});\r\n\r\n// Menu\r\nexport type NavigationMenuProps = React.PropsWithChildren<TreeviewProps>;\r\n\r\nexport type ForwardedNavigationMenuWithStatics = React.ForwardRefExoticComponent<\r\n NavigationMenuProps & React.RefAttributes<HTMLDivElement>\r\n> & {\r\n /** Expandable region reprezenting a group of related links */\r\n Group: React.ForwardRefExoticComponent<NavigationMenuGroupProps & React.RefAttributes<HTMLDivElement>>;\r\n};\r\n\r\nconst Menu = React.forwardRef(function Menu(props: NavigationMenuProps, ref: React.Ref<HTMLDivElement>) {\r\n const scrollableAreas = React.useMemo(() => {\r\n const scrollableAreas: any[] = [];\r\n\r\n React.Children.toArray(props.children)\r\n .filter(child => !!child)\r\n .map((child: React.ReactElement<NavigationMenuGroupProps>) => {\r\n if (child.props.fixed) {\r\n scrollableAreas.push(child);\r\n } else {\r\n const x = scrollableAreas[scrollableAreas.length - 1];\r\n if (Array.isArray(x)) {\r\n x.push(child);\r\n } else {\r\n scrollableAreas.push([child]);\r\n }\r\n }\r\n });\r\n\r\n return scrollableAreas;\r\n }, [props.children]);\r\n\r\n return (\r\n <Treeview\r\n {...props}\r\n className={cn('divide-grey-light flex flex-grow flex-col divide-y-2 overflow-y-auto', props.className)}\r\n ref={ref}\r\n >\r\n {scrollableAreas.map((area, i) =>\r\n Array.isArray(area) ? (\r\n <div\r\n className=\"divide-grey-light flex h-0 flex-auto flex-shrink-0 flex-grow flex-col divide-y-2 overflow-y-auto\"\r\n key={i}\r\n >\r\n {area}\r\n </div>\r\n ) : (\r\n area\r\n )\r\n )}\r\n </Treeview>\r\n );\r\n}) as ForwardedNavigationMenuWithStatics;\r\n\r\nMenu.Group = MenuGroup;\r\n\r\n// Navigation\r\nexport type NavigationProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport type ForwardedNavigationWithStatics = React.ForwardRefExoticComponent<\r\n NavigationProps & React.RefAttributes<HTMLDivElement>\r\n> & {\r\n /** Navigation link */\r\n Item: React.ForwardRefExoticComponent<NavigationItemProps & React.RefAttributes<HTMLAnchorElement>>;\r\n /**\r\n * Container for the expandable groups that hold navigation links.\r\n * Should be used as a direct child of Navigation component, e.g. `Navigation.Menu`.\r\n * Should have the menu groups as a direct child, e.g. `Navigation.Menu.Group`\r\n */\r\n Menu: ForwardedNavigationMenuWithStatics;\r\n /**\r\n * Isolated container within the Navigation.\r\n * This can be used to create a region in the Navigation that is usually not scrollable, nor expandable,\r\n * containing useful information for user and quick actions\r\n */\r\n Panel: React.ForwardRefExoticComponent<NavigationPanelProps & React.RefAttributes<HTMLDivElement>>;\r\n};\r\n\r\nexport const Navigation = React.forwardRef(function Navigation(props: NavigationProps, ref: React.Ref<HTMLDivElement>) {\r\n const { children, ...otherProps } = props;\r\n const className = cn('h-full flex flex-col bg-grey-light divide-y-2 divide-grey-light', props.className);\r\n\r\n return (\r\n <div {...otherProps} className={className} data-taco=\"navigation\" ref={ref}>\r\n {children}\r\n </div>\r\n );\r\n}) as ForwardedNavigationWithStatics;\r\n\r\nNavigation.Menu = Menu;\r\nNavigation.Item = Item;\r\nNavigation.Panel = Panel;\r\n"],"names":["Item","React","forwardRef","props","ref","active","children","onDrop","postfix","prefix","role","otherProps","proxyRef","useProxiedRef","isDraggedOver","dropTargetProps","useDropTarget","isTreeitem","className","cn","handleClick","event","target","HTMLAnchorElement","HTMLButtonElement","current","click","onClick","Panel","MenuGroup","fixed","title","expanded","Icon","name","Treeview","Group","Menu","scrollableAreas","useMemo","Children","toArray","filter","child","map","push","x","length","Array","isArray","area","i","key","Navigation"],"mappings":"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"}
1
+ {"version":3,"file":"Navigation.js","sources":["../../../../src/components/Navigation/Navigation.tsx"],"sourcesContent":["import React from 'react';\r\nimport cn from 'classnames';\r\nimport { TreeviewProps, Treeview, TreeviewGroupProps, TreeviewItemProps } from '../Treeview/Treeview';\r\nimport { Icon } from '../Icon/Icon';\r\nimport { useDropTarget } from '../../utils/hooks/useDropTarget';\r\nimport './Navigation.css';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\n\r\n// Item\r\nexport type NavigationItemProps = Omit<TreeviewItemProps, 'prefix'> & {\r\n /** Change the style to indicate the link is selected */\r\n active?: boolean;\r\n /** Handler to be used when dropping a dragged element over the navigation link */\r\n onDrop?: React.DragEventHandler;\r\n /**\r\n * Small amount of information placed next to the text of the link.\r\n * This can be any valid react element, for e.g. a `span`.\r\n * Should be used to indicate a relevant information of the link,\r\n * for e.g. the number of unread notifications\r\n */\r\n postfix?: React.ReactNode;\r\n /**\r\n * Small amount of information placed before the text of the link.\r\n * This can be any valid react element, for e.g. a `span`.\r\n * Should be used to indicate a feedback for user,\r\n * for e.g. display some sort of visual informational state or a relevant icon.\r\n */\r\n prefix?: React.ReactNode;\r\n /** Target of the link */\r\n target?: string;\r\n};\r\n\r\nconst Item = React.forwardRef(function Item(props: NavigationItemProps, ref: React.Ref<HTMLAnchorElement>) {\r\n const { active, children, onDrop, postfix, prefix, role, ...otherProps } = props;\r\n const proxyRef = useProxiedRef<HTMLAnchorElement>(ref);\r\n const [isDraggedOver, dropTargetProps] = useDropTarget(onDrop);\r\n const isTreeitem = role === 'treeitem';\r\n const className = cn(\r\n 'yt-navigation__item cursor-pointer',\r\n {\r\n 'w-full mb-px py-1 px-3 flex items-center hover:bg-grey-dark': isTreeitem,\r\n 'bg-white w-full h-10 px-3 flex-shrink-0 flex items-center justify-between cursor-pointer': !isTreeitem,\r\n 'yt-navigation__item--active': active && !isDraggedOver,\r\n 'bg-grey-dark': isTreeitem && active && !isDraggedOver,\r\n 'yt-navigation__item--dropping bg-blue': isDraggedOver,\r\n },\r\n props.className\r\n );\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>): void => {\r\n if (event.target instanceof HTMLAnchorElement || event.target instanceof HTMLButtonElement) {\r\n return;\r\n }\r\n\r\n if (proxyRef.current) {\r\n proxyRef.current.click();\r\n }\r\n };\r\n\r\n return (\r\n <span {...dropTargetProps} className={className} onClick={handleClick} role={role}>\r\n {prefix && <span className=\"yt-navigation__item__prefix flex items-center\">{prefix}</span>}\r\n <a {...otherProps} className=\"block flex-grow truncate\" ref={proxyRef}>\r\n {children}\r\n </a>\r\n {postfix && <span className=\"yt-navigation__item__postfix ml-1\">{postfix}</span>}\r\n </span>\r\n );\r\n});\r\n\r\n// Panel\r\nexport type NavigationPanelProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nconst Panel = React.forwardRef(function Panel(props: NavigationPanelProps, ref: React.Ref<HTMLDivElement>) {\r\n return <div {...props} className={cn('w-full bg-white p-3', props.className)} ref={ref} />;\r\n});\r\n\r\n// Group\r\nexport type NavigationMenuGroupProps = TreeviewGroupProps;\r\n\r\nconst MenuGroup = React.forwardRef(function MenuGroup(props: NavigationMenuGroupProps, ref: React.Ref<HTMLDivElement>) {\r\n const className = cn(\r\n 'flex-shrink-0 space-y-1 outline-none',\r\n {\r\n 'bg-white pb-2': props.fixed,\r\n },\r\n props.className\r\n );\r\n const title = (expanded: boolean): JSX.Element => {\r\n const className = cn('bg-white h-10 pl-3 pr-1 flex items-center justify-between w-full', {\r\n 'mb-1': expanded,\r\n 'cursor-pointer hover:text-blue': !props.fixed,\r\n });\r\n\r\n return (\r\n <span className={className}>\r\n {typeof props.title === 'function' ? props.title(expanded) : props.title}\r\n {!props.fixed && <Icon name={expanded ? 'chevron-up' : 'chevron-down'} />}\r\n </span>\r\n );\r\n };\r\n\r\n return <Treeview.Group {...props} className={className} title={title} ref={ref} />;\r\n});\r\n\r\n// Menu\r\nexport type NavigationMenuProps = React.PropsWithChildren<TreeviewProps>;\r\n\r\nexport type ForwardedNavigationMenuWithStatics = React.ForwardRefExoticComponent<\r\n NavigationMenuProps & React.RefAttributes<HTMLDivElement>\r\n> & {\r\n /** Expandable region reprezenting a group of related links */\r\n Group: React.ForwardRefExoticComponent<NavigationMenuGroupProps & React.RefAttributes<HTMLDivElement>>;\r\n};\r\n\r\nconst Menu = React.forwardRef(function Menu(props: NavigationMenuProps, ref: React.Ref<HTMLDivElement>) {\r\n const scrollableAreas = React.useMemo(() => {\r\n const scrollableAreas: any[] = [];\r\n\r\n React.Children.toArray(props.children)\r\n .filter(child => !!child)\r\n .map((child: React.ReactElement<NavigationMenuGroupProps>) => {\r\n if (child.props.fixed) {\r\n scrollableAreas.push(child);\r\n } else {\r\n const x = scrollableAreas[scrollableAreas.length - 1];\r\n if (Array.isArray(x)) {\r\n x.push(child);\r\n } else {\r\n scrollableAreas.push([child]);\r\n }\r\n }\r\n });\r\n\r\n return scrollableAreas;\r\n }, [props.children]);\r\n\r\n return (\r\n <Treeview\r\n {...props}\r\n className={cn('divide-grey-light flex flex-grow flex-col divide-y-2 overflow-y-auto', props.className)}\r\n ref={ref}\r\n >\r\n {scrollableAreas.map((area, i) =>\r\n Array.isArray(area) ? (\r\n <div\r\n className=\"divide-grey-light flex h-0 flex-auto flex-shrink-0 flex-grow flex-col divide-y-2 overflow-y-auto\"\r\n key={i}\r\n >\r\n {area}\r\n </div>\r\n ) : (\r\n area\r\n )\r\n )}\r\n </Treeview>\r\n );\r\n}) as ForwardedNavigationMenuWithStatics;\r\n\r\nMenu.Group = MenuGroup;\r\n\r\n// Navigation\r\nexport type NavigationProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport type ForwardedNavigationWithStatics = React.ForwardRefExoticComponent<\r\n NavigationProps & React.RefAttributes<HTMLDivElement>\r\n> & {\r\n /** Navigation link */\r\n Item: React.ForwardRefExoticComponent<NavigationItemProps & React.RefAttributes<HTMLAnchorElement>>;\r\n /**\r\n * Container for the expandable groups that hold navigation links.\r\n * Should be used as a direct child of Navigation component, e.g. `Navigation.Menu`.\r\n * Should have the menu groups as a direct child, e.g. `Navigation.Menu.Group`\r\n */\r\n Menu: ForwardedNavigationMenuWithStatics;\r\n /**\r\n * Isolated container within the Navigation.\r\n * This can be used to create a region in the Navigation that is usually not scrollable, nor expandable,\r\n * containing useful information for user and quick actions\r\n */\r\n Panel: React.ForwardRefExoticComponent<NavigationPanelProps & React.RefAttributes<HTMLDivElement>>;\r\n};\r\n\r\nexport const Navigation = React.forwardRef(function Navigation(props: NavigationProps, ref: React.Ref<HTMLDivElement>) {\r\n const { children, ...otherProps } = props;\r\n const className = cn('h-full flex flex-col bg-grey-light divide-y-2 divide-grey-light', props.className);\r\n\r\n return (\r\n <div {...otherProps} className={className} data-taco=\"navigation\" ref={ref}>\r\n {children}\r\n </div>\r\n );\r\n}) as ForwardedNavigationWithStatics;\r\n\r\nNavigation.Menu = Menu;\r\nNavigation.Item = Item;\r\nNavigation.Panel = Panel;\r\n"],"names":["Item","React","forwardRef","props","ref","active","children","onDrop","postfix","prefix","role","otherProps","proxyRef","useProxiedRef","useDropTarget","isDraggedOver","dropTargetProps","isTreeitem","className","cn","handleClick","event","target","HTMLAnchorElement","HTMLButtonElement","current","click","onClick","Panel","MenuGroup","fixed","title","expanded","Icon","name","Treeview","Group","Menu","scrollableAreas","useMemo","Children","toArray","filter","child","map","push","x","length","Array","isArray","area","i","key","Navigation"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { forwardRef, createElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { IconButton } from '../IconButton/IconButton.js';
@@ -8,41 +9,47 @@ import { Select } from '../Select/Select.js';
8
9
  import { usePaginationShortcuts } from './usePaginationShortcuts.js';
9
10
  export { usePagination } from './usePagination.js';
10
11
 
11
- const getShowingLabel = (length, pageIndex, pageSize, texts) => {
12
- const minItemIndex = pageIndex * pageSize + 1;
13
- const maxItemIndex = (pageIndex + 1) * pageSize;
12
+ var _excluded = ["length", "pageIndex", "pageSize", "pageSizes", "setPageIndex", "setPageSize", "showPageControls", "showPageNumbers", "showPageSize", "dangerouslyHijackGlobalKeyboardNavigation"];
13
+
14
+ var getShowingLabel = function getShowingLabel(length, pageIndex, pageSize, texts) {
15
+ var minItemIndex = pageIndex * pageSize + 1;
16
+ var maxItemIndex = (pageIndex + 1) * pageSize;
14
17
  return texts.pagination.showingXofYofTotal.replace('[X]', length === 0 ? '0' : String(minItemIndex)).replace('[Y]', String(maxItemIndex > length ? length : maxItemIndex)).replace('[total]', String(length));
15
18
  };
16
19
 
17
- const Pagination = /*#__PURE__*/forwardRef(function Pagination(props, ref) {
18
- const {
19
- length,
20
- pageIndex,
21
- pageSize,
22
- pageSizes = [10, 25, 50, 100, 500],
23
- setPageIndex,
24
- setPageSize,
25
- showPageControls = true,
26
- showPageNumbers = true,
27
- showPageSize = true,
28
- dangerouslyHijackGlobalKeyboardNavigation = false,
29
- ...otherProps
30
- } = props;
31
- const {
32
- texts
33
- } = useLocalization();
34
- const maxPageIndex = Math.ceil(length / pageSize) - 1;
35
- const showShortcutTexts = dangerouslyHijackGlobalKeyboardNavigation;
20
+ var Pagination = /*#__PURE__*/forwardRef(function Pagination(props, ref) {
21
+ var length = props.length,
22
+ pageIndex = props.pageIndex,
23
+ pageSize = props.pageSize,
24
+ _props$pageSizes = props.pageSizes,
25
+ pageSizes = _props$pageSizes === void 0 ? [10, 25, 50, 100, 500] : _props$pageSizes,
26
+ setPageIndex = props.setPageIndex,
27
+ setPageSize = props.setPageSize,
28
+ _props$showPageContro = props.showPageControls,
29
+ showPageControls = _props$showPageContro === void 0 ? true : _props$showPageContro,
30
+ _props$showPageNumber = props.showPageNumbers,
31
+ showPageNumbers = _props$showPageNumber === void 0 ? true : _props$showPageNumber,
32
+ _props$showPageSize = props.showPageSize,
33
+ showPageSize = _props$showPageSize === void 0 ? true : _props$showPageSize,
34
+ _props$dangerouslyHij = props.dangerouslyHijackGlobalKeyboardNavigation,
35
+ dangerouslyHijackGlobalKeyboardNavigation = _props$dangerouslyHij === void 0 ? false : _props$dangerouslyHij,
36
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded);
37
+
38
+ var _useLocalization = useLocalization(),
39
+ texts = _useLocalization.texts;
40
+
41
+ var maxPageIndex = Math.ceil(length / pageSize) - 1;
42
+ var showShortcutTexts = dangerouslyHijackGlobalKeyboardNavigation;
36
43
  usePaginationShortcuts({
37
- setPageIndex,
38
- maxPageIndex,
39
- pageIndex,
40
- dangerouslyHijackGlobalKeyboardNavigation
44
+ setPageIndex: setPageIndex,
45
+ maxPageIndex: maxPageIndex,
46
+ pageIndex: pageIndex,
47
+ dangerouslyHijackGlobalKeyboardNavigation: dangerouslyHijackGlobalKeyboardNavigation
41
48
  });
42
- const pageCount = Math.ceil(length / pageSize);
43
- const canPreviousPage = pageIndex > 0;
44
- const canNextPage = pageIndex < pageCount - 1;
45
- const className = cn('inline-flex relative justify-between items-center', props.className);
49
+ var pageCount = Math.ceil(length / pageSize);
50
+ var canPreviousPage = pageIndex > 0;
51
+ var canNextPage = pageIndex < pageCount - 1;
52
+ var className = cn('inline-flex relative justify-between items-center', props.className);
46
53
  return createElement("div", Object.assign({}, otherProps, {
47
54
  className: className,
48
55
  "data-taco": "pagination",
@@ -52,11 +59,13 @@ const Pagination = /*#__PURE__*/forwardRef(function Pagination(props, ref) {
52
59
  }, getShowingLabel(length, pageIndex, pageSize, texts), createElement(Select, {
53
60
  "aria-label": texts.pagination.pageSize,
54
61
  className: "ml-4 !w-20",
55
- data: pageSizes.map(pageSize => ({
56
- text: String(pageSize),
57
- value: pageSize
58
- })),
59
- onChange: event => {
62
+ data: pageSizes.map(function (pageSize) {
63
+ return {
64
+ text: String(pageSize),
65
+ value: pageSize
66
+ };
67
+ }),
68
+ onChange: function onChange(event) {
60
69
  setPageIndex(0);
61
70
  setPageSize(Number(event.target.value));
62
71
  },
@@ -68,14 +77,18 @@ const Pagination = /*#__PURE__*/forwardRef(function Pagination(props, ref) {
68
77
  appearance: "default",
69
78
  disabled: !canPreviousPage,
70
79
  icon: "arrow-start",
71
- onClick: () => setPageIndex(0),
80
+ onClick: function onClick() {
81
+ return setPageIndex(0);
82
+ },
72
83
  "aria-label": showShortcutTexts ? texts.pagination.actions.firstPageWithShortcut : texts.pagination.actions.firstPage,
73
84
  tooltip: showShortcutTexts ? texts.pagination.actions.firstPageWithShortcut : texts.pagination.actions.firstPage
74
85
  }), createElement(IconButton, {
75
86
  appearance: "default",
76
87
  disabled: !canPreviousPage,
77
88
  icon: "arrow-left",
78
- onClick: () => setPageIndex(pageIndex - 1),
89
+ onClick: function onClick() {
90
+ return setPageIndex(pageIndex - 1);
91
+ },
79
92
  "aria-label": showShortcutTexts ? texts.pagination.actions.previousPageWithShortcut : texts.pagination.actions.previousPage,
80
93
  tooltip: showShortcutTexts ? texts.pagination.actions.previousPageWithShortcut : texts.pagination.actions.previousPage
81
94
  }), showPageNumbers && pageCount > 0 && createElement(PageNumbers, {
@@ -86,14 +99,18 @@ const Pagination = /*#__PURE__*/forwardRef(function Pagination(props, ref) {
86
99
  appearance: "default",
87
100
  disabled: !canNextPage,
88
101
  icon: "arrow-right",
89
- onClick: () => setPageIndex(pageIndex + 1),
102
+ onClick: function onClick() {
103
+ return setPageIndex(pageIndex + 1);
104
+ },
90
105
  "aria-label": showShortcutTexts ? texts.pagination.actions.nextPageWithShortcut : texts.pagination.actions.nextPage,
91
106
  tooltip: showShortcutTexts ? texts.pagination.actions.nextPageWithShortcut : texts.pagination.actions.nextPage
92
107
  }), createElement(IconButton, {
93
108
  appearance: "default",
94
109
  disabled: !canNextPage,
95
110
  icon: "arrow-end",
96
- onClick: () => setPageIndex(pageCount - 1),
111
+ onClick: function onClick() {
112
+ return setPageIndex(pageCount - 1);
113
+ },
97
114
  "aria-label": showShortcutTexts ? texts.pagination.actions.lastPageWithShortcut : texts.pagination.actions.lastPage,
98
115
  tooltip: showShortcutTexts ? texts.pagination.actions.lastPageWithShortcut : texts.pagination.actions.lastPage
99
116
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { PageNumbers } from './PageNumbers';\r\nimport { LocalizationTexts, useLocalization } from '../Provider/Provider';\r\nimport { Select } from '../Select/Select';\r\nimport { Group } from '../Group/Group';\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { usePaginationValues } from './usePagination';\r\nimport { usePaginationShortcuts } from './usePaginationShortcuts';\r\n\r\nexport * from './usePagination';\r\n\r\nexport type PaginationTextsActions = {\r\n /**\r\n * Aria-label for first page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n firstPage: string;\r\n /**\r\n * Aria-label for first page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n firstPageWithShortcut: string;\r\n /**\r\n * Aria-label for next page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n nextPage: string;\r\n /**\r\n * Aria-label for next page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n nextPageWithShortcut: string;\r\n /**\r\n * Aria-label for previous page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n previousPage: string;\r\n /**\r\n * Aria-label for previous page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n previousPageWithShortcut: string;\r\n /**\r\n * Aria-label for last page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n lastPage: string;\r\n /**\r\n * Aria-label for last page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n lastPageWithShortcut: string;\r\n /**\r\n * Aria-label for page X action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n pageX: string;\r\n};\r\n\r\nexport type PaginationTexts = {\r\n /**\r\n * Aria-label provided for page numbers and page actions group.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n label: string;\r\n /**\r\n * Aria-label provided for page size selection.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n pageSize: string;\r\n /**\r\n * Text that indicates the number of the first and last element displayed on the current page, out of total items\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n showingXofYofTotal: string;\r\n /**\r\n * Aria-labels provided for page action buttons.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n actions: PaginationTextsActions;\r\n};\r\n\r\nexport type PaginationProps = React.HTMLAttributes<HTMLDivElement> &\r\n usePaginationValues & {\r\n /** Indicate total number of items that will be paginated */\r\n length: number;\r\n /** Page size options */\r\n pageSizes?: number[];\r\n /** Shows page controls */\r\n showPageControls?: boolean;\r\n /** Shows page numbers between navigation buttons, which allows users to quickly navigate to a specific page */\r\n showPageNumbers?: boolean;\r\n /** Shows a dropdown with page sizes, which allows user to change the number of items displayed on the page */\r\n showPageSize?: boolean;\r\n /** Enable pagination shortcuts */\r\n dangerouslyHijackGlobalKeyboardNavigation?: boolean;\r\n };\r\n\r\nconst getShowingLabel = (length: number, pageIndex: number, pageSize: number, texts: LocalizationTexts): string => {\r\n const minItemIndex = pageIndex * pageSize + 1;\r\n const maxItemIndex = (pageIndex + 1) * pageSize;\r\n\r\n return texts.pagination.showingXofYofTotal\r\n .replace('[X]', length === 0 ? '0' : String(minItemIndex))\r\n .replace('[Y]', String(maxItemIndex > length ? length : maxItemIndex))\r\n .replace('[total]', String(length));\r\n};\r\n\r\nexport const Pagination = React.forwardRef(function Pagination(props: PaginationProps, ref: React.Ref<HTMLDivElement>) {\r\n const {\r\n length,\r\n pageIndex,\r\n pageSize,\r\n pageSizes = [10, 25, 50, 100, 500],\r\n setPageIndex,\r\n setPageSize,\r\n showPageControls = true,\r\n showPageNumbers = true,\r\n showPageSize = true,\r\n dangerouslyHijackGlobalKeyboardNavigation = false,\r\n ...otherProps\r\n } = props;\r\n const { texts } = useLocalization();\r\n\r\n const maxPageIndex = Math.ceil(length / pageSize) - 1;\r\n const showShortcutTexts = dangerouslyHijackGlobalKeyboardNavigation;\r\n\r\n usePaginationShortcuts({\r\n setPageIndex,\r\n maxPageIndex,\r\n pageIndex,\r\n dangerouslyHijackGlobalKeyboardNavigation,\r\n });\r\n\r\n const pageCount = Math.ceil(length / pageSize);\r\n const canPreviousPage = pageIndex > 0;\r\n const canNextPage = pageIndex < pageCount - 1;\r\n\r\n const className = cn('inline-flex relative justify-between items-center', props.className);\r\n\r\n return (\r\n <div {...otherProps} className={className} data-taco=\"pagination\" ref={ref}>\r\n {showPageSize && (\r\n <span className=\"mr-4\">\r\n {getShowingLabel(length, pageIndex, pageSize, texts)}\r\n <Select\r\n aria-label={texts.pagination.pageSize}\r\n className=\"ml-4 !w-20\"\r\n data={pageSizes.map(pageSize => ({\r\n text: String(pageSize),\r\n value: pageSize,\r\n }))}\r\n onChange={event => {\r\n setPageIndex(0);\r\n setPageSize(Number(event.target.value));\r\n }}\r\n value={pageSize}\r\n />\r\n </span>\r\n )}\r\n {showPageControls && (\r\n <Group as=\"nav\" aria-label={texts.pagination.label}>\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canPreviousPage}\r\n icon=\"arrow-start\"\r\n onClick={() => setPageIndex(0)}\r\n aria-label={\r\n showShortcutTexts\r\n ? texts.pagination.actions.firstPageWithShortcut\r\n : texts.pagination.actions.firstPage\r\n }\r\n tooltip={\r\n showShortcutTexts\r\n ? texts.pagination.actions.firstPageWithShortcut\r\n : texts.pagination.actions.firstPage\r\n }\r\n />\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canPreviousPage}\r\n icon=\"arrow-left\"\r\n onClick={() => setPageIndex(pageIndex - 1)}\r\n aria-label={\r\n showShortcutTexts\r\n ? texts.pagination.actions.previousPageWithShortcut\r\n : texts.pagination.actions.previousPage\r\n }\r\n tooltip={\r\n showShortcutTexts\r\n ? texts.pagination.actions.previousPageWithShortcut\r\n : texts.pagination.actions.previousPage\r\n }\r\n />\r\n {showPageNumbers && pageCount > 0 && (\r\n <PageNumbers pageCount={pageCount} currentPageIndex={pageIndex} onClick={setPageIndex} />\r\n )}\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canNextPage}\r\n icon=\"arrow-right\"\r\n onClick={() => setPageIndex(pageIndex + 1)}\r\n aria-label={\r\n showShortcutTexts ? texts.pagination.actions.nextPageWithShortcut : texts.pagination.actions.nextPage\r\n }\r\n tooltip={\r\n showShortcutTexts ? texts.pagination.actions.nextPageWithShortcut : texts.pagination.actions.nextPage\r\n }\r\n />\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canNextPage}\r\n icon=\"arrow-end\"\r\n onClick={() => setPageIndex(pageCount - 1)}\r\n aria-label={\r\n showShortcutTexts ? texts.pagination.actions.lastPageWithShortcut : texts.pagination.actions.lastPage\r\n }\r\n tooltip={\r\n showShortcutTexts ? texts.pagination.actions.lastPageWithShortcut : texts.pagination.actions.lastPage\r\n }\r\n />\r\n </Group>\r\n )}\r\n </div>\r\n );\r\n});\r\n"],"names":["getShowingLabel","length","pageIndex","pageSize","texts","minItemIndex","maxItemIndex","pagination","showingXofYofTotal","replace","String","Pagination","React","props","ref","pageSizes","setPageIndex","setPageSize","showPageControls","showPageNumbers","showPageSize","dangerouslyHijackGlobalKeyboardNavigation","otherProps","useLocalization","maxPageIndex","Math","ceil","showShortcutTexts","usePaginationShortcuts","pageCount","canPreviousPage","canNextPage","className","cn","Select","data","map","text","value","onChange","event","Number","target","Group","as","label","IconButton","appearance","disabled","icon","onClick","actions","firstPageWithShortcut","firstPage","tooltip","previousPageWithShortcut","previousPage","PageNumbers","currentPageIndex","nextPageWithShortcut","nextPage","lastPageWithShortcut","lastPage"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { PageNumbers } from './PageNumbers';\r\nimport { LocalizationTexts, useLocalization } from '../Provider/Provider';\r\nimport { Select } from '../Select/Select';\r\nimport { Group } from '../Group/Group';\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { usePaginationValues } from './usePagination';\r\nimport { usePaginationShortcuts } from './usePaginationShortcuts';\r\n\r\nexport * from './usePagination';\r\n\r\nexport type PaginationTextsActions = {\r\n /**\r\n * Aria-label for first page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n firstPage: string;\r\n /**\r\n * Aria-label for first page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n firstPageWithShortcut: string;\r\n /**\r\n * Aria-label for next page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n nextPage: string;\r\n /**\r\n * Aria-label for next page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n nextPageWithShortcut: string;\r\n /**\r\n * Aria-label for previous page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n previousPage: string;\r\n /**\r\n * Aria-label for previous page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n previousPageWithShortcut: string;\r\n /**\r\n * Aria-label for last page action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n lastPage: string;\r\n /**\r\n * Aria-label for last page action button with shortcut.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n lastPageWithShortcut: string;\r\n /**\r\n * Aria-label for page X action button.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n pageX: string;\r\n};\r\n\r\nexport type PaginationTexts = {\r\n /**\r\n * Aria-label provided for page numbers and page actions group.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n label: string;\r\n /**\r\n * Aria-label provided for page size selection.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n pageSize: string;\r\n /**\r\n * Text that indicates the number of the first and last element displayed on the current page, out of total items\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n showingXofYofTotal: string;\r\n /**\r\n * Aria-labels provided for page action buttons.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n actions: PaginationTextsActions;\r\n};\r\n\r\nexport type PaginationProps = React.HTMLAttributes<HTMLDivElement> &\r\n usePaginationValues & {\r\n /** Indicate total number of items that will be paginated */\r\n length: number;\r\n /** Page size options */\r\n pageSizes?: number[];\r\n /** Shows page controls */\r\n showPageControls?: boolean;\r\n /** Shows page numbers between navigation buttons, which allows users to quickly navigate to a specific page */\r\n showPageNumbers?: boolean;\r\n /** Shows a dropdown with page sizes, which allows user to change the number of items displayed on the page */\r\n showPageSize?: boolean;\r\n /** Enable pagination shortcuts */\r\n dangerouslyHijackGlobalKeyboardNavigation?: boolean;\r\n };\r\n\r\nconst getShowingLabel = (length: number, pageIndex: number, pageSize: number, texts: LocalizationTexts): string => {\r\n const minItemIndex = pageIndex * pageSize + 1;\r\n const maxItemIndex = (pageIndex + 1) * pageSize;\r\n\r\n return texts.pagination.showingXofYofTotal\r\n .replace('[X]', length === 0 ? '0' : String(minItemIndex))\r\n .replace('[Y]', String(maxItemIndex > length ? length : maxItemIndex))\r\n .replace('[total]', String(length));\r\n};\r\n\r\nexport const Pagination = React.forwardRef(function Pagination(props: PaginationProps, ref: React.Ref<HTMLDivElement>) {\r\n const {\r\n length,\r\n pageIndex,\r\n pageSize,\r\n pageSizes = [10, 25, 50, 100, 500],\r\n setPageIndex,\r\n setPageSize,\r\n showPageControls = true,\r\n showPageNumbers = true,\r\n showPageSize = true,\r\n dangerouslyHijackGlobalKeyboardNavigation = false,\r\n ...otherProps\r\n } = props;\r\n const { texts } = useLocalization();\r\n\r\n const maxPageIndex = Math.ceil(length / pageSize) - 1;\r\n const showShortcutTexts = dangerouslyHijackGlobalKeyboardNavigation;\r\n\r\n usePaginationShortcuts({\r\n setPageIndex,\r\n maxPageIndex,\r\n pageIndex,\r\n dangerouslyHijackGlobalKeyboardNavigation,\r\n });\r\n\r\n const pageCount = Math.ceil(length / pageSize);\r\n const canPreviousPage = pageIndex > 0;\r\n const canNextPage = pageIndex < pageCount - 1;\r\n\r\n const className = cn('inline-flex relative justify-between items-center', props.className);\r\n\r\n return (\r\n <div {...otherProps} className={className} data-taco=\"pagination\" ref={ref}>\r\n {showPageSize && (\r\n <span className=\"mr-4\">\r\n {getShowingLabel(length, pageIndex, pageSize, texts)}\r\n <Select\r\n aria-label={texts.pagination.pageSize}\r\n className=\"ml-4 !w-20\"\r\n data={pageSizes.map(pageSize => ({\r\n text: String(pageSize),\r\n value: pageSize,\r\n }))}\r\n onChange={event => {\r\n setPageIndex(0);\r\n setPageSize(Number(event.target.value));\r\n }}\r\n value={pageSize}\r\n />\r\n </span>\r\n )}\r\n {showPageControls && (\r\n <Group as=\"nav\" aria-label={texts.pagination.label}>\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canPreviousPage}\r\n icon=\"arrow-start\"\r\n onClick={() => setPageIndex(0)}\r\n aria-label={\r\n showShortcutTexts\r\n ? texts.pagination.actions.firstPageWithShortcut\r\n : texts.pagination.actions.firstPage\r\n }\r\n tooltip={\r\n showShortcutTexts\r\n ? texts.pagination.actions.firstPageWithShortcut\r\n : texts.pagination.actions.firstPage\r\n }\r\n />\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canPreviousPage}\r\n icon=\"arrow-left\"\r\n onClick={() => setPageIndex(pageIndex - 1)}\r\n aria-label={\r\n showShortcutTexts\r\n ? texts.pagination.actions.previousPageWithShortcut\r\n : texts.pagination.actions.previousPage\r\n }\r\n tooltip={\r\n showShortcutTexts\r\n ? texts.pagination.actions.previousPageWithShortcut\r\n : texts.pagination.actions.previousPage\r\n }\r\n />\r\n {showPageNumbers && pageCount > 0 && (\r\n <PageNumbers pageCount={pageCount} currentPageIndex={pageIndex} onClick={setPageIndex} />\r\n )}\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canNextPage}\r\n icon=\"arrow-right\"\r\n onClick={() => setPageIndex(pageIndex + 1)}\r\n aria-label={\r\n showShortcutTexts ? texts.pagination.actions.nextPageWithShortcut : texts.pagination.actions.nextPage\r\n }\r\n tooltip={\r\n showShortcutTexts ? texts.pagination.actions.nextPageWithShortcut : texts.pagination.actions.nextPage\r\n }\r\n />\r\n <IconButton\r\n appearance=\"default\"\r\n disabled={!canNextPage}\r\n icon=\"arrow-end\"\r\n onClick={() => setPageIndex(pageCount - 1)}\r\n aria-label={\r\n showShortcutTexts ? texts.pagination.actions.lastPageWithShortcut : texts.pagination.actions.lastPage\r\n }\r\n tooltip={\r\n showShortcutTexts ? texts.pagination.actions.lastPageWithShortcut : texts.pagination.actions.lastPage\r\n }\r\n />\r\n </Group>\r\n )}\r\n </div>\r\n );\r\n});\r\n"],"names":["getShowingLabel","length","pageIndex","pageSize","texts","minItemIndex","maxItemIndex","pagination","showingXofYofTotal","replace","String","Pagination","React","props","ref","pageSizes","setPageIndex","setPageSize","showPageControls","showPageNumbers","showPageSize","dangerouslyHijackGlobalKeyboardNavigation","otherProps","useLocalization","maxPageIndex","Math","ceil","showShortcutTexts","usePaginationShortcuts","pageCount","canPreviousPage","canNextPage","className","cn","Select","data","map","text","value","onChange","event","Number","target","Group","as","label","IconButton","appearance","disabled","icon","onClick","actions","firstPageWithShortcut","firstPage","tooltip","previousPageWithShortcut","previousPage","PageNumbers","currentPageIndex","nextPageWithShortcut","nextPage","lastPageWithShortcut","lastPage"],"mappings":"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"}