aloha-vue 1.2.3 → 1.2.5
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.
- package/docs/src/views/PageShowMore/i18n/hr.json +2 -2
- package/docs/src/views/PageWizard/PageWizard.js +4 -0
- package/docs/src/views/PageWizard/PageWizard.pug +4 -0
- package/docs/src/views/PageWizard/PageWizardDemo/PageWizardDemo.js +146 -0
- package/docs/src/views/PageWizard/PageWizardDemo/PageWizardDemo.pug +61 -0
- package/docs/src/views/PageWizard/PageWizardDemo/PageWizardDemo.vue +2 -0
- package/docs/src/views/PageWizard/PageWizardDemo/compositionAPI/HtmlAPI.js +74 -0
- package/docs/src/views/PageWizard/PageWizardDemo/compositionAPI/JsAPI.js +132 -0
- package/docs/src/views/PageWizard/PageWizardHasFocusJump/PageWizardHasFocusJump.js +66 -0
- package/docs/src/views/PageWizard/PageWizardHasFocusJump/PageWizardHasFocusJump.pug +52 -0
- package/docs/src/views/PageWizard/PageWizardHasFocusJump/PageWizardHasFocusJump.vue +2 -0
- package/docs/src/views/PageWizard/PageWizardHasFocusJump/compositionAPI/HtmlAPI.js +59 -0
- package/docs/src/views/PageWizard/PageWizardHasFocusJump/compositionAPI/JsAPI.js +57 -0
- package/docs/src/views/PageWizard/compositionAPI/PropsAPI.js +14 -0
- package/docs/src/views/PageWizard/compositionAPI/TranslateAPI.js +1 -0
- package/docs/src/views/PageWizard/i18n/de.json +4 -3
- package/package.json +1 -1
- package/src/ATranslation/compositionAPI/HtmlAPI.js +3 -2
- package/src/AWizard/AWizard.js +29 -10
- package/src/AWizard/AWizardStep/AWizardStep.js +26 -14
- package/src/AWizard/AWizardTab/AWizardTab.js +53 -7
- package/src/AWizard/AWizardTab/compositionAPI/ContentIdAPI.js +17 -0
- package/src/AWizard/AWizardTab/compositionAPI/FocusIdAPI.js +17 -0
- package/src/AWizard/compositionAPI/FocusAPI.js +22 -11
- package/src/AWizard/compositionAPI/LocalAPI.js +21 -9
- package/src/AWizard/i18n/ar.json +1 -0
- package/src/AWizard/i18n/de.json +1 -0
- package/src/AWizard/i18n/en.json +1 -0
- package/src/AWizard/i18n/es.json +1 -0
- package/src/AWizard/i18n/fr.json +1 -0
- package/src/AWizard/i18n/hr.json +1 -0
- package/src/AWizard/i18n/it.json +1 -0
- package/src/AWizard/i18n/ru.json +1 -0
- package/src/styles/components/AWizard.scss +1 -1
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"_A_SHOW_MORE_GROUP_DISABLED_HEADER_": "Onemogućen",
|
|
33
33
|
"_A_SHOW_MORE_GROUP_EVENTS_DESCRIPTION_": "Emit toggle omogućuje, pri promjeni statusa komponente, pozivanje metode s jednim argumentom \"isOpen\", koji predstavlja indikator otvorenog stanja komponente.",
|
|
34
34
|
"_A_SHOW_MORE_GROUP_EVENTS_HEADER_": "Promjena statusa komponente (otvoreno/zatvoreno)",
|
|
35
|
-
"_A_SHOW_MORE_GROUP_EXPOSES_DESCRIPTION_": "",
|
|
36
|
-
"_A_SHOW_MORE_GROUP_EXPOSES_HEADER_": "Prikaz javnih property-ja i metoda korištenjem funkcije
|
|
35
|
+
"_A_SHOW_MORE_GROUP_EXPOSES_DESCRIPTION_": "Primjer načina korištenja funkcije <strong>expose</strong> za prikaz javnih property-ja i metoda.",
|
|
36
|
+
"_A_SHOW_MORE_GROUP_EXPOSES_HEADER_": "Prikaz javnih property-ja i metoda korištenjem funkcije expose",
|
|
37
37
|
"_A_SHOW_MORE_GROUP_HEIGHT_DESCRIPTION_": "Visina predstavlja maksimalan broj piksela nakon kojeg ostatak teksta postaje skriven.",
|
|
38
38
|
"_A_SHOW_MORE_GROUP_HEIGHT_HEADER_": "Visina bloka",
|
|
39
39
|
"_A_SHOW_MORE_GROUP_HTML_DESCRIPTION_": "Sadržaj komponente može se definirati u HTML formatu. Na ovaj sadržaj se primjenjuje sanitizacija.",
|
|
@@ -6,6 +6,8 @@ import PageWizardBasic from "./PageWizardBasic/PageWizardBasic.vue";
|
|
|
6
6
|
import PageWizardButtons from "./PageWizardButtons/PageWizardButtons.vue";
|
|
7
7
|
import PageWizardButtonsDisabled from "./PageWizardButtonsDisabled/PageWizardButtonsDisabled.vue";
|
|
8
8
|
import PageWizardButtonsHide from "./PageWizardButtonsHide/PageWizardButtonsHide.vue";
|
|
9
|
+
import PageWizardDemo from "./PageWizardDemo/PageWizardDemo.vue";
|
|
10
|
+
import PageWizardHasFocusJump from "./PageWizardHasFocusJump/PageWizardHasFocusJump.vue";
|
|
9
11
|
import PageWizardIsButtonsLoading from "./PageWizardIsButtonsLoading/PageWizardIsButtonsLoading.vue";
|
|
10
12
|
import PageWizardIsControlOutside from "./PageWizardIsControlOutside/PageWizardIsControlOutside.vue";
|
|
11
13
|
import PageWizardIsStepNumberVisible from "./PageWizardIsStepNumberVisible/PageWizardIsStepNumberVisible.vue";
|
|
@@ -38,6 +40,8 @@ export default {
|
|
|
38
40
|
PageWizardButtons,
|
|
39
41
|
PageWizardButtonsDisabled,
|
|
40
42
|
PageWizardButtonsHide,
|
|
43
|
+
PageWizardDemo,
|
|
44
|
+
PageWizardHasFocusJump,
|
|
41
45
|
PageWizardIsButtonsLoading,
|
|
42
46
|
PageWizardIsControlOutside,
|
|
43
47
|
PageWizardIsStepNumberVisible,
|
|
@@ -35,6 +35,8 @@ aloha-page(
|
|
|
35
35
|
|
|
36
36
|
page-wizard-key-id
|
|
37
37
|
|
|
38
|
+
page-wizard-has-focus-jump
|
|
39
|
+
|
|
38
40
|
page-wizard-is-control-outside
|
|
39
41
|
|
|
40
42
|
page-wizard-slot-toolbar
|
|
@@ -43,6 +45,8 @@ aloha-page(
|
|
|
43
45
|
|
|
44
46
|
page-wizard-slot
|
|
45
47
|
|
|
48
|
+
page-wizard-demo
|
|
49
|
+
|
|
46
50
|
aloha-table-props(
|
|
47
51
|
:data="dataProps"
|
|
48
52
|
)
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
} from "vue";
|
|
4
|
+
|
|
5
|
+
import AButton from "../../../../../src/AButton/AButton";
|
|
6
|
+
import AInput from "../../../../../src/ui/AInput/AInput";
|
|
7
|
+
import AlohaExample from "../../../global/components/AlohaExample/AlohaExample.vue";
|
|
8
|
+
import ASelect from "../../../../../src/ui/ASelect/ASelect";
|
|
9
|
+
import ASwitch from "../../../../../src/ui/ASwitch/ASwitch";
|
|
10
|
+
import AWizard from "../../../../../src/AWizard/AWizard";
|
|
11
|
+
|
|
12
|
+
import HtmlAPI from "./compositionAPI/HtmlAPI";
|
|
13
|
+
import JsAPI from "./compositionAPI/JsAPI";
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
findIndex,
|
|
17
|
+
uniqueId,
|
|
18
|
+
} from "lodash-es";
|
|
19
|
+
|
|
20
|
+
export default {
|
|
21
|
+
name: "PageWizardDemo",
|
|
22
|
+
components: {
|
|
23
|
+
AButton,
|
|
24
|
+
AInput,
|
|
25
|
+
AlohaExample,
|
|
26
|
+
ASelect,
|
|
27
|
+
ASwitch,
|
|
28
|
+
AWizard,
|
|
29
|
+
},
|
|
30
|
+
setup() {
|
|
31
|
+
const {
|
|
32
|
+
codeHtml,
|
|
33
|
+
} = HtmlAPI();
|
|
34
|
+
|
|
35
|
+
const {
|
|
36
|
+
codeJs,
|
|
37
|
+
} = JsAPI();
|
|
38
|
+
|
|
39
|
+
const modelType = ref("square");
|
|
40
|
+
const modelStepName = ref("");
|
|
41
|
+
const modelStepId = ref(undefined);
|
|
42
|
+
const isStepsJustified = ref(true);
|
|
43
|
+
const types = [
|
|
44
|
+
{
|
|
45
|
+
label: "_A_WIZARD_TYPE_BASIC_",
|
|
46
|
+
value: "basic",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
label: "_A_WIZARD_TYPE_ARROWS_",
|
|
50
|
+
value: "arrows",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
label: "_A_WIZARD_TYPE_SQUARE_",
|
|
54
|
+
value: "square",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: "_A_WIZARD_TYPE_ROUND_",
|
|
58
|
+
value: "round",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
const wizardSteps = ref([
|
|
62
|
+
{
|
|
63
|
+
id: "1",
|
|
64
|
+
slot: "step",
|
|
65
|
+
label: "Lorem",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "2",
|
|
69
|
+
slot: "step",
|
|
70
|
+
label: "ipsum",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "3",
|
|
74
|
+
slot: "step",
|
|
75
|
+
label: "dolor",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "4",
|
|
79
|
+
slot: "step",
|
|
80
|
+
label: "sit",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "5",
|
|
84
|
+
slot: "step",
|
|
85
|
+
label: "amet",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "6",
|
|
89
|
+
slot: "step",
|
|
90
|
+
label: "consectetur",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: "7",
|
|
94
|
+
slot: "step",
|
|
95
|
+
label: "adipiscing",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: "8",
|
|
99
|
+
slot: "step",
|
|
100
|
+
label: "elit",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: "9",
|
|
104
|
+
slot: "step",
|
|
105
|
+
label: "Quisque",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: "10",
|
|
109
|
+
slot: "step",
|
|
110
|
+
label: "nisl",
|
|
111
|
+
},
|
|
112
|
+
]);
|
|
113
|
+
const text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque nisl eros,
|
|
114
|
+
pulvinar facilisis justo mollis, auctor consequat urna. Morbi a bibendum metus.
|
|
115
|
+
Donec scelerisque sollicitudin enim eu venenatis. Duis tincidunt laoreet ex,
|
|
116
|
+
in pretium orci vestibulum eget. Class aptent taciti sociosqu ad litora torquent`;
|
|
117
|
+
|
|
118
|
+
const addStep = () => {
|
|
119
|
+
wizardSteps.value.push({
|
|
120
|
+
id: uniqueId("wizard_demo_"),
|
|
121
|
+
slot: "step",
|
|
122
|
+
label: modelStepName.value,
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const deleteStep = () => {
|
|
127
|
+
const STEP_INDEX = findIndex(wizardSteps.value, ["id", modelStepId.value]);
|
|
128
|
+
wizardSteps.value.splice(STEP_INDEX, 1);
|
|
129
|
+
modelStepId.value = undefined;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
return {
|
|
133
|
+
addStep,
|
|
134
|
+
codeHtml,
|
|
135
|
+
codeJs,
|
|
136
|
+
deleteStep,
|
|
137
|
+
isStepsJustified,
|
|
138
|
+
modelStepId,
|
|
139
|
+
modelStepName,
|
|
140
|
+
modelType,
|
|
141
|
+
text,
|
|
142
|
+
types,
|
|
143
|
+
wizardSteps,
|
|
144
|
+
};
|
|
145
|
+
},
|
|
146
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
aloha-example(
|
|
2
|
+
:code-html="codeHtml"
|
|
3
|
+
:code-js="codeJs"
|
|
4
|
+
header="_A_WIZARD_GROUP_DEMO_HEADER_"
|
|
5
|
+
description="_A_WIZARD_GROUP_DEMO_DESCRIPTION_"
|
|
6
|
+
:props="['steps', 'type']"
|
|
7
|
+
)
|
|
8
|
+
.a_columns.a_columns_count_12
|
|
9
|
+
.a_column.a_column_6.a_columns_count_12_touch.a_mb_5
|
|
10
|
+
a-switch(
|
|
11
|
+
v-model="isStepsJustified"
|
|
12
|
+
label="is-steps-justified"
|
|
13
|
+
)
|
|
14
|
+
a-select.a_mt_4(
|
|
15
|
+
v-model="modelType"
|
|
16
|
+
label="_A_WIZARD_LABEL_TYPE_"
|
|
17
|
+
key-id="value"
|
|
18
|
+
key-label="label"
|
|
19
|
+
:data="types"
|
|
20
|
+
:deselectable="false"
|
|
21
|
+
:translate-data="true"
|
|
22
|
+
)
|
|
23
|
+
.a_d_flex.a_mt_4
|
|
24
|
+
a-input(
|
|
25
|
+
v-model="modelStepName"
|
|
26
|
+
label="_A_WIZARD_STEP_NAME_"
|
|
27
|
+
:required="true"
|
|
28
|
+
)
|
|
29
|
+
a-button(
|
|
30
|
+
class="a_btn a_btn_primary a_ml_2"
|
|
31
|
+
:disabled="!modelStepName"
|
|
32
|
+
text="_A_WIZARD_BTN_ADD_STEP_"
|
|
33
|
+
@click="addStep"
|
|
34
|
+
)
|
|
35
|
+
.a_d_flex.a_mt_4
|
|
36
|
+
a-select(
|
|
37
|
+
v-model="modelStepId"
|
|
38
|
+
label="_A_WIZARD_LABEL_STEPS_"
|
|
39
|
+
key-id="id"
|
|
40
|
+
key-label="label"
|
|
41
|
+
:data="wizardSteps"
|
|
42
|
+
:search="true"
|
|
43
|
+
)
|
|
44
|
+
a-button(
|
|
45
|
+
class="a_btn a_btn_primary a_ml_2"
|
|
46
|
+
:disabled="!modelStepId || wizardSteps.length < 2"
|
|
47
|
+
text="_A_WIZARD_BTN_DELETE_STEP_"
|
|
48
|
+
@click="deleteStep"
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
a-wizard(
|
|
52
|
+
key-id="id"
|
|
53
|
+
:is-steps-justified="isStepsJustified"
|
|
54
|
+
:steps="wizardSteps"
|
|
55
|
+
:type="modelType"
|
|
56
|
+
)
|
|
57
|
+
template(
|
|
58
|
+
v-slot:step="{ step }"
|
|
59
|
+
)
|
|
60
|
+
h2 {{ step.label }}
|
|
61
|
+
p {{ text }}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export default function HtmlAPI() {
|
|
2
|
+
const codeHtml = `<div
|
|
3
|
+
class="a_columns a_columns_count_12"
|
|
4
|
+
>
|
|
5
|
+
<div
|
|
6
|
+
class="a_column a_column_6 a_columns_count_12_touch a_mb_5"
|
|
7
|
+
>
|
|
8
|
+
<a-switch
|
|
9
|
+
v-model="isStepsJustified"
|
|
10
|
+
label="is-steps-justified"
|
|
11
|
+
></a-switch>
|
|
12
|
+
<a-select
|
|
13
|
+
v-model="modelType"
|
|
14
|
+
class="a_mt_4"
|
|
15
|
+
label="_A_WIZARD_LABEL_TYPE_"
|
|
16
|
+
key-id="value"
|
|
17
|
+
key-label="label"
|
|
18
|
+
:data="types"
|
|
19
|
+
:deselectable="false"
|
|
20
|
+
:translate-data="true"
|
|
21
|
+
></a-select>
|
|
22
|
+
<div
|
|
23
|
+
class="a_d_flex a_mt_4"
|
|
24
|
+
>
|
|
25
|
+
<a-input
|
|
26
|
+
v-model="modelStepName"
|
|
27
|
+
label="_A_WIZARD_STEP_NAME_"
|
|
28
|
+
:required="true"
|
|
29
|
+
></a-input>
|
|
30
|
+
<a-button
|
|
31
|
+
class="a_btn a_btn_primary a_ml_2"
|
|
32
|
+
:disabled="!modelStepName"
|
|
33
|
+
text="_A_WIZARD_BTN_ADD_STEP_"
|
|
34
|
+
@click="addStep"
|
|
35
|
+
></a-button>
|
|
36
|
+
</div>
|
|
37
|
+
<div
|
|
38
|
+
class="a_d_flex a_mt_4"
|
|
39
|
+
>
|
|
40
|
+
<a-select
|
|
41
|
+
v-model="modelStepId"
|
|
42
|
+
label="_A_WIZARD_LABEL_STEPS_"
|
|
43
|
+
key-id="id"
|
|
44
|
+
key-label="label"
|
|
45
|
+
:data="wizardSteps"
|
|
46
|
+
:search="true"
|
|
47
|
+
></a-select>
|
|
48
|
+
<a-button
|
|
49
|
+
class="a_btn a_btn_primary a_ml_2"
|
|
50
|
+
:disabled="!modelStepId || wizardSteps.length < 2"
|
|
51
|
+
text="_A_WIZARD_BTN_DELETE_STEP_"
|
|
52
|
+
@click="deleteStep"
|
|
53
|
+
></a-button>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
<a-wizard
|
|
58
|
+
key-id="id"
|
|
59
|
+
:is-steps-justified="isStepsJustified"
|
|
60
|
+
:steps="wizardSteps"
|
|
61
|
+
:type="modelType"
|
|
62
|
+
>
|
|
63
|
+
<template
|
|
64
|
+
v-slot:step="{ step }"
|
|
65
|
+
>
|
|
66
|
+
<h2>{{ step.label }}</h2>
|
|
67
|
+
<p>{{ text }}</p>
|
|
68
|
+
</template>
|
|
69
|
+
</a-wizard>`;
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
codeHtml,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export default function JsAPI() {
|
|
2
|
+
const codeJs = `import {
|
|
3
|
+
ref,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
import AButton from "aloha-vue/src/AButton/AButton";
|
|
7
|
+
import AInput from "aloha-vue/src/ui/AInput/AInput";
|
|
8
|
+
import ASelect from "aloha-vue/src/ui/ASelect/ASelect";
|
|
9
|
+
import ASwitch from "aloha-vue/src/ui/ASwitch/ASwitch";
|
|
10
|
+
import AWizard from "aloha-vue/src/AWizard/AWizard";
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
name: "PageWizardDemo",
|
|
14
|
+
components: {
|
|
15
|
+
AButton,
|
|
16
|
+
AInput,
|
|
17
|
+
ASelect,
|
|
18
|
+
ASwitch,
|
|
19
|
+
AWizard,
|
|
20
|
+
},
|
|
21
|
+
setup() {
|
|
22
|
+
const modelType = ref("square");
|
|
23
|
+
const modelStepName = ref("");
|
|
24
|
+
const modelStepId = ref(undefined);
|
|
25
|
+
const isStepsJustified = ref(true);
|
|
26
|
+
const types = [
|
|
27
|
+
{
|
|
28
|
+
label: "_A_WIZARD_TYPE_BASIC_",
|
|
29
|
+
value: "basic",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: "_A_WIZARD_TYPE_ARROWS_",
|
|
33
|
+
value: "arrows",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
label: "_A_WIZARD_TYPE_SQUARE_",
|
|
37
|
+
value: "square",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
label: "_A_WIZARD_TYPE_ROUND_",
|
|
41
|
+
value: "round",
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
const wizardSteps = ref([
|
|
45
|
+
{
|
|
46
|
+
id: "1",
|
|
47
|
+
slot: "step",
|
|
48
|
+
label: "Lorem",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "2",
|
|
52
|
+
slot: "step",
|
|
53
|
+
label: "ipsum",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "3",
|
|
57
|
+
slot: "step",
|
|
58
|
+
label: "dolor",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "4",
|
|
62
|
+
slot: "step",
|
|
63
|
+
label: "sit",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "5",
|
|
67
|
+
slot: "step",
|
|
68
|
+
label: "amet",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "6",
|
|
72
|
+
slot: "step",
|
|
73
|
+
label: "consectetur",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "7",
|
|
77
|
+
slot: "step",
|
|
78
|
+
label: "adipiscing",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "8",
|
|
82
|
+
slot: "step",
|
|
83
|
+
label: "elit",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "9",
|
|
87
|
+
slot: "step",
|
|
88
|
+
label: "Quisque",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "10",
|
|
92
|
+
slot: "step",
|
|
93
|
+
label: "nisl",
|
|
94
|
+
},
|
|
95
|
+
]);
|
|
96
|
+
const text = \`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque nisl eros,
|
|
97
|
+
pulvinar facilisis justo mollis, auctor consequat urna. Morbi a bibendum metus.
|
|
98
|
+
Donec scelerisque sollicitudin enim eu venenatis. Duis tincidunt laoreet ex,
|
|
99
|
+
in pretium orci vestibulum eget. Class aptent taciti sociosqu ad litora torquent\`;
|
|
100
|
+
|
|
101
|
+
const addStep = () => {
|
|
102
|
+
wizardSteps.value.push({
|
|
103
|
+
id: uniqueId("wizard_demo_"),
|
|
104
|
+
slot: "step",
|
|
105
|
+
label: modelStepName.value,
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const deleteStep = () => {
|
|
110
|
+
const STEP_INDEX = findIndex(wizardSteps.value, ["id", modelStepId.value]);
|
|
111
|
+
wizardSteps.value.splice(STEP_INDEX, 1);
|
|
112
|
+
modelStepId.value = undefined;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
addStep,
|
|
117
|
+
deleteStep,
|
|
118
|
+
isStepsJustified,
|
|
119
|
+
modelStepId,
|
|
120
|
+
modelStepName,
|
|
121
|
+
modelType,
|
|
122
|
+
text,
|
|
123
|
+
types,
|
|
124
|
+
wizardSteps,
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
};`;
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
codeJs,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
} from "vue";
|
|
4
|
+
|
|
5
|
+
import AlohaExample from "../../../global/components/AlohaExample/AlohaExample.vue";
|
|
6
|
+
import ASwitch from "../../../../../src/ui/ASwitch/ASwitch";
|
|
7
|
+
import ATranslation from "../../../../../src/ATranslation/ATranslation";
|
|
8
|
+
import AWizard from "../../../../../src/AWizard/AWizard";
|
|
9
|
+
|
|
10
|
+
import HtmlAPI from "./compositionAPI/HtmlAPI";
|
|
11
|
+
import JsAPI from "./compositionAPI/JsAPI";
|
|
12
|
+
|
|
13
|
+
export default {
|
|
14
|
+
name: "PageWizardHasFocusJump",
|
|
15
|
+
components: {
|
|
16
|
+
AlohaExample,
|
|
17
|
+
ASwitch,
|
|
18
|
+
ATranslation,
|
|
19
|
+
AWizard,
|
|
20
|
+
},
|
|
21
|
+
setup() {
|
|
22
|
+
const {
|
|
23
|
+
codeHtml,
|
|
24
|
+
} = HtmlAPI();
|
|
25
|
+
|
|
26
|
+
const {
|
|
27
|
+
codeJs,
|
|
28
|
+
} = JsAPI();
|
|
29
|
+
|
|
30
|
+
const hasFocusJump = ref(false);
|
|
31
|
+
const wizardSteps = [
|
|
32
|
+
{
|
|
33
|
+
slot: "step1",
|
|
34
|
+
label: "_A_WIZARD_STEP_1_",
|
|
35
|
+
title: "_A_WIZARD_STEP_1_",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
slot: "step2",
|
|
39
|
+
label: "_A_WIZARD_STEP_2_",
|
|
40
|
+
title: "_A_WIZARD_STEP_2_",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
slot: "step3",
|
|
44
|
+
label: "_A_WIZARD_STEP_3_",
|
|
45
|
+
title: "_A_WIZARD_STEP_3_",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
slot: "step4",
|
|
49
|
+
label: "_A_WIZARD_STEP_4_",
|
|
50
|
+
title: "_A_WIZARD_STEP_4_",
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
const text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque nisl eros,
|
|
54
|
+
pulvinar facilisis justo mollis, auctor consequat urna. Morbi a bibendum metus.
|
|
55
|
+
Donec scelerisque sollicitudin enim eu venenatis. Duis tincidunt laoreet ex,
|
|
56
|
+
in pretium orci vestibulum eget. Class aptent taciti sociosqu ad litora torquent`;
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
codeHtml,
|
|
60
|
+
codeJs,
|
|
61
|
+
hasFocusJump,
|
|
62
|
+
text,
|
|
63
|
+
wizardSteps,
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
aloha-example(
|
|
2
|
+
:code-html="codeHtml"
|
|
3
|
+
:code-js="codeJs"
|
|
4
|
+
header="_A_WIZARD_GROUP_HAS_FOCUS_JUMP_HEADER_"
|
|
5
|
+
description="_A_WIZARD_GROUP_HAS_FOCUS_JUMP_DESCRIPTION_"
|
|
6
|
+
:props="['has-focus-jump']"
|
|
7
|
+
)
|
|
8
|
+
.a_columns.a_columns_count_12
|
|
9
|
+
.a_column.a_column_6.a_columns_count_12_touch.a_mb_5
|
|
10
|
+
a-switch(
|
|
11
|
+
v-model="hasFocusJump"
|
|
12
|
+
label="has-focus-jump"
|
|
13
|
+
)
|
|
14
|
+
a-wizard(
|
|
15
|
+
:steps="wizardSteps"
|
|
16
|
+
:has-focus-jump="hasFocusJump"
|
|
17
|
+
)
|
|
18
|
+
template(
|
|
19
|
+
v-slot:step1
|
|
20
|
+
)
|
|
21
|
+
a-translation(
|
|
22
|
+
tag="h2"
|
|
23
|
+
text="_A_WIZARD_STEP_1_"
|
|
24
|
+
)
|
|
25
|
+
p {{ text }}
|
|
26
|
+
|
|
27
|
+
template(
|
|
28
|
+
v-slot:step2
|
|
29
|
+
)
|
|
30
|
+
a-translation(
|
|
31
|
+
tag="h2"
|
|
32
|
+
text="_A_WIZARD_STEP_2_"
|
|
33
|
+
)
|
|
34
|
+
p {{ text }}
|
|
35
|
+
|
|
36
|
+
template(
|
|
37
|
+
v-slot:step3
|
|
38
|
+
)
|
|
39
|
+
a-translation(
|
|
40
|
+
tag="h2"
|
|
41
|
+
text="_A_WIZARD_STEP_3_"
|
|
42
|
+
)
|
|
43
|
+
p {{ text }}
|
|
44
|
+
|
|
45
|
+
template(
|
|
46
|
+
v-slot:step4
|
|
47
|
+
)
|
|
48
|
+
a-translation(
|
|
49
|
+
tag="h2"
|
|
50
|
+
text="_A_WIZARD_STEP_4_"
|
|
51
|
+
)
|
|
52
|
+
p {{ text }}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export default function HtmlAPI() {
|
|
2
|
+
const codeHtml = `<div
|
|
3
|
+
class="a_columns a_columns_count_12"
|
|
4
|
+
>
|
|
5
|
+
<div
|
|
6
|
+
class="a_column.a_column_6 a_columns_count_12_touch a_mb_5"
|
|
7
|
+
>
|
|
8
|
+
<a-switch
|
|
9
|
+
v-model="hasFocusJump"
|
|
10
|
+
label="has-focus-jump"
|
|
11
|
+
></a-switch>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<a-wizard
|
|
15
|
+
:steps="wizardSteps"
|
|
16
|
+
:has-focus-jump="hasFocusJump"
|
|
17
|
+
>
|
|
18
|
+
<template
|
|
19
|
+
v-slot:step1
|
|
20
|
+
>
|
|
21
|
+
<a-translation
|
|
22
|
+
tag="h2"
|
|
23
|
+
text="_A_MODAL_WIZARD_STEP_1_"
|
|
24
|
+
></a-translation>
|
|
25
|
+
<p>{{ text }}</p>
|
|
26
|
+
</template>
|
|
27
|
+
<template
|
|
28
|
+
v-slot:step2
|
|
29
|
+
>
|
|
30
|
+
<a-translation
|
|
31
|
+
tag="h2"
|
|
32
|
+
text="_A_MODAL_WIZARD_STEP_2_"
|
|
33
|
+
></a-translation>
|
|
34
|
+
<p>{{ text }}</p>
|
|
35
|
+
</template>
|
|
36
|
+
<template
|
|
37
|
+
v-slot:step3
|
|
38
|
+
>
|
|
39
|
+
<a-translation
|
|
40
|
+
tag="h2"
|
|
41
|
+
text="_A_MODAL_WIZARD_STEP_3_"
|
|
42
|
+
></a-translation>
|
|
43
|
+
<p>{{ text }}</p>
|
|
44
|
+
</template>
|
|
45
|
+
<template
|
|
46
|
+
v-slot:step4
|
|
47
|
+
>
|
|
48
|
+
<a-translation
|
|
49
|
+
tag="h2"
|
|
50
|
+
text="_A_MODAL_WIZARD_STEP_4_"
|
|
51
|
+
></a-translation>
|
|
52
|
+
<p>{{ text }}</p>
|
|
53
|
+
</template>
|
|
54
|
+
</a-wizard>`;
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
codeHtml,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export default function JsAPI() {
|
|
2
|
+
const codeJs = `import {
|
|
3
|
+
ref,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
import ASwitch from "aloha-vue/src/ui/ASwitch/ASwitch";
|
|
7
|
+
import ATranslation from "aloha-vue/src/ATranslation/ATranslation";
|
|
8
|
+
import AWizard from "aloha-vue/src/AWizard/AWizard";
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
name: "PageWizardHasFocusJump",
|
|
12
|
+
components: {
|
|
13
|
+
ASwitch,
|
|
14
|
+
ATranslation,
|
|
15
|
+
AWizard,
|
|
16
|
+
},
|
|
17
|
+
setup() {
|
|
18
|
+
const hasFocusJump = ref(false);
|
|
19
|
+
const wizardSteps = [
|
|
20
|
+
{
|
|
21
|
+
slot: "step1",
|
|
22
|
+
label: "_A_MODAL_WIZARD_STEP_1_",
|
|
23
|
+
title: "_A_MODAL_WIZARD_STEP_1_",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
slot: "step2",
|
|
27
|
+
label: "_A_MODAL_WIZARD_STEP_2_",
|
|
28
|
+
title: "_A_MODAL_WIZARD_STEP_2_",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
slot: "step3",
|
|
32
|
+
label: "_A_MODAL_WIZARD_STEP_3_",
|
|
33
|
+
title: "_A_MODAL_WIZARD_STEP_3_",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
slot: "step4",
|
|
37
|
+
label: "_A_MODAL_WIZARD_STEP_4_",
|
|
38
|
+
title: "_A_MODAL_WIZARD_STEP_4_",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const text = \`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque nisl eros,
|
|
42
|
+
pulvinar facilisis justo mollis, auctor consequat urna. Morbi a bibendum metus.
|
|
43
|
+
Donec scelerisque sollicitudin enim eu venenatis. Duis tincidunt laoreet ex,
|
|
44
|
+
in pretium orci vestibulum eget. Class aptent taciti sociosqu ad litora torquent\`;
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
hasFocusJump,
|
|
48
|
+
text,
|
|
49
|
+
wizardSteps,
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
};`;
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
codeJs,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -91,6 +91,20 @@ export default function PropsAPI() {
|
|
|
91
91
|
default: undefined,
|
|
92
92
|
required: false,
|
|
93
93
|
},
|
|
94
|
+
{
|
|
95
|
+
name: "has-focus-jump",
|
|
96
|
+
description: "_A_WIZARD_PROPS_HAS_FOCUS_JUMP_DESCRIPTION_",
|
|
97
|
+
type: "Boolean",
|
|
98
|
+
default: true,
|
|
99
|
+
required: false,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "id",
|
|
103
|
+
description: "_A_WIZARD_PROPS_ID_DESCRIPTION_",
|
|
104
|
+
type: "String",
|
|
105
|
+
default: "() => uniqueId(\"a_wizard_\")",
|
|
106
|
+
required: false,
|
|
107
|
+
},
|
|
94
108
|
{
|
|
95
109
|
name: "is-back-button-disabled",
|
|
96
110
|
description: "_A_WIZARD_PROPS_IS_BACK_BUTTON_DISABLED_DESCRIPTION_",
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_BTN_ADD_STEP_": "Schritt hinzufügen",
|
|
3
|
+
"_A_WIZARD_BTN_DELETE_STEP_": "Schritt löschen",
|
|
2
4
|
"_A_WIZARD_COMPONENT_DESCRIPTION_": "_A_WIZARD_COMPONENT_DESCRIPTION_",
|
|
3
5
|
"_A_WIZARD_COMPONENT_NAME_": "Wizard",
|
|
4
6
|
"_A_WIZARD_GROUP_BUTTONS_DESCRIPTION_": "_A_WIZARD_GROUP_BUTTONS_DESCRIPTION_",
|
|
@@ -32,6 +34,7 @@
|
|
|
32
34
|
"_A_WIZARD_GROUP_TYPE_DESCRIPTION_": "_A_WIZARD_GROUP_TYPE_DESCRIPTION_",
|
|
33
35
|
"_A_WIZARD_GROUP_TYPE_HEADER_": "_A_WIZARD_GROUP_TYPE_HEADER_",
|
|
34
36
|
"_A_WIZARD_LABEL_TYPE_": "Typ",
|
|
37
|
+
"_A_WIZARD_LABEL_STEPS_": "Schritte",
|
|
35
38
|
"_A_WIZARD_PAGE_BACK_BTN_TEXT_": "Zurück",
|
|
36
39
|
"_A_WIZARD_PAGE_FORWARD_BTN_TEXT_": "Vorwärts",
|
|
37
40
|
"_A_WIZARD_PROPS_BACK_BUTTON_ATTRIBUTES_DESCRIPTION_": "_A_WIZARD_PROPS_BACK_BUTTON_ATTRIBUTES_DESCRIPTION_",
|
|
@@ -71,9 +74,7 @@
|
|
|
71
74
|
"_A_WIZARD_STEP_2_": "Step 2",
|
|
72
75
|
"_A_WIZARD_STEP_3_": "Step 3",
|
|
73
76
|
"_A_WIZARD_STEP_4_": "Step 4",
|
|
74
|
-
"
|
|
75
|
-
"_A_WIZARD_STEP_6_": "Step 6",
|
|
76
|
-
"_A_WIZARD_STEP_7_": "Step 7",
|
|
77
|
+
"_A_WIZARD_STEP_NAME_": "Überschrift von Schritt",
|
|
77
78
|
"_A_WIZARD_TYPE_ARROWS_": "Pfeile",
|
|
78
79
|
"_A_WIZARD_TYPE_BASIC_": "Basic",
|
|
79
80
|
"_A_WIZARD_TYPE_ROUND_": "Kreis",
|
package/package.json
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
forEach,
|
|
17
17
|
isArray,
|
|
18
|
+
isNil,
|
|
18
19
|
isPlainObject,
|
|
19
20
|
isUndefined,
|
|
20
21
|
} from "lodash-es";
|
|
@@ -160,8 +161,8 @@ export default function HtmlAPI(props, {
|
|
|
160
161
|
}
|
|
161
162
|
});
|
|
162
163
|
|
|
163
|
-
HTML_LOCAL_OPTIONS.html = htmlCombined
|
|
164
|
-
HTML_LOCAL_OPTIONS.dataTranslateHtml = dataTranslateHtml
|
|
164
|
+
HTML_LOCAL_OPTIONS.html = isNil(htmlCombined) ? undefined : htmlCombined;
|
|
165
|
+
HTML_LOCAL_OPTIONS.dataTranslateHtml = isNil(dataTranslateHtml) ? undefined : dataTranslateHtml;
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
return HTML_LOCAL_OPTIONS;
|
package/src/AWizard/AWizard.js
CHANGED
|
@@ -14,6 +14,10 @@ import LocalAPI from "./compositionAPI/LocalAPI";
|
|
|
14
14
|
import StepsAPI from "./compositionAPI/StepsAPI";
|
|
15
15
|
import TeleportAPI from "./compositionAPI/TeleportAPI";
|
|
16
16
|
|
|
17
|
+
import {
|
|
18
|
+
uniqueId,
|
|
19
|
+
} from "lodash-es";
|
|
20
|
+
|
|
17
21
|
export default {
|
|
18
22
|
name: "AWizard",
|
|
19
23
|
props: {
|
|
@@ -82,6 +86,16 @@ export default {
|
|
|
82
86
|
required: false,
|
|
83
87
|
default: undefined,
|
|
84
88
|
},
|
|
89
|
+
hasFocusJump: {
|
|
90
|
+
type: Boolean,
|
|
91
|
+
required: false,
|
|
92
|
+
default: true,
|
|
93
|
+
},
|
|
94
|
+
id: {
|
|
95
|
+
type: String,
|
|
96
|
+
required: false,
|
|
97
|
+
default: () => uniqueId("a_wizard_"),
|
|
98
|
+
},
|
|
85
99
|
isBackButtonDisabled: {
|
|
86
100
|
type: Boolean,
|
|
87
101
|
required: false,
|
|
@@ -193,13 +207,20 @@ export default {
|
|
|
193
207
|
classWizard,
|
|
194
208
|
} = ClassAPI(props);
|
|
195
209
|
|
|
210
|
+
const {
|
|
211
|
+
setFocusToActiveStep,
|
|
212
|
+
wizardTabsRef,
|
|
213
|
+
} = FocusAPI(props);
|
|
214
|
+
|
|
196
215
|
const {
|
|
197
216
|
initStepActive,
|
|
198
217
|
stepActiveComputed,
|
|
199
218
|
stepActiveLocal,
|
|
200
219
|
stepsVisitedComputed,
|
|
201
220
|
stepsVisitedLocal,
|
|
202
|
-
} = LocalAPI(props
|
|
221
|
+
} = LocalAPI(props, {
|
|
222
|
+
setFocusToActiveStep,
|
|
223
|
+
});
|
|
203
224
|
|
|
204
225
|
const {
|
|
205
226
|
goOneStepBack,
|
|
@@ -211,12 +232,6 @@ export default {
|
|
|
211
232
|
stepsVisitedLocal,
|
|
212
233
|
});
|
|
213
234
|
|
|
214
|
-
const {
|
|
215
|
-
tabContentRef,
|
|
216
|
-
} = FocusAPI({
|
|
217
|
-
stepActiveComputed,
|
|
218
|
-
});
|
|
219
|
-
|
|
220
235
|
const {
|
|
221
236
|
stepActiveNumber,
|
|
222
237
|
stepsCount,
|
|
@@ -242,9 +257,9 @@ export default {
|
|
|
242
257
|
stepsCount,
|
|
243
258
|
stepsProgressbarTextTranslated,
|
|
244
259
|
stepsVisitedComputed,
|
|
245
|
-
tabContentRef,
|
|
246
260
|
toolbarBottomTeleportSelector,
|
|
247
261
|
useTeleportToolbarBottom,
|
|
262
|
+
wizardTabsRef,
|
|
248
263
|
};
|
|
249
264
|
},
|
|
250
265
|
render() {
|
|
@@ -276,7 +291,9 @@ export default {
|
|
|
276
291
|
}, this.$slots);
|
|
277
292
|
|
|
278
293
|
return h("div", {
|
|
294
|
+
id: this.id,
|
|
279
295
|
class: this.classWizard,
|
|
296
|
+
role: "application",
|
|
280
297
|
}, [
|
|
281
298
|
h("ul", {
|
|
282
299
|
class: "a_wizard__steps",
|
|
@@ -290,6 +307,7 @@ export default {
|
|
|
290
307
|
this.steps.map((step, stepIndex) => {
|
|
291
308
|
return h(AWizardStep, {
|
|
292
309
|
key: this.keyId ? step[this.keyId] : stepIndex,
|
|
310
|
+
id: this.id,
|
|
293
311
|
step,
|
|
294
312
|
stepIndex,
|
|
295
313
|
stepActiveComputed: this.stepActiveComputed,
|
|
@@ -305,12 +323,13 @@ export default {
|
|
|
305
323
|
]),
|
|
306
324
|
this.isToolbarTop && TOOLBAR,
|
|
307
325
|
h("div", {
|
|
308
|
-
ref: "tabContentRef",
|
|
309
326
|
class: "a_wizard__tab_content",
|
|
310
|
-
tabindex: -1,
|
|
311
327
|
}, [
|
|
312
328
|
this.steps.map((step, stepIndex) => {
|
|
313
329
|
return h(AWizardTab, {
|
|
330
|
+
key: this.keyId ? step[this.keyId] : stepIndex,
|
|
331
|
+
id: this.id,
|
|
332
|
+
extra: this.extra,
|
|
314
333
|
step,
|
|
315
334
|
stepIndex,
|
|
316
335
|
stepActiveComputed: this.stepActiveComputed,
|
|
@@ -6,6 +6,7 @@ import ATranslation from "../../ATranslation/ATranslation";
|
|
|
6
6
|
|
|
7
7
|
import ActiveAPI from "./compositionAPI/ActiveAPI";
|
|
8
8
|
import AttributesAPI from "./compositionAPI/AttributesAPI";
|
|
9
|
+
import ContentIdAPI from "../AWizardTab/compositionAPI/ContentIdAPI";
|
|
9
10
|
import DisabledAPI from "./compositionAPI/DisabledAPI";
|
|
10
11
|
import EventsAPI from "./compositionAPI/EventsAPI";
|
|
11
12
|
import LinkClassAPI from "./compositionAPI/LinkClassAPI";
|
|
@@ -14,43 +15,47 @@ import NumberAPI from "./compositionAPI/NumberAPI";
|
|
|
14
15
|
export default {
|
|
15
16
|
name: "AWizardStep",
|
|
16
17
|
props: {
|
|
17
|
-
|
|
18
|
+
extra: {
|
|
18
19
|
type: Object,
|
|
19
20
|
required: true,
|
|
20
21
|
},
|
|
21
|
-
|
|
22
|
-
type:
|
|
22
|
+
id: {
|
|
23
|
+
type: String,
|
|
23
24
|
required: true,
|
|
24
25
|
},
|
|
25
|
-
|
|
26
|
-
type: Number,
|
|
27
|
-
required: false,
|
|
28
|
-
default: 0,
|
|
29
|
-
},
|
|
30
|
-
isStepNumberVisible: {
|
|
26
|
+
isBackButtonDisabled: {
|
|
31
27
|
type: Boolean,
|
|
32
28
|
required: true,
|
|
33
29
|
},
|
|
34
|
-
|
|
30
|
+
isBackStepButtonDisabled: {
|
|
35
31
|
type: Boolean,
|
|
36
32
|
required: true,
|
|
37
33
|
},
|
|
38
|
-
|
|
34
|
+
isForwardButtonDisabled: {
|
|
39
35
|
type: Boolean,
|
|
40
36
|
required: true,
|
|
41
37
|
},
|
|
42
|
-
|
|
38
|
+
isForwardStepButtonDisabled: {
|
|
43
39
|
type: Boolean,
|
|
44
40
|
required: true,
|
|
45
41
|
},
|
|
46
|
-
|
|
42
|
+
isStepNumberVisible: {
|
|
47
43
|
type: Boolean,
|
|
48
44
|
required: true,
|
|
49
45
|
},
|
|
50
|
-
|
|
46
|
+
step: {
|
|
51
47
|
type: Object,
|
|
52
48
|
required: true,
|
|
53
49
|
},
|
|
50
|
+
stepActiveComputed: {
|
|
51
|
+
type: Number,
|
|
52
|
+
required: false,
|
|
53
|
+
default: 0,
|
|
54
|
+
},
|
|
55
|
+
stepIndex: {
|
|
56
|
+
type: Number,
|
|
57
|
+
required: true,
|
|
58
|
+
},
|
|
54
59
|
},
|
|
55
60
|
emits: [
|
|
56
61
|
"onStepClick",
|
|
@@ -91,8 +96,13 @@ export default {
|
|
|
91
96
|
isStepActive,
|
|
92
97
|
});
|
|
93
98
|
|
|
99
|
+
const {
|
|
100
|
+
contentId,
|
|
101
|
+
} = ContentIdAPI(props);
|
|
102
|
+
|
|
94
103
|
return {
|
|
95
104
|
ariaCurrentAttributes,
|
|
105
|
+
contentId,
|
|
96
106
|
isStepActive,
|
|
97
107
|
isStepDisabled,
|
|
98
108
|
linkClass,
|
|
@@ -108,6 +118,7 @@ export default {
|
|
|
108
118
|
"li",
|
|
109
119
|
{
|
|
110
120
|
class: "a_wizard__step",
|
|
121
|
+
role: "presentation",
|
|
111
122
|
},
|
|
112
123
|
[
|
|
113
124
|
h("a", {
|
|
@@ -115,6 +126,7 @@ export default {
|
|
|
115
126
|
role: "button",
|
|
116
127
|
tabindex: this.tabindex,
|
|
117
128
|
ariaDisabled: this.isStepDisabled,
|
|
129
|
+
"aria-controls": this.contentId,
|
|
118
130
|
onClick: this.onClick,
|
|
119
131
|
onKeydown: this.onKeydown,
|
|
120
132
|
...this.ariaCurrentAttributes,
|
|
@@ -2,12 +2,24 @@ import {
|
|
|
2
2
|
h,
|
|
3
3
|
} from "vue";
|
|
4
4
|
|
|
5
|
+
import ATranslation from "../../ATranslation/ATranslation";
|
|
6
|
+
|
|
5
7
|
import ActiveAPI from "./compositionAPI/ActiveAPI";
|
|
8
|
+
import FocusIdAPI from "./compositionAPI/FocusIdAPI";
|
|
6
9
|
import VisibilityAPI from "./compositionAPI/VisibilityAPI";
|
|
10
|
+
import ContentIdAPI from "./compositionAPI/ContentIdAPI";
|
|
7
11
|
|
|
8
12
|
export default {
|
|
9
13
|
name: "AWizardTab",
|
|
10
14
|
props: {
|
|
15
|
+
id: {
|
|
16
|
+
type: String,
|
|
17
|
+
required: true,
|
|
18
|
+
},
|
|
19
|
+
extra: {
|
|
20
|
+
type: Object,
|
|
21
|
+
required: true,
|
|
22
|
+
},
|
|
11
23
|
step: {
|
|
12
24
|
type: Object,
|
|
13
25
|
required: true,
|
|
@@ -39,20 +51,54 @@ export default {
|
|
|
39
51
|
isStepActive,
|
|
40
52
|
});
|
|
41
53
|
|
|
54
|
+
const {
|
|
55
|
+
focusId,
|
|
56
|
+
} = FocusIdAPI(props);
|
|
57
|
+
|
|
58
|
+
const {
|
|
59
|
+
contentId,
|
|
60
|
+
} = ContentIdAPI(props);
|
|
61
|
+
|
|
42
62
|
return {
|
|
63
|
+
contentId,
|
|
64
|
+
focusId,
|
|
43
65
|
isStepRender,
|
|
44
66
|
styleStep,
|
|
45
67
|
};
|
|
46
68
|
},
|
|
47
69
|
render() {
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
style: this.styleStep,
|
|
70
|
+
return h("div", {
|
|
71
|
+
id: this.contentId,
|
|
51
72
|
}, [
|
|
52
|
-
this
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
73
|
+
this.isStepRender && h("div", {
|
|
74
|
+
class: "a_wizard__tab_pane",
|
|
75
|
+
style: this.styleStep,
|
|
76
|
+
}, [
|
|
77
|
+
h("div", {
|
|
78
|
+
id: this.focusId,
|
|
79
|
+
class: "a_sr_only",
|
|
80
|
+
tabindex: "-1",
|
|
81
|
+
}, [
|
|
82
|
+
h(ATranslation, {
|
|
83
|
+
tag: "span",
|
|
84
|
+
text: "_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_",
|
|
85
|
+
extra: {
|
|
86
|
+
stepNumber: this.stepIndex + 1,
|
|
87
|
+
},
|
|
88
|
+
}),
|
|
89
|
+
(!this.step.slotLabel || this.$slots[this.step.slotLabel]) &&
|
|
90
|
+
h(ATranslation, {
|
|
91
|
+
tag: "span",
|
|
92
|
+
html: this.step.label,
|
|
93
|
+
class: "a_wizard__step__text",
|
|
94
|
+
extra: this.extra,
|
|
95
|
+
}),
|
|
96
|
+
]),
|
|
97
|
+
this.$slots[this.step.slot] && this.$slots[this.step.slot]({
|
|
98
|
+
step: this.step,
|
|
99
|
+
stepIndex: this.stepIndex,
|
|
100
|
+
}),
|
|
101
|
+
]),
|
|
56
102
|
]);
|
|
57
103
|
},
|
|
58
104
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
toRef,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
export default function ContentIdAPI(props) {
|
|
7
|
+
const id = toRef(props, "id");
|
|
8
|
+
const stepIndex = toRef(props, "stepIndex");
|
|
9
|
+
|
|
10
|
+
const contentId = computed(() => {
|
|
11
|
+
return `${ id.value }_${ stepIndex.value }_content`;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
return {
|
|
15
|
+
contentId,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
toRef,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
export default function FocusIdAPI(props) {
|
|
7
|
+
const id = toRef(props, "id");
|
|
8
|
+
const stepIndex = toRef(props, "stepIndex");
|
|
9
|
+
|
|
10
|
+
const focusId = computed(() => {
|
|
11
|
+
return `${ id.value }_${ stepIndex.value }_focus`;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
return {
|
|
15
|
+
focusId,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ref,
|
|
3
|
-
|
|
3
|
+
toRef,
|
|
4
4
|
} from "vue";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
6
|
+
import {
|
|
7
|
+
setFocusToElement,
|
|
8
|
+
} from "../../utils/utilsDOM";
|
|
9
|
+
|
|
10
|
+
export default function FocusAPI(props) {
|
|
11
|
+
const hasFocusJump = toRef(props, "hasFocusJump");
|
|
12
|
+
const id = toRef(props, "id");
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const wizardTabsRef = ref([]);
|
|
15
|
+
|
|
16
|
+
const setFocusToActiveStep = ({ stepActive }) => {
|
|
17
|
+
if (hasFocusJump.value) {
|
|
18
|
+
setTimeout(() => {
|
|
19
|
+
const FOCUS_ID_SELECTOR = `#${ id.value }_${ stepActive }_focus`;
|
|
20
|
+
setFocusToElement({
|
|
21
|
+
selector: FOCUS_ID_SELECTOR,
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
16
26
|
|
|
17
27
|
return {
|
|
18
|
-
|
|
28
|
+
setFocusToActiveStep,
|
|
29
|
+
wizardTabsRef,
|
|
19
30
|
};
|
|
20
31
|
}
|
|
@@ -2,17 +2,21 @@ import {
|
|
|
2
2
|
computed,
|
|
3
3
|
ref,
|
|
4
4
|
toRef,
|
|
5
|
+
watch,
|
|
5
6
|
} from "vue";
|
|
6
7
|
|
|
7
8
|
import {
|
|
8
9
|
isNil,
|
|
9
10
|
} from "lodash-es";
|
|
10
11
|
|
|
11
|
-
export default function LocalAPI(props
|
|
12
|
+
export default function LocalAPI(props, {
|
|
13
|
+
setFocusToActiveStep = () => {},
|
|
14
|
+
}) {
|
|
12
15
|
const stepActive = toRef(props, "stepActive");
|
|
13
16
|
const stepsVisited = toRef(props, "stepsVisited");
|
|
14
17
|
const isControlOutside = toRef(props, "isControlOutside");
|
|
15
18
|
|
|
19
|
+
const isWatchActive = ref(false);
|
|
16
20
|
const stepActiveLocal = ref(0);
|
|
17
21
|
const stepsVisitedLocal = ref({
|
|
18
22
|
0: true,
|
|
@@ -27,17 +31,25 @@ export default function LocalAPI(props) {
|
|
|
27
31
|
});
|
|
28
32
|
|
|
29
33
|
const initStepActive = () => {
|
|
30
|
-
if (isControlOutside.value) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
34
|
+
if (!isControlOutside.value) {
|
|
35
|
+
if (!isNil(stepActive.value)) {
|
|
36
|
+
stepActiveLocal.value = stepActive.value;
|
|
37
|
+
stepsVisitedLocal.value = {
|
|
38
|
+
[stepActive.value]: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
38
41
|
}
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
isWatchActive.value = true;
|
|
44
|
+
});
|
|
39
45
|
};
|
|
40
46
|
|
|
47
|
+
watch(stepActiveComputed, newValue => {
|
|
48
|
+
if (isWatchActive.value) {
|
|
49
|
+
setFocusToActiveStep({ stepActive: newValue });
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
41
53
|
return {
|
|
42
54
|
initStepActive,
|
|
43
55
|
stepActiveComputed,
|
package/src/AWizard/i18n/ar.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_",
|
|
2
3
|
"_A_WIZARD_NEXT_": "التالي",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "سابق",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "{{ stepActiveLabel }}: {{ stepsCount }} من {{ stepActive }} خطوة"
|
package/src/AWizard/i18n/de.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "Schritt {{ stepNumber }}:",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Nächste",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Vorherige",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "Schritt {{ stepActive }} von {{ stepsCount }}: {{ stepActiveLabel }}"
|
package/src/AWizard/i18n/en.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "Step {{ stepNumber }}:",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Next",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Previous",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "Step {{ stepActive }} of {{ stepsCount }}: {{ stepActiveLabel }}"
|
package/src/AWizard/i18n/es.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Próximo",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Previo",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "escenario {{ stepActive }} de {{ stepsCount }}: {{ stepActiveLabel }}"
|
package/src/AWizard/i18n/fr.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Suivant",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Précédent",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "Etape {{ stepActive }} de {{ stepsCount }}: {{ stepActiveLabel }}"
|
package/src/AWizard/i18n/hr.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Dalje",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Natrag",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "Korak {{ stepActive }} od {{ stepsCount }}: {{ stepActiveLabel }}"
|
package/src/AWizard/i18n/it.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Prossimo",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Precedente",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "palcoscenico {{ stepActive }} Di {{ stepsCount }}: {{ stepActiveLabel }}"
|
package/src/AWizard/i18n/ru.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_A_WIZARD_HEADER_STEP_SCREEN_READER_{{stepNumber}}_": "Шаг {{ stepNumber }}:",
|
|
2
3
|
"_A_WIZARD_NEXT_": "Следующий",
|
|
3
4
|
"_A_WIZARD_PREVIOUS_": "Предыдущий",
|
|
4
5
|
"_A_WIZARD_STEPS_PROGRESSBAR_TEXT_{{stepActive}}_{{stepsCount}}_{{stepActiveLabel}}_": "Шаг {{ stepActive }} из {{ stepsCount }}: {{ stepActiveLabel }}"
|
|
@@ -329,7 +329,7 @@ $a-wizard-step-focus-box-shadow: 0 0 0 0.25rem rgba(var(--a_wizard_s
|
|
|
329
329
|
margin-right: auto;
|
|
330
330
|
margin-bottom: .5rem;
|
|
331
331
|
transition: all 0.5s ease-in-out;
|
|
332
|
-
width: 40px;
|
|
332
|
+
min-width: 40px;
|
|
333
333
|
height: 40px;
|
|
334
334
|
text-align: center;
|
|
335
335
|
background: var(--a_wizard_border_color);
|