Skip to content

Commit 5310a37

Browse files
changing fancyradio to use v-btn instead
1 parent 3f1841f commit 5310a37

File tree

17 files changed

+499
-669
lines changed

17 files changed

+499
-669
lines changed

src/plugin/VStepperForm.vue

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@
112112
:size="navButtonSize"
113113
@click="runValidation(validate, 'next', next)"
114114
/>
115-
<!-- TODO: This will change to use v-else when done -->
116115
<v-btn
116+
v-else
117117
:color="settings.color"
118118
:disabled="fieldsHaveErrors"
119119
:size="navButtonSize"
@@ -138,7 +138,6 @@
138138
</template>
139139
</v-stepper>
140140
</v-container>
141-
142141
</div>
143142
</div>
144143
</template>
@@ -155,7 +154,6 @@ import type {
155154
Field,
156155
Page,
157156
Props,
158-
Settings,
159157
} from '@/plugin/types';
160158
import {
161159
useContainerClasses,
@@ -166,6 +164,7 @@ import { globalOptions } from './';
166164
import PageContainer from './components/shared/PageContainer.vue';
167165
import PageReviewContainer from './components/shared/PageReviewContainer.vue';
168166
import {
167+
useBuildSettings,
169168
useColumnErrorCheck,
170169
useMergeProps,
171170
} from './composables/helpers';
@@ -180,46 +179,19 @@ const injectedOptions = inject(globalOptions, {});
180179
181180
// -------------------------------------------------- Props //
182181
const props = withDefaults(defineProps<Props>(), AllProps);
183-
const stepperProps: Settings = reactive<Settings>(useMergeProps(attrs, injectedOptions, props));
182+
let stepperProps: Settings = reactive<Settings>(useMergeProps(attrs, injectedOptions, props));
184183
const { direction, title, width } = toRefs(props);
185184
const pages = reactive<Page[]>(props.pages);
186185
const originalPages = JSON.parse(JSON.stringify(pages));
187186
188-
const settings: Ref<Settings> = ref<Settings>({
189-
altLabels: stepperProps.altLabels,
190-
autoPage: stepperProps.autoPage,
191-
autoPageDelay: stepperProps.autoPageDelay,
192-
bgColor: stepperProps.bgColor,
193-
border: stepperProps.border,
194-
canReview: stepperProps.canReview,
195-
color: stepperProps.color || 'primary',
196-
density: stepperProps.density,
197-
disabled: stepperProps.disabled,
198-
editIcon: stepperProps.editIcon,
199-
editable: stepperProps.editable,
200-
elevation: stepperProps.elevation,
201-
errorIcon: stepperProps.errorIcon,
202-
fieldColumns: stepperProps.fieldColumns,
203-
flat: stepperProps.flat,
204-
height: stepperProps.height,
205-
hideActions: stepperProps.hideActions,
206-
hideDetails: stepperProps.hideDetails,
207-
keepValuesOnUnmount: stepperProps.keepValuesOnUnmount,
208-
maxHeight: stepperProps.maxHeight,
209-
maxWidth: stepperProps.maxWidth,
210-
minHeight: stepperProps.minHeight,
211-
minWidth: stepperProps.minWidth,
212-
nextText: stepperProps.nextText,
213-
prevText: stepperProps.prevText,
214-
rounded: stepperProps.rounded,
215-
selectedClass: stepperProps.selectedClass,
216-
theme: stepperProps.theme,
217-
tile: stepperProps.tile,
218-
transition: stepperProps.transition,
219-
validateOn: stepperProps.validateOn,
220-
validateOnMount: stepperProps.validateOnMount,
221-
variant: stepperProps.variant,
222-
});
187+
const settings: Ref<Settings> = ref<Settings>(useBuildSettings(stepperProps));
188+
189+
watch(props, () => {
190+
stepperProps = useMergeProps(attrs, injectedOptions, props);
191+
settings.value = useBuildSettings(stepperProps);
192+
}, { deep: true });
193+
194+
provide<Ref<Settings>>('settings', settings);
223195
224196
225197
const allFieldsArray: Ref<Field[]> = ref<Field[]>([]);

src/plugin/components/fields/CommonField/CommonField.vue

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,18 @@ const emit = defineEmits(['validate']);
4343
const modelValue = defineModel<any>();
4444
const props = defineProps<CommonFieldProps>();
4545
46-
const { field, settings } = props;
47-
46+
const { field } = props;
47+
const settings = inject<Ref<Settings>>('settings')!;
4848
4949
const fieldRequired = computed(() => {
5050
const hasRequiredRule = field.rules?.find((rule) => rule.type === 'required');
5151
return field.required || hasRequiredRule as FieldLabelProps['required'];
5252
});
53-
const fieldValidateOn = computed(() => field?.validateOn ?? settings?.validateOn);
53+
const fieldValidateOn = computed(() => field?.validateOn ?? settings.value.validateOn);
5454
const originalValue = modelValue.value;
5555
5656
onUnmounted(() => {
57-
if (!settings.keepValuesOnUnmount) {
57+
if (!settings.value.keepValuesOnUnmount) {
5858
modelValue.value = originalValue;
5959
}
6060
});
@@ -66,7 +66,7 @@ async function onActions(validate: FieldValidateResult, action: ValidateAction):
6666
action,
6767
emit,
6868
field,
69-
settingsValidateOn: settings.validateOn,
69+
settingsValidateOn: settings.value.validateOn,
7070
validate,
7171
});
7272
}
@@ -90,11 +90,11 @@ const hasErrors = computed(() => {
9090
// -------------------------------------------------- Bound Settings //
9191
const bindSettings = computed(() => ({
9292
...field,
93-
color: field.color || settings?.color,
94-
density: field.density || settings?.density,
95-
hideDetails: field.hideDetails || settings?.hideDetails,
93+
color: field.color || settings.value.color,
94+
density: field.density || settings.value.density,
95+
hideDetails: field.hideDetails || settings.value.hideDetails,
9696
type: fieldType.value,
97-
variant: field.variant || settings?.variant,
97+
variant: field.variant || settings.value.variant,
9898
}));
9999
100100
const boundSettings = computed(() => useBindingSettings(bindSettings.value));

0 commit comments

Comments
 (0)