@bigbinary/neeto-molecules 5.1.8 → 5.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/cjs/v2/ConfirmationModal.js +125 -0
  2. package/dist/cjs/v2/ConfirmationModal.js.map +1 -0
  3. package/dist/cjs/v2/DateRangeFilter.js +187 -0
  4. package/dist/cjs/v2/DateRangeFilter.js.map +1 -0
  5. package/dist/cjs/v2/ToggleFeatureCard.js +201 -0
  6. package/dist/cjs/v2/ToggleFeatureCard.js.map +1 -0
  7. package/dist/v2/ConfirmationModal.js +104 -0
  8. package/dist/v2/ConfirmationModal.js.map +1 -0
  9. package/dist/v2/DateRangeFilter.js +185 -0
  10. package/dist/v2/DateRangeFilter.js.map +1 -0
  11. package/dist/v2/ToggleFeatureCard.js +199 -0
  12. package/dist/v2/ToggleFeatureCard.js.map +1 -0
  13. package/package.json +3 -3
  14. package/src/translations/ar.json +3 -2
  15. package/src/translations/bg.json +3 -2
  16. package/src/translations/ca.json +3 -2
  17. package/src/translations/cs.json +3 -2
  18. package/src/translations/da.json +3 -2
  19. package/src/translations/de.json +3 -2
  20. package/src/translations/es-MX.json +3 -2
  21. package/src/translations/es.json +3 -2
  22. package/src/translations/et.json +3 -2
  23. package/src/translations/fi.json +3 -2
  24. package/src/translations/fil.json +3 -2
  25. package/src/translations/fr.json +3 -2
  26. package/src/translations/he.json +3 -2
  27. package/src/translations/hi.json +3 -2
  28. package/src/translations/hr.json +3 -2
  29. package/src/translations/hu.json +3 -2
  30. package/src/translations/id.json +3 -2
  31. package/src/translations/it.json +3 -2
  32. package/src/translations/ja.json +3 -2
  33. package/src/translations/ko.json +3 -2
  34. package/src/translations/nl.json +3 -2
  35. package/src/translations/pl.json +3 -2
  36. package/src/translations/pt-BR.json +3 -2
  37. package/src/translations/pt.json +3 -2
  38. package/src/translations/ro.json +3 -2
  39. package/src/translations/ru.json +3 -2
  40. package/src/translations/sk.json +3 -2
  41. package/src/translations/sl.json +3 -2
  42. package/src/translations/sv.json +3 -2
  43. package/src/translations/th.json +3 -2
  44. package/src/translations/tr.json +3 -2
  45. package/src/translations/uk.json +3 -2
  46. package/src/translations/vi.json +3 -2
  47. package/src/translations/zh-CN.json +3 -2
  48. package/src/translations/zh-TW.json +3 -2
  49. package/types/v2/ConfirmationModal.d.ts +15 -0
  50. package/types/v2/DateRangeFilter.d.ts +15 -0
  51. package/types/v2/ToggleFeatureCard.d.ts +45 -0
@@ -0,0 +1,125 @@
1
+ 'use strict';
2
+
3
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
4
+ var formik = require('@bigbinary/neeto-atoms/formik');
5
+ var ramda = require('ramda');
6
+ var reactI18next = require('react-i18next');
7
+ var yup = require('yup');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespaceDefault(e) {
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
28
+
29
+ var INITIAL_VALUES = {
30
+ confirmationText: ""
31
+ };
32
+
33
+ var deletionValidationSchema = function deletionValidationSchema(confirmationText) {
34
+ return yup__namespace.object({
35
+ confirmationText: yup__namespace.string().required("").oneOf([confirmationText], "")
36
+ });
37
+ };
38
+
39
+ var ConfirmationModal = function ConfirmationModal(_ref) {
40
+ var buttonLabel = _ref.buttonLabel,
41
+ confirmationText = _ref.confirmationText,
42
+ _ref$description = _ref.description,
43
+ description = _ref$description === void 0 ? "" : _ref$description,
44
+ _ref$isOpen = _ref.isOpen,
45
+ isOpen = _ref$isOpen === void 0 ? true : _ref$isOpen,
46
+ _ref$isSubmitting = _ref.isSubmitting,
47
+ isSubmitting = _ref$isSubmitting === void 0 ? false : _ref$isSubmitting,
48
+ _ref$title = _ref.title,
49
+ title = _ref$title === void 0 ? "" : _ref$title,
50
+ onClose = _ref.onClose,
51
+ onSubmit = _ref.onSubmit,
52
+ deleteConfirmationMessage = _ref.deleteConfirmationMessage;
53
+ var _useTranslation = reactI18next.useTranslation(),
54
+ t = _useTranslation.t;
55
+ var formikProps = {
56
+ initialValues: INITIAL_VALUES,
57
+ validationSchema: deletionValidationSchema(confirmationText),
58
+ onSubmit: onSubmit
59
+ };
60
+ var deleteInputLabel = deleteConfirmationMessage || /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
61
+ components: {
62
+ strong: /*#__PURE__*/jsxRuntime.jsx("strong", {})
63
+ },
64
+ i18nKey: "neetoMolecules.confirmationModal.deleteConfirmationMessage",
65
+ values: {
66
+ value: confirmationText
67
+ }
68
+ });
69
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Dialog, {
70
+ isOpen: isOpen,
71
+ onClose: onClose,
72
+ "aria-describedby": undefined,
73
+ "data-testid": "confirmation-modal",
74
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Dialog.Header, {
75
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Dialog.Title, {
76
+ "data-testid": "confirmation-modal-title",
77
+ children: title
78
+ })
79
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Form, {
80
+ formikProps: formikProps,
81
+ children: function children(_ref2) {
82
+ var values = _ref2.values;
83
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
84
+ children: [/*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Dialog.Body, {
85
+ className: "flex flex-col gap-y-4",
86
+ children: [ramda.type(description) === "String" ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
87
+ variant: "body2",
88
+ children: description
89
+ }) : description, /*#__PURE__*/jsxRuntime.jsx(formik.Input, {
90
+ autoFocus: true,
91
+ "data-testid": "confirmation-modal-input",
92
+ label: deleteInputLabel,
93
+ labelProps: {
94
+ className: "block"
95
+ },
96
+ name: "confirmationText",
97
+ type: "text"
98
+ })]
99
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Dialog.Footer, {
100
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.ActionBlock, {
101
+ className: "flex items-center gap-x-2",
102
+ cancelButtonProps: {
103
+ label: t("neetoMolecules.common.actions.cancel"),
104
+ variant: "ghost",
105
+ onClick: onClose,
106
+ disabled: false,
107
+ type: "button"
108
+ },
109
+ submitButtonProps: {
110
+ "data-testid": "delete-continue-button",
111
+ label: buttonLabel,
112
+ loading: isSubmitting,
113
+ variant: "destructive",
114
+ disabled: isSubmitting || confirmationText !== values.confirmationText
115
+ }
116
+ })
117
+ })]
118
+ });
119
+ }
120
+ })]
121
+ });
122
+ };
123
+
124
+ module.exports = ConfirmationModal;
125
+ //# sourceMappingURL=ConfirmationModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationModal.js","sources":["../../../src/v2/components/ConfirmationModal/constants.js","../../../src/v2/components/ConfirmationModal/utils.js","../../../src/v2/components/ConfirmationModal/index.jsx"],"sourcesContent":["export const INITIAL_VALUES = { confirmationText: \"\" };\n","import * as yup from \"yup\";\n\nexport const deletionValidationSchema = confirmationText =>\n yup.object({\n confirmationText: yup.string().required(\"\").oneOf([confirmationText], \"\"),\n });\n","import { Dialog, Typography } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, Form, Input } from \"@bigbinary/neeto-atoms/formik\";\nimport PropTypes from \"prop-types\";\nimport { type } from \"ramda\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { INITIAL_VALUES } from \"./constants\";\nimport { deletionValidationSchema } from \"./utils\";\n\nconst ConfirmationModal = ({\n buttonLabel,\n confirmationText,\n description = \"\",\n isOpen = true,\n isSubmitting = false,\n title = \"\",\n onClose,\n onSubmit,\n deleteConfirmationMessage,\n}) => {\n const { t } = useTranslation();\n\n const formikProps = {\n initialValues: INITIAL_VALUES,\n validationSchema: deletionValidationSchema(confirmationText),\n onSubmit,\n };\n\n const deleteInputLabel = deleteConfirmationMessage || (\n <Trans\n components={{ strong: <strong /> }}\n i18nKey=\"neetoMolecules.confirmationModal.deleteConfirmationMessage\"\n values={{ value: confirmationText }}\n />\n );\n\n return (\n <Dialog\n {...{ isOpen, onClose }}\n aria-describedby={undefined}\n data-testid=\"confirmation-modal\"\n >\n <Dialog.Header>\n <Dialog.Title data-testid=\"confirmation-modal-title\">\n {title}\n </Dialog.Title>\n </Dialog.Header>\n <Form {...{ formikProps }}>\n {({ values }) => (\n <>\n <Dialog.Body className=\"flex flex-col gap-y-4\">\n {type(description) === \"String\" ? (\n <Typography variant=\"body2\">{description}</Typography>\n ) : (\n description\n )}\n <Input\n autoFocus\n data-testid=\"confirmation-modal-input\"\n label={deleteInputLabel}\n labelProps={{ className: \"block\" }}\n name=\"confirmationText\"\n type=\"text\"\n />\n </Dialog.Body>\n <Dialog.Footer>\n <ActionBlock\n className=\"flex items-center gap-x-2\"\n cancelButtonProps={{\n label: t(\"neetoMolecules.common.actions.cancel\"),\n variant: \"ghost\",\n onClick: onClose,\n disabled: false,\n type: \"button\",\n }}\n submitButtonProps={{\n \"data-testid\": \"delete-continue-button\",\n label: buttonLabel,\n loading: isSubmitting,\n variant: \"destructive\",\n disabled:\n isSubmitting ||\n confirmationText !== values.confirmationText,\n }}\n />\n </Dialog.Footer>\n </>\n )}\n </Form>\n </Dialog>\n );\n};\n\nConfirmationModal.propTypes = {\n /**\n * Label of the action button in the Modal\n */\n buttonLabel: PropTypes.string,\n /**\n * Text that is expected to be entered by the user\n */\n confirmationText: PropTypes.string,\n /**\n * Modal description\n */\n description: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n PropTypes.string,\n ]),\n /**\n * To be passed to loading prop of the action button\n */\n isSubmitting: PropTypes.bool,\n /**\n * To specify whether the modal should be opened or closed.\n */\n isOpen: PropTypes.bool,\n /**\n * Title of the modal\n */\n title: PropTypes.string,\n /**\n * Handler function that is invoked when the close button is clicked\n */\n onClose: PropTypes.func,\n /**\n * Handler function that is invoked when the action button is clicked\n */\n onSubmit: PropTypes.func,\n /**\n * Message that will be shown as the label of the confirmation input field.\n */\n deleteConfirmationMessage: PropTypes.string,\n};\n\nexport default ConfirmationModal;\n"],"names":["INITIAL_VALUES","confirmationText","deletionValidationSchema","yup","object","string","required","oneOf","ConfirmationModal","_ref","buttonLabel","_ref$description","description","_ref$isOpen","isOpen","_ref$isSubmitting","isSubmitting","_ref$title","title","onClose","onSubmit","deleteConfirmationMessage","_useTranslation","useTranslation","t","formikProps","initialValues","validationSchema","deleteInputLabel","_jsx","Trans","components","strong","i18nKey","values","value","_jsxs","Dialog","undefined","children","Header","Title","Form","_ref2","_Fragment","Body","className","type","Typography","variant","Input","autoFocus","label","labelProps","name","Footer","ActionBlock","cancelButtonProps","onClick","disabled","submitButtonProps","loading"],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
6
+ var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
7
+ var utils = require('@bigbinary/neeto-commons-frontend/v2/utils');
8
+ var i18next = require('i18next');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+
11
+ var defaultTimePeriodOptions = function defaultTimePeriodOptions() {
12
+ var today = utils.dayjs().startOf("day");
13
+ var startOfLastWeek = today.subtract(7, "day").startOf("week");
14
+ var endOfLastWeek = today.subtract(7, "day").endOf("week");
15
+ var lastMonthStart = today.subtract(1, "month").startOf("month");
16
+ var lastMonthEnd = today.subtract(1, "month").endOf("month");
17
+ var thisQuarterStart = utils.dayjs().startOf("quarter");
18
+ var thisQuarterEnd = utils.dayjs().endOf("quarter");
19
+ var lastQuarterStart = utils.dayjs().subtract(1, "quarter").startOf("quarter");
20
+ var lastQuarterEnd = utils.dayjs().subtract(1, "quarter").endOf("quarter");
21
+ var startOfLastYear = utils.dayjs().subtract(1, "year").startOf("year");
22
+ var endOfLastYear = utils.dayjs().subtract(1, "year").endOf("year");
23
+ var startOfYear = utils.dayjs().startOf("year");
24
+ var endOfYear = utils.dayjs().endOf("year");
25
+ var startOf24Hours = utils.dayjs().subtract(24, "hour");
26
+ var now = utils.dayjs();
27
+ var startOfLast7Days = utils.dayjs().subtract(7, "day");
28
+ var startOfWeek = utils.dayjs().startOf("week");
29
+ var startOfLast30Days = utils.dayjs().subtract(30, "day");
30
+ var startOfMonth = today.startOf("month");
31
+ return [{
32
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.allTime"),
33
+ value: {
34
+ startDate: null,
35
+ endDate: null,
36
+ rangeType: "all"
37
+ }
38
+ }, {
39
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.last24Hours"),
40
+ value: {
41
+ startDate: startOf24Hours,
42
+ endDate: now,
43
+ rangeType: "hours"
44
+ }
45
+ }, {
46
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.last7Days"),
47
+ value: {
48
+ startDate: startOfLast7Days,
49
+ endDate: now,
50
+ rangeType: "days"
51
+ }
52
+ }, {
53
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.thisWeek"),
54
+ value: {
55
+ startDate: startOfWeek,
56
+ endDate: now,
57
+ rangeType: "week"
58
+ }
59
+ }, {
60
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.lastWeek"),
61
+ value: {
62
+ startDate: startOfLastWeek,
63
+ endDate: endOfLastWeek,
64
+ rangeType: "week"
65
+ }
66
+ }, {
67
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.last30Days"),
68
+ value: {
69
+ startDate: startOfLast30Days,
70
+ endDate: now,
71
+ rangeType: "days"
72
+ }
73
+ }, {
74
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.thisMonth"),
75
+ value: {
76
+ startDate: startOfMonth,
77
+ endDate: now,
78
+ rangeType: "month"
79
+ }
80
+ }, {
81
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.lastMonth"),
82
+ value: {
83
+ startDate: lastMonthStart,
84
+ endDate: lastMonthEnd,
85
+ rangeType: "month"
86
+ }
87
+ }, {
88
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.thisQuarter"),
89
+ value: {
90
+ startDate: thisQuarterStart,
91
+ endDate: thisQuarterEnd,
92
+ rangeType: "quarter"
93
+ }
94
+ }, {
95
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.lastQuarter"),
96
+ value: {
97
+ startDate: lastQuarterStart,
98
+ endDate: lastQuarterEnd,
99
+ rangeType: "quarter"
100
+ }
101
+ }, {
102
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.thisYear"),
103
+ value: {
104
+ startDate: startOfYear,
105
+ endDate: endOfYear,
106
+ rangeType: "year"
107
+ }
108
+ }, {
109
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.lastYear"),
110
+ value: {
111
+ startDate: startOfLastYear,
112
+ endDate: endOfLastYear,
113
+ rangeType: "year"
114
+ }
115
+ }, {
116
+ label: i18next.t("neetoMolecules.dateRangeFilter.timePeriodOptions.customDuration"),
117
+ value: "custom"
118
+ }];
119
+ };
120
+
121
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
122
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
123
+ var DateRangeFilter = function DateRangeFilter(_ref) {
124
+ var _timePeriod$value, _timePeriod$value2, _timePeriod$value3, _globalProps$user, _ref6;
125
+ var timePeriodOptions = _ref.timePeriodOptions,
126
+ timePeriod = _ref.timePeriod,
127
+ setTimePeriod = _ref.setTimePeriod,
128
+ datePickerProps = _ref.datePickerProps;
129
+ var isCustom = (timePeriod === null || timePeriod === void 0 ? void 0 : timePeriod.value) === "custom" || (timePeriod === null || timePeriod === void 0 || (_timePeriod$value = timePeriod.value) === null || _timePeriod$value === void 0 ? void 0 : _timePeriod$value.rangeType) === "custom";
130
+ var startDate = timePeriod === null || timePeriod === void 0 || (_timePeriod$value2 = timePeriod.value) === null || _timePeriod$value2 === void 0 ? void 0 : _timePeriod$value2.startDate;
131
+ var endDate = timePeriod === null || timePeriod === void 0 || (_timePeriod$value3 = timePeriod.value) === null || _timePeriod$value3 === void 0 ? void 0 : _timePeriod$value3.endDate;
132
+ var requiredDateFormat = initializers.globalProps === null || initializers.globalProps === void 0 || (_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.dateFormat;
133
+ var options = timePeriodOptions || defaultTimePeriodOptions();
134
+ var selectOptions = options.map(function (_ref2) {
135
+ var label = _ref2.label;
136
+ return {
137
+ label: label,
138
+ value: label
139
+ };
140
+ });
141
+ var handleChange = function handleChange(selectedLabel) {
142
+ return setTimePeriod(options.find(function (_ref3) {
143
+ var label = _ref3.label;
144
+ return label === selectedLabel;
145
+ }));
146
+ };
147
+ var handleDateRangeChange = function handleDateRangeChange(dateRange) {
148
+ var _ref4 = dateRange !== null && dateRange !== void 0 ? dateRange : [],
149
+ _ref5 = _slicedToArray(_ref4, 2),
150
+ newStartDate = _ref5[0],
151
+ newEndDate = _ref5[1];
152
+ setTimePeriod({
153
+ label: timePeriod === null || timePeriod === void 0 ? void 0 : timePeriod.label,
154
+ value: {
155
+ startDate: newStartDate,
156
+ endDate: newEndDate,
157
+ rangeType: "custom"
158
+ }
159
+ });
160
+ };
161
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
162
+ className: "neeto-molecules-date-range-filter flex flex-wrap gap-3",
163
+ "data-testid": "date-range-filter",
164
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
165
+ className: "neeto-molecules-date-range-filter__select w-40",
166
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Select, {
167
+ required: true,
168
+ options: selectOptions,
169
+ value: (_ref6 = timePeriod || options[0]) === null || _ref6 === void 0 ? void 0 : _ref6.label,
170
+ onChange: handleChange
171
+ })
172
+ }), isCustom && /*#__PURE__*/jsxRuntime.jsx("div", {
173
+ className: "neeto-molecules-date-range-filter__custom-duration-picker max-w-sm flex-grow",
174
+ "data-testid": "date-range-filter-custom-duration-picker",
175
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DatePicker, _objectSpread({
176
+ className: "w-full",
177
+ dateFormat: requiredDateFormat,
178
+ type: "range",
179
+ value: [startDate ? utils.dayjs(startDate) : null, endDate ? utils.dayjs(endDate) : null],
180
+ onChange: handleDateRangeChange
181
+ }, datePickerProps))
182
+ })]
183
+ });
184
+ };
185
+
186
+ module.exports = DateRangeFilter;
187
+ //# sourceMappingURL=DateRangeFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeFilter.js","sources":["../../../src/v2/components/DateRangeFilter/utils.js","../../../src/v2/components/DateRangeFilter/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { dayjs } from \"neetocommons/v2/utils\";\n\nexport const defaultTimePeriodOptions = () => {\n const today = dayjs().startOf(\"day\");\n const startOfLastWeek = today.subtract(7, \"day\").startOf(\"week\");\n\n const endOfLastWeek = today.subtract(7, \"day\").endOf(\"week\");\n const lastMonthStart = today.subtract(1, \"month\").startOf(\"month\");\n const lastMonthEnd = today.subtract(1, \"month\").endOf(\"month\");\n const thisQuarterStart = dayjs().startOf(\"quarter\");\n const thisQuarterEnd = dayjs().endOf(\"quarter\");\n const lastQuarterStart = dayjs().subtract(1, \"quarter\").startOf(\"quarter\");\n const lastQuarterEnd = dayjs().subtract(1, \"quarter\").endOf(\"quarter\");\n const startOfLastYear = dayjs().subtract(1, \"year\").startOf(\"year\");\n const endOfLastYear = dayjs().subtract(1, \"year\").endOf(\"year\");\n const startOfYear = dayjs().startOf(\"year\");\n const endOfYear = dayjs().endOf(\"year\");\n\n const startOf24Hours = dayjs().subtract(24, \"hour\");\n const now = dayjs();\n const startOfLast7Days = dayjs().subtract(7, \"day\");\n const startOfWeek = dayjs().startOf(\"week\");\n const startOfLast30Days = dayjs().subtract(30, \"day\");\n const startOfMonth = today.startOf(\"month\");\n\n return [\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.allTime\"),\n value: { startDate: null, endDate: null, rangeType: \"all\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last24Hours\"),\n value: { startDate: startOf24Hours, endDate: now, rangeType: \"hours\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last7Days\"),\n value: {\n startDate: startOfLast7Days,\n endDate: now,\n rangeType: \"days\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisWeek\"),\n value: { startDate: startOfWeek, endDate: now, rangeType: \"week\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastWeek\"),\n value: {\n startDate: startOfLastWeek,\n endDate: endOfLastWeek,\n rangeType: \"week\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.last30Days\"),\n value: {\n startDate: startOfLast30Days,\n endDate: now,\n rangeType: \"days\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisMonth\"),\n value: { startDate: startOfMonth, endDate: now, rangeType: \"month\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastMonth\"),\n value: {\n startDate: lastMonthStart,\n endDate: lastMonthEnd,\n rangeType: \"month\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisQuarter\"),\n value: {\n startDate: thisQuarterStart,\n endDate: thisQuarterEnd,\n rangeType: \"quarter\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastQuarter\"),\n value: {\n startDate: lastQuarterStart,\n endDate: lastQuarterEnd,\n rangeType: \"quarter\",\n },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.thisYear\"),\n value: { startDate: startOfYear, endDate: endOfYear, rangeType: \"year\" },\n },\n {\n label: t(\"neetoMolecules.dateRangeFilter.timePeriodOptions.lastYear\"),\n value: {\n startDate: startOfLastYear,\n endDate: endOfLastYear,\n rangeType: \"year\",\n },\n },\n {\n label: t(\n \"neetoMolecules.dateRangeFilter.timePeriodOptions.customDuration\"\n ),\n value: \"custom\",\n },\n ];\n};\n","import { DatePicker, Select } from \"@bigbinary/neeto-atoms\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { dayjs } from \"neetocommons/v2/utils\";\nimport PropTypes from \"prop-types\";\n\nimport { defaultTimePeriodOptions } from \"./utils\";\n\nconst DateRangeFilter = ({\n timePeriodOptions,\n timePeriod,\n setTimePeriod,\n datePickerProps,\n}) => {\n const isCustom =\n timePeriod?.value === \"custom\" || timePeriod?.value?.rangeType === \"custom\";\n\n const startDate = timePeriod?.value?.startDate;\n const endDate = timePeriod?.value?.endDate;\n const requiredDateFormat = globalProps?.user?.dateFormat;\n\n const options = timePeriodOptions || defaultTimePeriodOptions();\n\n const selectOptions = options.map(({ label }) => ({ label, value: label }));\n\n const handleChange = selectedLabel =>\n setTimePeriod(options.find(({ label }) => label === selectedLabel));\n\n const handleDateRangeChange = dateRange => {\n const [newStartDate, newEndDate] = dateRange ?? [];\n setTimePeriod({\n label: timePeriod?.label,\n value: {\n startDate: newStartDate,\n endDate: newEndDate,\n rangeType: \"custom\",\n },\n });\n };\n\n return (\n <div\n className=\"neeto-molecules-date-range-filter flex flex-wrap gap-3\"\n data-testid=\"date-range-filter\"\n >\n <div className=\"neeto-molecules-date-range-filter__select w-40\">\n <Select\n required\n options={selectOptions}\n value={(timePeriod || options[0])?.label}\n onChange={handleChange}\n />\n </div>\n {isCustom && (\n <div\n className=\"neeto-molecules-date-range-filter__custom-duration-picker max-w-sm flex-grow\"\n data-testid=\"date-range-filter-custom-duration-picker\"\n >\n <DatePicker\n className=\"w-full\"\n dateFormat={requiredDateFormat}\n type=\"range\"\n value={[\n startDate ? dayjs(startDate) : null,\n endDate ? dayjs(endDate) : null,\n ]}\n onChange={handleDateRangeChange}\n {...datePickerProps}\n />\n </div>\n )}\n </div>\n );\n};\n\nDateRangeFilter.propTypes = {\n /**\n * An array of objects that can be passed to the component which can be used to override default filter options.\n */\n timePeriodOptions: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, value: PropTypes.object })\n ),\n /**\n * The state corresponding to the currently selected date range filter.\n */\n timePeriod: PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.object,\n }),\n /**\n * The setter method for `timePeriod` state.\n */\n setTimePeriod: PropTypes.func,\n /**\n * These props will be passed to the date range picker for custom date range selection.\n */\n datePickerProps: PropTypes.object,\n};\n\nexport default DateRangeFilter;\n"],"names":["defaultTimePeriodOptions","today","dayjs","startOf","startOfLastWeek","subtract","endOfLastWeek","endOf","lastMonthStart","lastMonthEnd","thisQuarterStart","thisQuarterEnd","lastQuarterStart","lastQuarterEnd","startOfLastYear","endOfLastYear","startOfYear","endOfYear","startOf24Hours","now","startOfLast7Days","startOfWeek","startOfLast30Days","startOfMonth","label","t","value","startDate","endDate","rangeType","DateRangeFilter","_ref","_timePeriod$value","_timePeriod$value2","_timePeriod$value3","_globalProps$user","_ref6","timePeriodOptions","timePeriod","setTimePeriod","datePickerProps","isCustom","requiredDateFormat","globalProps","user","dateFormat","options","selectOptions","map","_ref2","handleChange","selectedLabel","find","_ref3","handleDateRangeChange","dateRange","_ref4","_ref5","_slicedToArray","newStartDate","newEndDate","_jsxs","className","children","_jsx","Select","required","onChange","DatePicker","_objectSpread","type"],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var React = require('react');
6
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
7
+ var formik = require('@bigbinary/neeto-atoms/formik');
8
+ var classnames = require('classnames');
9
+ var formik$1 = require('formik');
10
+ var neetoCist = require('@bigbinary/neeto-cist');
11
+ var useOnClickOutside = require('@bigbinary/neeto-commons-frontend/v2/react-utils/useOnClickOutside');
12
+ var useHotkeys = require('@bigbinary/neeto-hotkeys');
13
+ var ramda = require('ramda');
14
+ var reactI18next = require('react-i18next');
15
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
16
+ var jsxRuntime = require('react/jsx-runtime');
17
+ var x = require('../x-B38UX0_0.js');
18
+ require('../createLucideIcon-DBDhE7kE.js');
19
+
20
+ var useScrollIntoView = function useScrollIntoView(_ref) {
21
+ var elementId = _ref.elementId,
22
+ trigger = _ref.trigger;
23
+ React.useEffect(function () {
24
+ var _document$getElementB;
25
+ if (!trigger) return;
26
+ (_document$getElementB = document.getElementById(elementId)) === null || _document$getElementB === void 0 || _document$getElementB.scrollIntoView();
27
+ }, [trigger]);
28
+ };
29
+
30
+ var _excluded = ["enabledCondition", "name", "isDisabled", "switchDataTestid", "tooltipProps"],
31
+ _excluded2 = ["enabledSwitchText", "disabledSwitchText"];
32
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
33
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
34
+ var TooltipSwitch = function TooltipSwitch(_ref) {
35
+ var enabledCondition = _ref.enabledCondition,
36
+ _ref$name = _ref.name,
37
+ name = _ref$name === void 0 ? "" : _ref$name,
38
+ _ref$isDisabled = _ref.isDisabled,
39
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
40
+ switchDataTestid = _ref.switchDataTestid,
41
+ _ref$tooltipProps = _ref.tooltipProps,
42
+ tooltipProps = _ref$tooltipProps === void 0 ? {} : _ref$tooltipProps,
43
+ otherProps = _objectWithoutProperties(_ref, _excluded);
44
+ var enabledSwitchText = tooltipProps.enabledSwitchText,
45
+ disabledSwitchText = tooltipProps.disabledSwitchText,
46
+ neetoAtomsTooltipProps = _objectWithoutProperties(tooltipProps, _excluded2);
47
+ var tooltipContent = enabledCondition ? enabledSwitchText : disabledSwitchText;
48
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Tooltip, _objectSpread$1(_objectSpread$1({
49
+ content: tooltipContent,
50
+ disabled: !tooltipContent,
51
+ position: "top"
52
+ }, neetoAtomsTooltipProps), {}, {
53
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
54
+ children: /*#__PURE__*/jsxRuntime.jsx(formik.Switch, _objectSpread$1({
55
+ disabled: isDisabled,
56
+ "data-testid": neetoCist.isPresent(switchDataTestid) ? switchDataTestid : "toggle-feature-card-switch"
57
+ }, _objectSpread$1({
58
+ name: name
59
+ }, otherProps)))
60
+ })
61
+ }));
62
+ };
63
+
64
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
65
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
66
+ var ToggleFeatureCard = function ToggleFeatureCard(_ref) {
67
+ var _ref$isCardStyleEnabl = _ref.isCardStyleEnabled,
68
+ isCardStyleEnabled = _ref$isCardStyleEnabl === void 0 ? true : _ref$isCardStyleEnabl,
69
+ _ref$title = _ref.title,
70
+ title = _ref$title === void 0 ? "" : _ref$title,
71
+ _ref$description = _ref.description,
72
+ description = _ref$description === void 0 ? null : _ref$description,
73
+ _ref$switchName = _ref.switchName,
74
+ switchName = _ref$switchName === void 0 ? "switch" : _ref$switchName,
75
+ _ref$titleDataTestid = _ref.titleDataTestid,
76
+ titleDataTestid = _ref$titleDataTestid === void 0 ? "" : _ref$titleDataTestid,
77
+ _ref$switchDataTestid = _ref.switchDataTestid,
78
+ switchDataTestid = _ref$switchDataTestid === void 0 ? "" : _ref$switchDataTestid,
79
+ _ref$descriptionDataT = _ref.descriptionDataTestid,
80
+ descriptionDataTestid = _ref$descriptionDataT === void 0 ? "" : _ref$descriptionDataT,
81
+ _ref$isDisabled = _ref.isDisabled,
82
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
83
+ _ref$children = _ref.children,
84
+ children = _ref$children === void 0 ? null : _ref$children,
85
+ inputProps = _ref.inputProps,
86
+ _ref$switchProps = _ref.switchProps,
87
+ switchProps = _ref$switchProps === void 0 ? {} : _ref$switchProps,
88
+ _ref$editButtonProps = _ref.editButtonProps,
89
+ editButtonProps = _ref$editButtonProps === void 0 ? {} : _ref$editButtonProps,
90
+ _ref$className = _ref.className,
91
+ className = _ref$className === void 0 ? "" : _ref$className;
92
+ var _useTranslation = reactI18next.useTranslation(),
93
+ t = _useTranslation.t;
94
+ var cardRef = React.useRef();
95
+ var id = neetoCist.slugify(title);
96
+ var _useState = React.useState(false),
97
+ _useState2 = _slicedToArray(_useState, 2),
98
+ isEditing = _useState2[0],
99
+ setIsEditing = _useState2[1];
100
+ var _useFormikContext = formik$1.useFormikContext(),
101
+ setFieldValue = _useFormikContext.setFieldValue,
102
+ values = _useFormikContext.values,
103
+ submitCount = _useFormikContext.submitCount,
104
+ errors = _useFormikContext.errors,
105
+ initialValues = _useFormikContext.initialValues;
106
+ React.useEffect(function () {
107
+ if (!(submitCount >= 1 && ramda.isEmpty(errors))) return;
108
+ setIsEditing(false);
109
+ }, [submitCount]);
110
+ React.useEffect(function () {
111
+ if (ramda.isEmpty(errors)) return;
112
+ setIsEditing(true);
113
+ }, [values, errors]);
114
+ var _useState3 = React.useState(location.hash.split("#")[1] === id),
115
+ _useState4 = _slicedToArray(_useState3, 2),
116
+ shouldHighlight = _useState4[0],
117
+ setShouldHighlight = _useState4[1];
118
+ var hasInput = (values === null || values === void 0 ? void 0 : values[switchName]) && (inputProps === null || inputProps === void 0 ? void 0 : inputProps.name);
119
+ var enabledCondition = values === null || values === void 0 ? void 0 : values[switchName];
120
+ var handleInputReset = function handleInputReset() {
121
+ setIsEditing(false);
122
+ hasInput && setFieldValue(inputProps === null || inputProps === void 0 ? void 0 : inputProps.name, initialValues === null || initialValues === void 0 ? void 0 : initialValues[inputProps === null || inputProps === void 0 ? void 0 : inputProps.name]);
123
+ };
124
+ useOnClickOutside(cardRef, function () {
125
+ return setShouldHighlight(false);
126
+ });
127
+ useScrollIntoView({
128
+ elementId: id,
129
+ trigger: shouldHighlight
130
+ });
131
+ var inputRef = useHotkeys("enter", function () {
132
+ return setIsEditing(false);
133
+ }, {
134
+ mode: "scoped"
135
+ });
136
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
137
+ id: id,
138
+ "data-testid": "feature-card-container",
139
+ ref: cardRef,
140
+ className: classnames("flex flex-col gap-y-2 rounded-lg bg-white", {
141
+ "border p-4": isCardStyleEnabled
142
+ }, {
143
+ "border-border": !shouldHighlight
144
+ }, {
145
+ "border-primary ring-primary ring-1": shouldHighlight
146
+ }, className),
147
+ children: [/*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Label, {
148
+ className: "flex flex-row items-center gap-2",
149
+ children: [/*#__PURE__*/jsxRuntime.jsx(TooltipSwitch, _objectSpread(_objectSpread({}, _objectSpread({
150
+ enabledCondition: enabledCondition,
151
+ isDisabled: isDisabled,
152
+ switchDataTestid: switchDataTestid
153
+ }, switchProps)), {}, {
154
+ name: switchName
155
+ })), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
156
+ as: "span",
157
+ className: "leading-snug",
158
+ variant: "h4",
159
+ weight: "semibold",
160
+ "data-testid": neetoCist.isPresent(titleDataTestid) ? titleDataTestid : "toggle-feature-card-title",
161
+ children: title
162
+ })]
163
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
164
+ className: "mb-4 whitespace-pre-line",
165
+ variant: "body2",
166
+ "data-testid": neetoCist.isPresent(descriptionDataTestid) ? descriptionDataTestid : "toggle-feature-card-description",
167
+ children: description
168
+ }), hasInput && !isEditing && /*#__PURE__*/jsxRuntime.jsxs("div", {
169
+ className: "m-0 flex flex-row items-center gap-x-2",
170
+ children: [inputProps === null || inputProps === void 0 ? void 0 : inputProps.display, /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread({
171
+ label: t("neetoMolecules.common.actions.edit"),
172
+ size: "sm",
173
+ type: "button",
174
+ variant: "link",
175
+ "data-testid": neetoCist.isPresent(inputProps === null || inputProps === void 0 ? void 0 : inputProps.editButtonDataTestid) ? inputProps === null || inputProps === void 0 ? void 0 : inputProps.editButtonDataTestid : "toggle-feature-card-input-display-edit",
176
+ onClick: function onClick() {
177
+ return setIsEditing(true);
178
+ }
179
+ }, editButtonProps))]
180
+ }), hasInput && isEditing && /*#__PURE__*/jsxRuntime.jsx(formik.Input, _objectSpread({
181
+ autoFocus: true,
182
+ label: inputProps === null || inputProps === void 0 ? void 0 : inputProps.label,
183
+ name: inputProps === null || inputProps === void 0 ? void 0 : inputProps.name,
184
+ placeholder: inputProps === null || inputProps === void 0 ? void 0 : inputProps.placeholder,
185
+ ref: inputRef,
186
+ size: "medium",
187
+ "data-testid": neetoCist.isPresent(inputProps === null || inputProps === void 0 ? void 0 : inputProps.dataTestid) ? inputProps === null || inputProps === void 0 ? void 0 : inputProps.dataTestid : "toggle-feature-card-input-field",
188
+ suffix: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
189
+ "data-testid": "toggle-feature-card-input-reset",
190
+ icon: x.X,
191
+ size: "sm",
192
+ type: "button",
193
+ variant: "ghost",
194
+ onClick: handleInputReset
195
+ })
196
+ }, inputProps)), children]
197
+ });
198
+ };
199
+
200
+ module.exports = ToggleFeatureCard;
201
+ //# sourceMappingURL=ToggleFeatureCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleFeatureCard.js","sources":["../../../src/v2/components/ToggleFeatureCard/hooks/useScrollIntoView.js","../../../src/v2/components/ToggleFeatureCard/ToolTipSwitch.jsx","../../../src/v2/components/ToggleFeatureCard/index.jsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nconst useScrollIntoView = ({ elementId, trigger }) => {\n useEffect(() => {\n if (!trigger) return;\n document.getElementById(elementId)?.scrollIntoView();\n }, [trigger]);\n};\n\nexport default useScrollIntoView;\n","import { Tooltip } from \"@bigbinary/neeto-atoms\";\nimport { Switch as FormikSwitch } from \"@bigbinary/neeto-atoms/formik\";\nimport { isPresent } from \"neetocist\";\n\nconst TooltipSwitch = ({\n enabledCondition,\n name = \"\",\n isDisabled = false,\n switchDataTestid,\n tooltipProps = {},\n ...otherProps\n}) => {\n const { enabledSwitchText, disabledSwitchText, ...neetoAtomsTooltipProps } =\n tooltipProps;\n\n const tooltipContent = enabledCondition\n ? enabledSwitchText\n : disabledSwitchText;\n\n return (\n <Tooltip\n content={tooltipContent}\n disabled={!tooltipContent}\n position=\"top\"\n {...neetoAtomsTooltipProps}\n >\n <span>\n <FormikSwitch\n disabled={isDisabled}\n data-testid={\n isPresent(switchDataTestid)\n ? switchDataTestid\n : \"toggle-feature-card-switch\"\n }\n {...{ name, ...otherProps }}\n />\n </span>\n </Tooltip>\n );\n};\n\nexport default TooltipSwitch;\n","import { useRef, useState, useEffect } from \"react\";\n\nimport { Button, Label, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Input } from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { X } from \"lucide-react\";\nimport { isPresent, slugify } from \"neetocist\";\nimport useOnClickOutside from \"neetocommons/v2/react-utils/useOnClickOutside\";\nimport useHotkeys from \"neetohotkeys\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SIZES } from \"./constants\";\nimport useScrollIntoView from \"./hooks/useScrollIntoView\";\nimport TooltipSwitch from \"./ToolTipSwitch\";\n\nconst ToggleFeatureCard = ({\n isCardStyleEnabled = true,\n title = \"\",\n description = null,\n switchName = \"switch\",\n titleDataTestid = \"\",\n switchDataTestid = \"\",\n descriptionDataTestid = \"\",\n isDisabled = false,\n children = null,\n inputProps,\n switchProps = {},\n editButtonProps = {},\n className = \"\",\n}) => {\n const { t } = useTranslation();\n const cardRef = useRef();\n const id = slugify(title);\n\n const [isEditing, setIsEditing] = useState(false);\n\n const { setFieldValue, values, submitCount, errors, initialValues } =\n useFormikContext();\n\n useEffect(() => {\n if (!(submitCount >= 1 && isEmpty(errors))) return;\n setIsEditing(false);\n }, [submitCount]);\n\n useEffect(() => {\n if (isEmpty(errors)) return;\n setIsEditing(true);\n }, [values, errors]);\n\n const [shouldHighlight, setShouldHighlight] = useState(\n location.hash.split(\"#\")[1] === id\n );\n\n const hasInput = values?.[switchName] && inputProps?.name;\n const enabledCondition = values?.[switchName];\n\n const handleInputReset = () => {\n setIsEditing(false);\n hasInput &&\n setFieldValue(inputProps?.name, initialValues?.[inputProps?.name]);\n };\n\n useOnClickOutside(cardRef, () => setShouldHighlight(false));\n\n useScrollIntoView({ elementId: id, trigger: shouldHighlight });\n\n const inputRef = useHotkeys(\"enter\", () => setIsEditing(false), {\n mode: \"scoped\",\n });\n\n return (\n <div\n {...{ id }}\n data-testid=\"feature-card-container\"\n ref={cardRef}\n className={classnames(\n \"flex flex-col gap-y-2 rounded-lg bg-white\",\n { \"border p-4\": isCardStyleEnabled },\n { \"border-border\": !shouldHighlight },\n { \"border-primary ring-primary ring-1\": shouldHighlight },\n className\n )}\n >\n <Label className=\"flex flex-row items-center gap-2\">\n <TooltipSwitch\n {...{\n enabledCondition,\n isDisabled,\n switchDataTestid,\n ...switchProps,\n }}\n name={switchName}\n />\n <Typography\n as=\"span\"\n className=\"leading-snug\"\n variant=\"h4\"\n weight=\"semibold\"\n data-testid={\n isPresent(titleDataTestid)\n ? titleDataTestid\n : \"toggle-feature-card-title\"\n }\n >\n {title}\n </Typography>\n </Label>\n <Typography\n className=\"mb-4 whitespace-pre-line\"\n variant=\"body2\"\n data-testid={\n isPresent(descriptionDataTestid)\n ? descriptionDataTestid\n : \"toggle-feature-card-description\"\n }\n >\n {description}\n </Typography>\n {hasInput && !isEditing && (\n <div className=\"m-0 flex flex-row items-center gap-x-2\">\n {inputProps?.display}\n <Button\n label={t(\"neetoMolecules.common.actions.edit\")}\n size=\"sm\"\n type=\"button\"\n variant=\"link\"\n data-testid={\n isPresent(inputProps?.editButtonDataTestid)\n ? inputProps?.editButtonDataTestid\n : \"toggle-feature-card-input-display-edit\"\n }\n onClick={() => setIsEditing(true)}\n {...editButtonProps}\n />\n </div>\n )}\n {hasInput && isEditing && (\n <Input\n autoFocus\n label={inputProps?.label}\n name={inputProps?.name}\n placeholder={inputProps?.placeholder}\n ref={inputRef}\n size=\"medium\"\n data-testid={\n isPresent(inputProps?.dataTestid)\n ? inputProps?.dataTestid\n : \"toggle-feature-card-input-field\"\n }\n suffix={\n <Button\n data-testid=\"toggle-feature-card-input-reset\"\n icon={X}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={handleInputReset}\n />\n }\n {...inputProps}\n />\n )}\n {children}\n </div>\n );\n};\n\nToggleFeatureCard.propTypes = {\n /**\n * The title that will be displayed for the card.\n */\n title: PropTypes.string,\n /**\n * The descripton text for the particular feature or setting.\n */\n description: PropTypes.string,\n /**\n * The formik name of the feature or setting to be toggled. eg:\n {switchName: \"enableEmails\"}.\n */\n switchName: PropTypes.string,\n /**\n * Can be used to disable the toggle switch conditionally.\n */\n isDisabled: PropTypes.bool,\n /**\n * Can be used to enable the card appearance.\n */\n isCardStyleEnabled: PropTypes.bool,\n /**\n * Custom child components to be displayed in the card.\n */\n children: PropTypes.node,\n /**\n * Can be used to add an input field for a setting or a feature.\n For example, `Enable email notifications` card can have an email input field.\n */\n inputProps: PropTypes.shape({\n name: PropTypes.string,\n display: PropTypes.node,\n label: PropTypes.string,\n editButtonTooltip: PropTypes.string,\n editButtonDataTestid: PropTypes.string,\n placeholder: PropTypes.string,\n dataTestid: PropTypes.string,\n onChange: PropTypes.func,\n suffix: PropTypes.node,\n prefix: PropTypes.node,\n className: PropTypes.string,\n nakedInput: PropTypes.bool,\n size: PropTypes.oneOf(Object.values(SIZES)),\n type: PropTypes.string,\n maxLength: PropTypes.number,\n contentSize: PropTypes.number,\n unlimitedChars: PropTypes.bool,\n }),\n /**\n * Can be used to add props to the switch component.\n */\n switchProps: PropTypes.shape({\n onChange: PropTypes.func,\n className: PropTypes.string,\n checked: PropTypes.bool,\n tooltipProps: PropTypes.shape({\n enabledSwitchText: PropTypes.string,\n disabledSwitchText: PropTypes.string,\n }),\n }),\n /**\n * Can be used to add props to the edit button component.\n */\n editButtonProps: PropTypes.shape({\n onClick: PropTypes.func,\n className: PropTypes.string,\n style: PropTypes.string,\n size: PropTypes.string,\n type: PropTypes.string,\n tooltipProps: PropTypes.object,\n }),\n /**\n * To specify external classnames as overrides to the ToggleFeatureCard wrapper.\n */\n className: PropTypes.string,\n};\n\nexport default ToggleFeatureCard;\n"],"names":["useScrollIntoView","_ref","elementId","trigger","useEffect","_document$getElementB","document","getElementById","scrollIntoView","TooltipSwitch","enabledCondition","_ref$name","name","_ref$isDisabled","isDisabled","switchDataTestid","_ref$tooltipProps","tooltipProps","otherProps","_objectWithoutProperties","_excluded","enabledSwitchText","disabledSwitchText","neetoAtomsTooltipProps","_excluded2","tooltipContent","_jsx","Tooltip","_objectSpread","content","disabled","position","children","FormikSwitch","isPresent","ToggleFeatureCard","_ref$isCardStyleEnabl","isCardStyleEnabled","_ref$title","title","_ref$description","description","_ref$switchName","switchName","_ref$titleDataTestid","titleDataTestid","_ref$switchDataTestid","_ref$descriptionDataT","descriptionDataTestid","_ref$children","inputProps","_ref$switchProps","switchProps","_ref$editButtonProps","editButtonProps","_ref$className","className","_useTranslation","useTranslation","t","cardRef","useRef","id","slugify","_useState","useState","_useState2","_slicedToArray","isEditing","setIsEditing","_useFormikContext","useFormikContext","setFieldValue","values","submitCount","errors","initialValues","isEmpty","_useState3","location","hash","split","_useState4","shouldHighlight","setShouldHighlight","hasInput","handleInputReset","useOnClickOutside","inputRef","useHotkeys","mode","_jsxs","ref","classnames","Label","Typography","as","variant","weight","display","Button","label","size","type","editButtonDataTestid","onClick","Input","autoFocus","placeholder","dataTestid","suffix","icon","X"],"mappings":"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"}