@pisell/materials 1.0.1057 → 1.0.1059

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 (202) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +3 -3
  6. package/build/lowcode/preview.js +9 -9
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +20 -20
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +23 -23
  11. package/es/components/PisellCards/index.d.ts +3 -0
  12. package/es/components/PisellCards/index.js +3 -1
  13. package/es/components/PisellContactBrief/PisellContactBrief.d.ts +13 -0
  14. package/es/components/PisellContactBrief/PisellContactBrief.js +223 -0
  15. package/es/components/PisellContactBrief/PisellContactBrief.less +192 -0
  16. package/es/components/PisellContactBrief/PisellContactBrief.stories.d.ts +31 -0
  17. package/es/components/PisellContactBrief/PisellContactBrief.stories.js +196 -0
  18. package/es/components/PisellContactBrief/components/ContactFormModal.d.ts +23 -0
  19. package/es/components/PisellContactBrief/components/ContactFormModal.js +177 -0
  20. package/es/components/PisellContactBrief/components/index.d.ts +5 -0
  21. package/es/components/PisellContactBrief/components/index.js +4 -0
  22. package/es/components/PisellContactBrief/index.d.ts +6 -0
  23. package/es/components/PisellContactBrief/index.js +5 -0
  24. package/es/components/PisellContactBrief/locales.d.ts +55 -0
  25. package/es/components/PisellContactBrief/locales.js +54 -0
  26. package/es/components/PisellContactBrief/types.d.ts +82 -0
  27. package/es/components/PisellContactBrief/types.js +1 -0
  28. package/es/components/dataSourceComponents/fields/Tabs/Tabs.less +8 -0
  29. package/es/components/pisellActionPanel/PisellActionPanel.d.ts +13 -0
  30. package/es/components/pisellActionPanel/PisellActionPanel.js +98 -0
  31. package/es/components/pisellActionPanel/PisellActionPanel.less +69 -0
  32. package/es/components/pisellActionPanel/PisellActionPanel.stories.d.ts +19 -0
  33. package/es/components/pisellActionPanel/PisellActionPanel.stories.js +208 -0
  34. package/es/components/pisellActionPanel/index.d.ts +6 -0
  35. package/es/components/pisellActionPanel/index.js +5 -0
  36. package/es/components/pisellActionPanel/types.d.ts +83 -0
  37. package/es/components/pisellActionPanel/types.js +1 -0
  38. package/es/components/pisellBaseCard/PisellBaseCard.d.ts +8 -0
  39. package/es/components/pisellBaseCard/PisellBaseCard.js +96 -0
  40. package/es/components/pisellBaseCard/PisellBaseCard.less +25 -0
  41. package/es/components/pisellBaseCard/PisellBaseCard.stories.d.ts +19 -0
  42. package/es/components/pisellBaseCard/PisellBaseCard.stories.js +99 -0
  43. package/es/components/pisellBaseCard/index.d.ts +5 -0
  44. package/es/components/pisellBaseCard/index.js +4 -0
  45. package/es/components/pisellBaseCard/types.d.ts +45 -0
  46. package/es/components/pisellBaseCard/types.js +1 -0
  47. package/es/components/pisellCurrency/PisellCurrency.js +18 -12
  48. package/es/components/pisellCurrency/PisellCurrency.less +0 -123
  49. package/es/components/pisellCustomerBrief/PisellCustomerBrief.d.ts +15 -0
  50. package/es/components/pisellCustomerBrief/PisellCustomerBrief.js +145 -0
  51. package/es/components/pisellCustomerBrief/PisellCustomerBrief.less +8 -0
  52. package/es/components/pisellCustomerBrief/PisellCustomerBrief.stories.d.ts +23 -0
  53. package/es/components/pisellCustomerBrief/PisellCustomerBrief.stories.js +193 -0
  54. package/es/components/pisellCustomerBrief/index.d.ts +6 -0
  55. package/es/components/pisellCustomerBrief/index.js +5 -0
  56. package/es/components/pisellCustomerBrief/types.d.ts +82 -0
  57. package/es/components/pisellCustomerBrief/types.js +1 -0
  58. package/es/components/pisellEmail/PisellEmail.js +48 -42
  59. package/es/components/pisellEmail/PisellEmail.less +0 -92
  60. package/es/components/pisellEntityCard/PisellEntityCard.d.ts +8 -0
  61. package/es/components/pisellEntityCard/PisellEntityCard.js +474 -0
  62. package/es/components/pisellEntityCard/PisellEntityCard.less +362 -0
  63. package/es/components/pisellEntityCard/PisellEntityCard.stories.d.ts +47 -0
  64. package/es/components/pisellEntityCard/PisellEntityCard.stories.js +450 -0
  65. package/es/components/pisellEntityCard/index.d.ts +5 -0
  66. package/es/components/pisellEntityCard/index.js +4 -0
  67. package/es/components/pisellEntityCard/types.d.ts +144 -0
  68. package/es/components/pisellEntityCard/types.js +1 -0
  69. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +32 -4
  70. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.stories.js +4 -2
  71. package/es/components/pisellFloorMapLayout/components/ViewControls.d.ts +4 -0
  72. package/es/components/pisellFloorMapLayout/components/ViewControls.js +12 -2
  73. package/es/components/pisellFloorMapLayout/types.d.ts +2 -0
  74. package/es/components/pisellLongText/PisellLongText.js +18 -12
  75. package/es/components/pisellLongText/PisellLongText.less +0 -67
  76. package/es/components/pisellLookup/PisellLookup.js +8 -1
  77. package/es/components/pisellMultipleSelect/PisellMultipleSelect.js +14 -6
  78. package/es/components/pisellMultipleSelect/PisellMultipleSelect.less +18 -139
  79. package/es/components/pisellMultipleSelect/components/EditView.js +1 -0
  80. package/es/components/pisellNumber/PisellNumber.js +18 -12
  81. package/es/components/pisellNumber/PisellNumber.less +0 -103
  82. package/es/components/pisellPhone/PisellPhone.js +18 -12
  83. package/es/components/pisellPhone/PisellPhone.less +0 -119
  84. package/es/components/pisellPhone/components/EditView.js +44 -33
  85. package/es/components/pisellPhone/constants/countryCodes.d.ts +1 -0
  86. package/es/components/pisellPhone/constants/countryCodes.js +26 -25
  87. package/es/components/pisellPhone/types.d.ts +2 -2
  88. package/es/components/pisellPhone/utils/countryCodeHelper.d.ts +4 -4
  89. package/es/components/pisellPhone/utils/countryCodeHelper.js +5 -5
  90. package/es/components/pisellRating/PisellRating.js +7 -3
  91. package/es/components/pisellSingleLineText/PisellSingleLineText.js +27 -20
  92. package/es/components/pisellSingleLineText/PisellSingleLineText.less +58 -201
  93. package/es/components/pisellSingleSelect/PisellSingleSelect.js +14 -5
  94. package/es/components/pisellSingleSelect/PisellSingleSelect.less +5 -106
  95. package/es/components/pisellUrl/PisellUrl.js +48 -42
  96. package/es/components/pisellWalletPassCard/index.js +2 -1
  97. package/es/index.d.ts +15 -4
  98. package/es/index.js +8 -4
  99. package/es/theme/pisell-components.d.ts +14 -0
  100. package/es/theme/pisell-components.js +74 -0
  101. package/lib/components/PisellCards/index.d.ts +3 -0
  102. package/lib/components/PisellCards/index.js +3 -1
  103. package/lib/components/PisellContactBrief/PisellContactBrief.d.ts +13 -0
  104. package/lib/components/PisellContactBrief/PisellContactBrief.js +231 -0
  105. package/lib/components/PisellContactBrief/PisellContactBrief.less +192 -0
  106. package/lib/components/PisellContactBrief/PisellContactBrief.stories.d.ts +31 -0
  107. package/lib/components/PisellContactBrief/PisellContactBrief.stories.js +188 -0
  108. package/lib/components/PisellContactBrief/components/ContactFormModal.d.ts +23 -0
  109. package/lib/components/PisellContactBrief/components/ContactFormModal.js +154 -0
  110. package/lib/components/PisellContactBrief/components/index.d.ts +5 -0
  111. package/lib/components/PisellContactBrief/components/index.js +29 -0
  112. package/lib/components/PisellContactBrief/index.d.ts +6 -0
  113. package/lib/components/PisellContactBrief/index.js +29 -0
  114. package/lib/components/PisellContactBrief/locales.d.ts +55 -0
  115. package/lib/components/PisellContactBrief/locales.js +74 -0
  116. package/lib/components/PisellContactBrief/types.d.ts +82 -0
  117. package/lib/components/PisellContactBrief/types.js +17 -0
  118. package/lib/components/dataSourceComponents/fields/Tabs/Tabs.less +8 -0
  119. package/lib/components/pisellActionPanel/PisellActionPanel.d.ts +13 -0
  120. package/lib/components/pisellActionPanel/PisellActionPanel.js +124 -0
  121. package/lib/components/pisellActionPanel/PisellActionPanel.less +69 -0
  122. package/lib/components/pisellActionPanel/PisellActionPanel.stories.d.ts +19 -0
  123. package/lib/components/pisellActionPanel/PisellActionPanel.stories.js +186 -0
  124. package/lib/components/pisellActionPanel/index.d.ts +6 -0
  125. package/lib/components/pisellActionPanel/index.js +29 -0
  126. package/lib/components/pisellActionPanel/types.d.ts +83 -0
  127. package/lib/components/pisellActionPanel/types.js +17 -0
  128. package/lib/components/pisellBaseCard/PisellBaseCard.d.ts +8 -0
  129. package/lib/components/pisellBaseCard/PisellBaseCard.js +124 -0
  130. package/lib/components/pisellBaseCard/PisellBaseCard.less +25 -0
  131. package/lib/components/pisellBaseCard/PisellBaseCard.stories.d.ts +19 -0
  132. package/lib/components/pisellBaseCard/PisellBaseCard.stories.js +107 -0
  133. package/lib/components/pisellBaseCard/index.d.ts +5 -0
  134. package/lib/components/pisellBaseCard/index.js +29 -0
  135. package/lib/components/pisellBaseCard/types.d.ts +45 -0
  136. package/lib/components/pisellBaseCard/types.js +17 -0
  137. package/lib/components/pisellCurrency/PisellCurrency.js +16 -10
  138. package/lib/components/pisellCurrency/PisellCurrency.less +0 -123
  139. package/lib/components/pisellCustomerBrief/PisellCustomerBrief.d.ts +15 -0
  140. package/lib/components/pisellCustomerBrief/PisellCustomerBrief.js +143 -0
  141. package/lib/components/pisellCustomerBrief/PisellCustomerBrief.less +8 -0
  142. package/lib/components/pisellCustomerBrief/PisellCustomerBrief.stories.d.ts +23 -0
  143. package/lib/components/pisellCustomerBrief/PisellCustomerBrief.stories.js +171 -0
  144. package/lib/components/pisellCustomerBrief/index.d.ts +6 -0
  145. package/lib/components/pisellCustomerBrief/index.js +29 -0
  146. package/lib/components/pisellCustomerBrief/types.d.ts +82 -0
  147. package/lib/components/pisellCustomerBrief/types.js +17 -0
  148. package/lib/components/pisellEmail/PisellEmail.js +16 -10
  149. package/lib/components/pisellEmail/PisellEmail.less +0 -92
  150. package/lib/components/pisellEntityCard/PisellEntityCard.d.ts +8 -0
  151. package/lib/components/pisellEntityCard/PisellEntityCard.js +426 -0
  152. package/lib/components/pisellEntityCard/PisellEntityCard.less +362 -0
  153. package/lib/components/pisellEntityCard/PisellEntityCard.stories.d.ts +47 -0
  154. package/lib/components/pisellEntityCard/PisellEntityCard.stories.js +349 -0
  155. package/lib/components/pisellEntityCard/index.d.ts +5 -0
  156. package/lib/components/pisellEntityCard/index.js +29 -0
  157. package/lib/components/pisellEntityCard/types.d.ts +144 -0
  158. package/lib/components/pisellEntityCard/types.js +17 -0
  159. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +22 -3
  160. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.stories.js +2 -2
  161. package/lib/components/pisellFloorMapLayout/components/ViewControls.d.ts +4 -0
  162. package/lib/components/pisellFloorMapLayout/components/ViewControls.js +11 -1
  163. package/lib/components/pisellFloorMapLayout/types.d.ts +2 -0
  164. package/lib/components/pisellLongText/PisellLongText.js +16 -10
  165. package/lib/components/pisellLongText/PisellLongText.less +0 -67
  166. package/lib/components/pisellLookup/PisellLookup.js +5 -1
  167. package/lib/components/pisellMultipleSelect/PisellMultipleSelect.js +62 -53
  168. package/lib/components/pisellMultipleSelect/PisellMultipleSelect.less +18 -139
  169. package/lib/components/pisellMultipleSelect/components/EditView.js +42 -30
  170. package/lib/components/pisellNumber/PisellNumber.js +16 -10
  171. package/lib/components/pisellNumber/PisellNumber.less +0 -103
  172. package/lib/components/pisellPhone/PisellPhone.js +16 -10
  173. package/lib/components/pisellPhone/PisellPhone.less +0 -119
  174. package/lib/components/pisellPhone/components/EditView.js +40 -24
  175. package/lib/components/pisellPhone/constants/countryCodes.d.ts +1 -0
  176. package/lib/components/pisellPhone/constants/countryCodes.js +24 -24
  177. package/lib/components/pisellPhone/types.d.ts +2 -2
  178. package/lib/components/pisellPhone/utils/countryCodeHelper.d.ts +4 -4
  179. package/lib/components/pisellPhone/utils/countryCodeHelper.js +1 -1
  180. package/lib/components/pisellRating/PisellRating.js +4 -2
  181. package/lib/components/pisellSingleLineText/PisellSingleLineText.js +16 -10
  182. package/lib/components/pisellSingleLineText/PisellSingleLineText.less +58 -201
  183. package/lib/components/pisellSingleSelect/PisellSingleSelect.js +34 -35
  184. package/lib/components/pisellSingleSelect/PisellSingleSelect.less +5 -106
  185. package/lib/components/pisellUrl/PisellUrl.js +16 -10
  186. package/lib/components/pisellWalletPassCard/index.js +1 -1
  187. package/lib/index.d.ts +15 -4
  188. package/lib/index.js +18 -3
  189. package/lib/theme/pisell-components.d.ts +14 -0
  190. package/lib/theme/pisell-components.js +89 -0
  191. package/lowcode/pisell-action-panel/meta.ts +146 -0
  192. package/lowcode/pisell-action-panel/snippets.ts +42 -0
  193. package/lowcode/pisell-base-card/meta.ts +98 -0
  194. package/lowcode/pisell-base-card/snippets.ts +13 -0
  195. package/lowcode/pisell-contact-brief/meta.ts +178 -0
  196. package/lowcode/pisell-contact-brief/snippets.ts +40 -0
  197. package/lowcode/pisell-customer-brief/meta.ts +262 -0
  198. package/lowcode/pisell-customer-brief/snippets.ts +46 -0
  199. package/lowcode/pisell-entity-card/meta.ts +296 -0
  200. package/lowcode/pisell-entity-card/snippets.ts +41 -0
  201. package/lowcode/pisell-floor-map-layout/meta.ts +37 -1
  202. package/package.json +4 -4
@@ -1,9 +1,11 @@
1
+ import { PisellEntityCard } from '../pisellEntityCard';
1
2
  declare const PisellCards: {
2
3
  TabCard: (props: any) => JSX.Element;
3
4
  TextCard: (props: any) => JSX.Element;
4
5
  GraphicTextCard: (props: import("./components/GraphicTextCard").GraphicTextCardProps) => JSX.Element;
5
6
  MultilevelCard: (props: any) => JSX.Element;
6
7
  PisellImageCard: (props: import("./components/PisellImageCard").PisellImageCardProps) => JSX.Element;
8
+ PisellEntityCard: typeof PisellEntityCard;
7
9
  };
8
10
  export default PisellCards;
9
11
  export type { PisellBasicCardProps } from './types';
@@ -12,3 +14,4 @@ export type { TextCardProps } from './components/TextCard/types';
12
14
  export type { GraphicTextCardProps, GraphicTextCardVariant, GraphicTextCardSize, GraphicConfig, } from './components/GraphicTextCard/types';
13
15
  export type { MultilevelCardProps } from './components/MultilevelCard/types';
14
16
  export type { PisellImageCardProps, ImageDataSource, ImageFillMode, } from './components/PisellImageCard/types';
17
+ export type { PisellEntityCardProps, EntityCardDensity, EntityCardLayout, EntityCardWidth, EntityCardMediaType, EntityCardMediaConfig, EntityCardSecondaryItem, EntityCardTagItem, EntityCardActionItem, EntityCardTagPosition, } from '../pisellEntityCard';
@@ -7,6 +7,7 @@ import TextCard from "./components/TextCard";
7
7
  import GraphicTextCard from "./components/GraphicTextCard";
8
8
  import MultilevelCard from "./components/MultilevelCard";
9
9
  import PisellImageCard from "./components/PisellImageCard";
10
+ import { PisellEntityCard } from "../pisellEntityCard";
10
11
 
11
12
  // 命名空间导出
12
13
  var PisellCards = {
@@ -14,7 +15,8 @@ var PisellCards = {
14
15
  TextCard: TextCard,
15
16
  GraphicTextCard: GraphicTextCard,
16
17
  MultilevelCard: MultilevelCard,
17
- PisellImageCard: PisellImageCard
18
+ PisellImageCard: PisellImageCard,
19
+ PisellEntityCard: PisellEntityCard
18
20
  };
19
21
  export default PisellCards;
20
22
 
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import type { PisellContactBriefCreateButtonProps, PisellContactBriefProps } from './types';
3
+ import './PisellContactBrief.less';
4
+ /**
5
+ * PisellContactBrief 联系人简要卡片
6
+ * 基于 PisellEntityCard 展示姓名、电话、邮箱及扩展字段,右侧编辑图标调起编辑弹窗
7
+ */
8
+ export declare function PisellContactBrief({ name, phone, email, avatar, extraData, extraFields, onSubmit, onDelete, swipeToDelete, layout, showAvatar, showPhone, showEmail, primaryLineClamp, secondaryLineClamp, className, style, hoverStyle, activeStyle, disabledStyle, clickable, disabled, onClick, }: PisellContactBriefProps): JSX.Element;
9
+ /**
10
+ * 新建联系人入口按钮
11
+ * 展示「Add Contact」+ 占位头像 + plus 图标,点击打开新建弹窗
12
+ */
13
+ export declare function PisellContactBriefCreateButton({ extraFields, onCreate, onClick: onClickProp, className, style, }: PisellContactBriefCreateButtonProps): JSX.Element;
@@ -0,0 +1,223 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ 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); }
10
+ 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; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
14
+ import { EditOutlined, PlusCircleOutlined } from '@ant-design/icons';
15
+ import { locales } from '@pisell/utils';
16
+ import { PisellEntityCard } from "../pisellEntityCard";
17
+ import { ContactFormModal } from "./components";
18
+ import contactBriefLocales from "./locales";
19
+ import "./PisellContactBrief.less";
20
+
21
+ /** 初始化多语言(合并到全局 locales),确保 getText 能取到本组件文案 */
22
+ function ensureLocales() {
23
+ try {
24
+ var _getLocale, _getLocale2, _ref;
25
+ var current = (_getLocale = (_getLocale2 = (_ref = locales).getLocale) === null || _getLocale2 === void 0 ? void 0 : _getLocale2.call(_ref)) !== null && _getLocale !== void 0 ? _getLocale : 'en';
26
+ var locale = current === 'zh-TW' ? 'zh-HK' : current;
27
+ locales.init(contactBriefLocales, locale);
28
+ } catch (_unused) {
29
+ // 忽略 init 异常
30
+ }
31
+ }
32
+
33
+ /**
34
+ * PisellContactBrief 联系人简要卡片
35
+ * 基于 PisellEntityCard 展示姓名、电话、邮箱及扩展字段,右侧编辑图标调起编辑弹窗
36
+ */
37
+ export function PisellContactBrief(_ref2) {
38
+ var name = _ref2.name,
39
+ phone = _ref2.phone,
40
+ email = _ref2.email,
41
+ avatar = _ref2.avatar,
42
+ _ref2$extraData = _ref2.extraData,
43
+ extraData = _ref2$extraData === void 0 ? {} : _ref2$extraData,
44
+ _ref2$extraFields = _ref2.extraFields,
45
+ extraFields = _ref2$extraFields === void 0 ? [] : _ref2$extraFields,
46
+ onSubmit = _ref2.onSubmit,
47
+ onDelete = _ref2.onDelete,
48
+ _ref2$swipeToDelete = _ref2.swipeToDelete,
49
+ swipeToDelete = _ref2$swipeToDelete === void 0 ? false : _ref2$swipeToDelete,
50
+ _ref2$layout = _ref2.layout,
51
+ layout = _ref2$layout === void 0 ? 'horizontal' : _ref2$layout,
52
+ _ref2$showAvatar = _ref2.showAvatar,
53
+ showAvatar = _ref2$showAvatar === void 0 ? true : _ref2$showAvatar,
54
+ _ref2$showPhone = _ref2.showPhone,
55
+ showPhone = _ref2$showPhone === void 0 ? true : _ref2$showPhone,
56
+ _ref2$showEmail = _ref2.showEmail,
57
+ showEmail = _ref2$showEmail === void 0 ? true : _ref2$showEmail,
58
+ primaryLineClamp = _ref2.primaryLineClamp,
59
+ secondaryLineClamp = _ref2.secondaryLineClamp,
60
+ className = _ref2.className,
61
+ style = _ref2.style,
62
+ hoverStyle = _ref2.hoverStyle,
63
+ activeStyle = _ref2.activeStyle,
64
+ disabledStyle = _ref2.disabledStyle,
65
+ _ref2$clickable = _ref2.clickable,
66
+ clickable = _ref2$clickable === void 0 ? true : _ref2$clickable,
67
+ _ref2$disabled = _ref2.disabled,
68
+ disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
69
+ onClick = _ref2.onClick;
70
+ var _useState = useState(false),
71
+ _useState2 = _slicedToArray(_useState, 2),
72
+ editModalVisible = _useState2[0],
73
+ setEditModalVisible = _useState2[1];
74
+ useEffect(function () {
75
+ ensureLocales();
76
+ }, []);
77
+ var media = useMemo(function () {
78
+ if (!showAvatar) return undefined;
79
+ return {
80
+ type: 'avatar',
81
+ src: avatar,
82
+ alt: name,
83
+ size: 32,
84
+ shape: 'circle'
85
+ };
86
+ }, [showAvatar, avatar, name]);
87
+ var secondaryTexts = useMemo(function () {
88
+ var list = [];
89
+ if (showEmail && email) list.push({
90
+ text: email
91
+ });
92
+ extraFields.forEach(function (f) {
93
+ var v = extraData[f.key];
94
+ if (v) list.push({
95
+ text: v
96
+ });
97
+ });
98
+ return list;
99
+ }, [showEmail, email, extraFields, extraData]);
100
+ var editAction = useMemo(function () {
101
+ return {
102
+ type: 'icon',
103
+ icon: /*#__PURE__*/React.createElement(EditOutlined, {
104
+ className: "pisell-contact-brief-action-edit"
105
+ }),
106
+ onClick: function onClick() {
107
+ setEditModalVisible(true);
108
+ }
109
+ };
110
+ }, []);
111
+ var initialEditValues = useMemo(function () {
112
+ return _objectSpread({
113
+ name: name,
114
+ phone: phone,
115
+ email: email
116
+ }, extraData);
117
+ }, [name, phone, email, extraData]);
118
+ var handleEditSubmit = useCallback(function (values) {
119
+ onSubmit === null || onSubmit === void 0 || onSubmit(values);
120
+ setEditModalVisible(false);
121
+ }, [onSubmit]);
122
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
123
+ className: "pisell-contact-brief-wrap"
124
+ }, /*#__PURE__*/React.createElement(PisellEntityCard, {
125
+ className: className,
126
+ style: style,
127
+ hoverStyle: hoverStyle,
128
+ activeStyle: activeStyle,
129
+ disabledStyle: disabledStyle,
130
+ clickable: clickable,
131
+ disabled: disabled,
132
+ onClick: onClick,
133
+ media: media,
134
+ primaryText: name,
135
+ subtitleText: showPhone && phone ? phone : undefined,
136
+ secondaryTexts: secondaryTexts,
137
+ showMedia: showAvatar,
138
+ showPrimaryText: true,
139
+ showSubtitle: showPhone,
140
+ showSecondaryText: true,
141
+ showTags: false,
142
+ showActions: true,
143
+ actions: [editAction],
144
+ density: "B2",
145
+ layout: layout,
146
+ width: "content",
147
+ swipeToDelete: swipeToDelete,
148
+ onDelete: onDelete,
149
+ primaryLineClamp: primaryLineClamp,
150
+ secondaryLineClamp: secondaryLineClamp
151
+ })), /*#__PURE__*/React.createElement(ContactFormModal, {
152
+ visible: editModalVisible,
153
+ onCancel: function onCancel() {
154
+ return setEditModalVisible(false);
155
+ },
156
+ onSubmit: handleEditSubmit,
157
+ mode: "edit",
158
+ initialValues: initialEditValues,
159
+ extraFields: extraFields
160
+ }));
161
+ }
162
+
163
+ /**
164
+ * 新建联系人入口按钮
165
+ * 展示「Add Contact」+ 占位头像 + plus 图标,点击打开新建弹窗
166
+ */
167
+ export function PisellContactBriefCreateButton(_ref3) {
168
+ var _ref3$extraFields = _ref3.extraFields,
169
+ extraFields = _ref3$extraFields === void 0 ? [] : _ref3$extraFields,
170
+ onCreate = _ref3.onCreate,
171
+ onClickProp = _ref3.onClick,
172
+ className = _ref3.className,
173
+ style = _ref3.style;
174
+ var _useState3 = useState(false),
175
+ _useState4 = _slicedToArray(_useState3, 2),
176
+ createModalVisible = _useState4[0],
177
+ setCreateModalVisible = _useState4[1];
178
+ useEffect(function () {
179
+ ensureLocales();
180
+ }, []);
181
+ var handleClick = useCallback(function (e) {
182
+ if (onClickProp) {
183
+ onClickProp(e);
184
+ return;
185
+ }
186
+ setCreateModalVisible(true);
187
+ }, [onClickProp]);
188
+ var handleCreateSubmit = useCallback(function (values) {
189
+ onCreate === null || onCreate === void 0 || onCreate(values);
190
+ setCreateModalVisible(false);
191
+ }, [onCreate]);
192
+ var addContactText = locales.getText('pisell.contact.brief.addContact');
193
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
194
+ role: "button",
195
+ tabIndex: 0,
196
+ className: "pisell-contact-brief-create-btn ".concat(className !== null && className !== void 0 ? className : '').trim(),
197
+ style: style,
198
+ onClick: handleClick,
199
+ onKeyDown: function onKeyDown(e) {
200
+ if (e.key === 'Enter' || e.key === ' ') {
201
+ e.preventDefault();
202
+ handleClick(e);
203
+ }
204
+ }
205
+ }, /*#__PURE__*/React.createElement("span", {
206
+ className: "pisell-contact-brief-create-btn-avatar"
207
+ }, /*#__PURE__*/React.createElement("span", {
208
+ className: "pisell-contact-brief-create-btn-avatar-inner"
209
+ })), /*#__PURE__*/React.createElement("span", {
210
+ className: "pisell-contact-brief-create-btn-text"
211
+ }, addContactText), /*#__PURE__*/React.createElement(PlusCircleOutlined, {
212
+ className: "pisell-contact-brief-create-btn-icon"
213
+ })), /*#__PURE__*/React.createElement(ContactFormModal, {
214
+ visible: createModalVisible,
215
+ onCancel: function onCancel() {
216
+ return setCreateModalVisible(false);
217
+ },
218
+ onSubmit: handleCreateSubmit,
219
+ mode: "create",
220
+ extraFields: extraFields
221
+ }));
222
+ }
223
+ PisellContactBrief.CreateButton = PisellContactBriefCreateButton;
@@ -0,0 +1,192 @@
1
+ /**
2
+ * PisellContactBrief 样式
3
+ * 类名前缀 pisell-contact-brief-
4
+ */
5
+ .pisell-contact-brief-wrap {
6
+ box-sizing: border-box;
7
+ min-width: 0;
8
+ }
9
+
10
+ /* 编辑图标与右侧操作区 */
11
+ .pisell-contact-brief-action-edit {
12
+ font-size: 16px;
13
+ color: #667085;
14
+ }
15
+
16
+ /* 新建按钮:水平布局,占位头像 + 文案 + plus 图标,与设计稿一致 */
17
+ .pisell-contact-brief-create-btn {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 8px;
21
+ min-width: 0;
22
+ padding: 6px 14px;
23
+ box-sizing: border-box;
24
+ cursor: pointer;
25
+ border-radius: 8px;
26
+ border: 1px solid #d0d5dd;
27
+ background-color: #ffffff;
28
+ transition: background-color 0.2s, border-color 0.2s;
29
+
30
+ &:hover {
31
+ background-color: #f9fafb;
32
+ border-color: #d0d5dd;
33
+ }
34
+ }
35
+
36
+ .pisell-contact-brief-create-btn-avatar {
37
+ flex-shrink: 0;
38
+ width: 32px;
39
+ height: 32px;
40
+ border-radius: 50%;
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ background-color: #f2f4f7;
45
+ }
46
+
47
+ .pisell-contact-brief-create-btn-avatar-inner {
48
+ width: 32px;
49
+ height: 32px;
50
+ border-radius: 50%;
51
+ background-color: #e4e7ec;
52
+ }
53
+
54
+ .pisell-contact-brief-create-btn-text {
55
+ flex: 1;
56
+ min-width: 0;
57
+ font-size: 14px;
58
+ font-weight: 500;
59
+ color: #000000;
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ white-space: nowrap;
63
+ }
64
+
65
+ .pisell-contact-brief-create-btn-icon {
66
+ flex-shrink: 0;
67
+ font-size: 24px;
68
+ color: #667085;
69
+ }
70
+
71
+ /* 弹窗:对齐 Figma 新建/编辑弹窗,新建与编辑完全一致 */
72
+ .pisell-contact-brief-modal {
73
+ /* 容器:12px 圆角、Shadow xl */
74
+
75
+ .ant-modal-content,
76
+ .pisell-lowcode-modal-content {
77
+ border-radius: 12px;
78
+ box-shadow: 0 20px 24px -4px rgba(16, 24, 40, 0.08), 0 8px 8px -4px rgba(16, 24, 40, 0.03);
79
+ overflow: hidden;
80
+ padding: 0;
81
+ }
82
+
83
+ /* Header:24px 16px,标题 18px Semibold #101828 */
84
+
85
+ .ant-modal-header,
86
+ .pisell-lowcode-modal-header {
87
+ padding: 16px 24px;
88
+ border-bottom: none;
89
+ margin-bottom: 0;
90
+ }
91
+
92
+ .ant-modal-title,
93
+ .pisell-lowcode-modal-title {
94
+ font-size: 18px;
95
+ font-weight: 600;
96
+ line-height: 28px;
97
+ color: #101828;
98
+ }
99
+
100
+ /* Header 下方分割线 */
101
+
102
+ .ant-modal-header + .ant-modal-body,
103
+ .pisell-lowcode-modal-header + .pisell-lowcode-modal-body {
104
+ border-top: 1px solid #eaecf0;
105
+ }
106
+
107
+ /* Body:24px padding */
108
+
109
+ .ant-modal-body,
110
+ .pisell-lowcode-modal-body {
111
+ padding: 24px;
112
+ }
113
+
114
+ /* 表单:表单项间距 24px */
115
+
116
+ .pisell-contact-brief-modal-form.ant-form,
117
+ .pisell-contact-brief-modal-form.pisell-lowcode-form {
118
+ .ant-form-item,
119
+ .pisell-lowcode-form-item {
120
+ margin-bottom: 24px;
121
+ }
122
+
123
+ .ant-form-item:last-child,
124
+ .pisell-lowcode-form-item:last-child {
125
+ margin-bottom: 0;
126
+ }
127
+ }
128
+
129
+ /* 第一行:Firstname + Lastname 两列,间距 16px */
130
+
131
+ .pisell-contact-brief-modal-form-row {
132
+ display: flex;
133
+ gap: 16px;
134
+
135
+ .ant-form-item,
136
+ .pisell-lowcode-form-item {
137
+ flex: 1;
138
+ margin-bottom: 0;
139
+ }
140
+ }
141
+
142
+ /* Label:14px Medium #344054 */
143
+
144
+ .ant-form-item-label > label,
145
+ .pisell-lowcode-form-item-label > label {
146
+ font-size: 14px;
147
+ font-weight: 500;
148
+ line-height: 20px;
149
+ color: #344054;
150
+ }
151
+
152
+ /* Footer:顶部分割线、24px padding、按钮间距 12px */
153
+
154
+ .ant-modal-footer,
155
+ .pisell-lowcode-modal-footer {
156
+ padding: 24px;
157
+ border-top: 1px solid #eaecf0;
158
+ gap: 12px;
159
+ margin-top: 0;
160
+ }
161
+
162
+ /* 取消:白底、边框 #D0D5DD、48px 高、16px Semibold #344054 */
163
+
164
+ .ant-btn-default,
165
+ .pisell-lowcode-btn-default {
166
+ height: 48px;
167
+ padding: 12px 20px;
168
+ border-radius: 8px;
169
+ border-color: #d0d5dd;
170
+ font-size: 16px;
171
+ font-weight: 600;
172
+ line-height: 24px;
173
+ color: #344054;
174
+ box-shadow: 0 1px 2px 0 rgba(16, 24, 40, 0.05);
175
+ }
176
+
177
+ /* 主按钮:Primary #7F56D9、白字 */
178
+
179
+ .ant-btn-primary,
180
+ .pisell-lowcode-btn-primary {
181
+ height: 48px;
182
+ padding: 12px 20px;
183
+ border-radius: 8px;
184
+ background-color: #7f56d9;
185
+ border-color: #7f56d9;
186
+ font-size: 16px;
187
+ font-weight: 600;
188
+ line-height: 24px;
189
+ color: #fff;
190
+ box-shadow: 0 1px 2px 0 rgba(16, 24, 40, 0.05);
191
+ }
192
+ }
@@ -0,0 +1,31 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { PisellContactBrief } from './PisellContactBrief';
3
+ declare const meta: Meta<typeof PisellContactBrief>;
4
+ export default meta;
5
+ declare type Story = StoryObj<typeof PisellContactBrief>;
6
+ /** 默认:姓名 + 电话 + 邮箱,横向,有编辑图标 */
7
+ export declare const Default: Story;
8
+ /** 无头像(占位) */
9
+ export declare const NoAvatar: Story;
10
+ /** 有头像 */
11
+ export declare const WithAvatar: Story;
12
+ /** 竖向布局 */
13
+ export declare const Vertical: Story;
14
+ /** 仅姓名 + 电话(无邮箱) */
15
+ export declare const NoEmail: Story;
16
+ /** 仅姓名 + 邮箱(无电话) */
17
+ export declare const NoPhone: Story;
18
+ /** 扩展字段:生日、地址 */
19
+ export declare const WithExtraFields: Story;
20
+ /** 左滑删除 */
21
+ export declare const SwipeToDelete: Story;
22
+ /** 编辑提交回调(仅日志) */
23
+ export declare const WithEditSubmit: Story;
24
+ /** 禁用态 */
25
+ export declare const Disabled: Story;
26
+ /** 主文案行数限制为 1 */
27
+ export declare const PrimaryLineClamp: Story;
28
+ /** 新建联系人按钮(CreateButton) */
29
+ export declare const CreateButtonOnly: Story;
30
+ /** 卡片 + 新建按钮(列表场景) */
31
+ export declare const ListWithCreateButton: Story;
@@ -0,0 +1,196 @@
1
+ import { PisellContactBrief } from "./PisellContactBrief";
2
+ var meta = {
3
+ title: 'Data Display/PisellContactBrief',
4
+ component: PisellContactBrief,
5
+ tags: ['autodocs'],
6
+ decorators: [function (Story) {
7
+ return /*#__PURE__*/React.createElement("div", {
8
+ style: {
9
+ width: 340
10
+ }
11
+ }, /*#__PURE__*/React.createElement(Story, null));
12
+ }],
13
+ argTypes: {
14
+ layout: {
15
+ description: '布局方向',
16
+ control: 'radio',
17
+ options: ['horizontal', 'vertical']
18
+ },
19
+ showAvatar: {
20
+ description: '显示头像',
21
+ control: 'boolean'
22
+ },
23
+ showPhone: {
24
+ description: '显示电话',
25
+ control: 'boolean'
26
+ },
27
+ showEmail: {
28
+ description: '显示邮箱',
29
+ control: 'boolean'
30
+ },
31
+ swipeToDelete: {
32
+ description: '开启左滑删除',
33
+ control: 'boolean'
34
+ }
35
+ }
36
+ };
37
+ export default meta;
38
+ /** 默认:姓名 + 电话 + 邮箱,横向,有编辑图标 */
39
+ export var Default = {
40
+ args: {
41
+ name: 'Allen King',
42
+ phone: '+61 412 345 1656',
43
+ email: 'Allenking@pisell.com',
44
+ layout: 'horizontal'
45
+ }
46
+ };
47
+
48
+ /** 无头像(占位) */
49
+ export var NoAvatar = {
50
+ args: {
51
+ name: 'Bill Camp',
52
+ phone: '+86 151 0548 2457',
53
+ email: 'Billcamp@pisell.com',
54
+ showAvatar: true,
55
+ avatar: undefined
56
+ }
57
+ };
58
+
59
+ /** 有头像 */
60
+ export var WithAvatar = {
61
+ args: {
62
+ name: '张三',
63
+ phone: '+86 138 0000 0000',
64
+ email: 'zhangsan@example.com',
65
+ avatar: 'https://ui-avatars.com/api/?name=Zhang+San&background=4a90d9&color=fff&size=32'
66
+ }
67
+ };
68
+
69
+ /** 竖向布局 */
70
+ export var Vertical = {
71
+ args: {
72
+ name: 'Allen King',
73
+ phone: '+61 412 345 1656',
74
+ email: 'Allenking@pisell.com',
75
+ layout: 'vertical'
76
+ }
77
+ };
78
+
79
+ /** 仅姓名 + 电话(无邮箱) */
80
+ export var NoEmail = {
81
+ args: {
82
+ name: 'Bill Camp',
83
+ phone: '(+86 151 0548 2457)',
84
+ showEmail: false
85
+ }
86
+ };
87
+
88
+ /** 仅姓名 + 邮箱(无电话) */
89
+ export var NoPhone = {
90
+ args: {
91
+ name: 'Bill Camp',
92
+ email: 'Billcamp@pisell.com',
93
+ showPhone: false
94
+ }
95
+ };
96
+
97
+ /** 扩展字段:生日、地址 */
98
+ export var WithExtraFields = {
99
+ args: {
100
+ name: 'Bill Camp',
101
+ phone: '+86 151 0548 2457',
102
+ email: 'Billcamp@pisell.com',
103
+ extraFields: [{
104
+ key: 'birthday',
105
+ label: '生日'
106
+ }, {
107
+ key: 'address',
108
+ label: '地址'
109
+ }],
110
+ extraData: {
111
+ birthday: '30 July 1990',
112
+ address: '30 Jersey Parade, suburban, VIC, 3000'
113
+ }
114
+ }
115
+ };
116
+
117
+ /** 左滑删除 */
118
+ export var SwipeToDelete = {
119
+ args: {
120
+ name: 'Bill Camp',
121
+ phone: '+86 151 0548 2457',
122
+ email: 'Billcamp@pisell.com',
123
+ swipeToDelete: true,
124
+ onDelete: function onDelete() {
125
+ return console.log('onDelete');
126
+ }
127
+ }
128
+ };
129
+
130
+ /** 编辑提交回调(仅日志) */
131
+ export var WithEditSubmit = {
132
+ args: {
133
+ name: '张三',
134
+ phone: '138 0000 0000',
135
+ email: 'zhangsan@example.com',
136
+ onSubmit: function onSubmit(values) {
137
+ return console.log('onSubmit', values);
138
+ }
139
+ }
140
+ };
141
+
142
+ /** 禁用态 */
143
+ export var Disabled = {
144
+ args: {
145
+ name: '张三',
146
+ phone: '138 0000 0000',
147
+ email: 'a@b.com',
148
+ disabled: true
149
+ }
150
+ };
151
+
152
+ /** 主文案行数限制为 1 */
153
+ export var PrimaryLineClamp = {
154
+ args: {
155
+ name: '非常长的联系人姓名用于测试单行省略效果',
156
+ phone: '138 0000 0000',
157
+ email: 'a@b.com',
158
+ primaryLineClamp: 1
159
+ }
160
+ };
161
+
162
+ /** 新建联系人按钮(CreateButton) */
163
+ export var CreateButtonOnly = {
164
+ render: function render() {
165
+ return /*#__PURE__*/React.createElement(PisellContactBrief.CreateButton, {
166
+ onCreate: function onCreate(values) {
167
+ return console.log('onCreate', values);
168
+ }
169
+ });
170
+ }
171
+ };
172
+
173
+ /** 卡片 + 新建按钮(列表场景) */
174
+ export var ListWithCreateButton = {
175
+ render: function render() {
176
+ return /*#__PURE__*/React.createElement("div", {
177
+ style: {
178
+ display: 'flex',
179
+ flexDirection: 'column',
180
+ gap: 8,
181
+ width: 340
182
+ }
183
+ }, /*#__PURE__*/React.createElement(PisellContactBrief, {
184
+ name: "Allen King",
185
+ phone: "+61 412 345 1656",
186
+ email: "Allenking@pisell.com",
187
+ onSubmit: function onSubmit(v) {
188
+ return console.log('onSubmit', v);
189
+ }
190
+ }), /*#__PURE__*/React.createElement(PisellContactBrief.CreateButton, {
191
+ onCreate: function onCreate(v) {
192
+ return console.log('onCreate', v);
193
+ }
194
+ }));
195
+ }
196
+ };