@carto/meridian-ds 2.0.2-alpha-timeseries.1 → 2.0.2-alpha-external-link.11

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/{Alert-BzEgeyQJ.cjs → Alert-oGAW_syG.cjs} +111 -1
  3. package/dist/{Alert-CnaTtNJd.js → Alert-yL5uEg4Z.js} +113 -3
  4. package/dist/{MenuItem-C1DvWMry.js → MenuItem-C8x-GasJ.js} +1 -1
  5. package/dist/{MenuItem-C4bG5WHw.cjs → MenuItem-CyIdh2wX.cjs} +1 -1
  6. package/dist/{TablePaginationActions-Cz5Hbi6N.js → TablePaginationActions-BWer8cmX.js} +6 -3
  7. package/dist/{TablePaginationActions-mbbjzV6Y.cjs → TablePaginationActions-MwqZJoRm.cjs} +6 -3
  8. package/dist/components/index.cjs +31 -6
  9. package/dist/components/index.js +33 -7
  10. package/dist/theme/index.cjs +2 -2
  11. package/dist/theme/index.js +3 -3
  12. package/dist/types/components/atoms/Button.d.ts +11 -0
  13. package/dist/types/components/atoms/Button.d.ts.map +1 -1
  14. package/dist/types/components/atoms/Link.d.ts +39 -0
  15. package/dist/types/components/atoms/Link.d.ts.map +1 -0
  16. package/dist/types/components/atoms/ScreenReaderOnly.d.ts +3 -0
  17. package/dist/types/components/atoms/ScreenReaderOnly.d.ts.map +1 -0
  18. package/dist/types/components/atoms/index.d.ts +3 -0
  19. package/dist/types/components/atoms/index.d.ts.map +1 -1
  20. package/dist/types/localization/en.d.ts +1 -0
  21. package/dist/types/localization/en.d.ts.map +1 -1
  22. package/dist/types/localization/es.d.ts +1 -0
  23. package/dist/types/localization/es.d.ts.map +1 -1
  24. package/dist/types/localization/id.d.ts +1 -0
  25. package/dist/types/localization/id.d.ts.map +1 -1
  26. package/dist/types/localization/index.d.ts +3 -0
  27. package/dist/types/localization/index.d.ts.map +1 -1
  28. package/dist/types/widgets/comparative/ComparativeCategoryWidgetUI/ComparativeCategoryWidgetUI.d.ts.map +1 -1
  29. package/dist/widgets/index.cjs +5 -5
  30. package/dist/widgets/index.js +5 -5
  31. package/package.json +2 -3
package/CHANGELOG.md CHANGED
@@ -2,10 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- - fix(TimeSeriesWidgetUI): Fix TimeSeriesWidgetUI overflowing available height [#226](https://github.com/CartoDB/meridian-ds/pull/226)
5
+ - New Link components and Button with externalLink behavior [#202](https://github.com/CartoDB/meridian-ds/pull/202)
6
6
 
7
7
  ## 2.0
8
8
 
9
+ ### 2.0.2
10
+
11
+ - fix(TimeSeriesWidgetUI): Fix TimeSeriesWidgetUI overflowing available height [#226](https://github.com/CartoDB/meridian-ds/pull/226)
12
+
9
13
  ### 2.0.1
10
14
 
11
15
  - Autocomplete: fix flooding issue with console message [#225](https://github.com/CartoDB/meridian-ds/pull/225)
@@ -2,7 +2,21 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const React = require("react");
4
4
  const material = require("@mui/material");
5
- const TablePaginationActions = require("./TablePaginationActions-mbbjzV6Y.cjs");
5
+ const reactIntl = require("react-intl");
6
+ const iconsMaterial = require("@mui/icons-material");
7
+ const TablePaginationActions = require("./TablePaginationActions-MwqZJoRm.cjs");
8
+ require("cartocolor");
9
+ const ScreenReaderOnly = material.styled("span")(() => ({
10
+ position: "absolute",
11
+ width: 1,
12
+ height: 1,
13
+ padding: 0,
14
+ margin: -1,
15
+ overflow: "hidden",
16
+ clip: "rect(0, 0, 0, 0)",
17
+ whiteSpace: "nowrap",
18
+ border: 0
19
+ }));
6
20
  const Option = material.styled("div")(({ theme }) => ({
7
21
  position: "relative",
8
22
  display: "inline-flex",
@@ -61,6 +75,100 @@ function _IconButton({
61
75
  ) });
62
76
  }
63
77
  const IconButton = React.forwardRef(_IconButton);
78
+ const StyledLink = material.styled(material.Link)(() => ({
79
+ display: "inline-block"
80
+ }));
81
+ const Icon = material.styled("span", {
82
+ shouldForwardProp: (prop) => prop !== "variant" && prop !== "iconPosition"
83
+ })(
84
+ ({ variant, iconPosition }) => ({
85
+ display: "inline-flex",
86
+ position: "relative",
87
+ top: "calc(1em * 5/32)",
88
+ // heuristic to align icon with true perceived baseline (25% offset ratio)
89
+ ...iconPosition === "right" && {
90
+ marginLeft: "0.25em"
91
+ },
92
+ ...iconPosition === "left" && {
93
+ marginRight: "0.25em"
94
+ },
95
+ svg: {
96
+ // Size adapts to the text size, but make sure the icon size is at least 12px
97
+ fontSize: `max(1em, ${TablePaginationActions.ICON_SIZE_SMALL})`,
98
+ color: "inherit !important",
99
+ "> path": {
100
+ color: "inherit !important"
101
+ }
102
+ },
103
+ // Caption and undefined variants use smaller offset and smaller icon
104
+ ...variant === "caption" && {
105
+ top: "calc(1em * 1/5)",
106
+ // 20% offset ratio
107
+ svg: {
108
+ fontSize: TablePaginationActions.ICON_SIZE_SMALL
109
+ }
110
+ },
111
+ // Button and body2 variants use medium-sized icons
112
+ ...(variant === "button" || variant === "body2") && {
113
+ top: "calc(1em * 1/4)",
114
+ // 25% offset ratio
115
+ svg: {
116
+ fontSize: TablePaginationActions.ICON_SIZE_MEDIUM
117
+ }
118
+ },
119
+ // Body1 variant uses large icons
120
+ ...variant === "body1" && {
121
+ top: "calc(1em * 1/3)",
122
+ // 33% offset ratio
123
+ svg: {
124
+ fontSize: TablePaginationActions.ICON_SIZE_LARGE
125
+ }
126
+ }
127
+ })
128
+ );
129
+ function _Link({
130
+ children,
131
+ variant,
132
+ startIcon,
133
+ endIcon,
134
+ color,
135
+ external,
136
+ showExternalIcon = true,
137
+ fontWeight = 500,
138
+ target,
139
+ rel,
140
+ "aria-describedby": ariaDescribedby,
141
+ ...otherProps
142
+ }, ref) {
143
+ const intl = reactIntl.useIntl();
144
+ const intlConfig = TablePaginationActions.useImperativeIntl(intl);
145
+ const isButtonLink = otherProps.component === "button";
146
+ return /* @__PURE__ */ jsxRuntime.jsxs(
147
+ StyledLink,
148
+ {
149
+ ...otherProps,
150
+ variant,
151
+ fontWeight,
152
+ "data-color": color,
153
+ "data-name": isButtonLink ? "button-link" : "link",
154
+ role: isButtonLink ? "button" : "link",
155
+ color,
156
+ ref,
157
+ target: external ? "_blank" : target,
158
+ rel: external ? "noopener noreferrer" : rel,
159
+ "aria-describedby": external ? "external-hint" : ariaDescribedby,
160
+ children: [
161
+ startIcon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { variant, iconPosition: "left", children: startIcon }),
162
+ children,
163
+ (endIcon || external && showExternalIcon) && /* @__PURE__ */ jsxRuntime.jsx(Icon, { variant, iconPosition: "right", children: endIcon || /* @__PURE__ */ jsxRuntime.jsx(iconsMaterial.OpenInNewOutlined, {}) }),
164
+ external && /* @__PURE__ */ jsxRuntime.jsx(ScreenReaderOnly, { id: "external-hint", children: ` (${intlConfig.formatMessage({
165
+ id: "c4r.button.opensInNewTab"
166
+ })})` })
167
+ ]
168
+ }
169
+ );
170
+ }
171
+ const Link = React.forwardRef(_Link);
64
172
  const StyledAlert = material.styled(material.Alert, {
65
173
  shouldForwardProp: (prop) => ![
66
174
  "isNeutral",
@@ -190,3 +298,5 @@ function _Alert({
190
298
  const Alert = React.forwardRef(_Alert);
191
299
  exports.Alert = Alert;
192
300
  exports.IconButton = IconButton;
301
+ exports.Link = Link;
302
+ exports.ScreenReaderOnly = ScreenReaderOnly;
@@ -1,7 +1,21 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useState } from "react";
3
- import { styled, IconButton as IconButton$1, Tooltip, CircularProgress, Alert as Alert$1, Fade, AlertTitle } from "@mui/material";
4
- import { b as ICON_SIZE_MEDIUM, T as Typography } from "./TablePaginationActions-Cz5Hbi6N.js";
3
+ import { styled, IconButton as IconButton$1, Tooltip, CircularProgress, Link as Link$1, Alert as Alert$1, Fade, AlertTitle } from "@mui/material";
4
+ import { useIntl } from "react-intl";
5
+ import { OpenInNewOutlined } from "@mui/icons-material";
6
+ import { c as ICON_SIZE_SMALL, b as ICON_SIZE_MEDIUM, I as ICON_SIZE_LARGE, u as useImperativeIntl, T as Typography } from "./TablePaginationActions-BWer8cmX.js";
7
+ import "cartocolor";
8
+ const ScreenReaderOnly = styled("span")(() => ({
9
+ position: "absolute",
10
+ width: 1,
11
+ height: 1,
12
+ padding: 0,
13
+ margin: -1,
14
+ overflow: "hidden",
15
+ clip: "rect(0, 0, 0, 0)",
16
+ whiteSpace: "nowrap",
17
+ border: 0
18
+ }));
5
19
  const Option = styled("div")(({ theme }) => ({
6
20
  position: "relative",
7
21
  display: "inline-flex",
@@ -60,6 +74,100 @@ function _IconButton({
60
74
  ) });
61
75
  }
62
76
  const IconButton = forwardRef(_IconButton);
77
+ const StyledLink = styled(Link$1)(() => ({
78
+ display: "inline-block"
79
+ }));
80
+ const Icon = styled("span", {
81
+ shouldForwardProp: (prop) => prop !== "variant" && prop !== "iconPosition"
82
+ })(
83
+ ({ variant, iconPosition }) => ({
84
+ display: "inline-flex",
85
+ position: "relative",
86
+ top: "calc(1em * 5/32)",
87
+ // heuristic to align icon with true perceived baseline (25% offset ratio)
88
+ ...iconPosition === "right" && {
89
+ marginLeft: "0.25em"
90
+ },
91
+ ...iconPosition === "left" && {
92
+ marginRight: "0.25em"
93
+ },
94
+ svg: {
95
+ // Size adapts to the text size, but make sure the icon size is at least 12px
96
+ fontSize: `max(1em, ${ICON_SIZE_SMALL})`,
97
+ color: "inherit !important",
98
+ "> path": {
99
+ color: "inherit !important"
100
+ }
101
+ },
102
+ // Caption and undefined variants use smaller offset and smaller icon
103
+ ...variant === "caption" && {
104
+ top: "calc(1em * 1/5)",
105
+ // 20% offset ratio
106
+ svg: {
107
+ fontSize: ICON_SIZE_SMALL
108
+ }
109
+ },
110
+ // Button and body2 variants use medium-sized icons
111
+ ...(variant === "button" || variant === "body2") && {
112
+ top: "calc(1em * 1/4)",
113
+ // 25% offset ratio
114
+ svg: {
115
+ fontSize: ICON_SIZE_MEDIUM
116
+ }
117
+ },
118
+ // Body1 variant uses large icons
119
+ ...variant === "body1" && {
120
+ top: "calc(1em * 1/3)",
121
+ // 33% offset ratio
122
+ svg: {
123
+ fontSize: ICON_SIZE_LARGE
124
+ }
125
+ }
126
+ })
127
+ );
128
+ function _Link({
129
+ children,
130
+ variant,
131
+ startIcon,
132
+ endIcon,
133
+ color,
134
+ external,
135
+ showExternalIcon = true,
136
+ fontWeight = 500,
137
+ target,
138
+ rel,
139
+ "aria-describedby": ariaDescribedby,
140
+ ...otherProps
141
+ }, ref) {
142
+ const intl = useIntl();
143
+ const intlConfig = useImperativeIntl(intl);
144
+ const isButtonLink = otherProps.component === "button";
145
+ return /* @__PURE__ */ jsxs(
146
+ StyledLink,
147
+ {
148
+ ...otherProps,
149
+ variant,
150
+ fontWeight,
151
+ "data-color": color,
152
+ "data-name": isButtonLink ? "button-link" : "link",
153
+ role: isButtonLink ? "button" : "link",
154
+ color,
155
+ ref,
156
+ target: external ? "_blank" : target,
157
+ rel: external ? "noopener noreferrer" : rel,
158
+ "aria-describedby": external ? "external-hint" : ariaDescribedby,
159
+ children: [
160
+ startIcon && /* @__PURE__ */ jsx(Icon, { variant, iconPosition: "left", children: startIcon }),
161
+ children,
162
+ (endIcon || external && showExternalIcon) && /* @__PURE__ */ jsx(Icon, { variant, iconPosition: "right", children: endIcon || /* @__PURE__ */ jsx(OpenInNewOutlined, {}) }),
163
+ external && /* @__PURE__ */ jsx(ScreenReaderOnly, { id: "external-hint", children: ` (${intlConfig.formatMessage({
164
+ id: "c4r.button.opensInNewTab"
165
+ })})` })
166
+ ]
167
+ }
168
+ );
169
+ }
170
+ const Link = forwardRef(_Link);
63
171
  const StyledAlert = styled(Alert$1, {
64
172
  shouldForwardProp: (prop) => ![
65
173
  "isNeutral",
@@ -189,5 +297,7 @@ function _Alert({
189
297
  const Alert = forwardRef(_Alert);
190
298
  export {
191
299
  Alert as A,
192
- IconButton as I
300
+ IconButton as I,
301
+ Link as L,
302
+ ScreenReaderOnly as S
193
303
  };
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { styled, MenuItem as MenuItem$1 } from "@mui/material";
4
- import { e as MENU_ITEM_SIZE_DENSE, f as MENU_ITEM_SIZE_EXTENDED } from "./TablePaginationActions-Cz5Hbi6N.js";
4
+ import { e as MENU_ITEM_SIZE_DENSE, f as MENU_ITEM_SIZE_EXTENDED } from "./TablePaginationActions-BWer8cmX.js";
5
5
  const StyledMenuItem = styled(MenuItem$1, {
6
6
  shouldForwardProp: (prop) => !["subtitle", "destructive", "extended", "fixed", "iconColor"].includes(
7
7
  prop
@@ -2,7 +2,7 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const React = require("react");
4
4
  const material = require("@mui/material");
5
- const TablePaginationActions = require("./TablePaginationActions-mbbjzV6Y.cjs");
5
+ const TablePaginationActions = require("./TablePaginationActions-MwqZJoRm.cjs");
6
6
  const StyledMenuItem = material.styled(material.MenuItem, {
7
7
  shouldForwardProp: (prop) => !["subtitle", "destructive", "extended", "fixed", "iconColor"].includes(
8
8
  prop
@@ -817,7 +817,8 @@ const en = {
817
817
  copy: "Copy",
818
818
  save: "Save",
819
819
  add: "Add",
820
- showOptions: "Show options"
820
+ showOptions: "Show options",
821
+ opensInNewTab: "Opens in new tab"
821
822
  },
822
823
  form: {
823
824
  selectAll: "Select all",
@@ -965,7 +966,8 @@ const es = {
965
966
  copy: "Copiar",
966
967
  save: "Guardar",
967
968
  add: "Añadir",
968
- showOptions: "Mostrar opciones"
969
+ showOptions: "Mostrar opciones",
970
+ opensInNewTab: "Abre en una nueva pestaña"
969
971
  },
970
972
  form: {
971
973
  selectAll: "Seleccionar todos",
@@ -1111,7 +1113,8 @@ const id = {
1111
1113
  copy: "Salin",
1112
1114
  save: "Simpan",
1113
1115
  add: "Tambah",
1114
- showOptions: "Tampilkan opsi"
1116
+ showOptions: "Tampilkan opsi",
1117
+ opensInNewTab: "Buka di tab baru"
1115
1118
  },
1116
1119
  form: {
1117
1120
  selectAll: "Select all",
@@ -818,7 +818,8 @@ const en = {
818
818
  copy: "Copy",
819
819
  save: "Save",
820
820
  add: "Add",
821
- showOptions: "Show options"
821
+ showOptions: "Show options",
822
+ opensInNewTab: "Opens in new tab"
822
823
  },
823
824
  form: {
824
825
  selectAll: "Select all",
@@ -966,7 +967,8 @@ const es = {
966
967
  copy: "Copiar",
967
968
  save: "Guardar",
968
969
  add: "Añadir",
969
- showOptions: "Mostrar opciones"
970
+ showOptions: "Mostrar opciones",
971
+ opensInNewTab: "Abre en una nueva pestaña"
970
972
  },
971
973
  form: {
972
974
  selectAll: "Seleccionar todos",
@@ -1112,7 +1114,8 @@ const id = {
1112
1114
  copy: "Salin",
1113
1115
  save: "Simpan",
1114
1116
  add: "Tambah",
1115
- showOptions: "Tampilkan opsi"
1117
+ showOptions: "Tampilkan opsi",
1118
+ opensInNewTab: "Buka di tab baru"
1116
1119
  },
1117
1120
  form: {
1118
1121
  selectAll: "Select all",
@@ -2,15 +2,15 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
+ const reactIntl = require("react-intl");
5
6
  const material = require("@mui/material");
6
- const TablePaginationActions = require("../TablePaginationActions-mbbjzV6Y.cjs");
7
+ const iconsMaterial = require("@mui/icons-material");
8
+ const TablePaginationActions = require("../TablePaginationActions-MwqZJoRm.cjs");
9
+ const Alert$1 = require("../Alert-oGAW_syG.cjs");
7
10
  const ArrowDown = require("../ArrowDown-DJ0vhbsw.cjs");
8
11
  const OpenDiagonallyRight = require("../OpenDiagonallyRight-CpL4ROwg.cjs");
9
- const reactIntl = require("react-intl");
10
- const iconsMaterial = require("@mui/icons-material");
11
- const Alert$1 = require("../Alert-BzEgeyQJ.cjs");
12
12
  require("cartocolor");
13
- const MenuItem = require("../MenuItem-C4bG5WHw.cjs");
13
+ const MenuItem = require("../MenuItem-CyIdh2wX.cjs");
14
14
  const reactWindow = require("react-window");
15
15
  const DatePicker$1 = require("@mui/x-date-pickers/DatePicker");
16
16
  const xDatePickers = require("@mui/x-date-pickers");
@@ -62,10 +62,16 @@ function _Button({
62
62
  startIcon,
63
63
  endIcon,
64
64
  loadingPosition,
65
+ external,
66
+ showExternalIcon = true,
67
+ "aria-describedby": ariaDescribedby,
65
68
  ...otherProps
66
69
  }, ref) {
70
+ const intl = reactIntl.useIntl();
71
+ const intlConfig = TablePaginationActions.useImperativeIntl(intl);
67
72
  const defaultIconLoader = /* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { size: 18, color: "inherit" });
68
73
  const isDefaultLoading = loading && loadingPosition === void 0;
74
+ const isExternalLink = otherProps.href && external;
69
75
  const renderContent = () => {
70
76
  if (isDefaultLoading) {
71
77
  return /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: { position: "relative" }, children: [
@@ -73,6 +79,14 @@ function _Button({
73
79
  /* @__PURE__ */ jsxRuntime.jsx(HiddenText, { children })
74
80
  ] });
75
81
  }
82
+ if (isExternalLink) {
83
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
84
+ children,
85
+ /* @__PURE__ */ jsxRuntime.jsx(Alert$1.ScreenReaderOnly, { id: "external-hint", children: `(${intlConfig.formatMessage({
86
+ id: "c4r.button.opensInNewTab"
87
+ })})` })
88
+ ] });
89
+ }
76
90
  return children;
77
91
  };
78
92
  const getIconForPosition = (position) => {
@@ -85,7 +99,11 @@ function _Button({
85
99
  }
86
100
  return void 0;
87
101
  }
88
- return position === "start" ? startIcon : endIcon;
102
+ if (position === "start") {
103
+ return startIcon;
104
+ } else {
105
+ return endIcon || (isExternalLink && showExternalIcon ? /* @__PURE__ */ jsxRuntime.jsx(iconsMaterial.OpenInNewOutlined, {}) : void 0);
106
+ }
89
107
  };
90
108
  return /* @__PURE__ */ jsxRuntime.jsx(
91
109
  material.Button,
@@ -95,7 +113,12 @@ function _Button({
95
113
  endIcon: getIconForPosition("end"),
96
114
  ...otherProps,
97
115
  role: otherProps.href ? "link" : "button",
116
+ ...isExternalLink && {
117
+ target: "_blank",
118
+ rel: "noopener noreferrer"
119
+ },
98
120
  ref,
121
+ "aria-describedby": isExternalLink ? "external-hint" : ariaDescribedby,
99
122
  children: /* @__PURE__ */ jsxRuntime.jsx(TablePaginationActions.Typography, { variant: "inherit", color: "inherit", noWrap: true, component: "span", children: renderContent() })
100
123
  }
101
124
  );
@@ -5059,6 +5082,8 @@ exports.TablePaginationActions = TablePaginationActions.TablePaginationActions;
5059
5082
  exports.Typography = TablePaginationActions.Typography;
5060
5083
  exports.Alert = Alert$1.Alert;
5061
5084
  exports.IconButton = Alert$1.IconButton;
5085
+ exports.Link = Alert$1.Link;
5086
+ exports.ScreenReaderOnly = Alert$1.ScreenReaderOnly;
5062
5087
  exports.MenuItem = MenuItem.MenuItem;
5063
5088
  exports.AUTOCOMPLETE_GROUP_HEADER_PROPERTY = AUTOCOMPLETE_GROUP_HEADER_PROPERTY;
5064
5089
  exports.AccordionGroup = AccordionGroup;
@@ -1,15 +1,16 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import React, { forwardRef, useState, useRef, useEffect, useMemo, createElement, Fragment as Fragment$1, useCallback, useImperativeHandle } from "react";
3
+ import { useIntl } from "react-intl";
3
4
  import { styled, Box, Button as Button$1, CircularProgress, Popper, Grow, Paper, ClickAwayListener, MenuList as MenuList$1, MenuItem, ButtonGroup as ButtonGroup$1, TextField, InputAdornment, IconButton, Tooltip, Select, FormControl, InputLabel, FormHelperText, ToggleButtonGroup as ToggleButtonGroup$1, Menu as Menu$2, Link, Checkbox, ListItemText, Autocomplete as Autocomplete$1, Divider, ListItemIcon, createFilterOptions, Accordion, AccordionSummary, AccordionDetails, Avatar as Avatar$1, Snackbar as Snackbar$1, Portal, Fade, Slide, alpha, useTheme, Toolbar, AppBar as AppBar$1, Dialog as Dialog$1, DialogTitle as DialogTitle$1, Chip, DialogContent as DialogContent$1, DialogActions as DialogActions$1 } from "@mui/material";
4
- import { T as Typography, c as ICON_SIZE_SMALL, u as useImperativeIntl, f as MENU_ITEM_SIZE_EXTENDED, e as MENU_ITEM_SIZE_DENSE, d as MENU_LIST_MAX_SIZE, M as MENU_ITEM_SIZE_DEFAULT, N as NOTIFICATION_DURATION_IN_MS, A as APPBAR_SIZE } from "../TablePaginationActions-Cz5Hbi6N.js";
5
- import { a } from "../TablePaginationActions-Cz5Hbi6N.js";
5
+ import { OpenInNewOutlined, VisibilityOffOutlined, VisibilityOutlined, Cancel, AddCircleOutlineOutlined, ContentCopyOutlined, CloseOutlined, MenuOutlined, HelpOutline, TodayOutlined, MoreVertOutlined, ErrorOutline, Check } from "@mui/icons-material";
6
+ import { u as useImperativeIntl, T as Typography, c as ICON_SIZE_SMALL, f as MENU_ITEM_SIZE_EXTENDED, e as MENU_ITEM_SIZE_DENSE, d as MENU_LIST_MAX_SIZE, M as MENU_ITEM_SIZE_DEFAULT, N as NOTIFICATION_DURATION_IN_MS, A as APPBAR_SIZE } from "../TablePaginationActions-BWer8cmX.js";
7
+ import { a } from "../TablePaginationActions-BWer8cmX.js";
8
+ import { S as ScreenReaderOnly, I as IconButton$1, A as Alert$1 } from "../Alert-yL5uEg4Z.js";
9
+ import { L } from "../Alert-yL5uEg4Z.js";
6
10
  import { A as ArrowDown } from "../ArrowDown-d6bxUL0F.js";
7
11
  import { A as ArrowUp, O as OpenDiagonallyRight, C as CloseDiagonallyRight } from "../OpenDiagonallyRight-CGdCEXlF.js";
8
- import { useIntl } from "react-intl";
9
- import { VisibilityOffOutlined, VisibilityOutlined, Cancel, AddCircleOutlineOutlined, ContentCopyOutlined, CloseOutlined, MenuOutlined, HelpOutline, TodayOutlined, MoreVertOutlined, ErrorOutline, Check } from "@mui/icons-material";
10
- import { I as IconButton$1, A as Alert$1 } from "../Alert-CnaTtNJd.js";
11
12
  import "cartocolor";
12
- import { M as MenuItem$1 } from "../MenuItem-C1DvWMry.js";
13
+ import { M as MenuItem$1 } from "../MenuItem-C8x-GasJ.js";
13
14
  import { FixedSizeList } from "react-window";
14
15
  import { DatePicker as DatePicker$1 } from "@mui/x-date-pickers/DatePicker";
15
16
  import { PickersDay as PickersDay$1 } from "@mui/x-date-pickers";
@@ -61,10 +62,16 @@ function _Button({
61
62
  startIcon,
62
63
  endIcon,
63
64
  loadingPosition,
65
+ external,
66
+ showExternalIcon = true,
67
+ "aria-describedby": ariaDescribedby,
64
68
  ...otherProps
65
69
  }, ref) {
70
+ const intl = useIntl();
71
+ const intlConfig = useImperativeIntl(intl);
66
72
  const defaultIconLoader = /* @__PURE__ */ jsx(CircularProgress, { size: 18, color: "inherit" });
67
73
  const isDefaultLoading = loading && loadingPosition === void 0;
74
+ const isExternalLink = otherProps.href && external;
68
75
  const renderContent = () => {
69
76
  if (isDefaultLoading) {
70
77
  return /* @__PURE__ */ jsxs(Box, { sx: { position: "relative" }, children: [
@@ -72,6 +79,14 @@ function _Button({
72
79
  /* @__PURE__ */ jsx(HiddenText, { children })
73
80
  ] });
74
81
  }
82
+ if (isExternalLink) {
83
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
84
+ children,
85
+ /* @__PURE__ */ jsx(ScreenReaderOnly, { id: "external-hint", children: `(${intlConfig.formatMessage({
86
+ id: "c4r.button.opensInNewTab"
87
+ })})` })
88
+ ] });
89
+ }
75
90
  return children;
76
91
  };
77
92
  const getIconForPosition = (position) => {
@@ -84,7 +99,11 @@ function _Button({
84
99
  }
85
100
  return void 0;
86
101
  }
87
- return position === "start" ? startIcon : endIcon;
102
+ if (position === "start") {
103
+ return startIcon;
104
+ } else {
105
+ return endIcon || (isExternalLink && showExternalIcon ? /* @__PURE__ */ jsx(OpenInNewOutlined, {}) : void 0);
106
+ }
88
107
  };
89
108
  return /* @__PURE__ */ jsx(
90
109
  Button$1,
@@ -94,7 +113,12 @@ function _Button({
94
113
  endIcon: getIconForPosition("end"),
95
114
  ...otherProps,
96
115
  role: otherProps.href ? "link" : "button",
116
+ ...isExternalLink && {
117
+ target: "_blank",
118
+ rel: "noopener noreferrer"
119
+ },
97
120
  ref,
121
+ "aria-describedby": isExternalLink ? "external-hint" : ariaDescribedby,
98
122
  children: /* @__PURE__ */ jsx(Typography, { variant: "inherit", color: "inherit", noWrap: true, component: "span", children: renderContent() })
99
123
  }
100
124
  );
@@ -5089,6 +5113,7 @@ export {
5089
5113
  DialogStepper,
5090
5114
  IconButton$1 as IconButton,
5091
5115
  LabelWithIndicator,
5116
+ L as Link,
5092
5117
  Menu$1 as Menu,
5093
5118
  MenuItem$1 as MenuItem,
5094
5119
  MenuItemFilter,
@@ -5096,6 +5121,7 @@ export {
5096
5121
  MultipleAutocomplete,
5097
5122
  MultipleSelectField,
5098
5123
  PasswordField,
5124
+ ScreenReaderOnly,
5099
5125
  SelectField,
5100
5126
  Snackbar,
5101
5127
  SplitButton,
@@ -3,11 +3,11 @@ var _a, _b, _c, _d, _e, _f, _g, _h;
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const material = require("@mui/material");
5
5
  const jsxRuntime = require("react/jsx-runtime");
6
- const TablePaginationActions = require("../TablePaginationActions-mbbjzV6Y.cjs");
6
+ const TablePaginationActions = require("../TablePaginationActions-MwqZJoRm.cjs");
7
7
  const iconsMaterial = require("@mui/icons-material");
8
8
  const ArrowDown = require("../ArrowDown-DJ0vhbsw.cjs");
9
9
  const xDatePickers = require("@mui/x-date-pickers");
10
- const MenuItem = require("../MenuItem-C4bG5WHw.cjs");
10
+ const MenuItem = require("../MenuItem-CyIdh2wX.cjs");
11
11
  const paletteUtils = require("../paletteUtils-B9ybmwiI.cjs");
12
12
  const tooltipArrowSize = 1;
13
13
  const tooltipSeparation = 0.5;
@@ -1,12 +1,12 @@
1
1
  var _a, _b, _c, _d, _e, _f, _g, _h;
2
2
  import { alpha, Tooltip, responsiveFontSizes, createTheme } from "@mui/material";
3
3
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
4
- import { T as Typography, a as TablePaginationActions, I as ICON_SIZE_LARGE, b as ICON_SIZE_MEDIUM, c as ICON_SIZE_SMALL, g as getSpacing, M as MENU_ITEM_SIZE_DEFAULT, d as MENU_LIST_MAX_SIZE, e as MENU_ITEM_SIZE_DENSE, A as APPBAR_SIZE, B as BREAKPOINTS, S as SPACING } from "../TablePaginationActions-Cz5Hbi6N.js";
5
- import { f, N } from "../TablePaginationActions-Cz5Hbi6N.js";
4
+ import { T as Typography, a as TablePaginationActions, I as ICON_SIZE_LARGE, b as ICON_SIZE_MEDIUM, c as ICON_SIZE_SMALL, g as getSpacing, M as MENU_ITEM_SIZE_DEFAULT, d as MENU_LIST_MAX_SIZE, e as MENU_ITEM_SIZE_DENSE, A as APPBAR_SIZE, B as BREAKPOINTS, S as SPACING } from "../TablePaginationActions-BWer8cmX.js";
5
+ import { f, N } from "../TablePaginationActions-BWer8cmX.js";
6
6
  import { Cancel, EventOutlined, ChevronRightOutlined, ChevronLeftOutlined, ExpandMoreOutlined, CheckCircleOutlined } from "@mui/icons-material";
7
7
  import { A as ArrowDown } from "../ArrowDown-d6bxUL0F.js";
8
8
  import { renderDigitalClockTimeView } from "@mui/x-date-pickers";
9
- import { M as MenuItem } from "../MenuItem-C1DvWMry.js";
9
+ import { M as MenuItem } from "../MenuItem-C8x-GasJ.js";
10
10
  import { c as commonPalette } from "../paletteUtils-BHqJlHm9.js";
11
11
  import { g } from "../paletteUtils-BHqJlHm9.js";
12
12
  const tooltipArrowSize = 1;
@@ -9,6 +9,17 @@ export type ButtonProps = MUIButtonProps<React.ElementType, {
9
9
  * - 'end': Shows spinner at the end position, replacing the endIcon
10
10
  */
11
11
  loadingPosition?: 'start' | 'end';
12
+ /**
13
+ * Whether the button is external. If true, the button will open in a new tab.
14
+ * Needs to have a href prop to be considered external.
15
+ */
16
+ external?: boolean;
17
+ /**
18
+ * Whether to show the external icon when external is true. Defaults to true.
19
+ * Needs to have a href prop to be considered external.
20
+ */
21
+ showExternalIcon?: boolean;
22
+ 'aria-describedby'?: string;
12
23
  }>;
13
24
  declare const Button: import('react').ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
14
25
  export default Button;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,IAAI,cAAc,EAK9B,MAAM,eAAe,CAAA;AAmBtB,MAAM,MAAM,WAAW,GAAG,cAAc,CACtC,KAAK,CAAC,WAAW,EACjB;IACE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAClC,CACF,CAAA;AAoED,QAAA,MAAM,MAAM,wHAAsB,CAAA;AAClC,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,IAAI,cAAc,EAK9B,MAAM,eAAe,CAAA;AAuBtB,MAAM,MAAM,WAAW,GAAG,cAAc,CACtC,KAAK,CAAC,WAAW,EACjB;IACE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CACF,CAAA;AAoGD,QAAA,MAAM,MAAM,wHAAsB,CAAA;AAClC,eAAe,MAAM,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { LinkProps as MUILinkProps } from '@mui/material';
2
+ export type LinkProps = MUILinkProps<React.ElementType, {
3
+ endIcon?: React.ReactNode;
4
+ startIcon?: React.ReactNode;
5
+ /**
6
+ * Whether the link is external. If true, the link will open in a new tab.
7
+ */
8
+ external?: boolean;
9
+ /**
10
+ * Whether to show the external icon when external is true. Defaults to true.
11
+ */
12
+ showExternalIcon?: boolean;
13
+ /**
14
+ * For target="_blank", use the `external` prop instead for better consistency and accessibility.
15
+ *
16
+ * Instead of: `<Link target="_blank" rel="noopener noreferrer" href="...">Link text</Link>`
17
+ *
18
+ * Use: `<Link external href="...">Link text</Link>`
19
+ *
20
+ * The `external` prop automatically handles target="_blank", rel="noopener noreferrer",
21
+ * and adds proper accessibility attributes and visual indicators.
22
+ */
23
+ target?: string;
24
+ /**
25
+ * For rel="noopener noreferrer", use the `external` prop instead for better consistency and accessibility.
26
+ *
27
+ * Instead of: `<Link target="_blank" rel="noopener noreferrer" href="...">Link text</Link>`
28
+ *
29
+ * Use: `<Link external href="...">Link text</Link>`
30
+ *
31
+ * The `external` prop automatically handles target="_blank", rel="noopener noreferrer",
32
+ * and adds proper accessibility attributes and visual indicators.
33
+ */
34
+ rel?: string;
35
+ 'aria-describedby'?: string;
36
+ }>;
37
+ declare const Link: import('react').ForwardRefExoticComponent<Omit<LinkProps, "ref"> & import('react').RefAttributes<HTMLAnchorElement>>;
38
+ export default Link;
39
+ //# sourceMappingURL=Link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/Link.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,IAAI,YAAY,EAG1B,MAAM,eAAe,CAAA;AAkEtB,MAAM,MAAM,SAAS,GAAG,YAAY,CAClC,KAAK,CAAC,WAAW,EACjB;IACE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CACF,CAAA;AA6DD,QAAA,MAAM,IAAI,sHAAoB,CAAA;AAC9B,eAAe,IAAI,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const ScreenReaderOnly: import('@emotion/styled').StyledComponent<import('@mui/system').MUIStyledCommonProps<import('@mui/material').Theme>, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
2
+ export default ScreenReaderOnly;
3
+ //# sourceMappingURL=ScreenReaderOnly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenReaderOnly.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/ScreenReaderOnly.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,gBAAgB,+NAUnB,CAAA;AAEH,eAAe,gBAAgB,CAAA"}
@@ -6,6 +6,8 @@ export { default as SelectField } from './SelectField';
6
6
  export { default as ToggleButtonGroup } from './ToggleButtonGroup';
7
7
  export { default as Typography } from './Typography';
8
8
  export { default as IconButton } from './IconButton';
9
+ export { default as Link } from './Link';
10
+ export { default as ScreenReaderOnly } from './ScreenReaderOnly';
9
11
  export type * from './Button';
10
12
  export type * from './SplitButton';
11
13
  export type * from './LabelWithIndicator';
@@ -14,4 +16,5 @@ export type * from './SelectField';
14
16
  export type * from './ToggleButtonGroup';
15
17
  export type * from './Typography';
16
18
  export type * from './IconButton';
19
+ export type * from './Link';
17
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AAEpD,mBAAmB,UAAU,CAAA;AAC7B,mBAAmB,eAAe,CAAA;AAClC,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,iBAAiB,CAAA;AACpC,mBAAmB,eAAe,CAAA;AAClC,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,cAAc,CAAA;AACjC,mBAAmB,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEhE,mBAAmB,UAAU,CAAA;AAC7B,mBAAmB,eAAe,CAAA;AAClC,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,iBAAiB,CAAA;AACpC,mBAAmB,eAAe,CAAA;AAClC,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,cAAc,CAAA;AACjC,mBAAmB,cAAc,CAAA;AACjC,mBAAmB,QAAQ,CAAA"}
@@ -10,6 +10,7 @@ declare const _default: {
10
10
  save: string;
11
11
  add: string;
12
12
  showOptions: string;
13
+ opensInNewTab: string;
13
14
  };
14
15
  form: {
15
16
  selectAll: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/localization/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAsJ0B"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/localization/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAuJ0B"}
@@ -10,6 +10,7 @@ declare const _default: {
10
10
  save: string;
11
11
  add: string;
12
12
  showOptions: string;
13
+ opensInNewTab: string;
13
14
  };
14
15
  form: {
15
16
  selectAll: string;
@@ -1 +1 @@
1
- {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../../src/localization/es.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAwJ0B"}
1
+ {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../../src/localization/es.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAyJ0B"}
@@ -10,6 +10,7 @@ declare const _default: {
10
10
  save: string;
11
11
  add: string;
12
12
  showOptions: string;
13
+ opensInNewTab: string;
13
14
  };
14
15
  form: {
15
16
  selectAll: string;
@@ -1 +1 @@
1
- {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../src/localization/id.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAsJ0B"}
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../src/localization/id.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAuJ0B"}
@@ -11,6 +11,7 @@ export declare const messages: {
11
11
  save: string;
12
12
  add: string;
13
13
  showOptions: string;
14
+ opensInNewTab: string;
14
15
  };
15
16
  form: {
16
17
  selectAll: string;
@@ -159,6 +160,7 @@ export declare const messages: {
159
160
  save: string;
160
161
  add: string;
161
162
  showOptions: string;
163
+ opensInNewTab: string;
162
164
  };
163
165
  form: {
164
166
  selectAll: string;
@@ -305,6 +307,7 @@ export declare const messages: {
305
307
  save: string;
306
308
  add: string;
307
309
  showOptions: string;
310
+ opensInNewTab: string;
308
311
  };
309
312
  form: {
310
313
  selectAll: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/localization/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/localization/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComparativeCategoryWidgetUI.d.ts","sourceRoot":"","sources":["../../../../../src/widgets/comparative/ComparativeCategoryWidgetUI/ComparativeCategoryWidgetUI.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,UAAU,EAAwB,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAU1E,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,EAAE,YAAY,EAAE,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,0BAA0B,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC3D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,EAClD,KAA+B,EAC/B,IAAsC,EACtC,MAAgC,EAChC,MAAgC,EAChC,QAAY,EACZ,KAAwB,EACxB,SAAgB,EAChB,gBAAgB,EAChB,UAAiB,EACjB,UAAiB,EACjB,kBAA4C,EAC5C,0BAAqC,EACrC,SAAyD,EACzD,gBAAgE,EAChE,OAAc,EACd,SAAiB,GAClB,EAAE,gCAAgC,2CAwSlC"}
1
+ {"version":3,"file":"ComparativeCategoryWidgetUI.d.ts","sourceRoot":"","sources":["../../../../../src/widgets/comparative/ComparativeCategoryWidgetUI/ComparativeCategoryWidgetUI.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAwB,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAW1E,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,EAAE,YAAY,EAAE,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,0BAA0B,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC3D,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,EAClD,KAA+B,EAC/B,IAAsC,EACtC,MAAgC,EAChC,MAAgC,EAChC,QAAY,EACZ,KAAwB,EACxB,SAAgB,EAChB,gBAAgB,EAChB,UAAiB,EACjB,UAAiB,EACjB,kBAA4C,EAC5C,0BAAqC,EACrC,SAAyD,EACzD,gBAAgE,EAChE,OAAc,EACd,SAAiB,GAClB,EAAE,gCAAgC,2CAwSlC"}
@@ -4,12 +4,12 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const material = require("@mui/material");
6
6
  const reactIntl = require("react-intl");
7
- const TablePaginationActions = require("../TablePaginationActions-mbbjzV6Y.cjs");
7
+ const TablePaginationActions = require("../TablePaginationActions-MwqZJoRm.cjs");
8
8
  const _ReactEcharts = require("echarts-for-react");
9
9
  const reactWindow = require("react-window");
10
10
  const SwatchSquare = require("../SwatchSquare-B8PIY3Rd.cjs");
11
11
  const iconsMaterial = require("@mui/icons-material");
12
- const Alert = require("../Alert-BzEgeyQJ.cjs");
12
+ const Alert = require("../Alert-oGAW_syG.cjs");
13
13
  const paletteUtils = require("../paletteUtils-B9ybmwiI.cjs");
14
14
  function detectTouchscreen() {
15
15
  let result = false;
@@ -5271,7 +5271,7 @@ function ComparativeCategoryWidgetUI({
5271
5271
  { id: "c4r.widgets.category.selectedItems" },
5272
5272
  { items: selectedCategories.length }
5273
5273
  ) : intlConfig.formatMessage({ id: "c4r.widgets.category.all" }) }),
5274
- /* @__PURE__ */ jsxRuntime.jsx(TablePaginationActions.Typography, { variant: "caption", component: "div", children: searchActive ? /* @__PURE__ */ jsxRuntime.jsx(material.Link, { onClick: applyTempSelection, children: intlConfig.formatMessage({ id: "c4r.widgets.category.apply" }) }) : blockingActive ? /* @__PURE__ */ jsxRuntime.jsx(material.Link, { onClick: disableBlocking, children: intlConfig.formatMessage({
5274
+ /* @__PURE__ */ jsxRuntime.jsx(TablePaginationActions.Typography, { variant: "caption", component: "div", children: searchActive ? /* @__PURE__ */ jsxRuntime.jsx(Alert.Link, { onClick: applyTempSelection, children: intlConfig.formatMessage({ id: "c4r.widgets.category.apply" }) }) : blockingActive ? /* @__PURE__ */ jsxRuntime.jsx(Alert.Link, { onClick: disableBlocking, children: intlConfig.formatMessage({
5275
5275
  id: "c4r.widgets.category.unlock"
5276
5276
  }) }) : selectedCategories.length ? /* @__PURE__ */ jsxRuntime.jsxs(
5277
5277
  material.Box,
@@ -5282,11 +5282,11 @@ function ComparativeCategoryWidgetUI({
5282
5282
  gap: theme.spacing(1)
5283
5283
  },
5284
5284
  children: [
5285
- /* @__PURE__ */ jsxRuntime.jsx(material.Link, { onClick: enableBlocking, children: intlConfig.formatMessage({
5285
+ /* @__PURE__ */ jsxRuntime.jsx(Alert.Link, { onClick: enableBlocking, children: intlConfig.formatMessage({
5286
5286
  id: "c4r.widgets.category.lock"
5287
5287
  }) }),
5288
5288
  /* @__PURE__ */ jsxRuntime.jsx(material.Divider, { orientation: "vertical", flexItem: true }),
5289
- /* @__PURE__ */ jsxRuntime.jsx(material.Link, { onClick: clearSelection, children: intlConfig.formatMessage({
5289
+ /* @__PURE__ */ jsxRuntime.jsx(Alert.Link, { onClick: clearSelection, children: intlConfig.formatMessage({
5290
5290
  id: "c4r.widgets.category.clear"
5291
5291
  }) })
5292
5292
  ]
@@ -2,12 +2,12 @@ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import React, { useMemo, useState, useEffect, useCallback, useRef, createContext, useContext, useLayoutEffect, createRef } from "react";
3
3
  import { useTheme, styled, Box, Skeleton, Grid, Link, darken, Button, Divider, TextField, InputAdornment, Checkbox, Tooltip, debounce, Slider, TableCell, Table, TableHead, TableRow, TableBody, TableContainer, TableSortLabel, TablePagination, IconButton as IconButton$1, Menu, MenuItem, SvgIcon, lighten, Typography as Typography$1, ClickAwayListener, ToggleButton, capitalize, ListItem, Chip, List, Paper, Popover, Select, ListItemText, Collapse, Drawer, Icon, LinearProgress } from "@mui/material";
4
4
  import { useIntl } from "react-intl";
5
- import { h as getDefaultExportFromCjs, u as useImperativeIntl, T as Typography, S as SPACING, B as BREAKPOINTS, a as TablePaginationActions, b as ICON_SIZE_MEDIUM } from "../TablePaginationActions-Cz5Hbi6N.js";
5
+ import { h as getDefaultExportFromCjs, u as useImperativeIntl, T as Typography, S as SPACING, B as BREAKPOINTS, a as TablePaginationActions, b as ICON_SIZE_MEDIUM } from "../TablePaginationActions-BWer8cmX.js";
6
6
  import _ReactEcharts from "echarts-for-react";
7
7
  import { FixedSizeList } from "react-window";
8
8
  import { S as Search, a as SwatchSquare } from "../SwatchSquare-CaaLsjAC.js";
9
9
  import { ChevronLeft, ChevronRight, KeyboardArrowDown, ErrorOutline, Cancel, VisibilityOutlined, VisibilityOffOutlined, ExpandLess, ExpandMore, Close, LayersOutlined, MoreVert } from "@mui/icons-material";
10
- import { I as IconButton, A as Alert } from "../Alert-CnaTtNJd.js";
10
+ import { I as IconButton, L as Link$1, A as Alert } from "../Alert-yL5uEg4Z.js";
11
11
  import { a as getColorByCategory, c as commonPalette, b as getPalette } from "../paletteUtils-BHqJlHm9.js";
12
12
  function detectTouchscreen() {
13
13
  let result = false;
@@ -5269,7 +5269,7 @@ function ComparativeCategoryWidgetUI({
5269
5269
  { id: "c4r.widgets.category.selectedItems" },
5270
5270
  { items: selectedCategories.length }
5271
5271
  ) : intlConfig.formatMessage({ id: "c4r.widgets.category.all" }) }),
5272
- /* @__PURE__ */ jsx(Typography, { variant: "caption", component: "div", children: searchActive ? /* @__PURE__ */ jsx(Link, { onClick: applyTempSelection, children: intlConfig.formatMessage({ id: "c4r.widgets.category.apply" }) }) : blockingActive ? /* @__PURE__ */ jsx(Link, { onClick: disableBlocking, children: intlConfig.formatMessage({
5272
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", component: "div", children: searchActive ? /* @__PURE__ */ jsx(Link$1, { onClick: applyTempSelection, children: intlConfig.formatMessage({ id: "c4r.widgets.category.apply" }) }) : blockingActive ? /* @__PURE__ */ jsx(Link$1, { onClick: disableBlocking, children: intlConfig.formatMessage({
5273
5273
  id: "c4r.widgets.category.unlock"
5274
5274
  }) }) : selectedCategories.length ? /* @__PURE__ */ jsxs(
5275
5275
  Box,
@@ -5280,11 +5280,11 @@ function ComparativeCategoryWidgetUI({
5280
5280
  gap: theme.spacing(1)
5281
5281
  },
5282
5282
  children: [
5283
- /* @__PURE__ */ jsx(Link, { onClick: enableBlocking, children: intlConfig.formatMessage({
5283
+ /* @__PURE__ */ jsx(Link$1, { onClick: enableBlocking, children: intlConfig.formatMessage({
5284
5284
  id: "c4r.widgets.category.lock"
5285
5285
  }) }),
5286
5286
  /* @__PURE__ */ jsx(Divider, { orientation: "vertical", flexItem: true }),
5287
- /* @__PURE__ */ jsx(Link, { onClick: clearSelection, children: intlConfig.formatMessage({
5287
+ /* @__PURE__ */ jsx(Link$1, { onClick: clearSelection, children: intlConfig.formatMessage({
5288
5288
  id: "c4r.widgets.category.clear"
5289
5289
  }) })
5290
5290
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carto/meridian-ds",
3
- "version": "2.0.2-alpha-timeseries.1",
3
+ "version": "2.0.2-alpha-external-link.11",
4
4
  "description": "CARTO Meridian Design System",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -165,6 +165,5 @@
165
165
  "bugs": {
166
166
  "url": "https://github.com/CartoDB/meridian-ds/issues"
167
167
  },
168
- "homepage": "https://github.com/CartoDB/meridian-ds#readme",
169
- "stableVersion": "2.0.1"
168
+ "homepage": "https://github.com/CartoDB/meridian-ds#readme"
170
169
  }