diff --git a/packages/core/src/Lib/UseFloatingLabel/Internal/Lib/UseFloatingLabel.ts b/packages/core/src/Lib/UseFloatingLabel/Internal/Lib/UseFloatingLabel.ts index 5e9cbe80..f8584118 100644 --- a/packages/core/src/Lib/UseFloatingLabel/Internal/Lib/UseFloatingLabel.ts +++ b/packages/core/src/Lib/UseFloatingLabel/Internal/Lib/UseFloatingLabel.ts @@ -5,18 +5,19 @@ import { useClass } from '@/Lib/UseClass/Internal'; import { computed, toValue } from 'vue'; export function useFloatingLabel( - elementName: MaybeRefOrGetter, + componentName: MaybeRefOrGetter, labelType: MaybeRefOrGetter, ): ComputedRef { return computed(() => { const isFloating = toValue(labelType) === 'floating'; const classes: Record> = { + FoInputFile: useClass(isFloating, 'input-floating'), FoInputText: useClass(isFloating, 'input-floating'), FoSelect: useClass(isFloating, 'select-floating'), FoTextarea: useClass(isFloating, 'textarea-floating'), }; - return classes[toValue(elementName)].value; + return classes[toValue(componentName)].value; }); } diff --git a/packages/core/src/Lib/UseFloatingLabel/Types/FloatingLabel.ts b/packages/core/src/Lib/UseFloatingLabel/Types/FloatingLabel.ts index 2c08611c..618869a7 100644 --- a/packages/core/src/Lib/UseFloatingLabel/Types/FloatingLabel.ts +++ b/packages/core/src/Lib/UseFloatingLabel/Types/FloatingLabel.ts @@ -1,3 +1,4 @@ import type { ComponentName } from '@/Lib'; -export type FloatingLabelComponentName = Extract; +// todo: there is a mismatch between configurable and floating, this should be checked +export type FloatingLabelComponentName = Extract; diff --git a/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/ComponentName.ts b/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/ComponentName.ts index 6406f347..42fc5d6b 100644 --- a/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/ComponentName.ts +++ b/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/ComponentName.ts @@ -8,6 +8,7 @@ type NonConfigurableComponentName = 'FoAvatarGroup' | 'FoDiff' | 'FoDotStyleBadge' | 'FoJoin' + | 'FoImageRadio' | 'FoLabel' | 'FoListGroup' | 'FoListGroupItem' diff --git a/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/FlyonUIVueAppConfig.ts b/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/FlyonUIVueAppConfig.ts index e62cfb5c..0151f468 100644 --- a/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/FlyonUIVueAppConfig.ts +++ b/packages/core/src/Lib/UseFlyonUIVueAppConfig/Types/FlyonUIVueAppConfig.ts @@ -20,6 +20,7 @@ import type { HeadingProps, KeyboardProps, LinkProps } import type { DividerProps } from '@/UI/Content/Divider'; import type { IconProps } from '@/UI/Customization'; import type { CheckboxProps, InputTextProps, SelectProps, SwitchProps, TextareaProps } from '@/UI/Forms'; +import type { InputFileProps } from '@/UI/Forms/InputFile'; import type { RadioProps } from '@/UI/Forms/Radio'; import type { RangeProps } from '@/UI/Forms/Range'; import type { TabProps, TabsProps } from '@/UI/Navigations'; @@ -113,6 +114,11 @@ export interface ConfigurableComponentProps { FoDivider: ConfigurableProps; FoHeading: ConfigurableProps; FoIcon: ConfigurableProps; + FoInputFile: ConfigurableProps< + InputFileProps + & HorizontalPositionComponentConfig + & LabelTypeComponentConfig + >; FoInputText: ConfigurableProps< InputTextProps & HorizontalPositionComponentConfig diff --git a/packages/core/src/Lib/UseSize/Internal/Lib/UseSize.ts b/packages/core/src/Lib/UseSize/Internal/Lib/UseSize.ts index d91e1632..032a4c1b 100644 --- a/packages/core/src/Lib/UseSize/Internal/Lib/UseSize.ts +++ b/packages/core/src/Lib/UseSize/Internal/Lib/UseSize.ts @@ -40,6 +40,13 @@ export function useSize( large: 'checkbox-lg', extraLarge: 'checkbox-xl', }, + FoInputFile: { + extraSmall: 'input-xs', + small: 'input-sm', + medium: '', + large: 'input-lg', + extraLarge: 'input-xl', + }, FoInputText: { extraSmall: 'input-xs', small: 'input-sm', diff --git a/packages/core/src/Lib/UseSize/Types/Size.ts b/packages/core/src/Lib/UseSize/Types/Size.ts index 8bd6f09f..28fd554f 100644 --- a/packages/core/src/Lib/UseSize/Types/Size.ts +++ b/packages/core/src/Lib/UseSize/Types/Size.ts @@ -6,6 +6,7 @@ export type SizableComponentName = Extract< | 'FoBadge' | 'FoButton' | 'FoCheckbox' + | 'FoInputFile' | 'FoInputText' | 'FoKeyboard' | 'FoLoading' diff --git a/packages/core/src/UI/Components/HelperText/Types/HelperText.ts b/packages/core/src/UI/Components/HelperText/Types/HelperText.ts index abeaf35e..06b63359 100644 --- a/packages/core/src/UI/Components/HelperText/Types/HelperText.ts +++ b/packages/core/src/UI/Components/HelperText/Types/HelperText.ts @@ -1,7 +1,7 @@ import type { ComponentName } from '@/Lib'; import type { HorizontalPosition } from '@/Types'; -export type PositionableHelperTextComponentName = Extract; +export type PositionableHelperTextComponentName = Extract; export type HelperText = string; diff --git a/packages/core/src/UI/Components/Label/Internal/Types/Label.ts b/packages/core/src/UI/Components/Label/Internal/Types/Label.ts index 5b520e3a..93984290 100644 --- a/packages/core/src/UI/Components/Label/Internal/Types/Label.ts +++ b/packages/core/src/UI/Components/Label/Internal/Types/Label.ts @@ -1,7 +1,13 @@ import type { ComponentName, FloatingLabelComponentName, MaybeStringId } from '@/Lib'; import type { LabelType } from '@/UI/Components'; -export type ConfigurableLabelComponentName = Extract; +export type ConfigurableLabelComponentName = Extract< + ComponentName, + 'FoInputFile' + | 'FoInputText' + | 'FoSelect' + | 'FoTextarea' +>; export interface LabelProps extends MaybeStringId { componentName?: FloatingLabelComponentName; diff --git a/packages/core/src/UI/Components/Label/Internal/UI/FoLabel.vue b/packages/core/src/UI/Components/Label/Internal/UI/FoLabel.vue index d7659c02..a8cfdf6b 100644 --- a/packages/core/src/UI/Components/Label/Internal/UI/FoLabel.vue +++ b/packages/core/src/UI/Components/Label/Internal/UI/FoLabel.vue @@ -46,6 +46,11 @@ const labelClass = computed((): string => { } const classes: Record> = { + FoInputFile: { + text: 'label-text', + floating: 'input-floating-label', + inline: '', + }, FoInputText: { text: 'label-text', floating: 'input-floating-label', diff --git a/packages/core/src/UI/Forms/InputFile/Types/InputFile.ts b/packages/core/src/UI/Forms/InputFile/Types/InputFile.ts new file mode 100644 index 00000000..85bc9f9e --- /dev/null +++ b/packages/core/src/UI/Forms/InputFile/Types/InputFile.ts @@ -0,0 +1,11 @@ +import type { Disableable, MaybeStringId, Sizable, Validity } from '@/Lib'; +import type { LabelType, WithConfigurableHelperText, WithConfigurableInputLabel } from '@/UI/Components'; + +export type InputFileLabelType = Extract; + +export type InputFileProps = MaybeStringId + & Disableable + & Sizable + & WithConfigurableInputLabel + & Validity + & WithConfigurableHelperText; diff --git a/packages/core/src/UI/Forms/InputFile/Types/index.ts b/packages/core/src/UI/Forms/InputFile/Types/index.ts new file mode 100644 index 00000000..52bb32d0 --- /dev/null +++ b/packages/core/src/UI/Forms/InputFile/Types/index.ts @@ -0,0 +1 @@ +export * from '@/UI/Forms/InputFile/Types/InputFile'; diff --git a/packages/core/src/UI/Forms/InputFile/UI/FoInputFile.vue b/packages/core/src/UI/Forms/InputFile/UI/FoInputFile.vue new file mode 100644 index 00000000..8f56b65d --- /dev/null +++ b/packages/core/src/UI/Forms/InputFile/UI/FoInputFile.vue @@ -0,0 +1,33 @@ + + + diff --git a/packages/core/src/UI/Forms/InputFile/UI/FoInputFiles.vue b/packages/core/src/UI/Forms/InputFile/UI/FoInputFiles.vue new file mode 100644 index 00000000..92b32821 --- /dev/null +++ b/packages/core/src/UI/Forms/InputFile/UI/FoInputFiles.vue @@ -0,0 +1,102 @@ + + + diff --git a/packages/core/src/UI/Forms/InputFile/UI/index.ts b/packages/core/src/UI/Forms/InputFile/UI/index.ts new file mode 100644 index 00000000..dcd1afd9 --- /dev/null +++ b/packages/core/src/UI/Forms/InputFile/UI/index.ts @@ -0,0 +1,2 @@ +export { default as FoInputFile } from '@/UI/Forms/InputFile/UI/FoInputFile.vue'; +export { default as FoInputFiles } from '@/UI/Forms/InputFile/UI/FoInputFiles.vue'; diff --git a/packages/core/src/UI/Forms/InputFile/index.ts b/packages/core/src/UI/Forms/InputFile/index.ts new file mode 100644 index 00000000..a40b7565 --- /dev/null +++ b/packages/core/src/UI/Forms/InputFile/index.ts @@ -0,0 +1,2 @@ +export * from '@/UI/Forms/InputFile/Types'; +export * from '@/UI/Forms/InputFile/UI'; diff --git a/packages/core/src/UI/Forms/Select/UI/FoSelect.vue b/packages/core/src/UI/Forms/Select/UI/FoSelect.vue index eddd8414..6c312092 100644 --- a/packages/core/src/UI/Forms/Select/UI/FoSelect.vue +++ b/packages/core/src/UI/Forms/Select/UI/FoSelect.vue @@ -3,7 +3,7 @@
+ +### Labels + + + +### Sizes + + + +### Validation states + + + +## Illustrations + +### Disabled + + + +### Helper text + + + +### Multiple files + + + +## Api + +### Props + + + +### Slots + + diff --git a/packages/docs/Next/Forms/InputFile/DefaultInputFile.vue b/packages/docs/Next/Forms/InputFile/DefaultInputFile.vue new file mode 100644 index 00000000..7905b3b2 --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/DefaultInputFile.vue @@ -0,0 +1,10 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/DisabledInputFile.vue b/packages/docs/Next/Forms/InputFile/DisabledInputFile.vue new file mode 100644 index 00000000..651757e5 --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/DisabledInputFile.vue @@ -0,0 +1,12 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/InputFileDocs.vue b/packages/docs/Next/Forms/InputFile/InputFileDocs.vue new file mode 100644 index 00000000..ace2eaa0 --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/InputFileDocs.vue @@ -0,0 +1,99 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/InputFileHelperText.vue b/packages/docs/Next/Forms/InputFile/InputFileHelperText.vue new file mode 100644 index 00000000..689ab5dc --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/InputFileHelperText.vue @@ -0,0 +1,18 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/InputFileLabel.vue b/packages/docs/Next/Forms/InputFile/InputFileLabel.vue new file mode 100644 index 00000000..122b3096 --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/InputFileLabel.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/InputFileSize.vue b/packages/docs/Next/Forms/InputFile/InputFileSize.vue new file mode 100644 index 00000000..bf0ca9f4 --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/InputFileSize.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/InputFileValidationState.vue b/packages/docs/Next/Forms/InputFile/InputFileValidationState.vue new file mode 100644 index 00000000..11b066bd --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/InputFileValidationState.vue @@ -0,0 +1,32 @@ + + + diff --git a/packages/docs/Next/Forms/InputFile/MultipleFilesInputFile.vue b/packages/docs/Next/Forms/InputFile/MultipleFilesInputFile.vue new file mode 100644 index 00000000..8409ee1f --- /dev/null +++ b/packages/docs/Next/Forms/InputFile/MultipleFilesInputFile.vue @@ -0,0 +1,10 @@ + + + diff --git a/packages/docs/Next/Forms/Radio/RadioDocs.vue b/packages/docs/Next/Forms/Radio/RadioDocs.vue index 93c6f0a8..60942ae0 100644 --- a/packages/docs/Next/Forms/Radio/RadioDocs.vue +++ b/packages/docs/Next/Forms/Radio/RadioDocs.vue @@ -1,7 +1,7 @@ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-default-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-default-chromium-linux.png new file mode 100644 index 00000000..3220f411 Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-default-chromium-linux.png differ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-disabled-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-disabled-chromium-linux.png new file mode 100644 index 00000000..56c82ed1 Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-disabled-chromium-linux.png differ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-helper-text-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-helper-text-chromium-linux.png new file mode 100644 index 00000000..5035a407 Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-helper-text-chromium-linux.png differ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-label-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-label-chromium-linux.png new file mode 100644 index 00000000..b38ccdbc Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-label-chromium-linux.png differ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-multiple-files-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-multiple-files-chromium-linux.png new file mode 100644 index 00000000..e0add2d1 Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-multiple-files-chromium-linux.png differ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-size-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-size-chromium-linux.png new file mode 100644 index 00000000..b50f8824 Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-size-chromium-linux.png differ diff --git a/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-validation-state-chromium-linux.png b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-validation-state-chromium-linux.png new file mode 100644 index 00000000..3fa0f286 Binary files /dev/null and b/packages/docs/tests/EndToEnd/Docs.browser.spec.ts-snapshots/forms-input-file-validation-state-chromium-linux.png differ