yootd 0.2.5 → 0.2.7

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 (67) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +43 -43
  3. package/dist/Preview/components/preview/phone.scss +8 -8
  4. package/dist/Preview/index.scss +35 -35
  5. package/dist/Preview/types/type.d.ts +22 -22
  6. package/dist/anchor/index.scss +23 -23
  7. package/dist/approval-process/index.scss +95 -95
  8. package/dist/areas/index.scss +21 -21
  9. package/dist/areas-treeSelect/index.scss +6 -6
  10. package/dist/aside/components/SortableItem.scss +111 -111
  11. package/dist/aside/index.scss +46 -46
  12. package/dist/aside/types/types.d.ts +51 -51
  13. package/dist/badge/index.scss +5 -5
  14. package/dist/buildings/types/types.d.ts +21 -21
  15. package/dist/button/index.scss +30 -30
  16. package/dist/cascader/index.scss +5 -5
  17. package/dist/courses/types/types.d.ts +18 -18
  18. package/dist/department/index.scss +6 -6
  19. package/dist/department/types/types.d.ts +23 -23
  20. package/dist/description/index.scss +10 -10
  21. package/dist/dictionary/types/types.d.ts +14 -14
  22. package/dist/drawer-modal/index.scss +42 -42
  23. package/dist/drawer-modal/types/types.d.ts +3 -3
  24. package/dist/dropdown/assets/arrow-down.svg +5 -5
  25. package/dist/dropdown-select/index.scss +6 -6
  26. package/dist/dropdown-select/types/type.d.ts +18 -18
  27. package/dist/empty/index.scss +15 -15
  28. package/dist/export/index.scss +6 -6
  29. package/dist/go-back/components/index.scss +5 -5
  30. package/dist/go-back/index.scss +24 -24
  31. package/dist/group-title/index.scss +31 -31
  32. package/dist/holiday/types/types.d.ts +22 -22
  33. package/dist/hooks/useBem.js +10 -10
  34. package/dist/image/index.scss +26 -26
  35. package/dist/input/index.scss +5 -5
  36. package/dist/job-title/types/types.d.ts +17 -17
  37. package/dist/modal/index.d.ts +1 -1
  38. package/dist/modal/index.scss +76 -76
  39. package/dist/pagination/index.scss +47 -47
  40. package/dist/role/types/types.d.ts +22 -22
  41. package/dist/school/index.js +1 -0
  42. package/dist/school/index.scss +21 -21
  43. package/dist/school/types/types.d.ts +85 -85
  44. package/dist/state/index.scss +89 -89
  45. package/dist/steps/index.scss +32 -32
  46. package/dist/student-dropdown/types/types.d.ts +44 -44
  47. package/dist/table/components/primary-header-row/index.scss +67 -67
  48. package/dist/table/components/primary-tbody-row/index.scss +5 -5
  49. package/dist/table/index.scss +33 -33
  50. package/dist/tabs/index.scss +86 -86
  51. package/dist/tag/index.scss +4 -4
  52. package/dist/teacher/types/types.d.ts +33 -33
  53. package/dist/tree/index.scss +34 -34
  54. package/dist/upload/components/fileUpload.d.ts +1 -0
  55. package/dist/upload/components/imageUpload.d.ts +1 -0
  56. package/dist/upload/components/imageUpload.js +12 -1
  57. package/dist/upload/index.d.ts +2 -0
  58. package/dist/upload/index.scss +115 -115
  59. package/dist/user-dropdown/types/types.d.ts +45 -45
  60. package/dist/video-player/index.js +7 -7
  61. package/dist/video-player/index.scss +309 -309
  62. package/dist/year-term/index.js +1 -1
  63. package/dist/year-term/index.scss +21 -21
  64. package/dist/year-term/types/types.d.ts +39 -39
  65. package/dist/zones/index.module.scss +23 -23
  66. package/dist/zones/types/types.d.ts +26 -26
  67. package/package.json +1 -1
@@ -1,86 +1,86 @@
1
- .yot-tabs {
2
- // 覆盖 ant 默认样式
3
- .ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar,
4
- .ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar {
5
- bottom: 1px;
6
- }
7
- &-large {
8
- .ant-tabs-tab.ant-tabs-tab-active {
9
- color: var(--ant-color-primary);
10
- }
11
- .ant-tabs-tab-btn {
12
- font-size: var(--ant-font-size-lg);
13
- }
14
- .ant-tabs-nav-wrap {
15
- background-color: white;
16
- padding-left: 1.5rem;
17
- padding-right: 1.5rem;
18
- }
19
- .ant-tabs-nav::before {
20
- content: '';
21
- position: absolute;
22
- right: 1.5rem;
23
- left: 1.5rem;
24
- z-index: 10;
25
- border-bottom-width: var(--ant-line-width);
26
- border-bottom-style: solid;
27
- border-bottom-color: #e5e5e5;
28
- }
29
- }
30
- &-small {
31
- .ant-tabs-tab.ant-tabs-tab-active {
32
- color: var(--ant-color-primary);
33
- }
34
- .ant-tabs-tab-btn {
35
- font-size: var(--ant-font-size);
36
- }
37
- .ant-tabs-nav-wrap {
38
- background-color: white;
39
- padding-left: 1.5rem;
40
- padding-right: 1.5rem;
41
- }
42
- .ant-tabs-nav::before {
43
- content: '';
44
- position: absolute;
45
- right: 1.5rem;
46
- left: 1.5rem;
47
- z-index: 10;
48
- border-bottom-width: var(--ant-line-width);
49
- border-bottom-style: solid;
50
- border-bottom-color: #e5e5e5;
51
- }
52
- }
53
- &-capsule {
54
- &__content {
55
- padding-top: var(--ant-margin);
56
- padding-bottom: var(--ant-margin);
57
- box-sizing: border-box;
58
- background-color: white;
59
- padding-left: var(--ant-padding-lg);
60
- padding-right: var(--ant-padding-lg);
61
- }
62
- .ant-radio-button-wrapper.ant-radio-button-wrapper-checked.css-var-r4.ant-radio-css-var {
63
- padding-left: var(--ant-padding);
64
- padding-right: var(--ant-padding);
65
- box-sizing: border-box;
66
- font-size: var(--ant-font-size);
67
- color: var(--ant-color-primary);
68
- }
69
- .ant-radio-button.ant-radio-button-checked {
70
- font-size: var(--ant-font-size);
71
- color: var(--ant-color-primary);
72
- }
73
- &__value {
74
- font-size: 14px;
75
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
76
- 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
77
- 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
78
- color: #000000e0;
79
- }
80
- }
81
- &-istabmargin {
82
- .ant-tabs-nav {
83
- margin-bottom: 0;
84
- }
85
- }
86
- }
1
+ .yot-tabs {
2
+ // 覆盖 ant 默认样式
3
+ .ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar,
4
+ .ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar {
5
+ bottom: 1px;
6
+ }
7
+ &-large {
8
+ .ant-tabs-tab.ant-tabs-tab-active {
9
+ color: var(--ant-color-primary);
10
+ }
11
+ .ant-tabs-tab-btn {
12
+ font-size: var(--ant-font-size-lg);
13
+ }
14
+ .ant-tabs-nav-wrap {
15
+ background-color: white;
16
+ padding-left: 1.5rem;
17
+ padding-right: 1.5rem;
18
+ }
19
+ .ant-tabs-nav::before {
20
+ content: '';
21
+ position: absolute;
22
+ right: 1.5rem;
23
+ left: 1.5rem;
24
+ z-index: 10;
25
+ border-bottom-width: var(--ant-line-width);
26
+ border-bottom-style: solid;
27
+ border-bottom-color: #e5e5e5;
28
+ }
29
+ }
30
+ &-small {
31
+ .ant-tabs-tab.ant-tabs-tab-active {
32
+ color: var(--ant-color-primary);
33
+ }
34
+ .ant-tabs-tab-btn {
35
+ font-size: var(--ant-font-size);
36
+ }
37
+ .ant-tabs-nav-wrap {
38
+ background-color: white;
39
+ padding-left: 1.5rem;
40
+ padding-right: 1.5rem;
41
+ }
42
+ .ant-tabs-nav::before {
43
+ content: '';
44
+ position: absolute;
45
+ right: 1.5rem;
46
+ left: 1.5rem;
47
+ z-index: 10;
48
+ border-bottom-width: var(--ant-line-width);
49
+ border-bottom-style: solid;
50
+ border-bottom-color: #e5e5e5;
51
+ }
52
+ }
53
+ &-capsule {
54
+ &__content {
55
+ padding-top: var(--ant-margin);
56
+ padding-bottom: var(--ant-margin);
57
+ box-sizing: border-box;
58
+ background-color: white;
59
+ padding-left: var(--ant-padding-lg);
60
+ padding-right: var(--ant-padding-lg);
61
+ }
62
+ .ant-radio-button-wrapper.ant-radio-button-wrapper-checked.css-var-r4.ant-radio-css-var {
63
+ padding-left: var(--ant-padding);
64
+ padding-right: var(--ant-padding);
65
+ box-sizing: border-box;
66
+ font-size: var(--ant-font-size);
67
+ color: var(--ant-color-primary);
68
+ }
69
+ .ant-radio-button.ant-radio-button-checked {
70
+ font-size: var(--ant-font-size);
71
+ color: var(--ant-color-primary);
72
+ }
73
+ &__value {
74
+ font-size: 14px;
75
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
76
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
77
+ 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
78
+ color: #000000e0;
79
+ }
80
+ }
81
+ &-istabmargin {
82
+ .ant-tabs-nav {
83
+ margin-bottom: 0;
84
+ }
85
+ }
86
+ }
@@ -1,5 +1,5 @@
1
- .yot-tag {
2
- &__text {
3
- font-weight: bold;
4
- }
1
+ .yot-tag {
2
+ &__text {
3
+ font-weight: bold;
4
+ }
5
5
  }
@@ -1,33 +1,33 @@
1
- import { SelectProps } from 'yootd';
2
-
3
- export interface PageData<T> {
4
- content: T[];
5
- page: {
6
- number: number;
7
- size: number;
8
- totalElements: number;
9
- totalPages: number;
10
- };
11
- }
12
- // 查询老师返回的数据类型
13
- export interface IteacherItem {
14
- [key: string]: string | number;
15
- userId: number; // 老师ID
16
- personalName: string; // 老师姓名
17
- personalMobile?: string; // 手机号
18
- uniqueNumber?: string; // 工号
19
- nationName?: string; // 民族
20
- gender?: number; // 性别
21
- personalEmail?: string; // 邮箱
22
- }
23
- type LabelOptions =
24
- | 'personalName'
25
- | 'uniqueNumber'
26
- | 'personalMobile'
27
- | 'nationName'
28
- | 'genderName'
29
- | 'personalEmail';
30
- export type TeacherProps = SelectProps & {
31
- label?: LabelOptions[];
32
- connectors?: string;
33
- };
1
+ import { SelectProps } from 'yootd';
2
+
3
+ export interface PageData<T> {
4
+ content: T[];
5
+ page: {
6
+ number: number;
7
+ size: number;
8
+ totalElements: number;
9
+ totalPages: number;
10
+ };
11
+ }
12
+ // 查询老师返回的数据类型
13
+ export interface IteacherItem {
14
+ [key: string]: string | number;
15
+ userId: number; // 老师ID
16
+ personalName: string; // 老师姓名
17
+ personalMobile?: string; // 手机号
18
+ uniqueNumber?: string; // 工号
19
+ nationName?: string; // 民族
20
+ gender?: number; // 性别
21
+ personalEmail?: string; // 邮箱
22
+ }
23
+ type LabelOptions =
24
+ | 'personalName'
25
+ | 'uniqueNumber'
26
+ | 'personalMobile'
27
+ | 'nationName'
28
+ | 'genderName'
29
+ | 'personalEmail';
30
+ export type TeacherProps = SelectProps & {
31
+ label?: LabelOptions[];
32
+ connectors?: string;
33
+ };
@@ -1,34 +1,34 @@
1
- .yot-tree {
2
- position: relative;
3
- overflow: auto;
4
- height: 100%;
5
- .ant-tree-node-content-wrapper.ant-tree-node-selected {
6
- background-color: var(--ant-color-primary-bg);
7
- .ant-tree-title {
8
- color: var(--ant-color-primary);
9
- }
10
- }
11
- .ant-tree-node-content-wrapper {
12
- .ant-tree-title {
13
- color: var(--ant-color-text-secondary);
14
- }
15
- }
16
- &__icon {
17
- margin-top: 2px;
18
- &.yot-is-selected {
19
- .path-1 {
20
- stroke: var(--ant-color-primary);
21
- }
22
- .path-2,
23
- .rect-1 {
24
- fill: var(--ant-color-primary);
25
- }
26
- }
27
- }
28
- &__search {
29
- position: sticky;
30
- top: 0px;
31
- z-index: 1;
32
- margin-bottom: 10px;
33
- }
34
- }
1
+ .yot-tree {
2
+ position: relative;
3
+ overflow: auto;
4
+ height: 100%;
5
+ .ant-tree-node-content-wrapper.ant-tree-node-selected {
6
+ background-color: var(--ant-color-primary-bg);
7
+ .ant-tree-title {
8
+ color: var(--ant-color-primary);
9
+ }
10
+ }
11
+ .ant-tree-node-content-wrapper {
12
+ .ant-tree-title {
13
+ color: var(--ant-color-text-secondary);
14
+ }
15
+ }
16
+ &__icon {
17
+ margin-top: 2px;
18
+ &.yot-is-selected {
19
+ .path-1 {
20
+ stroke: var(--ant-color-primary);
21
+ }
22
+ .path-2,
23
+ .rect-1 {
24
+ fill: var(--ant-color-primary);
25
+ }
26
+ }
27
+ }
28
+ &__search {
29
+ position: sticky;
30
+ top: 0px;
31
+ z-index: 1;
32
+ margin-bottom: 10px;
33
+ }
34
+ }
@@ -9,6 +9,7 @@ declare const FileUpload: React.ForwardRefExoticComponent<import("antd").UploadP
9
9
  value?: UploadFile<any>[] | undefined;
10
10
  widthPixels?: number | undefined;
11
11
  heightPixels?: number | undefined;
12
+ proportio?: [number, number] | undefined;
12
13
  fileType?: "image" | "file" | undefined;
13
14
  onChange?: ((value?: UploadFile<any>[] | undefined) => void) | undefined;
14
15
  } & React.RefAttributes<UploadRef<any>>>;
@@ -9,6 +9,7 @@ declare const ImageUpload: React.ForwardRefExoticComponent<import("antd").Upload
9
9
  value?: UploadFile<any>[] | undefined;
10
10
  widthPixels?: number | undefined;
11
11
  heightPixels?: number | undefined;
12
+ proportio?: [number, number] | undefined;
12
13
  fileType?: "image" | "file" | undefined;
13
14
  onChange?: ((value?: UploadFile<any>[] | undefined) => void) | undefined;
14
15
  } & React.RefAttributes<UploadRef<any>>>;
@@ -22,7 +22,8 @@ var InternalUpload = function InternalUpload(props, ref) {
22
22
  value = props.value,
23
23
  onChange = props.onChange,
24
24
  widthPixels = props.widthPixels,
25
- heightPixels = props.heightPixels;
25
+ heightPixels = props.heightPixels,
26
+ proportio = props.proportio;
26
27
  var mb = useBem('upload');
27
28
  var _useState = useState([]),
28
29
  _useState2 = _slicedToArray(_useState, 2),
@@ -39,6 +40,7 @@ var InternalUpload = function InternalUpload(props, ref) {
39
40
  _message$useMessage2 = _slicedToArray(_message$useMessage, 2),
40
41
  messageApi = _message$useMessage2[0],
41
42
  contextHolder = _message$useMessage2[1];
43
+ console.log('比例值', proportio);
42
44
  function getBase64(_x) {
43
45
  return _getBase.apply(this, arguments);
44
46
  }
@@ -108,6 +110,15 @@ var InternalUpload = function InternalUpload(props, ref) {
108
110
  return;
109
111
  }
110
112
  }
113
+ if ((proportio === null || proportio === void 0 ? void 0 : proportio[0]) != null && (proportio === null || proportio === void 0 ? void 0 : proportio[1]) != null) {
114
+ var imageRatio = image.width / image.height;
115
+ var expectedRatio = proportio[0] / proportio[1];
116
+ if (Math.abs(imageRatio - expectedRatio) > 0.01) {
117
+ void messageApi.warning("\u8BF7\u4E0A\u4F20\u6BD4\u4F8B\u4E3A".concat(proportio[0], ":").concat(proportio[1], "\u7684\u56FE\u7247"));
118
+ return;
119
+ }
120
+ }
121
+
111
122
  // 图片尺寸符合要求,上传图片
112
123
  var formData = new FormData();
113
124
  if (folder != null) {
@@ -10,6 +10,7 @@ export type UploadProps = AntUploadProps & {
10
10
  value?: UploadFile[];
11
11
  widthPixels?: number;
12
12
  heightPixels?: number;
13
+ proportio?: [number, number];
13
14
  fileType?: 'file' | 'image';
14
15
  onChange?: (value?: UploadFile[]) => void;
15
16
  };
@@ -20,6 +21,7 @@ declare const UploadInternal: React.ForwardRefExoticComponent<AntUploadProps<any
20
21
  value?: UploadFile<any>[] | undefined;
21
22
  widthPixels?: number | undefined;
22
23
  heightPixels?: number | undefined;
24
+ proportio?: [number, number] | undefined;
23
25
  fileType?: "image" | "file" | undefined;
24
26
  onChange?: ((value?: UploadFile[]) => void) | undefined;
25
27
  } & React.RefAttributes<UploadRef<any>>>;
@@ -1,115 +1,115 @@
1
- .yot-upload {
2
- .ant-upload-list-item {
3
- padding: 0;
4
- }
5
- .ant-upload-list-item.ant-upload-list-item-done {
6
- .ant-upload-icon {
7
- .anticon.anticon-paper-clip {
8
- color: var(--ant-color-primary);
9
- }
10
- }
11
- }
12
- .ant-upload-list-item-name {
13
- display: flex;
14
- align-items: center;
15
- }
16
-
17
- &-file {
18
- &-btn {
19
- &__icon {
20
- width: 16px;
21
- height: 16px;
22
- }
23
- &:hover &{
24
- &__icon {
25
- .path-1 {
26
- fill: var(--ant-color-primary);
27
- width: 20px;
28
- }
29
- }
30
- }
31
- }
32
- }
33
- &__icon {
34
- &--success {
35
- width: 16px;
36
- height: 16px;
37
- position: absolute;
38
- top: 0px;
39
- right: 24px;
40
- }
41
- &--again {
42
- width: 16px;
43
- height: 16px;
44
- position: absolute;
45
- top: 0px;
46
- right: 24px;
47
- }
48
- &--delete {
49
- width: 16px;
50
- height: 16px;
51
- position: absolute;
52
- top: 0px;
53
- right: 2px;
54
- }
55
- }
56
-
57
- &-image {
58
- &-btn {
59
- width: 100px;
60
- height: 100px;
61
- border-radius: 8px;
62
- background-color: var(--ant-color-border-secondary);
63
- display: flex;
64
- align-items: center;
65
- justify-content: center;
66
- flex-direction: column;
67
- &__text {
68
- font-size: 12px;
69
- color: var(--ant-color-text-quaternary);
70
- margin-top: 8px;
71
- }
72
- }
73
- }
74
- &-video {
75
- &-content {
76
- position: relative;
77
- width: 102px;
78
- height: 102px;
79
- border-radius: 4px;
80
- cursor: pointer;
81
- padding: 8px;
82
- box-sizing: border-box;
83
- border: 1px solid var(--ant-color-border-secondary);
84
- &__video {
85
- width: 100%;
86
- height: 100%;
87
- }
88
- &:hover &{
89
- &-icon {
90
- z-index: 10;
91
- transition: all;
92
- box-sizing: border-box;
93
- position: absolute;
94
- top: 8px;
95
- left: 8px;
96
- height: 86px;
97
- width: 86px;
98
- /* 这里的背景色根据需求设置 */
99
- background: rgba(0, 0, 0, 0.6) !important;
100
- background-color: #000;
101
- filter: Alpha(Opacity=60);
102
- opacity: 0.6;
103
- &--delete {
104
- width: 16px;
105
- height: 16px;
106
- position: absolute;
107
- top: 36px;
108
- left: 40%;
109
- cursor: pointer;
110
- }
111
- }
112
- }
113
- }
114
- }
115
- }
1
+ .yot-upload {
2
+ .ant-upload-list-item {
3
+ padding: 0;
4
+ }
5
+ .ant-upload-list-item.ant-upload-list-item-done {
6
+ .ant-upload-icon {
7
+ .anticon.anticon-paper-clip {
8
+ color: var(--ant-color-primary);
9
+ }
10
+ }
11
+ }
12
+ .ant-upload-list-item-name {
13
+ display: flex;
14
+ align-items: center;
15
+ }
16
+
17
+ &-file {
18
+ &-btn {
19
+ &__icon {
20
+ width: 16px;
21
+ height: 16px;
22
+ }
23
+ &:hover &{
24
+ &__icon {
25
+ .path-1 {
26
+ fill: var(--ant-color-primary);
27
+ width: 20px;
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ &__icon {
34
+ &--success {
35
+ width: 16px;
36
+ height: 16px;
37
+ position: absolute;
38
+ top: 0px;
39
+ right: 24px;
40
+ }
41
+ &--again {
42
+ width: 16px;
43
+ height: 16px;
44
+ position: absolute;
45
+ top: 0px;
46
+ right: 24px;
47
+ }
48
+ &--delete {
49
+ width: 16px;
50
+ height: 16px;
51
+ position: absolute;
52
+ top: 0px;
53
+ right: 2px;
54
+ }
55
+ }
56
+
57
+ &-image {
58
+ &-btn {
59
+ width: 100px;
60
+ height: 100px;
61
+ border-radius: 8px;
62
+ background-color: var(--ant-color-border-secondary);
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ flex-direction: column;
67
+ &__text {
68
+ font-size: 12px;
69
+ color: var(--ant-color-text-quaternary);
70
+ margin-top: 8px;
71
+ }
72
+ }
73
+ }
74
+ &-video {
75
+ &-content {
76
+ position: relative;
77
+ width: 102px;
78
+ height: 102px;
79
+ border-radius: 4px;
80
+ cursor: pointer;
81
+ padding: 8px;
82
+ box-sizing: border-box;
83
+ border: 1px solid var(--ant-color-border-secondary);
84
+ &__video {
85
+ width: 100%;
86
+ height: 100%;
87
+ }
88
+ &:hover &{
89
+ &-icon {
90
+ z-index: 10;
91
+ transition: all;
92
+ box-sizing: border-box;
93
+ position: absolute;
94
+ top: 8px;
95
+ left: 8px;
96
+ height: 86px;
97
+ width: 86px;
98
+ /* 这里的背景色根据需求设置 */
99
+ background: rgba(0, 0, 0, 0.6) !important;
100
+ background-color: #000;
101
+ filter: Alpha(Opacity=60);
102
+ opacity: 0.6;
103
+ &--delete {
104
+ width: 16px;
105
+ height: 16px;
106
+ position: absolute;
107
+ top: 36px;
108
+ left: 40%;
109
+ cursor: pointer;
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }