@xhsreds/reds-rn-next 0.10.1-beta202511201716 → 0.10.1-beta202511202010

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 (43) hide show
  1. package/coverage/.tmp/coverage-0.json +1 -1
  2. package/coverage/.tmp/coverage-10.json +1 -1
  3. package/coverage/.tmp/coverage-11.json +1 -1
  4. package/coverage/.tmp/coverage-12.json +1 -1
  5. package/coverage/.tmp/coverage-13.json +1 -1
  6. package/coverage/.tmp/coverage-14.json +1 -1
  7. package/coverage/.tmp/coverage-15.json +1 -1
  8. package/coverage/.tmp/coverage-16.json +1 -1
  9. package/coverage/.tmp/coverage-17.json +1 -1
  10. package/coverage/.tmp/coverage-18.json +1 -1
  11. package/coverage/.tmp/coverage-19.json +1 -1
  12. package/coverage/.tmp/coverage-2.json +1 -1
  13. package/coverage/.tmp/coverage-20.json +1 -1
  14. package/coverage/.tmp/coverage-21.json +1 -1
  15. package/coverage/.tmp/coverage-23.json +1 -1
  16. package/coverage/.tmp/coverage-24.json +1 -1
  17. package/coverage/.tmp/coverage-28.json +1 -1
  18. package/coverage/.tmp/coverage-29.json +1 -1
  19. package/coverage/.tmp/coverage-3.json +1 -1
  20. package/coverage/.tmp/coverage-30.json +1 -1
  21. package/coverage/.tmp/coverage-31.json +1 -1
  22. package/coverage/.tmp/coverage-32.json +1 -1
  23. package/coverage/.tmp/coverage-33.json +1 -1
  24. package/coverage/.tmp/coverage-34.json +1 -1
  25. package/coverage/.tmp/coverage-35.json +1 -1
  26. package/coverage/.tmp/coverage-36.json +1 -1
  27. package/coverage/.tmp/coverage-37.json +1 -1
  28. package/coverage/.tmp/coverage-38.json +1 -1
  29. package/coverage/.tmp/coverage-39.json +1 -1
  30. package/coverage/.tmp/coverage-40.json +1 -1
  31. package/coverage/.tmp/coverage-41.json +1 -1
  32. package/coverage/.tmp/coverage-42.json +1 -1
  33. package/coverage/.tmp/coverage-43.json +1 -1
  34. package/coverage/.tmp/coverage-7.json +1 -1
  35. package/coverage/.tmp/coverage-8.json +1 -1
  36. package/coverage/.tmp/coverage-9.json +1 -1
  37. package/lib/cjs/components/PickerView/Wheel.js +21 -15
  38. package/lib/cjs/components/PickerView/Wheel.js.map +1 -1
  39. package/lib/esm/components/PickerView/Wheel.js +21 -15
  40. package/lib/esm/components/PickerView/Wheel.js.map +1 -1
  41. package/package.json +2 -2
  42. package/src/components/DatePicker/demo/index.tsx +26 -0
  43. package/src/components/PickerView/Wheel.tsx +14 -11
@@ -1 +1 @@
1
- {"/builds/fe/infra/reds/packages/reds-rn/src/components/Stepper/interface/index.ts":{"path":"/builds/fe/infra/reds/packages/reds-rn/src/components/Stepper/interface/index.ts","statementMap":{"0":{"start":{"line":1,"column":35},"end":{"line":4,"column":1}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"inputSourceMap":{"version":3,"sources":["/builds/fe/infra/reds/packages/reds-rn/src/components/Stepper/interface/index.ts"],"sourcesContent":["import { GestureResponderEvent } from \"react-native\";\nimport { lightColor } from \"@xhs/reds-token-next\";\nexport interface RedsStepper {\n value?: number;\n max?: number;\n min?: number;\n disable?: boolean;\n onChange?: (value: number) => any;\n isControl?: boolean;\n}\n\nexport interface RedsStepperEvent {}\nexport const StepperDefaultProps = {\n disable: false,\n isControl: true,\n};\n"],"mappings":"AAYO,aAAM,sBAAsB;AAAA,EACjC,SAAS;AAAA,EACT,WAAW;AACb;","names":[]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b713a64f355d69521f481b2ff80b5b69bce75557"},"/builds/fe/infra/reds/packages/reds-rn/src/components/Stepper/styles.ts":{"path":"/builds/fe/infra/reds/packages/reds-rn/src/components/Stepper/styles.ts","statementMap":{"0":{"start":{"line":2,"column":25},"end":{"line":38,"column":1}},"1":{"start":{"line":3,"column":2},"end":{"line":37,"column":5}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":25},"end":{"line":2,"column":26}},"loc":{"start":{"line":2,"column":53},"end":{"line":38,"column":1}},"line":2}},"branchMap":{},"s":{"0":1,"1":0},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"sources":["/builds/fe/infra/reds/packages/reds-rn/src/components/Stepper/styles.ts"],"sourcesContent":["import { StyleSheet } from \"react-native\";\nexport const getStyles = (themeColor: any, typography: any) => {\n return StyleSheet.create({\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n opacity: {\n opacity: 0.5,\n },\n icon: {\n width: 20,\n height: 20,\n backgroundColor: themeColor.Fill1,\n borderRadius: 20,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n lineHeight: 20,\n },\n text: {\n paddingHorizontal: 8,\n fontWeight: typography.B1LooseFontWeight,\n fontSize: typography.T3FontSize,\n color: themeColor.Title,\n },\n minus: {\n height: 1.5,\n width: 10,\n },\n add: {\n height: 10,\n width: 10,\n },\n });\n};\n"],"mappings":"AAAA,SAAS,kBAAkB;AACpB,aAAM,YAAY,CAAC,YAAiB,eAAoB;AAC7D,SAAO,WAAW,OAAO;AAAA,IACvB,WAAW;AAAA,MACT,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,iBAAiB,WAAW;AAAA,MAC5B,cAAc;AAAA,MACd,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA,IACA,MAAM;AAAA,MACJ,mBAAmB;AAAA,MACnB,YAAY,WAAW;AAAA,MACvB,UAAU,WAAW;AAAA,MACrB,OAAO,WAAW;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IACA,KAAK;AAAA,MACH,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"62e00e64124b6d3cd2d37a0935e860de34b57269"}}
1
+ {"/builds/fe/infra/reds/packages/reds-rn/src/components/Popover/component.tsx":{"path":"/builds/fe/infra/reds/packages/reds-rn/src/components/Popover/component.tsx","statementMap":{"0":{"start":{"line":3,"column":28},"end":{"line":47,"column":1}},"1":{"start":{"line":12,"column":2},"end":{"line":46,"column":11}},"2":{"start":{"line":12,"column":166},"end":{"line":12,"column":180}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":28},"end":{"line":3,"column":29}},"loc":{"start":{"line":11,"column":6},"end":{"line":47,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":159},"end":{"line":12,"column":160}},"loc":{"start":{"line":12,"column":166},"end":{"line":12,"column":180}},"line":12}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":42},"end":{"line":16,"column":54}},"type":"binary-expr","locations":[{"start":{"line":16,"column":42},"end":{"line":16,"column":49}},{"start":{"line":16,"column":53},"end":{"line":16,"column":54}}],"line":16}},"s":{"0":1,"1":0,"2":0},"f":{"0":0,"1":0},"b":{"0":[0,0]},"inputSourceMap":{"version":3,"sources":["/builds/fe/infra/reds/packages/reds-rn/src/components/Popover/component.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport { Modal, View, Pressable, GestureResponderEvent, Animated, TouchableWithoutFeedback } from \"react-native\";\n\nexport const ModalWrapper = ({\n needModal,\n visible,\n children,\n onClickMask,\n opacity,\n progress,\n zIndex,\n}: {\n needModal?: boolean;\n visible: boolean;\n children: ReactNode;\n onClickMask: (e: GestureResponderEvent) => any;\n opacity?: number;\n progress: Animated.Value | number;\n zIndex: number;\n}) => {\n // if (!needModal) return visible ? children : null\n return (\n <Modal visible={visible} transparent collapsable={false}>\n <TouchableWithoutFeedback onPress={(e) => onClickMask(e)}>\n <Animated.View\n style={{\n backgroundColor: `rgba(0, 0, 0, ${opacity || 0})`,\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n flex: 1,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex,\n opacity: progress,\n }}\n >\n {children}\n </Animated.View>\n </TouchableWithoutFeedback>\n </Modal>\n );\n};\n"],"mappings":"AAwBQ;AAvBR,SAAS,OAA+C,UAAU,gCAAgC;AAE3F,aAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQM;AAEJ,SACE,uBAAC,SAAM,SAAkB,aAAW,MAAC,aAAa,OAChD,iCAAC,4BAAyB,SAAS,CAAC,MAAM,YAAY,CAAC,GACrD;AAAA,IAAC,SAAS;AAAA,IAAT;AAAA,MACC,OAAO;AAAA,QACL,iBAAiB,iBAAiB,WAAW,CAAC;AAAA,QAC9C,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,MACX;AAAA,MAEC;AAAA;AAAA,IAfH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,KAjBF;AAAA;AAAA;AAAA;AAAA,SAkBA,KAnBF;AAAA;AAAA;AAAA;AAAA,SAoBA;AAEJ;","names":[]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"29687ce1fcaacf48f289825960d2df4db0186be6"}}
@@ -1 +1 @@
1
- {"/builds/fe/infra/reds/packages/reds-rn/src/components/DatePicker/interface/index.ts":{"path":"/builds/fe/infra/reds/packages/reds-rn/src/components/DatePicker/interface/index.ts","statementMap":{"0":{"start":{"line":1,"column":44},"end":{"line":11,"column":24}},"1":{"start":{"line":2,"column":2},"end":{"line":2,"column":51}},"2":{"start":{"line":3,"column":2},"end":{"line":3,"column":45}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":2},"end":{"line":5,"column":35}},"5":{"start":{"line":6,"column":2},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":2},"end":{"line":7,"column":59}},"7":{"start":{"line":8,"column":2},"end":{"line":8,"column":71}},"8":{"start":{"line":9,"column":2},"end":{"line":9,"column":59}},"9":{"start":{"line":10,"column":2},"end":{"line":10,"column":25}},"10":{"start":{"line":12,"column":38},"end":{"line":24,"column":1}},"11":{"start":{"line":15,"column":24},"end":{"line":15,"column":29}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":45},"end":{"line":1,"column":46}},"loc":{"start":{"line":1,"column":66},"end":{"line":11,"column":1}},"line":1},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":13},"end":{"line":15,"column":14}},"loc":{"start":{"line":15,"column":24},"end":{"line":15,"column":29}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":13}},"loc":{"start":{"line":16,"column":23},"end":{"line":17,"column":3}},"line":16},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":12},"end":{"line":18,"column":13}},"loc":{"start":{"line":18,"column":18},"end":{"line":19,"column":3}},"line":18},"4":{"name":"(anonymous_4)","decl":{"start":{"line":20,"column":13},"end":{"line":20,"column":14}},"loc":{"start":{"line":20,"column":24},"end":{"line":21,"column":3}},"line":20}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":3},"end":{"line":11,"column":23}},"type":"binary-expr","locations":[{"start":{"line":11,"column":3},"end":{"line":11,"column":17}},{"start":{"line":11,"column":21},"end":{"line":11,"column":23}}],"line":11}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":0},"f":{"0":1,"1":0,"2":0,"3":0,"4":0},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"sources":["/builds/fe/infra/reds/packages/reds-rn/src/components/DatePicker/interface/index.ts"],"sourcesContent":["export enum DatePickerMode {\n YearMonthDay = \"yearmonthday\",\n YearMonth = \"yearmonth\",\n Year = \"year\",\n Hour = \"hour\",\n HourMinute = \"hourminute\",\n HourMinuteSecond = \"hourminutesecond\",\n YearMonthDayHourMinute = \"yearmonthdayhourminute\",\n YearMonthDayHour = \"yearmonthdayhour\",\n}\nexport interface RedsDatePicker {\n visible: boolean;\n value: string;\n cancelText?: string;\n mode?: DatePickerMode;\n startYear?: number;\n endYear?: number;\n startTime?: string;\n endTime?: string;\n label: string;\n formatter?: (value: string) => any;\n onChange?: (value: string) => void;\n onCancel?: () => void;\n onConfirm?: (value: string) => void;\n isDatePattern?: boolean;\n closeText?: string;\n mask?: boolean;\n hostName?: string;\n}\n\nexport interface RedsDatePickerEvent {}\nexport const DatePickerDefaultProps = {\n visible: false,\n mode: DatePickerMode.YearMonthDay,\n formatter: (value: string) => value,\n onChange: (value: string) => {},\n onCancel: () => {},\n onConfirm: (value: string) => {},\n isDatePattern: false,\n hostName: \"root\",\n};\n"],"mappings":"AAAO,WAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,kBAAe;AACf,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,gBAAa;AACb,EAAAA,gBAAA,sBAAmB;AACnB,EAAAA,gBAAA,4BAAyB;AACzB,EAAAA,gBAAA,sBAAmB;AART,SAAAA;AAAA,GAAA;AA+BL,aAAM,yBAAyB;AAAA,EACpC,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW,CAAC,UAAkB;AAAA,EAC9B,UAAU,CAAC,UAAkB;AAAA,EAAC;AAAA,EAC9B,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,WAAW,CAAC,UAAkB;AAAA,EAAC;AAAA,EAC/B,eAAe;AAAA,EACf,UAAU;AACZ;","names":["DatePickerMode"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9e76fc27de5c3917033e01222a48d018ce0fa2fd"},"/builds/fe/infra/reds/packages/reds-rn/src/components/Picker/interface/index.ts":{"path":"/builds/fe/infra/reds/packages/reds-rn/src/components/Picker/interface/index.ts","statementMap":{"0":{"start":{"line":1,"column":34},"end":{"line":12,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":13},"end":{"line":2,"column":14}},"loc":{"start":{"line":2,"column":19},"end":{"line":3,"column":3}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":12},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":18},"end":{"line":5,"column":3}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":18},"end":{"line":7,"column":3}},"line":6}},"branchMap":{},"s":{"0":1},"f":{"0":0,"1":0,"2":0},"b":{},"inputSourceMap":{"version":3,"sources":["/builds/fe/infra/reds/packages/reds-rn/src/components/Picker/interface/index.ts"],"sourcesContent":["import { GestureResponderEvent } from \"react-native\";\nimport { lightColor } from \"@xhs/reds-token-next\";\nimport { SheetsType } from \"../../Sheets\";\n\ntype SheetsSize = SheetsType.SheetsSize;\n\nexport interface Column {\n label: string;\n value: string;\n}\nexport interface RedsPicker {\n onConfirm?: (val: string[]) => void;\n onCancel?: () => void;\n onChange?: (val: string[]) => void;\n columns: Column[][];\n value: string[];\n visible: boolean;\n accessibility?: Object;\n hostName?: string;\n bottom?: any;\n}\n\nexport interface RedsPickerEvent {}\nexport const PickerDefaultProps = {\n onConfirm: () => {},\n onCancel: () => {},\n onChange: () => {},\n columns: [],\n value: [],\n visible: false,\n accessibility: {},\n};\n"],"mappings":"AAuBO,aAAM,qBAAqB;AAAA,EAChC,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,SAAS,CAAC;AAAA,EACV,OAAO,CAAC;AAAA,EACR,SAAS;AAAA,EACT,eAAe,CAAC;AAClB;","names":[]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a054bd43402933bffcf3758b7f508a8aa18b200a"}}
1
+ {"/builds/fe/infra/reds/packages/reds-rn/src/components/Tab/interface/index.ts":{"path":"/builds/fe/infra/reds/packages/reds-rn/src/components/Tab/interface/index.ts","statementMap":{"0":{"start":{"line":1,"column":42},"end":{"line":6,"column":22}},"1":{"start":{"line":2,"column":2},"end":{"line":2,"column":41}},"2":{"start":{"line":3,"column":2},"end":{"line":3,"column":43}},"3":{"start":{"line":4,"column":2},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":2},"end":{"line":5,"column":23}},"5":{"start":{"line":7,"column":41},"end":{"line":12,"column":21}},"6":{"start":{"line":8,"column":2},"end":{"line":8,"column":34}},"7":{"start":{"line":9,"column":2},"end":{"line":9,"column":36}},"8":{"start":{"line":10,"column":2},"end":{"line":10,"column":34}},"9":{"start":{"line":11,"column":2},"end":{"line":11,"column":22}},"10":{"start":{"line":13,"column":42},"end":{"line":17,"column":22}},"11":{"start":{"line":14,"column":2},"end":{"line":14,"column":43}},"12":{"start":{"line":15,"column":2},"end":{"line":15,"column":33}},"13":{"start":{"line":16,"column":2},"end":{"line":16,"column":23}},"14":{"start":{"line":18,"column":43},"end":{"line":24,"column":23}},"15":{"start":{"line":19,"column":2},"end":{"line":19,"column":34}},"16":{"start":{"line":20,"column":2},"end":{"line":20,"column":38}},"17":{"start":{"line":21,"column":2},"end":{"line":21,"column":36}},"18":{"start":{"line":22,"column":2},"end":{"line":22,"column":36}},"19":{"start":{"line":23,"column":2},"end":{"line":23,"column":24}},"20":{"start":{"line":25,"column":31},"end":{"line":37,"column":1}},"21":{"start":{"line":38,"column":32},"end":{"line":47,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":43},"end":{"line":1,"column":44}},"loc":{"start":{"line":1,"column":62},"end":{"line":6,"column":1}},"line":1},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":42},"end":{"line":7,"column":43}},"loc":{"start":{"line":7,"column":60},"end":{"line":12,"column":1}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":43},"end":{"line":13,"column":44}},"loc":{"start":{"line":13,"column":62},"end":{"line":17,"column":1}},"line":13},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":44},"end":{"line":18,"column":45}},"loc":{"start":{"line":18,"column":64},"end":{"line":24,"column":1}},"line":18}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":3},"end":{"line":6,"column":21}},"type":"binary-expr","locations":[{"start":{"line":6,"column":3},"end":{"line":6,"column":15}},{"start":{"line":6,"column":19},"end":{"line":6,"column":21}}],"line":6},"1":{"loc":{"start":{"line":12,"column":3},"end":{"line":12,"column":20}},"type":"binary-expr","locations":[{"start":{"line":12,"column":3},"end":{"line":12,"column":14}},{"start":{"line":12,"column":18},"end":{"line":12,"column":20}}],"line":12},"2":{"loc":{"start":{"line":17,"column":3},"end":{"line":17,"column":21}},"type":"binary-expr","locations":[{"start":{"line":17,"column":3},"end":{"line":17,"column":15}},{"start":{"line":17,"column":19},"end":{"line":17,"column":21}}],"line":17},"3":{"loc":{"start":{"line":24,"column":3},"end":{"line":24,"column":22}},"type":"binary-expr","locations":[{"start":{"line":24,"column":3},"end":{"line":24,"column":16}},{"start":{"line":24,"column":20},"end":{"line":24,"column":22}}],"line":24}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"f":{"0":1,"1":1,"2":1,"3":1},"b":{"0":[1,1],"1":[1,1],"2":[1,1],"3":[1,1]},"inputSourceMap":{"version":3,"sources":["/builds/fe/infra/reds/packages/reds-rn/src/components/Tab/interface/index.ts"],"sourcesContent":["import { ReactNode } from \"react\";\nimport { ImageStyle, TextStyle } from \"react-native\";\nimport { RedsIcon } from \"../../Icon/interface\";\nimport { RedsBadge } from \"../../Badge/interface\";\nexport interface TabItemType {\n name?: string;\n image?: string;\n activeImage?: string;\n imageStyle?: ImageStyle;\n value: string;\n iconProps?: RedsIcon;\n badgeProps?: any;\n labelNumber?: number;\n}\n\nexport const enum TabLabelType {\n leftIcon = \"leftIcon\",\n rightIcon = \"rightIcon\",\n digit = \"digit\",\n}\nexport const enum TabSizeType {\n small = \"small\",\n normal = \"normal\",\n large = \"large\",\n}\n\nexport const enum TabThemeType {\n underline = \"underline\",\n text = \"text\",\n}\n\nexport const enum TabLayoutType {\n left = \"left\",\n middle = \"middle\",\n space = \"space\",\n right = \"right\",\n}\nexport interface RedsTab {\n theme?: TabThemeType;\n size?: TabSizeType;\n labelType?: TabLabelType;\n layout?: TabLayoutType;\n badge?: boolean;\n containerStyle?: any;\n onChange?: (value: string, index: number) => any;\n spaceWidth?: number;\n tabPadding?: number;\n active?: string;\n children: ReactNode[];\n key?: string | number;\n contentOffset?: number;\n textStyle?: TextStyle;\n activeTextStyle?: TextStyle;\n}\n\nexport interface RedsTabEvent {}\nexport const TabDefaultProps = {\n theme: TabThemeType.underline,\n size: TabSizeType.normal,\n labelType: TabLabelType.leftIcon,\n layout: TabLayoutType.left,\n badge: false,\n spaceWidth: 12,\n tabPadding: 0,\n active: \"\",\n contentOffset: 0,\n textStyle: {},\n activeTextStyle: {},\n};\n\nexport interface TabChild {\n name?: string;\n image?: string;\n imageStyle?: ImageStyle;\n activeImage?: string;\n value: string;\n labelNumber?: number;\n iconProps?: RedsIcon;\n badgeProps?: RedsBadge;\n children: ReactNode;\n}\nexport interface RedsTabs {\n theme?: TabThemeType;\n size?: TabSizeType;\n labelType?: TabLabelType;\n layout?: TabLayoutType;\n badge?: boolean;\n containerStyle?: any;\n onChange?: (value: string, index: number) => any;\n spaceWidth?: number;\n tabPadding?: number;\n active?: string;\n children: ReactNode[];\n}\n\nexport const TabsDefaultProps = {\n theme: TabThemeType.underline,\n size: TabSizeType.normal,\n labelType: TabLabelType.leftIcon,\n layout: TabLayoutType.space,\n badge: false,\n spaceWidth: 12,\n tabPadding: 24,\n active: \"\",\n};\n"],"mappings":"AAeO,WAAW,eAAX,kBAAWA,kBAAX;AACL,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,WAAQ;AAHQ,SAAAA;AAAA,GAAA;AAKX,WAAW,cAAX,kBAAWC,iBAAX;AACL,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,WAAQ;AAHQ,SAAAA;AAAA,GAAA;AAMX,WAAW,eAAX,kBAAWC,kBAAX;AACL,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,UAAO;AAFS,SAAAA;AAAA,GAAA;AAKX,WAAW,gBAAX,kBAAWC,mBAAX;AACL,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,WAAQ;AAJQ,SAAAA;AAAA,GAAA;AAyBX,aAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,WAAW,CAAC;AAAA,EACZ,iBAAiB,CAAC;AACpB;AA2BO,aAAM,mBAAmB;AAAA,EAC9B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AACV;","names":["TabLabelType","TabSizeType","TabThemeType","TabLayoutType"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"94c9502f2b3612dd537ea197077b6f626891006b"}}
@@ -23,21 +23,25 @@ var Wheel = function Wheel(props) {
23
23
  accessibility = _props$accessibility === void 0 ? {} : _props$accessibility;
24
24
  var scrollerRef = React.useRef();
25
25
  var themeColor = components_ConfigProvider_hooks_themeToken_useThemeToken.useThemeColor();
26
- var _useState = React.useState(),
26
+ var _useState = React.useState(value),
27
27
  _useState2 = _rollupPluginBabelHelpers._slicedToArray(_useState, 2),
28
- index = _useState2[0],
29
- setIndex = _useState2[1];
28
+ lastValue = _useState2[0],
29
+ setLastValue = _useState2[1];
30
30
  React.useEffect(function () {
31
- value && setIndex(getSelectIndex(column, value));
31
+ if (value !== lastValue) {
32
+ var idx = getSelectIndex(column, value);
33
+ handleScroll(idx);
34
+ }
32
35
  }, [column, value]);
33
- React.useEffect(function () {
34
- var _column$index;
35
- var newVal = column === null || column === void 0 || (_column$index = column[index]) === null || _column$index === void 0 ? void 0 : _column$index.value;
36
- scrollTo(index * itemHeight);
36
+ var handleScroll = function handleScroll(idx) {
37
+ var _column$idx;
38
+ var newVal = column === null || column === void 0 || (_column$idx = column[idx]) === null || _column$idx === void 0 ? void 0 : _column$idx.value;
39
+ scrollTo(idx * itemHeight);
37
40
  if (newVal) {
41
+ setLastValue(newVal);
38
42
  onSelect(newVal, props.index);
39
43
  }
40
- }, [index, props.index]);
44
+ };
41
45
  var scrollTo = function scrollTo(y) {
42
46
  setTimeout(function () {
43
47
  var _scrollerRef$current, _scrollerRef$current$;
@@ -57,20 +61,22 @@ var Wheel = function Wheel(props) {
57
61
  }), 0) : 0;
58
62
  };
59
63
  var onMomentumScrollEnd = function onMomentumScrollEnd(e) {
60
- var _e$persist;
64
+ var _e$persist, _column$selectIndex;
61
65
  (_e$persist = e.persist) === null || _e$persist === void 0 || _e$persist.call(e);
62
66
  var contentOffset = e.nativeEvent.contentOffset;
63
67
  var selectIndex = Math.round(contentOffset.y / itemHeight);
64
- setIndex(selectIndex);
68
+ var newVal = column === null || column === void 0 || (_column$selectIndex = column[selectIndex]) === null || _column$selectIndex === void 0 ? void 0 : _column$selectIndex.value;
69
+ setLastValue(newVal);
70
+ onSelect(newVal, props.index);
65
71
  };
66
- var handleClick = function handleClick(index2) {
67
- setIndex(index2);
72
+ var handleClick = function handleClick(index) {
73
+ handleScroll(index);
68
74
  };
69
75
  var renderItems = function renderItems() {
70
- return column.map(function (item, index2) {
76
+ return column.map(function (item, index) {
71
77
  return /* @__PURE__ */React.createElement(reactNative.TouchableNativeFeedback, {
72
78
  onPress: function onPress() {
73
- return handleClick(index2);
79
+ return handleClick(index);
74
80
  },
75
81
  key: item.value
76
82
  }, /* @__PURE__ */React.createElement(reactNative.View, _rollupPluginBabelHelpers._objectSpread2({
@@ -1 +1 @@
1
- {"version":3,"file":"Wheel.js","sources":["../../../../src/components/PickerView/Wheel.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from \"react\";\nimport { NativeScrollEvent, NativeSyntheticEvent, ScrollView, View, Text, TouchableNativeFeedback } from \"react-native\";\nimport { useThemeColor } from \"../ConfigProvider\";\nimport { typography } from \"@xhsreds/reds-token-next\";\nimport { RedsWheel, Column } from \"./interface/index\";\nimport styles from \"./styles\";\n\nconst itemHeight = 40;\n\nconst Wheel = (props: RedsWheel) => {\n const { value, column = [], onSelect = () => {}, accessibility = {} } = props;\n\n /**\n * 滚动ref\n */\n const scrollerRef = useRef();\n\n /**\n * themeColor\n */\n const themeColor = useThemeColor();\n\n /**\n * index\n */\n const [index, setIndex] = useState<any>();\n\n /**\n * 初始化滚动高度\n */\n useEffect(() => {\n value && setIndex(getSelectIndex(column, value));\n }, [column, value]);\n\n useEffect(() => {\n const newVal = column?.[index]?.value;\n scrollTo(index * itemHeight);\n if (newVal) {\n onSelect(newVal, props.index);\n }\n }, [index, props.index]);\n\n /**\n * 滚动ScrollView\n * @param y 滚动距离\n */\n const scrollTo = (y: any) => {\n setTimeout(() => {\n // @ts-ignore\n scrollerRef?.current?.scrollTo?.({\n y,\n animated: true,\n });\n });\n };\n\n /**\n * 计算当前滚动高度\n * @param column 数组\n * @param value 选中值\n * @returns\n */\n const getSelectIndex = (column: Column[], value?: string) => {\n return value\n ? Math.max(\n column.findIndex((item) => {\n if (isNaN(parseInt(item.value)) || isNaN(parseInt(value))) {\n return value && item.value === value;\n } else {\n return value && parseInt(item.value) === parseInt(value);\n }\n }),\n 0,\n )\n : 0;\n };\n\n /**\n * 结束滚动\n * @param e\n */\n const onMomentumScrollEnd = (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n e.persist?.();\n let contentOffset = e.nativeEvent.contentOffset;\n const selectIndex = Math.round(contentOffset.y / itemHeight);\n setIndex(selectIndex);\n };\n\n const handleClick = (index: number) => {\n setIndex(index);\n };\n\n /**\n * 渲染item\n * @returns ReactNode\n */\n const renderItems = () => {\n return column.map((item, index) => (\n <TouchableNativeFeedback onPress={() => handleClick(index)} key={item.value}>\n <View\n style={[styles.wheel, { height: itemHeight, backgroundColor: themeColor.Bg2 }]}\n key={item.value}\n {...item.accessibility}\n >\n <Text {...item.accessibility} style={{ color: themeColor.Title, fontSize: typography.B1FontSize }}>\n {item.label}\n </Text>\n </View>\n </TouchableNativeFeedback>\n ));\n };\n\n return (\n <ScrollView\n style={{ flex: 1 }}\n nestedScrollEnabled\n horizontal={false}\n ref={(el: any) => (scrollerRef.current = el)}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n pagingEnabled={false}\n automaticallyAdjustContentInsets={false}\n directionalLockEnabled={true}\n decelerationRate=\"fast\"\n snapToInterval={itemHeight}\n onMomentumScrollEnd={onMomentumScrollEnd}\n testID={`wheel${props.index}`}\n {...accessibility}\n >\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n {renderItems()}\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n </ScrollView>\n );\n};\n\nexport default Wheel;\n"],"names":["itemHeight","Wheel","props","value","_props$column","column","_props$onSelect","onSelect","_props$accessibility","accessibility","scrollerRef","useRef","themeColor","useThemeColor","_useState","useState","_useState2","_slicedToArray","index","setIndex","useEffect","getSelectIndex","_column$index","newVal","scrollTo","y","setTimeout","_scrollerRef$current","_scrollerRef$current$","current","call","animated","Math","max","findIndex","item","isNaN","parseInt","onMomentumScrollEnd","e","_e$persist","persist","contentOffset","nativeEvent","selectIndex","round","handleClick","renderItems","map","React","createElement","TouchableNativeFeedback","onPress","key","View","_objectSpread","style","styles","wheel","height","backgroundColor","Bg2","Text","color","Title","fontSize","typography","B1FontSize","label","ScrollView","flex","nestedScrollEnabled","horizontal","ref","el","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","pagingEnabled","automaticallyAdjustContentInsets","directionalLockEnabled","decelerationRate","snapToInterval","testID","concat"],"mappings":";;;;;;;;;;;;;;AAOA,IAAMA,UAAa,GAAA,EAAA,CAAA;AAEnB,IAAMC,KAAA,GAAQ,SAARA,KAAAA,CAASC,KAAqB,EAAA;AAClC,EAAA,IAAQC,KAAO,GAAyDD,KAAA,CAAhEC,KAAO;IAAAC,aAAA,GAAyDF,KAAA,CAAzDG,MAAA;AAAAA,IAAAA,MAAA,GAAAD,aAAA,KAAS,KAAA,CAAA,GAAA,EAAC,GAAAA,aAAA;IAAAE,eAAA,GAA+CJ,KAAA,CAA5CK;AAAAA,IAAAA,wCAAW,YAAM,EAAI,GAAAD,eAAA;IAAAE,oBAAA,GAAuBN,KAAA,CAAvBO,aAAA;AAAAA,IAAAA,aAAA,GAAAD,oBAAA,KAAA,KAAA,CAAA,GAAgB,EAAC,GAAAA,oBAAA,CAAA;AAKlE,EAAA,IAAME,cAAcC,YAAO,EAAA,CAAA;AAK3B,EAAA,IAAMC,aAAaC,sEAAc,EAAA,CAAA;AAKjC,EAAA,IAAAC,SAAA,GAA0BC,cAAc,EAAA;IAAAC,UAAA,GAAAC,wCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAjCI,IAAAA,KAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAOG,IAAAA,QAAQ,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAKtBI,EAAAA,eAAA,CAAU,YAAM;IACdjB,KAAA,IAASgB,QAAS,CAAAE,cAAA,CAAehB,MAAQ,EAAAF,KAAK,CAAC,CAAA,CAAA;AACjD,GAAG,EAAA,CAACE,MAAQ,EAAAF,KAAK,CAAC,CAAA,CAAA;AAElBiB,EAAAA,eAAA,CAAU,YAAM;AAAA,IAAA,IAAAE,aAAA,CAAA;AACR,IAAA,IAAAC,MAAA,GAASlB,MAAS,KAATA,IAAAA,IAAAA,MAAS,gBAAAiB,aAAA,GAATjB,MAAS,CAAAa,KAAK,CAAG,MAAA,IAAA,IAAAI,aAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAiBnB,KAAA,CAAA;AAChCqB,IAAAA,QAAA,CAASN,QAAQlB,UAAU,CAAA,CAAA;AAC3B,IAAA,IAAIuB,MAAQ,EAAA;AACDhB,MAAAA,QAAA,CAAAgB,MAAA,EAAQrB,MAAMgB,KAAK,CAAA,CAAA;AAC9B,KAAA;GACC,EAAA,CAACA,KAAO,EAAAhB,KAAA,CAAMgB,KAAK,CAAC,CAAA,CAAA;AAMjB,EAAA,IAAAM,QAAA,GAAW,SAAXA,QAAAA,CAAYC,CAAW,EAAA;AAC3BC,IAAAA,UAAA,CAAW,YAAM;MAAA,IAAAC,oBAAA,EAAAC,qBAAA,CAAA;MAEflB,WAAA,KAAA,IAAA,IAAAA,WAAA,KAAA,KAAA,CAAA,IAAA,CAAAiB,oBAAA,GAAAjB,WAAA,CAAamB,iFAAbF,oBAAA,CAAsBH,QAAW,MAAA,IAAA,IAAAI,qBAAA,KAAA,KAAA,CAAA,IAAjCA,qBAAA,CAAAE,IAAA,CAAAH,oBAAA,EAAiC;AAC/BF,QAAAA,CAAA,EAAAA,CAAA;AACAM,QAAAA,QAAU,EAAA,IAAA;AACZ,OAAC,CAAA,CAAA;AACH,KAAC,CAAA,CAAA;GACH,CAAA;EAQM,IAAAV,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBhB,OAAAA,EAAkBF,MAAmB,EAAA;AAC3D,IAAA,OAAOA,SACH6B,IAAK,CAAAC,GAAA,CACH5B,OAAAA,CAAO6B,SAAU,CAAA,UAACC,IAAS,EAAA;AACrB,MAAA,IAAAC,KAAA,CAAMC,QAAS,CAAAF,IAAA,CAAKhC,KAAK,CAAC,KAAKiC,KAAM,CAAAC,QAAA,CAASlC,MAAK,CAAC,CAAG,EAAA;AAClDA,QAAAA,OAAAA,MAAAA,IAASgC,KAAKhC,KAAUA,KAAAA,MAAAA,CAAAA;AACjC,OAAO,MAAA;AACL,QAAA,OAAOA,UAASkC,QAAS,CAAAF,IAAA,CAAKhC,KAAK,CAAA,KAAMkC,SAASlC,MAAK,CAAA,CAAA;AACzD,OAAA;AACF,KAAC,CAAA,EACD,CACF,CACA,GAAA,CAAA,CAAA;GACN,CAAA;AAMM,EAAA,IAAAmC,mBAAA,GAAsB,SAAtBA,mBAAAA,CAAuBC,CAA+C,EAAA;AAAA,IAAA,IAAAC,UAAA,CAAA;AAC1E,IAAA,CAAAA,UAAA,GAAAD,CAAA,CAAEE,OAAU,MAAA,IAAA,IAAAD,UAAA,KAAA,KAAA,CAAA,IAAZA,UAAA,CAAAV,IAAA,CAAAS,CAAY,CAAA,CAAA;AACR,IAAA,IAAAG,aAAA,GAAgBH,EAAEI,WAAY,CAAAD,aAAA,CAAA;IAClC,IAAME,WAAc,GAAAZ,IAAA,CAAKa,KAAM,CAAAH,aAAA,CAAcjB,IAAIzB,UAAU,CAAA,CAAA;IAC3DmB,QAAA,CAASyB,WAAW,CAAA,CAAA;GACtB,CAAA;AAEM,EAAA,IAAAE,WAAA,GAAc,SAAdA,WAAAA,CAAe5B,MAAkB,EAAA;IACrCC,QAAA,CAASD,MAAK,CAAA,CAAA;GAChB,CAAA;AAMA,EAAA,IAAM6B,cAAc,SAAdA,cAAoB;AACxB,IAAA,OAAO1C,MAAO,CAAA2C,GAAA,CAAI,UAACb,IAAA,EAAMjB;4BACtB+B,KAAA,CAAAC,aAAA,CAAAC,mCAAA,EAAA;QAAwBC,OAAS,EAAA,SAATA,OAASA,GAAA;UAAA,OAAMN,WAAY5B,CAAAA,MAAK,CAAG,CAAA;AAAA,SAAA;QAAAmC,GAAA,EAAKlB,KAAKhC,KAAAA;OACpE,iBAAA8C,KAAA,CAAAC,aAAA,CAACI,gBAAA,EAAAC,wCAAA,CAAA;AACCC,QAAAA,KAAA,EAAO,CAACC,oCAAA,CAAOC,KAAO,EAAA;AAAEC,UAAAA,QAAQ3D,UAAY;UAAA4D,eAAA,EAAiBhD,UAAW,CAAAiD,GAAAA;AAAI,SAAC,CAAA;QAC7ER,KAAKlB,IAAK,CAAAhC,KAAAA;AAAA,OAAA,EACNgC,IAAK,CAAA1B,aAAA,CAET,iBAACwC,KAAA,CAAAC,aAAA,CAAAY,gBAAA,EAAAP,wCAAA,CAAAA,wCAAA,CAASpB,EAAAA,EAAAA,IAAA,CAAK1B;AAAe+C,QAAAA,KAAO,EAAA;UAAEO,KAAO,EAAAnD,UAAA,CAAWoD;UAAOC,QAAU,EAAAC,wBAAA,CAAWC,UAAAA;AAAW,SAAA;AAAA,OAAA,CAAA,EAC7FhC,KAAKiC,KACR,CACF,CACF,CACD,CAAA;KAAA,CAAA,CAAA;GACH,CAAA;AAGE,EAAA,sBAAAnB,KAAA,CAAAC,aAAA,CAACmB,sBAAA,EAAAd,wCAAA,CAAA;AACCC,IAAAA,KAAA,EAAO;AAAEc,MAAAA,IAAA,EAAM,CAAA;KAAE;AACjBC,IAAAA,mBAAmB,EAAA,IAAA;AACnBC,IAAAA,UAAY,EAAA,KAAA;AACZC,IAAAA,GAAK,EAAA,SAALA,GAAKA,CAACC,EAAa,EAAA;AAAA,MAAA,OAAAhE,WAAA,CAAYmB,OAAU,GAAA6C,EAAA,CAAA;AAAA,KAAA;AACzCC,IAAAA,8BAAgC,EAAA,KAAA;AAChCC,IAAAA,4BAA8B,EAAA,KAAA;AAC9BC,IAAAA,aAAe,EAAA,KAAA;AACfC,IAAAA,gCAAkC,EAAA,KAAA;AAClCC,IAAAA,sBAAwB,EAAA,IAAA;AACxBC,IAAAA,gBAAiB,EAAA,MAAA;AACjBC,IAAAA,cAAgB,EAAAjF,UAAA;AAChBsC,IAAAA,mBAAA,EAAAA,mBAAA;AACA4C,IAAAA,MAAA,EAAAC,OAAAA,CAAAA,MAAA,CAAgBjF,KAAA,CAAMgB,KAAK,CAAA;GACvBT,EAAAA,aAAA,kBAEJwC,KAAA,CAAAC,aAAA,CAACI,gBAAK,EAAA;AAAAE,IAAAA,KAAA,EAAO;MAAEG,MAAA,EAAQ,IAAI3D,UAAY;MAAA4D,eAAA,EAAiBhD,UAAW,CAAAiD,GAAAA;AAAI,KAAA;AAAG,GAAA,CAAA,EACzEd,WAAY,EAAA,iBACbE,KAAA,CAAAC,aAAA,CAACI,gBAAK,EAAA;AAAAE,IAAAA,KAAA,EAAO;MAAEG,MAAA,EAAQ,IAAI3D,UAAY;MAAA4D,eAAA,EAAiBhD,UAAW,CAAAiD,GAAAA;AAAI,KAAA;AAAG,GAAA,CAC5E,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Wheel.js","sources":["../../../../src/components/PickerView/Wheel.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from \"react\";\nimport { NativeScrollEvent, NativeSyntheticEvent, ScrollView, View, Text, TouchableNativeFeedback } from \"react-native\";\nimport { useThemeColor } from \"../ConfigProvider\";\nimport { typography } from \"@xhsreds/reds-token-next\";\nimport { RedsWheel, Column } from \"./interface/index\";\nimport styles from \"./styles\";\n\nconst itemHeight = 40;\n\nconst Wheel = (props: RedsWheel) => {\n const { value, column = [], onSelect = () => {}, accessibility = {} } = props;\n\n /**\n * 滚动ref\n */\n const scrollerRef = useRef();\n\n /**\n * themeColor\n */\n const themeColor = useThemeColor();\n\n const [lastValue, setLastValue] = useState(value);\n\n /**\n * 初始化滚动高度\n */\n useEffect(() => {\n if (value !== lastValue) {\n const idx = getSelectIndex(column, value);\n handleScroll(idx);\n }\n }, [column, value]);\n\n const handleScroll = (idx: number) => {\n const newVal = column?.[idx]?.value;\n scrollTo(idx * itemHeight);\n if (newVal) {\n setLastValue(newVal);\n onSelect(newVal, props.index);\n }\n };\n\n /**\n * 滚动ScrollView\n * @param y 滚动距离\n */\n const scrollTo = (y: any) => {\n setTimeout(() => {\n // @ts-ignore\n scrollerRef?.current?.scrollTo?.({\n y,\n animated: true,\n });\n });\n };\n\n /**\n * 计算当前滚动高度\n * @param column 数组\n * @param value 选中值\n * @returns\n */\n const getSelectIndex = (column: Column[], value?: string) => {\n return value\n ? Math.max(\n column.findIndex((item) => {\n if (isNaN(parseInt(item.value)) || isNaN(parseInt(value))) {\n return value && item.value === value;\n } else {\n return value && parseInt(item.value) === parseInt(value);\n }\n }),\n 0,\n )\n : 0;\n };\n\n /**\n * 结束滚动\n * @param e\n */\n const onMomentumScrollEnd = (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n e.persist?.();\n let contentOffset = e.nativeEvent.contentOffset;\n const selectIndex = Math.round(contentOffset.y / itemHeight);\n const newVal = column?.[selectIndex]?.value;\n setLastValue(newVal);\n onSelect(newVal, props.index);\n };\n\n const handleClick = (index: number) => {\n handleScroll(index);\n };\n\n /**\n * 渲染item\n * @returns ReactNode\n */\n const renderItems = () => {\n return column.map((item, index) => (\n <TouchableNativeFeedback onPress={() => handleClick(index)} key={item.value}>\n <View\n style={[styles.wheel, { height: itemHeight, backgroundColor: themeColor.Bg2 }]}\n key={item.value}\n {...item.accessibility}\n >\n <Text {...item.accessibility} style={{ color: themeColor.Title, fontSize: typography.B1FontSize }}>\n {item.label}\n </Text>\n </View>\n </TouchableNativeFeedback>\n ));\n };\n\n return (\n <ScrollView\n style={{ flex: 1 }}\n nestedScrollEnabled\n horizontal={false}\n ref={(el: any) => (scrollerRef.current = el)}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n pagingEnabled={false}\n automaticallyAdjustContentInsets={false}\n directionalLockEnabled={true}\n decelerationRate=\"fast\"\n snapToInterval={itemHeight}\n onMomentumScrollEnd={onMomentumScrollEnd}\n testID={`wheel${props.index}`}\n {...accessibility}\n >\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n {renderItems()}\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n </ScrollView>\n );\n};\n\nexport default Wheel;\n"],"names":["itemHeight","Wheel","props","value","_props$column","column","_props$onSelect","onSelect","_props$accessibility","accessibility","scrollerRef","useRef","themeColor","useThemeColor","_useState","useState","_useState2","_slicedToArray","lastValue","setLastValue","useEffect","idx","getSelectIndex","handleScroll","_column$idx","newVal","scrollTo","index","y","setTimeout","_scrollerRef$current","_scrollerRef$current$","current","call","animated","Math","max","findIndex","item","isNaN","parseInt","onMomentumScrollEnd","e","_e$persist","_column$selectIndex","persist","contentOffset","nativeEvent","selectIndex","round","handleClick","renderItems","map","React","createElement","TouchableNativeFeedback","onPress","key","View","_objectSpread","style","styles","wheel","height","backgroundColor","Bg2","Text","color","Title","fontSize","typography","B1FontSize","label","ScrollView","flex","nestedScrollEnabled","horizontal","ref","el","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","pagingEnabled","automaticallyAdjustContentInsets","directionalLockEnabled","decelerationRate","snapToInterval","testID","concat"],"mappings":";;;;;;;;;;;;;;AAOA,IAAMA,UAAa,GAAA,EAAA,CAAA;AAEnB,IAAMC,KAAA,GAAQ,SAARA,KAAAA,CAASC,KAAqB,EAAA;AAClC,EAAA,IAAQC,KAAO,GAAyDD,KAAA,CAAhEC,KAAO;IAAAC,aAAA,GAAyDF,KAAA,CAAzDG,MAAA;AAAAA,IAAAA,MAAA,GAAAD,aAAA,KAAS,KAAA,CAAA,GAAA,EAAC,GAAAA,aAAA;IAAAE,eAAA,GAA+CJ,KAAA,CAA5CK;AAAAA,IAAAA,wCAAW,YAAM,EAAI,GAAAD,eAAA;IAAAE,oBAAA,GAAuBN,KAAA,CAAvBO,aAAA;AAAAA,IAAAA,aAAA,GAAAD,oBAAA,KAAA,KAAA,CAAA,GAAgB,EAAC,GAAAA,oBAAA,CAAA;AAKlE,EAAA,IAAME,cAAcC,YAAO,EAAA,CAAA;AAK3B,EAAA,IAAMC,aAAaC,sEAAc,EAAA,CAAA;AAEjC,EAAA,IAAAC,SAAA,GAAkCC,eAASZ,KAAK,CAAA;IAAAa,UAAA,GAAAC,wCAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAzCI,IAAAA,SAAA,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAWG,IAAAA,YAAY,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAK9BI,EAAAA,eAAA,CAAU,YAAM;IACd,IAAIjB,UAAUe,SAAW,EAAA;AACjB,MAAA,IAAAG,GAAA,GAAMC,cAAe,CAAAjB,MAAA,EAAQF,KAAK,CAAA,CAAA;MACxCoB,YAAA,CAAaF,GAAG,CAAA,CAAA;AAClB,KAAA;AACF,GAAG,EAAA,CAAChB,MAAQ,EAAAF,KAAK,CAAC,CAAA,CAAA;AAEZ,EAAA,IAAAoB,YAAA,GAAe,SAAfA,YAAAA,CAAgBF,GAAgB,EAAA;AAAA,IAAA,IAAAG,WAAA,CAAA;AAC9B,IAAA,IAAAC,MAAA,GAASpB,MAAS,KAATA,IAAAA,IAAAA,MAAS,gBAAAmB,WAAA,GAATnB,MAAS,CAAAgB,GAAG,CAAG,MAAA,IAAA,IAAAG,WAAA,KAAfA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAerB,KAAA,CAAA;AAC9BuB,IAAAA,QAAA,CAASL,MAAMrB,UAAU,CAAA,CAAA;AACzB,IAAA,IAAIyB,MAAQ,EAAA;MACVN,YAAA,CAAaM,MAAM,CAAA,CAAA;AACVlB,MAAAA,QAAA,CAAAkB,MAAA,EAAQvB,MAAMyB,KAAK,CAAA,CAAA;AAC9B,KAAA;GACF,CAAA;AAMM,EAAA,IAAAD,QAAA,GAAW,SAAXA,QAAAA,CAAYE,CAAW,EAAA;AAC3BC,IAAAA,UAAA,CAAW,YAAM;MAAA,IAAAC,oBAAA,EAAAC,qBAAA,CAAA;MAEfrB,WAAA,KAAA,IAAA,IAAAA,WAAA,KAAA,KAAA,CAAA,IAAA,CAAAoB,oBAAA,GAAApB,WAAA,CAAasB,iFAAbF,oBAAA,CAAsBJ,QAAW,MAAA,IAAA,IAAAK,qBAAA,KAAA,KAAA,CAAA,IAAjCA,qBAAA,CAAAE,IAAA,CAAAH,oBAAA,EAAiC;AAC/BF,QAAAA,CAAA,EAAAA,CAAA;AACAM,QAAAA,QAAU,EAAA,IAAA;AACZ,OAAC,CAAA,CAAA;AACH,KAAC,CAAA,CAAA;GACH,CAAA;EAQM,IAAAZ,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBjB,OAAAA,EAAkBF,MAAmB,EAAA;AAC3D,IAAA,OAAOA,SACHgC,IAAK,CAAAC,GAAA,CACH/B,OAAAA,CAAOgC,SAAU,CAAA,UAACC,IAAS,EAAA;AACrB,MAAA,IAAAC,KAAA,CAAMC,QAAS,CAAAF,IAAA,CAAKnC,KAAK,CAAC,KAAKoC,KAAM,CAAAC,QAAA,CAASrC,MAAK,CAAC,CAAG,EAAA;AAClDA,QAAAA,OAAAA,MAAAA,IAASmC,KAAKnC,KAAUA,KAAAA,MAAAA,CAAAA;AACjC,OAAO,MAAA;AACL,QAAA,OAAOA,UAASqC,QAAS,CAAAF,IAAA,CAAKnC,KAAK,CAAA,KAAMqC,SAASrC,MAAK,CAAA,CAAA;AACzD,OAAA;AACF,KAAC,CAAA,EACD,CACF,CACA,GAAA,CAAA,CAAA;GACN,CAAA;AAMM,EAAA,IAAAsC,mBAAA,GAAsB,SAAtBA,mBAAAA,CAAuBC,CAA+C,EAAA;IAAA,IAAAC,UAAA,EAAAC,mBAAA,CAAA;AAC1E,IAAA,CAAAD,UAAA,GAAAD,CAAA,CAAEG,OAAU,MAAA,IAAA,IAAAF,UAAA,KAAA,KAAA,CAAA,IAAZA,UAAA,CAAAV,IAAA,CAAAS,CAAY,CAAA,CAAA;AACR,IAAA,IAAAI,aAAA,GAAgBJ,EAAEK,WAAY,CAAAD,aAAA,CAAA;IAClC,IAAME,WAAc,GAAAb,IAAA,CAAKc,KAAM,CAAAH,aAAA,CAAclB,IAAI5B,UAAU,CAAA,CAAA;AACrD,IAAA,IAAAyB,MAAA,GAASpB,MAAS,KAATA,IAAAA,IAAAA,MAAS,gBAAAuC,mBAAA,GAATvC,MAAS,CAAA2C,WAAW,CAAG,MAAA,IAAA,IAAAJ,mBAAA,KAAvBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAuBzC,KAAA,CAAA;IACtCgB,YAAA,CAAaM,MAAM,CAAA,CAAA;AACVlB,IAAAA,QAAA,CAAAkB,MAAA,EAAQvB,MAAMyB,KAAK,CAAA,CAAA;GAC9B,CAAA;AAEM,EAAA,IAAAuB,WAAA,GAAc,SAAdA,WAAAA,CAAevB,KAAkB,EAAA;IACrCJ,YAAA,CAAaI,KAAK,CAAA,CAAA;GACpB,CAAA;AAMA,EAAA,IAAMwB,cAAc,SAAdA,cAAoB;AACxB,IAAA,OAAO9C,MAAO,CAAA+C,GAAA,CAAI,UAACd,IAAA,EAAMX;4BACtB0B,KAAA,CAAAC,aAAA,CAAAC,mCAAA,EAAA;QAAwBC,OAAS,EAAA,SAATA,OAASA,GAAA;UAAA,OAAMN,WAAY,CAAAvB,KAAK,CAAG,CAAA;AAAA,SAAA;QAAA8B,GAAA,EAAKnB,KAAKnC,KAAAA;OACpE,iBAAAkD,KAAA,CAAAC,aAAA,CAACI,gBAAA,EAAAC,wCAAA,CAAA;AACCC,QAAAA,KAAA,EAAO,CAACC,oCAAA,CAAOC,KAAO,EAAA;AAAEC,UAAAA,QAAQ/D,UAAY;UAAAgE,eAAA,EAAiBpD,UAAW,CAAAqD,GAAAA;AAAI,SAAC,CAAA;QAC7ER,KAAKnB,IAAK,CAAAnC,KAAAA;AAAA,OAAA,EACNmC,IAAK,CAAA7B,aAAA,CAET,iBAAC4C,KAAA,CAAAC,aAAA,CAAAY,gBAAA,EAAAP,wCAAA,CAAAA,wCAAA,CAASrB,EAAAA,EAAAA,IAAA,CAAK7B;AAAemD,QAAAA,KAAO,EAAA;UAAEO,KAAO,EAAAvD,UAAA,CAAWwD;UAAOC,QAAU,EAAAC,wBAAA,CAAWC,UAAAA;AAAW,SAAA;AAAA,OAAA,CAAA,EAC7FjC,KAAKkC,KACR,CACF,CACF,CACD,CAAA;KAAA,CAAA,CAAA;GACH,CAAA;AAGE,EAAA,sBAAAnB,KAAA,CAAAC,aAAA,CAACmB,sBAAA,EAAAd,wCAAA,CAAA;AACCC,IAAAA,KAAA,EAAO;AAAEc,MAAAA,IAAA,EAAM,CAAA;KAAE;AACjBC,IAAAA,mBAAmB,EAAA,IAAA;AACnBC,IAAAA,UAAY,EAAA,KAAA;AACZC,IAAAA,GAAK,EAAA,SAALA,GAAKA,CAACC,EAAa,EAAA;AAAA,MAAA,OAAApE,WAAA,CAAYsB,OAAU,GAAA8C,EAAA,CAAA;AAAA,KAAA;AACzCC,IAAAA,8BAAgC,EAAA,KAAA;AAChCC,IAAAA,4BAA8B,EAAA,KAAA;AAC9BC,IAAAA,aAAe,EAAA,KAAA;AACfC,IAAAA,gCAAkC,EAAA,KAAA;AAClCC,IAAAA,sBAAwB,EAAA,IAAA;AACxBC,IAAAA,gBAAiB,EAAA,MAAA;AACjBC,IAAAA,cAAgB,EAAArF,UAAA;AAChByC,IAAAA,mBAAA,EAAAA,mBAAA;AACA6C,IAAAA,MAAA,EAAAC,OAAAA,CAAAA,MAAA,CAAgBrF,KAAA,CAAMyB,KAAK,CAAA;GACvBlB,EAAAA,aAAA,kBAEJ4C,KAAA,CAAAC,aAAA,CAACI,gBAAK,EAAA;AAAAE,IAAAA,KAAA,EAAO;MAAEG,MAAA,EAAQ,IAAI/D,UAAY;MAAAgE,eAAA,EAAiBpD,UAAW,CAAAqD,GAAAA;AAAI,KAAA;AAAG,GAAA,CAAA,EACzEd,WAAY,EAAA,iBACbE,KAAA,CAAAC,aAAA,CAACI,gBAAK,EAAA;AAAAE,IAAAA,KAAA,EAAO;MAAEG,MAAA,EAAQ,IAAI/D,UAAY;MAAAgE,eAAA,EAAiBpD,UAAW,CAAAqD,GAAAA;AAAI,KAAA;AAAG,GAAA,CAC5E,CAAA,CAAA;AAEJ;;;;"}
@@ -19,21 +19,25 @@ var Wheel = function Wheel(props) {
19
19
  accessibility = _props$accessibility === void 0 ? {} : _props$accessibility;
20
20
  var scrollerRef = useRef();
21
21
  var themeColor = useThemeColor();
22
- var _useState = useState(),
22
+ var _useState = useState(value),
23
23
  _useState2 = _slicedToArray(_useState, 2),
24
- index = _useState2[0],
25
- setIndex = _useState2[1];
24
+ lastValue = _useState2[0],
25
+ setLastValue = _useState2[1];
26
26
  useEffect(function () {
27
- value && setIndex(getSelectIndex(column, value));
27
+ if (value !== lastValue) {
28
+ var idx = getSelectIndex(column, value);
29
+ handleScroll(idx);
30
+ }
28
31
  }, [column, value]);
29
- useEffect(function () {
30
- var _column$index;
31
- var newVal = column === null || column === void 0 || (_column$index = column[index]) === null || _column$index === void 0 ? void 0 : _column$index.value;
32
- scrollTo(index * itemHeight);
32
+ var handleScroll = function handleScroll(idx) {
33
+ var _column$idx;
34
+ var newVal = column === null || column === void 0 || (_column$idx = column[idx]) === null || _column$idx === void 0 ? void 0 : _column$idx.value;
35
+ scrollTo(idx * itemHeight);
33
36
  if (newVal) {
37
+ setLastValue(newVal);
34
38
  onSelect(newVal, props.index);
35
39
  }
36
- }, [index, props.index]);
40
+ };
37
41
  var scrollTo = function scrollTo(y) {
38
42
  setTimeout(function () {
39
43
  var _scrollerRef$current, _scrollerRef$current$;
@@ -53,20 +57,22 @@ var Wheel = function Wheel(props) {
53
57
  }), 0) : 0;
54
58
  };
55
59
  var onMomentumScrollEnd = function onMomentumScrollEnd(e) {
56
- var _e$persist;
60
+ var _e$persist, _column$selectIndex;
57
61
  (_e$persist = e.persist) === null || _e$persist === void 0 || _e$persist.call(e);
58
62
  var contentOffset = e.nativeEvent.contentOffset;
59
63
  var selectIndex = Math.round(contentOffset.y / itemHeight);
60
- setIndex(selectIndex);
64
+ var newVal = column === null || column === void 0 || (_column$selectIndex = column[selectIndex]) === null || _column$selectIndex === void 0 ? void 0 : _column$selectIndex.value;
65
+ setLastValue(newVal);
66
+ onSelect(newVal, props.index);
61
67
  };
62
- var handleClick = function handleClick(index2) {
63
- setIndex(index2);
68
+ var handleClick = function handleClick(index) {
69
+ handleScroll(index);
64
70
  };
65
71
  var renderItems = function renderItems() {
66
- return column.map(function (item, index2) {
72
+ return column.map(function (item, index) {
67
73
  return /* @__PURE__ */React.createElement(TouchableNativeFeedback, {
68
74
  onPress: function onPress() {
69
- return handleClick(index2);
75
+ return handleClick(index);
70
76
  },
71
77
  key: item.value
72
78
  }, /* @__PURE__ */React.createElement(View, _objectSpread2({
@@ -1 +1 @@
1
- {"version":3,"file":"Wheel.js","sources":["../../../../src/components/PickerView/Wheel.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from \"react\";\nimport { NativeScrollEvent, NativeSyntheticEvent, ScrollView, View, Text, TouchableNativeFeedback } from \"react-native\";\nimport { useThemeColor } from \"../ConfigProvider\";\nimport { typography } from \"@xhsreds/reds-token-next\";\nimport { RedsWheel, Column } from \"./interface/index\";\nimport styles from \"./styles\";\n\nconst itemHeight = 40;\n\nconst Wheel = (props: RedsWheel) => {\n const { value, column = [], onSelect = () => {}, accessibility = {} } = props;\n\n /**\n * 滚动ref\n */\n const scrollerRef = useRef();\n\n /**\n * themeColor\n */\n const themeColor = useThemeColor();\n\n /**\n * index\n */\n const [index, setIndex] = useState<any>();\n\n /**\n * 初始化滚动高度\n */\n useEffect(() => {\n value && setIndex(getSelectIndex(column, value));\n }, [column, value]);\n\n useEffect(() => {\n const newVal = column?.[index]?.value;\n scrollTo(index * itemHeight);\n if (newVal) {\n onSelect(newVal, props.index);\n }\n }, [index, props.index]);\n\n /**\n * 滚动ScrollView\n * @param y 滚动距离\n */\n const scrollTo = (y: any) => {\n setTimeout(() => {\n // @ts-ignore\n scrollerRef?.current?.scrollTo?.({\n y,\n animated: true,\n });\n });\n };\n\n /**\n * 计算当前滚动高度\n * @param column 数组\n * @param value 选中值\n * @returns\n */\n const getSelectIndex = (column: Column[], value?: string) => {\n return value\n ? Math.max(\n column.findIndex((item) => {\n if (isNaN(parseInt(item.value)) || isNaN(parseInt(value))) {\n return value && item.value === value;\n } else {\n return value && parseInt(item.value) === parseInt(value);\n }\n }),\n 0,\n )\n : 0;\n };\n\n /**\n * 结束滚动\n * @param e\n */\n const onMomentumScrollEnd = (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n e.persist?.();\n let contentOffset = e.nativeEvent.contentOffset;\n const selectIndex = Math.round(contentOffset.y / itemHeight);\n setIndex(selectIndex);\n };\n\n const handleClick = (index: number) => {\n setIndex(index);\n };\n\n /**\n * 渲染item\n * @returns ReactNode\n */\n const renderItems = () => {\n return column.map((item, index) => (\n <TouchableNativeFeedback onPress={() => handleClick(index)} key={item.value}>\n <View\n style={[styles.wheel, { height: itemHeight, backgroundColor: themeColor.Bg2 }]}\n key={item.value}\n {...item.accessibility}\n >\n <Text {...item.accessibility} style={{ color: themeColor.Title, fontSize: typography.B1FontSize }}>\n {item.label}\n </Text>\n </View>\n </TouchableNativeFeedback>\n ));\n };\n\n return (\n <ScrollView\n style={{ flex: 1 }}\n nestedScrollEnabled\n horizontal={false}\n ref={(el: any) => (scrollerRef.current = el)}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n pagingEnabled={false}\n automaticallyAdjustContentInsets={false}\n directionalLockEnabled={true}\n decelerationRate=\"fast\"\n snapToInterval={itemHeight}\n onMomentumScrollEnd={onMomentumScrollEnd}\n testID={`wheel${props.index}`}\n {...accessibility}\n >\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n {renderItems()}\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n </ScrollView>\n );\n};\n\nexport default Wheel;\n"],"names":["itemHeight","Wheel","props","value","_props$column","column","_props$onSelect","onSelect","_props$accessibility","accessibility","scrollerRef","useRef","themeColor","useThemeColor","_useState","useState","_useState2","_slicedToArray","index","setIndex","useEffect","getSelectIndex","_column$index","newVal","scrollTo","y","setTimeout","_scrollerRef$current","_scrollerRef$current$","current","call","animated","Math","max","findIndex","item","isNaN","parseInt","onMomentumScrollEnd","e","_e$persist","persist","contentOffset","nativeEvent","selectIndex","round","handleClick","renderItems","map","React","createElement","TouchableNativeFeedback","onPress","key","View","_objectSpread","style","styles","wheel","height","backgroundColor","Bg2","Text","color","Title","fontSize","typography","B1FontSize","label","ScrollView","flex","nestedScrollEnabled","horizontal","ref","el","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","pagingEnabled","automaticallyAdjustContentInsets","directionalLockEnabled","decelerationRate","snapToInterval","testID","concat"],"mappings":"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"}
1
+ {"version":3,"file":"Wheel.js","sources":["../../../../src/components/PickerView/Wheel.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from \"react\";\nimport { NativeScrollEvent, NativeSyntheticEvent, ScrollView, View, Text, TouchableNativeFeedback } from \"react-native\";\nimport { useThemeColor } from \"../ConfigProvider\";\nimport { typography } from \"@xhsreds/reds-token-next\";\nimport { RedsWheel, Column } from \"./interface/index\";\nimport styles from \"./styles\";\n\nconst itemHeight = 40;\n\nconst Wheel = (props: RedsWheel) => {\n const { value, column = [], onSelect = () => {}, accessibility = {} } = props;\n\n /**\n * 滚动ref\n */\n const scrollerRef = useRef();\n\n /**\n * themeColor\n */\n const themeColor = useThemeColor();\n\n const [lastValue, setLastValue] = useState(value);\n\n /**\n * 初始化滚动高度\n */\n useEffect(() => {\n if (value !== lastValue) {\n const idx = getSelectIndex(column, value);\n handleScroll(idx);\n }\n }, [column, value]);\n\n const handleScroll = (idx: number) => {\n const newVal = column?.[idx]?.value;\n scrollTo(idx * itemHeight);\n if (newVal) {\n setLastValue(newVal);\n onSelect(newVal, props.index);\n }\n };\n\n /**\n * 滚动ScrollView\n * @param y 滚动距离\n */\n const scrollTo = (y: any) => {\n setTimeout(() => {\n // @ts-ignore\n scrollerRef?.current?.scrollTo?.({\n y,\n animated: true,\n });\n });\n };\n\n /**\n * 计算当前滚动高度\n * @param column 数组\n * @param value 选中值\n * @returns\n */\n const getSelectIndex = (column: Column[], value?: string) => {\n return value\n ? Math.max(\n column.findIndex((item) => {\n if (isNaN(parseInt(item.value)) || isNaN(parseInt(value))) {\n return value && item.value === value;\n } else {\n return value && parseInt(item.value) === parseInt(value);\n }\n }),\n 0,\n )\n : 0;\n };\n\n /**\n * 结束滚动\n * @param e\n */\n const onMomentumScrollEnd = (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n e.persist?.();\n let contentOffset = e.nativeEvent.contentOffset;\n const selectIndex = Math.round(contentOffset.y / itemHeight);\n const newVal = column?.[selectIndex]?.value;\n setLastValue(newVal);\n onSelect(newVal, props.index);\n };\n\n const handleClick = (index: number) => {\n handleScroll(index);\n };\n\n /**\n * 渲染item\n * @returns ReactNode\n */\n const renderItems = () => {\n return column.map((item, index) => (\n <TouchableNativeFeedback onPress={() => handleClick(index)} key={item.value}>\n <View\n style={[styles.wheel, { height: itemHeight, backgroundColor: themeColor.Bg2 }]}\n key={item.value}\n {...item.accessibility}\n >\n <Text {...item.accessibility} style={{ color: themeColor.Title, fontSize: typography.B1FontSize }}>\n {item.label}\n </Text>\n </View>\n </TouchableNativeFeedback>\n ));\n };\n\n return (\n <ScrollView\n style={{ flex: 1 }}\n nestedScrollEnabled\n horizontal={false}\n ref={(el: any) => (scrollerRef.current = el)}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n pagingEnabled={false}\n automaticallyAdjustContentInsets={false}\n directionalLockEnabled={true}\n decelerationRate=\"fast\"\n snapToInterval={itemHeight}\n onMomentumScrollEnd={onMomentumScrollEnd}\n testID={`wheel${props.index}`}\n {...accessibility}\n >\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n {renderItems()}\n <View style={{ height: 2 * itemHeight, backgroundColor: themeColor.Bg2 }} />\n </ScrollView>\n );\n};\n\nexport default Wheel;\n"],"names":["itemHeight","Wheel","props","value","_props$column","column","_props$onSelect","onSelect","_props$accessibility","accessibility","scrollerRef","useRef","themeColor","useThemeColor","_useState","useState","_useState2","_slicedToArray","lastValue","setLastValue","useEffect","idx","getSelectIndex","handleScroll","_column$idx","newVal","scrollTo","index","y","setTimeout","_scrollerRef$current","_scrollerRef$current$","current","call","animated","Math","max","findIndex","item","isNaN","parseInt","onMomentumScrollEnd","e","_e$persist","_column$selectIndex","persist","contentOffset","nativeEvent","selectIndex","round","handleClick","renderItems","map","React","createElement","TouchableNativeFeedback","onPress","key","View","_objectSpread","style","styles","wheel","height","backgroundColor","Bg2","Text","color","Title","fontSize","typography","B1FontSize","label","ScrollView","flex","nestedScrollEnabled","horizontal","ref","el","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","pagingEnabled","automaticallyAdjustContentInsets","directionalLockEnabled","decelerationRate","snapToInterval","testID","concat"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xhsreds/reds-rn-next",
3
- "version": "0.10.1-beta202511201716",
3
+ "version": "0.10.1-beta202511202010",
4
4
  "author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
5
5
  "license": "ISC",
6
6
  "dependencies": {
@@ -26,7 +26,7 @@
26
26
  "react-native-fs": "2.20.0",
27
27
  "react-native-svg": "13.14.0",
28
28
  "@xhs/react-native-harmony": "*",
29
- "@xhsreds/reds-token-next": "0.10.1-beta202511201716"
29
+ "@xhsreds/reds-token-next": "0.10.1-beta202511202010"
30
30
  },
31
31
  "peerDependenciesMeta": {
32
32
  "ozone-schema-web": {
@@ -37,6 +37,7 @@ export default function App() {
37
37
  const [value14, setValue14] = useState("2023-10-05-12");
38
38
  const [value16, setValue16] = useState("2023-10-05-12-10");
39
39
  const [value17, setValue17] = useState("2025-9-15-14-25");
40
+ const [value18, setValue18] = useState("2025-11-20");
40
41
 
41
42
  const [visible1, setVisible1] = useState(false);
42
43
  const [visible2, setVisible2] = useState(false);
@@ -54,6 +55,7 @@ export default function App() {
54
55
  const [visible14, setVisible14] = useState(false);
55
56
  const [visible16, setVisible16] = useState(false);
56
57
  const [visible17, setVisible17] = useState(false);
58
+ const [visible18, setVisible18] = useState(false);
57
59
 
58
60
  const { show, remove } = useDatePicker();
59
61
  return (
@@ -329,6 +331,30 @@ export default function App() {
329
331
  >
330
332
  函数式调用
331
333
  </Button>
334
+
335
+ <Button
336
+ onClick={() => {
337
+ setVisible18(true);
338
+ }}
339
+ >
340
+ 跳动bug
341
+ </Button>
342
+ <DatePicker
343
+ visible={visible18}
344
+ value={value18}
345
+ label={"跳动bug"}
346
+ startTime={"1900-01-01"}
347
+ endTime={"2200-12-31"}
348
+ onConfirm={(val: string) => {
349
+ console.log("onConfirm18", val);
350
+ setValue18(val);
351
+ setVisible18(false);
352
+ }}
353
+ onChange={(val: string) => {
354
+ console.log("onChange18", val);
355
+ }}
356
+ onCancel={() => setVisible18(false)}
357
+ />
332
358
  <View style={{ height: 200 }}></View>
333
359
  </ScrollView>
334
360
  );
@@ -20,25 +20,26 @@ const Wheel = (props: RedsWheel) => {
20
20
  */
21
21
  const themeColor = useThemeColor();
22
22
 
23
- /**
24
- * index
25
- */
26
- const [index, setIndex] = useState<any>();
23
+ const [lastValue, setLastValue] = useState(value);
27
24
 
28
25
  /**
29
26
  * 初始化滚动高度
30
27
  */
31
28
  useEffect(() => {
32
- value && setIndex(getSelectIndex(column, value));
29
+ if (value !== lastValue) {
30
+ const idx = getSelectIndex(column, value);
31
+ handleScroll(idx);
32
+ }
33
33
  }, [column, value]);
34
34
 
35
- useEffect(() => {
36
- const newVal = column?.[index]?.value;
37
- scrollTo(index * itemHeight);
35
+ const handleScroll = (idx: number) => {
36
+ const newVal = column?.[idx]?.value;
37
+ scrollTo(idx * itemHeight);
38
38
  if (newVal) {
39
+ setLastValue(newVal);
39
40
  onSelect(newVal, props.index);
40
41
  }
41
- }, [index, props.index]);
42
+ };
42
43
 
43
44
  /**
44
45
  * 滚动ScrollView
@@ -83,11 +84,13 @@ const Wheel = (props: RedsWheel) => {
83
84
  e.persist?.();
84
85
  let contentOffset = e.nativeEvent.contentOffset;
85
86
  const selectIndex = Math.round(contentOffset.y / itemHeight);
86
- setIndex(selectIndex);
87
+ const newVal = column?.[selectIndex]?.value;
88
+ setLastValue(newVal);
89
+ onSelect(newVal, props.index);
87
90
  };
88
91
 
89
92
  const handleClick = (index: number) => {
90
- setIndex(index);
93
+ handleScroll(index);
91
94
  };
92
95
 
93
96
  /**