@opendesign-plus-test/components 0.0.1-rc.164 → 0.0.1-rc.166

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 (32) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +8 -0
  3. package/dist/components/meeting/OMeetingMinutesCopyDetail.vue.d.ts +7 -0
  4. package/dist/components/meeting/OMeetingSendMinutesForm.vue.d.ts +18 -0
  5. package/dist/components/meeting/components/OMeetingSendMinutesDialog.vue.d.ts +32 -1
  6. package/dist/components/meeting/index.d.ts +76 -1
  7. package/dist/components.cjs.js +35 -35
  8. package/dist/components.css +1 -1
  9. package/dist/components.es.js +6956 -6893
  10. package/dist/treeshaking/components/markdown/OMarkdown.css +7 -0
  11. package/dist/treeshaking/components/meeting/OMeetingMinutes.css +105 -324
  12. package/dist/treeshaking/components/meeting/OMeetingMinutes.vue.mjs +172 -195
  13. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.css +95 -0
  14. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue.d.ts +7 -0
  15. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue.mjs +7 -0
  16. package/dist/treeshaking/components/meeting/OMeetingMinutesCopyDetail.vue2.mjs +73 -0
  17. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.css +238 -0
  18. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue.d.ts +18 -0
  19. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue.mjs +7 -0
  20. package/dist/treeshaking/components/meeting/OMeetingSendMinutesForm.vue2.mjs +181 -0
  21. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.css +4 -266
  22. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue.d.ts +32 -1
  23. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue.mjs +1 -2
  24. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog.vue2.mjs +53 -186
  25. package/dist/treeshaking/components/meeting/index.d.ts +76 -1
  26. package/dist/treeshaking/components/meeting/index.mjs +14 -0
  27. package/dist/treeshaking/i18n/en.mjs +4 -0
  28. package/dist/treeshaking/i18n/zh.mjs +4 -0
  29. package/dist/treeshaking/index.mjs +3 -1
  30. package/package.json +1 -1
  31. package/dist/treeshaking/_virtual/icon-edit.mjs +0 -17
  32. package/dist/treeshaking/components/meeting/components/OMeetingSendMinutesDialog2.css +0 -11
@@ -0,0 +1,238 @@
1
+ .hover-icon-rotate .o-icon[data-v-c32ba974] {
2
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
3
+ }
4
+ @media (hover: hover) {
5
+ .hover-icon-rotate:hover .o-icon[data-v-c32ba974] {
6
+ transform: rotate(-180deg);
7
+ }
8
+ }
9
+ .o-meeting-send-minutes[data-v-c32ba974] {
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: var(--o-r-gap-4);
13
+ }
14
+ .o-meeting-send-minutes .o-meeting-send-minutes-field-row[data-v-c32ba974] {
15
+ display: flex;
16
+ gap: var(--o-gap-6);
17
+ align-items: flex-start;
18
+ }
19
+ @media (max-width: 1680px) {
20
+ .o-meeting-send-minutes .o-meeting-send-minutes-field-row[data-v-c32ba974] {
21
+ gap: var(--o-gap-5);
22
+ }
23
+ }
24
+ @media (max-width: 1200px) {
25
+ .o-meeting-send-minutes .o-meeting-send-minutes-field-row[data-v-c32ba974] {
26
+ gap: var(--o-gap-3);
27
+ }
28
+ }
29
+ .o-meeting-send-minutes .field-label[data-v-c32ba974] {
30
+ flex: 0 0 72px;
31
+ color: var(--o-color-info2);
32
+ font-size: 16px;
33
+ line-height: 24px;
34
+ }
35
+ @media (min-width: 1201px) and (max-width: 1680px) {
36
+ .o-meeting-send-minutes .field-label[data-v-c32ba974] {
37
+ font-size: 14px;
38
+ line-height: 22px;
39
+ }
40
+ }
41
+ @media (min-width: 841px) and (max-width: 1200px) {
42
+ .o-meeting-send-minutes .field-label[data-v-c32ba974] {
43
+ font-size: 14px;
44
+ line-height: 22px;
45
+ }
46
+ }
47
+ @media (min-width: 601px) and (max-width: 840px) {
48
+ .o-meeting-send-minutes .field-label[data-v-c32ba974] {
49
+ font-size: 14px;
50
+ line-height: 22px;
51
+ }
52
+ }
53
+ @media (max-width: 600px) {
54
+ .o-meeting-send-minutes .field-label[data-v-c32ba974] {
55
+ font-size: 12px;
56
+ line-height: 18px;
57
+ }
58
+ }
59
+ .o-meeting-send-minutes .field-label[data-v-c32ba974] {
60
+ line-height: var(--o-control_size-m);
61
+ }
62
+ .o-meeting-send-minutes .o-meeting-send-minutes-field-control[data-v-c32ba974] {
63
+ flex: 1;
64
+ min-width: 0;
65
+ }
66
+ .o-meeting-send-minutes .o-meeting-send-minutes-sender-line[data-v-c32ba974] {
67
+ display: flex;
68
+ align-items: center;
69
+ }
70
+ .o-meeting-send-minutes .sender-text[data-v-c32ba974] {
71
+ color: var(--o-color-info1);
72
+ line-height: var(--o-control_size-m);
73
+ font-size: 16px;
74
+ line-height: 24px;
75
+ }
76
+ @media (min-width: 1201px) and (max-width: 1680px) {
77
+ .o-meeting-send-minutes .sender-text[data-v-c32ba974] {
78
+ font-size: 14px;
79
+ line-height: 22px;
80
+ }
81
+ }
82
+ @media (min-width: 841px) and (max-width: 1200px) {
83
+ .o-meeting-send-minutes .sender-text[data-v-c32ba974] {
84
+ font-size: 14px;
85
+ line-height: 22px;
86
+ }
87
+ }
88
+ @media (min-width: 601px) and (max-width: 840px) {
89
+ .o-meeting-send-minutes .sender-text[data-v-c32ba974] {
90
+ font-size: 14px;
91
+ line-height: 22px;
92
+ }
93
+ }
94
+ @media (max-width: 600px) {
95
+ .o-meeting-send-minutes .sender-text[data-v-c32ba974] {
96
+ font-size: 12px;
97
+ line-height: 18px;
98
+ }
99
+ }
100
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974] {
101
+ display: flex;
102
+ flex-wrap: wrap;
103
+ align-items: center;
104
+ gap: var(--o-gap-3);
105
+ padding: var(--o-gap-1) var(--o-gap-3);
106
+ border: 1px solid var(--o-color-control1);
107
+ border-radius: var(--o-radius_control-s);
108
+ min-height: var(--o-control_size-l);
109
+ cursor: text;
110
+ transition: border-color var(--o-duration-s) var(--o-easing-standard);
111
+ color: var(--o-color-info1);
112
+ font-size: 16px;
113
+ line-height: 24px;
114
+ }
115
+ @media (min-width: 1201px) and (max-width: 1680px) {
116
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974] {
117
+ font-size: 14px;
118
+ line-height: 22px;
119
+ }
120
+ }
121
+ @media (min-width: 841px) and (max-width: 1200px) {
122
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974] {
123
+ font-size: 14px;
124
+ line-height: 22px;
125
+ }
126
+ }
127
+ @media (min-width: 601px) and (max-width: 840px) {
128
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974] {
129
+ font-size: 14px;
130
+ line-height: 22px;
131
+ }
132
+ }
133
+ @media (max-width: 600px) {
134
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974] {
135
+ font-size: 12px;
136
+ line-height: 18px;
137
+ }
138
+ }
139
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974]:hover {
140
+ border-color: var(--o-color-control2);
141
+ }
142
+ .o-meeting-send-minutes .o-meeting-send-minutes-recipient-editor[data-v-c32ba974]:focus-within {
143
+ border-color: var(--o-color-primary3);
144
+ }
145
+ .o-meeting-send-minutes .recipient-tag[data-v-c32ba974] {
146
+ flex-shrink: 0;
147
+ --tag-height: 22px;
148
+ --tag-padding: 4px 8px;
149
+ --tag-bg-color: var(--o-color-control2-light);
150
+ --tag-color: var(--o-color-info1);
151
+ --tag-bd-color: transparent;
152
+ --tag-icon-close-color: var(--o-color-info2);
153
+ --tag-icon-close-color-hover: var(--o-color-info1);
154
+ }
155
+ .o-meeting-send-minutes .recipient-native-input[data-v-c32ba974] {
156
+ flex: 1 1 120px;
157
+ min-width: 120px;
158
+ border: none;
159
+ outline: none;
160
+ background: transparent;
161
+ height: 22px;
162
+ line-height: 22px;
163
+ padding: 0;
164
+ color: var(--o-color-info1);
165
+ font-size: 16px;
166
+ line-height: 24px;
167
+ }
168
+ @media (min-width: 1201px) and (max-width: 1680px) {
169
+ .o-meeting-send-minutes .recipient-native-input[data-v-c32ba974] {
170
+ font-size: 14px;
171
+ line-height: 22px;
172
+ }
173
+ }
174
+ @media (min-width: 841px) and (max-width: 1200px) {
175
+ .o-meeting-send-minutes .recipient-native-input[data-v-c32ba974] {
176
+ font-size: 14px;
177
+ line-height: 22px;
178
+ }
179
+ }
180
+ @media (min-width: 601px) and (max-width: 840px) {
181
+ .o-meeting-send-minutes .recipient-native-input[data-v-c32ba974] {
182
+ font-size: 14px;
183
+ line-height: 22px;
184
+ }
185
+ }
186
+ @media (max-width: 600px) {
187
+ .o-meeting-send-minutes .recipient-native-input[data-v-c32ba974] {
188
+ font-size: 12px;
189
+ line-height: 18px;
190
+ }
191
+ }
192
+ .o-meeting-send-minutes .recipient-native-input[data-v-c32ba974]::placeholder {
193
+ color: var(--o-color-info3);
194
+ }
195
+ .o-meeting-send-minutes .subject-input[data-v-c32ba974] {
196
+ width: 100%;
197
+ }
198
+ .o-meeting-send-minutes .o-meeting-send-minutes-email-body-row[data-v-c32ba974] {
199
+ align-items: flex-start;
200
+ }
201
+ .o-meeting-send-minutes .o-meeting-send-minutes-email-body-scroller[data-v-c32ba974] {
202
+ max-height: 452px;
203
+ }
204
+ @media (max-width: 840px) {
205
+ .o-meeting-send-minutes .o-meeting-send-minutes-email-body-scroller[data-v-c32ba974] {
206
+ max-height: 320px;
207
+ }
208
+ }
209
+ .o-meeting-send-minutes .email-body-content[data-v-c32ba974] {
210
+ color: var(--o-color-info1);
211
+ white-space: pre-wrap;
212
+ font-size: 16px;
213
+ line-height: 24px;
214
+ }
215
+ @media (min-width: 1201px) and (max-width: 1680px) {
216
+ .o-meeting-send-minutes .email-body-content[data-v-c32ba974] {
217
+ font-size: 14px;
218
+ line-height: 22px;
219
+ }
220
+ }
221
+ @media (min-width: 841px) and (max-width: 1200px) {
222
+ .o-meeting-send-minutes .email-body-content[data-v-c32ba974] {
223
+ font-size: 14px;
224
+ line-height: 22px;
225
+ }
226
+ }
227
+ @media (min-width: 601px) and (max-width: 840px) {
228
+ .o-meeting-send-minutes .email-body-content[data-v-c32ba974] {
229
+ font-size: 14px;
230
+ line-height: 22px;
231
+ }
232
+ }
233
+ @media (max-width: 600px) {
234
+ .o-meeting-send-minutes .email-body-content[data-v-c32ba974] {
235
+ font-size: 12px;
236
+ line-height: 18px;
237
+ }
238
+ }
@@ -0,0 +1,18 @@
1
+ import { MeetingItemT, SendLogT } from './types.ts';
2
+ type __VLS_Props = {
3
+ meeting: MeetingItemT | null;
4
+ prefill?: string[] | null;
5
+ sendMinutesRequest: any;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
8
+ send: () => Promise<void>;
9
+ sending: import('vue').Ref<boolean, boolean>;
10
+ reset: () => void;
11
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
12
+ sent: (log: SendLogT) => any;
13
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ onSent?: ((log: SendLogT) => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
16
+ recipientInputRef: HTMLInputElement;
17
+ }, HTMLDivElement>;
18
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import _sfc_main from "./OMeetingSendMinutesForm.vue2.mjs";
2
+ import './OMeetingSendMinutesForm.css';
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
+ const _OMeetingSendMinutesForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c32ba974"]]);
5
+ export {
6
+ _OMeetingSendMinutesForm as default
7
+ };
@@ -0,0 +1,181 @@
1
+ import { defineComponent, ref, computed, watch, openBlock, createElementBlock, createElementVNode, toDisplayString, unref, Fragment, renderList, createBlock, withCtx, createTextVNode, withDirectives, withKeys, withModifiers, vModelText, createVNode } from "vue";
2
+ import { useMessage, OTag, OInput, OScroller } from "@opensig/opendesign";
3
+ import { useMeetingConfig } from "./composables/useMeetingConfig.mjs";
4
+ import { EMAIL_REGEX } from "./config.mjs";
5
+ const _hoisted_1 = { class: "o-meeting-send-minutes" };
6
+ const _hoisted_2 = { class: "o-meeting-send-minutes-field-row" };
7
+ const _hoisted_3 = { class: "field-label" };
8
+ const _hoisted_4 = { class: "o-meeting-send-minutes-field-control o-meeting-send-minutes-sender-line" };
9
+ const _hoisted_5 = { class: "sender-text" };
10
+ const _hoisted_6 = { class: "o-meeting-send-minutes-field-row" };
11
+ const _hoisted_7 = { class: "field-label" };
12
+ const _hoisted_8 = { class: "o-meeting-send-minutes-field-control" };
13
+ const _hoisted_9 = ["placeholder", "onKeydown"];
14
+ const _hoisted_10 = { class: "o-meeting-send-minutes-field-row" };
15
+ const _hoisted_11 = { class: "field-label" };
16
+ const _hoisted_12 = { class: "o-meeting-send-minutes-field-control" };
17
+ const _hoisted_13 = { class: "o-meeting-send-minutes-field-row o-meeting-send-minutes-email-body-row" };
18
+ const _hoisted_14 = { class: "field-label" };
19
+ const _hoisted_15 = { class: "o-meeting-send-minutes-field-control" };
20
+ const _hoisted_16 = { class: "email-body-content" };
21
+ const _sfc_main = /* @__PURE__ */ defineComponent({
22
+ __name: "OMeetingSendMinutesForm",
23
+ props: {
24
+ meeting: {},
25
+ prefill: {},
26
+ sendMinutesRequest: {}
27
+ },
28
+ emits: ["sent"],
29
+ setup(__props, { expose: __expose, emit: __emit }) {
30
+ const props = __props;
31
+ const emit = __emit;
32
+ const { t } = useMeetingConfig();
33
+ const message = useMessage(null);
34
+ const recipients = ref([]);
35
+ const extraInput = ref("");
36
+ const subject = ref("");
37
+ const sending = ref(false);
38
+ const recipientInputRef = ref(null);
39
+ const sender = computed(() => {
40
+ var _a;
41
+ return ((_a = props.meeting) == null ? void 0 : _a.email_list) || "";
42
+ });
43
+ const defaultSubject = () => {
44
+ if (!props.meeting) return "";
45
+ const { topic, date } = props.meeting;
46
+ return t("meeting.sendMinutesSubjectDefault", [topic, date || ""]);
47
+ };
48
+ const reset = () => {
49
+ if (!props.meeting) return;
50
+ recipients.value = props.prefill && props.prefill.length ? [...props.prefill] : [props.meeting.email_list];
51
+ subject.value = defaultSubject();
52
+ extraInput.value = "";
53
+ };
54
+ watch([() => props.meeting, () => props.prefill], reset, { immediate: true });
55
+ const addRecipient = () => {
56
+ const val = extraInput.value.trim();
57
+ if (!val) return;
58
+ if (!EMAIL_REGEX.test(val)) {
59
+ message.warning({ content: t("meeting.sendMinutesEmailInvalid") });
60
+ return;
61
+ }
62
+ if (recipients.value.includes(val)) {
63
+ message.warning({ content: t("meeting.sendMinutesEmailExists") });
64
+ return;
65
+ }
66
+ recipients.value.push(val);
67
+ extraInput.value = "";
68
+ };
69
+ const removeRecipient = (email) => {
70
+ recipients.value = recipients.value.filter((r) => r !== email);
71
+ };
72
+ const handleBackspace = (e) => {
73
+ if (extraInput.value === "" && recipients.value.length > 0) {
74
+ e.preventDefault();
75
+ recipients.value.pop();
76
+ }
77
+ };
78
+ const focusRecipientInput = () => {
79
+ var _a;
80
+ (_a = recipientInputRef.value) == null ? void 0 : _a.focus();
81
+ };
82
+ const send = async () => {
83
+ if (!props.meeting || !props.sendMinutesRequest) return;
84
+ if (recipients.value.length === 0) {
85
+ message.warning({ content: t("meeting.sendMinutesEmptyRecipient") });
86
+ return;
87
+ }
88
+ try {
89
+ sending.value = true;
90
+ const log = await props.sendMinutesRequest(props.meeting.id, recipients.value, subject.value);
91
+ message.success({ content: t("meeting.sendMinutesSent") });
92
+ emit("sent", log);
93
+ } finally {
94
+ sending.value = false;
95
+ }
96
+ };
97
+ __expose({ send, sending, reset });
98
+ return (_ctx, _cache) => {
99
+ return openBlock(), createElementBlock("div", _hoisted_1, [
100
+ createElementVNode("div", _hoisted_2, [
101
+ createElementVNode("span", _hoisted_3, toDisplayString(unref(t)("meeting.sendMinutesSender")), 1),
102
+ createElementVNode("div", _hoisted_4, [
103
+ createElementVNode("span", _hoisted_5, toDisplayString(sender.value), 1)
104
+ ])
105
+ ]),
106
+ createElementVNode("div", _hoisted_6, [
107
+ createElementVNode("span", _hoisted_7, toDisplayString(unref(t)("meeting.sendMinutesRecipient")), 1),
108
+ createElementVNode("div", _hoisted_8, [
109
+ createElementVNode("div", {
110
+ class: "o-meeting-send-minutes-recipient-editor",
111
+ onClick: focusRecipientInput
112
+ }, [
113
+ (openBlock(true), createElementBlock(Fragment, null, renderList(recipients.value, (email) => {
114
+ return openBlock(), createBlock(unref(OTag), {
115
+ key: email,
116
+ class: "recipient-tag",
117
+ variant: "solid",
118
+ color: "primary",
119
+ closable: "",
120
+ onClose: ($event) => removeRecipient(email)
121
+ }, {
122
+ default: withCtx(() => [
123
+ createTextVNode(toDisplayString(email), 1)
124
+ ]),
125
+ _: 2
126
+ }, 1032, ["onClose"]);
127
+ }), 128)),
128
+ withDirectives(createElementVNode("input", {
129
+ ref_key: "recipientInputRef",
130
+ ref: recipientInputRef,
131
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => extraInput.value = $event),
132
+ class: "recipient-native-input",
133
+ type: "text",
134
+ placeholder: unref(t)("meeting.sendMinutesRecipientPlaceholder"),
135
+ onKeydown: [
136
+ withKeys(withModifiers(addRecipient, ["prevent"]), ["enter"]),
137
+ withKeys(handleBackspace, ["backspace"])
138
+ ]
139
+ }, null, 40, _hoisted_9), [
140
+ [vModelText, extraInput.value]
141
+ ])
142
+ ])
143
+ ])
144
+ ]),
145
+ createElementVNode("div", _hoisted_10, [
146
+ createElementVNode("span", _hoisted_11, toDisplayString(unref(t)("meeting.sendMinutesSubject")), 1),
147
+ createElementVNode("div", _hoisted_12, [
148
+ createVNode(unref(OInput), {
149
+ modelValue: subject.value,
150
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => subject.value = $event),
151
+ class: "subject-input",
152
+ size: "large",
153
+ placeholder: unref(t)("meeting.sendMinutesSubjectPlaceholder")
154
+ }, null, 8, ["modelValue", "placeholder"])
155
+ ])
156
+ ]),
157
+ createElementVNode("div", _hoisted_13, [
158
+ createElementVNode("span", _hoisted_14, toDisplayString(unref(t)("meeting.sendMinutesBody")), 1),
159
+ createElementVNode("div", _hoisted_15, [
160
+ createVNode(unref(OScroller), {
161
+ class: "o-meeting-send-minutes-email-body-scroller",
162
+ "disabled-x": "",
163
+ "show-type": "auto"
164
+ }, {
165
+ default: withCtx(() => {
166
+ var _a;
167
+ return [
168
+ createElementVNode("div", _hoisted_16, toDisplayString((_a = __props.meeting) == null ? void 0 : _a.minutes), 1)
169
+ ];
170
+ }),
171
+ _: 1
172
+ })
173
+ ])
174
+ ])
175
+ ]);
176
+ };
177
+ }
178
+ });
179
+ export {
180
+ _sfc_main as default
181
+ };