aak-nuxt-base

0.0.3 • Public • Published

Nuxt3 Base Layer

📝 Состав слоя

image Pinia

image Quasar


📦 Давай начнем

  1. Install aak-nuxt-base as project dependency:
npm i aak-nuxt-base # npm
yarn add aak-nuxt-base # yarn
  1. Add it to the extends section of your nuxt.config:
export default defineNuxtConfig({
  extends: [['aak-nuxt-base', { install: true }]],
})
  1. Тебе только осталось настроить твой runtimeConfig согласно доке в пакете aak-nuxt-auth-fetch

🚀 Как использовать

  1. В App.vue добавляем
<template>
  <NuxtLayout :name="'base'">
    <template #logo>
      <headerLogo />
    </template>
    <template #pages>
      <NuxtPage />
    </template>
  </NuxtLayout>
</template>
  • Если у тебя еще не прикручена авторизация то нужно добавить authDev в runtimeConfig
runtimeConfig: {
    public: {
      authDev: true,
    },
  },
  1. Заголовок приложения берется из runtimeConfig.public.aakNuxt.keycloakOptions.clientIdAlias

🖼️ Кастомная тема для твоего Quasar

Должно получиться, что то типо этого:

    brand: {
      primary: '#47a150',
      secondary: '#26A69A',
      accent: '#9C27B0',

      dark: '#1d1d1d',
      'dark-page': '#121212',

      positive: '#21BA45',
      negative: '#C10015',
      info: '#31CCEC',
      warning: '#F2C037'
    }

Далее копируешь это в свой nuxt.config.ts

quasar: {
    config: {
      brand: {
        primary: '#47a150',
        secondary: '#26A69A',
        accent: '#9C27B0',
  
        dark: '#1d1d1d',
        'dark-page': '#121212',
  
        positive: '#21BA45',
        negative: '#C10015',
        info: '#31CCEC',
        warning: '#F2C037'
      }
    },
  },

🧩 Преднастроены компоненты Quasar

  • QButton

size: "12px",
color: "primary",
  • QSelect

optionLabel: "name",
optionValue: "id",
clearable: false,
dense: true,
clearIcon: "clear",
disable: false,
useInput: false,
rules: undefined,
inputDebounce: 300,

📰 API Pages

Что бы твоя страница, корректно отображалась в меню, нужно настроить definePageMeta

/**
 * title - Название страницы
 * use - Используется в меню: boolean
 * submenu - Является подменю:? boolean
 * order - Порядок отображения:? number
 * icon - Объект иконки:? {name: string; color?: string}
 * accessScopes - Доступные роли:? string[]
 */

definePageMeta({
  title: "Название страницы",
  menu: {
    submenu: false,
    use: true,
    order: 21,
    icon: {
      name: "rowing",
      color: "blue",
    },
  },
  accessScopes: ["user", "admin"],
});

🔏 API Ограничение контерна по ролям

На стрнице указываются роли в accessScopes, для которых просмотр разрешен. Роли сравниваются с данными из токена через предоставление информации в $userLMA().groups

Dev режим

Если нужно проверить без токена, перечисляем роли в baseDevAccessScopes:

runtimeConfig: {
    public: {
      baseDevAccessScopes : ['my-test-role'],
    }
}

📚 API Utils

Слой предоставляет следующие функции через объект AAK

AAK.arr - работа с массивами

AAK.arr.findByField
AAK.arr.filterByField
AAK.arr.getIndexByField
AAK.arr.sortByField

AAK.obj - работа с объектами

AAK.obj.deepClone
AAK.obj.comparingFields

AAK.date - работа с датами

AAK.date.formatDateFromDjangoToDateTimeString
AAK.date.formatDateStringToDate
AAK.date.validateDateStringForFormat

AAK.confirmDialog - Диалоговое окно подтверждения

AAK.notify - Уведомления

AAK.notify.success
AAK.notify.info
AAK.notify.warning
AAK.notify.error

🛠️ Для разработчика

  1. Клонируй проект к себе для локальной разработки https://gitlab.lama.tomsk.ru/nuxtlayers/base.git
  2. Создаем свою ветку и все изменения производим в ней.
  3. В корневой папке выполни npm i
  4. Функции AAK описываются в файле baseUtils.ts в папке utils
  5. Базовые типы описываются в файле baseTypes.ts в папке utils
  6. Перднастройка компонентов Quasar в nuxt.config.ts в блоке quasar - components - defaults
📢 Публикация
  1. Добавь в доку описание того, что добавил.
  2. В package.json в блоке scripts есть команды:
    • publish-patch - Добавление версии 0.0.1 -> 0.0.2 Если было незначительное расширение функционала.
    • publish-minor - Добавление версии 0.1.0 -> 0.2.0 Если было значительное расширение функционала, без нарушения обратной совместимости.
    • publish-major - Добавление версии 1.0.0 -> 2.0.0 ❗ Если было изменение функционала, с нарушения обратной совместимости.

Readme

Keywords

none

Package Sidebar

Install

npm i aak-nuxt-base

Weekly Downloads

3

Version

0.0.3

License

none

Unpacked Size

33.1 kB

Total Files

33

Last publish

Collaborators

  • amir.almukhametov