From ac4e36060a63d6118544e7ff967458b73d9b970b Mon Sep 17 00:00:00 2001 From: Maksim Nedoshev Date: Wed, 19 Apr 2023 13:56:47 +0300 Subject: [PATCH 1/9] raw: layout --- .../components/va-layout/VaLayout.demo.vue | 65 ++++++++++++++++ .../ui/src/components/va-layout/VaLayout.vue | 74 +++++++++++++++++++ packages/ui/src/components/va-layout/index.ts | 0 3 files changed, 139 insertions(+) create mode 100644 packages/ui/src/components/va-layout/VaLayout.demo.vue create mode 100644 packages/ui/src/components/va-layout/VaLayout.vue create mode 100644 packages/ui/src/components/va-layout/index.ts diff --git a/packages/ui/src/components/va-layout/VaLayout.demo.vue b/packages/ui/src/components/va-layout/VaLayout.demo.vue new file mode 100644 index 0000000000..ea3041bcf6 --- /dev/null +++ b/packages/ui/src/components/va-layout/VaLayout.demo.vue @@ -0,0 +1,65 @@ + + + diff --git a/packages/ui/src/components/va-layout/VaLayout.vue b/packages/ui/src/components/va-layout/VaLayout.vue new file mode 100644 index 0000000000..673da68b03 --- /dev/null +++ b/packages/ui/src/components/va-layout/VaLayout.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/packages/ui/src/components/va-layout/index.ts b/packages/ui/src/components/va-layout/index.ts new file mode 100644 index 0000000000..e69de29bb2 From 0a4b1ff7ce9c793fe7969479916b93e89e159c76 Mon Sep 17 00:00:00 2001 From: Maksim Nedoshev Date: Fri, 28 Apr 2023 08:19:03 +0300 Subject: [PATCH 2/9] raw: template grid areas --- packages/docs/page-config/navigationRoutes.ts | 9 +- .../ui-elements/layout/examples/Default.vue | 38 +++++++++ .../page-config/ui-elements/layout/index.ts | 7 ++ .../ui-elements/layout/translations/en.json | 3 + packages/nuxt/src/config/components.ts | 1 + packages/ui/src/components/index.ts | 1 + .../ui/src/components/va-layout/VaLayout.vue | 82 +++++++++++++++---- .../va-layout/hooks/useGridTemplateArea.ts | 64 +++++++++++++++ packages/ui/src/components/va-layout/index.ts | 4 + .../ui/src/services/vue-plugin/components.ts | 1 + 10 files changed, 191 insertions(+), 19 deletions(-) create mode 100644 packages/docs/page-config/ui-elements/layout/examples/Default.vue create mode 100644 packages/docs/page-config/ui-elements/layout/index.ts create mode 100644 packages/docs/page-config/ui-elements/layout/translations/en.json create mode 100644 packages/ui/src/components/va-layout/hooks/useGridTemplateArea.ts diff --git a/packages/docs/page-config/navigationRoutes.ts b/packages/docs/page-config/navigationRoutes.ts index 5f5f0f8135..52a29da2b9 100644 --- a/packages/docs/page-config/navigationRoutes.ts +++ b/packages/docs/page-config/navigationRoutes.ts @@ -277,9 +277,16 @@ export const navigationRoutes: NavigationRoute[] = [ name: "color-input", displayName: "menu.colorInput", }, - + { category: 'menu.categories.layout', + name: 'layout', + displayName: 'menu.layout', + meta: { + badge: 'new', + } + }, + { name: 'aspect-ratio', displayName: 'menu.aspectRatio', meta: { diff --git a/packages/docs/page-config/ui-elements/layout/examples/Default.vue b/packages/docs/page-config/ui-elements/layout/examples/Default.vue new file mode 100644 index 0000000000..fe5d528abf --- /dev/null +++ b/packages/docs/page-config/ui-elements/layout/examples/Default.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/packages/docs/page-config/ui-elements/layout/index.ts b/packages/docs/page-config/ui-elements/layout/index.ts new file mode 100644 index 0000000000..6ff1209906 --- /dev/null +++ b/packages/docs/page-config/ui-elements/layout/index.ts @@ -0,0 +1,7 @@ +export default definePageConfig({ + blocks: [ + block.title('Layout.title'), + + block.example('Default') + ] +}) \ No newline at end of file diff --git a/packages/docs/page-config/ui-elements/layout/translations/en.json b/packages/docs/page-config/ui-elements/layout/translations/en.json new file mode 100644 index 0000000000..03553211af --- /dev/null +++ b/packages/docs/page-config/ui-elements/layout/translations/en.json @@ -0,0 +1,3 @@ +{ + "title": "Layout" +} \ No newline at end of file diff --git a/packages/nuxt/src/config/components.ts b/packages/nuxt/src/config/components.ts index afbb1b11d8..00ab8c3fa5 100644 --- a/packages/nuxt/src/config/components.ts +++ b/packages/nuxt/src/config/components.ts @@ -43,6 +43,7 @@ export default [ 'VaInfiniteScroll', 'VaInnerLoading', 'VaInput', + 'VaLayout', 'VaList', 'VaListItem', 'VaListItemLabel', diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 0b5b94091f..a48a501aea 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -47,6 +47,7 @@ export * from './va-image' export * from './va-infinite-scroll' export * from './va-inner-loading' export * from './va-input' +export * from './va-layout' export * from './va-list' export * from './va-modal' export * from './va-navbar' diff --git a/packages/ui/src/components/va-layout/VaLayout.vue b/packages/ui/src/components/va-layout/VaLayout.vue index 673da68b03..7cbfa1e2bc 100644 --- a/packages/ui/src/components/va-layout/VaLayout.vue +++ b/packages/ui/src/components/va-layout/VaLayout.vue @@ -1,6 +1,23 @@ + + \ No newline at end of file diff --git a/packages/docs/page-config/ui-elements/layout/examples/Order.vue b/packages/docs/page-config/ui-elements/layout/examples/Order.vue new file mode 100644 index 0000000000..c3b89d26b7 --- /dev/null +++ b/packages/docs/page-config/ui-elements/layout/examples/Order.vue @@ -0,0 +1,67 @@ + + + \ No newline at end of file diff --git a/packages/docs/page-config/ui-elements/layout/index.ts b/packages/docs/page-config/ui-elements/layout/index.ts index 6ff1209906..7820740ce7 100644 --- a/packages/docs/page-config/ui-elements/layout/index.ts +++ b/packages/docs/page-config/ui-elements/layout/index.ts @@ -2,6 +2,8 @@ export default definePageConfig({ blocks: [ block.title('Layout.title'), - block.example('Default') + block.example('Default'), + block.example('AllSlots'), + block.example('Order'), ] }) \ No newline at end of file diff --git a/packages/ui/src/components/va-layout/VaLayout.demo.vue b/packages/ui/src/components/va-layout/VaLayout.demo.vue index ea3041bcf6..3a2bbf80ae 100644 --- a/packages/ui/src/components/va-layout/VaLayout.demo.vue +++ b/packages/ui/src/components/va-layout/VaLayout.demo.vue @@ -61,5 +61,65 @@ const state = reactive({ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/ui/src/components/va-layout/VaLayout.vue b/packages/ui/src/components/va-layout/VaLayout.vue index 7cbfa1e2bc..0173a01bf7 100644 --- a/packages/ui/src/components/va-layout/VaLayout.vue +++ b/packages/ui/src/components/va-layout/VaLayout.vue @@ -1,5 +1,4 @@ @@ -69,8 +54,8 @@ export default defineComponent({ From fad92d78e167b2d3b461d1feb8f2059b07da64bb Mon Sep 17 00:00:00 2001 From: Maksim Nedoshev Date: Sun, 9 Jul 2023 12:39:23 +0300 Subject: [PATCH 4/9] feat: layout with animations --- .../components/va-layout/VaLayout.demo.vue | 26 +++++++++++++++++++ .../ui/src/components/va-layout/VaLayout.vue | 14 +++++----- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/packages/ui/src/components/va-layout/VaLayout.demo.vue b/packages/ui/src/components/va-layout/VaLayout.demo.vue index 3a2bbf80ae..302d0570b3 100644 --- a/packages/ui/src/components/va-layout/VaLayout.demo.vue +++ b/packages/ui/src/components/va-layout/VaLayout.demo.vue @@ -121,5 +121,31 @@ const state = reactive({ + + + + + + + diff --git a/packages/ui/src/components/va-layout/VaLayout.vue b/packages/ui/src/components/va-layout/VaLayout.vue index 0173a01bf7..06d3531581 100644 --- a/packages/ui/src/components/va-layout/VaLayout.vue +++ b/packages/ui/src/components/va-layout/VaLayout.vue @@ -34,16 +34,16 @@ export default defineComponent({ templateArea: useGridTemplateArea(props), verticalTemplate: computed(() => { return [ - slots.top && 'min-content', + slots.top ? 'min-content' : '0fr', '1fr', - slots.bottom && 'min-content', + slots.bottom ? 'min-content' : '0fr', ].filter(Boolean).join(' ') }), horizontalTemplate: computed(() => { return [ - slots.left && 'min-content', + slots.left ? 'min-content' : '0fr', '1fr', - slots.right && 'min-content', + slots.right ? 'min-content' : '0fr', ].filter(Boolean).join(' ') }), } @@ -54,8 +54,8 @@ export default defineComponent({ From d4496c9a39c70519f4c7a040e30573a8aa3b214f Mon Sep 17 00:00:00 2001 From: Maksim Nedoshev Date: Sun, 9 Jul 2023 13:53:42 +0300 Subject: [PATCH 6/9] feat(layout): use better prop config --- .../components/va-layout/VaLayout.demo.vue | 184 +++++++++++++----- .../ui/src/components/va-layout/VaLayout.vue | 69 +++++-- .../va-layout/hooks/useGridTemplateArea.ts | 28 +-- .../components/va-layout/hooks/useLayout.ts | 30 +++ 4 files changed, 221 insertions(+), 90 deletions(-) create mode 100644 packages/ui/src/components/va-layout/hooks/useLayout.ts diff --git a/packages/ui/src/components/va-layout/VaLayout.demo.vue b/packages/ui/src/components/va-layout/VaLayout.demo.vue index 5becd1c229..5059e2bf65 100644 --- a/packages/ui/src/components/va-layout/VaLayout.demo.vue +++ b/packages/ui/src/components/va-layout/VaLayout.demo.vue @@ -8,33 +8,33 @@ const state = reactive({