From 4264f7ff985aa884d738bd30e5e18625e7a18d67 Mon Sep 17 00:00:00 2001 From: noa Date: Mon, 29 Jan 2024 11:47:22 +0100 Subject: [PATCH 1/7] Port the table component from Wikit to Mismatch Finder --- resources/js/Components/MismatchesTable.vue | 7 +- resources/js/Components/Table.vue | 229 ++++++++++++++++++++ resources/js/types/Breakpoint.ts | 14 ++ 3 files changed, 246 insertions(+), 4 deletions(-) create mode 100644 resources/js/Components/Table.vue create mode 100644 resources/js/types/Breakpoint.ts diff --git a/resources/js/Components/MismatchesTable.vue b/resources/js/Components/MismatchesTable.vue index e3267b9f..fe3f5391 100644 --- a/resources/js/Components/MismatchesTable.vue +++ b/resources/js/Components/MismatchesTable.vue @@ -1,5 +1,5 @@ + + \ No newline at end of file diff --git a/resources/js/types/Breakpoint.ts b/resources/js/types/Breakpoint.ts new file mode 100644 index 00000000..bb015cfc --- /dev/null +++ b/resources/js/types/Breakpoint.ts @@ -0,0 +1,14 @@ +enum Breakpoint { + Mobile = 'mobile', + Tablet = 'tablet', + Desktop = 'desktop' +} + +function validateBreakpoint( breakpoint: string ): boolean { + return Object.values( Breakpoint ).includes( breakpoint as Breakpoint ); +} + +export { + Breakpoint, + validateBreakpoint, +}; \ No newline at end of file From a2b776f2fcf81c060bf73931e698eb972069495e Mon Sep 17 00:00:00 2001 From: noa Date: Mon, 29 Jan 2024 11:59:28 +0100 Subject: [PATCH 2/7] fix ref export and add test --- resources/js/Components/Table.vue | 2 +- tests/Vue/Components/Table.spec.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tests/Vue/Components/Table.spec.js diff --git a/resources/js/Components/Table.vue b/resources/js/Components/Table.vue index 1743d87d..0632a23c 100644 --- a/resources/js/Components/Table.vue +++ b/resources/js/Components/Table.vue @@ -48,7 +48,7 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; return validateBreakpoint( props.linearize ) ? props.linearize : 'tablet'; }); - defineExpose(Table); + defineExpose({Table}); diff --git a/tests/Vue/Components/Table.spec.js b/tests/Vue/Components/Table.spec.js new file mode 100644 index 00000000..6960473e --- /dev/null +++ b/tests/Vue/Components/Table.spec.js @@ -0,0 +1,24 @@ +import { mount } from '@vue/test-utils'; +import Table from '@/Components/Table.vue'; +import {Breakpoint} from '@/types/Breakpoint.ts'; + +describe('Table.vue', () => { + it('accepts a linearize property', () => { + const wrapper = mount(Table, { + propsData: { + linearize: Breakpoint.Desktop + } + }); + + expect( wrapper.props().linearize ).toBe( Breakpoint.Desktop ); + expect( wrapper.find( 'table' ).classes() ).toContain( 'wikit-Table--linear-desktop' ); + }); + + it('ignores invalid breakpoint values', () => { + const wrapper = mount(Table, { + propsData: { linearize: 'nonsense' } + }); + + expect(wrapper.find('table').classes()).toContain('wikit-Table--linear-tablet'); + }); +}) \ No newline at end of file From cb8fbf4cb5cefbebfe7800352a48443c19a9d694 Mon Sep 17 00:00:00 2001 From: noa Date: Tue, 30 Jan 2024 08:49:18 +0100 Subject: [PATCH 3/7] Rename component and replace discrete values with tokens where possible --- resources/js/Components/MismatchesTable.vue | 6 +++--- .../{Table.vue => TableComponent.vue} | 20 +++++++++---------- .../{Table.spec.js => TableComponent.spec.js} | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) rename resources/js/Components/{Table.vue => TableComponent.vue} (90%) rename tests/Vue/Components/{Table.spec.js => TableComponent.spec.js} (80%) diff --git a/resources/js/Components/MismatchesTable.vue b/resources/js/Components/MismatchesTable.vue index fe3f5391..2a4d4dfb 100644 --- a/resources/js/Components/MismatchesTable.vue +++ b/resources/js/Components/MismatchesTable.vue @@ -1,5 +1,5 @@ @@ -137,15 +137,15 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; /** * Colors */ - background-color: #fff; - color: #202122; + background-color: $background-color-base; + color: $color-base; /** * Typography */ - font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,Helvetica,Arial,sans-serif; - font-size: 1em; - font-weight: 400; + font-family: $font-family-system-sans; + font-size: $font-size-medium; + font-weight: $font-weight-normal; tr { /** @@ -155,7 +155,7 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; /** * Borders */ - border-bottom:1px #c8ccd1 solid; + border-bottom: $border-width-base $border-color-subtle solid; border-radius: 0; } diff --git a/tests/Vue/Components/Table.spec.js b/tests/Vue/Components/TableComponent.spec.js similarity index 80% rename from tests/Vue/Components/Table.spec.js rename to tests/Vue/Components/TableComponent.spec.js index 6960473e..6c30ad86 100644 --- a/tests/Vue/Components/Table.spec.js +++ b/tests/Vue/Components/TableComponent.spec.js @@ -1,10 +1,10 @@ import { mount } from '@vue/test-utils'; -import Table from '@/Components/Table.vue'; +import TableComponent from '@/Components/TableComponent.vue'; import {Breakpoint} from '@/types/Breakpoint.ts'; describe('Table.vue', () => { it('accepts a linearize property', () => { - const wrapper = mount(Table, { + const wrapper = mount(TableComponent, { propsData: { linearize: Breakpoint.Desktop } @@ -15,7 +15,7 @@ describe('Table.vue', () => { }); it('ignores invalid breakpoint values', () => { - const wrapper = mount(Table, { + const wrapper = mount(TableComponent, { propsData: { linearize: 'nonsense' } }); From 02e500196b60db456743e8e1aeb14997ee343f11 Mon Sep 17 00:00:00 2001 From: noa Date: Tue, 30 Jan 2024 08:49:54 +0100 Subject: [PATCH 4/7] two more tokens --- resources/js/Components/TableComponent.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/js/Components/TableComponent.vue b/resources/js/Components/TableComponent.vue index 236d54e5..ea8b493b 100644 --- a/resources/js/Components/TableComponent.vue +++ b/resources/js/Components/TableComponent.vue @@ -98,7 +98,7 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; td[data-header]::before { content: attr(data-header); display: block; - font-weight: 700; + font-weight: $font-weight-bold; flex-basis: 40%; // Ensure headers stay exactly 40% @@ -107,7 +107,7 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; } th:not([data-header]) { - font-weight: 700; + font-weight: $font-weight-bold; } // Hide empty cells From 6d3ae240c4106cb2469d483b72ed10469c06be49 Mon Sep 17 00:00:00 2001 From: noa Date: Tue, 30 Jan 2024 08:52:18 +0100 Subject: [PATCH 5/7] use correct component name in test and css selector --- resources/js/Components/TableComponent.vue | 2 +- tests/Vue/Components/TableComponent.spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/js/Components/TableComponent.vue b/resources/js/Components/TableComponent.vue index ea8b493b..b3442c37 100644 --- a/resources/js/Components/TableComponent.vue +++ b/resources/js/Components/TableComponent.vue @@ -116,7 +116,7 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; } } - .Table { + .TableComponent { /** * Layout */ diff --git a/tests/Vue/Components/TableComponent.spec.js b/tests/Vue/Components/TableComponent.spec.js index 6c30ad86..9dcadd81 100644 --- a/tests/Vue/Components/TableComponent.spec.js +++ b/tests/Vue/Components/TableComponent.spec.js @@ -2,7 +2,7 @@ import { mount } from '@vue/test-utils'; import TableComponent from '@/Components/TableComponent.vue'; import {Breakpoint} from '@/types/Breakpoint.ts'; -describe('Table.vue', () => { +describe('TableComponent.vue', () => { it('accepts a linearize property', () => { const wrapper = mount(TableComponent, { propsData: { From a0839b1cb85d63cae4094143bc8be5c43e798e1b Mon Sep 17 00:00:00 2001 From: noa Date: Tue, 30 Jan 2024 10:27:00 +0100 Subject: [PATCH 6/7] update class selector name --- resources/js/Components/TableComponent.vue | 7 +++---- tests/Vue/Components/TableComponent.spec.js | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/resources/js/Components/TableComponent.vue b/resources/js/Components/TableComponent.vue index b3442c37..f7a44287 100644 --- a/resources/js/Components/TableComponent.vue +++ b/resources/js/Components/TableComponent.vue @@ -2,9 +2,8 @@ @@ -116,7 +115,7 @@ import { Breakpoint, validateBreakpoint } from '../types/Breakpoint'; } } - .TableComponent { + .table-component { /** * Layout */ diff --git a/tests/Vue/Components/TableComponent.spec.js b/tests/Vue/Components/TableComponent.spec.js index 9dcadd81..27395ac0 100644 --- a/tests/Vue/Components/TableComponent.spec.js +++ b/tests/Vue/Components/TableComponent.spec.js @@ -11,7 +11,7 @@ describe('TableComponent.vue', () => { }); expect( wrapper.props().linearize ).toBe( Breakpoint.Desktop ); - expect( wrapper.find( 'table' ).classes() ).toContain( 'wikit-Table--linear-desktop' ); + expect( wrapper.find( 'table' ).classes() ).toContain( 'table-component--linear-desktop' ); }); it('ignores invalid breakpoint values', () => { @@ -19,6 +19,6 @@ describe('TableComponent.vue', () => { propsData: { linearize: 'nonsense' } }); - expect(wrapper.find('table').classes()).toContain('wikit-Table--linear-tablet'); + expect(wrapper.find('table').classes()).toContain('table-component--linear-tablet'); }); }) \ No newline at end of file From e6efe7285e984a1d801547aebb9cb398301cdd3a Mon Sep 17 00:00:00 2001 From: noa Date: Tue, 30 Jan 2024 10:40:47 +0100 Subject: [PATCH 7/7] make component tag kebab-case --- resources/js/Components/MismatchesTable.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/js/Components/MismatchesTable.vue b/resources/js/Components/MismatchesTable.vue index 2a4d4dfb..71092424 100644 --- a/resources/js/Components/MismatchesTable.vue +++ b/resources/js/Components/MismatchesTable.vue @@ -1,5 +1,5 @@