5.3.7 • Published 10 months ago

@nextcloud/dialogs v5.3.7

Weekly downloads
6,740
License
AGPL-3.0-or-later
Repository
github
Last release
10 months ago

@nextcloud/dialogs

REUSE status npm

Nextcloud dialog helpers

Installation

npm i -S @nextcloud/dialogs

Version compatibility

Since version 4.2 this package provides a Vue.js based file picker, so this package depends on @nextcloud/vue. So to not introduce style collisions stick with the supported versions:

@nextcloud/dialogs@nextcloud/vueNextcloud server version
5.x8.xNextcloud 28 and newer
4.2+7.12Nextcloud 25, 26, 27, 27.1
4.1anyany

Usage

General

The styles for the components (Toasts and FilePicker) are provided in the style.css file. So make sure that the @nextcloud/dialogs/style.css file is included in your app to make sure that the toasts or FilePicker have a proper styling applied.

import '@nextcloud/dialogs/style.css'

Toasts

import { showMessage, showInfo, showSuccess, showWarning, showError } from '@nextcloud/dialogs'
import '@nextcloud/dialogs/style.css'

If you using @nextcloud/dialogs >= 4.0 you don't need any svg or scss loader in you projects anymore.

There are different toast styles available, that are exposed in separate functions:

showMessage('Message without a specific styling')
showInfo('Information')
showSuccess('Success')
showWarning('Warning')
showError('Error')

There are several options that can be passed in as a second parameter, like the timeout of a toast:

showError('This is an error shown without a timeout', { timeout: -1 })

A full list of available options can be found in the documentation.

FilePicker

There are two ways to spawn a FilePicker provided by the library:

Use the FilePickerBuilder

This way you do not need to use Vue, but can programatically spawn a FilePicker. The FilePickerBuilder is included in the main entry point of this library, so you can use it like this:

import { getFilePickerBuilder } from '@nextcloud/dialogs'
const filepicker = getFilePickerBuilder('Pick plain text files')
    .addMimeTypeFilter('text/plain')
    .addButton({
        label: 'Pick',
        callback: (nodes) => console.log('Picked', nodes),
    })
    .build()

// You get the file nodes by the button callback, but also the pick yields the paths of the picked files
const paths = await filepicker.pick()

Use the Vue component directly

We also provide the @nextcloud/dialogs/filepicker.js entry point to allow using the Vue component directly:

<template>
  <FilePicker name="Pick some files" :buttons="buttons" />
</template>
<script setup lang="ts">
  import {
    FilePickerVue as FilePicker,
    type IFilePickerButton,
  } from '@nextcloud/dialogs/filepicker.js'
  import type { Node } from '@nextcloud/files'
  import IconShare from 'vue-material-design-icons/Share.vue'

  const buttons: IFilePickerButton[] = [
    {
      label: 'Pick',
      callback: (nodes: Node[]) => console.log('Picked', nodes),
      type: 'primary'
    },
    {
      label: 'Share',
      callback: (nodes: Node[]) => console.log('Share picked files', nodes),
      type: 'secondary',
      icon: IconShare,
    }
  ]
</script>

Development

Testing

For testing all components provide data-testid attributes as selectors, so the tests are independent from code or styling changes.

Test selectors

data-testidIntended purpose
select-all-checkboxThe select all checkbox of the file list
file-list-rowA row in the file list (tr), can be identified by data-filename
row-checkboxCheckbox for selecting a row
row-nameName of the row / file

Releasing a new version

  • Pull the latest changes from main or stableX;
  • Checkout a new branch with the tag name (e.g v4.0.1): git checkout -b v<version>;
  • Run npm version patch --no-git-tag-version (npm version minor --no-git-tag-version if minor). This will return a new version name, make sure it matches what you expect;
  • Commit, push and create PR;
  • Add the change log content from the 'Changelog' action on Github to CHANGELOG.md;
  • Commit and push;
  • Get your PR reviewed and merged;
  • Create a release on github with the version as tag (e.g v4.0.1) and add the changelog content as description

image

5.3.3

12 months ago

5.3.2

1 year ago

6.0.0

10 months ago

5.3.7

10 months ago

5.3.6

10 months ago

5.3.5

12 months ago

5.3.4

12 months ago

5.3.1

1 year ago

4.2.7

1 year ago

5.3.0

1 year ago

5.2.1

1 year ago

5.2.0

1 year ago

5.1.2

1 year ago

4.2.6

1 year ago

4.2.5

1 year ago

4.2.4

1 year ago

5.1.1

1 year ago

5.1.0

1 year ago

4.2.3

1 year ago

5.0.3

2 years ago

5.0.2

2 years ago

5.0.1

2 years ago

5.0.0

2 years ago

5.0.0-beta.6

2 years ago

5.0.0-beta.4

2 years ago

4.2.0-beta.4

2 years ago

5.0.0-beta.5

2 years ago

4.2.0-beta.3

2 years ago

5.0.0-beta.2

2 years ago

5.0.0-beta.3

2 years ago

4.2.0-beta.5

2 years ago

5.0.0-beta.1

2 years ago

4.2.0-beta.2

2 years ago

4.2.0-beta.1

2 years ago

4.2.2

2 years ago

4.2.1

2 years ago

4.2.0

2 years ago

4.1.0

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.0-beta.2

3 years ago

4.0.0-beta.1

3 years ago

4.0.0-beta.0

3 years ago

3.1.3

3 years ago

3.2.0

3 years ago

3.1.4

3 years ago

3.1.2

4 years ago

3.1.1

5 years ago

3.1.0

5 years ago

3.0.0

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.4.0

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.0

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago