diff --git a/.eslintrc.js b/.eslintrc.js index 9aed90aa..9a8ebde1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,15 +9,24 @@ module.exports = { }, }, extends: [ - 'plugin:vue/vue3-essential', 'eslint:recommended', - '@vue/typescript/recommended', - '@vue/prettier', - '@vue/prettier/@typescript-eslint', + 'plugin:vue/vue3-recommended', + 'plugin:prettier/recommended', + 'plugin:unicorn/recommended', + '@vue/eslint-config-typescript/recommended', + '@vue/eslint-config-prettier', ], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'unicorn/filename-case': 'off', + 'unicorn/no-array-for-each': 'off', + 'unicorn/no-null': 'off', + 'unicorn/prefer-dom-node-append': 'off', + 'unicorn/prefer-export-from': 'off', + 'unicorn/prefer-query-selector': 'off', + 'unicorn/prevent-abbreviations': 'off', + 'vue/require-default-prop': 'off', }, overrides: [ { diff --git a/.github/.stale.yml b/.github/.stale.yml new file mode 100644 index 00000000..c2b8bcee --- /dev/null +++ b/.github/.stale.yml @@ -0,0 +1,17 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 360 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 63% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md index 05197705..64da8777 100644 --- a/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members Examples of unacceptable behavior by participants include: -- The use of sexualized language or imagery and unwelcome sexual attention or advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a professional setting +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities @@ -34,10 +34,13 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at support@coreui.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 1.4, available at +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ \ No newline at end of file diff --git a/.github/COMMIT_CONVENTION.md b/.github/COMMIT_CONVENTION.md index fc436da5..261c7ca2 100644 --- a/.github/COMMIT_CONVENTION.md +++ b/.github/COMMIT_CONVENTION.md @@ -10,10 +10,10 @@ Appears under "Features" header, `compiler` subheader: feat(compiler): add 'comments' option ``` -Appears under "Bug Fixes" header, `v-model` subheader, with a link to issue #28: +Appears under "Bug Fixes" header, `sidebar` subheader, with a link to issue #28: ``` -fix(v-model): handle events on blur +fix(sidebar): handle events on blur close #28 ``` diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c3072cc4..77fd8019 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -89,11 +89,11 @@ included in the project: ```bash # Clone your fork of the repo into the current directory - git clone https://github.com//coreui.git + git clone https://github.com//coreui-react.git # Navigate to the newly cloned directory cd coreui # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/coreui/coreui.git + git remote add upstream https://github.com/coreui/coreui-vue.git ``` 2. If you cloned a while ago, get the latest changes from upstream: @@ -165,13 +165,14 @@ Please use following commit message format. - When feasible, default color palettes should comply with [WCAG color contrast guidelines](http://www.w3.org/TR/WCAG20/#visual-audio-contrast). - Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](http://a11yproject.com/posts/never-remove-css-outlines) for more details. -### JS / TS / Vue +### JS - No semicolons (in client-side JS) - 2 spaces (no tabs) - strict mode - "Attractive" +- Don't use [jQuery event alias convenience methods](https://github.com/jquery/jquery/blob/master/src/event/alias.js) (such as `$().focus()`). Instead, use [`$().trigger(eventType, ...)`](http://api.jquery.com/trigger/) or [`$().on(eventType, ...)`](http://api.jquery.com/on/), depending on whether you're firing an event or listening for an event. (For example, `$().trigger('focus')` or `$().on('focus', function (event) { /* handle focus event */ })`) We do this to be compatible with custom builds of jQuery where the event aliases module has been excluded. ## License -By contributing your code, you agree to license your contribution under the [MIT License](LICENSE). +By contributing your code, you agree to license your contribution under the [MIT License](LICENSE). \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index ddf49052..544d42d2 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,4 @@ # These are supported funding model platforms -custom: "https://coreui.io/pro/" +custom: "https://coreui.io/pricing/?support=true" +open_collective: coreui diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index d82c8578..7600be55 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Tell us about a bug you may have identified in CoreUI. +about: Tell us about a bug you may have identified in Bootstrap. title: '' labels: '' assignees: '' diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 5ac94f74..00000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,4 +0,0 @@ -contact_links: - - name: Ask a question - url: https://community.coreui.io/ - about: Ask and discuss questions with other CoreUI community members diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md index f368e746..74584c95 100644 --- a/.github/SUPPORT.md +++ b/.github/SUPPORT.md @@ -6,5 +6,4 @@ See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports. For general troubleshooting or help getting started: -- Join [the official community](https://community.coreui.io/). -- Ask and explore Stack Overflow with the [`coreui`](https://stackoverflow.com/questions/tagged/coreui) tag. +- Join [GitHub Discussions](https://github.com/coreui/coreui-vue/discussions). diff --git a/.github/workflows/daily-project-check.yml b/.github/workflows/daily-project-check.yml index dcfb1aa4..5776ce77 100644 --- a/.github/workflows/daily-project-check.yml +++ b/.github/workflows/daily-project-check.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [12.x] os: [ubuntu-latest, windows-latest, macOS-latest] steps: @@ -21,9 +21,11 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - name: npm install, build, test:coverage and lint + - name: npm install, build, test and lint run: | npm i - npm run release + npm run build + npm run jest:test + npm run lint env: CI: true diff --git a/.github/workflows/project-check.yml b/.github/workflows/project-check.yml index dd849d89..854186a4 100644 --- a/.github/workflows/project-check.yml +++ b/.github/workflows/project-check.yml @@ -5,6 +5,8 @@ on: branches: - master pull_request: + branches: + - master jobs: build: @@ -13,7 +15,7 @@ jobs: strategy: matrix: - node-version: [14.x] + node-version: [12.x] os: [ubuntu-latest, windows-latest, macOS-latest] steps: @@ -22,9 +24,11 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - name: npm install, build, test:coverage and lint + - name: npm install, build, test and lint run: | npm i - npm run release + npm run build + npm run jest:test + npm run lint env: CI: true diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..93e2ebb1 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,27 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '17 14 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions' + stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions' + stale-issue-label: 'no-issue-activity' + stale-pr-label: 'no-pr-activity' diff --git a/.gitignore b/.gitignore index cee4e370..054fb7a7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,42 @@ -cache/ +# Folders to ignore coverage/ dist/ node_modules/ -temp/ -docs/.vuepress/.cache/ -docs/.vuepress/.temp/ +yarn.lock + +# local env files +.env.local +.env.*.local + +# OS or Editor folders +._* +.cache +.temp +.DS_Store +.idea +.project +.settings +.tmproj +*.esproj +*.sublime-project +*.sublime-workspace +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +nbproject +Thumbs.db +/.vscode/ + +# Numerous always-ignore extensions +*.diff +*.err +*.log +*.orig +*.rej +*.swo +*.swp +*.vi +*.zip +*~ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..0aa07a72 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,8 @@ +[submodule "packages/coreui-icons-vue"] + path = packages/coreui-icons-vue + url = https://github.com/coreui/coreui-icons-vue.git + branch = main +[submodule "packages/coreui-vue-chartjs"] + path = packages/coreui-vue-chartjs + url = https://github.com/coreui/coreui-vue-chartjs.git + branch = main diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index b08b1844..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,282 +0,0 @@ -# Changelog - - - -## [3.2.11](https://github.com/coreui/coreui-vue/compare/3.2.9...3.2.11) - -> 21 May 2021 - -### Changed - -- chore: dependencies update [`da10ba8`](https://github.com/coreui/coreui-vue/commit/da10ba852759a3b7e96cd8ca848e91439d457c38) -- test(CDataTable): snapshot update [`d1198cd`](https://github.com/coreui/coreui-vue/commit/d1198cd331038d366fc4bedb223c442310f900b0) -- test(CDropdown): emits click on split button click [`807eba6`](https://github.com/coreui/coreui-vue/commit/807eba6771d4d8e37ec4dbe4c940491c3b937654) -- Add new function to emit on splitButtonPress [`adba664`](https://github.com/coreui/coreui-vue/commit/adba664fdd16e623f2b40cae1ff9876bf75ef23c) -- fix(CDataTable): rtl margins for labels and cleaner icon [`578a76c`](https://github.com/coreui/coreui-vue/commit/578a76cb1b18ca9292ea6be0b10633dc86dd3e39) -- feat: additional dialog classes property for CModal.vue [`0253d98`](https://github.com/coreui/coreui-vue/commit/0253d98594528cf19d734bfdaee4d7b6edce7777) -- chore: 3.2.11 version release [`f0c5210`](https://github.com/coreui/coreui-vue/commit/f0c5210816e9fa1b798c72ba6faac3bfe22d6907) -- Fix RTL direction margin [`3b9ea32`](https://github.com/coreui/coreui-vue/commit/3b9ea32f3ab8751be8b52b3d6f1ac6d6d09ba0b7) -- fix(CModal): add scrollable prop to index.d.ts [`f9d15ba`](https://github.com/coreui/coreui-vue/commit/f9d15bab5cb7fac519865af9c504098242687b28) - - -### Fixed - -- feat(CDropdown): emit event on split dropdown button click - close #134 close #135 - thanks @rabrowne85 [`#134`](https://github.com/coreui/coreui-vue/issues/134) [`#135`](https://github.com/coreui/coreui-vue/issues/135) -- fix(CDataTable): striped style not working with details slot [`#127`](https://github.com/coreui/coreui-vue/issues/127) [`#77`](https://github.com/coreui/coreui-vue/issues/77) -- fix(CDataTable): v-else without v-if breaking Parcel - thanks @adamshaylor [`#143`](https://github.com/coreui/coreui-vue/issues/143) [`#144`](https://github.com/coreui/coreui-vue/issues/144) -- Merge fix(CDataTable): rtl margins - closes #145 thanks @seddighi78 [`#145`](https://github.com/coreui/coreui-vue/issues/145) -## [3.2.9](https://github.com/coreui/coreui-vue/compare/3.2.7...3.2.9) - -> 11 March 2021 - -### Changed - -- chore: dependencies update [`58808fc`](https://github.com/coreui/coreui-vue/commit/58808fca45cd275ea12db7a0713746af521ee4ca) -- chore: 3.2.9 version release [`9ffeb6a`](https://github.com/coreui/coreui-vue/commit/9ffeb6add72ed77a43fd8a4c16d4dc7792872b07) -- chore(workflows): update [`bb86013`](https://github.com/coreui/coreui-vue/commit/bb86013f324c51b810ee1af39a86a1f1d662830a) -- chore: merge user pull request #141 [`45483c5`](https://github.com/coreui/coreui-vue/commit/45483c5afabb7f41ce2c4dcfcd995d92b6e93167) -- fix(CDataTable): fixed issue with loading/no-items-slot [`91024bc`](https://github.com/coreui/coreui-vue/commit/91024bc759c9b0b17ab28dd2739bd9a2b1023db3) - -## [3.2.7](https://github.com/coreui/coreui-vue/compare/3.1.6...3.2.7) - -> 17 December 2020 - -### Changed - -- chore: 3.2.7 version release [`94bb062`](https://github.com/coreui/coreui-vue/commit/94bb062091ff4c7bf3d3e22de8237f3aa1640a7b) -- fix(CToast): add missing color prop [`1401dee`](https://github.com/coreui/coreui-vue/commit/1401dee57c1e7fea8ee0c0a4045294931d402a0e) -- chore: dependencies udate [`b54b77f`](https://github.com/coreui/coreui-vue/commit/b54b77fc718a83bd192beb2ef5b75c728ae9c0d9) -- fix(CToast): rtl margins for header and CButtonClose [`0d0c6c0`](https://github.com/coreui/coreui-vue/commit/0d0c6c0168d7495e26cc36f506c65855900560d5) - -## [3.1.6](https://github.com/coreui/coreui-vue/compare/3.1.5...3.1.6) - -> 11 December 2020 - -### Changed - -- fix(CTooltip): tooltip shows up on title update [`6d1ba6c`](https://github.com/coreui/coreui-vue/commit/6d1ba6c4a0512466707ca07166e8525e0e650786) -- chore: 3.1.6 version release [`85dfea5`](https://github.com/coreui/coreui-vue/commit/85dfea53e8b6dd2e2179ca1b08be2b4d290a2522) - -## [3.1.5](https://github.com/coreui/coreui-vue/compare/3.1.4...3.1.5) - -> 7 December 2020 - -### Changed - -- chore: dependencies update [`dd02660`](https://github.com/coreui/coreui-vue/commit/dd02660767c8dc64bd9d50e77a70df685df3f2d3) -- chore: project checks update [`599dc2e`](https://github.com/coreui/coreui-vue/commit/599dc2e09a012c234239b39424a77917404a356d) -- fix(CTooltip): add missing updateTitle functionality [`ae9d901`](https://github.com/coreui/coreui-vue/commit/ae9d90113dab4253e84ee60bb729d7f9b1b0992a) -- chore: 3.1.5 version release [`9d64c71`](https://github.com/coreui/coreui-vue/commit/9d64c71d249b43d644a7570e91d61889839787c5) - -## [3.1.4](https://github.com/coreui/coreui-vue/compare/3.1.3...3.1.4) - -> 26 October 2020 - -### Changed - -- chore: dependencies update [`1054b62`](https://github.com/coreui/coreui-vue/commit/1054b62a757d13200e9d09f6e8e7795515bfecff) -- chore: changelog fix [`f960204`](https://github.com/coreui/coreui-vue/commit/f960204203bedf2bb1505e92a24a815ad4e025f2) -- fix: Add onKey to index.d.ts [`d5de0bf`](https://github.com/coreui/coreui-vue/commit/d5de0bf7747e9c79c47c3e7c854c751b1e9fc074) - -## [3.1.3](https://github.com/coreui/coreui-vue/compare/3.1.2...3.1.3) - -> 26 October 2020 - -### Changed - -- fix: CCol and CModal [`539bc2e`](https://github.com/coreui/coreui-vue/commit/539bc2ecd96b01c1a7d62a9d1f6966fc84d504c9) -- Update ISSUE_TEMPLATE.md [`898c9fa`](https://github.com/coreui/coreui-vue/commit/898c9fa54547237011330b87515f66b2f06a4bc6) -- Update ISSUE_TEMPLATE.md [`93211e0`](https://github.com/coreui/coreui-vue/commit/93211e0245c70baf70b48f9f92733d080791a3af) -- chore: 3.1.3 version release [`9c4da02`](https://github.com/coreui/coreui-vue/commit/9c4da021c48d66be632621a1ecf4fbf98fab7002) - -## [3.1.2](https://github.com/coreui/coreui-vue/compare/3.1.1...3.1.2) - -> 24 July 2020 - -### Changed - -- chore: 3.1.2 version release [`3c8c082`](https://github.com/coreui/coreui-vue/commit/3c8c082f61f2daaa367c84ff6443fc0a207600d8) -- fix: CDataTable disable auto removing columnFilter #113 [`f2c6ebe`](https://github.com/coreui/coreui-vue/commit/f2c6ebe6fccbf9de9667351aabec76a3f04de0bd) - -## [3.1.1](https://github.com/coreui/coreui-vue/compare/3.1.0...3.1.1) - -> 8 July 2020 - -### Changed - -- chore: 3.1.1 version release: update dependencies and changelog [`4fff8d2`](https://github.com/coreui/coreui-vue/commit/4fff8d27eb00382856f5a195f95da48c7ac62be3) -- chore: update changelog to 3.1.0 [`a504c71`](https://github.com/coreui/coreui-vue/commit/a504c71c8649bd9fd2241717ce55e17faf9aa323) -- fix: CModal: 'update:show' event - add third argument 'accept' #92 [`a91e4fd`](https://github.com/coreui/coreui-vue/commit/a91e4fdcfce3d0f88e239526f81b50699b2900f1) - -## [3.1.0](https://github.com/coreui/coreui-vue/compare/3.0.12...3.1.0) - -> 3 July 2020 - -### Changed - -- chore: 3.1.0 version release: update dependencies and changelog [`b95424f`](https://github.com/coreui/coreui-vue/commit/b95424f5f401e0a6698ec1afa5b73ab787fb4f26) -- feat: CDataTable: replace cleaner prop object with slot [`8976054`](https://github.com/coreui/coreui-vue/commit/89760547ca1a029588dbb8a8f18d05f1127f798a) -- feat: CDataTable: add cleaner prop, update @coreui/icons [`cf58305`](https://github.com/coreui/coreui-vue/commit/cf583051863dfec9472bd2c449b4e29da6e3b355) -- feat: CProgress: add size prop [`a056973`](https://github.com/coreui/coreui-vue/commit/a056973fbc22998b12b825d1f590f8df27ce108b) -- fix: CDataTable: add aria-label attributes to inputs [`ede894f`](https://github.com/coreui/coreui-vue/commit/ede894f2fb695462e21ebe639c6cfebcddec1731) -- feat: CListGroup: add accent functionality [`94256a1`](https://github.com/coreui/coreui-vue/commit/94256a16d98912f70007abc27956d0bbbb77c4b5) -- chore: fix VSCode hints generator [`433a574`](https://github.com/coreui/coreui-vue/commit/433a574335701865a167a3f7817055d49e390140) -- fix: CSidebarNavItem: fix icon computation [`02d5ffd`](https://github.com/coreui/coreui-vue/commit/02d5ffd2852a57af61f22afdf14ff10c31cc877a) -- feat: CNav component: add tag prop and vertical breakpoint option [`9aa2400`](https://github.com/coreui/coreui-vue/commit/9aa2400218db0ae2d0e54f8184236ed7bce979ee) -- feat: add CListGroupItemDivider wrapper component [`1a64352`](https://github.com/coreui/coreui-vue/commit/1a643520251c1630a001ad3c94d67acf8f37e2e6) -- feat: CSidebarNavItem: add color prop [`3bb6c1f`](https://github.com/coreui/coreui-vue/commit/3bb6c1f366d57aadd73853619361f8f8e7df2217) -- chore: update eslint rules and snapshots [`833d98a`](https://github.com/coreui/coreui-vue/commit/833d98a1ee004e9adb7ac121c773ea149186d20a) -- fix: CDropdown: fix split button dropdowns positioning [`7bc7f96`](https://github.com/coreui/coreui-vue/commit/7bc7f964a5e7301891eade4cfd864af93ff90334) -- chore: update workflows [`04efc0f`](https://github.com/coreui/coreui-vue/commit/04efc0f56e2279ab4d8254f4bc1b6184a663f57b) -- refactor: CPagination: correct item key assignment [`2b1828c`](https://github.com/coreui/coreui-vue/commit/2b1828c05e3d39152051384e3f4289b57467d126) -- chore: update snapshot [`5fa9531`](https://github.com/coreui/coreui-vue/commit/5fa95318937cab2a9e082103a6bbbc83cecd1b39) -- feat: CWidgetIcon: add footer slot [`0e63428`](https://github.com/coreui/coreui-vue/commit/0e63428fccf3e21598750186b4378fd94c3e3815) - -## [3.0.12](https://github.com/coreui/coreui-vue/compare/3.0.11...3.0.12) - -> 2 June 2020 - -### Changed - -- chore: 3.0.12 release: fix dependency @coreui/icons-vue [`a3c90f3`](https://github.com/coreui/coreui-vue/commit/a3c90f3f00392206cf73d8f100969d0a5f257642) - -## [3.0.11](https://github.com/coreui/coreui-vue/compare/3.0.10...3.0.11) - -> 28 May 2020 - -### Changed - -- chore: 3.0.11 release: update packages [`0b4e388`](https://github.com/coreui/coreui-vue/commit/0b4e388ccc705760e4e7f01f2344055e3277e5af) -- chore: update eslint-plugin-vue [`95d59a1`](https://github.com/coreui/coreui-vue/commit/95d59a1f224c093f2e497518ba7fdf818e7e6c68) -- chore: downgrade eslint [`dd5544e`](https://github.com/coreui/coreui-vue/commit/dd5544e3710773d0bfe4da665b1cc899b5bfbcdf) -- chore: lock @vue/test-utils version [`2c954b5`](https://github.com/coreui/coreui-vue/commit/2c954b51ac3636709c910d61f13882ec7f8e1362) -- fix: CSelect: change input event to change, due to IE/edge support lack [`ef84a23`](https://github.com/coreui/coreui-vue/commit/ef84a23ca4a5f46c6854c8438d8a096505f14166) - -## [3.0.10](https://github.com/coreui/coreui-vue/compare/3.0.9...3.0.10) - -> 19 May 2020 - -### Changed - -- chore: 3.0.10 release: fix typings [`98f53db`](https://github.com/coreui/coreui-vue/commit/98f53db11e268495e28cd1e0e1fac7d2fabf54af) - -## [3.0.9](https://github.com/coreui/coreui-vue/compare/3.0.8...3.0.9) - -> 18 May 2020 - -### Changed - -- fix: update package-lock.json [`7062b4a`](https://github.com/coreui/coreui-vue/commit/7062b4a5eba014b812923ede70b108b297097ef9) -- chore: 3.0.9 release: update dependencies, fix typings [`2bd63ff`](https://github.com/coreui/coreui-vue/commit/2bd63ffd32b3cfb3210b7401122645684996af87) -- fix: CTooltip, CPopover: add legacy styles [`f3e81d5`](https://github.com/coreui/coreui-vue/commit/f3e81d5969f03417cde2505334a01935795dd900) -- test: update [`080843f`](https://github.com/coreui/coreui-vue/commit/080843fbfb90474b2b647910771fdb748f0c37d6) -- fix: downgrade eslint [`7acfab3`](https://github.com/coreui/coreui-vue/commit/7acfab3ad53f18d4a918d4c1cc23f1548873fd8b) -- fix: fix hints generating script [`5bfe25c`](https://github.com/coreui/coreui-vue/commit/5bfe25c0a87544506a2a27dcfc6e6a446df62ec5) - -## [3.0.8](https://github.com/coreui/coreui-vue/compare/3.0.7...3.0.8) - -> 5 May 2020 - -### Changed - -- chore: 3.0.8 release [`40a6ca9`](https://github.com/coreui/coreui-vue/commit/40a6ca90ccc429f288ea738ebd1c56e8f63c7be9) -- fix: CSidebarNavItem: allow adding 'size' prop in 'icon' object #76 [`a1a8203`](https://github.com/coreui/coreui-vue/commit/a1a820385e8b2f190afa9c91628e9b1b0edf9fec) -- fix: CSidebarNavDropdown: allow adding 'size' prop in 'icon' object #76 [`30ae677`](https://github.com/coreui/coreui-vue/commit/30ae6774b1983486c986593ccca2b751f1864645) -- chore: update CSelect snapshot [`d5c600b`](https://github.com/coreui/coreui-vue/commit/d5c600b5d3f35b65ce216ac396db1a8be3fe21ee) -- fix: CSelect: fix assigning falsy value #83 [`00574cf`](https://github.com/coreui/coreui-vue/commit/00574cf03d6008d86d96a01237dfd316fcd96c08) -- fix: CSelect: allow restoring placeholder after reseting value [`02b0e5a`](https://github.com/coreui/coreui-vue/commit/02b0e5acf5ad4f90ee6f12949c0d695aee1b9d89) - -## [3.0.7](https://github.com/coreui/coreui-vue/compare/3.0.6...3.0.7) - -> 8 April 2020 - -### Changed - -- chore: 3.0.7 release - update dependencies [`44244fd`](https://github.com/coreui/coreui-vue/commit/44244fdb65b90d3a61e64fb30791df98292d3863) -- chore: 3.0.7 version release - update typings #80 [`58f3e45`](https://github.com/coreui/coreui-vue/commit/58f3e45f093e3284f8ff9c1a0afe26f00a6c60f3) - -## [3.0.6](https://github.com/coreui/coreui-vue/compare/3.0.5...3.0.6) - -> 7 April 2020 - -### Changed - -- chore: 3.0.6 release - update dependencies [`2c6927e`](https://github.com/coreui/coreui-vue/commit/2c6927e1dbc080a3f34b855235af773b1760056a) -- fix: CDataTable: fix header styles: [`603af02`](https://github.com/coreui/coreui-vue/commit/603af02123e9df76a3e8c1ab4740944f8ee02c89) -- fix: CDropdownItem: fix closing dropdown when item is router link #79 [`0492be9`](https://github.com/coreui/coreui-vue/commit/0492be948091b81eb6ec34322096ff60b35bc58d) -- feat: CDataTable, row-clicked event - add event object as argument [`89c1f8b`](https://github.com/coreui/coreui-vue/commit/89c1f8b70d3bc53507bae0a7940640bc500100f7) -- chore: CBadge: delete doubled classes [`4c29500`](https://github.com/coreui/coreui-vue/commit/4c29500a94c15120ccc00a8ff0d8b8af7af4e6a8) -- fix: CInputCheckbox: always render even empty label in custom mode [`f74ec0a`](https://github.com/coreui/coreui-vue/commit/f74ec0ad758e3a18666ba8f6d02146284f0e150a) -- fix: CDataTable: 'fixed' prop class name correction [`ea4a5bd`](https://github.com/coreui/coreui-vue/commit/ea4a5bdf43e5b1df1f59edb651bc4bf39f62edcb) - -## [3.0.5](https://github.com/coreui/coreui-vue/compare/3.0.4...3.0.5) - -> 18 March 2020 - -### Changed - -- chore: delete build files [`269128b`](https://github.com/coreui/coreui-vue/commit/269128bc3a34e12131aecd458dedc0976b07d451) -- chore: 3.0.5 version release - update dependencies [`dd2971f`](https://github.com/coreui/coreui-vue/commit/dd2971f31477e5bbb5ff510c5b34d0889f4c8019) -- feat: add CInputRadioGroup component [`af899f5`](https://github.com/coreui/coreui-vue/commit/af899f5a0f46c96aa7804f7b5711fdd59dc9d943) -- feat: CCollapse: add possibility of different duration of show and hide [`288fcc9`](https://github.com/coreui/coreui-vue/commit/288fcc98e48ae3200f4bc8f9bc5155576573f75e) -- feat: CDataTable: add noItemsView prop #67 [`79d6e11`](https://github.com/coreui/coreui-vue/commit/79d6e113745f9f9ce298f2ed1fe990f1a9ffe8aa) -- test: CDataTable tests update [`4d658b2`](https://github.com/coreui/coreui-vue/commit/4d658b2bc383122c84d399c4bfa8268b95879ae7) -- fix: CCollapse: fix blinking when animation duration is 0ms [`ed0d5fa`](https://github.com/coreui/coreui-vue/commit/ed0d5fafab2c23c6cc78ca9042a1e7e66855dc3b) -- feat: CDataTable: add 'external' key to itemsPerPageSelect prop object [`2323eaa`](https://github.com/coreui/coreui-vue/commit/2323eaa3c523b32e40b20d9628b0e45ecb82aec8) -- fix: CInputRadioGroup: add inline styling option [`9f8aeec`](https://github.com/coreui/coreui-vue/commit/9f8aeec4f9072711caea197377f5cc987ee71225) -- feat: CPagination: add arg 'reduced' to the 'update:activePage' event [`c94cb09`](https://github.com/coreui/coreui-vue/commit/c94cb09462763128fc68e5d42aa10c7c66a9ae06) -- feat: CDataTable: add thead-top slot [`f130496`](https://github.com/coreui/coreui-vue/commit/f1304966a2fb95aa0e0b7d75e85fc6beb35f1594) -- chore: fix typings [`ce18118`](https://github.com/coreui/coreui-vue/commit/ce1811858c4c13adb6c02f115178c4449aea2667) - -## [3.0.4](https://github.com/coreui/coreui-vue/compare/3.0.3...3.0.4) - -> 9 March 2020 - -### Changed - -- fix: fix package dependencies [`2cdd679`](https://github.com/coreui/coreui-vue/commit/2cdd679f00cc47eb37432c67bc53447b2a685bb2) -- chore: update build files [`df938ef`](https://github.com/coreui/coreui-vue/commit/df938ef479b7b6cda9e121170ab7bdfb2a7cefdf) -- chore: update project, add comment [`fd7f075`](https://github.com/coreui/coreui-vue/commit/fd7f0753fd6ea69ccf7e2b3644ce49ad3998bebd) - -## [3.0.3](https://github.com/coreui/coreui-vue/compare/3.0.2...3.0.3) - -> 9 March 2020 - -### Changed - -- chore: 3.0.3 release - update dependencies and build files [`fe1a61b`](https://github.com/coreui/coreui-vue/commit/fe1a61bd948b509659d48cacef68149cd941b6fc) -- fix: CDropdownItem: restore functional component events #73 [`311d18e`](https://github.com/coreui/coreui-vue/commit/311d18edaf2cd0ccfe17ba2ca75578b666e01dff) - -## [3.0.2](https://github.com/coreui/coreui-vue/compare/3.0.1...3.0.2) - -> 6 March 2020 - -### Changed - -- chore: 3.0.2 release: update dependencies and build files [`31ffedb`](https://github.com/coreui/coreui-vue/commit/31ffedb905447eddf43ead9ad6a617c9460179d2) -- fix: CDropdown: close dropdown on every dropdown-item-click event #71 [`ed04296`](https://github.com/coreui/coreui-vue/commit/ed042960b812244b98f167d0a066b91967f6e86e) -- fix: CDropdown: close dropdown on every dropdown-item-click event #72 [`cffd7c4`](https://github.com/coreui/coreui-vue/commit/cffd7c454bdfabb6523eb34404a84b52f65ed8ac) -- chore: fix typings [`67f7cef`](https://github.com/coreui/coreui-vue/commit/67f7cef03d2059dcb5e2d5713e09e56fd2d1c49b) -- fix: do not emit update:value in case of 'multiple' attribute #64 [`73d2b3f`](https://github.com/coreui/coreui-vue/commit/73d2b3f874dad7bb4e350da997dcb9de9af5e4bc) -- refactor: change CDropdown closing event name [`26c2f7d`](https://github.com/coreui/coreui-vue/commit/26c2f7d4c492e5861716dbc48c1e8d3b31f85aa8) - -## [3.0.1](https://github.com/coreui/coreui-vue/compare/3.0.0...3.0.1) - -> 28 February 2020 - -### Changed - -- chore: 3.0.1 release - update dependencies and build files [`b6f44c9`](https://github.com/coreui/coreui-vue/commit/b6f44c9dbb140d39cba89529962fdc399082e9c7) -- refactor: CDropdown: optimize dropdown hiding, update tests [`b295f71`](https://github.com/coreui/coreui-vue/commit/b295f7188742240bda3d1d86afa17ff13a34414d) -- feat: CDataTable row-clicked event modification #59 [`2a89938`](https://github.com/coreui/coreui-vue/commit/2a899387e95fffeff47291fb3aff2b14d480e945) -- fix: always close overlaid sidebar on outside click [`1b43afa`](https://github.com/coreui/coreui-vue/commit/1b43afa0908b9e3a19f66ff85664db4c06261e62) -- feat: add CClickaway directive [`a78fd14`](https://github.com/coreui/coreui-vue/commit/a78fd1476e0c3ee4005131527e5c0bac5b65f11a) -- refactor: remove listners function from form-mixins [`149c6c6`](https://github.com/coreui/coreui-vue/commit/149c6c6c7a9fc79ad81a69b5e890f28aa529f6f8) -- fix: form components - add missing events [`7eaec17`](https://github.com/coreui/coreui-vue/commit/7eaec170d95e030e4bf29c338fbe5d3f7dcb03b8) -- feat: CDataTable: add page-change event [`9161fd6`](https://github.com/coreui/coreui-vue/commit/9161fd601930766221949c255154b454c42e47a0) -- chore: update readme and issue template [`9779c01`](https://github.com/coreui/coreui-vue/commit/9779c01224f56b45fb5e92706debf86f08c5fa6f) -- chore: update typings [`bdb4b64`](https://github.com/coreui/coreui-vue/commit/bdb4b643ca01b474be8a78c2e47c77c877f0cb74) -- chore: update build worklow shield in README [`7aad5d4`](https://github.com/coreui/coreui-vue/commit/7aad5d4f18762dad5d936bbd395cc2d0973ddf78) -- chore: merge user pull request [`31315c6`](https://github.com/coreui/coreui-vue/commit/31315c667e99e4631a1d25890a51c44d4c9e074a) -- chore: update README [`ad9f36c`](https://github.com/coreui/coreui-vue/commit/ad9f36c5bff5f9466bf1ebc8653228d1af659eef) - diff --git a/README.md b/README.md index 717f2175..ba8470df 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,158 @@

- CoreUI logo + CoreUI logo

CoreUI for Vue.js

- Open Source UI Components Library for Vue.js. + Vue.js Components Library built on top of Bootstrap 5 and TypeScript.
- Explore CoreUI docs » + Explore CoreUI for Vue.js docs »

Report bug · Request feature · - Community - · - Blog + Blog

## Table of contents - [Quick start](#quick-start) +- [Components](#components) +- [Status](#status) - [Bugs and feature requests](#bugs-and-feature-requests) - [Documentation](#documentation) +- [Frameworks](#frameworks) +- [Templates](#templates) - [Contributing](#contributing) - [Community](#community) - [Versioning](#versioning) - [Creators](#creators) -- [Thanks](#thanks) +- [Support CoreUI Development](#support-coreui-development) - [Copyright and license](#copyright-and-license) - ## Quick start +### Instalation + Several quick start options are available: -- [Download the latest release](https://github.com/coreui/coreui-vue/archive/refs/heads/v4.zip) +- [Download the latest release](https://github.com/coreui/coreui-vue/archive/v4.10.2.zip) - Clone the repo: `git clone https://github.com/coreui/coreui-vue.git` -- Install with [npm](https://www.npmjs.com/): `npm install @coreui/vue@next` -- Install with [yarn](https://yarnpkg.com/): `yarn add @coreui/vue@next` +- Install with [npm](https://www.npmjs.com/): `npm install @coreui/vue` +- Install with [yarn](https://yarnpkg.com/): `yarn add @coreui/vue` -Read the [Getting started page](https://coreui.io/vue/docs/4.0/getting-started/introduction.html) for information on the framework contents, templates and examples, and more. +Read the [Getting started page](https://coreui.io/vue/docs/getting-started/introduction/) for information on the framework contents, templates and examples, and more. -### Styling +### Stylesheets -Components are styled using @coreui/coreui CSS library, but you can use them also with bootstrap CSS library. That is possible because @coreui/coreui-vue library is compatible with bootstrap, it just extends its functionalities. The only exception is custom CoreUI components, which don't exist in the Bootstrap ecosystem (template components, callout, switch). +Vue components are styled using `@coreui/coreui` CSS library, but you can use them also with bootstrap CSS library. That is possible because `@coreui/coreui` library is compatible with bootstrap, it just extends its functionalities. The only exception are custom CoreUI components, which don't exist in the Bootstrap ecosystem. -Styles have to be imported separately! Import [CoreUI](https://github.com/coreui/coreui) CSS library (recommended), or [Bootstrap](https://getbootstrap.com/) library +#### CoreUI CSS files -Installation: -```shell +##### Installation + +```bash yarn add @coreui/coreui ``` or -```shell -npm install @coreui/coreui +```bash +npm install @coreui/coreui --save ``` -Basic usage: -```scss -@import "~@coreui/coreui-vue/scss/coreui"; -``` - -### Registering components +##### Basic usage ```js -// Installing whole package -import CoreuiVue from '@coreui/vue'; -app.use(CoreuiVue); - -// Registering a single component -import { CSwitch, CButton } from '@coreui/vue'; - -// globally -app.component('CButton', CButton) - -export default { - ... - // locally - components: { - CSwitch - }, - ... -} +import '@coreui/coreui/dist/css/coreui.min.css' ``` -### Registering directives +#### Bootstrap CSS files -```js -// Registering single directives -import { CPopover, CTooltip } from '@coreui/vue'; - -// globally -app.directive('c-tooltip', CTooltip) - -export default { - ... - // locally - directives: { - 'c-tooltip': CTooltip - }, - ... -} -``` +##### Installation -### Optimization +```bash +yarn add bootstrap +``` -Components are imported from CommonJS module by default, if you want to use only specific components you can import them from source to enable treeshaking. +or -```js -// Import components this way to allow tree shaking -import { CAlert } from '@coreui/vue/src'; +```bash +npm install bootstrap ``` -### Code autocompletion +##### Basic usage -If you are using [VS Code](https://code.visualstudio.com/) editor with Vetur plugin installed, then the editor would display hints for our library (component names and prop names). +```js +import "bootstrap/dist/css/bootstrap.min.css"; +``` +## Components + +- [Vue Accordion](https://coreui.io/vue/docs/components/accordion.html) +- [Vue Alert](https://coreui.io/vue/docs/components/alert.html) +- [Vue Avatar](https://coreui.io/vue/docs/components/avatar.html) +- [Vue Badge](https://coreui.io/vue/docs/components/badge.html) +- [Vue Breadcrumb](https://coreui.io/vue/docs/components/breadcrumb.html) +- [Vue Button](https://coreui.io/vue/docs/components/button.html) +- [Vue Button Group](https://coreui.io/vue/docs/components/button-group.html) +- [Vue Callout](https://coreui.io/vue/docs/components/callout.html) +- [Vue Card](https://coreui.io/vue/docs/components/card.html) +- [Vue Carousel](https://coreui.io/vue/docs/components/carousel.html) +- [Vue Checkbox](https://coreui.io/vue/docs/forms/checkbox.html) +- [Vue Close Button](https://coreui.io/vue/docs/components/close-button.html) +- [Vue Collapse](https://coreui.io/vue/docs/components/collapse.html) +- [Vue Date Picker](https://coreui.io/vue/docs/forms/date-picker.html) **PRO** +- [Vue Date Range Picker](https://coreui.io/vue/docs/forms/date-range-picker.html) **PRO** +- [Vue Dropdown](https://coreui.io/vue/docs/components/dropdown.html) +- [Vue Floating Labels](https://coreui.io/vue/docs/forms/floating-labels.html) +- [Vue Footer](https://coreui.io/vue/docs/components/footer.html) +- [Vue Header](https://coreui.io/vue/docs/components/header.html) +- [Vue Image](https://coreui.io/vue/docs/components/image.html) +- [Vue Input](https://coreui.io/vue/docs/forms/input.html) +- [Vue Input Group](https://coreui.io/vue/docs/forms/input-group.html) +- [Vue List Group](https://coreui.io/vue/docs/components/list-group.html) +- [Vue Loading Button](https://coreui.io/vue/docs/components/loading-button.html) **PRO** +- [Vue Modal](https://coreui.io/vue/docs/components/modal.html) +- [Vue Multi Select](https://coreui.io/vue/docs/forms/multi-select.html) **PRO** +- [Vue Navs & Tabs](https://coreui.io/vue/docs/components/navs-tabs.html) +- [Vue Navbar](https://coreui.io/vue/docs/components/navbar.html) +- [Vue Offcanvas](https://coreui.io/vue/docs/components/offcanvas.html) +- [Vue Pagination](https://coreui.io/vue/docs/components/pagination.html) +- [Vue Placeholder](https://coreui.io/vue/docs/components/placeholder.html) +- [Vue Popover](https://coreui.io/vue/docs/components/popover.html) +- [Vue Progress](https://coreui.io/vue/docs/components/progress.html) +- [Vue Radio](https://coreui.io/vue/docs/forms/radio.html) +- [Vue Range](https://coreui.io/vue/docs/forms/range.html) +- [Vue Select](https://coreui.io/vue/docs/forms/select.html) +- [Vue Sidebar](https://coreui.io/vue/docs/components/sidebar.html) +- [Vue Smart Pagination](https://coreui.io/vue/docs/components/smart-pagination.html) **PRO** +- [Vue Smart Table](https://coreui.io/vue/docs/components/smart-table.html) **PRO** +- [Vue Spinner](https://coreui.io/vue/docs/components/spinner.html) +- [Vue Switch](https://coreui.io/vue/docs/forms/switch.html) +- [Vue Table](https://coreui.io/vue/docs/components/table.html) +- [Vue Textarea](https://coreui.io/vue/docs/forms/textarea.html) +- [Vue Time Picker](https://coreui.io/vue/docs/forms/time-picker.html) **PRO** +- [Vue Toast](https://coreui.io/vue/docs/components/toast.html) +- [Vue Tooltip](https://coreui.io/vue/docs/components/tooltip.html) + +## Status + +[![Build Status](https://github.com/coreui/coreui-vue/workflows/JS%20Tests/badge.svg?branch=main)](https://github.com/coreui/coreui-vue/actions?query=workflow%3AJS+Tests+branch%3Amain) +[![npm version](https://img.shields.io/npm/v/@coreui/vue)](https://www.npmjs.com/package/@coreui/vue) +[![peerDependencies Status](https://img.shields.io/david/peer/coreui/coreui)](https://david-dm.org/coreui/coreui?type=peer) +[![devDependency Status](https://img.shields.io/david/dev/coreui/coreui)](https://david-dm.org/coreui/coreui?type=dev) +[![Coverage Status](https://img.shields.io/coveralls/github/coreui/coreui-vue/v4)](https://coveralls.io/github/coreui/coreui-vue?branch=v4) ## Bugs and feature requests @@ -130,16 +160,32 @@ Have a bug or a feature request? Please first read the [issue guidelines](https: ## Documentation -The documentation for the CoreUI & CoreUI PRO is hosted at our website [CoreUI](https://coreui.io/) +The documentation for the CoreUI & CoreUI PRO is hosted at our website [CoreUI for Vue](https://coreui.io/vue/docs/getting-started/introduction) ### Running documentation locally -1. Run `yarn install` or `npm install` to install the Node.js dependencies, including Hugo (the site builder). -2. Run `yarn docs:dev` or `npm run docs:dev` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. -3. From the project directory, run `yarn docs:dev` or `npm run docs:dev` in the command line. -4. Open `http://localhost:8080/` in your browser, and voilà. +1. Run `yarn install` or `npm install` to install the Node.js dependencies. +2. Run `yarn bootstrap` or `npm run bootstrap` to link local packages together and install remaining package dependencies. +3. From the root directory, run `yarn docs:dev` or `npm run docs:dev` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. +4. Open `http://localhost:8000/` in your browser, and voilà. + +## Frameworks + +CoreUI supports most popular frameworks. + +- [CoreUI for Angular](https://github.com/coreui/coreui-angular) +- [CoreUI for Bootstrap (Vanilla JS)](https://github.com/coreui/coreui) +- [CoreUI for React](https://github.com/coreui/coreui-react) +- [CoreUI for Vue](https://github.com/coreui/coreui-vue) + +## Templates + +Fully featured, out-of-the-box, templates for your application based on CoreUI. -### Documentation for previous releases +- [Angular Admin Template](https://coreui.io/angular) +- [Bootstrap Admin Template](https://coreui.io/) +- [React Admin Template](https://coreui.io/react) +- [Vue Admin Template](https://coreui.io/vue) ## Contributing @@ -151,8 +197,7 @@ Editor preferences are available in the [editor config](https://github.com/coreu Stay up to date on the development of CoreUI and reach out to the community with these helpful resources. -- Read and subscribe to [The Official CoreUI Blog](https://blog.coreui.io/). -- Join [the official Community](https://community.coreui.io/). +- Read and subscribe to [The Official CoreUI Blog](https://coreui.io/blog/). You can also follow [@core_ui on Twitter](https://twitter.com/core_ui). @@ -162,26 +207,59 @@ For transparency into our release cycle and in striving to maintain backward com See [the Releases section of our project](https://github.com/coreui/coreui-vue/releases) for changelogs for each release version. - ## Creators **Łukasz Holeczek** -* -* +- +- **Andrzej Kopański** -* +- + +**The CoreUI Team** + +- + +## Support CoreUI Development + +CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/). + + + +### Platinum Sponsors + +Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website. + + + +### Gold Sponsors + +Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website. + + + +### Silver Sponsors + +Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website. + + + +### Bronze Sponsors + +Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile. + + -**CoreUI Team** +### Backers -* +Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/). -**Contributors** + -* + ## Copyright and license -Copyright 2021 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-vue/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). \ No newline at end of file +Copyright 2022 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-vue/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 77b24900..00000000 --- a/babel.config.js +++ /dev/null @@ -1,15 +0,0 @@ -// babel.config.js -module.exports = function (api) { - api.cache(true) - - const presets = [ - ['@babel/preset-env', { targets: { node: 'current' } }], - '@babel/preset-typescript', - ] - const plugins = ['@babel/plugin-proposal-optional-chaining'] - - return { - presets, - plugins, - } -} diff --git a/build/templates/props.js b/build/templates/props.js deleted file mode 100644 index 7abf136a..00000000 --- a/build/templates/props.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' -function mdclean(input) { - return input.replace(/\r?\n/g, '
').replace(/\|/g, '\\|') -} -function isTag(v) { - return !!v.content; -} -const renderTags = (tags) => { - if (!tags) { - return ''; - } - return Object.entries(tags) - .map(([tag, values]) => { - return values.map(v => `
\`@${tag}\` ${isTag(v) ? v.content : v.description}`).join(''); - }) - .join(''); -}; -const tmpl = (props) => { - let ret = ''; - const replaceToString = /Color|TextColor|Shape/i; - props.forEach(pr => { - const p = pr.name - let t = pr.description ?? '' - t += renderTags(pr.tags) - const n = pr.type?.name ?? '' - const v = pr.values?.map(pv => `\`${pv}\``).join(', ') ?? '-' - const d = pr.defaultValue?.value ?? '' - if (pr.description && !pr.description.includes('@ignore')) { - ret += `| **${mdclean(p)}** | ${mdclean(t)} | ${mdclean(n.replace(replaceToString, 'string'))} | ${mdclean(v)} | ${mdclean(d.replace('undefined', '-'))} |\n`; - } - }); - return ret; -}; -module.exports = (props, opt = {}) => { - return ` -${opt.isSubComponent || opt.hasSubComponents ? '#' : ''}#### Props - | Prop name | Description | Type | Values | Default | - | ------------- | ----------- | --------- | ----------- | ----------- | - ${tmpl(props)} - `; -}; diff --git a/docs/.vuepress/theme-coreui/src/assets/brand/coreui-vue.svg b/docs/.vuepress/theme-coreui/src/assets/brand/coreui-vue.svg deleted file mode 100755 index 4eecb11e..00000000 --- a/docs/.vuepress/theme-coreui/src/assets/brand/coreui-vue.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - coreui vue - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/.vuepress/theme-coreui/src/client/clientAppEnhance.ts b/docs/.vuepress/theme-coreui/src/client/clientAppEnhance.ts deleted file mode 100755 index 4e256a81..00000000 --- a/docs/.vuepress/theme-coreui/src/client/clientAppEnhance.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { h } from 'vue' -import { defineClientAppEnhance } from '@vuepress/client' -import CodeGroup from './components/global/CodeGroup' -import CodeGroupItem from './components/global/CodeGroupItem.vue' -import OutboundLink from './components/global/OutboundLink.vue' -import { useScrollPromise } from './composables' - -import './styles/index.scss' - -export default defineClientAppEnhance(({ app, router }) => { - app.component('CodeGroup', CodeGroup) - app.component('CodeGroupItem', CodeGroupItem) - - // unregister the built-in `` to avoid warning - delete app._context.components.OutboundLink - // override the built-in `` - app.component('OutboundLink', OutboundLink) - - // compat with @vuepress/plugin-docsearch and @vuepress/plugin-search - app.component('NavbarSearch', () => { - const SearchComponent = app.component('Docsearch') || app.component('SearchBox') - if (SearchComponent) { - return h(SearchComponent) - } - return null - }) - - // handle scrollBehavior with transition - const scrollBehavior = router.options.scrollBehavior! - ;(router.options.scrollBehavior = async (...args) => { - await useScrollPromise().wait() - return scrollBehavior(...args) - }), - router.addRoute({ path: '/', redirect: '/getting-started/introduction.html' }) -}) diff --git a/docs/.vuepress/theme-coreui/src/client/clientAppSetup.ts b/docs/.vuepress/theme-coreui/src/client/clientAppSetup.ts deleted file mode 100755 index 6cea984d..00000000 --- a/docs/.vuepress/theme-coreui/src/client/clientAppSetup.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { computed, provide } from 'vue' -import { defineClientAppSetup, usePageFrontmatter } from '@vuepress/client' -import { - resolveSidebarItems, - sidebarItemsSymbol, - useThemeLocaleData, -} from './composables' -import type { DefaultThemeNormalPageFrontmatter } from '../shared' - -export default defineClientAppSetup(() => { - // we need to access sidebar items in multiple components - // so we make it global computed - const themeLocale = useThemeLocaleData() - const frontmatter = usePageFrontmatter() - const sidebarItems = computed(() => - resolveSidebarItems(frontmatter.value, themeLocale.value) - ) - provide(sidebarItemsSymbol, sidebarItems) -}) diff --git a/docs/.vuepress/theme-coreui/src/client/components/Home.vue b/docs/.vuepress/theme-coreui/src/client/components/Home.vue deleted file mode 100755 index 4c69d855..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/Home.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/components/Page.vue b/docs/.vuepress/theme-coreui/src/client/components/Page.vue deleted file mode 100755 index 9da1d607..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/Page.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/components/Sidebar.vue b/docs/.vuepress/theme-coreui/src/client/components/Sidebar.vue deleted file mode 100755 index 4c73d31a..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/Sidebar.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/components/SidebarNav.ts b/docs/.vuepress/theme-coreui/src/client/components/SidebarNav.ts deleted file mode 100755 index 9081ed2b..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/SidebarNav.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { h } from 'vue' -import type { FunctionalComponent, VNode } from 'vue' -import { RouterLink, useRoute } from 'vue-router' -import type { RouteLocationNormalizedLoaded } from 'vue-router' -import type { ResolvedSidebarItem } from '../../shared' - -import { withBase } from '@vuepress/client' - -import { CBadge, CNavGroup, CNavItem, CSidebarNav } from './../../../../../../src' -import { CIcon } from '@coreui/icons-vue' - -const normalizePath = (path: string): string => - decodeURI(path) - .replace(/#.*$/, '') - .replace(/(index)?\.(md|html)$/, '') - -const isActiveLink = (route: RouteLocationNormalizedLoaded, link?: string): boolean => { - if (link === undefined) { - return false - } - - if (route.hash === link) { - return true - } - - const currentPath = normalizePath(route.path) - const targetPath = normalizePath(link) - - return currentPath === targetPath -} - -const isActiveItem = (route: RouteLocationNormalizedLoaded, item: ResolvedSidebarItem): boolean => { - if (isActiveLink(route, item.link)) { - return true - } - - if (item.children) { - return item.children.some((child) => isActiveItem(route, child)) - } - - return false -} - -const renderItem = (item: ResolvedSidebarItem): VNode => { - const route = useRoute() - if (item.children && !item.link.includes('.html')) { - return h( - CNavGroup, - { - compact: true, - visible: item.children.some((child) => isActiveItem(route, child)), - }, - { - togglerContent: () => [ - h(CIcon, { - customClassName: 'nav-icon text-primary', - icon: ['512 512', item.icon], - height: 64, - width: 64, - }), - item.text, - ], - default: () => item.children.map((child) => renderItem(child)), - }, - ) - } - - return h( - RouterLink, - { - to: item.link, - custom: true, - }, - { - default: (props) => - h( - CNavItem, - { - active: props.isActive, - disabled: item.disabled, - href: withBase(item.link), - }, - { - default: () => [ - item.text, - item.badge && - h( - CBadge, - { - class: 'ms-auto', - color: item.badge.color, - }, - { - default: () => item.badge.text, - }, - ), - ], - }, - ), - }, - ) -} - -export const SidebarNav = ({ items }) => { - return h( - CSidebarNav, - {}, - { - default: () => items.map((item) => renderItem(item)), - }, - ) -} - -SidebarNav.displayName = 'SidebarNav' - -SidebarNav.props = { - items: { - type: Array, - required: true, - }, -} diff --git a/docs/.vuepress/theme-coreui/src/client/components/global/CodeGroup.ts b/docs/.vuepress/theme-coreui/src/client/components/global/CodeGroup.ts deleted file mode 100755 index f7d22994..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/global/CodeGroup.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { defineComponent, h, ref } from 'vue' -import type { Component, VNode } from 'vue' - -export default defineComponent({ - name: 'CodeGroup', - - setup(_, { slots }) { - // index of current active item - const activeIndex = ref(-1) - - // refs of the tab buttons - const tabRefs = ref([]) - - // activate next tab - const activateNext = (i = activeIndex.value): void => { - if (i < tabRefs.value.length - 1) { - activeIndex.value = i + 1 - } else { - activeIndex.value = 0 - } - tabRefs.value[activeIndex.value].focus() - } - - // activate previous tab - const activatePrev = (i = activeIndex.value): void => { - if (i > 0) { - activeIndex.value = i - 1 - } else { - activeIndex.value = tabRefs.value.length - 1 - } - tabRefs.value[activeIndex.value].focus() - } - - // handle keyboard event - const keyboardHandler = (event: KeyboardEvent, i: number): void => { - if (event.key === ' ' || event.key === 'Enter') { - event.preventDefault() - activeIndex.value = i - } else if (event.key === 'ArrowRight') { - event.preventDefault() - activateNext(i) - } else if (event.key === 'ArrowLeft') { - event.preventDefault() - activatePrev(i) - } - } - - return () => { - // NOTICE: here we put the `slots.default()` inside the render function to make - // the slots reactive, otherwise the slot content won't be changed once the - // `setup()` function of current component is called - - // get children code-group-item - const items = (slots.default?.() || []) - .filter((vnode) => (vnode.type as Component).name === 'CodeGroupItem') - .map((vnode) => { - if (vnode.props === null) { - vnode.props = {} - } - return vnode as VNode & { props: Exclude } - }) - - // clear tabRefs for HMR - tabRefs.value = [] - - // do not render anything if there is no code-group-item - if (items.length === 0) { - return null - } - - if (activeIndex.value < 0 || activeIndex.value > items.length - 1) { - // if `activeIndex` is invalid - - // find the index of the code-group-item with `active` props - activeIndex.value = items.findIndex( - (vnode) => vnode.props.active === '' || vnode.props.active === true - ) - - // if there is no `active` props on code-group-item, set the first item active - if (activeIndex.value === -1) { - activeIndex.value = 0 - } - } else { - // set the active item - items.forEach((vnode, i) => { - vnode.props.active = i === activeIndex.value - }) - } - - return h('div', { class: 'code-group' }, [ - h( - 'div', - { class: 'code-group__nav' }, - h( - 'ul', - { class: 'code-group__ul' }, - items.map((vnode, i) => { - const isActive = i === activeIndex.value - - return h( - 'li', - { class: 'code-group__li' }, - h( - 'button', - { - ref: (element) => { - if (element) { - tabRefs.value[i] = element as HTMLButtonElement - } - }, - class: { - 'code-group__nav-tab': true, - 'code-group__nav-tab-active': isActive, - }, - ariaPressed: isActive, - ariaExpanded: isActive, - onClick: () => (activeIndex.value = i), - onKeydown: (e) => keyboardHandler(e, i), - }, - vnode.props.title - ) - ) - }) - ) - ), - items, - ]) - } - }, -}) diff --git a/docs/.vuepress/theme-coreui/src/client/components/global/CodeGroupItem.vue b/docs/.vuepress/theme-coreui/src/client/components/global/CodeGroupItem.vue deleted file mode 100755 index f774dbf0..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/global/CodeGroupItem.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/components/global/OutboundLink.vue b/docs/.vuepress/theme-coreui/src/client/components/global/OutboundLink.vue deleted file mode 100755 index 86309237..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/global/OutboundLink.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/components/global/_Badge.vue b/docs/.vuepress/theme-coreui/src/client/components/global/_Badge.vue deleted file mode 100755 index 889804ed..00000000 --- a/docs/.vuepress/theme-coreui/src/client/components/global/_Badge.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/composables/index.ts b/docs/.vuepress/theme-coreui/src/client/composables/index.ts deleted file mode 100755 index ce3616fa..00000000 --- a/docs/.vuepress/theme-coreui/src/client/composables/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './useDarkMode' -export * from './useNavLink' -export * from './useResolveRouteWithRedirect' -export * from './useScrollPromise' -export * from './useSidebarItems' -export * from './useThemeData' diff --git a/docs/.vuepress/theme-coreui/src/client/composables/useDarkMode.ts b/docs/.vuepress/theme-coreui/src/client/composables/useDarkMode.ts deleted file mode 100755 index 2e734fdd..00000000 --- a/docs/.vuepress/theme-coreui/src/client/composables/useDarkMode.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { onMounted, onUnmounted, ref, watch } from 'vue' -import type { Ref } from 'vue' - -export const useDarkMode = (): Ref => { - const isDarkMode = ref(false) - - const updateDarkModeClass = (value = isDarkMode.value): void => { - // set `class="dark"` on `` element - const htmlEl = window?.document.querySelector('html') - htmlEl?.classList.toggle('dark', value) - } - - const mediaQuery = ref(null) - const onMediaQueryChange = (event: MediaQueryListEvent): void => { - isDarkMode.value = event.matches - } - - onMounted(() => { - // get `prefers-color-scheme` media query and set the initial mode - mediaQuery.value = window.matchMedia('(prefers-color-scheme: dark)') - isDarkMode.value = mediaQuery.value.matches - - // watch changes - mediaQuery.value.addEventListener('change', onMediaQueryChange) - watch(isDarkMode, updateDarkModeClass, { immediate: true }) - }) - - onUnmounted(() => { - mediaQuery.value?.removeEventListener('change', onMediaQueryChange) - updateDarkModeClass(false) - }) - - return isDarkMode -} diff --git a/docs/.vuepress/theme-coreui/src/client/composables/useNavLink.ts b/docs/.vuepress/theme-coreui/src/client/composables/useNavLink.ts deleted file mode 100755 index ec1bdaf2..00000000 --- a/docs/.vuepress/theme-coreui/src/client/composables/useNavLink.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { NavLink } from '../../shared' -import { useResolveRouteWithRedirect } from './useResolveRouteWithRedirect' - -/** - * Resolve NavLink props from string - * - * @example - * - Input: '/README.md' - * - Output: { text: 'Home', link: '/' } - */ -export const useNavLink = (item: string): NavLink => { - const resolved = useResolveRouteWithRedirect(item) - return { - text: resolved.meta.title || item, - link: resolved.name === '404' ? item : resolved.fullPath, - } -} diff --git a/docs/.vuepress/theme-coreui/src/client/index.ts b/docs/.vuepress/theme-coreui/src/client/index.ts deleted file mode 100755 index 27f6c206..00000000 --- a/docs/.vuepress/theme-coreui/src/client/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { - NavItem, - NavGroup, - NavLink, - NavbarItem, - NavbarGroup, - NavbarConfig, - ResolvedNavbarItem, - SidebarItem, - SidebarConfigArray, - SidebarConfigObject, - SidebarConfig, - ResolvedSidebarItem, - DefaultThemePluginsOptions, - DefaultThemeLocaleOptions, - DefaultThemeData, - DefaultThemeLocaleData, - DefaultThemePageData, - DefaultThemePageFrontmatter, - DefaultThemeHomePageFrontmatter, - DefaultThemeNormalPageFrontmatter, -} from '../shared' - -export type { - NavItem, - NavGroup, - NavLink, - NavbarItem, - NavbarGroup, - NavbarConfig, - ResolvedNavbarItem, - SidebarItem, - SidebarConfigArray, - SidebarConfigObject, - SidebarConfig, - ResolvedSidebarItem, - DefaultThemePluginsOptions, - DefaultThemeLocaleOptions, - DefaultThemeData, - DefaultThemeLocaleData, - DefaultThemePageData, - DefaultThemePageFrontmatter, - DefaultThemeHomePageFrontmatter, - DefaultThemeNormalPageFrontmatter, -} -export * from './composables' -export * from './utils' diff --git a/docs/.vuepress/theme-coreui/src/client/layouts/Layout.vue b/docs/.vuepress/theme-coreui/src/client/layouts/Layout.vue deleted file mode 100755 index 5fbd7499..00000000 --- a/docs/.vuepress/theme-coreui/src/client/layouts/Layout.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - diff --git a/docs/.vuepress/theme-coreui/src/client/styles/_code-group.scss b/docs/.vuepress/theme-coreui/src/client/styles/_code-group.scss deleted file mode 100755 index e975bed7..00000000 --- a/docs/.vuepress/theme-coreui/src/client/styles/_code-group.scss +++ /dev/null @@ -1,67 +0,0 @@ -/** - * code-group - */ -.code-group__nav { - margin-top: 0.85rem; - // 2 * margin + border-radius of
 tag
-  margin-bottom: calc(-1.7rem - 6px);
-  padding-bottom: calc(1.7rem - 6px);
-  padding-left: 10px;
-  padding-top: 10px;
-  border-top-left-radius: 6px;
-  border-top-right-radius: 6px;
-  background-color: var(--code-bg-color);
-}
-
-.code-group__ul {
-  margin: auto 0;
-  padding-left: 0;
-  display: inline-flex;
-  list-style: none;
-}
-
-.code-group__nav-tab {
-  border: 0;
-  padding: 5px;
-  cursor: pointer;
-  background-color: transparent;
-  font-size: 0.85em;
-  line-height: 1.4;
-  color: rgba(255, 255, 255, 0.9);
-  font-weight: 600;
-}
-
-.code-group__nav-tab:focus {
-  outline: none;
-}
-
-.code-group__nav-tab:focus-visible {
-  outline: 1px solid rgba(255, 255, 255, 0.9);
-}
-
-.code-group__nav-tab-active {
-  border-bottom: var(--c-brand) 1px solid;
-}
-
-@media (max-width: $MQMobileNarrow) {
-  .code-group__nav {
-    margin-left: -1.5rem;
-    margin-right: -1.5rem;
-    border-radius: 0;
-  }
-}
-
-/**
- * code-group-item
- */
-.code-group-item {
-  display: none;
-}
-
-.code-group-item__active {
-  display: block;
-}
-
-.code-group-item > pre {
-  background-color: orange;
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/_code.scss b/docs/.vuepress/theme-coreui/src/client/styles/_code.scss
deleted file mode 100755
index f494e9b7..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/_code.scss
+++ /dev/null
@@ -1,267 +0,0 @@
-@import '_variables';
-
-// ===============================
-// Forked and modified from prismjs/themes/prism-tomorrow.css
-
-code[class*='language-'],
-pre[class*='language-'] {
-  color: #ccc;
-  background: none;
-  font-family: var(--font-family-code);
-  font-size: .875em;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.5;
-
-  -moz-tab-size: 4;
-  -o-tab-size: 4;
-  tab-size: 4;
-
-  -webkit-hyphens: none;
-  -moz-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-
-/* Code blocks */
-pre[class*='language-'] {
-  padding: 1em;
-  margin: 0.5em 0;
-  overflow: auto;
-}
-
-:not(pre) > code[class*='language-'],
-pre[class*='language-'] {
-  background: #2d2d2d;
-}
-
-/* Inline code */
-:not(pre) > code[class*='language-'] {
-  padding: 0.1em;
-  border-radius: 0.3em;
-  white-space: normal;
-}
-
-.token.comment,
-.token.block-comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-  color: #999;
-}
-
-.token.punctuation {
-  color: #ccc;
-}
-
-.token.tag,
-.token.attr-name,
-.token.namespace,
-.token.deleted {
-  color: #ec5975;
-}
-
-.token.function-name {
-  color: #6196cc;
-}
-
-.token.boolean,
-.token.number,
-.token.function {
-  color: #f08d49;
-}
-
-.token.property,
-.token.class-name,
-.token.constant,
-.token.symbol {
-  color: #f8c555;
-}
-
-.token.selector,
-.token.important,
-.token.atrule,
-.token.keyword,
-.token.builtin {
-  color: #cc99cd;
-}
-
-.token.string,
-.token.char,
-.token.attr-value,
-.token.regex,
-.token.variable {
-  color: #7ec699;
-}
-
-.token.operator,
-.token.entity,
-.token.url {
-  color: #67cdcc;
-}
-
-.token.important,
-.token.bold {
-  font-weight: bold;
-}
-.token.italic {
-  font-style: italic;
-}
-
-.token.entity {
-  cursor: help;
-}
-
-.token.inserted {
-  color: var(--c-text-accent);
-}
-
-// ===============================
-
-.theme-default-content {
-  pre,
-  pre[class*='language-'] {
-    line-height: 1.4;
-    padding: 1.25rem 1.5rem;
-    margin: 0.85rem 0;
-    border-radius: 6px;
-    overflow: auto;
-
-    code {
-      color: #fff;
-      padding: 0;
-      background-color: transparent;
-      border-radius: 0;
-      -webkit-font-smoothing: auto;
-      -moz-osx-font-smoothing: auto;
-    }
-  }
-
-  .line-number {
-    font-family: var(--font-family-code);
-  }
-}
-
-div[class*='language-'] {
-  position: relative;
-  background-color: var(--code-bg-color);
-  border-radius: 6px;
-
-  &::before {
-    position: absolute;
-    z-index: 3;
-    top: 0.8em;
-    right: 1em;
-    font-size: 0.75rem;
-    color: var(--code-ln-color);
-  }
-
-  pre,
-  pre[class*='language-'] {
-    // force override the background color to be compatible with shiki
-    background: transparent !important;
-    position: relative;
-    z-index: 1;
-  }
-
-  .highlight-lines {
-    user-select: none;
-    padding-top: 1.3rem;
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    line-height: 1.4;
-
-    .highlight-line {
-      background-color: var(--code-hl-bg-color);
-    }
-  }
-
-  &:not(.line-numbers-mode) {
-    .line-numbers {
-      display: none;
-    }
-  }
-
-  &.line-numbers-mode {
-    .highlight-lines .highlight-line {
-      position: relative;
-
-      &::before {
-        content: ' ';
-        position: absolute;
-        z-index: 2;
-        left: 0;
-        top: 0;
-        display: block;
-        width: var(--code-ln-wrapper-width);
-        height: 100%;
-      }
-    }
-
-    pre {
-      margin-left: var(--code-ln-wrapper-width);
-      padding-left: 1rem;
-      vertical-align: middle;
-    }
-
-    .line-numbers {
-      position: absolute;
-      top: 0;
-      width: var(--code-ln-wrapper-width);
-      text-align: center;
-      color: var(--code-ln-color);
-      // padding-top: 1.09375rem;
-      // padding-top: 1.25rem;
-      padding-top: 1.25rem;
-      line-height: 1.225;
-      // line-height: 1.4;
-//225
-
-      br {
-        user-select: none;
-      }
-
-      .line-number {
-        position: relative;
-        z-index: 3;
-        user-select: none;
-        font-size: 0.85em;
-        // font-size: 0.74375em;
-      }
-    }
-
-    &::after {
-      content: '';
-      position: absolute;
-      top: 0;
-      left: 0;
-      width: var(--code-ln-wrapper-width);
-      height: 100%;
-      border-radius: 6px 0 0 6px;
-      border-right: 1px solid var(--code-hl-bg-color);
-    }
-  }
-}
-
-@each $lang in $codeLang {
-  div[class*='language-'].ext-#{$lang} {
-    &:before {
-      content: '' + $lang;
-    }
-  }
-}
-
-// narrow mobile
-@media (max-width: $MQMobileNarrow) {
-  .theme-default-content {
-    div[class*='language-'] {
-      margin: 0.85rem -1.5rem;
-      border-radius: 0;
-    }
-  }
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/_demo.scss b/docs/.vuepress/theme-coreui/src/client/styles/_demo.scss
deleted file mode 100644
index ea1fd6d1..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/_demo.scss
+++ /dev/null
@@ -1,295 +0,0 @@
-
-.docs-example {
-
-  + div[class*='language-'] {
-    padding-top: 0;
-    margin-top: 0;
-    margin-bottom: 1.5rem;
-    border-radius: 0 0 6px 6px;
-    max-height: 500px;
-    overflow: scroll;
-
-    pre {
-      margin-top: 0;
-    }
-  }
-}
-
-.docs-example-offcanvas .offcanvas {
-  position: static;
-  display: block;
-  height: 200px;
-  visibility: visible;
-  transform: translate(0);
-}
-
-//
-// Grid examples
-//
-
-.docs-example-row {
-  .row {
-    > .col,
-    > [class^="col-"] {
-      padding-top: .75rem;
-      padding-bottom: .75rem;
-      background-color: rgba(39, 41, 43, .03);
-      border: 1px solid rgba(39, 41, 43, .1);
-    }
-  }
-
-  .row + .row {
-    margin-top: 1rem;
-  }
-}
-
-.docs-example-row-flex-cols .row {
-  min-height: 10rem;
-  background-color: rgba(255, 0, 0, .1);
-}
-
-.docs-example-cssgrid {
-  text-align: center;
-
-  .grid + .grid {
-    margin-top: 1rem;
-  }
-
-  .grid > * {
-    padding-top: .75rem;
-    padding-bottom: .75rem;
-    background-color: rgba(255, 0, 255, .1);
-    border: 1px solid rgba(255, 0, 255, .25);
-  }
-}
-
-// Grid mixins
-// .example-container {
-//   width: 800px;
-//   @include make-container();
-// }
-
-// .example-row {
-//   @include make-row();
-// }
-
-// .example-content-main {
-//   @include make-col-ready();
-
-//   @include media-breakpoint-up(sm) {
-//     @include make-col(6);
-//   }
-
-//   @include media-breakpoint-up(lg) {
-//     @include make-col(8);
-//   }
-// }
-
-// .example-content-secondary {
-//   @include make-col-ready();
-
-//   @include media-breakpoint-up(sm) {
-//     @include make-col(6);
-//   }
-
-//   @include media-breakpoint-up(lg) {
-//     @include make-col(4);
-//   }
-// }
-
-
-//
-// Docs examples
-//
-
-.docs-example {
-  // position: relative;
-  // padding: 1rem;
-  // margin: 1rem (-$grid-gutter-width * .5) 0;
-  // border: solid $gray-200;
-  // border-width: 1px 0 0;
-  // @include clearfix();
-
-  // @include media-breakpoint-up(sm) {
-  //   padding: 1.5rem;
-  //   margin-right: 0;
-  //   margin-left: 0;
-  //   border-width: 1px;
-  //   @include border-top-radius(.25rem);
-
-  //   + .docs-clipboard + .highlight {
-  //     @include border-bottom-radius(.25rem);
-  //   }
-  // }
-
-  + p {
-    margin-top: 2rem;
-  }
-
-  > .form-control {
-    + .form-control {
-      margin-top: .5rem;
-    }
-  }
-
-  > .nav + .nav,
-  > .alert + .alert,
-  > .navbar + .navbar,
-  > .progress + .progress {
-    margin-top: 1rem;
-  }
-
-  > .dropdown-menu {
-    position: static;
-    display: block;
-  }
-
-  > :last-child {
-    margin-bottom: 0;
-  }
-
-  // Images
-  > svg + svg,
-  > img + img {
-    margin-left: .5rem;
-  }
-
-  // Buttons
-  > .btn,
-  > .btn-group {
-    margin: .25rem .125rem;
-  }
-  > .btn-toolbar + .btn-toolbar {
-    margin-top: .5rem;
-  }
-
-  // List groups
-  > .list-group {
-    max-width: 400px;
-  }
-
-  > [class*="list-group-horizontal"] {
-    max-width: 100%;
-  }
-
-  // Navbars
-  .fixed-top,
-  .sticky-top {
-    position: static;
-    margin: -1rem -1rem 1rem;
-  }
-
-  .fixed-bottom {
-    position: static;
-    margin: 1rem -1rem -1rem;
-  }
-
-  // @include media-breakpoint-up(sm) {
-  //   .fixed-top,
-  //   .sticky-top {
-  //     margin: -1.5rem -1.5rem 1rem;
-  //   }
-  //   .fixed-bottom {
-  //     margin: 1rem -1.5rem -1.5rem;
-  //   }
-  // }
-
-  // Pagination
-  .pagination {
-    margin-top: .5rem;
-    margin-bottom: .5rem;
-  }
-}
-
-// // Ratio helpers
-// .docs-example-ratios {
-//   .ratio {
-//     display: inline-block;
-//     width: 10rem;
-//     color: $gray-600;
-//     background-color: $gray-100;
-//     border: $border-width solid $border-color;
-
-//     > div {
-//       display: flex;
-//       align-items: center;
-//       justify-content: center;
-//     }
-//   }
-// }
-// .docs-example-ratios-breakpoint {
-//   .ratio-4x3 {
-//     width: 16rem;
-
-//     // @include media-breakpoint-up(md) {
-//     //   aspect-ratio: 50%; // 2x1
-//     // }
-//   }
-// }
-
-.docs-example-modal {
-  background-color: #fafafa;
-
-  .modal {
-    position: static;
-    display: block;
-  }
-}
-
-.docs-example-offcanvas {
-  // @include border-start-radius(0);
-
-  .offcanvas {
-    position: static;
-    display: block;
-    height: 200px;
-    visibility: visible;
-    transform: translate(0);
-  }
-}
-
-// Tooltips
-.tooltip-demo a {
-  white-space: nowrap;
-}
-
-// Scrollspy demo on fixed height div
-.scrollspy-example {
-  position: relative;
-  height: 200px;
-  margin-top: .5rem;
-  overflow: auto;
-}
-
-.scrollspy-example-2 {
-  position: relative;
-  height: 350px;
-  overflow: auto;
-}
-
-// .docs-example-position-utils {
-//   position: relative;
-//   padding: 3em;
-
-//   .position-relative {
-//     height: 200px;
-//     background-color: #f5f5f5;
-//   }
-
-//   .position-absolute {
-//     width: 2em;
-//     height: 2em;
-//     background-color: $dark;
-//   }
-// }
-
-.docs-example-position-examples {
-  &::after {
-    content: none;
-  }
-}
-
-// Toasts
-.docs-example-toasts {
-  min-height: 240px;
-}
\ No newline at end of file
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/_footer.scss b/docs/.vuepress/theme-coreui/src/client/styles/_footer.scss
deleted file mode 100644
index 22df3b8d..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/_footer.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.docs-footer {
-  --cui-footer-bg: #f0f4f7;
-  font-size: 0.875rem;
-
-  a {
-    color: #768192;
-    text-decoration: none;
-  }
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/_sidebar.scss b/docs/.vuepress/theme-coreui/src/client/styles/_sidebar.scss
deleted file mode 100755
index faffdcd7..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/_sidebar.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-.docs-sidebar {
-  --cui-sidebar-bg: #f0f4f7;
-  --cui-sidebar-brand-bg: transparent;
-  --cui-sidebar-brand-color: rgba(44,56,74,0.87);
-  --cui-sidebar-nav-link-color: rgba(44,56,74,0.87);
-  --cui-sidebar-nav-link-active-color: #321fdb;
-  --cui-sidebar-nav-link-hover-color: #321fdb;
-  --cui-sidebar-nav-group-bg: transparent;
-  --cui-sidebar-nav-group-toggle-show-color: #321fdb;
-  --cui-sidebar-nav-link-disabled-color: #{$text-disabled};
-}
\ No newline at end of file
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/_variables.scss b/docs/.vuepress/theme-coreui/src/client/styles/_variables.scss
deleted file mode 100755
index e3350532..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/_variables.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-@import '@vuepress/plugin-palette/palette';
-
-// responsive breakpoints
-$MQNarrow: 959px !default;
-$MQMobile: 719px !default;
-$MQMobileNarrow: 419px !default;
-
-// code languages
-$codeLang: 'c' 'cpp' 'cs' 'css' 'dart' 'docker' 'fs' 'go' 'html' 'java' 'js'
-  'json' 'kt' 'less' 'makefile' 'md' 'php' 'py' 'rb' 'rs' 'sass' 'scss' 'sh'
-  'styl' 'ts' 'toml' 'vue' 'yml' !default;
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/index.scss b/docs/.vuepress/theme-coreui/src/client/styles/index.scss
deleted file mode 100755
index 43927716..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/index.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-@import '@coreui/coreui/scss/coreui.scss';
-
-@import 'anchor';
-@import 'demo';
-@import 'footer';
-@import 'layout';
-@import 'sidebar';
-@import 'table-api';
-@import 'toc';
-
-@import 'vars';
-@import 'vars-dark';
-
-@import 'code';
-@import 'code-group';
-@import 'custom-container';
-@import 'page';
-@import 'transitions';
-
-@import '@vuepress/plugin-palette/style';
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/page.scss b/docs/.vuepress/theme-coreui/src/client/styles/page.scss
deleted file mode 100755
index da7cec05..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/page.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-@import '_variables';
-
-.page {
-  padding-bottom: 2rem;
-  display: block;
-}
-
-.page-meta {  padding-top: 1rem;
-  padding-bottom: 1rem;
-  overflow: auto;
-
-  .meta-item {
-    cursor: default;
-    margin-top: 0.8rem;
-
-    .meta-item-label {
-      font-weight: 500;
-      color: var(--c-text-lighter);
-    }
-
-    .meta-item-info {
-      font-weight: 400;
-      color: var(--c-text-quote);
-    }
-  }
-
-  .edit-link {
-    display: inline-block;
-    margin-right: 0.25rem;
-  }
-
-  .last-updated {
-    float: right;
-  }
-}
-
-@media (max-width: $MQMobile) {
-  .page-meta {
-    .last-updated {
-      font-size: 0.8em;
-      float: none;
-    }
-
-    .contributors {
-      font-size: 0.8em;
-    }
-  }
-}
-
-.page-nav {
-  padding-top: 1rem;
-  padding-bottom: 0;
-
-  .inner {
-    min-height: 2rem;
-    margin-top: 0;
-    border-top: 1px solid var(--c-border);
-    padding-top: 1rem;
-    overflow: auto;
-  }
-
-  .next {
-    float: right;
-  }
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/transitions.scss b/docs/.vuepress/theme-coreui/src/client/styles/transitions.scss
deleted file mode 100755
index fda62674..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/transitions.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-.fade-slide-y-enter-active {
-  transition: all 0.3s ease;
-}
-
-.fade-slide-y-leave-active {
-  transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
-}
-
-.fade-slide-y-enter-from,
-.fade-slide-y-leave-to {
-  transform: translateY(10px);
-  opacity: 0;
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/vars-dark.scss b/docs/.vuepress/theme-coreui/src/client/styles/vars-dark.scss
deleted file mode 100755
index 58e02fc5..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/vars-dark.scss
+++ /dev/null
@@ -1,46 +0,0 @@
-html.dark {
-  // brand colors
-  --c-brand: #3aa675;
-  --c-brand-light: #349469;
-
-  // background colors
-  --c-bg: #22272e;
-  --c-bg-light: #2b313a;
-  --c-bg-lighter: #262c34;
-
-  // text colors
-  --c-text: #adbac7;
-  --c-text-light: #96a7b7;
-  --c-text-lighter: #8b9eb0;
-  --c-text-lightest: #8094a8;
-
-  // border colors
-  --c-border: #3e4c5a;
-  --c-border-dark: #34404c;
-
-  // custom container colors
-  --c-tip: #318a62;
-  --c-warning: #ceab00;
-  --c-warning-bg: #7e755b;
-  --c-warning-title: #ceac03;
-  --c-warning-text: #362e00;
-  --c-danger: #940000;
-  --c-danger-bg: #806161;
-  --c-danger-title: #610000;
-  --c-danger-text: #3a0000;
-  --c-details-bg: #323843;
-
-  // code blocks vars
-  --code-hl-bg-color: #363b46;
-}
-
-// plugin-docsearch
-html.dark .DocSearch {
-  --docsearch-logo-color: var(--c-text);
-  --docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;
-  --docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d,
-    0 2px 2px 0 rgba(3, 4, 9, 0.3);
-  --docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);
-  --docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, 0.5),
-    0 -4px 8px 0 rgba(0, 0, 0, 0.2);
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/styles/vars.scss b/docs/.vuepress/theme-coreui/src/client/styles/vars.scss
deleted file mode 100755
index 5e791a43..00000000
--- a/docs/.vuepress/theme-coreui/src/client/styles/vars.scss
+++ /dev/null
@@ -1,124 +0,0 @@
-:root {
-  // brand colors
-  --c-brand: #3eaf7c;
-  --c-brand-light: #4abf8a;
-
-  // background colors
-  --c-bg: #ffffff;
-  --c-bg-light: #f3f4f5;
-  --c-bg-lighter: #eeeeee;
-  --c-bg-navbar: var(--c-bg);
-  --c-bg-sidebar: var(--c-bg);
-  --c-bg-arrow: #cccccc;
-
-  // text colors
-  --c-text: #2c3e50;
-  --c-text-accent: var(--c-brand);
-  --c-text-light: #3a5169;
-  --c-text-lighter: #4e6e8e;
-  --c-text-lightest: #6a8bad;
-  --c-text-quote: #999999;
-
-  // border colors
-  --c-border: #eaecef;
-  --c-border-dark: #dfe2e5;
-
-  // custom container colors
-  --c-tip: #42b983;
-  --c-tip-bg: var(--c-bg-light);
-  --c-tip-title: var(--c-text);
-  --c-tip-text: var(--c-text);
-  --c-tip-text-accent: var(--c-text-accent);
-  --c-warning: #e7c000;
-  --c-warning-bg: #fffae3;
-  --c-warning-title: #ad9000;
-  --c-warning-text: #746000;
-  --c-warning-text-accent: var(--c-text);
-  --c-danger: #cc0000;
-  --c-danger-bg: #ffe0e0;
-  --c-danger-title: #990000;
-  --c-danger-text: #660000;
-  --c-danger-text-accent: var(--c-text);
-  --c-details-bg: #eeeeee;
-
-  // badge component colors
-  --c-badge-tip: var(--c-tip);
-  --c-badge-warning: var(--c-warning);
-  --c-badge-danger: var(--c-danger);
-
-  // code blocks vars
-  --code-bg-color: #282c34;
-  --code-hl-bg-color: rgba(0, 0, 0, 0.66);
-  --code-ln-color: #9e9e9e;
-  --code-ln-wrapper-width: 3.5rem;
-
-  // font vars
-  --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
-    Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
-  --font-family-code: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-
-  // layout vars
-  --navbar-height: 3.6rem;
-  --navbar-padding-v: 0.7rem;
-  --navbar-padding-h: 1.5rem;
-  --sidebar-width: 20rem;
-  --sidebar-width-mobile: calc(var(--sidebar-width) * 0.82);
-  --content-width: 960px;
-  --homepage-width: 960px;
-}
-
-// plugin-back-to-top
-.back-to-top {
-  --back-to-top-color: var(--c-brand);
-  --back-to-top-color-hover: var(--c-brand-light);
-}
-
-// plugin-docsearch
-.DocSearch {
-  --docsearch-primary-color: var(--c-brand);
-  --docsearch-text-color: var(--c-text);
-  --docsearch-highlight-color: var(--c-brand);
-  --docsearch-muted-color: var(--c-text-quote);
-  --docsearch-container-background: rgba(9, 10, 17, 0.8);
-  --docsearch-modal-background: var(--c-bg-light);
-  --docsearch-searchbox-background: var(--c-bg-lighter);
-  --docsearch-searchbox-focus-background: var(--c-bg);
-  --docsearch-searchbox-shadow: inset 0 0 0 2px var(--c-brand);
-  --docsearch-hit-color: var(--c-text-light);
-  --docsearch-hit-active-color: var(--c-bg);
-  --docsearch-hit-background: var(--c-bg);
-  --docsearch-hit-shadow: 0 1px 3px 0 var(--c-border-dark);
-  --docsearch-footer-background: var(--c-bg);
-}
-
-// plugin-medium-zoom
-.medium-zoom-overlay {
-  --medium-zoom-bg-color: var(--c-bg);
-}
-
-// plugin-nprogress
-#nprogress {
-  --nprogress-color: var(--c-brand);
-}
-
-// plugin-pwa-popup
-.pwa-popup {
-  --pwa-popup-text-color: var(--c-text);
-  --pwa-popup-bg-color: var(--c-bg);
-  --pwa-popup-border-color: var(--c-brand);
-  --pwa-popup-shadow: 0 4px 16px var(--c-brand);
-  --pwa-popup-btn-text-color: var(--c-bg);
-  --pwa-popup-btn-bg-color: var(--c-brand);
-  --pwa-popup-btn-hover-bg-color: var(--c-brand-light);
-}
-
-// plugin-search
-.search-box {
-  --search-bg-color: var(--c-bg);
-  --search-accent-color: var(--c-brand);
-  --search-text-color: var(--c-text);
-  --search-border-color: var(--c-border);
-
-  --search-item-text-color: var(--c-text-lighter);
-  --search-item-focus-bg-color: var(--c-bg-light);
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/utils/index.ts b/docs/.vuepress/theme-coreui/src/client/utils/index.ts
deleted file mode 100755
index 93f94a89..00000000
--- a/docs/.vuepress/theme-coreui/src/client/utils/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './resolveEditLink'
-export * from './resolveRepoType'
diff --git a/docs/.vuepress/theme-coreui/src/client/utils/resolveEditLink.ts b/docs/.vuepress/theme-coreui/src/client/utils/resolveEditLink.ts
deleted file mode 100755
index 58381d4b..00000000
--- a/docs/.vuepress/theme-coreui/src/client/utils/resolveEditLink.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import {
-  isLinkHttp,
-  removeLeadingSlash,
-  removeEndingSlash,
-} from '@vuepress/shared'
-import { resolveRepoType } from './resolveRepoType'
-import type { RepoType } from './resolveRepoType'
-
-export const editLinkPatterns: Record, string> = {
-  GitHub: ':repo/edit/:branch/:path',
-  GitLab: ':repo/-/edit/:branch/:path',
-  Gitee: ':repo/edit/:branch/:path',
-  Bitbucket:
-    ':repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default',
-}
-
-export const resolveEditLink = ({
-  docsRepo,
-  docsBranch,
-  docsDir,
-  filePathRelative,
-  editLinkPattern,
-}: {
-  docsRepo: string
-  docsBranch: string
-  docsDir: string
-  filePathRelative: string
-  editLinkPattern?: string
-}): string | null => {
-  const repoType = resolveRepoType(docsRepo)
-
-  let pattern: string | undefined
-
-  if (editLinkPattern) {
-    pattern = editLinkPattern
-  } else if (repoType !== null) {
-    pattern = editLinkPatterns[repoType]
-  }
-
-  if (!pattern) return null
-
-  return pattern
-    .replace(
-      /:repo/,
-      isLinkHttp(docsRepo) ? docsRepo : `https://github.com/${docsRepo}`
-    )
-    .replace(/:branch/, docsBranch)
-    .replace(
-      /:path/,
-      removeLeadingSlash(`${removeEndingSlash(docsDir)}/${filePathRelative}`)
-    )
-}
diff --git a/docs/.vuepress/theme-coreui/src/client/utils/resolveRepoType.ts b/docs/.vuepress/theme-coreui/src/client/utils/resolveRepoType.ts
deleted file mode 100755
index c63b5d22..00000000
--- a/docs/.vuepress/theme-coreui/src/client/utils/resolveRepoType.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { isLinkHttp } from '@vuepress/shared'
-
-export type RepoType = 'GitHub' | 'GitLab' | 'Gitee' | 'Bitbucket' | null
-
-export const resolveRepoType = (repo: string): RepoType => {
-  if (!isLinkHttp(repo) || /github\.com/.test(repo)) return 'GitHub'
-  if (/bitbucket\.org/.test(repo)) return 'Bitbucket'
-  if (/gitlab\.com/.test(repo)) return 'GitLab'
-  if (/gitee\.com/.test(repo)) return 'Gitee'
-  return null
-}
diff --git a/docs/.vuepress/theme-coreui/src/node/defaultTheme.ts b/docs/.vuepress/theme-coreui/src/node/defaultTheme.ts
deleted file mode 100755
index 004caec3..00000000
--- a/docs/.vuepress/theme-coreui/src/node/defaultTheme.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import type { Theme, ThemeConfig } from '@vuepress/core'
-import { path } from '@vuepress/utils'
-import type { DefaultThemeLocaleOptions, DefaultThemePluginsOptions } from '../shared'
-import {
-  assignDefaultLocaleOptions,
-  // resolveActiveHeaderLinksPluginOptions,
-  // resolveContainerPluginOptions,
-  // resolveContainerPluginOptionsForDetails,
-  // resolveContainerPluginOptionsForCodeGroup,
-  // resolveContainerPluginOptionsForCodeGroupItem,
-  resolveGitPluginOptions,
-  // resolveMediumZoomPluginOptions,
-} from './utils'
-
-export interface DefaultThemeOptions extends ThemeConfig, DefaultThemeLocaleOptions {
-  /**
-   * To avoid confusion with the root `plugins` option,
-   * we use `themePlugins`
-   */
-  themePlugins?: DefaultThemePluginsOptions
-}
-
-export const defaultTheme: Theme = ({
-  themePlugins = {},
-  ...localeOptions
-}) => {
-  assignDefaultLocaleOptions(localeOptions)
-
-  return {
-    name: '@vuepress/theme-default',
-
-    layouts: path.resolve(__dirname, '../client/layouts'),
-
-    clientAppEnhanceFiles: path.resolve(__dirname, '../client/clientAppEnhance.ts'),
-
-    clientAppSetupFiles: path.resolve(__dirname, '../client/clientAppSetup.ts'),
-
-    // use the relative file path to generate edit link
-    extendsPageData: ({ filePathRelative }) => ({ filePathRelative }),
-
-    plugins: [
-      [
-        '@vuepress/active-header-links',
-        {
-          headerLinkSelector: 'a.sidebar-item',
-          headerAnchorSelector: '.anchor-link',
-        },
-      ],
-      ['@vuepress/back-to-top', themePlugins.backToTop !== false],
-      // ['@vuepress/container', resolveContainerPluginOptions(themePlugins, localeOptions, 'tip')],
-      // [
-      //   '@vuepress/container',
-      //   resolveContainerPluginOptions(themePlugins, localeOptions, 'warning'),
-      // ],
-      // ['@vuepress/container', resolveContainerPluginOptions(themePlugins, localeOptions, 'danger')],
-      // ['@vuepress/container', resolveContainerPluginOptionsForDetails(themePlugins)],
-      // ['@vuepress/container', resolveContainerPluginOptionsForCodeGroup(themePlugins)],
-      // ['@vuepress/container', resolveContainerPluginOptionsForCodeGroupItem(themePlugins)],
-      ['@vuepress/git', resolveGitPluginOptions(themePlugins, localeOptions)],
-      // ['@vuepress/medium-zoom', resolveMediumZoomPluginOptions(themePlugins)],
-      // ['@vuepress/nprogress', themePlugins.nprogress !== false],
-      ['@vuepress/palette', { preset: 'sass' }],
-      ['@vuepress/prismjs', themePlugins.prismjs !== false],
-      ['@vuepress/theme-data', { themeData: localeOptions }],
-    ],
-  }
-}
diff --git a/docs/.vuepress/theme-coreui/src/node/utils/index.ts b/docs/.vuepress/theme-coreui/src/node/utils/index.ts
deleted file mode 100755
index 17cd5b4e..00000000
--- a/docs/.vuepress/theme-coreui/src/node/utils/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from './assignDefaultLocaleOptions'
-export * from './resolveActiveHeaderLinksPluginOptions'
-export * from './resolveContainerPluginOptions'
-export * from './resolveGitPluginOptions'
-export * from './resolveMediumZoomPluginOptions'
diff --git a/docs/.vuepress/theme-coreui/src/node/utils/resolveActiveHeaderLinksPluginOptions.ts b/docs/.vuepress/theme-coreui/src/node/utils/resolveActiveHeaderLinksPluginOptions.ts
deleted file mode 100755
index ed52e8f9..00000000
--- a/docs/.vuepress/theme-coreui/src/node/utils/resolveActiveHeaderLinksPluginOptions.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { ActiveHeaderLinksPluginOptions } from '@vuepress/plugin-active-header-links'
-import type { DefaultThemePluginsOptions } from '../../shared'
-
-/**
- * Resolve options for @vuepress/plugin-active-header-links
- */
-export const resolveActiveHeaderLinksPluginOptions = (
-  themePlugins: DefaultThemePluginsOptions
-): ActiveHeaderLinksPluginOptions | boolean => {
-  if (themePlugins?.activeHeaderLinks === false) {
-    return false
-  }
-
-  return {
-    headerLinkSelector: 'a.sidebar-item',
-    headerAnchorSelector: '.anchor-link',
-  }
-}
diff --git a/docs/.vuepress/theme-coreui/src/node/utils/resolveContainerPluginOptions.ts b/docs/.vuepress/theme-coreui/src/node/utils/resolveContainerPluginOptions.ts
deleted file mode 100755
index 5d6ec139..00000000
--- a/docs/.vuepress/theme-coreui/src/node/utils/resolveContainerPluginOptions.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import type { ContainerPluginOptions } from '@vuepress/plugin-container'
-import type { DefaultThemePluginsOptions, DefaultThemeData } from '../../shared'
-
-/**
- * Resolve options for @vuepress/plugin-container
- *
- * For custom containers default title
- */
-export const resolveContainerPluginOptions = (
-  themePlugins: DefaultThemePluginsOptions,
-  localeOptions: DefaultThemeData,
-  type: 'tip' | 'warning' | 'danger'
-): ContainerPluginOptions | boolean => {
-  if (themePlugins?.container?.[type] === false) {
-    return false
-  }
-
-  const locales = Object.entries(localeOptions.locales || {}).reduce(
-    (result, [key, value]) => {
-      result[key] = {
-        defaultInfo: value?.[type] ?? localeOptions[type],
-      }
-      return result
-    },
-    {}
-  )
-
-  return {
-    type,
-    locales,
-  }
-}
-
-/**
- * Resolve options for @vuepress/plugin-container
- *
- * For details container
- */
-export const resolveContainerPluginOptionsForDetails = (
-  themePlugins: DefaultThemePluginsOptions
-): ContainerPluginOptions | boolean => {
-  if (themePlugins?.container?.details === false) {
-    return false
-  }
-
-  return {
-    type: 'details',
-    before: (info) =>
-      `
${ - info ? `${info}` : '' - }\n`, - after: () => '
\n', - } -} - -/** - * Resolve options for @vuepress/plugin-container - * - * For code-group container - */ -export const resolveContainerPluginOptionsForCodeGroup = ( - themePlugins: DefaultThemePluginsOptions -): ContainerPluginOptions | boolean => { - if (themePlugins?.container?.codeGroup === false) { - return false - } - - return { - type: 'code-group', - before: () => `\n`, - after: () => '\n', - } -} - -/** - * Resolve options for @vuepress/plugin-container - * - * For code-group-item block - */ -export const resolveContainerPluginOptionsForCodeGroupItem = ( - themePlugins: DefaultThemePluginsOptions -): ContainerPluginOptions | boolean => { - if (themePlugins?.container?.codeGroupItem === false) { - return false - } - - return { - type: 'code-group-item', - before: (info) => `\n`, - after: () => '\n', - } -} diff --git a/docs/.vuepress/theme-coreui/src/node/utils/resolveGitPluginOptions.ts b/docs/.vuepress/theme-coreui/src/node/utils/resolveGitPluginOptions.ts deleted file mode 100755 index a7348e3c..00000000 --- a/docs/.vuepress/theme-coreui/src/node/utils/resolveGitPluginOptions.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { GitPluginOptions } from '@vuepress/plugin-git' -import type { - DefaultThemePluginsOptions, - DefaultThemeLocaleOptions, -} from '../../shared' - -/** - * Resolve options for @vuepress/plugin-git - */ -export const resolveGitPluginOptions = ( - themePlugins: DefaultThemePluginsOptions, - localeOptions: DefaultThemeLocaleOptions -): GitPluginOptions | boolean => { - if (themePlugins?.git === false) { - return false - } - - const enableUpdatedTime = localeOptions.lastUpdated !== false - const enableContributors = localeOptions.contributors !== false - - if (!enableUpdatedTime && !enableContributors) { - return false - } - - return { - createdTime: false, - updatedTime: enableUpdatedTime, - contributors: enableContributors, - } -} diff --git a/docs/.vuepress/theme-coreui/src/node/utils/resolveMediumZoomPluginOptions.ts b/docs/.vuepress/theme-coreui/src/node/utils/resolveMediumZoomPluginOptions.ts deleted file mode 100755 index e8fe2e35..00000000 --- a/docs/.vuepress/theme-coreui/src/node/utils/resolveMediumZoomPluginOptions.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { MediumZoomPluginOptions } from '@vuepress/plugin-medium-zoom' -import type { DefaultThemePluginsOptions } from '../../shared' - -/** - * Resolve options for @vuepress/plugin-medium-zoom - */ -export const resolveMediumZoomPluginOptions = ( - themePlugins: DefaultThemePluginsOptions -): MediumZoomPluginOptions | boolean => { - if (themePlugins?.mediumZoom === false) { - return false - } - - return { - selector: - '.theme-default-content > img, .theme-default-content :not(a) > img', - zoomOptions: {}, - // should greater than page transition duration - delay: 400, - } -} diff --git a/docs/api/accordion/CAccordion.api.md b/docs/api/accordion/CAccordion.api.md deleted file mode 100644 index 6da632ab..00000000 --- a/docs/api/accordion/CAccordion.api.md +++ /dev/null @@ -1,15 +0,0 @@ -### CAccordion - -```jsx -import { CAccordion } from '@coreui/vue' -// or -import CAccordion from '@coreui/vue/src/components/accordion/CAccordion' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------ | ------- | -| **activeItemKey** | The active item key. | number\|string | - | - | -| **alwaysOpen** | Make accordion items stay open when another item is opened | boolean | - | | -| **flush** | Removes the default background-color, some borders, and some rounded corners to render accordions edge-to-edge with their parent container. | boolean | - | | diff --git a/docs/api/accordion/CAccordionCollapse.api.md b/docs/api/accordion/CAccordionCollapse.api.md deleted file mode 100644 index 38f678dd..00000000 --- a/docs/api/accordion/CAccordionCollapse.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CAccordionCollapse - -```jsx -import { CAccordionCollapse } from '@coreui/vue' -// or -import CAccordionCollapse from '@coreui/vue/src/components/accordion/CAccordionCollapse' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ----------------------------------- | ------- | ------ | ------- | -| **visible** | Toggle the visibility of component. | boolean | - | | diff --git a/docs/api/accordion/CAccordionItem.api.md b/docs/api/accordion/CAccordionItem.api.md deleted file mode 100644 index 82c14b88..00000000 --- a/docs/api/accordion/CAccordionItem.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CAccordionItem - -```jsx -import { CAccordionItem } from '@coreui/vue' -// or -import CAccordionItem from '@coreui/vue/src/components/accordion/CAccordionItem' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | ------------- | -------------- | ------ | ------- | -| **itemKey** | The item key. | number\|string | - | - | diff --git a/docs/api/avatar/CAvatar.api.md b/docs/api/avatar/CAvatar.api.md deleted file mode 100644 index 473072d0..00000000 --- a/docs/api/avatar/CAvatar.api.md +++ /dev/null @@ -1,18 +0,0 @@ -### CAvatar - -```jsx -import { CAvatar } from '@coreui/vue' -// or -import CAvatar from '@coreui/vue/src/components/avatar/CAvatar' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | -------------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | | -| **shape** | Select the shape of the component. | string | `'rounded'`, `'rounded-top'`, `'rounded-end'`, `'rounded-bottom'`, `'rounded-start'`, `'rounded-circle'`, `'rounded-pill'`, `'rounded-0'`, `'rounded-1'`, `'rounded-2'`, `'rounded-3'` | | -| **size** | Size the component small, large, or extra large. | string | `'sm'`, `'md'`, `'lg'`, `'xl'` | - | -| **src** | The src attribute for the img element. | string | - | - | -| **status** | Sets the color context of the status indicator to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **textColor** | Sets the text color of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `'white'`, `'muted'`, `'high-emphasis'`, `'medium-emphasis'`, `'disabled'`, `'high-emphasis-inverse'`, `'medium-emphasis-inverse'`, `'disabled-inverse'` | | diff --git a/docs/api/badge/CBadge.api.md b/docs/api/badge/CBadge.api.md deleted file mode 100644 index 1b3ae804..00000000 --- a/docs/api/badge/CBadge.api.md +++ /dev/null @@ -1,18 +0,0 @@ -### CBadge - -```jsx -import { CBadge } from '@coreui/vue' -// or -import CBadge from '@coreui/vue/src/components/badge/CBadge' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | --------------------------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | | -| **component** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'span' | -| **position** | Position badge in one of the corners of a link or button. | string | `'top-start'`, `'top-end'`, `'bottom-end'`, `'botttom-start'` | - | -| **shape** | Select the shape of the component. | string | `'rounded'`, `'rounded-top'`, `'rounded-end'`, `'rounded-bottom'`, `'rounded-start'`, `'rounded-circle'`, `'rounded-pill'`, `'rounded-0'`, `'rounded-1'`, `'rounded-2'`, `'rounded-3'` | | -| **size** | Size the component small. | string | `'sm'` | - | -| **textColor** | Sets the text color of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `'white'`, `'muted'`, `'high-emphasis'`, `'medium-emphasis'`, `'disabled'`, `'high-emphasis-inverse'`, `'medium-emphasis-inverse'`, `'disabled-inverse'` | | diff --git a/docs/api/button/CButton.api.md b/docs/api/button/CButton.api.md deleted file mode 100644 index 739baa9b..00000000 --- a/docs/api/button/CButton.api.md +++ /dev/null @@ -1,20 +0,0 @@ -### CButton - -```jsx -import { CButton } from '@coreui/vue' -// or -import CButton from '@coreui/vue/src/components/button/CButton' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | --------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| **active** | Toggle the active state for the component. | boolean | - | false | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | | -| **component** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'button' | -| **disabled** | Toggle the disabled state for the component. | boolean | - | | -| **href** | The href attribute specifies the URL of the page the link goes to. | string | - | - | -| **shape** | Select the shape of the component. | string | `'rounded'`, `'rounded-top'`, `'rounded-end'`, `'rounded-bottom'`, `'rounded-start'`, `'rounded-circle'`, `'rounded-pill'`, `'rounded-0'`, `'rounded-1'`, `'rounded-2'`, `'rounded-3'` | | -| **size** | Size the component small or large. | string | `'sm'`, `'lg'` | - | -| **variant** | Set the button variant to an outlined button or a ghost button. | string | `'ghost'`, `'outline'` | - | diff --git a/docs/api/card/CCard.api.md b/docs/api/card/CCard.api.md deleted file mode 100644 index 660fc31a..00000000 --- a/docs/api/card/CCard.api.md +++ /dev/null @@ -1,14 +0,0 @@ -### CCard - -```jsx -import { CCard } from '@coreui/vue' -// or -import CCard from '@coreui/vue/src/components/card/CCard' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | ------------------------------------------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | | -| **textColor** | Sets the text color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `'white'`, `'muted'`, `'high-emphasis'`, `'medium-emphasis'`, `'disabled'`, `'high-emphasis-inverse'`, `'medium-emphasis-inverse'`, `'disabled-inverse'` | | diff --git a/docs/api/dropdown/CDropdown.api.md b/docs/api/dropdown/CDropdown.api.md deleted file mode 100644 index e74610a4..00000000 --- a/docs/api/dropdown/CDropdown.api.md +++ /dev/null @@ -1,28 +0,0 @@ -### CDropdown - -```jsx -import { CDropdown } from '@coreui/vue' -// or -import CDropdown from '@coreui/vue/src/components/dropdown/CDropdown' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -| **alignment** | Set aligment of dropdown menu. | string\|object | `{ 'start' \| 'end' \| { xs: 'start' \| 'end' } \| { sm: 'start' \| 'end' } \| { md: 'start' \| 'end' } \| { lg: 'start' \| 'end' } \| { xl: 'start' \| 'end'} \| { xxl: 'start' \| 'end'} }` | - | -| **dark** | Sets a darker color scheme to match a dark navbar. | boolean | - | | -| **direction** | Sets a specified direction and location of the dropdown menu. | string | `'dropup'`, `'dropend'`, `'dropstart'` | - | -| **disabled** | Toggle the disabled state for the component. | boolean | - | | -| **placement** | Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. | Placement | `'auto'`, `'top-end'`, `'top'`, `'top-start'`, `'bottom-end'`, `'bottom'`, `'bottom-start'`, `'right-start'`, `'right'`, `'right-end'`, `'left-start'`, `'left'`, `'left-end'` | 'bottom-start' | -| **popper** | If you want to disable dynamic positioning set this property to `true`. | boolean | - | true | -| **trigger** | Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. | string\|array | - | 'click' | -| **variant** | Set the dropdown variant to an btn-group, dropdown, input-group, and nav-item. | string | `'btn-group'`, `'dropdown'`, `'input-group'`, `'nav-item'` | 'btn-group' | -| **visible** | Toggle the visibility of dropdown menu component. | boolean | - | | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/docs/api/form/CFormCheck.api.md b/docs/api/form/CFormCheck.api.md deleted file mode 100644 index e4e10452..00000000 --- a/docs/api/form/CFormCheck.api.md +++ /dev/null @@ -1,19 +0,0 @@ -### CFormCheck - -```jsx -import { CFormCheck } from '@coreui/vue' -// or -import CFormCheck from '@coreui/vue/src/components/form/CFormCheck' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ---------- | -| **button** | Create button-like checkboxes and radio buttons. | string({
/**
_ Sets the color context of the component to one of CoreUI’s themed colors.
_
_ @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light'
_/
color: Color,
/**
_ Select the shape of the component.
_
_ @values 'rounded', 'rounded-top', 'rounded-end', 'rounded-bottom', 'rounded-start', 'rounded-circle', 'rounded-pill', 'rounded-0', 'rounded-1', 'rounded-2', 'rounded-3'
_/
shape: Shape,
/**
_ Size the component small or large.
_
_ @values 'sm' \| 'lg'
_/
size: {
type: String,
default: undefined,
required: false,
validator: (value: string) => {
return ['sm', 'lg'].includes(value)
},
},
/**
_ Set the button variant to an outlined button or a ghost button.
_/
variant: {
type: String,
default: undefined,
required: false,
validator: (value: string) => {
return ['outline', 'ghost'].includes(value)
},
},
}) | - | | -| **id** | The id global attribute defines an identifier (ID) that must be unique in the whole document. | string | - | - | -| **inline** | Group checkboxes or radios on the same horizontal row by adding. | boolean | - | | -| **invalid** | Set component validation state to invalid. | boolean | - | | -| **label** | The element represents a caption for a component. | string | - | - | -| **type** | Specifies the type of component. | string | `'checkbox'`, `'radio'` | 'checkbox' | -| **valid** | Set component validation state to valid. | boolean | - | | diff --git a/docs/api/form/CFormInput.api.md b/docs/api/form/CFormInput.api.md deleted file mode 100644 index 8e6e39fa..00000000 --- a/docs/api/form/CFormInput.api.md +++ /dev/null @@ -1,19 +0,0 @@ -### CFormInput - -```jsx -import { CFormInput } from '@coreui/vue' -// or -import CFormInput from '@coreui/vue/src/components/form/CFormInput' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | --------------------------------------- | ------- | -| **disabled** | Toggle the disabled state for the component. | boolean | - | | -| **invalid** | Set component validation state to invalid. | boolean | - | | -| **plainText** | Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use only along side `readonly`. | boolean | - | | -| **readonly** | Toggle the readonly state for the component. | boolean | - | | -| **size** | Size the component small or large. | string | `'sm' \| 'lg'` | - | -| **type** | Specifies the type of component. | string | `'color' \| 'file' \| 'text' \| string` | 'text' | -| **valid** | Set component validation state to valid. | boolean | - | | diff --git a/docs/api/form/CFormLabel.api.md b/docs/api/form/CFormLabel.api.md deleted file mode 100644 index 3aa5991a..00000000 --- a/docs/api/form/CFormLabel.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CFormLabel - -```jsx -import { CFormLabel } from '@coreui/vue' -// or -import CFormLabel from '@coreui/vue/src/components/form/CFormLabel' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------------- | --------------------------------------------------------------------------------------------------------- | ------------- | ------ | ------- | -| **customClassName** | A string of all className you want to be applied to the component, and override standard className value. | array\|string | - | - | diff --git a/docs/api/form/CFormRange.api.md b/docs/api/form/CFormRange.api.md deleted file mode 100644 index 892a59a3..00000000 --- a/docs/api/form/CFormRange.api.md +++ /dev/null @@ -1,18 +0,0 @@ -### CFormRange - -```jsx -import { CFormRange } from '@coreui/vue' -// or -import CFormRange from '@coreui/vue/src/components/form/CFormRange' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------ | ---------------------------------------------------------------- | ------- | ------ | ------- | -| **disabled** | Toggle the disabled state for the component. | boolean | - | - | -| **max** | Specifies the maximum value for the component. | number | - | - | -| **min** | Specifies the minimum value for the component. | number | - | - | -| **readonly** | Toggle the readonly state for the component. | boolean | - | | -| **steps** | Specifies the interval between legal numbers in the component. | number | - | - | -| **value** | The `value` attribute of component.
`@controllable` onChange | number | - | - | diff --git a/docs/api/form/CFormSelect.api.md b/docs/api/form/CFormSelect.api.md deleted file mode 100644 index fe8e76cb..00000000 --- a/docs/api/form/CFormSelect.api.md +++ /dev/null @@ -1,16 +0,0 @@ -### CFormSelect - -```jsx -import { CFormSelect } from '@coreui/vue' -// or -import CFormSelect from '@coreui/vue/src/components/form/CFormSelect' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------ | ------------------------------------------------------------ | ------- | -------------- | ------- | -| **htmlSize** | Specifies the number of visible options in a drop-down list. | number | - | - | -| **invalid** | Set component validation state to invalid. | boolean | - | | -| **size** | Size the component small or large. | string | `'sm' \| 'lg'` | - | -| **valid** | Set component validation state to valid. | boolean | - | | diff --git a/docs/api/form/CFormSwitch.api.md b/docs/api/form/CFormSwitch.api.md deleted file mode 100644 index 350d5e7a..00000000 --- a/docs/api/form/CFormSwitch.api.md +++ /dev/null @@ -1,18 +0,0 @@ -### CFormSwitch - -```jsx -import { CFormSwitch } from '@coreui/vue' -// or -import CFormSwitch from '@coreui/vue/src/components/form/CFormSwitch' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------- | -------------------------------------------------------------------------------------------- | ------- | ----------------------- | ---------- | -| **id** | The id global attribute defines an identifier (ID) that must be unique in the whole document | string | - | - | -| **invalid** | Set component validation state to invalid. | boolean | - | | -| **label** | The element represents a caption for a component. | string | - | - | -| **size** | Size the component large or extra large. Works only with `switch`. | string | `'lg' \| 'xl'` | - | -| **type** | Specifies the type of component. | string | `'checkbox'`, `'radio'` | 'checkbox' | -| **valid** | Set component validation state to valid. | boolean | - | | diff --git a/docs/api/form/CFormTextarea.api.md b/docs/api/form/CFormTextarea.api.md deleted file mode 100644 index 05b9a61a..00000000 --- a/docs/api/form/CFormTextarea.api.md +++ /dev/null @@ -1,17 +0,0 @@ -### CFormTextarea - -```jsx -import { CFormTextarea } from '@coreui/vue' -// or -import CFormTextarea from '@coreui/vue/src/components/form/CFormTextarea' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ------ | ------- | -| **disabled** | Toggle the disabled state for the component. | boolean | - | | -| **invalid** | Set component validation state to invalid. | boolean | - | | -| **plainText** | Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use only along side `readonly`. | boolean | - | | -| **readonly** | Toggle the readonly state for the component. | boolean | - | | -| **valid** | Set component validation state to valid. | boolean | - | | diff --git a/docs/api/modal/CModal.api.md b/docs/api/modal/CModal.api.md deleted file mode 100644 index 62c41039..00000000 --- a/docs/api/modal/CModal.api.md +++ /dev/null @@ -1,29 +0,0 @@ -### CModal - -```jsx -import { CModal } from '@coreui/vue' -// or -import CModal from '@coreui/vue/src/components/modal/CModal' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------- | -------------------------------------------------- | ------- | -| **alignment** | Align the modal in the center or top of the screen. | string | `'top'`, `'center'` | 'top' | -| **backdrop** | Apply a backdrop on body while offcanvas is open. | boolean\|string | `'static'` | true | -| **className** | A string of all className you want applied to the modal content component.
TODO: Consider if we should change this prop name to describe better its role. | string | - | - | -| **fullscreen** | Set modal to covers the entire user viewport | boolean\|string | `boolean`, `'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'` | - | -| **keyboard** | Closes the modal when escape key is pressed. | boolean | - | true | -| **scrollable** | Create a scrollable modal that allows scrolling the modal body. | boolean | - | | -| **size** | Size the component small, large, or extra large. | string | `'sm'`, `'lg'`, `'xl'` | - | -| **transition** | Remove animation to create modal that simply appear rather than fade in to view. | boolean | - | true | -| **visible** | Toggle the visibility of alert component. | boolean | - | | - -#### Events - -| Event name | Description | Properties | -| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | -| **close** | Callback fired when the component requests to be closed. | -| **close-prevented** | Callback fired when the component requests to be closed. | -| **show** | Callback fired when the modal is shown, its backdrop is static and a click outside the modal or an escape key press is performed with the keyboard option set to false. | diff --git a/docs/api/modal/CModalHeader.api.md b/docs/api/modal/CModalHeader.api.md deleted file mode 100644 index 62160484..00000000 --- a/docs/api/modal/CModalHeader.api.md +++ /dev/null @@ -1,13 +0,0 @@ -### CModalHeader - -```jsx -import { CModalHeader } from '@coreui/vue' -// or -import CModalHeader from '@coreui/vue/src/components/modal/CModalHeader' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------------- | ------------------------------------------- | ------- | ------ | ------- | -| **closeButton** | Add a close button component to the header. | boolean | - | true | diff --git a/docs/api/navbar/CNavbar.api.md b/docs/api/navbar/CNavbar.api.md deleted file mode 100644 index 9f8deb71..00000000 --- a/docs/api/navbar/CNavbar.api.md +++ /dev/null @@ -1,18 +0,0 @@ -### CNavbar - -```jsx -import { CNavbar } from '@coreui/vue' -// or -import CNavbar from '@coreui/vue/src/components/navbar/CNavbar' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------------- | --------------------------------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------- | ------- | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | | -| **colorScheme** | Sets if the color of text should be colored for a light or dark dark background. | string | `'dark'`, `'light'` | - | -| **component** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'nav' | -| **container** | Defines optional container wrapping children elements. | boolean\|string | `boolean`, `'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'`, `'fluid'` | - | -| **expand** | Defines the responsive breakpoint to determine when content collapses. | boolean\|string | `boolean`, `'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'` | - | -| **placement** | Place component in non-static positions. | string | `'fixed-top'`, `'fixed-bottom'`, `'sticky-top'` | - | diff --git a/docs/api/offcanvas/COffcanvas.api.md b/docs/api/offcanvas/COffcanvas.api.md deleted file mode 100644 index 19f01df5..00000000 --- a/docs/api/offcanvas/COffcanvas.api.md +++ /dev/null @@ -1,24 +0,0 @@ -### COffcanvas - -```jsx -import { COffcanvas } from '@coreui/vue' -// or -import COffcanvas from '@coreui/vue/src/components/offcanvas/COffcanvas' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | --------------------------------------------------- | ------- | --------------------------------------- | ------- | -| **backdrop** | Apply a backdrop on body while offcanvas is open. | boolean | - | true | -| **keyboard** | Closes the offcanvas when escape key is pressed. | boolean | - | true | -| **placement** | Components placement, there’s no default placement. | string | `'start'`, `'end'`, `'top'`, `'bottom'` | - | -| **scroll** | Allow body scrolling while offcanvas is open | boolean | - | false | -| **visible** | Toggle the visibility of offcanvas component. | boolean | - | | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/docs/api/popover/CPopover.api.md b/docs/api/popover/CPopover.api.md deleted file mode 100644 index c2b9b1fe..00000000 --- a/docs/api/popover/CPopover.api.md +++ /dev/null @@ -1,25 +0,0 @@ -### CPopover - -```jsx -import { CPopover } from '@coreui/vue' -// or -import CPopover from '@coreui/vue/src/components/popover/CPopover' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------- | ------- | -| **content** | Content for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **offset** | Offset of the popover relative to its target. | array | - | [0, 8] | -| **placement** | Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. | Placement | - | 'top' | -| **title** | Title for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **trigger** | Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. | string \| string[] | `'click'`, `'focus'`, `'hover'` | 'click' | -| **visible** | Toggle the visibility of popover component. | boolean | - | | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/docs/api/spinner/CSpinner.api.md b/docs/api/spinner/CSpinner.api.md deleted file mode 100644 index c0ae3f12..00000000 --- a/docs/api/spinner/CSpinner.api.md +++ /dev/null @@ -1,17 +0,0 @@ -### CSpinner - -```jsx -import { CSpinner } from '@coreui/vue' -// or -import CSpinner from '@coreui/vue/src/components/spinner/CSpinner' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ----------------------- | --------------------------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------- | ------------ | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | -| **component** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'div' | -| **size** | Size the component small. | string | `'sm'` | - | -| **variant** | Set the button variant to an outlined button or a ghost button. | string | `'border'`, `'grow'` | 'border' | -| **visuallyHiddenLabel** | Set visually hidden label for accessibility purposes. | string | - | 'Loading...' | diff --git a/docs/api/table/CTable.api.md b/docs/api/table/CTable.api.md deleted file mode 100644 index 5b0e3a34..00000000 --- a/docs/api/table/CTable.api.md +++ /dev/null @@ -1,22 +0,0 @@ -### CTable - -```jsx -import { CTable } from '@coreui/vue' -// or -import CTable from '@coreui/vue/src/components/table/CTable' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| --------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------- | --------------------------------------------------------------------------------------------------------- | ------- | -| **align** | Set the vertical aligment. | string | `'bottom'`, `'middle'`, `'top'` | - | -| **borderColor** | Sets the border color of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | | -| **bordered** | Add borders on all sides of the table and cells. | boolean | - | | -| **borderless** | Remove borders on all sides of the table and cells. | boolean | - | | -| **caption** | Put the `` on the top of the table. | string | `'top'` | - | -| **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'`, `string` | | -| **hover** | Enable a hover state on table rows within a ``. | boolean | - | | -| **responsive** | Make any table responsive across all viewports or pick a maximum breakpoint with which to have a responsive table up to. | boolean\|string | `boolean`, `'sm'`, `'md'`, `'lg'`, `'xl'`, `'xxl'` | - | -| **small** | Make table more compact by cutting all cell `padding` in half. | boolean | - | | -| **striped** | Add zebra-striping to any table row within the ``. | boolean | - | | diff --git a/docs/api/tooltip/CTooltip.api.md b/docs/api/tooltip/CTooltip.api.md deleted file mode 100644 index 083d8a9a..00000000 --- a/docs/api/tooltip/CTooltip.api.md +++ /dev/null @@ -1,24 +0,0 @@ -### CTooltip - -```jsx -import { CTooltip } from '@coreui/vue' -// or -import CTooltip from '@coreui/vue/src/components/tooltip/CTooltip' -``` - -#### Props - -| Prop name | Description | Type | Values | Default | -| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------- | ------- | -| **content** | Content for your component. If you want to pass non-string value please use dedicated slot `` | string | - | - | -| **offset** | Offset of the tooltip relative to its target. | array | - | [0, 0] | -| **placement** | Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property. | Placement | - | 'top' | -| **trigger** | Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them. | string \| string[] | `'click'`, `'focus'`, `'hover'` | 'hover' | -| **visible** | Toggle the visibility of tooltip component. | boolean | - | | - -#### Events - -| Event name | Description | Properties | -| ---------- | -------------------------------------------------------- | ---------- | -| **hide** | Callback fired when the component requests to be hidden. | -| **show** | Callback fired when the component requests to be shown. | diff --git a/docs/forms/validation.md b/docs/forms/validation.md deleted file mode 100644 index 1236689f..00000000 --- a/docs/forms/validation.md +++ /dev/null @@ -1,620 +0,0 @@ ---- -title: Vue Form Validation -name: Validation -description: Provide valuable, actionable feedback to your users with HTML5 form validation, via browser default behaviors or custom styles and JavaScript. ---- - -## Custom styles - -For custom CoreUI form validation messages, you'll need to add the `noValidate` boolean property to your ``. This disables the browser default feedback tooltips, but still provides access to the form validation APIs in JavaScript. Try to submit the form below; our JavaScript will intercept the submit button and relay feedback to you. When attempting to submit, you'll see the `:invalid` and `:valid` styles applied to your form controls. - -Custom feedback styles apply custom colors, borders, focus styles, and background icons to better communicate feedback. - -::: demo - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - - - You must agree before submitting. - - - - Submit form - - -::: -```vue - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - - - You must agree before submitting. - - - - Submit form - - -``` - -## Browser defaults - -Not interested in custom validation feedback messages or writing JavaScript to change form behaviors? All good, you can use the browser defaults. Try submitting the form below. Depending on your browser and OS, you'll see a slightly different style of feedback. - -While these feedback styles cannot be styled with CSS, you can still customize the feedback text through JavaScript. - -::: demo - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - - - You must agree before submitting. - - - - Submit form - - -::: -```vue - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - - - You must agree before submitting. - - - - Submit form - - -``` - -## Server side - -We recommend using client-side validation, but in case you require server-side validation, you can indicate invalid and valid form fields with `invalid` and `valid` boolean properties. - -For invalid fields, ensure that the invalid feedback/error message is associated with the relevant form field using `aria-describedby` (noting that this attribute allows more than one `id` to be referenced, in case the field already points to additional form text). - - -::: demo - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - - - You must agree before submitting. - - - - Submit form - - -::: -```vue - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - - - You must agree before submitting. - - - - Submit form - - -``` - -## Supported elements - -Validation styles are available for the following form controls and components: - -- ``s -- ``s -- ``s -- ``s - -::: demo - -
- Textarea - - - Please enter a message in the textarea. - -
- - Example invalid feedback text - - - More example invalid feedback text -
- - - - - - - Example invalid select feedback -
-
- - Example invalid form file feedback -
-
- Submit form -
-
-::: -```vue - -
- Textarea - - - Please enter a message in the textarea. - -
- - Example invalid feedback text - - - More example invalid feedback text -
- - - - - - - Example invalid select feedback -
-
- - Example invalid form file feedback -
-
- Submit form -
-
-``` - -## Tooltips - -If your form layout allows it, you can swap the text for the tooltip to display validation feedback in a styled tooltip. Be sure to have a parent with `position: relative` on it for tooltip positioning. In the example below, our column classes have this already, but your project may require an alternative setup. - -::: demo - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - Submit form - - -::: -```vue - - - Email - - - Looks good! - - - - Email - - - Looks good! - - - - Username - - @ - - - Please choose a username. - - - - - City - - - Please provide a valid city. - - - - City - - - - - - Please provide a valid city. - - - - City - - - Please provide a valid zip. - - - - Submit form - - -``` - - \ No newline at end of file diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..d8c6d770 --- /dev/null +++ b/lerna.json @@ -0,0 +1,6 @@ +{ + "npmClient": "yarn", + "packages": ["packages/*"], + "version": "4.10.2", + "$schema": "node_modules/lerna/schemas/lerna-schema.json" +} diff --git a/package.json b/package.json index 4fdb2c3c..048e9734 100644 --- a/package.json +++ b/package.json @@ -1,114 +1,39 @@ { - "name": "@coreui/vue", - "description": "UI Components Library for Vue.js", - "version": "4.0.0-rc.4", - "config": { - "version_short": "4.0" - }, - "main": "dist/index.js", - "module": "dist/index.esm.js", - "types": "dist/index.d.ts", - "files": [ - "src", - "dist" + "private": true, + "workspaces": [ + "packages/*" ], "scripts": { - "build": "rollup -c", - "changelog": "auto-changelog --template build/changelog-template.hbs --commit-limit false --package --backfill-limit 0 --starting-version v4.0.0-alpha.0", - "docs:api": "vue-docgen -c build/docgen.config.js", - "docs:dev": "vuepress dev docs --clean-cache", - "docs:build": "vuepress build docs", - "lint": "eslint 'src/components/**/*.{js,ts,tsx}'", - "test": "jest", - "test:u": "jest -u", - "test:clear": "jest --clearCache", - "test:coverage": "jest --coverage" - }, - "homepage": "https://coreui.io/vue/", - "author": "The CoreUI Team (https://github.com/orgs/coreui/people)", - "repository": { - "type": "git", - "url": "git+https://github.com/coreui/coreui-vue.git" + "charts:build": "lerna run --scope \"@coreui/vue-chartjs\" build --stream", + "charts:test": "lerna run --scope \"@coreui/vue-chartjs\" test --stream", + "charts:test:update": "lerna run --scope \"@coreui/vue-chartjs\" test:update --stream", + "docs:api": "lerna run --scope \"@coreui/vue-docs\" api --stream", + "docs:dev": "lerna run --scope \"@coreui/vue-docs\" dev --stream", + "docs:build": "lerna run --scope \"@coreui/vue-docs\" build --stream", + "docs:dist": "lerna run --scope \"@coreui/vue-docs\" dist --stream", + "icons:build": "lerna run --scope \"@coreui/icons-vue\" build --stream", + "icons:test": "lerna run --scope \"@coreui/icons-vue\" test --stream", + "icons:test:update": "lerna run --scope \"@coreui/icons-vue\" test:update --stream", + "lib:build": "lerna run --scope \"@coreui/vue\" build --stream", + "lib:test": "lerna run --scope \"@coreui/vue\" test --stream", + "lib:test:update": "lerna run --scope \"@coreui/vue\" test:update --stream", + "lint": "eslint \"packages/**/src/**/*.{js,ts,tsx}\"", + "test": "npm-run-all charts:test icons:test lib:test", + "test:update": "npm-run-all charts:test:update icons:test:update lib:test:update" }, - "bugs": { - "url": "https://github.com/coreui/coreui-vue/issues" - }, - "license": "MIT", "devDependencies": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/preset-env": "^7.15.8", - "@babel/preset-typescript": "^7.15.0", - "@coreui/coreui": "^4.0.4", - "@coreui/icons": "^2.0.1", - "@coreui/icons-vue": "^2.0.0-rc.0", - "@coreui/vue-chartjs": "^2.0.0-rc.0", - "@popperjs/core": "^2.10.2", - "@rollup/plugin-commonjs": "^21.0.0", - "@rollup/plugin-node-resolve": "^13.0.5", - "@rollup/plugin-typescript": "^8.2.5", - "@types/jest": "^27.0.2", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", - "@vue/compiler-sfc": "^3.2.20", - "@vue/eslint-config-prettier": "^6.0.0", - "@vue/eslint-config-typescript": "^7.0.0", - "@vue/server-renderer": "^3.2.20", - "@vue/test-utils": "^2.0.0-0", - "@vuepress/plugin-toc": "^2.0.0-beta.24", - "auto-changelog": "^2.3.0", - "babel-loader": "^8.2.2", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-vue": "^7.19.1", - "jest": "^27.2.5", - "markdown-it-include": "^2.0.0", - "postcss": "^8.3.9", - "postcss-loader": "^6.1.1", - "prettier": "^2.4.1", - "requires": "^1.0.2", - "rollup": "^2.58.0", - "rollup-plugin-peer-deps-external": "^2.2.4", - "rollup-plugin-vue": "^6.0.0", - "ts-jest": "^27.0.5", - "typescript": "4.4.3", - "vue": "^3.2.6", - "vue-docgen-cli": "^4.41.2", - "vue-github-button": "^3.0.1", - "vue-jest": "^5.0.0-0", - "vue-prism-component": "^2.0.0", - "vue-router": "^4.0.11", - "vue-types": "^4.1.0", - "vuepress": "^2.0.0-beta.24" - }, - "peerDependencies": { - "@coreui/coreui": "^4.0.4", - "vue": "^3.2.5" - }, - "jest": { - "preset": "ts-jest", - "testEnvironment": "jsdom", - "moduleFileExtensions": [ - "tsx", - "js", - "ts", - "json", - "vue" - ], - "transform": { - ".*\\.(ts)$": "ts-jest", - ".*\\.(vue)$": "vue-jest" - } - }, - "standard": { - "ignore": [ - "node_modules/", - "build/" - ] - }, - "dependencies": { - "@rollup/plugin-babel": "^5.3.0" + "@typescript-eslint/eslint-plugin": "^5.61.0", + "@typescript-eslint/parser": "^5.61.0", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/vue3-jest": "29.2.4", + "eslint": "8.44.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-vue": "^9.15.1", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-unicorn": "^47.0.0", + "lerna": "^7.1.1", + "npm-run-all": "^4.1.5", + "prettier": "^3.0.0" } } diff --git a/packages/coreui-icons-vue b/packages/coreui-icons-vue new file mode 160000 index 00000000..4caafa13 --- /dev/null +++ b/packages/coreui-icons-vue @@ -0,0 +1 @@ +Subproject commit 4caafa13b155f5f915c3a2a05dbd6d74a1ef8977 diff --git a/packages/coreui-vue-chartjs b/packages/coreui-vue-chartjs new file mode 160000 index 00000000..cc734c3a --- /dev/null +++ b/packages/coreui-vue-chartjs @@ -0,0 +1 @@ +Subproject commit cc734c3abd6797191096be80e2b0429b37990f25 diff --git a/packages/coreui-vue/.browserslistrc b/packages/coreui-vue/.browserslistrc new file mode 100644 index 00000000..bd3ad98e --- /dev/null +++ b/packages/coreui-vue/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not ie <= 8 \ No newline at end of file diff --git a/packages/coreui-vue/LICENSE b/packages/coreui-vue/LICENSE new file mode 100644 index 00000000..f19fc729 --- /dev/null +++ b/packages/coreui-vue/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 creativeLabs Łukasz Holeczek + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/coreui-vue/README.md b/packages/coreui-vue/README.md new file mode 100644 index 00000000..ba8470df --- /dev/null +++ b/packages/coreui-vue/README.md @@ -0,0 +1,265 @@ +

+ + CoreUI logo + +

+ +

CoreUI for Vue.js

+ +

+ Vue.js Components Library built on top of Bootstrap 5 and TypeScript. +
+ Explore CoreUI for Vue.js docs » +
+
+ Report bug + · + Request feature + · + Blog +

+ + +## Table of contents + +- [Quick start](#quick-start) +- [Components](#components) +- [Status](#status) +- [Bugs and feature requests](#bugs-and-feature-requests) +- [Documentation](#documentation) +- [Frameworks](#frameworks) +- [Templates](#templates) +- [Contributing](#contributing) +- [Community](#community) +- [Versioning](#versioning) +- [Creators](#creators) +- [Support CoreUI Development](#support-coreui-development) +- [Copyright and license](#copyright-and-license) + +## Quick start + +### Instalation + +Several quick start options are available: + +- [Download the latest release](https://github.com/coreui/coreui-vue/archive/v4.10.2.zip) +- Clone the repo: `git clone https://github.com/coreui/coreui-vue.git` +- Install with [npm](https://www.npmjs.com/): `npm install @coreui/vue` +- Install with [yarn](https://yarnpkg.com/): `yarn add @coreui/vue` + +Read the [Getting started page](https://coreui.io/vue/docs/getting-started/introduction/) for information on the framework contents, templates and examples, and more. + +### Stylesheets + +Vue components are styled using `@coreui/coreui` CSS library, but you can use them also with bootstrap CSS library. That is possible because `@coreui/coreui` library is compatible with bootstrap, it just extends its functionalities. The only exception are custom CoreUI components, which don't exist in the Bootstrap ecosystem. + +#### CoreUI CSS files + +##### Installation + +```bash +yarn add @coreui/coreui +``` + +or + +```bash +npm install @coreui/coreui --save +``` + +##### Basic usage + +```js +import '@coreui/coreui/dist/css/coreui.min.css' +``` + +#### Bootstrap CSS files + +##### Installation + +```bash +yarn add bootstrap +``` + +or + +```bash +npm install bootstrap +``` + +##### Basic usage + +```js +import "bootstrap/dist/css/bootstrap.min.css"; +``` + +## Components + +- [Vue Accordion](https://coreui.io/vue/docs/components/accordion.html) +- [Vue Alert](https://coreui.io/vue/docs/components/alert.html) +- [Vue Avatar](https://coreui.io/vue/docs/components/avatar.html) +- [Vue Badge](https://coreui.io/vue/docs/components/badge.html) +- [Vue Breadcrumb](https://coreui.io/vue/docs/components/breadcrumb.html) +- [Vue Button](https://coreui.io/vue/docs/components/button.html) +- [Vue Button Group](https://coreui.io/vue/docs/components/button-group.html) +- [Vue Callout](https://coreui.io/vue/docs/components/callout.html) +- [Vue Card](https://coreui.io/vue/docs/components/card.html) +- [Vue Carousel](https://coreui.io/vue/docs/components/carousel.html) +- [Vue Checkbox](https://coreui.io/vue/docs/forms/checkbox.html) +- [Vue Close Button](https://coreui.io/vue/docs/components/close-button.html) +- [Vue Collapse](https://coreui.io/vue/docs/components/collapse.html) +- [Vue Date Picker](https://coreui.io/vue/docs/forms/date-picker.html) **PRO** +- [Vue Date Range Picker](https://coreui.io/vue/docs/forms/date-range-picker.html) **PRO** +- [Vue Dropdown](https://coreui.io/vue/docs/components/dropdown.html) +- [Vue Floating Labels](https://coreui.io/vue/docs/forms/floating-labels.html) +- [Vue Footer](https://coreui.io/vue/docs/components/footer.html) +- [Vue Header](https://coreui.io/vue/docs/components/header.html) +- [Vue Image](https://coreui.io/vue/docs/components/image.html) +- [Vue Input](https://coreui.io/vue/docs/forms/input.html) +- [Vue Input Group](https://coreui.io/vue/docs/forms/input-group.html) +- [Vue List Group](https://coreui.io/vue/docs/components/list-group.html) +- [Vue Loading Button](https://coreui.io/vue/docs/components/loading-button.html) **PRO** +- [Vue Modal](https://coreui.io/vue/docs/components/modal.html) +- [Vue Multi Select](https://coreui.io/vue/docs/forms/multi-select.html) **PRO** +- [Vue Navs & Tabs](https://coreui.io/vue/docs/components/navs-tabs.html) +- [Vue Navbar](https://coreui.io/vue/docs/components/navbar.html) +- [Vue Offcanvas](https://coreui.io/vue/docs/components/offcanvas.html) +- [Vue Pagination](https://coreui.io/vue/docs/components/pagination.html) +- [Vue Placeholder](https://coreui.io/vue/docs/components/placeholder.html) +- [Vue Popover](https://coreui.io/vue/docs/components/popover.html) +- [Vue Progress](https://coreui.io/vue/docs/components/progress.html) +- [Vue Radio](https://coreui.io/vue/docs/forms/radio.html) +- [Vue Range](https://coreui.io/vue/docs/forms/range.html) +- [Vue Select](https://coreui.io/vue/docs/forms/select.html) +- [Vue Sidebar](https://coreui.io/vue/docs/components/sidebar.html) +- [Vue Smart Pagination](https://coreui.io/vue/docs/components/smart-pagination.html) **PRO** +- [Vue Smart Table](https://coreui.io/vue/docs/components/smart-table.html) **PRO** +- [Vue Spinner](https://coreui.io/vue/docs/components/spinner.html) +- [Vue Switch](https://coreui.io/vue/docs/forms/switch.html) +- [Vue Table](https://coreui.io/vue/docs/components/table.html) +- [Vue Textarea](https://coreui.io/vue/docs/forms/textarea.html) +- [Vue Time Picker](https://coreui.io/vue/docs/forms/time-picker.html) **PRO** +- [Vue Toast](https://coreui.io/vue/docs/components/toast.html) +- [Vue Tooltip](https://coreui.io/vue/docs/components/tooltip.html) + +## Status + +[![Build Status](https://github.com/coreui/coreui-vue/workflows/JS%20Tests/badge.svg?branch=main)](https://github.com/coreui/coreui-vue/actions?query=workflow%3AJS+Tests+branch%3Amain) +[![npm version](https://img.shields.io/npm/v/@coreui/vue)](https://www.npmjs.com/package/@coreui/vue) +[![peerDependencies Status](https://img.shields.io/david/peer/coreui/coreui)](https://david-dm.org/coreui/coreui?type=peer) +[![devDependency Status](https://img.shields.io/david/dev/coreui/coreui)](https://david-dm.org/coreui/coreui?type=dev) +[![Coverage Status](https://img.shields.io/coveralls/github/coreui/coreui-vue/v4)](https://coveralls.io/github/coreui/coreui-vue?branch=v4) + +## Bugs and feature requests + +Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/coreui/coreui-vue/issues/new). + +## Documentation + +The documentation for the CoreUI & CoreUI PRO is hosted at our website [CoreUI for Vue](https://coreui.io/vue/docs/getting-started/introduction) + +### Running documentation locally + +1. Run `yarn install` or `npm install` to install the Node.js dependencies. +2. Run `yarn bootstrap` or `npm run bootstrap` to link local packages together and install remaining package dependencies. +3. From the root directory, run `yarn docs:dev` or `npm run docs:dev` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. +4. Open `http://localhost:8000/` in your browser, and voilà. + +## Frameworks + +CoreUI supports most popular frameworks. + +- [CoreUI for Angular](https://github.com/coreui/coreui-angular) +- [CoreUI for Bootstrap (Vanilla JS)](https://github.com/coreui/coreui) +- [CoreUI for React](https://github.com/coreui/coreui-react) +- [CoreUI for Vue](https://github.com/coreui/coreui-vue) + +## Templates + +Fully featured, out-of-the-box, templates for your application based on CoreUI. + +- [Angular Admin Template](https://coreui.io/angular) +- [Bootstrap Admin Template](https://coreui.io/) +- [React Admin Template](https://coreui.io/react) +- [Vue Admin Template](https://coreui.io/vue) + +## Contributing + +Please read through our [contributing guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. + +Editor preferences are available in the [editor config](https://github.com/coreui/coreui-vue/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at . + +## Community + +Stay up to date on the development of CoreUI and reach out to the community with these helpful resources. + +- Read and subscribe to [The Official CoreUI Blog](https://coreui.io/blog/). + +You can also follow [@core_ui on Twitter](https://twitter.com/core_ui). + +## Versioning + +For transparency into our release cycle and in striving to maintain backward compatibility, CoreUI is maintained under [the Semantic Versioning guidelines](http://semver.org/). + +See [the Releases section of our project](https://github.com/coreui/coreui-vue/releases) for changelogs for each release version. + +## Creators + +**Łukasz Holeczek** + +- +- + +**Andrzej Kopański** + +- + +**The CoreUI Team** + +- + +## Support CoreUI Development + +CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/). + + + +### Platinum Sponsors + +Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website. + + + +### Gold Sponsors + +Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website. + + + +### Silver Sponsors + +Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website. + + + +### Bronze Sponsors + +Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile. + + + +### Backers + +Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/). + + + + + +## Copyright and license + +Copyright 2022 creativeLabs Łukasz Holeczek. Code released under the [MIT License](https://github.com/coreui/coreui-vue/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). diff --git a/packages/coreui-vue/jest.config.js b/packages/coreui-vue/jest.config.js new file mode 100644 index 00000000..8367c2b3 --- /dev/null +++ b/packages/coreui-vue/jest.config.js @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2013-present, creativeLabs Lukasz Holeczek. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict' + +module.exports = { + moduleFileExtensions: ['tsx', 'js', 'ts', 'json', 'vue'], + preset: 'ts-jest', + testEnvironment: 'jsdom', + testEnvironmentOptions: { + customExportConditions: ['node', 'node-addons'], + }, + testPathIgnorePatterns: ['dist/'], + transform: { + '.*\\.(ts)$': 'ts-jest', + '.*\\.(vue)$': '@vue/vue3-jest', + }, +} diff --git a/packages/coreui-vue/package.json b/packages/coreui-vue/package.json new file mode 100644 index 00000000..d905abdc --- /dev/null +++ b/packages/coreui-vue/package.json @@ -0,0 +1,66 @@ +{ + "name": "@coreui/vue", + "version": "4.10.2", + "description": "UI Components Library for Vue.js", + "keywords": [ + "vue", + "vue-component", + "vue component", + "vue bootstrap", + "bootstrap vue", + "ui library", + "ui components", + "component library", + "components" + ], + "homepage": "https://coreui.io/vue/", + "bugs": { + "url": "https://github.com/coreui/coreui-vue/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/coreui/coreui-vue.git" + }, + "license": "MIT", + "author": "The CoreUI Team (https://github.com/orgs/coreui/people)", + "main": "dist/index.js", + "module": "dist/index.es.js", + "types": "dist/index.d.ts", + "files": [ + "dist/", + "src/" + ], + "scripts": { + "build": "rollup -c --bundleConfigAsCjs", + "test": "jest --coverage", + "test:clear": "jest --clearCache", + "test:update": "jest --coverage --updateSnapshot" + }, + "devDependencies": { + "@popperjs/core": "^2.11.8", + "@rollup/plugin-commonjs": "^25.0.2", + "@rollup/plugin-node-resolve": "^15.1.0", + "@rollup/plugin-typescript": "^11.1.2", + "@types/jest": "^29.5.2", + "@vue/test-utils": "^2.4.0", + "@vue/vue3-jest": "29.2.4", + "jest": "^29.6.1", + "jest-environment-jsdom": "^29.6.1", + "rollup": "^3.26.2", + "rollup-plugin-vue": "^6.0.0", + "ts-jest": "^29.1.1", + "typescript": "^4.9.5", + "vue": "^3.3.4", + "vue-types": "^5.1.0" + }, + "peerDependencies": { + "@coreui/coreui": "^4.2.6", + "vue": "^3.2.21" + }, + "standard": { + "ignore": [ + "node_modules/", + "build/" + ] + } +} diff --git a/rollup.config.js b/packages/coreui-vue/rollup.config.js similarity index 67% rename from rollup.config.js rename to packages/coreui-vue/rollup.config.js index ea15f841..c4b5a462 100644 --- a/rollup.config.js +++ b/packages/coreui-vue/rollup.config.js @@ -1,12 +1,10 @@ import commonjs from '@rollup/plugin-commonjs' import typescript from '@rollup/plugin-typescript' -// import external from 'rollup-plugin-peer-deps-external' import resolve from '@rollup/plugin-node-resolve' import vue from 'rollup-plugin-vue' import pkg from './package.json' const plugins = [ - // external(), resolve({ dedupe: ['vue'], extensions: ['.ts', '.json', '.vue'], @@ -16,7 +14,7 @@ const plugins = [ tsconfig: './tsconfig.json', }), commonjs({ - include: ['node_modules/**'], + include: ['../../node_modules/**'], }), ] @@ -27,10 +25,15 @@ export default [ { input: 'src/index.ts', output: { - format: 'esm', + format: 'es', file: pkg.module, exports: 'named', sourcemap: true, + sourcemapPathTransform: (relativeSourcePath) => { + return relativeSourcePath + .replace('../../node_modules/', '../') + .replace('../packages/coreui-vue', '..') + }, }, external, plugins: [...plugins, vue()], @@ -43,6 +46,11 @@ export default [ file: pkg.main, exports: 'named', sourcemap: true, + sourcemapPathTransform: (relativeSourcePath) => { + return relativeSourcePath + .replace('../../node_modules/', '../') + .replace('../packages/coreui-vue', '..') + }, }, external, plugins: [...plugins, vue({ template: { optimizeSSR: true } })], diff --git a/src/components/accordion/CAccordion.ts b/packages/coreui-vue/src/components/accordion/CAccordion.ts similarity index 83% rename from src/components/accordion/CAccordion.ts rename to packages/coreui-vue/src/components/accordion/CAccordion.ts index 2864a782..eee9a535 100644 --- a/src/components/accordion/CAccordion.ts +++ b/packages/coreui-vue/src/components/accordion/CAccordion.ts @@ -1,4 +1,4 @@ -import { defineComponent, h, provide, ref } from 'vue' +import { defineComponent, h, provide, ref, watch } from 'vue' const CAccordion = defineComponent({ name: 'CAccordion', @@ -6,11 +6,7 @@ const CAccordion = defineComponent({ /** * The active item key. */ - activeItemKey: { - type: [Number, String], - default: undefined, - require: false, - }, + activeItemKey: [Number, String], /** * Make accordion items stay open when another item is opened */ @@ -25,6 +21,9 @@ const CAccordion = defineComponent({ const setActiveItemKey = (key: string | number) => { activeItemKey.value = key } + + watch(() => props.activeItemKey, value => activeItemKey.value = value) + provide('activeItemKey', activeItemKey) provide('alwaysOpen', props.alwaysOpen) provide('setActiveItemKey', setActiveItemKey) diff --git a/src/components/accordion/CAccordionBody.ts b/packages/coreui-vue/src/components/accordion/CAccordionBody.ts similarity index 90% rename from src/components/accordion/CAccordionBody.ts rename to packages/coreui-vue/src/components/accordion/CAccordionBody.ts index 0876a5e9..4a8d83ff 100644 --- a/src/components/accordion/CAccordionBody.ts +++ b/packages/coreui-vue/src/components/accordion/CAccordionBody.ts @@ -1,5 +1,5 @@ import { defineComponent, h, inject, Ref } from 'vue' -import { CCollapse } from './../collapse/CCollapse' +import { CCollapse } from '../collapse/CCollapse' const CAccordionBody = defineComponent({ name: 'CAccordionBody', diff --git a/src/components/accordion/CAccordionButton.ts b/packages/coreui-vue/src/components/accordion/CAccordionButton.ts similarity index 95% rename from src/components/accordion/CAccordionButton.ts rename to packages/coreui-vue/src/components/accordion/CAccordionButton.ts index 4fd1e48e..69ab7a00 100644 --- a/src/components/accordion/CAccordionButton.ts +++ b/packages/coreui-vue/src/components/accordion/CAccordionButton.ts @@ -10,6 +10,7 @@ const CAccordionButton = defineComponent({ h( 'button', { + type: 'button', 'aria-expanded': !visible.value, class: ['accordion-button', { ['collapsed']: !visible.value }], onClick: () => toggleVisibility(), diff --git a/src/components/accordion/CAccordionHeader.ts b/packages/coreui-vue/src/components/accordion/CAccordionHeader.ts similarity index 100% rename from src/components/accordion/CAccordionHeader.ts rename to packages/coreui-vue/src/components/accordion/CAccordionHeader.ts diff --git a/src/components/accordion/CAccordionItem.ts b/packages/coreui-vue/src/components/accordion/CAccordionItem.ts similarity index 79% rename from src/components/accordion/CAccordionItem.ts rename to packages/coreui-vue/src/components/accordion/CAccordionItem.ts index 4aa020ac..20575085 100644 --- a/src/components/accordion/CAccordionItem.ts +++ b/packages/coreui-vue/src/components/accordion/CAccordionItem.ts @@ -6,19 +6,14 @@ const CAccordionItem = defineComponent({ /** * The item key. */ - itemKey: { - type: [Number, String], - default: undefined, - require: false, - }, + itemKey: [Number, String], }, setup(props, { slots }) { const activeItemKey = inject('activeItemKey') as Ref const alwaysOpen = inject('alwaysOpen') as boolean - // eslint-disable-next-line no-unused-vars const setActiveItemKey = inject('setActiveItemKey') as (key: number | string) => void - const itemKey = ref(props.itemKey ? props.itemKey : Math.random().toString(36).substr(2, 9)) + const itemKey = ref(props.itemKey ?? Math.random().toString(36).slice(2, 11)) const visible = ref(Boolean(activeItemKey.value === itemKey.value)) watch(activeItemKey, () => (visible.value = Boolean(activeItemKey.value === itemKey.value))) diff --git a/src/components/accordion/__tests__/CAccordion.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordion.spec.ts similarity index 100% rename from src/components/accordion/__tests__/CAccordion.spec.ts rename to packages/coreui-vue/src/components/accordion/__tests__/CAccordion.spec.ts diff --git a/src/components/accordion/__tests__/CAccordionBody.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionBody.spec.ts similarity index 100% rename from src/components/accordion/__tests__/CAccordionBody.spec.ts rename to packages/coreui-vue/src/components/accordion/__tests__/CAccordionBody.spec.ts diff --git a/src/components/accordion/__tests__/CAccordionButton.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionButton.spec.ts similarity index 100% rename from src/components/accordion/__tests__/CAccordionButton.spec.ts rename to packages/coreui-vue/src/components/accordion/__tests__/CAccordionButton.spec.ts diff --git a/src/components/accordion/__tests__/CAccordionHeader.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionHeader.spec.ts similarity index 100% rename from src/components/accordion/__tests__/CAccordionHeader.spec.ts rename to packages/coreui-vue/src/components/accordion/__tests__/CAccordionHeader.spec.ts diff --git a/src/components/accordion/__tests__/CAccordionItem.spec.ts b/packages/coreui-vue/src/components/accordion/__tests__/CAccordionItem.spec.ts similarity index 100% rename from src/components/accordion/__tests__/CAccordionItem.spec.ts rename to packages/coreui-vue/src/components/accordion/__tests__/CAccordionItem.spec.ts diff --git a/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap similarity index 59% rename from src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap rename to packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap index 61adc319..3bd49f3b 100644 --- a/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap +++ b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Loads and display CAccordion component renders correctly 1`] = `"
Default slot
"`; +exports[`Loads and display CAccordion component renders correctly 1`] = `"
Default slot
"`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap new file mode 100644 index 00000000..30734b2b --- /dev/null +++ b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Loads and display CAccordionBody component renders correctly 1`] = ` +" +
+
Default slot
+
+
" +`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap new file mode 100644 index 00000000..fb38caae --- /dev/null +++ b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Loads and display CAccordionButton component renders correctly 1`] = `""`; diff --git a/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap new file mode 100644 index 00000000..01863eed --- /dev/null +++ b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Loads and display CAccordionHeader component renders correctly 1`] = `"
"`; diff --git a/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap similarity index 61% rename from src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap rename to packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap index 8cfe605f..cead44ef 100644 --- a/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap +++ b/packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Loads and display CAccordionItem component renders correctly 1`] = `"
Default slot
"`; +exports[`Loads and display CAccordionItem component renders correctly 1`] = `"
Default slot
"`; diff --git a/src/components/accordion/index.ts b/packages/coreui-vue/src/components/accordion/index.ts similarity index 83% rename from src/components/accordion/index.ts rename to packages/coreui-vue/src/components/accordion/index.ts index 338a345c..ee2326db 100644 --- a/src/components/accordion/index.ts +++ b/packages/coreui-vue/src/components/accordion/index.ts @@ -2,7 +2,6 @@ import { App } from 'vue' import { CAccordion } from './CAccordion' import { CAccordionBody } from './CAccordionBody' import { CAccordionButton } from './CAccordionButton' -import { CAccordionCollapse } from './CAccordionCollapse' import { CAccordionHeader } from './CAccordionHeader' import { CAccordionItem } from './CAccordionItem' @@ -11,7 +10,6 @@ const CAccordionPlugin = { app.component(CAccordion.name, CAccordion) app.component(CAccordionBody.name, CAccordionBody) app.component(CAccordionButton.name, CAccordionButton) - app.component(CAccordionCollapse.name, CAccordionCollapse) app.component(CAccordionHeader.name, CAccordionHeader) app.component(CAccordionItem.name, CAccordionItem) }, @@ -22,7 +20,6 @@ export { CAccordion, CAccordionBody, CAccordionButton, - CAccordionCollapse, CAccordionHeader, CAccordionItem, } diff --git a/src/components/alert/CAlert.ts b/packages/coreui-vue/src/components/alert/CAlert.ts similarity index 87% rename from src/components/alert/CAlert.ts rename to packages/coreui-vue/src/components/alert/CAlert.ts index 36398262..117c4ee2 100644 --- a/src/components/alert/CAlert.ts +++ b/packages/coreui-vue/src/components/alert/CAlert.ts @@ -1,7 +1,8 @@ import { defineComponent, h, ref, Transition, watch } from 'vue' -import { Color } from '../props' -import { CCloseButton } from '../close-button/CCloseButton' +import { CCloseButton } from '../close-button' + +import { Color } from '../../props' export const CAlert = defineComponent({ name: 'CAlert', @@ -15,11 +16,7 @@ export const CAlert = defineComponent({ /** * Optionally add a close button to alert and allow it to self dismisss. */ - dismissible: { - type: Boolean, - default: false, - required: false, - }, + dismissible: Boolean, /** * Set the alert variant to a solid. * @@ -27,8 +24,6 @@ export const CAlert = defineComponent({ */ variant: { type: String, - default: undefined, - required: false, validator: (value: string) => { return value === 'solid' }, @@ -39,7 +34,6 @@ export const CAlert = defineComponent({ visible: { type: Boolean, default: true, - required: false, }, }, emits: [ @@ -67,8 +61,6 @@ export const CAlert = defineComponent({ h( Transition, { - name: 'fade', - duration: 350, enterFromClass: '', enterActiveClass: 'fade', enterToClass: 'fade show', diff --git a/src/components/alert/CAlertHeading.ts b/packages/coreui-vue/src/components/alert/CAlertHeading.ts similarity index 95% rename from src/components/alert/CAlertHeading.ts rename to packages/coreui-vue/src/components/alert/CAlertHeading.ts index dbae5e6e..fbf38c69 100644 --- a/src/components/alert/CAlertHeading.ts +++ b/packages/coreui-vue/src/components/alert/CAlertHeading.ts @@ -9,7 +9,6 @@ export const CAlertHeading = defineComponent({ component: { type: String, default: 'h4', - required: false, }, }, setup(props, { slots }) { diff --git a/src/components/alert/CAlertLink.ts b/packages/coreui-vue/src/components/alert/CAlertLink.ts similarity index 100% rename from src/components/alert/CAlertLink.ts rename to packages/coreui-vue/src/components/alert/CAlertLink.ts diff --git a/src/components/alert/__tests__/CAlert.spec.ts b/packages/coreui-vue/src/components/alert/__tests__/CAlert.spec.ts similarity index 95% rename from src/components/alert/__tests__/CAlert.spec.ts rename to packages/coreui-vue/src/components/alert/__tests__/CAlert.spec.ts index 810b418c..572cd284 100644 --- a/src/components/alert/__tests__/CAlert.spec.ts +++ b/packages/coreui-vue/src/components/alert/__tests__/CAlert.spec.ts @@ -1,5 +1,5 @@ import { shallowMount } from '@vue/test-utils' -import { CAlert as Component } from './../../' +import { CAlert as Component } from '../../' const ComponentName = 'CAlert' const wrapper = shallowMount(Component) diff --git a/src/components/alert/__tests__/CAlertHeading.spec.ts b/packages/coreui-vue/src/components/alert/__tests__/CAlertHeading.spec.ts similarity index 100% rename from src/components/alert/__tests__/CAlertHeading.spec.ts rename to packages/coreui-vue/src/components/alert/__tests__/CAlertHeading.spec.ts diff --git a/src/components/alert/__tests__/CAlertLink.spec.ts b/packages/coreui-vue/src/components/alert/__tests__/CAlertLink.spec.ts similarity index 100% rename from src/components/alert/__tests__/CAlertLink.spec.ts rename to packages/coreui-vue/src/components/alert/__tests__/CAlertLink.spec.ts diff --git a/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap similarity index 59% rename from src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap rename to packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap index 2f25b67b..cbb36d96 100644 --- a/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap +++ b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlert.spec.ts.snap @@ -1,7 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Loads and display CAlert component renders correctly 1`] = ` - +
@@ -13,7 +21,14 @@ exports[`Loads and display CAlert component renders correctly 1`] = ` exports[`Loads and display CAlert component renders correctly with slot 1`] = `
Default slot"`; +exports[`Customize CAlertHeading component renders correctly 1`] = `"

Default slot

"`; -exports[`Loads and display CAlertHeading component renders correctly 1`] = `"

Default slot

"`; +exports[`Loads and display CAlertHeading component renders correctly 1`] = `"

Default slot

"`; diff --git a/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap similarity index 65% rename from src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap rename to packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap index 50f9e223..02173479 100644 --- a/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap +++ b/packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Loads and display CAlertLink component renders correctly 1`] = `"Default slot"`; +exports[`Loads and display CAlertLink component renders correctly 1`] = `"Default slot"`; diff --git a/src/components/alert/index.ts b/packages/coreui-vue/src/components/alert/index.ts similarity index 100% rename from src/components/alert/index.ts rename to packages/coreui-vue/src/components/alert/index.ts diff --git a/src/components/avatar/CAvatar.ts b/packages/coreui-vue/src/components/avatar/CAvatar.ts similarity index 91% rename from src/components/avatar/CAvatar.ts rename to packages/coreui-vue/src/components/avatar/CAvatar.ts index c424f40d..27008005 100644 --- a/src/components/avatar/CAvatar.ts +++ b/packages/coreui-vue/src/components/avatar/CAvatar.ts @@ -1,5 +1,6 @@ import { defineComponent, h } from 'vue' -import { Color, Shape, TextColor } from '../props' + +import { Color, Shape, TextColor } from '../../props' const CAvatar = defineComponent({ name: 'CAvatar', @@ -23,8 +24,6 @@ const CAvatar = defineComponent({ */ size: { type: String, - default: undefined, - required: false, validator: (value: string) => { return ['sm', 'md', 'lg', 'xl'].includes(value) }, @@ -32,11 +31,7 @@ const CAvatar = defineComponent({ /** * The src attribute for the img element. */ - src: { - type: String, - default: undefined, - required: false, - }, + src: String, /** * Sets the color context of the status indicator to one of CoreUI’s themed colors. * @@ -44,8 +39,6 @@ const CAvatar = defineComponent({ */ status: { type: String, - default: undefined, - required: false, validator: (value: string) => { return [ 'primary', diff --git a/src/components/avatar/__tests__/CAvatar.spec.ts b/packages/coreui-vue/src/components/avatar/__tests__/CAvatar.spec.ts similarity index 100% rename from src/components/avatar/__tests__/CAvatar.spec.ts rename to packages/coreui-vue/src/components/avatar/__tests__/CAvatar.spec.ts diff --git a/packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap b/packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap new file mode 100644 index 00000000..5166a5f1 --- /dev/null +++ b/packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Loads and display CAvatar component renders correctly 1`] = ` +"
Default slot + +
" +`; + +exports[`Loads and display CAvatar component renders correctly 2`] = `"
"`; diff --git a/src/components/avatar/index.ts b/packages/coreui-vue/src/components/avatar/index.ts similarity index 100% rename from src/components/avatar/index.ts rename to packages/coreui-vue/src/components/avatar/index.ts diff --git a/packages/coreui-vue/src/components/backdrop/CBackdrop.ts b/packages/coreui-vue/src/components/backdrop/CBackdrop.ts new file mode 100644 index 00000000..adea3428 --- /dev/null +++ b/packages/coreui-vue/src/components/backdrop/CBackdrop.ts @@ -0,0 +1,35 @@ +import { defineComponent, h, Transition } from 'vue' + +const CBackdrop = defineComponent({ + name: 'CBackdrop', + props: { + /** + * Toggle the visibility of modal component. + */ + visible: { + type: Boolean, + default: false, + }, + }, + setup(props) { + return () => + h( + Transition, + { + onEnter: (el) => { + el.classList.add('show') + }, + onLeave: (el) => { + el.classList.remove('show') + }, + }, + () => + props.visible && + h('div', { + class: 'fade', + }), + ) + }, +}) + +export { CBackdrop } diff --git a/src/components/backdrop/__tests__/CBackdrop.spec.ts b/packages/coreui-vue/src/components/backdrop/__tests__/CBackdrop.spec.ts similarity index 100% rename from src/components/backdrop/__tests__/CBackdrop.spec.ts rename to packages/coreui-vue/src/components/backdrop/__tests__/CBackdrop.spec.ts diff --git a/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap b/packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap similarity index 60% rename from src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap rename to packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap index 2d73f2e9..2bf4c264 100644 --- a/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap +++ b/packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Loads and display CBackdrop component renders correctly 1`] = ` -" -
+" +
" `; diff --git a/src/components/backdrop/index.ts b/packages/coreui-vue/src/components/backdrop/index.ts similarity index 100% rename from src/components/backdrop/index.ts rename to packages/coreui-vue/src/components/backdrop/index.ts diff --git a/src/components/badge/CBadge.ts b/packages/coreui-vue/src/components/badge/CBadge.ts similarity index 87% rename from src/components/badge/CBadge.ts rename to packages/coreui-vue/src/components/badge/CBadge.ts index b293fbae..717adac3 100644 --- a/src/components/badge/CBadge.ts +++ b/packages/coreui-vue/src/components/badge/CBadge.ts @@ -1,6 +1,6 @@ import { defineComponent, h } from 'vue' -import { Color, Shape, TextColor } from '../props' +import { Color, Shape, TextColor } from '../../props' const CBadge = defineComponent({ name: 'CBadge', @@ -16,20 +16,17 @@ const CBadge = defineComponent({ */ component: { type: String, - required: false, default: 'span', }, /** * Position badge in one of the corners of a link or button. * - * @values 'top-start', 'top-end', 'bottom-end', 'botttom-start' + * @values 'top-start', 'top-end', 'bottom-end', 'bottom-start' */ position: { type: String, - default: undefined, - required: false, validator: (value: string) => { - return ['top-start', 'top-end', 'bottom-end', 'botttom-start'].includes(value) + return ['top-start', 'top-end', 'bottom-end', 'bottom-start'].includes(value) }, }, /** @@ -45,8 +42,6 @@ const CBadge = defineComponent({ */ size: { type: String, - default: undefined, - required: false, validator: (value: string) => { return value === 'sm' }, diff --git a/src/components/badge/__tests__/CBadge.spec.ts b/packages/coreui-vue/src/components/badge/__tests__/CBadge.spec.ts similarity index 95% rename from src/components/badge/__tests__/CBadge.spec.ts rename to packages/coreui-vue/src/components/badge/__tests__/CBadge.spec.ts index 5d22bd88..4d132901 100644 --- a/src/components/badge/__tests__/CBadge.spec.ts +++ b/packages/coreui-vue/src/components/badge/__tests__/CBadge.spec.ts @@ -1,5 +1,5 @@ import { shallowMount } from '@vue/test-utils' -import { CBadge as Component } from './../../' +import { CBadge as Component } from '../../' const ComponentName = 'CBadge' const wrapper = shallowMount(Component) diff --git a/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap b/packages/coreui-vue/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap similarity index 100% rename from src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap rename to packages/coreui-vue/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap diff --git a/src/components/badge/index.ts b/packages/coreui-vue/src/components/badge/index.ts similarity index 100% rename from src/components/badge/index.ts rename to packages/coreui-vue/src/components/badge/index.ts diff --git a/src/components/breadcrumb/CBreadcrumb.ts b/packages/coreui-vue/src/components/breadcrumb/CBreadcrumb.ts similarity index 100% rename from src/components/breadcrumb/CBreadcrumb.ts rename to packages/coreui-vue/src/components/breadcrumb/CBreadcrumb.ts diff --git a/src/components/breadcrumb/CBreadcrumbItem.ts b/packages/coreui-vue/src/components/breadcrumb/CBreadcrumbItem.ts similarity index 82% rename from src/components/breadcrumb/CBreadcrumbItem.ts rename to packages/coreui-vue/src/components/breadcrumb/CBreadcrumbItem.ts index 3debd8bc..4b5fa4a6 100644 --- a/src/components/breadcrumb/CBreadcrumbItem.ts +++ b/packages/coreui-vue/src/components/breadcrumb/CBreadcrumbItem.ts @@ -6,18 +6,11 @@ const CBreadcrumbItem = defineComponent({ /** * Toggle the active state for the component. */ - active: { - type: Boolean, - required: false, - }, + active: Boolean, /** * The `href` attribute for the inner link component. */ - href: { - type: String, - default: undefined, - required: false, - }, + href: String, }, setup(props, { slots }) { diff --git a/src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts b/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts similarity index 100% rename from src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts rename to packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumb.spec.ts diff --git a/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts b/packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts similarity index 100% rename from src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts rename to packages/coreui-vue/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.ts diff --git a/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap b/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap similarity index 54% rename from src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap rename to packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap index 6a7933af..fa56864c 100644 --- a/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap +++ b/packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Loads and display CBreadcrumb component renders correctly 1`] = ` -"