diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b3e5e6..d0883e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [0.27.0](https://github.com/Fantom-foundation/Fantom-Vue3-Components/compare/v0.26.2...v0.27.0) (2022-09-22) + + +### Features + +* **FStyledNumber:** create component ([6051f9a](https://github.com/Fantom-foundation/Fantom-Vue3-Components/commit/6051f9a6d6ab0939436128e3d1fb4d32bf4e6d8f)) +* **FToken:** add slots ([212a7ed](https://github.com/Fantom-foundation/Fantom-Vue3-Components/commit/212a7ede786738e78f33c1ef26e04e3d03bd97d5)) + ### [0.26.2](https://github.com/Fantom-foundation/Fantom-Vue3-Components/compare/v0.26.1...v0.26.2) (2022-09-21) diff --git a/package-lock.json b/package-lock.json index da13c7a..f04e54b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "fantom-vue3-components", - "version": "0.26.2", + "version": "0.27.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "fantom-vue3-components", - "version": "0.26.2", + "version": "0.27.0", "license": "MIT", "dependencies": { "@vueuse/core": "^8.5.0", diff --git a/package.json b/package.json index c52a5af..0482037 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fantom-vue3-components", - "version": "0.26.2", + "version": "0.27.0", "description": "Library of various Vue 3 components with focus on accessibility", "author": "Fantom Foundation", "license": "MIT", diff --git a/src/assets/scss/settings/custom-properties/_index.scss b/src/assets/scss/settings/custom-properties/_index.scss index 1cb767a..a07d397 100755 --- a/src/assets/scss/settings/custom-properties/_index.scss +++ b/src/assets/scss/settings/custom-properties/_index.scss @@ -8,3 +8,4 @@ @forward "border-radius"; @forward "box-shadow"; @forward "form-inputs"; +@forward "opacity"; diff --git a/src/assets/scss/settings/custom-properties/_opacity.scss b/src/assets/scss/settings/custom-properties/_opacity.scss new file mode 100644 index 0000000..9300c5e --- /dev/null +++ b/src/assets/scss/settings/custom-properties/_opacity.scss @@ -0,0 +1,16 @@ +/** + CSS custom properties for opacity. + */ + +:root { + --f-opacity-0: 0; + --f-opacity-1: 0.1; + --f-opacity-2: 0.2; + --f-opacity-3: 0.3; + --f-opacity-4: 0.4; + --f-opacity-5: 0.5; + --f-opacity-6: 0.6; + --f-opacity-7: 0.7; + --f-opacity-8: 0.8; + --f-opacity-9: 0.9; +} diff --git a/src/components/FStyledNumber/FStyledNumber.spec.js b/src/components/FStyledNumber/FStyledNumber.spec.js new file mode 100644 index 0000000..7213762 --- /dev/null +++ b/src/components/FStyledNumber/FStyledNumber.spec.js @@ -0,0 +1,64 @@ +import { describe, it, expect, afterEach } from 'vitest'; +import { mount } from '@vue/test-utils'; +import { destroyWrapper } from '@/test/utils.js'; +import FStyledNumber from './FStyledNumber.vue'; + +let wrapper = null; + +function createWrapper(options = {}) { + return mount(FStyledNumber, options); +} + +afterEach(() => { + destroyWrapper(wrapper); +}); + +describe('FStyledNumber', () => { + it('should split number to integer, delimiter and fraction parts', () => { + wrapper = createWrapper({ + props: { + value: 0.123, + }, + }); + + expect(wrapper.findByTestId('int').text()).toBe('0'); + expect(wrapper.findByTestId('dlm').text()).toBe('.'); + expect(wrapper.findByTestId('frac').text()).toBe('123'); + }); + + it('should properly handle value with no fraction part', () => { + wrapper = createWrapper({ + props: { + value: 123, + }, + }); + + expect(wrapper.findByTestId('int').text()).toBe('123'); + expect(wrapper.findByTestId('dlm').exists()).toBe(false); + expect(wrapper.findByTestId('frac').exists()).toBe(false); + }); + + it('should properly handle string values', () => { + wrapper = createWrapper({ + props: { + value: '123 456,789', + }, + }); + + expect(wrapper.findByTestId('int').text()).toBe('123 456'); + expect(wrapper.findByTestId('dlm').text()).toBe(','); + expect(wrapper.findByTestId('frac').text()).toBe('789'); + }); + + it('should properly handle string values with commas', () => { + wrapper = createWrapper({ + props: { + value: '123,456,789.123', + }, + }); + + expect(wrapper.findByTestId('int').text()).toBe('123,456,789'); + expect(wrapper.findByTestId('dlm').text()).toBe('.'); + expect(wrapper.findByTestId('frac').text()).toBe('123'); + }); +}); diff --git a/src/components/FStyledNumber/FStyledNumber.stories.js b/src/components/FStyledNumber/FStyledNumber.stories.js new file mode 100644 index 0000000..ffddad1 --- /dev/null +++ b/src/components/FStyledNumber/FStyledNumber.stories.js @@ -0,0 +1,41 @@ +import FStyledNumber from './FStyledNumber.vue'; + +export default { + title: 'FStyledNumber', + component: FStyledNumber, +}; + +export const Default = () => ({ + components: { FStyledNumber }, + template: ` +