@proprioo/salatim 20.4.2 → 20.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/lib/forms/src/offerSignatoryForm/OfferSignatoryForm.js +1 -4
- package/lib/forms/src/offerSignatoryForm/OfferSignatoryForm.js.map +1 -1
- package/lib/forms/src/offerSignatoryForm/OfferSignatoryForm.schema.d.ts +3 -2
- package/lib/forms/src/offerSignatoryForm/OfferSignatoryForm.schema.js +1 -1
- package/lib/forms/src/offerSignatoryForm/OfferSignatoryForm.schema.js.map +1 -1
- package/lib/index.js +318 -268
- package/lib/index.js.map +1 -1
- package/lib/ui/index.d.ts +2 -2
- package/lib/ui/index.js +3 -4
- package/lib/ui/index.js.map +1 -1
- package/lib/ui/src/textToggle/TextToggle.d.ts +12 -0
- package/lib/ui/src/textToggle/TextToggle.js +36 -0
- package/lib/ui/src/textToggle/TextToggle.js.map +1 -0
- package/lib/ui/src/textToggle/TextToggle.mocks.d.ts +2 -0
- package/lib/ui/src/textToggle/TextToggle.mocks.js +6 -0
- package/lib/ui/src/textToggle/TextToggle.mocks.js.map +1 -0
- package/lib/ui/src/textToggle/TextToggle.stories.d.ts +1 -0
- package/lib/ui/src/textToggle/TextToggle.stories.js +20 -0
- package/lib/ui/src/textToggle/TextToggle.stories.js.map +1 -0
- package/lib/ui/src/textToggle/TextToggle.styles.d.ts +9 -0
- package/lib/ui/src/textToggle/TextToggle.styles.js +69 -0
- package/lib/ui/src/textToggle/TextToggle.styles.js.map +1 -0
- package/lib/ui/src/textToggle/TextToggle.test.d.ts +1 -0
- package/lib/ui/src/textToggle/TextToggle.test.js +79 -0
- package/lib/ui/src/textToggle/TextToggle.test.js.map +1 -0
- package/lib/ui/src/textToggle/TextToggle.utils.d.ts +2 -0
- package/lib/ui/src/textToggle/TextToggle.utils.js +21 -0
- package/lib/ui/src/textToggle/TextToggle.utils.js.map +1 -0
- package/lib/ui/src/textToggle/TextToggle.utils.test.d.ts +1 -0
- package/lib/ui/src/textToggle/TextToggle.utils.test.js +27 -0
- package/lib/ui/src/textToggle/TextToggle.utils.test.js.map +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +3 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/reset.d.ts +1 -0
- package/lib/utils/src/reset.js +20 -0
- package/lib/utils/src/reset.js.map +1 -0
- package/package.json +1 -1
package/lib/ui/index.d.ts
CHANGED
|
@@ -50,7 +50,7 @@ export { TagAppearance, TagColorsTypes, TagProps } from './src/tag/interfaces';
|
|
|
50
50
|
export { default as Tag } from './src/tag/Tag';
|
|
51
51
|
export { TagBase } from './src/tag/Tag.styles';
|
|
52
52
|
export { default as Textarea } from './src/textarea/Textarea';
|
|
53
|
+
export { default as TextToggle } from './src/textToggle/TextToggle';
|
|
53
54
|
export { default as Tooltip } from './src/tooltip/Tooltip';
|
|
54
55
|
export { default as Select, SelectWrapperProps as SelectProps } from './src/selectWrapper/SelectWrapper';
|
|
55
|
-
export { default as ShowMoreTextToggle
|
|
56
|
-
export { Toggle as ShowMoreTextToggleButton } from './src/showMoreTextToggle/showMoreTextToggle.styles';
|
|
56
|
+
export { default as ShowMoreTextToggle } from './src/showMoreTextToggle/ShowMoreTextToggle';
|
package/lib/ui/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.Subtitle = exports.Option = exports.Toggle = exports.titles = exports.H6 = exports.H5 = exports.H4 = exports.H3 = exports.H2 = exports.H1 = exports.Radio = exports.NumberInput = exports.Loader = exports.InputLoading = exports.InputColors = exports.Input = exports.InputType = exports.Logo = exports.PanelOrientation = exports.PanelColorsTypes = exports.Panel = exports.useModal = exports.GmapsGeocode = exports.GmapsAutocomplete = exports.Fieldset = exports.EmailInput = exports.isValidDate = exports.DateInput = exports.Checkbox = exports.IconPosition = exports.ButtonSizes = exports.ButtonColors = exports.ButtonAppearance = exports.Card = exports.BlockIcon = exports.BlockCheckIcon = exports.ButtonRadioGroup = exports.Button = exports.Burger = exports.Block = exports.Autocomplete = exports.AgentCard = exports.AgentBanner = exports.AccordionPanel = exports.AccordionHeader = exports.AccordionItem = exports.Accordion = exports.AccordionItemColors = exports.geocodeByAddress = exports.PlacesAutocomplete = void 0;
|
|
7
|
-
exports.
|
|
7
|
+
exports.ShowMoreTextToggle = exports.Select = exports.Tooltip = exports.TextToggle = exports.Textarea = exports.TagBase = exports.Tag = exports.TagColorsTypes = exports.TagAppearance = void 0;
|
|
8
8
|
var react_places_autocomplete_1 = require("react-places-autocomplete");
|
|
9
9
|
Object.defineProperty(exports, "PlacesAutocomplete", { enumerable: true, get: function () { return __importDefault(react_places_autocomplete_1).default; } });
|
|
10
10
|
Object.defineProperty(exports, "geocodeByAddress", { enumerable: true, get: function () { return react_places_autocomplete_1.geocodeByAddress; } });
|
|
@@ -108,13 +108,12 @@ var Tag_styles_1 = require("./src/tag/Tag.styles");
|
|
|
108
108
|
Object.defineProperty(exports, "TagBase", { enumerable: true, get: function () { return Tag_styles_1.TagBase; } });
|
|
109
109
|
var Textarea_1 = require("./src/textarea/Textarea");
|
|
110
110
|
Object.defineProperty(exports, "Textarea", { enumerable: true, get: function () { return __importDefault(Textarea_1).default; } });
|
|
111
|
+
var TextToggle_1 = require("./src/textToggle/TextToggle");
|
|
112
|
+
Object.defineProperty(exports, "TextToggle", { enumerable: true, get: function () { return __importDefault(TextToggle_1).default; } });
|
|
111
113
|
var Tooltip_1 = require("./src/tooltip/Tooltip");
|
|
112
114
|
Object.defineProperty(exports, "Tooltip", { enumerable: true, get: function () { return __importDefault(Tooltip_1).default; } });
|
|
113
115
|
var SelectWrapper_1 = require("./src/selectWrapper/SelectWrapper");
|
|
114
116
|
Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return __importDefault(SelectWrapper_1).default; } });
|
|
115
117
|
var ShowMoreTextToggle_1 = require("./src/showMoreTextToggle/ShowMoreTextToggle");
|
|
116
118
|
Object.defineProperty(exports, "ShowMoreTextToggle", { enumerable: true, get: function () { return __importDefault(ShowMoreTextToggle_1).default; } });
|
|
117
|
-
Object.defineProperty(exports, "fontStyleOptions", { enumerable: true, get: function () { return ShowMoreTextToggle_1.fontStyleOptions; } });
|
|
118
|
-
var showMoreTextToggle_styles_1 = require("./src/showMoreTextToggle/showMoreTextToggle.styles");
|
|
119
|
-
Object.defineProperty(exports, "ShowMoreTextToggleButton", { enumerable: true, get: function () { return showMoreTextToggle_styles_1.Toggle; } });
|
|
120
119
|
//# sourceMappingURL=index.js.map
|
package/lib/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../packages/ui/index.ts"],"names":[],"mappings":";;;;;;;AACA,uEAImC;AAHjC,gJAAA,OAAO,OAAsB;AAE7B,6HAAA,gBAAgB,OAAA;AAGlB,6EAK8C;AAF5C,2HAAA,mBAAmB,OAAA;AAGrB,uDAAiE;AAAxD,uHAAA,OAAO,OAAa;AAC7B,+DAAyE;AAAhE,+HAAA,OAAO,OAAiB;AACjC,mEAA6E;AAApE,mIAAA,OAAO,OAAmB;AACnC,iEAA2E;AAAlE,iIAAA,OAAO,OAAkB;AAClC,6DAAuE;AAA9D,2HAAA,OAAO,OAAe;AAC/B,uDAAiE;AAAxD,uHAAA,OAAO,OAAa;AAC7B,gEAA0E;AAAjE,6HAAA,OAAO,OAAgB;AAChC,2CAAiE;AAAxD,+GAAA,OAAO,OAAS;AACzB,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,8CAAwD;AAA/C,iHAAA,OAAO,OAAU;AAC1B,4EAGiD;AAF/C,qIAAA,OAAO,OAAoB;AAG7B,sEAAgF;AAAvE,iIAAA,OAAO,OAAkB;AAClC,uDAAiE;AAAxD,uHAAA,OAAO,OAAa;AAC7B,wCAA6D;AAApD,6GAAA,OAAO,OAAQ;AACxB,oEAMwC;AALtC,qHAAA,gBAAgB,OAAA;AAChB,iHAAA,YAAY,OAAA;AAEZ,gHAAA,WAAW,OAAA;AACX,iHAAA,YAAY,OAAA;AAEd,oDAA8D;AAArD,qHAAA,OAAO,OAAY;AAC5B,uDAA8E;AAArE,uHAAA,OAAO,OAAa;AAAE,wGAAA,WAAW,OAAA;AAC1C,0DAAoE;AAA3D,yHAAA,OAAO,OAAc;AAK9B,oDAA6E;AAApE,qHAAA,OAAO,OAAY;AAC5B,+EAGmD;AAFjD,uIAAA,OAAO,OAAqB;AAG9B,gEAGyC;AAFvC,6HAAA,OAAO,OAAgB;AAGzB,2CAI2B;AAHzB,kHAAA,OAAO,OAAY;AAIrB,2CAAqD;AAA5C,+GAAA,OAAO,OAAS;AACzB,iEAIsC;AAFpC,oHAAA,gBAAgB,OAAA;AAChB,oHAAA,gBAAgB,OAAA;AAGlB,wCAAkD;AAAzC,6GAAA,OAAO,OAAQ;AACxB,2CAA8C;AAArC,kGAAA,SAAS,OAAA;AAClB,uDAImC;AAHjC,mHAAA,OAAO,OAAS;AAIlB,+DAA4D;AAAnD,4GAAA,WAAW,OAAA;AACpB,gEAA0E;AAAjE,6HAAA,OAAO,OAAgB;AAChC,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,6DAAuE;AAA9D,2HAAA,OAAO,OAAe;AAC/B,2CAAqD;AAA5C,+GAAA,OAAO,OAAS;AACzB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,2CAA2C;AAAlC,+FAAA,MAAM,OAAA;AACf,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,oDAA6E;AAApE,qHAAA,OAAO,OAAY;AAC5B,mDAA+E;AAAtE,2GAAA,aAAa,OAAA;AAAE,4GAAA,cAAc,OAAA;AACtC,qCAA+C;AAAtC,2GAAA,OAAO,OAAO;AACvB,mDAA+C;AAAtC,qGAAA,OAAO,OAAA;AAChB,oDAA8D;AAArD,qHAAA,OAAO,OAAY;AAC5B,iDAA2D;AAAlD,mHAAA,OAAO,OAAW;AAC3B,mEAG2C;AAFzC,wHAAA,OAAO,OAAU;AAGnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../packages/ui/index.ts"],"names":[],"mappings":";;;;;;;AACA,uEAImC;AAHjC,gJAAA,OAAO,OAAsB;AAE7B,6HAAA,gBAAgB,OAAA;AAGlB,6EAK8C;AAF5C,2HAAA,mBAAmB,OAAA;AAGrB,uDAAiE;AAAxD,uHAAA,OAAO,OAAa;AAC7B,+DAAyE;AAAhE,+HAAA,OAAO,OAAiB;AACjC,mEAA6E;AAApE,mIAAA,OAAO,OAAmB;AACnC,iEAA2E;AAAlE,iIAAA,OAAO,OAAkB;AAClC,6DAAuE;AAA9D,2HAAA,OAAO,OAAe;AAC/B,uDAAiE;AAAxD,uHAAA,OAAO,OAAa;AAC7B,gEAA0E;AAAjE,6HAAA,OAAO,OAAgB;AAChC,2CAAiE;AAAxD,+GAAA,OAAO,OAAS;AACzB,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,8CAAwD;AAA/C,iHAAA,OAAO,OAAU;AAC1B,4EAGiD;AAF/C,qIAAA,OAAO,OAAoB;AAG7B,sEAAgF;AAAvE,iIAAA,OAAO,OAAkB;AAClC,uDAAiE;AAAxD,uHAAA,OAAO,OAAa;AAC7B,wCAA6D;AAApD,6GAAA,OAAO,OAAQ;AACxB,oEAMwC;AALtC,qHAAA,gBAAgB,OAAA;AAChB,iHAAA,YAAY,OAAA;AAEZ,gHAAA,WAAW,OAAA;AACX,iHAAA,YAAY,OAAA;AAEd,oDAA8D;AAArD,qHAAA,OAAO,OAAY;AAC5B,uDAA8E;AAArE,uHAAA,OAAO,OAAa;AAAE,wGAAA,WAAW,OAAA;AAC1C,0DAAoE;AAA3D,yHAAA,OAAO,OAAc;AAK9B,oDAA6E;AAApE,qHAAA,OAAO,OAAY;AAC5B,+EAGmD;AAFjD,uIAAA,OAAO,OAAqB;AAG9B,gEAGyC;AAFvC,6HAAA,OAAO,OAAgB;AAGzB,2CAI2B;AAHzB,kHAAA,OAAO,OAAY;AAIrB,2CAAqD;AAA5C,+GAAA,OAAO,OAAS;AACzB,iEAIsC;AAFpC,oHAAA,gBAAgB,OAAA;AAChB,oHAAA,gBAAgB,OAAA;AAGlB,wCAAkD;AAAzC,6GAAA,OAAO,OAAQ;AACxB,2CAA8C;AAArC,kGAAA,SAAS,OAAA;AAClB,uDAImC;AAHjC,mHAAA,OAAO,OAAS;AAIlB,+DAA4D;AAAnD,4GAAA,WAAW,OAAA;AACpB,gEAA0E;AAAjE,6HAAA,OAAO,OAAgB;AAChC,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,6DAAuE;AAA9D,2HAAA,OAAO,OAAe;AAC/B,2CAAqD;AAA5C,+GAAA,OAAO,OAAS;AACzB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,qCAA+C;AAAtC,yGAAA,OAAO,OAAM;AACtB,2CAA2C;AAAlC,+FAAA,MAAM,OAAA;AACf,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,8CAAqE;AAA5D,iHAAA,OAAO,OAAU;AAC1B,oDAA6E;AAApE,qHAAA,OAAO,OAAY;AAC5B,mDAA+E;AAAtE,2GAAA,aAAa,OAAA;AAAE,4GAAA,cAAc,OAAA;AACtC,qCAA+C;AAAtC,2GAAA,OAAO,OAAO;AACvB,mDAA+C;AAAtC,qGAAA,OAAO,OAAA;AAChB,oDAA8D;AAArD,qHAAA,OAAO,OAAY;AAC5B,0DAAoE;AAA3D,yHAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,mHAAA,OAAO,OAAW;AAC3B,mEAG2C;AAFzC,wHAAA,OAAO,OAAU;AAGnB,kFAA4F;AAAnF,yIAAA,OAAO,OAAsB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export interface TextToggleProps {
|
|
3
|
+
text: string;
|
|
4
|
+
dataTest?: string;
|
|
5
|
+
isComment?: boolean;
|
|
6
|
+
maxLength?: number;
|
|
7
|
+
showMoreLabel?: string;
|
|
8
|
+
showLessLabel?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const TextToggle: FC<TextToggleProps>;
|
|
12
|
+
export default TextToggle;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const react_1 = __importStar(require("react"));
|
|
23
|
+
const TextToggle_styles_1 = require("./TextToggle.styles");
|
|
24
|
+
const TextToggle_utils_1 = require("./TextToggle.utils");
|
|
25
|
+
const TextToggle = ({ text, dataTest = 'text-toggle', isComment = false, maxLength = 300, showLessLabel = 'Lire moins', showMoreLabel = 'Lire plus', title }) => {
|
|
26
|
+
const textWithoutLineBreaks = (0, TextToggle_utils_1.lineBreaksToSpace)(text);
|
|
27
|
+
const isInitialTextCut = textWithoutLineBreaks.length > maxLength;
|
|
28
|
+
const [isTextCut, setIsTextCut] = (0, react_1.useState)(isInitialTextCut);
|
|
29
|
+
const formattedText = (0, TextToggle_utils_1.cutText)(textWithoutLineBreaks, maxLength);
|
|
30
|
+
return (react_1.default.createElement(TextToggle_styles_1.TextToggleLayout, { "data-test": dataTest },
|
|
31
|
+
title && (react_1.default.createElement(TextToggle_styles_1.TextToggleTitle, { "data-test": "text-toggle-title" }, `${title} : `)),
|
|
32
|
+
react_1.default.createElement(TextToggle_styles_1.TextToggleBody, { isComment: isComment }, isTextCut ? formattedText : textWithoutLineBreaks),
|
|
33
|
+
isInitialTextCut && (react_1.default.createElement(TextToggle_styles_1.TextToggleButton, { isComment: isComment, hasTitle: Boolean(title), onClick: () => setIsTextCut(!isTextCut) }, isTextCut ? showMoreLabel : showLessLabel))));
|
|
34
|
+
};
|
|
35
|
+
exports.default = TextToggle;
|
|
36
|
+
//# sourceMappingURL=TextToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,+CAA4C;AAE5C,2DAK6B;AAC7B,yDAAgE;AAYhE,MAAM,UAAU,GAAwB,CAAC,EACvC,IAAI,EACJ,QAAQ,GAAG,aAAa,EACxB,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,GAAG,EACf,aAAa,GAAG,YAAY,EAC5B,aAAa,GAAG,WAAW,EAC3B,KAAK,EACN,EAAE,EAAE;IACH,MAAM,qBAAqB,GAAG,IAAA,oCAAiB,EAAC,IAAI,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,GAAG,SAAS,CAAC;IAElE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAU,gBAAgB,CAAC,CAAC;IAEtE,MAAM,aAAa,GAAG,IAAA,0BAAO,EAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAEhE,OAAO,CACL,8BAAC,oCAAgB,iBAAY,QAAQ;QAClC,KAAK,IAAI,CACR,8BAAC,mCAAe,iBAAW,mBAAmB,IAAE,GAAG,KAAK,KAAK,CAAmB,CACjF;QACD,8BAAC,kCAAc,IAAC,SAAS,EAAE,SAAS,IACjC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CACnC;QAChB,gBAAgB,IAAI,CACnB,8BAAC,oCAAgB,IACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,IAEtC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CACzB,CACpB,CACgB,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const MOCK_LONG_TEXT = "Vous savez, moi je ne crois pas qu'il y ait de bonne ou de mauvaise situation. Moi, si je devais r\u00E9sumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres. Des gens qui m'ont tendu la main, peut-\u00EAtre \u00E0 un moment o\u00F9 je ne pouvais pas, o\u00F9 j'\u00E9tais seul chez moi. Et c'est assez curieux de se dire que les hasards, les rencontres, forgent une destin\u00E9e... Parce que quand on a le go\u00FBt de la chose, quand on a le go\u00FBt de la chose bien faite, le beau geste, parfois on ne trouve pas l'interlocuteur en face je dirais, le miroir qui vous aide \u00E0 avancer. Alors \u00E7a n'est pas mon cas, comme je disais l\u00E0, puisque moi au contraire, j'ai pu : et je dis merci \u00E0 la vie, je lui dis merci, je chante la vie, je danse la vie... je ne suis qu'amour ! Et finalement, quand beaucoup de gens aujourd'hui me disent \u00AB Mais comment fais-tu pour avoir cette humanit\u00E9 ? \u00BB, et bien je leur r\u00E9ponds tr\u00E8s simplement, je leur dis que c'est ce go\u00FBt de l'amour ce go\u00FBt donc qui m'a pouss\u00E9 aujourd'hui \u00E0 entreprendre une construction m\u00E9canique, mais demain qui sait ? Peut-\u00EAtre simplement \u00E0 me mettre au service de la communaut\u00E9, \u00E0 faire le don, le don de soi";
|
|
2
|
+
export declare const MOCK_SHORT_TEXT = "\u00C7a fait rire les oiseaux \u00E7a fait chanter les abeilles";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MOCK_SHORT_TEXT = exports.MOCK_LONG_TEXT = void 0;
|
|
4
|
+
exports.MOCK_LONG_TEXT = "Vous savez, moi je ne crois pas qu'il y ait de bonne ou de mauvaise situation. Moi, si je devais résumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres. Des gens qui m'ont tendu la main, peut-être à un moment où je ne pouvais pas, où j'étais seul chez moi. Et c'est assez curieux de se dire que les hasards, les rencontres, forgent une destinée... Parce que quand on a le goût de la chose, quand on a le goût de la chose bien faite, le beau geste, parfois on ne trouve pas l'interlocuteur en face je dirais, le miroir qui vous aide à avancer. Alors ça n'est pas mon cas, comme je disais là, puisque moi au contraire, j'ai pu : et je dis merci à la vie, je lui dis merci, je chante la vie, je danse la vie... je ne suis qu'amour ! Et finalement, quand beaucoup de gens aujourd'hui me disent « Mais comment fais-tu pour avoir cette humanité ? », et bien je leur réponds très simplement, je leur dis que c'est ce goût de l'amour ce goût donc qui m'a poussé aujourd'hui à entreprendre une construction mécanique, mais demain qui sait ? Peut-être simplement à me mettre au service de la communauté, à faire le don, le don de soi";
|
|
5
|
+
exports.MOCK_SHORT_TEXT = 'Ça fait rire les oiseaux ça fait chanter les abeilles';
|
|
6
|
+
//# sourceMappingURL=TextToggle.mocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.mocks.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.mocks.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GACzB,+nCAA+nC,CAAC;AACrnC,QAAA,eAAe,GAC1B,uDAAuD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const addon_knobs_1 = require("@storybook/addon-knobs");
|
|
8
|
+
const react_2 = require("@storybook/react");
|
|
9
|
+
const TextToggle_1 = __importDefault(require("./TextToggle"));
|
|
10
|
+
const TextToggle_mocks_1 = require("./TextToggle.mocks");
|
|
11
|
+
const knobs = () => ({
|
|
12
|
+
maxLength: (0, addon_knobs_1.number)('maximum length', 300),
|
|
13
|
+
showMoreLabel: (0, addon_knobs_1.text)('show more button label', 'Lire plus'),
|
|
14
|
+
showLessLabel: (0, addon_knobs_1.text)('show less button label', 'Lire moins')
|
|
15
|
+
});
|
|
16
|
+
(0, react_2.storiesOf)('TextToggle', module)
|
|
17
|
+
.add('Default', () => react_1.default.createElement(TextToggle_1.default, Object.assign({}, knobs(), { text: TextToggle_mocks_1.MOCK_LONG_TEXT })))
|
|
18
|
+
.add('Description', () => (react_1.default.createElement(TextToggle_1.default, Object.assign({}, knobs(), { text: TextToggle_mocks_1.MOCK_LONG_TEXT, title: "Otis" }))))
|
|
19
|
+
.add('Comment', () => (react_1.default.createElement(TextToggle_1.default, Object.assign({}, knobs(), { text: TextToggle_mocks_1.MOCK_LONG_TEXT, isComment: true }))));
|
|
20
|
+
//# sourceMappingURL=TextToggle.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.stories.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.stories.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,wDAAsD;AACtD,4CAA6C;AAE7C,8DAAsC;AACtC,yDAAoD;AAEpD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC;IACnB,SAAS,EAAE,IAAA,oBAAM,EAAC,gBAAgB,EAAE,GAAG,CAAC;IACxC,aAAa,EAAE,IAAA,kBAAI,EAAC,wBAAwB,EAAE,WAAW,CAAC;IAC1D,aAAa,EAAE,IAAA,kBAAI,EAAC,wBAAwB,EAAE,YAAY,CAAC;CAC5D,CAAC,CAAC;AAEH,IAAA,iBAAS,EAAC,YAAY,EAAE,MAAM,CAAC;KAC5B,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,8BAAC,oBAAU,oBAAK,KAAK,EAAE,IAAE,IAAI,EAAE,iCAAc,IAAI,CAAC;KACvE,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CACxB,8BAAC,oBAAU,oBAAK,KAAK,EAAE,IAAE,IAAI,EAAE,iCAAc,EAAE,KAAK,EAAC,MAAM,IAAG,CAC/D,CAAC;KACD,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CACpB,8BAAC,oBAAU,oBAAK,KAAK,EAAE,IAAE,IAAI,EAAE,iCAAc,EAAE,SAAS,EAAE,IAAI,IAAI,CACnE,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const TextToggleLayout: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const TextToggleButton: import("styled-components").StyledComponent<"button", any, {
|
|
3
|
+
hasTitle: boolean;
|
|
4
|
+
isComment: boolean;
|
|
5
|
+
}, never>;
|
|
6
|
+
export declare const TextToggleTitle: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
7
|
+
export declare const TextToggleBody: import("styled-components").StyledComponent<"span", any, {
|
|
8
|
+
isComment: boolean;
|
|
9
|
+
}, never>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.TextToggleBody = exports.TextToggleTitle = exports.TextToggleButton = exports.TextToggleLayout = void 0;
|
|
23
|
+
const styled_components_1 = __importStar(require("styled-components"));
|
|
24
|
+
const utils_1 = require("../../../utils");
|
|
25
|
+
const TITLE_COLOR = utils_1.colors.dark.base80;
|
|
26
|
+
exports.TextToggleLayout = styled_components_1.default.div `
|
|
27
|
+
& + & {
|
|
28
|
+
margin-top: ${(0, utils_1.convertPxToRem)(8)};
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
exports.TextToggleButton = styled_components_1.default.button `
|
|
32
|
+
${utils_1.resetCssButton};
|
|
33
|
+
color: ${({ hasTitle }) => (hasTitle ? TITLE_COLOR : utils_1.colors.orange.base)};
|
|
34
|
+
|
|
35
|
+
${({ isComment }) => isComment &&
|
|
36
|
+
(0, styled_components_1.css) `
|
|
37
|
+
display: block;
|
|
38
|
+
margin-top: ${(0, utils_1.convertPxToRem)(8)};
|
|
39
|
+
font-size: ${utils_1.fonts.small};
|
|
40
|
+
font-weight: bold;
|
|
41
|
+
color: ${utils_1.colors.dark.base};
|
|
42
|
+
`}
|
|
43
|
+
|
|
44
|
+
:hover {
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
text-decoration: underline;
|
|
47
|
+
}
|
|
48
|
+
`;
|
|
49
|
+
exports.TextToggleTitle = styled_components_1.default.span `
|
|
50
|
+
color: ${TITLE_COLOR};
|
|
51
|
+
`;
|
|
52
|
+
exports.TextToggleBody = styled_components_1.default.span `
|
|
53
|
+
& + ${exports.TextToggleButton} {
|
|
54
|
+
display: inline-block;
|
|
55
|
+
margin-left: ${(0, utils_1.convertPxToRem)(4)};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
${({ isComment }) => isComment &&
|
|
59
|
+
(0, styled_components_1.css) `
|
|
60
|
+
${utils_1.paragraphs.body1};
|
|
61
|
+
font-weight: 500;
|
|
62
|
+
|
|
63
|
+
& + ${exports.TextToggleButton} {
|
|
64
|
+
display: block;
|
|
65
|
+
margin-left: 0;
|
|
66
|
+
}
|
|
67
|
+
`}
|
|
68
|
+
`;
|
|
69
|
+
//# sourceMappingURL=TextToggle.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.styles.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.styles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAgD;AAEhD,0CAMwB;AAExB,MAAM,WAAW,GAAG,cAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAE1B,QAAA,gBAAgB,GAAG,2BAAM,CAAC,GAAG,CAAA;;kBAExB,IAAA,sBAAc,EAAC,CAAC,CAAC;;CAElC,CAAC;AAEW,QAAA,gBAAgB,GAAG,2BAAM,CAAC,MAAM,CAG3C;IACE,sBAAc;WACP,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;IAEtE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAClB,SAAS;IACT,IAAA,uBAAG,EAAA;;oBAEa,IAAA,sBAAc,EAAC,CAAC,CAAC;mBAClB,aAAK,CAAC,KAAK;;eAEf,cAAM,CAAC,IAAI,CAAC,IAAI;KAC1B;;;;;;CAMJ,CAAC;AAEW,QAAA,eAAe,GAAG,2BAAM,CAAC,IAAI,CAAA;WAC/B,WAAW;CACrB,CAAC;AAEW,QAAA,cAAc,GAAG,2BAAM,CAAC,IAAI,CAAwB;QACzD,wBAAgB;;mBAEL,IAAA,sBAAc,EAAC,CAAC,CAAC;;;IAGhC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAClB,SAAS;IACT,IAAA,uBAAG,EAAA;QACC,kBAAU,CAAC,KAAK;;;YAGZ,wBAAgB;;;;KAIvB;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const react_1 = __importDefault(require("react"));
|
|
16
|
+
const react_2 = require("@testing-library/react");
|
|
17
|
+
const user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
18
|
+
const test_utils_1 = require("../../../utils/src/test-utils");
|
|
19
|
+
const TextToggle_1 = __importDefault(require("./TextToggle"));
|
|
20
|
+
const TextToggle_mocks_1 = require("./TextToggle.mocks");
|
|
21
|
+
const CUT_TEXT = "Vous savez, moi je ne crois pas qu'il y ait de bonne ou de mauvaise situation. Moi, si je devais résumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres. Des gens qui m'ont tendu la main, peut-être à un moment où je ne pouvais pas, où j'étais seul chez moi. Et c'est assez curieux…";
|
|
22
|
+
describe('<TextToggle/>', () => {
|
|
23
|
+
it('should pass A11y tests', () => (0, test_utils_1.testA11y)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_LONG_TEXT })));
|
|
24
|
+
it('should pass A11y tests - cut text', () => (0, test_utils_1.testA11y)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_SHORT_TEXT })));
|
|
25
|
+
it('should render component with full text', () => {
|
|
26
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_SHORT_TEXT }));
|
|
27
|
+
expect(react_2.screen.getByTestId('text-toggle')).toBeInTheDocument();
|
|
28
|
+
expect(react_2.screen.getByText(TextToggle_mocks_1.MOCK_SHORT_TEXT)).toBeInTheDocument();
|
|
29
|
+
expect(react_2.screen.queryByRole('button', { name: 'Lire plus' })).not.toBeInTheDocument();
|
|
30
|
+
expect(react_2.screen.queryByRole('button', { name: 'Lire moins' })).not.toBeInTheDocument();
|
|
31
|
+
});
|
|
32
|
+
it('should render component with cut text', () => {
|
|
33
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_LONG_TEXT }));
|
|
34
|
+
expect(react_2.screen.queryByText(TextToggle_mocks_1.MOCK_LONG_TEXT)).not.toBeInTheDocument();
|
|
35
|
+
expect(react_2.screen.getByText(CUT_TEXT)).toBeInTheDocument();
|
|
36
|
+
expect(react_2.screen.getByRole('button', { name: 'Lire plus' })).toBeInTheDocument();
|
|
37
|
+
expect(react_2.screen.queryByRole('button', { name: 'Lire moins' })).not.toBeInTheDocument();
|
|
38
|
+
});
|
|
39
|
+
it('should toggle text', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_LONG_TEXT }));
|
|
41
|
+
user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Lire plus' }));
|
|
42
|
+
yield (0, react_2.waitFor)(() => {
|
|
43
|
+
expect(react_2.screen.getByText(TextToggle_mocks_1.MOCK_LONG_TEXT)).toBeInTheDocument();
|
|
44
|
+
expect(react_2.screen.getByRole('button', { name: 'Lire moins' })).toBeInTheDocument();
|
|
45
|
+
expect(react_2.screen.queryByRole('button', { name: 'Lire plus' })).not.toBeInTheDocument();
|
|
46
|
+
});
|
|
47
|
+
user_event_1.default.click(react_2.screen.getByRole('button', { name: 'Lire moins' }));
|
|
48
|
+
yield (0, react_2.waitFor)(() => {
|
|
49
|
+
expect(react_2.screen.getByText(CUT_TEXT)).toBeInTheDocument();
|
|
50
|
+
expect(react_2.screen.getByRole('button', { name: 'Lire plus' })).toBeInTheDocument();
|
|
51
|
+
expect(react_2.screen.queryByRole('button', { name: 'Lire moins' })).not.toBeInTheDocument();
|
|
52
|
+
});
|
|
53
|
+
}));
|
|
54
|
+
it('should have custom labels', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_LONG_TEXT, showLessLabel: "custom show less label", showMoreLabel: "custom show more label" }));
|
|
56
|
+
const showMoreButton = react_2.screen.getByRole('button', {
|
|
57
|
+
name: 'custom show more label'
|
|
58
|
+
});
|
|
59
|
+
expect(showMoreButton).toBeInTheDocument();
|
|
60
|
+
user_event_1.default.click(showMoreButton);
|
|
61
|
+
yield (0, react_2.waitFor)(() => expect(react_2.screen.getByRole('button', {
|
|
62
|
+
name: 'custom show less label'
|
|
63
|
+
})).toBeInTheDocument());
|
|
64
|
+
}));
|
|
65
|
+
it('should have custom maxLenght', () => {
|
|
66
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_SHORT_TEXT, maxLength: 2 }));
|
|
67
|
+
expect(react_2.screen.getByText('Ça…')).toBeInTheDocument();
|
|
68
|
+
expect(react_2.screen.getByRole('button', { name: 'Lire plus' })).toBeInTheDocument();
|
|
69
|
+
});
|
|
70
|
+
it('should have custom data-test', () => {
|
|
71
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_LONG_TEXT, dataTest: "custom-data-test" }));
|
|
72
|
+
expect(react_2.screen.getByTestId('custom-data-test')).toBeInTheDocument();
|
|
73
|
+
});
|
|
74
|
+
it('should have title', () => {
|
|
75
|
+
(0, react_2.render)(react_1.default.createElement(TextToggle_1.default, { text: TextToggle_mocks_1.MOCK_SHORT_TEXT, title: "Title" }));
|
|
76
|
+
expect(react_2.screen.getByTestId('text-toggle-title')).toBeInTheDocument();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=TextToggle.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.test.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cutText = exports.lineBreaksToSpace = void 0;
|
|
4
|
+
const REGEX_LINE_BREAK = /\n|\r|\r\n/gim;
|
|
5
|
+
const lineBreaksToSpace = (text) => text.split(REGEX_LINE_BREAK).filter(Boolean).join(' ');
|
|
6
|
+
exports.lineBreaksToSpace = lineBreaksToSpace;
|
|
7
|
+
const cutText = (text, length) => {
|
|
8
|
+
if (text.length <= length || length < 0) {
|
|
9
|
+
return text;
|
|
10
|
+
}
|
|
11
|
+
const ellipsis = '…';
|
|
12
|
+
const lastLetter = text.charAt(length);
|
|
13
|
+
if (lastLetter === ' ') {
|
|
14
|
+
return text.slice(0, length).concat(ellipsis);
|
|
15
|
+
}
|
|
16
|
+
const startOfString = text.slice(0, length);
|
|
17
|
+
const [lastWord] = text.slice(length, text.length).split(' ');
|
|
18
|
+
return startOfString.concat(lastWord).concat(ellipsis);
|
|
19
|
+
};
|
|
20
|
+
exports.cutText = cutText;
|
|
21
|
+
//# sourceMappingURL=TextToggle.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.utils.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAElC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE,CACxD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAD5C,QAAA,iBAAiB,qBAC2B;AAElD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,MAAc,EAAU,EAAE;IAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;QACvC,OAAO,IAAI,CAAC;KACb;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,UAAU,KAAK,GAAG,EAAE;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC/C;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9D,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC,CAAC;AAhBW,QAAA,OAAO,WAgBlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const TextToggle_mocks_1 = require("./TextToggle.mocks");
|
|
4
|
+
const TextToggle_utils_1 = require("./TextToggle.utils");
|
|
5
|
+
describe('lineBreaksToSpace()', () => {
|
|
6
|
+
it('should replace all linebreaks and with spaces', () => {
|
|
7
|
+
expect((0, TextToggle_utils_1.lineBreaksToSpace)('Proprioo vous propose à la vente cet appartement de 3 pièces de 33.0 m² localisé Quai Branly, Paris.\r\nCe bien se situe dans un immeuble.\r\nIl se compose d’un séjour, d’une cuisine.\r\n\r\nIl dispose d’un système de chauffage.\r\n\r\nCharges de copropriété : NC.\r\nTaxe foncière : N/C€ par an\r\n\r\nCe bien est commercialisé par Proprioo.')).toEqual('Proprioo vous propose à la vente cet appartement de 3 pièces de 33.0 m² localisé Quai Branly, Paris. Ce bien se situe dans un immeuble. Il se compose d’un séjour, d’une cuisine. Il dispose d’un système de chauffage. Charges de copropriété : NC. Taxe foncière : N/C€ par an Ce bien est commercialisé par Proprioo.');
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe('cutText()', () => {
|
|
11
|
+
it('should render full text - more space than text', () => {
|
|
12
|
+
expect((0, TextToggle_utils_1.cutText)(TextToggle_mocks_1.MOCK_SHORT_TEXT, 300)).toEqual(TextToggle_mocks_1.MOCK_SHORT_TEXT);
|
|
13
|
+
});
|
|
14
|
+
it('should render full text - exact space', () => {
|
|
15
|
+
expect((0, TextToggle_utils_1.cutText)(TextToggle_mocks_1.MOCK_SHORT_TEXT, 53)).toEqual(TextToggle_mocks_1.MOCK_SHORT_TEXT);
|
|
16
|
+
});
|
|
17
|
+
it('should render full text - invalid length', () => {
|
|
18
|
+
expect((0, TextToggle_utils_1.cutText)(TextToggle_mocks_1.MOCK_SHORT_TEXT, -20)).toEqual(TextToggle_mocks_1.MOCK_SHORT_TEXT);
|
|
19
|
+
});
|
|
20
|
+
it('should cut text on exact word', () => {
|
|
21
|
+
expect((0, TextToggle_utils_1.cutText)('abcd ef', 4)).toEqual('abcd…');
|
|
22
|
+
});
|
|
23
|
+
it('should cut text on next word', () => {
|
|
24
|
+
expect((0, TextToggle_utils_1.cutText)('abcd efgh i', 6)).toEqual('abcd efgh…');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=TextToggle.utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextToggle.utils.test.js","sourceRoot":"","sources":["../../../../packages/ui/src/textToggle/TextToggle.utils.test.ts"],"names":[],"mappings":";;AAAA,yDAAqD;AACrD,yDAAgE;AAEhE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CACJ,IAAA,oCAAiB,EACf,wVAAwV,CACzV,CACF,CAAC,OAAO,CACP,0TAA0T,CAC3T,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,IAAA,0BAAO,EAAC,kCAAe,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,kCAAe,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,IAAA,0BAAO,EAAC,kCAAe,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,kCAAe,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,IAAA,0BAAO,EAAC,kCAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,kCAAe,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,IAAA,0BAAO,EAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,IAAA,0BAAO,EAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -13,3 +13,4 @@ export { convertPxToRem } from './src/spacing';
|
|
|
13
13
|
export { default as scrollbar } from './src/scrollbars';
|
|
14
14
|
export { createAction, ActionsWithPayload, ActionsWithoutPayload, ActionsUnion } from './src/actions';
|
|
15
15
|
export { isTouchDevice, useMobileDevice, useSmartphoneDevice, useSmallSmartphoneDevice } from './src/responsive';
|
|
16
|
+
export { resetCssButton } from './src/reset';
|
package/lib/utils/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.useSmallSmartphoneDevice = exports.useSmartphoneDevice = exports.useMobileDevice = exports.isTouchDevice = exports.createAction = exports.scrollbar = exports.convertPxToRem = exports.shadows = exports.Row = exports.radius = exports.paragraphs = exports.Line = exports.fonts = exports.IntegralCFFont = exports.ArchivoFont = exports.Container = exports.colors = exports.breakpoints = exports.resetId = void 0;
|
|
6
|
+
exports.resetCssButton = exports.useSmallSmartphoneDevice = exports.useSmartphoneDevice = exports.useMobileDevice = exports.isTouchDevice = exports.createAction = exports.scrollbar = exports.convertPxToRem = exports.shadows = exports.Row = exports.radius = exports.paragraphs = exports.Line = exports.fonts = exports.IntegralCFFont = exports.ArchivoFont = exports.Container = exports.colors = exports.breakpoints = exports.resetId = void 0;
|
|
7
7
|
var react_id_generator_1 = require("react-id-generator");
|
|
8
8
|
Object.defineProperty(exports, "resetId", { enumerable: true, get: function () { return react_id_generator_1.resetId; } });
|
|
9
9
|
var breakpoints_1 = require("./src/breakpoints");
|
|
@@ -37,4 +37,6 @@ Object.defineProperty(exports, "isTouchDevice", { enumerable: true, get: functio
|
|
|
37
37
|
Object.defineProperty(exports, "useMobileDevice", { enumerable: true, get: function () { return responsive_1.useMobileDevice; } });
|
|
38
38
|
Object.defineProperty(exports, "useSmartphoneDevice", { enumerable: true, get: function () { return responsive_1.useSmartphoneDevice; } });
|
|
39
39
|
Object.defineProperty(exports, "useSmallSmartphoneDevice", { enumerable: true, get: function () { return responsive_1.useSmallSmartphoneDevice; } });
|
|
40
|
+
var reset_1 = require("./src/reset");
|
|
41
|
+
Object.defineProperty(exports, "resetCssButton", { enumerable: true, get: function () { return reset_1.resetCssButton; } });
|
|
40
42
|
//# sourceMappingURL=index.js.map
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../packages/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,yDAA6C;AAApC,6GAAA,OAAO,OAAA;AAChB,iDAA2D;AAAlD,2HAAA,OAAO,OAAe;AAC/B,uCAAiD;AAAxC,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,uHAAA,OAAO,OAAa;AAC7B,qCAA4E;AAAnE,oGAAA,WAAW,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,+GAAA,OAAO,OAAS;AACtD,mCAA6C;AAApC,6GAAA,OAAO,OAAQ;AACxB,+CAAyD;AAAhD,yHAAA,OAAO,OAAc;AAE9B,uCAAiD;AAAxC,iHAAA,OAAO,OAAU;AAC1B,iCAA2C;AAAlC,2GAAA,OAAO,OAAO;AACvB,yCAAmD;AAA1C,mHAAA,OAAO,OAAW;AAC3B,yCAA+C;AAAtC,yGAAA,cAAc,OAAA;AACvB,+CAAwD;AAA/C,wHAAA,OAAO,OAAa;AAC7B,yCAKuB;AAJrB,uGAAA,YAAY,OAAA;AAKd,+CAK0B;AAJxB,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,iHAAA,mBAAmB,OAAA;AACnB,sHAAA,wBAAwB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../packages/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,yDAA6C;AAApC,6GAAA,OAAO,OAAA;AAChB,iDAA2D;AAAlD,2HAAA,OAAO,OAAe;AAC/B,uCAAiD;AAAxC,iHAAA,OAAO,OAAU;AAC1B,6CAAuD;AAA9C,uHAAA,OAAO,OAAa;AAC7B,qCAA4E;AAAnE,oGAAA,WAAW,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,+GAAA,OAAO,OAAS;AACtD,mCAA6C;AAApC,6GAAA,OAAO,OAAQ;AACxB,+CAAyD;AAAhD,yHAAA,OAAO,OAAc;AAE9B,uCAAiD;AAAxC,iHAAA,OAAO,OAAU;AAC1B,iCAA2C;AAAlC,2GAAA,OAAO,OAAO;AACvB,yCAAmD;AAA1C,mHAAA,OAAO,OAAW;AAC3B,yCAA+C;AAAtC,yGAAA,cAAc,OAAA;AACvB,+CAAwD;AAA/C,wHAAA,OAAO,OAAa;AAC7B,yCAKuB;AAJrB,uGAAA,YAAY,OAAA;AAKd,+CAK0B;AAJxB,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,iHAAA,mBAAmB,OAAA;AACnB,sHAAA,wBAAwB,OAAA;AAE1B,qCAA6C;AAApC,uGAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const resetCssButton: import("styled-components").FlattenSimpleInterpolation;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resetCssButton = void 0;
|
|
4
|
+
const styled_components_1 = require("styled-components");
|
|
5
|
+
// From https://gist.github.com/MoOx/9137295
|
|
6
|
+
exports.resetCssButton = (0, styled_components_1.css) `
|
|
7
|
+
border: none;
|
|
8
|
+
margin: 0;
|
|
9
|
+
padding: 0;
|
|
10
|
+
width: auto;
|
|
11
|
+
overflow: visible;
|
|
12
|
+
background: transparent;
|
|
13
|
+
color: inherit;
|
|
14
|
+
font: inherit;
|
|
15
|
+
line-height: normal;
|
|
16
|
+
-webkit-font-smoothing: inherit;
|
|
17
|
+
-moz-osx-font-smoothing: inherit;
|
|
18
|
+
-webkit-appearance: none;
|
|
19
|
+
`;
|
|
20
|
+
//# sourceMappingURL=reset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../packages/utils/src/reset.ts"],"names":[],"mappings":";;;AAAA,yDAAwC;AAExC,4CAA4C;AAC/B,QAAA,cAAc,GAAG,IAAA,uBAAG,EAAA;;;;;;;;;;;;;CAahC,CAAC"}
|