├── .commitlintrc.cjs ├── .eslintignore ├── .eslintrc.cjs ├── .github ├── FUNDING.yml └── workflows │ ├── ci.yml │ ├── publish.yml │ └── release.yml ├── .gitignore ├── .husky ├── .gitignore ├── .lintstagedrc ├── commit-msg ├── common.sh └── pre-commit ├── .markdownlint.json ├── .prettierignore ├── .prettierrc.cjs ├── .stylelintignore ├── .stylelintrc.cjs ├── .vscode ├── extensions.json └── settings.json ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── dev-server ├── app.vue ├── global.d.ts ├── index.html ├── main.ts ├── package.json ├── router.ts ├── tsconfig.json └── vite.config.ts ├── docs ├── .vitepress │ ├── config.ts │ └── theme │ │ ├── index.ts │ │ └── style.css ├── demos │ ├── basic.vue │ ├── bounded.vue │ ├── drag-from-outside.vue │ ├── drag-resize-handler.vue │ ├── dynamic-add-remove.vue │ ├── events.vue │ ├── mirrored.vue │ ├── multiple-grids.vue │ ├── prevent-collision.vue │ ├── responsive-layouts.vue │ ├── responsive.vue │ ├── styling-grid-lines.vue │ └── styling-placeholder.vue ├── example │ ├── basic.md │ ├── bounded.md │ ├── drag-from-outside.md │ ├── drag-resize-handler.md │ ├── dynamic-add-remove.md │ ├── events.md │ ├── mirrored.md │ ├── multiple-grids.md │ ├── prevent-collision.md │ ├── responsive-layouts.md │ ├── responsive.md │ ├── styling-grid-lines.md │ └── styling-placeholder.md ├── guide │ ├── custom-style.md │ ├── events.md │ ├── installation.md │ ├── properties.md │ └── usage.md ├── index.md ├── package.json ├── public │ └── grid-layout-plus.svg ├── tsconfig.json └── zh │ ├── example │ ├── basic.md │ ├── bounded.md │ ├── drag-from-outside.md │ ├── drag-resize-handler.md │ ├── dynamic-add-remove.md │ ├── events.md │ ├── mirrored.md │ ├── multiple-grids.md │ ├── prevent-collision.md │ ├── responsive-layouts.md │ ├── responsive.md │ ├── styling-grid-lines.md │ └── styling-placeholder.md │ ├── guide │ ├── custom-style.md │ ├── events.md │ ├── installation.md │ ├── properties.md │ └── usage.md │ └── index.md ├── netlify.toml ├── package.json ├── patches └── conventional-changelog-angular@7.0.0.patch ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── scripts ├── build.ts ├── publish.ts ├── release.ts ├── test-setup.ts ├── tsconfig.json └── utils.ts ├── src ├── components │ ├── grid-item.vue │ ├── grid-layout.vue │ └── types.ts ├── global.d.ts ├── helpers │ ├── common.ts │ ├── dom.ts │ ├── draggable.ts │ ├── responsive.ts │ └── types.ts ├── index.ts └── style.scss ├── tests ├── grid-item.spec.tsx └── helpers.spec.tsx ├── tsconfig.json ├── vite.config.ts ├── vite.full.config.ts └── vitest.config.ts /.commitlintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@vexip-ui/commitlint-config'] 3 | } 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | es 3 | lib 4 | node_modules 5 | public 6 | cache 7 | .husky 8 | 9 | .*rc.js 10 | .*rc.cjs 11 | *.config.js 12 | *.css 13 | *.pcss 14 | *.scss 15 | *.svg -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | const { defineConfig } = require('eslint-define-config') 2 | 3 | module.exports = defineConfig({ 4 | extends: ['@vexip-ui/eslint-config'], 5 | root: true, 6 | rules: { 7 | '@typescript-eslint/no-use-before-define': 'off', 8 | 'vue/no-v-html': 'off', 9 | 'vue/no-textarea-mustache': 'off', 10 | '@typescript-eslint/comma-dangle': ['error', 'always-multiline'], 11 | }, 12 | overrides: [ 13 | { 14 | files: ['src/**/*.vue'], 15 | rules: { 16 | '@typescript-eslint/no-unused-vars': 'error', 17 | '@typescript-eslint/consistent-type-imports': [ 18 | 'error', 19 | { 20 | prefer: 'type-imports', 21 | disallowTypeAnnotations: false 22 | } 23 | ], 24 | 'vue/no-restricted-block': [ 25 | 'error', 26 | { 27 | element: '/[^(template|script)]/', 28 | message: 'Do not use blocks other than