Skip to content

Commit

Permalink
Merge pull request #1 from it-at-m/beta
Browse files Browse the repository at this point in the history
Initial public release
  • Loading branch information
eidottermihi authored Dec 6, 2023
2 parents aad9370 + 84d1d6f commit be4832a
Show file tree
Hide file tree
Showing 26 changed files with 12,219 additions and 0 deletions.
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: Bug report
about: Create a report to help us improve
title: ""
labels: ""
assignees: ""
---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:

1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional context**
Add any other context about the problem here.
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Feature request
about: Suggest an idea for this project
title: ""
labels: ""
assignees: ""
---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
50 changes: 50 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: build and test

on:
push:
branches: ["main", "beta"]
pull_request:
branches: ["main", "beta"]

env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

permissions:
contents: read # for checkout
security-events: read # to get dependencies for compliance even on PRs

jobs:
compliance:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Advance Security Policy as Code
uses: advanced-security/[email protected]
with:
policy: it-at-m/policy-as-code
policy-path: default.yaml
token: ${{ secrets.GITHUB_TOKEN }}
argvs: "--disable-dependabot --disable-secret-scanning --disable-code-scanning --display"
build:
runs-on: ubuntu-latest
permissions:
contents: write # to be able to publish a GitHub release
issues: write # to be able to comment on released issues
pull-requests: write # to be able to comment on released pull requests
id-token: write # to enable use of OIDC for npm provenance
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
registry-url: "https://registry.npmjs.org"
- run: npm ci
- run: npm run coverage
- run: npm run build
- name: run semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm run semantic-release
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-demo
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

## Test results
coverage/*
40 changes: 40 additions & 0 deletions .releaserc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"branches": [
"main",
"+([0-9])?(.{+([0-9]),x}).x",
"next",
"next-major",
{
"name": "alpha",
"prerelease": true
},
{
"name": "beta",
"prerelease": true
}
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
[
"@semantic-release/github",
{
"assets": [
{
"path": "dist/ezldap-vue-select.js",
"label": "JS distribution"
},
{
"path": "dist/ezldap-vue-select.umd.cjs",
"label": "UMD/CJS distribution"
},
{
"path": "dist/style.css",
"label": "CSS distribution"
}
]
}
]
]
}
10 changes: 10 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"recommendations": [
"vue.volar",
"vue.vscode-typescript-vue-plugin",
"zixuanchen.vitest-explorer",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
],
"unwantedRecommendations": ["octref.vetur", "Orta.vscode-jest"]
}
132 changes: 132 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# ezldap-vue-select

Provides a Vue.js/Vuetify component `ldap-person-auswahl` for a LDAP-based person search and selection. Uses the [ezLDAP-API](docs/ezLDAP-openapi.yaml) as a datasource.

Therefore, the `modelValue` of the component is equivalent to `LdapBaseUserDTO` object of the [ezLDAP-API](docs/ezLDAP-openapi.yaml).

## Usage

### Required Peer Dependencies

```
"@mdi/font": "> 5",
"vue": "^3.2.0",
"vuetify": "^3.3.0"
```

### Installation

```
npm install @muenchen/ezldap-vue-select
```

### Use

Import component:

```js
import { LdapPersonAuswahl } from "@muenchen/ezldap-vue-select";
```

Register component (e.g. in `Main.vue`):

```js
export default {
name: "MyApp",
components: {
LdapPersonAuswahl
}
});
```

Use component in `template`:

```html
<template>
<ldap-person-auswahl
v-model:modelValue="personData"
id="my-custom-id"
label="Custom Label"
placeholder="Search for LDAP uid ..."
no-data-text="No Person found"
/>
</template>
```

more example use cases see [sources of demo app](src/App.vue).

## Data structure

`v-model:modelValue` / Prop `modelValue`:

see [ezLDAP-API](docs/ezLDAP-openapi.yaml) -> Schemas `LdapBaseUserDTO`

If the value of the component is initially present, following rules are evaluated and actions performed:

- if `value` == `null` || `{}` : no user is pre-selected
- if `value.lhmObjectId` != null && `value.cn` != null && `value.ou` != null : pre-selection of input based on this data
- if `value.lhmObjectId` != null && `value.cn` == null && `value.ou` == null && Prop `initial-lookup` = true: triggers initial lookup of user data based on `lhmObjectId` from ezLDAP-API, user is then pre-selected
- if `value.uid` != null && `value.cn` == null && `value.ou` == null && Prop `initial-lookup` = true: triggers initial lookup of user data based on `uid` from ezLDAP-API, user is then pre-selected

Applications can therefore only persist the `lhmObjectId` of the user, but also show more than just the ID in the frontend for presentation purposes.

## Development

The template uses Vue `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

```bash
npm run dev
```

### Build

```bash
npm run build
```

### Recommended IDE Setup

- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).

### Type Support For `.vue` Imports in TS

TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.

If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:

1. Disable the built-in TypeScript Extension
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.

## Release & Publish

This project uses [semantic-release](https://github.com/semantic-release/semantic-release)!

| Commit message | Release type |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| `fix: stop graphite breaking when too much pressure applied` | Patch Release |
| `feat: add 'graphiteWidth' option` | ~~Minor~~ Feature Release |
| `perf: remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release |

## Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

If you have a suggestion that would make this better, please open an issue with the tag "enhancement", fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!

1. Open an issue with the tag "enhancement"
2. Fork the Project
3. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
4. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
5. Push to the Branch (`git push origin feature/AmazingFeature`)
6. Open a Pull Request

## License

Distributed under the MIT License. See [LICENSE](LICENSE) file for more information.

## Contact

it@M - <[email protected]>
Loading

0 comments on commit be4832a

Please sign in to comment.