@dhtmlx/trial-vue-gantt 1.1.2 → 9.1.4

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 (46) hide show
  1. package/README.md +126 -262
  2. package/dist/dhtmlxgantt.vue.es.d.ts +352 -0
  3. package/dist/dhtmlxgantt.vue.es.js +18052 -0
  4. package/dist/vue-gantt.css +1 -0
  5. package/license.txt +43 -0
  6. package/package.json +55 -62
  7. package/whatsnew.md +1157 -0
  8. package/public/dist/gantt.js +0 -1
  9. package/src/components/Gantt.vue +0 -238
  10. package/src/components/TimeScale.vue +0 -57
  11. package/src/components/chart/Bars.vue +0 -470
  12. package/src/components/chart/CellGrid.vue +0 -22
  13. package/src/components/chart/Chart.vue +0 -236
  14. package/src/components/chart/Links.vue +0 -35
  15. package/src/components/chart/NewLink.vue +0 -39
  16. package/src/components/grid/Body.vue +0 -256
  17. package/src/components/grid/Grid.vue +0 -98
  18. package/src/components/grid/Header.vue +0 -104
  19. package/src/components/grid/actions/reorder.js +0 -193
  20. package/src/components/sidebar/Links.vue +0 -147
  21. package/src/components/sidebar/Sidebar.vue +0 -219
  22. package/src/locales/cn.js +0 -21
  23. package/src/locales/en.js +0 -21
  24. package/src/locales/ru.js +0 -21
  25. package/src/main.js +0 -46
  26. package/src/state/local.js +0 -48
  27. package/src/wx/Button.vue +0 -54
  28. package/src/wx/CNLocale.js +0 -15
  29. package/src/wx/Calendar.vue +0 -194
  30. package/src/wx/Counter.vue +0 -154
  31. package/src/wx/Datepicker.vue +0 -153
  32. package/src/wx/DefaultTheme.vue +0 -104
  33. package/src/wx/ENLocale.js +0 -15
  34. package/src/wx/IconButton.vue +0 -39
  35. package/src/wx/MaterialTheme.vue +0 -107
  36. package/src/wx/RULocale.js +0 -15
  37. package/src/wx/Select.vue +0 -75
  38. package/src/wx/Slider.vue +0 -150
  39. package/src/wx/Text.vue +0 -73
  40. package/src/wx/Textarea.vue +0 -63
  41. package/src/wx/Tooltip.vue +0 -110
  42. package/src/wx/index.js +0 -35
  43. package/src/wx/locale.js +0 -1
  44. package/src/wx/locales/cn.js +0 -39
  45. package/src/wx/locales/en.js +0 -39
  46. package/src/wx/locales/ru.js +0 -39
@@ -1,194 +0,0 @@
1
- <template>
2
- <div class="calendar">
3
- <div class="controls">
4
- <div class="icon mdi mdi-chevron-left" @click="changeMonth(-1)" />
5
- <div class="month">{{ currentDate }}</div>
6
- <div class="icon mdi mdi-chevron-right" @click="changeMonth(1)" />
7
- </div>
8
-
9
- <div class="days">
10
- <div class="day" v-for="day in dayNames" :key="day">{{ day }}</div>
11
- </div>
12
-
13
- <div class="dates" @click="selectDate">
14
- <div
15
- class="date"
16
- v-for="(date, index) in dates()"
17
- :key="date"
18
- :class="date.c"
19
- :data-index="index"
20
- >
21
- <span>{{ date.v }}</span>
22
- </div>
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script>
28
- import { inject } from "vue";
29
- import locale from "./locales/en";
30
- import { LocaleContext } from "./locale";
31
-
32
- export default {
33
- props: ["value", "date", "startOnMonday"],
34
- emits: ["change"],
35
- setup() {
36
- const locDates = (inject(LocaleContext, null) || locale())._("__dates");
37
- return { locDates };
38
- },
39
- data() {
40
- const days = this.locDates.days;
41
- const shift = this.startOnMonday ? 1 : 0;
42
- return {
43
- v: this.value || null,
44
- d: this.date || new Date(),
45
- shiftDays: shift,
46
- dayNames: shift ? days : days.slice(1).concat(days[6]),
47
- month: null,
48
- year: null,
49
- };
50
- },
51
-
52
- methods: {
53
- changeMonth(dir) {
54
- const temp = new Date(this.d);
55
- temp.setMonth(temp.getMonth() + dir);
56
- this.d = temp;
57
- },
58
-
59
- hashDate(d) {
60
- if (!d) return 0;
61
- return d.getFullYear() * 12 * 40 + d.getMonth() * 40 + d.getDate();
62
- },
63
-
64
- selectDate(e) {
65
- let ind = e.target.dataset.index;
66
- if (!ind) ind = e.target.parentNode.dataset.index;
67
- if (!ind) return;
68
-
69
- const temp = new Date(this.start);
70
- temp.setDate(temp.getDate() + ind * 1);
71
- this.v = temp;
72
- this.$emit("change", temp);
73
- },
74
-
75
- dates() {
76
- const date = this.d;
77
- const value = this.v;
78
-
79
- this.year = date.getFullYear();
80
- this.month = date.getMonth();
81
-
82
- this.start = new Date(date);
83
- this.start.setDate(1);
84
- const sDay = -this.start.getDay() - this.shiftDays + 2;
85
- this.start.setDate(sDay);
86
-
87
- const valueHash = this.hashDate(value);
88
- const now = new Date(this.start);
89
-
90
- const dates = [];
91
-
92
- for (let i = 0; i < 6 * 7; i++) {
93
- const nowDay = now.getDay();
94
- const nowMonth = now.getMonth();
95
- const weekDay = nowDay === 0 || nowDay === 6;
96
- const currentMonth = nowMonth === this.month;
97
- const selected = valueHash === this.hashDate(now);
98
-
99
- dates.push({
100
- v: now.getDate(),
101
- c:
102
- "date " +
103
- (selected ? "selected " : "") +
104
- (weekDay ? "weekend " : "") +
105
- (!currentMonth ? "outside " : ""),
106
- });
107
-
108
- now.setDate(now.getDate() + 1);
109
- }
110
-
111
- return dates;
112
- },
113
- },
114
-
115
- computed: {
116
- currentDate() {
117
- return this.locDates.months[this.month] + " " + this.year;
118
- },
119
- },
120
- };
121
- </script>
122
-
123
- <style scoped>
124
- .calendar {
125
- box-sizing: border-box;
126
- width: 183px;
127
- padding: 7px;
128
- border: var(--wx-calendar-border);
129
- }
130
-
131
- .controls {
132
- display: flex;
133
- justify-content: space-between;
134
- align-items: center;
135
- }
136
-
137
- .icon {
138
- font-size: 20px;
139
- color: rgba(0, 0, 0, 0.5);
140
- cursor: pointer;
141
- user-select: none;
142
- transition: color 0.15s ease-in;
143
- }
144
-
145
- .month {
146
- font: var(--wx-calendar-month-font);
147
- color: var(--wx-calendar-month-font-color);
148
- }
149
-
150
- .days {
151
- display: grid;
152
- grid-template-columns: repeat(7, 1fr);
153
- grid-template-rows: 28px;
154
- }
155
-
156
- .day {
157
- font: var(--wx-calendar-days-font);
158
- color: var(--wx-calendar-days-font-color);
159
- align-self: center;
160
- text-align: center;
161
- }
162
-
163
- .dates {
164
- display: grid;
165
- grid-template-columns: repeat(7, 1fr);
166
- grid-template-rows: repeat(6, 24px);
167
- font: var(--wx-calendar-dates-font);
168
- color: var(--wx-calendar-dates-font-color);
169
- }
170
-
171
- .date {
172
- cursor: pointer;
173
- align-self: center;
174
- text-align: center;
175
- }
176
-
177
- .weekend {
178
- color: var(--wx-input-focus-color);
179
- }
180
-
181
- .outside {
182
- color: rgba(0, 0, 0, 0.3);
183
- }
184
-
185
- .selected span {
186
- display: inline-block;
187
- color: #fff;
188
- background-color: var(--wx-input-focus-color);
189
- width: 20px;
190
- height: 20px;
191
- line-height: 20px;
192
- border-radius: 50%;
193
- }
194
- </style>
@@ -1,154 +0,0 @@
1
- <template>
2
- <div class="counter">
3
- <label class="label">{{ label }}</label>
4
- <div class="controls">
5
- <button class="btn btn-dec" @click="dec">
6
- <svg
7
- class="dec"
8
- width="12"
9
- height="2"
10
- viewBox="0 0 12 2"
11
- fill="none"
12
- xmlns="http://www.w3.org/2000/svg"
13
- >
14
- <path d="M11.2501 1.74994H0.750092V0.249939H11.2501V1.74994Z" />
15
- </svg>
16
- </button>
17
- <input
18
- :class="['input', { error }]"
19
- type="text"
20
- :value="value"
21
- @input="input"
22
- />
23
- <button class="btn btn-inc" @click="inc">
24
- <svg
25
- class="inc"
26
- width="12"
27
- height="12"
28
- viewBox="0 0 12 12"
29
- fill="none"
30
- xmlns="http://www.w3.org/2000/svg"
31
- >
32
- <path
33
- d="M11.2501
34
- 6.74994H6.75009V11.2499H5.25009V6.74994H0.750092V5.24994H5.25009V0.749939H6.75009V5.24994H11.2501V6.74994Z"
35
- />
36
- </svg>
37
- </button>
38
- </div>
39
- </div>
40
- </template>
41
-
42
- <script>
43
- export default {
44
- props: {
45
- label: { type: String, default: "" },
46
- value: { type: Number, default: 0 },
47
- min: { type: Number, default: 1 },
48
- max: { type: Number, default: Infinity },
49
- step: { type: Number, default: 1 },
50
- },
51
- emits: ["change"],
52
-
53
- data: () => ({
54
- digits: new RegExp("^[0-9]+$"),
55
- error: false,
56
- }),
57
-
58
- methods: {
59
- inc() {
60
- if (this.value >= this.max) return;
61
- const v = this.value + this.step;
62
- this.$emit("change", v);
63
- },
64
-
65
- dec() {
66
- if (this.value <= this.min) return;
67
- const v = this.value - this.step;
68
- this.$emit("change", v);
69
- },
70
-
71
- input(e) {
72
- const v = e.target.value;
73
- if (this.digits.test(v)) {
74
- this.error = false;
75
- this.$emit("change", v);
76
- } else {
77
- this.error = true;
78
- }
79
- },
80
- },
81
- };
82
- </script>
83
-
84
- <style scoped>
85
- .counter {
86
- margin-bottom: 20px;
87
- }
88
-
89
- .label {
90
- display: block;
91
- margin-bottom: 10px;
92
- font: var(--wx-label-font);
93
- color: var(--wx-label-font-color);
94
- }
95
-
96
- .controls {
97
- display: flex;
98
- }
99
-
100
- .input {
101
- box-sizing: border-box;
102
- width: 40px;
103
- height: 32px;
104
- border: var(--wx-input-border);
105
- border-radius: var(--wx-input-border-radius);
106
- font: var(--wx-input-font);
107
- color: var(--wx-input-font-color);
108
- text-align: center;
109
- outline: none;
110
- }
111
-
112
- .input:focus {
113
- border: 1px solid var(--wx-input-focus-color);
114
- }
115
-
116
- .input.error {
117
- border: 1px solid var(--wx-danger-color);
118
- }
119
-
120
- .btn {
121
- box-sizing: border-box;
122
- display: flex;
123
- justify-content: center;
124
- align-items: center;
125
- width: 30px;
126
- height: 32px;
127
- border: var(--wx-input-border);
128
- border-radius: var(--wx-input-border-radius);
129
- font: var(--wx-input-font);
130
- color: var(--wx-input-font-color);
131
- background-color: inherit;
132
- outline: none;
133
- cursor: pointer;
134
- }
135
-
136
- .btn:active {
137
- border: var(--wx-input-border);
138
- border-color: var(--wx-input-focus-color);
139
- }
140
-
141
- .btn-dec {
142
- border-right: 1px solid transparent;
143
- border-radius: 2px 0 0 2px;
144
- }
145
- .btn-inc {
146
- border-left: 1px solid transparent;
147
- border-radius: 0 2px 2px 0;
148
- }
149
-
150
- .dec,
151
- .inc {
152
- fill: var(--wx-input-focus-color);
153
- }
154
- </style>
@@ -1,153 +0,0 @@
1
- <template>
2
- <div class="datepicker">
3
- <label class="label">{{ label }}</label>
4
- <div class="input-wrapper">
5
- <input
6
- type="text"
7
- class="input"
8
- :value="formatDate"
9
- :placeholder="placeholder"
10
- :readonly="readonly"
11
- @focus="focus"
12
- @blur="blur"
13
- />
14
- <div class="wrapper" v-if="show" ref="node">
15
- <Calendar :date="value" :value="value" @change="selectDate" />
16
- </div>
17
- <div class="icon" />
18
- </div>
19
- </div>
20
- </template>
21
-
22
- <script>
23
- import Calendar from "./Calendar";
24
-
25
- function zeros(value) {
26
- const str = value.toString();
27
- return str.length === 1 ? "0" + str : str;
28
- }
29
-
30
- export default {
31
- components: {
32
- Calendar,
33
- },
34
-
35
- props: {
36
- id: { default: "" },
37
- label: { default: "" },
38
- placeholder: { default: "" },
39
- format: {
40
- type: Function,
41
- default: v =>
42
- v.getFullYear() +
43
- "." +
44
- zeros(v.getMonth() + 1) +
45
- "." +
46
- zeros(v.getDate()),
47
- },
48
- parse: { type: Function, default: v => new Date(v) },
49
- value: { default: new Date() },
50
- readonly: { default: false },
51
- },
52
- emits: ["change"],
53
-
54
- data: () => ({
55
- show: false,
56
- }),
57
-
58
- methods: {
59
- selectDate(v) {
60
- this.show = false;
61
- this.$emit("change", v);
62
- },
63
-
64
- focus() {
65
- this.show = true;
66
- },
67
-
68
- blur(e) {
69
- if (!this.readonly) {
70
- const v = e.target.value;
71
- const d = this.parse(v);
72
- if (this.isDate(d)) {
73
- this.$emit("change", d);
74
- }
75
- }
76
- },
77
-
78
- isDate(date) {
79
- return date instanceof Date && !isNaN(date.valueOf());
80
- },
81
-
82
- down(e) {
83
- if (this.$refs.node && !this.$refs.node.contains(e.target)) {
84
- this.show = false;
85
- }
86
- },
87
- },
88
-
89
- mounted() {
90
- document.body.addEventListener("mousedown", this.down);
91
- },
92
-
93
- beforeUnmount() {
94
- document.body.removeEventListener("mousedown", this.down);
95
- },
96
-
97
- computed: {
98
- formatDate() {
99
- return this.value ? this.format(this.value) : "";
100
- },
101
- },
102
- };
103
- </script>
104
-
105
- <style scoped>
106
- .datepicker {
107
- position: relative;
108
- margin-bottom: 20px;
109
- }
110
-
111
- .label {
112
- display: block;
113
- margin-bottom: 10px;
114
- font: var(--wx-label-font);
115
- color: var(--wx-label-font-color);
116
- }
117
-
118
- .input-wrapper {
119
- position: relative;
120
- }
121
-
122
- .input {
123
- box-sizing: border-box;
124
- width: 100%;
125
- padding: var(--wx-input-padding);
126
- border: var(--wx-input-border);
127
- border-radius: var(--wx-input-border-radius);
128
- font: var(--wx-input-font);
129
- color: var(--wx-input-font-color);
130
- outline: none;
131
- }
132
-
133
- .input:focus {
134
- border: 1px solid var(--wx-input-focus-color);
135
- }
136
-
137
- .icon {
138
- position: absolute;
139
- top: 50%;
140
- right: 11px;
141
- transform: translateY(-50%);
142
- width: 20px;
143
- height: 20px;
144
- background: var(--wx-calendar-icon) center center no-repeat;
145
- pointer-events: none;
146
- }
147
-
148
- .wrapper {
149
- position: absolute;
150
- z-index: 1;
151
- background: white;
152
- }
153
- </style>
@@ -1,104 +0,0 @@
1
- <template>
2
- <div class="wx-default" style="height: 100%" v-if="this.$slots.default">
3
- <slot />
4
- </div>
5
- </template>
6
-
7
- <style>
8
- @import "https://fonts.googleapis.com/css?family=Roboto:400,500,700,900&display=swap&subset=cyrillic-ext";
9
- @import "https://cdn.materialdesignicons.com/2.7.94/css/materialdesignicons.css";
10
-
11
- .wx-default {
12
- /* common */
13
- --wx-font: 400 14px Arial;
14
- --wx-font-color: #5f5f5f;
15
- --wx-border-color: #ebebeb;
16
-
17
- /* buttons */
18
- --wx-button-font: 500 14px Roboto;
19
- --wx-button-primary-font-color: #fff;
20
- --wx-button-danger-font-color: #ff5252;
21
- --wx-button-primary-color: #0db5cb;
22
- --wx-button-primary-color-hover: #2898b0;
23
- --wx-button-danger-color: transparent;
24
- --wx-button-danger-color-hover: rgba(255, 82, 82, 0.2);
25
- --wx-button-radius: 2px;
26
-
27
- /* bars */
28
- --wx-gantt-bar-font: 400 12px Arial;
29
- --wx-gantt-bar-border-radius: 2px;
30
-
31
- --wx-gantt-task-color: #00bed7;
32
- --wx-gantt-task-font-color: #fff;
33
- --wx-gantt-task-fill-color: #2898b0;
34
- --wx-gantt-task-border-color: #2898b0;
35
-
36
- --wx-gantt-project-color: #2acc69;
37
- --wx-gantt-project-font-color: #fff;
38
- --wx-gantt-project-fill-color: #3c9445;
39
- --wx-gantt-project-border-color: #3c9445;
40
-
41
- --wx-gantt-milestone-color: #d33daf;
42
-
43
- --wx-gantt-select-color: #fff797;
44
- --wx-gantt-link-color: #ffa011;
45
-
46
- /* shadows */
47
- --wx-top-shadow: none;
48
-
49
- /* grid */
50
- --wx-grid-header-font: 400 12px Arial;
51
- --wx-grid-header-font-color: #a6a6a6;
52
- --wx-grid-header-text-transform: capitalize;
53
- --wx-grid-header-shadow: var(--wx-top-shadow);
54
-
55
- --wx-grid-body-font: 400 13px Arial;
56
- --wx-grid-body-font-color: #5f5f5f;
57
- --wx-grid-body-row-border: 1px solid var(--wx-border-color);
58
-
59
- /* timescale */
60
- --wx-timescale-font: 400 12px Arial;
61
- --wx-timescale-font-color: #a6a6a6;
62
- --wx-timescale-text-transform: capitalize;
63
- --wx-timescale-shadow: var(--wx-top-shadow);
64
- --wx-timescale-border: 1px solid var(--wx-border-color);
65
-
66
- /* input */
67
- --wx-label-font: 700 13px Arial;
68
- --wx-label-font-color: #5f5f5f;
69
-
70
- --wx-input-font: 400 12px Arial;
71
- --wx-input-font-color: #4f4f4f;
72
- --wx-input-padding: 8px 11px;
73
- --wx-input-border: 1px solid #dfdfdf;
74
- --wx-input-border-radius: 2px;
75
- --wx-input-focus-color: #2898b0;
76
-
77
- /* calendar */
78
- --wx-calendar-border: 1px solid #dfdfdf;
79
- --wx-calendar-month-font: 400 12px Arial;
80
- --wx-calendar-month-font-color: #5f5f5f;
81
- --wx-calendar-days-font: 400 10px Arial;
82
- --wx-calendar-days-font-color: rgba(0, 0, 0, 0.5);
83
- --wx-calendar-dates-font: 400 12px Arial;
84
- --wx-calendar-dates-font-color: #4f4f4f;
85
-
86
- /* markers */
87
- --wx-gantt-marker-font: 400 12px Arial;
88
- --wx-gantt-marker-font-color: #fff;
89
- --wx-gantt-marker-color: rgba(43, 111, 173, 0.77);
90
-
91
- /* tooltips */
92
- --wx-tooltip-font: 400 12px Arial;
93
- --wx-tooltip-font-color: #5f5f5f;
94
-
95
- /* icons */
96
- --wx-add-btn-icon: url("data:image/svg+xml,%3Csvg width='11' height='11' viewBox='0 0 11 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6 4.59998V6.99998H6.59995V11H4.19995V6.99998H0.199951V4.59998H4.19995V0.599976H6.59995V4.59998H10.6Z' fill='%233DB9D3'/%3E%3C/svg%3E ");
97
- --wx-close-btn-icon: url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Crect width='14' height='14' fill='url(%23pattern0)'/%3E%3Cdefs%3E%3Cpattern id='pattern0' patternContentUnits='objectBoundingBox' width='1' height='1'%3E%3Cuse xlink:href='%23image0' transform='scale(0.0555556)'/%3E%3C/pattern%3E%3Cimage id='image0' width='18' height='18' xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAkUlEQVQ4T2NkoBJgpJI5DEPAoFOnTv0/c+YMQR+bmJgwmJmZwX2E4bVp06b9j4yMZODg4MBp2I8fPxiWL1/OkJWVNeIN4uTkxAin79+/M5AcRtgCHGQIyQbhijaiDQoKDmZgZ2PDGf0/f/1iWLd2LeHod3d3Z2BkYsJp0P9//xh27tyJ3yCqpWyCeQOHgsGX+wEZpW4T5LCxKwAAAABJRU5ErkJggg=='/%3E%3C/defs%3E%3C/svg%3E%0A");
98
- --wx-open-btn-icon: url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Crect width='14' height='14' fill='url(%23pattern0)'/%3E%3Cdefs%3E%3Cpattern id='pattern0' patternContentUnits='objectBoundingBox' width='1' height='1'%3E%3Cuse xlink:href='%23image0' transform='scale(0.0555556)'/%3E%3C/pattern%3E%3Cimage id='image0' width='18' height='18' xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAArklEQVQ4T2NkoBJgpJI5DEPAoFOnTv0/c+YMQR+bmJgwmJmZwX2E4bVp06b9j4yMZODg4MBp2I8fPxiWL1/OkJWVNUAGcXJyMnz//h3uQrJdRLFBIAPQAchlJLsIFuCMjIwM////B5sJMoRkg2CuIdtrQcHBDOxsbHBfCQgIMHz48AHO//nrF8O6tWsJR7+7uzsDIxMTznT0/98/hp07d+I3iGopm2DewKFg8OV+AJWkfRMrTobLAAAAAElFTkSuQmCC'/%3E%3C/defs%3E%3C/svg%3E ");
99
- --wx-close-sb-icon: url("data:image/svg+xml,%3Csvg width='15' height='14' viewBox='0 0 15 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.0344 1.42188L12.6281 0.015625L7.04999 5.59375L1.47186 0.015625L0.0656128 1.42188L5.64374 7L0.0656128 12.5781L1.47186 13.9844L7.04999 8.40625L12.6281 13.9844L14.0344 12.5781L8.45624 7L14.0344 1.42188Z' fill='black' fill-opacity='0.54'/%3E%3C/svg%3E%0A");
100
- --wx-show-more-icon: url("data:image/svg+xml,%3Csvg width='10' height='5' viewBox='0 0 10 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.820312 0.820312L5 5L9.17969 0.820312H0.820312Z' fill='black' fill-opacity='0.5'/%3E%3C/svg%3E ");
101
- --wx-calendar-icon: url("data:image/svg+xml,%3Csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8203 15.3203H2.17969V6.17969H13.8203V15.3203ZM11.3203 0.320312V2H4.67969V0.320312H3V2H2.17969C1.6849 2 1.28125 2.15625 0.96875 2.46875C0.65625 2.78125 0.5 3.1849 0.5 3.67969V15.3203C0.5 15.7891 0.65625 16.1927 0.96875 16.5312C1.30729 16.8438 1.71094 17 2.17969 17H13.8203C14.2891 17 14.6797 16.8438 14.9922 16.5312C15.3307 16.1927 15.5 15.7891 15.5 15.3203V3.67969C15.5 3.1849 15.3307 2.78125 14.9922 2.46875C14.6797 2.15625 14.2891 2 13.8203 2H13V0.320312H11.3203ZM12.1797 9.5H8V13.6797H12.1797V9.5Z' fill='black' fill-opacity='0.5'/%3E%3C/svg%3E ");
102
- --wx-remove-link-icon: url("data:image/svg+xml,%3Csvg width='12' height='15' viewBox='0 0 12 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 13.3203C1 13.7891 1.15625 14.1927 1.46875 14.5312C1.80729 14.8438 2.21094 15 2.67969 15H9.32031C9.78906 15 10.1797 14.8438 10.4922 14.5312C10.8307 14.1927 11 13.7891 11 13.3203V3.32031H1V13.3203ZM3.03125 7.38281L4.24219 6.21094L6 8.00781L7.75781 6.21094L8.92969 7.38281L7.17188 9.17969L8.92969 10.9375L7.75781 12.1094L6 10.3516L4.24219 12.1094L3.07031 10.9375L4.82812 9.17969L3.03125 7.38281ZM8.92969 0.820312L8.07031 0H3.92969L3.07031 0.820312H0.179688V2.5H11.8203V0.820312H8.92969Z' fill='black' fill-opacity='0.5'/%3E%3C/svg%3E ");
103
- }
104
- </style>
@@ -1,15 +0,0 @@
1
- import { provide, readonly } from "vue";
2
- import { LocaleContext } from "./locale";
3
- import locale from "./locales/en";
4
-
5
- export default {
6
- setup(props) {
7
- if (props.words)
8
- provide(LocaleContext, readonly(locale().extend(props.words)));
9
- else provide(LocaleContext, readonly(locale()));
10
- },
11
- props: ["words"],
12
- render() {
13
- return this.$slots.default();
14
- },
15
- };
@@ -1,39 +0,0 @@
1
- <template>
2
- <button :class="['button', appearance]" @click="$emit('click')">
3
- <span v-if="icon" :class="['icon', icon]"></span>
4
- </button>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- props: {
10
- appearance: { type: String, default: "primary" },
11
- icon: { type: String, default: "" },
12
- },
13
- };
14
- </script>
15
-
16
- <style scoped>
17
- .button {
18
- width: 50px;
19
- height: 50px;
20
- border: none;
21
- outline: none;
22
- border-radius: 50%;
23
- cursor: pointer;
24
- }
25
-
26
- .primary {
27
- color: var(--wx-button-primary-font-color);
28
- background-color: var(--wx-button-primary-color);
29
- }
30
-
31
- .primary:hover {
32
- color: var(--wx-button-primary-font-color);
33
- background-color: var(--wx-button-primary-color-hover);
34
- }
35
-
36
- .icon {
37
- font-size: 20px;
38
- }
39
- </style>