@os-design/core 1.0.169 → 1.0.170

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 (30) hide show
  1. package/dist/cjs/ListItem/index.js +28 -45
  2. package/dist/cjs/ListItem/index.js.map +1 -1
  3. package/dist/cjs/ListItemActions/index.js +118 -0
  4. package/dist/cjs/ListItemActions/index.js.map +1 -0
  5. package/dist/cjs/ListItemLink/index.js +18 -55
  6. package/dist/cjs/ListItemLink/index.js.map +1 -1
  7. package/dist/cjs/ListSkeleton/index.js +16 -7
  8. package/dist/cjs/ListSkeleton/index.js.map +1 -1
  9. package/dist/esm/ListItem/index.js +29 -55
  10. package/dist/esm/ListItem/index.js.map +1 -1
  11. package/dist/esm/ListItemActions/index.js +121 -0
  12. package/dist/esm/ListItemActions/index.js.map +1 -0
  13. package/dist/esm/ListItemLink/index.js +27 -63
  14. package/dist/esm/ListItemLink/index.js.map +1 -1
  15. package/dist/esm/ListSkeleton/index.js +11 -3
  16. package/dist/esm/ListSkeleton/index.js.map +1 -1
  17. package/dist/types/ListItem/index.d.ts +8 -8
  18. package/dist/types/ListItem/index.d.ts.map +1 -1
  19. package/dist/types/ListItemActions/index.d.ts +13 -0
  20. package/dist/types/ListItemActions/index.d.ts.map +1 -0
  21. package/dist/types/ListItemLink/index.d.ts +3 -3
  22. package/dist/types/ListItemLink/index.d.ts.map +1 -1
  23. package/dist/types/ListSkeleton/index.d.ts.map +1 -1
  24. package/package.json +2 -2
  25. package/dist/cjs/ListItem/ListItemContent.js +0 -99
  26. package/dist/cjs/ListItem/ListItemContent.js.map +0 -1
  27. package/dist/esm/ListItem/ListItemContent.js +0 -92
  28. package/dist/esm/ListItem/ListItemContent.js.map +0 -1
  29. package/dist/types/ListItem/ListItemContent.d.ts +0 -25
  30. package/dist/types/ListItem/ListItemContent.d.ts.map +0 -1
@@ -4,73 +4,56 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = exports.ListItemContainer = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
7
+ exports["default"] = void 0;
9
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
9
  var _styles = require("@os-design/styles");
11
- var _utils = require("@os-design/utils");
12
10
  var _theming = require("@os-design/theming");
13
- var _ListItemContent = _interopRequireDefault(require("./ListItemContent"));
14
- var _excluded = ["title", "description", "left", "right", "actions", "onTouchStart", "onTouchMove", "onTouchEnd"];
15
- var _templateObject;
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _ListItemActions = _interopRequireDefault(require("../ListItemActions"));
13
+ var _excluded = ["title", "description", "left", "right"];
14
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
17
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
18
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
20
19
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
21
20
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
21
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
23
- var ListItemContainer = _styled["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n box-sizing: border-box;\n min-height: 4em;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ", ";\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ", ";\n"])), function (p) {
22
+ var Container = (0, _styled["default"])(_ListItemActions["default"])(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n box-sizing: border-box;\n min-height: 4em;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ", ";\n }\n\n ", ";\n"])), function (p) {
24
23
  return (0, _theming.clr)(p.theme.listItemColorBorder);
25
24
  }, (0, _styles.horizontalPaddingStyles)());
25
+ var Content = _styled["default"].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n overflow: hidden;\n"])));
26
+ var Title = _styled["default"].div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n font-weight: 500;\n ", ";\n"])), function (p) {
27
+ return (0, _theming.clr)(p.theme.colorText);
28
+ }, _styles.ellipsisStyles);
29
+ var Description = _styled["default"].div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: ", "em;\n ", ";\n"])), function (p) {
30
+ return (0, _theming.clr)(p.theme.listItemColorDescription);
31
+ }, function (p) {
32
+ return p.theme.sizes.small;
33
+ }, _styles.ellipsisStyles);
34
+ var LeftAddon = _styled["default"].div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n padding-right: ", "em;\n"])), function (p) {
35
+ return (0, _theming.clr)(p.theme.colorText);
36
+ }, function (p) {
37
+ return p.theme.listItemAddonPaddingHorizontal;
38
+ });
39
+ var RightAddon = _styled["default"].div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n color: ", ";\n margin-left: auto;\n padding-left: ", "em;\n"])), function (p) {
40
+ return (0, _theming.clr)(p.theme.colorText);
41
+ }, function (p) {
42
+ return p.theme.listItemAddonPaddingHorizontal;
43
+ });
26
44
 
27
45
  /**
28
46
  * The base list item.
29
47
  */
30
- exports.ListItemContainer = ListItemContainer;
31
48
  var ListItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
32
49
  var title = _ref.title,
33
50
  description = _ref.description,
34
51
  left = _ref.left,
35
52
  right = _ref.right,
36
- _ref$actions = _ref.actions,
37
- actions = _ref$actions === void 0 ? [] : _ref$actions,
38
- _ref$onTouchStart = _ref.onTouchStart,
39
- _onTouchStart = _ref$onTouchStart === void 0 ? function () {} : _ref$onTouchStart,
40
- _ref$onTouchMove = _ref.onTouchMove,
41
- _onTouchMove = _ref$onTouchMove === void 0 ? function () {} : _ref$onTouchMove,
42
- _ref$onTouchEnd = _ref.onTouchEnd,
43
- _onTouchEnd = _ref$onTouchEnd === void 0 ? function () {} : _ref$onTouchEnd,
44
53
  rest = _objectWithoutProperties(_ref, _excluded);
45
- var touchDevice = (0, _react.useMemo)(function () {
46
- return (0, _utils.isTouchDevice)();
47
- }, []);
48
- var _useSwipe = (0, _utils.useSwipe)(),
49
- opened = _useSwipe.opened,
50
- handlers = _useSwipe.handlers;
51
- return /*#__PURE__*/_react["default"].createElement(ListItemContainer, _extends({}, rest, {
52
- onTouchStart: function onTouchStart(e) {
53
- handlers.onTouchStart(e);
54
- _onTouchStart(e);
55
- },
56
- onTouchMove: function onTouchMove(e) {
57
- handlers.onTouchMove(e);
58
- _onTouchMove(e);
59
- },
60
- onTouchEnd: function onTouchEnd(e) {
61
- handlers.onTouchEnd(e);
62
- _onTouchEnd(e);
63
- },
54
+ return /*#__PURE__*/_react["default"].createElement(Container, _extends({}, rest, {
64
55
  ref: ref
65
- }), /*#__PURE__*/_react["default"].createElement(_ListItemContent["default"], {
66
- title: title,
67
- description: description,
68
- left: left,
69
- right: right,
70
- actions: actions,
71
- hasSwipe: touchDevice,
72
- opened: opened
73
- }));
56
+ }), left && /*#__PURE__*/_react["default"].createElement(LeftAddon, null, left), /*#__PURE__*/_react["default"].createElement(Content, null, /*#__PURE__*/_react["default"].createElement(Title, null, title), description && /*#__PURE__*/_react["default"].createElement(Description, null, description)), right && /*#__PURE__*/_react["default"].createElement(RightAddon, null, right));
74
57
  });
75
58
  ListItem.displayName = 'ListItem';
76
59
  var _default = ListItem;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ListItemContainer","styled","div","p","clr","theme","listItemColorBorder","horizontalPaddingStyles","ListItem","forwardRef","ref","title","description","left","right","actions","onTouchStart","onTouchMove","onTouchEnd","rest","touchDevice","useMemo","isTouchDevice","useSwipe","opened","handlers","e","displayName"],"sources":["../../../src/ListItem/index.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { horizontalPaddingStyles } from '@os-design/styles';\nimport { isTouchDevice, useSwipe } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\nimport ListItemContent, { ListItemContentProps } from './ListItemContent';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\n\nexport type ListItemProps = JsxDivProps &\n Omit<ListItemContentProps, 'hasSwipe' | 'opened'>;\n\nexport const ListItemContainer = styled.div`\n position: relative;\n box-sizing: border-box;\n min-height: 4em;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ${horizontalPaddingStyles()};\n`;\n\n/**\n * The base list item.\n */\nconst ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n title,\n description,\n left,\n right,\n actions = [],\n onTouchStart = () => {},\n onTouchMove = () => {},\n onTouchEnd = () => {},\n ...rest\n },\n ref\n ) => {\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n return (\n <ListItemContainer\n {...rest}\n onTouchStart={(e) => {\n handlers.onTouchStart(e);\n onTouchStart(e);\n }}\n onTouchMove={(e) => {\n handlers.onTouchMove(e);\n onTouchMove(e);\n }}\n onTouchEnd={(e) => {\n handlers.onTouchEnd(e);\n onTouchEnd(e);\n }}\n ref={ref}\n >\n <ListItemContent\n title={title}\n description={description}\n left={left}\n right={right}\n actions={actions}\n hasSwipe={touchDevice}\n opened={opened}\n />\n </ListItemContainer>\n );\n }\n);\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAA0E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOnE,IAAMA,iBAAiB,GAAGC,kBAAM,CAACC,GAAG,2hBAUZ,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACC,mBAAmB,CAAC;AAAA,GAkBlE,IAAAC,+BAAuB,GAAE,CAC5B;;AAED;AACA;AACA;AAFA;AAGA,IAAMC,QAAQ,gBAAG,IAAAC,iBAAU,EACzB,gBAYEC,GAAG,EACA;EAAA,IAXDC,KAAK,QAALA,KAAK;IACLC,WAAW,QAAXA,WAAW;IACXC,IAAI,QAAJA,IAAI;IACJC,KAAK,QAALA,KAAK;IAAA,oBACLC,OAAO;IAAPA,OAAO,6BAAG,EAAE;IAAA,yBACZC,YAAY;IAAZA,aAAY,kCAAG,YAAM,CAAC,CAAC;IAAA,wBACvBC,WAAW;IAAXA,YAAW,iCAAG,YAAM,CAAC,CAAC;IAAA,uBACtBC,UAAU;IAAVA,WAAU,gCAAG,YAAM,CAAC,CAAC;IAClBC,IAAI;EAIT,IAAMC,WAAW,GAAG,IAAAC,cAAO,EAAC;IAAA,OAAM,IAAAC,oBAAa,GAAE;EAAA,GAAE,EAAE,CAAC;EACtD,gBAA6B,IAAAC,eAAQ,GAAE;IAA/BC,MAAM,aAANA,MAAM;IAAEC,QAAQ,aAARA,QAAQ;EAExB,oBACE,gCAAC,iBAAiB,eACZN,IAAI;IACR,YAAY,EAAE,sBAACO,CAAC,EAAK;MACnBD,QAAQ,CAACT,YAAY,CAACU,CAAC,CAAC;MACxBV,aAAY,CAACU,CAAC,CAAC;IACjB,CAAE;IACF,WAAW,EAAE,qBAACA,CAAC,EAAK;MAClBD,QAAQ,CAACR,WAAW,CAACS,CAAC,CAAC;MACvBT,YAAW,CAACS,CAAC,CAAC;IAChB,CAAE;IACF,UAAU,EAAE,oBAACA,CAAC,EAAK;MACjBD,QAAQ,CAACP,UAAU,CAACQ,CAAC,CAAC;MACtBR,WAAU,CAACQ,CAAC,CAAC;IACf,CAAE;IACF,GAAG,EAAEhB;EAAI,iBAET,gCAAC,2BAAe;IACd,KAAK,EAAEC,KAAM;IACb,WAAW,EAAEC,WAAY;IACzB,IAAI,EAAEC,IAAK;IACX,KAAK,EAAEC,KAAM;IACb,OAAO,EAAEC,OAAQ;IACjB,QAAQ,EAAEK,WAAY;IACtB,MAAM,EAAEI;EAAO,EACf,CACgB;AAExB,CAAC,CACF;AAEDhB,QAAQ,CAACmB,WAAW,GAAG,UAAU;AAAC,eAEnBnB,QAAQ;AAAA"}
1
+ {"version":3,"file":"index.js","names":["Container","styled","ListItemActions","p","clr","theme","listItemColorBorder","horizontalPaddingStyles","Content","div","Title","colorText","ellipsisStyles","Description","listItemColorDescription","sizes","small","LeftAddon","listItemAddonPaddingHorizontal","RightAddon","ListItem","forwardRef","ref","title","description","left","right","rest","displayName"],"sources":["../../../src/ListItem/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { ellipsisStyles, horizontalPaddingStyles } from '@os-design/styles';\nimport { clr } from '@os-design/theming';\nimport React, { forwardRef } from 'react';\nimport ListItemActions, { ListItemActionsProps } from '../ListItemActions';\n\nexport interface ListItemProps extends ListItemActionsProps {\n /**\n * The title of the item.\n */\n title: string;\n /**\n * The description of the item.\n * @default undefined\n */\n description?: string;\n /**\n * The component located on the left side.\n * For example, avatar, button, checkbox.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * The component located on the right side.\n * For example, date.\n */\n right?: React.ReactNode;\n}\n\nconst Container = styled(ListItemActions)`\n box-sizing: border-box;\n min-height: 4em;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Content = styled.div`\n overflow: hidden;\n`;\n\nconst Title = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n font-weight: 500;\n ${ellipsisStyles};\n`;\n\nconst Description = styled.div`\n color: ${(p) => clr(p.theme.listItemColorDescription)};\n font-size: ${(p) => p.theme.sizes.small}em;\n ${ellipsisStyles};\n`;\n\nconst LeftAddon = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n padding-right: ${(p) => p.theme.listItemAddonPaddingHorizontal}em;\n`;\n\nconst RightAddon = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n margin-left: auto;\n padding-left: ${(p) => p.theme.listItemAddonPaddingHorizontal}em;\n`;\n\n/**\n * The base list item.\n */\nconst ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n ({ title, description, left, right, ...rest }, ref) => (\n <Container {...rest} ref={ref}>\n {left && <LeftAddon>{left}</LeftAddon>}\n\n <Content>\n <Title>{title}</Title>\n {description && <Description>{description}</Description>}\n </Content>\n\n {right && <RightAddon>{right}</RightAddon>}\n </Container>\n )\n);\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAA2E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyB3E,IAAMA,SAAS,GAAG,IAAAC,kBAAM,EAACC,2BAAe,CAAC,wQASV,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACC,mBAAmB,CAAC;AAAA,GAGlE,IAAAC,+BAAuB,GAAE,CAC5B;AAED,IAAMC,OAAO,GAAGP,kBAAM,CAACQ,GAAG,8FAEzB;AAED,IAAMC,KAAK,GAAGT,kBAAM,CAACQ,GAAG,wHACb,UAACN,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACM,SAAS,CAAC;AAAA,GAEpCC,sBAAc,CACjB;AAED,IAAMC,WAAW,GAAGZ,kBAAM,CAACQ,GAAG,yHACnB,UAACN,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACS,wBAAwB,CAAC;AAAA,GACxC,UAACX,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACU,KAAK,CAACC,KAAK;AAAA,GACrCJ,sBAAc,CACjB;AAED,IAAMK,SAAS,GAAGhB,kBAAM,CAACQ,GAAG,oHACjB,UAACN,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACM,SAAS,CAAC;AAAA,GACrB,UAACR,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACa,8BAA8B;AAAA,EAC/D;AAED,IAAMC,UAAU,GAAGlB,kBAAM,CAACQ,GAAG,yIAClB,UAACN,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACM,SAAS,CAAC;AAAA,GAEtB,UAACR,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACa,8BAA8B;AAAA,EAC9D;;AAED;AACA;AACA;AACA,IAAME,QAAQ,gBAAG,IAAAC,iBAAU,EACzB,gBAA+CC,GAAG;EAAA,IAA/CC,KAAK,QAALA,KAAK;IAAEC,WAAW,QAAXA,WAAW;IAAEC,IAAI,QAAJA,IAAI;IAAEC,KAAK,QAALA,KAAK;IAAKC,IAAI;EAAA,oBACzC,gCAAC,SAAS,eAAKA,IAAI;IAAE,GAAG,EAAEL;EAAI,IAC3BG,IAAI,iBAAI,gCAAC,SAAS,QAAEA,IAAI,CAAa,eAEtC,gCAAC,OAAO,qBACN,gCAAC,KAAK,QAAEF,KAAK,CAAS,EACrBC,WAAW,iBAAI,gCAAC,WAAW,QAAEA,WAAW,CAAe,CAChD,EAETE,KAAK,iBAAI,gCAAC,UAAU,QAAEA,KAAK,CAAc,CAChC;AAAA,CACb,CACF;AAEDN,QAAQ,CAACQ,WAAW,GAAG,UAAU;AAAC,eAEnBR,QAAQ;AAAA"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = require("@emotion/react");
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _styles = require("@os-design/styles");
11
+ var _theming = require("@os-design/theming");
12
+ var _utils = require("@os-design/utils");
13
+ var _react2 = _interopRequireWildcard(require("react"));
14
+ var _Button = _interopRequireDefault(require("../Button"));
15
+ var _excluded = ["actions", "onTouchStart", "onTouchMove", "onTouchEnd", "children", "size"],
16
+ _excluded2 = ["icon", "onClick"];
17
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
24
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
25
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
27
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
28
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
29
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
30
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
31
+ var Container = _styled["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n"])));
32
+ var swipeableStyles = function swipeableStyles(p) {
33
+ return p.swipeable && (0, _react.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n transform: translateX(100%);\n ", ";\n "])), (0, _styles.transitionStyles)('transform')(p));
34
+ };
35
+ var openedStyles = function openedStyles(p) {
36
+ return p.opened && (0, _react.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n transform: translateX(0);\n "])));
37
+ };
38
+ var Actions = (0, _styled["default"])('nav', (0, _utils.omitEmotionProps)('swipeable', 'opened', 'size'))(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n padding-left: ", "em;\n background: linear-gradient(\n to right,\n ", ",\n ", "\n ", "em\n );\n\n ", ";\n ", ";\n ", "\n"])), function (p) {
39
+ return p.theme.listItemActionsPaddingLeft;
40
+ }, function (p) {
41
+ return (0, _theming.clr)([].concat(_toConsumableArray(p.theme.colorBg.slice(0, 3)), [0]));
42
+ }, function (p) {
43
+ return (0, _theming.clr)(p.theme.colorBg);
44
+ }, function (p) {
45
+ return p.theme.listItemActionsPaddingLeft;
46
+ }, swipeableStyles, openedStyles, _styles.sizeStyles);
47
+ var actionIndex = 0;
48
+
49
+ /**
50
+ * Shows the menu in the list item.
51
+ */
52
+ var ListItemActions = /*#__PURE__*/(0, _react2.forwardRef)(function (_ref, ref) {
53
+ var _ref$actions = _ref.actions,
54
+ actions = _ref$actions === void 0 ? [] : _ref$actions,
55
+ _ref$onTouchStart = _ref.onTouchStart,
56
+ onTouchStart = _ref$onTouchStart === void 0 ? function () {} : _ref$onTouchStart,
57
+ _ref$onTouchMove = _ref.onTouchMove,
58
+ onTouchMove = _ref$onTouchMove === void 0 ? function () {} : _ref$onTouchMove,
59
+ _ref$onTouchEnd = _ref.onTouchEnd,
60
+ onTouchEnd = _ref$onTouchEnd === void 0 ? function () {} : _ref$onTouchEnd,
61
+ children = _ref.children,
62
+ size = _ref.size,
63
+ rest = _objectWithoutProperties(_ref, _excluded);
64
+ var _useSwipe = (0, _utils.useSwipe)(),
65
+ opened = _useSwipe.opened,
66
+ handlers = _useSwipe.handlers;
67
+ var swipeable = (0, _react2.useMemo)(function () {
68
+ return (0, _utils.isTouchDevice)();
69
+ }, []);
70
+ var touchStartHandler = (0, _react2.useCallback)(function (e) {
71
+ handlers.onTouchStart(e);
72
+ onTouchStart(e);
73
+ }, [handlers, onTouchStart]);
74
+ var touchMoveHandler = (0, _react2.useCallback)(function (e) {
75
+ handlers.onTouchMove(e);
76
+ onTouchMove(e);
77
+ }, [handlers, onTouchMove]);
78
+ var touchEndHandler = (0, _react2.useCallback)(function (e) {
79
+ handlers.onTouchEnd(e);
80
+ onTouchEnd(e);
81
+ }, [handlers, onTouchEnd]);
82
+ var actionsComponent = (0, _react2.useMemo)(function () {
83
+ if (actions.length === 0) return null;
84
+ var items = actions.map(function (_ref2) {
85
+ var icon = _ref2.icon,
86
+ _ref2$onClick = _ref2.onClick,
87
+ _onClick = _ref2$onClick === void 0 ? function () {} : _ref2$onClick,
88
+ actionRest = _objectWithoutProperties(_ref2, _excluded2);
89
+ actionIndex += 1;
90
+ return /*#__PURE__*/_react2["default"].createElement(_Button["default"], _extends({
91
+ key: actionIndex,
92
+ type: "ghost",
93
+ wide: "never",
94
+ size: size,
95
+ onClick: function onClick(e) {
96
+ e.preventDefault();
97
+ _onClick(e);
98
+ }
99
+ }, actionRest), icon);
100
+ });
101
+ return /*#__PURE__*/_react2["default"].createElement(Actions, {
102
+ swipeable: swipeable,
103
+ opened: opened,
104
+ size: size
105
+ }, items);
106
+ }, [actions, opened, size, swipeable]);
107
+ return /*#__PURE__*/_react2["default"].createElement(Container, _extends({
108
+ onTouchStart: touchStartHandler,
109
+ onTouchMove: touchMoveHandler,
110
+ onTouchEnd: touchEndHandler
111
+ }, rest, {
112
+ ref: ref
113
+ }), children, actionsComponent);
114
+ });
115
+ ListItemActions.displayName = 'ListItemActions';
116
+ var _default = ListItemActions;
117
+ exports["default"] = _default;
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Container","styled","div","swipeableStyles","p","swipeable","css","transitionStyles","openedStyles","opened","Actions","omitEmotionProps","theme","listItemActionsPaddingLeft","clr","colorBg","slice","sizeStyles","actionIndex","ListItemActions","forwardRef","ref","actions","onTouchStart","onTouchMove","onTouchEnd","children","size","rest","useSwipe","handlers","useMemo","isTouchDevice","touchStartHandler","useCallback","e","touchMoveHandler","touchEndHandler","actionsComponent","length","items","map","icon","onClick","actionRest","preventDefault","displayName"],"sources":["../../../src/ListItemActions/index.tsx"],"sourcesContent":["import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { sizeStyles, transitionStyles, WithSize } from '@os-design/styles';\nimport { clr, Color } from '@os-design/theming';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport React, { forwardRef, useCallback, useMemo } from 'react';\nimport Button, { ButtonProps } from '../Button';\n\nexport interface ListItemAction extends Omit<ButtonProps, 'type' | 'wide'> {\n icon: React.ReactElement;\n}\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface ListItemActionsProps extends JsxDivProps, WithSize {\n /**\n * Buttons to control the item.\n * For example, edit, delete.\n * @default undefined\n */\n actions?: ListItemAction[];\n}\n\nconst Container = styled.div`\n position: relative;\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n`;\n\nconst swipeableStyles = (p) =>\n p.swipeable &&\n css`\n transform: translateX(100%);\n ${transitionStyles('transform')(p)};\n `;\n\nconst openedStyles = (p) =>\n p.opened &&\n css`\n transform: translateX(0);\n `;\n\ninterface ActionsProps extends WithSize {\n swipeable: boolean;\n opened: boolean;\n}\nconst Actions = styled(\n 'nav',\n omitEmotionProps('swipeable', 'opened', 'size')\n)<ActionsProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n padding-left: ${(p) => p.theme.listItemActionsPaddingLeft}em;\n background: linear-gradient(\n to right,\n ${(p) => clr([...p.theme.colorBg.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.colorBg)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n\n ${swipeableStyles};\n ${openedStyles};\n ${sizeStyles}\n`;\n\nlet actionIndex = 0;\n\n/**\n * Shows the menu in the list item.\n */\nconst ListItemActions = forwardRef<HTMLDivElement, ListItemActionsProps>(\n (\n {\n actions = [],\n onTouchStart = () => {},\n onTouchMove = () => {},\n onTouchEnd = () => {},\n children,\n size,\n ...rest\n },\n ref\n ) => {\n const { opened, handlers } = useSwipe();\n const swipeable = useMemo(() => isTouchDevice(), []);\n\n const touchStartHandler = useCallback(\n (e) => {\n handlers.onTouchStart(e);\n onTouchStart(e);\n },\n [handlers, onTouchStart]\n );\n\n const touchMoveHandler = useCallback(\n (e) => {\n handlers.onTouchMove(e);\n onTouchMove(e);\n },\n [handlers, onTouchMove]\n );\n\n const touchEndHandler = useCallback(\n (e) => {\n handlers.onTouchEnd(e);\n onTouchEnd(e);\n },\n [handlers, onTouchEnd]\n );\n\n const actionsComponent = useMemo(() => {\n if (actions.length === 0) return null;\n const items = actions.map(\n ({ icon, onClick = () => {}, ...actionRest }) => {\n actionIndex += 1;\n return (\n <Button\n key={actionIndex}\n type='ghost'\n wide='never'\n size={size}\n onClick={(e) => {\n e.preventDefault();\n onClick(e);\n }}\n {...actionRest}\n >\n {icon}\n </Button>\n );\n }\n );\n return (\n <Actions swipeable={swipeable} opened={opened} size={size}>\n {items}\n </Actions>\n );\n }, [actions, opened, size, swipeable]);\n\n return (\n <Container\n onTouchStart={touchStartHandler}\n onTouchMove={touchMoveHandler}\n onTouchEnd={touchEndHandler}\n {...rest}\n ref={ref}\n >\n {children}\n {actionsComponent}\n </Container>\n );\n }\n);\n\nListItemActions.displayName = 'ListItemActions';\n\nexport default ListItemActions;\n"],"mappings":"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"}
@@ -5,19 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
- var _utils = require("@os-design/utils");
11
- var _theming = require("@os-design/theming");
12
9
  var _styles = require("@os-design/styles");
13
- var _react2 = require("@emotion/react");
14
- var _ListItem = require("../ListItem");
15
- var _ListItemContent = _interopRequireDefault(require("../ListItem/ListItemContent"));
16
- var _excluded = ["title", "description", "left", "right", "actions", "as", "onMouseDown", "onTouchStart", "onTouchMove", "onTouchEnd"];
17
- var _templateObject, _templateObject2;
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ var _theming = require("@os-design/theming");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _ListItem = _interopRequireDefault(require("../ListItem"));
13
+ var _excluded = ["title", "description", "left", "right", "actions"];
14
+ var _templateObject;
19
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
18
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
19
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
20
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -28,12 +25,15 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
28
25
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
29
26
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
30
27
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
31
- var actionsBgStyles = function actionsBgStyles(p) {
32
- return !p.touchDevice && (0, _react2.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n & > nav {\n background: linear-gradient(\n to right,\n ", ",\n ", "\n ", "em\n );\n }\n "])), (0, _theming.clr)([].concat(_toConsumableArray(p.theme.listItemColorBgHover.slice(0, 3)), [0])), (0, _theming.clr)(p.theme.listItemColorBgHover), p.theme.listItemActionsPaddingLeft);
33
- };
34
- var StyledLink = (0, _styled["default"])(_ListItem.ListItemContainer.withComponent('a'), (0, _utils.omitEmotionProps)('touchDevice', 'as'))(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n text-decoration: none;\n\n @media (hover: hover) {\n &:hover,\n &:focus-within {\n background-color: ", ";\n }\n }\n\n ", ";\n"])), _styles.resetFocusStyles, function (p) {
28
+ var Link = _styled["default"].a(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ";\n\n cursor: pointer;\n text-decoration: none;\n\n @media (hover: hover) {\n &:hover,\n &:focus-within {\n & > div {\n background-color: ", ";\n\n & > nav {\n background: linear-gradient(\n to right,\n ", ",\n ", "\n ", "em\n );\n }\n }\n }\n }\n"])), _styles.resetFocusStyles, function (p) {
35
29
  return (0, _theming.clr)(p.theme.listItemColorBgHover);
36
- }, actionsBgStyles);
30
+ }, function (p) {
31
+ return (0, _theming.clr)([].concat(_toConsumableArray(p.theme.listItemColorBgHover.slice(0, 3)), [0]));
32
+ }, function (p) {
33
+ return (0, _theming.clr)(p.theme.listItemColorBgHover);
34
+ }, function (p) {
35
+ return p.theme.listItemActionsPaddingLeft;
36
+ });
37
37
 
38
38
  /**
39
39
  * The list item with a link.
@@ -43,53 +43,16 @@ var ListItemLink = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
43
43
  description = _ref.description,
44
44
  left = _ref.left,
45
45
  right = _ref.right,
46
- _ref$actions = _ref.actions,
47
- actions = _ref$actions === void 0 ? [] : _ref$actions,
48
- as = _ref.as,
49
- _ref$onMouseDown = _ref.onMouseDown,
50
- _onMouseDown = _ref$onMouseDown === void 0 ? function () {} : _ref$onMouseDown,
51
- _ref$onTouchStart = _ref.onTouchStart,
52
- _onTouchStart = _ref$onTouchStart === void 0 ? function () {} : _ref$onTouchStart,
53
- _ref$onTouchMove = _ref.onTouchMove,
54
- _onTouchMove = _ref$onTouchMove === void 0 ? function () {} : _ref$onTouchMove,
55
- _ref$onTouchEnd = _ref.onTouchEnd,
56
- _onTouchEnd = _ref$onTouchEnd === void 0 ? function () {} : _ref$onTouchEnd,
46
+ actions = _ref.actions,
57
47
  rest = _objectWithoutProperties(_ref, _excluded);
58
- var touchDevice = (0, _react.useMemo)(function () {
59
- return (0, _utils.isTouchDevice)();
60
- }, []);
61
- var _useSwipe = (0, _utils.useSwipe)(),
62
- opened = _useSwipe.opened,
63
- handlers = _useSwipe.handlers;
64
- return /*#__PURE__*/_react["default"].createElement(StyledLink, _extends({
65
- touchDevice: touchDevice,
66
- as: as
67
- }, rest, {
68
- onMouseDown: function onMouseDown(e) {
69
- _onMouseDown(e);
70
- e.preventDefault();
71
- },
72
- onTouchStart: function onTouchStart(e) {
73
- handlers.onTouchStart(e);
74
- _onTouchStart(e);
75
- },
76
- onTouchMove: function onTouchMove(e) {
77
- handlers.onTouchMove(e);
78
- _onTouchMove(e);
79
- },
80
- onTouchEnd: function onTouchEnd(e) {
81
- handlers.onTouchEnd(e);
82
- _onTouchEnd(e);
83
- },
48
+ return /*#__PURE__*/_react["default"].createElement(Link, _extends({}, rest, {
84
49
  ref: ref
85
- }), /*#__PURE__*/_react["default"].createElement(_ListItemContent["default"], {
50
+ }), /*#__PURE__*/_react["default"].createElement(_ListItem["default"], {
86
51
  title: title,
87
52
  description: description,
88
53
  left: left,
89
54
  right: right,
90
- actions: actions,
91
- hasSwipe: touchDevice,
92
- opened: opened
55
+ actions: actions
93
56
  }));
94
57
  });
95
58
  ListItemLink.displayName = 'ListItemLink';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["actionsBgStyles","p","touchDevice","css","clr","theme","listItemColorBgHover","slice","listItemActionsPaddingLeft","StyledLink","styled","ListItemContainer","withComponent","omitEmotionProps","resetFocusStyles","ListItemLink","forwardRef","ref","title","description","left","right","actions","as","onMouseDown","onTouchStart","onTouchMove","onTouchEnd","rest","useMemo","isTouchDevice","useSwipe","opened","handlers","e","preventDefault","displayName"],"sources":["../../../src/ListItemLink/index.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport { clr, Color } from '@os-design/theming';\nimport { resetFocusStyles } from '@os-design/styles';\nimport { css } from '@emotion/react';\nimport { ListItemContainer } from '../ListItem';\nimport ListItemContent, {\n ListItemContentProps,\n} from '../ListItem/ListItemContent';\nimport { LinkProps, ReactRouterLinkProps } from '../Link';\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport type ListItemLinkProps = JsxAProps &\n ReactRouterLinkProps &\n Pick<LinkProps, 'as'> &\n Omit<ListItemContentProps, 'hasSwipe' | 'opened'>;\n\nconst actionsBgStyles = (p) =>\n !p.touchDevice &&\n css`\n & > nav {\n background: linear-gradient(\n to right,\n ${clr([...p.theme.listItemColorBgHover.slice(0, 3), 0] as Color)},\n ${clr(p.theme.listItemColorBgHover)}\n ${p.theme.listItemActionsPaddingLeft}em\n );\n }\n `;\n\ninterface StyledLinkProps {\n touchDevice: boolean;\n}\nconst StyledLink = styled(\n ListItemContainer.withComponent('a'),\n omitEmotionProps('touchDevice', 'as')\n)<StyledLinkProps>`\n ${resetFocusStyles};\n cursor: pointer;\n text-decoration: none;\n\n @media (hover: hover) {\n &:hover,\n &:focus-within {\n background-color: ${(p) => clr(p.theme.listItemColorBgHover)};\n }\n }\n\n ${actionsBgStyles};\n`;\n\n/**\n * The list item with a link.\n */\nconst ListItemLink = forwardRef<HTMLAnchorElement, ListItemLinkProps>(\n (\n {\n title,\n description,\n left,\n right,\n actions = [],\n as,\n onMouseDown = () => {},\n onTouchStart = () => {},\n onTouchMove = () => {},\n onTouchEnd = () => {},\n ...rest\n },\n ref\n ) => {\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n return (\n <StyledLink\n touchDevice={touchDevice}\n as={as}\n {...rest}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n onTouchStart={(e) => {\n handlers.onTouchStart(e);\n onTouchStart(e);\n }}\n onTouchMove={(e) => {\n handlers.onTouchMove(e);\n onTouchMove(e);\n }}\n onTouchEnd={(e) => {\n handlers.onTouchEnd(e);\n onTouchEnd(e);\n }}\n ref={ref}\n >\n <ListItemContent\n title={title}\n description={description}\n left={left}\n right={right}\n actions={actions}\n hasSwipe={touchDevice}\n opened={opened}\n />\n </StyledLink>\n );\n }\n);\n\nListItemLink.displayName = 'ListItemLink';\n\nexport default ListItemLink;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASrC,IAAMA,eAAe,GAAG,SAAlBA,eAAe,CAAIC,CAAC;EAAA,OACxB,CAACA,CAAC,CAACC,WAAW,QACdC,WAAG,iNAIK,IAAAC,YAAG,+BAAKH,CAAC,CAACI,KAAK,CAACC,oBAAoB,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAE,CAAC,GAAW,EAC9D,IAAAH,YAAG,EAACH,CAAC,CAACI,KAAK,CAACC,oBAAoB,CAAC,EAC/BL,CAAC,CAACI,KAAK,CAACG,0BAA0B,CAG3C;AAAA;AAKH,IAAMC,UAAU,GAAG,IAAAC,kBAAM,EACvBC,2BAAiB,CAACC,aAAa,CAAC,GAAG,CAAC,EACpC,IAAAC,uBAAgB,EAAC,aAAa,EAAE,IAAI,CAAC,CACtC,wPACGC,wBAAgB,EAOM,UAACb,CAAC;EAAA,OAAK,IAAAG,YAAG,EAACH,CAAC,CAACI,KAAK,CAACC,oBAAoB,CAAC;AAAA,GAI9DN,eAAe,CAClB;;AAED;AACA;AACA;AACA,IAAMe,YAAY,gBAAG,IAAAC,iBAAU,EAC7B,gBAcEC,GAAG,EACA;EAAA,IAbDC,KAAK,QAALA,KAAK;IACLC,WAAW,QAAXA,WAAW;IACXC,IAAI,QAAJA,IAAI;IACJC,KAAK,QAALA,KAAK;IAAA,oBACLC,OAAO;IAAPA,OAAO,6BAAG,EAAE;IACZC,EAAE,QAAFA,EAAE;IAAA,wBACFC,WAAW;IAAXA,YAAW,iCAAG,YAAM,CAAC,CAAC;IAAA,yBACtBC,YAAY;IAAZA,aAAY,kCAAG,YAAM,CAAC,CAAC;IAAA,wBACvBC,WAAW;IAAXA,YAAW,iCAAG,YAAM,CAAC,CAAC;IAAA,uBACtBC,UAAU;IAAVA,WAAU,gCAAG,YAAM,CAAC,CAAC;IAClBC,IAAI;EAIT,IAAM1B,WAAW,GAAG,IAAA2B,cAAO,EAAC;IAAA,OAAM,IAAAC,oBAAa,GAAE;EAAA,GAAE,EAAE,CAAC;EACtD,gBAA6B,IAAAC,eAAQ,GAAE;IAA/BC,MAAM,aAANA,MAAM;IAAEC,QAAQ,aAARA,QAAQ;EAExB,oBACE,gCAAC,UAAU;IACT,WAAW,EAAE/B,WAAY;IACzB,EAAE,EAAEqB;EAAG,GACHK,IAAI;IACR,WAAW,EAAE,qBAACM,CAAC,EAAK;MAClBV,YAAW,CAACU,CAAC,CAAC;MACdA,CAAC,CAACC,cAAc,EAAE;IACpB,CAAE;IACF,YAAY,EAAE,sBAACD,CAAC,EAAK;MACnBD,QAAQ,CAACR,YAAY,CAACS,CAAC,CAAC;MACxBT,aAAY,CAACS,CAAC,CAAC;IACjB,CAAE;IACF,WAAW,EAAE,qBAACA,CAAC,EAAK;MAClBD,QAAQ,CAACP,WAAW,CAACQ,CAAC,CAAC;MACvBR,YAAW,CAACQ,CAAC,CAAC;IAChB,CAAE;IACF,UAAU,EAAE,oBAACA,CAAC,EAAK;MACjBD,QAAQ,CAACN,UAAU,CAACO,CAAC,CAAC;MACtBP,WAAU,CAACO,CAAC,CAAC;IACf,CAAE;IACF,GAAG,EAAEjB;EAAI,iBAET,gCAAC,2BAAe;IACd,KAAK,EAAEC,KAAM;IACb,WAAW,EAAEC,WAAY;IACzB,IAAI,EAAEC,IAAK;IACX,KAAK,EAAEC,KAAM;IACb,OAAO,EAAEC,OAAQ;IACjB,QAAQ,EAAEpB,WAAY;IACtB,MAAM,EAAE8B;EAAO,EACf,CACS;AAEjB,CAAC,CACF;AAEDjB,YAAY,CAACqB,WAAW,GAAG,cAAc;AAAC,eAE3BrB,YAAY;AAAA"}
1
+ {"version":3,"file":"index.js","names":["Link","styled","a","resetFocusStyles","p","clr","theme","listItemColorBgHover","slice","listItemActionsPaddingLeft","ListItemLink","forwardRef","ref","title","description","left","right","actions","rest","displayName"],"sources":["../../../src/ListItemLink/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { resetFocusStyles } from '@os-design/styles';\nimport { clr, Color } from '@os-design/theming';\nimport React, { forwardRef } from 'react';\nimport { LinkProps, ReactRouterLinkProps } from '../Link';\nimport ListItem, { ListItemProps } from '../ListItem';\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport type ListItemLinkProps = JsxAProps &\n ReactRouterLinkProps &\n Pick<LinkProps, 'as'> &\n ListItemProps;\n\nconst Link = styled.a`\n ${resetFocusStyles};\n\n cursor: pointer;\n text-decoration: none;\n\n @media (hover: hover) {\n &:hover,\n &:focus-within {\n & > div {\n background-color: ${(p) => clr(p.theme.listItemColorBgHover)};\n\n & > nav {\n background: linear-gradient(\n to right,\n ${(p) =>\n clr([...p.theme.listItemColorBgHover.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.listItemColorBgHover)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n }\n }\n }\n }\n`;\n\n/**\n * The list item with a link.\n */\nconst ListItemLink = forwardRef<HTMLAnchorElement, ListItemLinkProps>(\n ({ title, description, left, right, actions, ...rest }, ref) => (\n <Link {...rest} ref={ref}>\n <ListItem\n title={title}\n description={description}\n left={left}\n right={right}\n actions={actions}\n />\n </Link>\n )\n);\n\nListItemLink.displayName = 'ListItemLink';\n\nexport default ListItemLink;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAEA;AAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQtD,IAAMA,IAAI,GAAGC,kBAAM,CAACC,CAAC,ibACjBC,wBAAgB,EASQ,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACC,oBAAoB,CAAC;AAAA,GAKtD,UAACH,CAAC;EAAA,OACF,IAAAC,YAAG,+BAAKD,CAAC,CAACE,KAAK,CAACC,oBAAoB,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAE,CAAC,GAAW;AAAA,GAC9D,UAACJ,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACC,oBAAoB,CAAC;AAAA,GACtC,UAACH,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACG,0BAA0B;AAAA,EAMxD;;AAED;AACA;AACA;AACA,IAAMC,YAAY,gBAAG,IAAAC,iBAAU,EAC7B,gBAAwDC,GAAG;EAAA,IAAxDC,KAAK,QAALA,KAAK;IAAEC,WAAW,QAAXA,WAAW;IAAEC,IAAI,QAAJA,IAAI;IAAEC,KAAK,QAALA,KAAK;IAAEC,OAAO,QAAPA,OAAO;IAAKC,IAAI;EAAA,oBAClD,gCAAC,IAAI,eAAKA,IAAI;IAAE,GAAG,EAAEN;EAAI,iBACvB,gCAAC,oBAAQ;IACP,KAAK,EAAEC,KAAM;IACb,WAAW,EAAEC,WAAY;IACzB,IAAI,EAAEC,IAAK;IACX,KAAK,EAAEC,KAAM;IACb,OAAO,EAAEC;EAAQ,EACjB,CACG;AAAA,CACR,CACF;AAEDP,YAAY,CAACS,WAAW,GAAG,cAAc;AAAC,eAE3BT,YAAY;AAAA"}
@@ -5,18 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
9
  var _styles = require("@os-design/styles");
11
10
  var _theming = require("@os-design/theming");
12
- var _Skeleton = _interopRequireDefault(require("../Skeleton"));
11
+ var _react = _interopRequireWildcard(require("react"));
13
12
  var _List = _interopRequireDefault(require("../List"));
14
- var _ListItemContent = require("../ListItem/ListItemContent");
13
+ var _Skeleton = _interopRequireDefault(require("../Skeleton"));
15
14
  var _excluded = ["hasDescription", "titleWidth", "descriptionWidth", "itemCount", "left", "right"];
16
- var _templateObject, _templateObject2, _templateObject3;
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
18
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20
19
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
20
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
22
21
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -28,6 +27,16 @@ var Content = _styled["default"].div(_templateObject2 || (_templateObject2 = _ta
28
27
  var DescriptionSkeleton = (0, _styled["default"])(_Skeleton["default"])(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n height: ", "em;\n margin-top: 0.3em;\n"])), function (p) {
29
28
  return p.theme.sizes.small;
30
29
  });
30
+ var LeftAddon = _styled["default"].div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n color: ", ";\n padding-right: ", "em;\n"])), function (p) {
31
+ return (0, _theming.clr)(p.theme.colorText);
32
+ }, function (p) {
33
+ return p.theme.listItemAddonPaddingHorizontal;
34
+ });
35
+ var RightAddon = _styled["default"].div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n margin-left: auto;\n padding-left: ", "em;\n"])), function (p) {
36
+ return (0, _theming.clr)(p.theme.colorText);
37
+ }, function (p) {
38
+ return p.theme.listItemAddonPaddingHorizontal;
39
+ });
31
40
 
32
41
  /**
33
42
  * Provides a list placeholder while a user waits for the content to load.
@@ -48,11 +57,11 @@ var ListSkeleton = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
48
57
  var style = _ref2.style;
49
58
  return /*#__PURE__*/_react["default"].createElement(ListItem, {
50
59
  style: style
51
- }, left && /*#__PURE__*/_react["default"].createElement(_ListItemContent.LeftAddon, null, left), /*#__PURE__*/_react["default"].createElement(Content, null, /*#__PURE__*/_react["default"].createElement(_Skeleton["default"], {
60
+ }, left && /*#__PURE__*/_react["default"].createElement(LeftAddon, null, left), /*#__PURE__*/_react["default"].createElement(Content, null, /*#__PURE__*/_react["default"].createElement(_Skeleton["default"], {
52
61
  width: titleWidth
53
62
  }), hasDescription && /*#__PURE__*/_react["default"].createElement(DescriptionSkeleton, {
54
63
  width: descriptionWidth
55
- })), right && /*#__PURE__*/_react["default"].createElement(_ListItemContent.RightAddon, null, right));
64
+ })), right && /*#__PURE__*/_react["default"].createElement(RightAddon, null, right));
56
65
  }, [descriptionWidth, hasDescription, left, right, titleWidth]);
57
66
  return /*#__PURE__*/_react["default"].createElement(_List["default"], _extends({
58
67
  itemCount: itemCount,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ListItem","styled","div","p","clr","theme","listItemColorBorder","horizontalPaddingStyles","Content","DescriptionSkeleton","Skeleton","sizes","small","ListSkeleton","forwardRef","ref","hasDescription","titleWidth","descriptionWidth","itemCount","left","right","rest","itemRenderer","useCallback","style","displayName"],"sources":["../../../src/ListSkeleton/index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback } from 'react';\nimport styled from '@emotion/styled';\nimport { horizontalPaddingStyles } from '@os-design/styles';\nimport { FixedSizeList } from 'react-window';\nimport { clr } from '@os-design/theming';\nimport Skeleton from '../Skeleton';\nimport List, { ListProps } from '../List';\nimport { ListItemProps } from '../ListItem';\nimport { LeftAddon, RightAddon } from '../ListItem/ListItemContent';\n\nexport interface ListSkeletonProps\n extends Omit<ListProps, 'itemCount' | 'itemRenderer'>,\n Pick<ListItemProps, 'left' | 'right'> {\n /**\n * The description placeholder.\n * @default false\n */\n hasDescription?: boolean;\n /**\n * The width of the title.\n * @default 30%\n */\n titleWidth?: string;\n /**\n * The width of the description.\n * @default 40%\n */\n descriptionWidth?: string;\n /**\n * Total count of items.\n * @default 10\n */\n itemCount?: number;\n}\n\nconst ListItem = styled.div`\n width: 100%;\n height: 100%;\n\n display: flex;\n align-items: center;\n box-sizing: border-box;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Content = styled.div`\n width: 100%;\n`;\n\nconst DescriptionSkeleton = styled(Skeleton)`\n height: ${(p) => p.theme.sizes.small}em;\n margin-top: 0.3em;\n`;\n\n/**\n * Provides a list placeholder while a user waits for the content to load.\n */\nconst ListSkeleton = forwardRef<FixedSizeList, ListSkeletonProps>(\n (\n {\n hasDescription = false,\n titleWidth = '30%',\n descriptionWidth = '40%',\n itemCount = 10,\n left,\n right,\n ...rest\n },\n ref\n ) => {\n const itemRenderer = useCallback(\n ({ style }) => (\n <ListItem style={style}>\n {left && <LeftAddon>{left}</LeftAddon>}\n\n <Content>\n <Skeleton width={titleWidth} />\n {hasDescription && <DescriptionSkeleton width={descriptionWidth} />}\n </Content>\n\n {right && <RightAddon>{right}</RightAddon>}\n </ListItem>\n ),\n [descriptionWidth, hasDescription, left, right, titleWidth]\n );\n\n return (\n <List\n itemCount={itemCount}\n itemRenderer={itemRenderer}\n {...rest}\n ref={ref}\n />\n );\n }\n);\n\nListSkeleton.displayName = 'ListSkeleton';\n\nexport default ListSkeleton;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAoE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BpE,IAAMA,QAAQ,GAAGC,kBAAM,CAACC,GAAG,gQASI,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACC,mBAAmB,CAAC;AAAA,GAGlE,IAAAC,+BAAuB,GAAE,CAC5B;AAED,IAAMC,OAAO,GAAGP,kBAAM,CAACC,GAAG,yFAEzB;AAED,IAAMO,mBAAmB,GAAG,IAAAR,kBAAM,EAACS,oBAAQ,CAAC,mHAChC,UAACP,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACM,KAAK,CAACC,KAAK;AAAA,EAErC;;AAED;AACA;AACA;AACA,IAAMC,YAAY,gBAAG,IAAAC,iBAAU,EAC7B,gBAUEC,GAAG,EACA;EAAA,+BATDC,cAAc;IAAdA,cAAc,oCAAG,KAAK;IAAA,uBACtBC,UAAU;IAAVA,UAAU,gCAAG,KAAK;IAAA,6BAClBC,gBAAgB;IAAhBA,gBAAgB,sCAAG,KAAK;IAAA,sBACxBC,SAAS;IAATA,SAAS,+BAAG,EAAE;IACdC,IAAI,QAAJA,IAAI;IACJC,KAAK,QAALA,KAAK;IACFC,IAAI;EAIT,IAAMC,YAAY,GAAG,IAAAC,kBAAW,EAC9B;IAAA,IAAGC,KAAK,SAALA,KAAK;IAAA,oBACN,gCAAC,QAAQ;MAAC,KAAK,EAAEA;IAAM,GACpBL,IAAI,iBAAI,gCAAC,0BAAS,QAAEA,IAAI,CAAa,eAEtC,gCAAC,OAAO,qBACN,gCAAC,oBAAQ;MAAC,KAAK,EAAEH;IAAW,EAAG,EAC9BD,cAAc,iBAAI,gCAAC,mBAAmB;MAAC,KAAK,EAAEE;IAAiB,EAAG,CAC3D,EAETG,KAAK,iBAAI,gCAAC,2BAAU,QAAEA,KAAK,CAAc,CACjC;EAAA,CACZ,EACD,CAACH,gBAAgB,EAAEF,cAAc,EAAEI,IAAI,EAAEC,KAAK,EAAEJ,UAAU,CAAC,CAC5D;EAED,oBACE,gCAAC,gBAAI;IACH,SAAS,EAAEE,SAAU;IACrB,YAAY,EAAEI;EAAa,GACvBD,IAAI;IACR,GAAG,EAAEP;EAAI,GACT;AAEN,CAAC,CACF;AAEDF,YAAY,CAACa,WAAW,GAAG,cAAc;AAAC,eAE3Bb,YAAY;AAAA"}
1
+ {"version":3,"file":"index.js","names":["ListItem","styled","div","p","clr","theme","listItemColorBorder","horizontalPaddingStyles","Content","DescriptionSkeleton","Skeleton","sizes","small","LeftAddon","colorText","listItemAddonPaddingHorizontal","RightAddon","ListSkeleton","forwardRef","ref","hasDescription","titleWidth","descriptionWidth","itemCount","left","right","rest","itemRenderer","useCallback","style","displayName"],"sources":["../../../src/ListSkeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { horizontalPaddingStyles } from '@os-design/styles';\nimport { clr } from '@os-design/theming';\nimport React, { forwardRef, useCallback } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport List, { ListProps } from '../List';\nimport { ListItemProps } from '../ListItem';\nimport Skeleton from '../Skeleton';\n\nexport interface ListSkeletonProps\n extends Omit<ListProps, 'itemCount' | 'itemRenderer'>,\n Pick<ListItemProps, 'left' | 'right'> {\n /**\n * The description placeholder.\n * @default false\n */\n hasDescription?: boolean;\n /**\n * The width of the title.\n * @default 30%\n */\n titleWidth?: string;\n /**\n * The width of the description.\n * @default 40%\n */\n descriptionWidth?: string;\n /**\n * Total count of items.\n * @default 10\n */\n itemCount?: number;\n}\n\nconst ListItem = styled.div`\n width: 100%;\n height: 100%;\n\n display: flex;\n align-items: center;\n box-sizing: border-box;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Content = styled.div`\n width: 100%;\n`;\n\nconst DescriptionSkeleton = styled(Skeleton)`\n height: ${(p) => p.theme.sizes.small}em;\n margin-top: 0.3em;\n`;\n\nconst LeftAddon = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n padding-right: ${(p) => p.theme.listItemAddonPaddingHorizontal}em;\n`;\n\nconst RightAddon = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n margin-left: auto;\n padding-left: ${(p) => p.theme.listItemAddonPaddingHorizontal}em;\n`;\n\n/**\n * Provides a list placeholder while a user waits for the content to load.\n */\nconst ListSkeleton = forwardRef<FixedSizeList, ListSkeletonProps>(\n (\n {\n hasDescription = false,\n titleWidth = '30%',\n descriptionWidth = '40%',\n itemCount = 10,\n left,\n right,\n ...rest\n },\n ref\n ) => {\n const itemRenderer = useCallback(\n ({ style }) => (\n <ListItem style={style}>\n {left && <LeftAddon>{left}</LeftAddon>}\n\n <Content>\n <Skeleton width={titleWidth} />\n {hasDescription && <DescriptionSkeleton width={descriptionWidth} />}\n </Content>\n\n {right && <RightAddon>{right}</RightAddon>}\n </ListItem>\n ),\n [descriptionWidth, hasDescription, left, right, titleWidth]\n );\n\n return (\n <List\n itemCount={itemCount}\n itemRenderer={itemRenderer}\n {...rest}\n ref={ref}\n />\n );\n }\n);\n\nListSkeleton.displayName = 'ListSkeleton';\n\nexport default ListSkeleton;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BnC,IAAMA,QAAQ,GAAGC,kBAAM,CAACC,GAAG,gQASI,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACC,mBAAmB,CAAC;AAAA,GAGlE,IAAAC,+BAAuB,GAAE,CAC5B;AAED,IAAMC,OAAO,GAAGP,kBAAM,CAACC,GAAG,yFAEzB;AAED,IAAMO,mBAAmB,GAAG,IAAAR,kBAAM,EAACS,oBAAQ,CAAC,mHAChC,UAACP,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACM,KAAK,CAACC,KAAK;AAAA,EAErC;AAED,IAAMC,SAAS,GAAGZ,kBAAM,CAACC,GAAG,oHACjB,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACS,SAAS,CAAC;AAAA,GACrB,UAACX,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACU,8BAA8B;AAAA,EAC/D;AAED,IAAMC,UAAU,GAAGf,kBAAM,CAACC,GAAG,yIAClB,UAACC,CAAC;EAAA,OAAK,IAAAC,YAAG,EAACD,CAAC,CAACE,KAAK,CAACS,SAAS,CAAC;AAAA,GAEtB,UAACX,CAAC;EAAA,OAAKA,CAAC,CAACE,KAAK,CAACU,8BAA8B;AAAA,EAC9D;;AAED;AACA;AACA;AACA,IAAME,YAAY,gBAAG,IAAAC,iBAAU,EAC7B,gBAUEC,GAAG,EACA;EAAA,+BATDC,cAAc;IAAdA,cAAc,oCAAG,KAAK;IAAA,uBACtBC,UAAU;IAAVA,UAAU,gCAAG,KAAK;IAAA,6BAClBC,gBAAgB;IAAhBA,gBAAgB,sCAAG,KAAK;IAAA,sBACxBC,SAAS;IAATA,SAAS,+BAAG,EAAE;IACdC,IAAI,QAAJA,IAAI;IACJC,KAAK,QAALA,KAAK;IACFC,IAAI;EAIT,IAAMC,YAAY,GAAG,IAAAC,kBAAW,EAC9B;IAAA,IAAGC,KAAK,SAALA,KAAK;IAAA,oBACN,gCAAC,QAAQ;MAAC,KAAK,EAAEA;IAAM,GACpBL,IAAI,iBAAI,gCAAC,SAAS,QAAEA,IAAI,CAAa,eAEtC,gCAAC,OAAO,qBACN,gCAAC,oBAAQ;MAAC,KAAK,EAAEH;IAAW,EAAG,EAC9BD,cAAc,iBAAI,gCAAC,mBAAmB;MAAC,KAAK,EAAEE;IAAiB,EAAG,CAC3D,EAETG,KAAK,iBAAI,gCAAC,UAAU,QAAEA,KAAK,CAAc,CACjC;EAAA,CACZ,EACD,CAACH,gBAAgB,EAAEF,cAAc,EAAEI,IAAI,EAAEC,KAAK,EAAEJ,UAAU,CAAC,CAC5D;EAED,oBACE,gCAAC,gBAAI;IACH,SAAS,EAAEE,SAAU;IACrB,YAAY,EAAEI;EAAa,GACvBD,IAAI;IACR,GAAG,EAAEP;EAAI,GACT;AAEN,CAAC,CACF;AAEDF,YAAY,CAACa,WAAW,GAAG,cAAc;AAAC,eAE3Bb,YAAY;AAAA"}
@@ -1,12 +1,10 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import React, { forwardRef, useMemo } from 'react';
3
2
  import styled from '@emotion/styled';
4
- import { horizontalPaddingStyles } from '@os-design/styles';
5
- import { isTouchDevice, useSwipe } from '@os-design/utils';
3
+ import { ellipsisStyles, horizontalPaddingStyles } from '@os-design/styles';
6
4
  import { clr } from '@os-design/theming';
7
- import ListItemContent from './ListItemContent';
8
- export const ListItemContainer = styled.div`
9
- position: relative;
5
+ import React, { forwardRef } from 'react';
6
+ import ListItemActions from '../ListItemActions';
7
+ const Container = styled(ListItemActions)`
10
8
  box-sizing: border-box;
11
9
  min-height: 4em;
12
10
  overflow: hidden;
@@ -18,23 +16,30 @@ export const ListItemContainer = styled.div`
18
16
  border-bottom: 1px solid ${p => clr(p.theme.listItemColorBorder)};
19
17
  }
20
18
 
21
- @media (hover: hover) {
22
- // Hide actions by default
23
- & > nav {
24
- opacity: 0;
25
- }
26
-
27
- // Display actions either on focus, or on hover
28
- &:hover,
29
- &:focus-within {
30
- & > nav {
31
- opacity: 1;
32
- }
33
- }
34
- }
35
-
36
19
  ${horizontalPaddingStyles()};
37
20
  `;
21
+ const Content = styled.div`
22
+ overflow: hidden;
23
+ `;
24
+ const Title = styled.div`
25
+ color: ${p => clr(p.theme.colorText)};
26
+ font-weight: 500;
27
+ ${ellipsisStyles};
28
+ `;
29
+ const Description = styled.div`
30
+ color: ${p => clr(p.theme.listItemColorDescription)};
31
+ font-size: ${p => p.theme.sizes.small}em;
32
+ ${ellipsisStyles};
33
+ `;
34
+ const LeftAddon = styled.div`
35
+ color: ${p => clr(p.theme.colorText)};
36
+ padding-right: ${p => p.theme.listItemAddonPaddingHorizontal}em;
37
+ `;
38
+ const RightAddon = styled.div`
39
+ color: ${p => clr(p.theme.colorText)};
40
+ margin-left: auto;
41
+ padding-left: ${p => p.theme.listItemAddonPaddingHorizontal}em;
42
+ `;
38
43
 
39
44
  /**
40
45
  * The base list item.
@@ -44,41 +49,10 @@ const ListItem = /*#__PURE__*/forwardRef(({
44
49
  description,
45
50
  left,
46
51
  right,
47
- actions = [],
48
- onTouchStart = () => {},
49
- onTouchMove = () => {},
50
- onTouchEnd = () => {},
51
52
  ...rest
52
- }, ref) => {
53
- const touchDevice = useMemo(() => isTouchDevice(), []);
54
- const {
55
- opened,
56
- handlers
57
- } = useSwipe();
58
- return /*#__PURE__*/React.createElement(ListItemContainer, _extends({}, rest, {
59
- onTouchStart: e => {
60
- handlers.onTouchStart(e);
61
- onTouchStart(e);
62
- },
63
- onTouchMove: e => {
64
- handlers.onTouchMove(e);
65
- onTouchMove(e);
66
- },
67
- onTouchEnd: e => {
68
- handlers.onTouchEnd(e);
69
- onTouchEnd(e);
70
- },
71
- ref: ref
72
- }), /*#__PURE__*/React.createElement(ListItemContent, {
73
- title: title,
74
- description: description,
75
- left: left,
76
- right: right,
77
- actions: actions,
78
- hasSwipe: touchDevice,
79
- opened: opened
80
- }));
81
- });
53
+ }, ref) => /*#__PURE__*/React.createElement(Container, _extends({}, rest, {
54
+ ref: ref
55
+ }), left && /*#__PURE__*/React.createElement(LeftAddon, null, left), /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(Title, null, title), description && /*#__PURE__*/React.createElement(Description, null, description)), right && /*#__PURE__*/React.createElement(RightAddon, null, right)));
82
56
  ListItem.displayName = 'ListItem';
83
57
  export default ListItem;
84
58
  //# sourceMappingURL=index.js.map