| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <script src="../../dist/vue.global.js"></script>
- <div id="demo">
- <h1>Latest Vue.js Commits</h1>
- <template v-for="branch in branches">
- <input
- type="radio"
- :id="branch"
- :value="branch"
- name="branch"
- v-model="currentBranch"
- />
- <label :for="branch">{{ branch }}</label>
- </template>
- <p>vuejs/core@{{ currentBranch }}</p>
- <ul>
- <li v-for="{ html_url, sha, author, commit } in commits">
- <a :href="html_url" target="_blank" class="commit"
- >{{ sha.slice(0, 7) }}</a
- >
- - <span class="message">{{ truncate(commit.message) }}</span><br />
- by
- <span class="author"
- ><a :href="author.html_url" target="_blank"
- >{{ commit.author.name }}</a
- ></span
- >
- at <span class="date">{{ formatDate(commit.author.date) }}</span>
- </li>
- </ul>
- </div>
- <script>
- const API_URL = `https://api.github.com/repos/vuejs/core/commits?per_page=3&sha=`
- Vue.createApp({
- data: () => ({
- branches: ['main', 'v2-compat'],
- currentBranch: 'main',
- commits: null,
- }),
- created() {
- this.fetchData()
- },
- watch: {
- currentBranch: 'fetchData',
- },
- methods: {
- fetchData() {
- fetch(`${API_URL}${this.currentBranch}`)
- .then(res => res.json())
- .then(data => {
- this.commits = data
- })
- },
- truncate(v) {
- const newline = v.indexOf('\n')
- return newline > 0 ? v.slice(0, newline) : v
- },
- formatDate(v) {
- return v.replace(/T|Z/g, ' ')
- },
- },
- }).mount('#demo')
- </script>
- <style>
- #demo {
- font-family: 'Helvetica', Arial, sans-serif;
- }
- a {
- text-decoration: none;
- color: #f66;
- }
- li {
- line-height: 1.5em;
- margin-bottom: 20px;
- }
- .author,
- .date {
- font-weight: bold;
- }
- </style>
|