npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-laravel-crud

v1.7.21

Published

npm i vue-laravel-crud

Downloads

958

Readme

vue-laravel-crud

npm i vue-laravel-crud

How its work?:

This component implements a table and actions to create, modify, delete by calling a standard api

  • GET apiUrl/modelName - Retrieve paginated listing
  • POST apiUrl/modelName/:id - Create item
  • PUT apiUrl/modelName/:id - Update item
  • DELETE apiUrl/modelName/:id - Delete item

Dependency:

  • bootstrap-vue
  • axios
  • vuedraggable

Full Example:

JavaScript



import VueLaravelCrud from "vue-laravel-crud";

export default {
    
  components: { VueLaravelCrud },
  data() {
    return {
        title: "Crud Title",
        modelName: 'users'
        model: {
            name: "",
            email: "",
        },
        columns: [
            { label: "Name", prop: "name", type: "text" },
            { label: "Email", prop: "age", type: "number" },
        ],
        selected: null,
        //....
    };
  },
  methods:{
      onSelect(item){
          this.selected = item;
      }
     //....

  },

};

HTML

<vue-laravel-crud :title="title" :modelName="modelName" :model="model" :columns="columns">
    <template v-slot:form="slotProps">
        <b-form-group label="Name:" description="Your Name">
            <b-form-input
            v-model="slotProps.item.name"
            type="text"
            required
            placeholder="Name"
            ></b-form-input>
        </b-form-group>
    </template>
    <template v-slot:show="slotProps">
        <b-list-group>
            <b-list-group-item class="d-flex justify-content-between align-items-center">Id<b-badge variant="primary" pill>{{ slotProps.item.id }}</b-badge></b-list-group-item>
            <b-list-group-item class="d-flex justify-content-between align-items-center">Nombre<b-badge variant="primary" pill>{{ slotProps.item.title }}</b-badge></b-list-group-item>
        </b-list-group>
    </template>
</vue-laravel-crud>

HTML


Selected: {{ selected ? selected.name : 'none' }}
<vue-laravel-crud :title="title" :modelName="modelName" :model="model" :columns="columns" @select="onSelect($event)">

    <template slot="cell-name" slot-scope="slotProps">
            <!-- Custom Cell Template cell-(prop) -->
        <span class="bg-primary">{{ slotProps.item.name }}</span> 
    </template>


    <template v-slot:tableActions="slotProps">
        <span>Slot Actions</span>
    </template>
    <template v-slot:tableActionsRight="slotProps">
        <span>Slot Right Actions</span>
    </template>

    <template v-slot:rowAction="slotProps">
        <b-button variant="primary" @click="slotProps.showItem(slotProps.item.id, slotProps.index)"><b-icon-eye></b-icon-eye></b-button>
    </template>

    <template v-slot:form="slotProps">
        <b-form-group label="Name:" description="Your Name">
            <b-form-input
            v-model="slotProps.item.name"
            type="text"
            required
            placeholder="Name"
            ></b-form-input>
        </b-form-group>
    </template>

    <template v-slot:show="slotProps">
        <b-list-group>
            <b-list-group-item class="d-flex justify-content-between align-items-center">Id<b-badge variant="primary" pill>{{ slotProps.item.id }}</b-badge></b-list-group-item>
            <b-list-group-item class="d-flex justify-content-between align-items-center">Nombre<b-badge variant="primary" pill>{{ slotProps.item.title }}</b-badge></b-list-group-item>
        </b-list-group>
    </template>
</vue-laravel-crud>

Configuration

| Propiedad | Descripción | Tipo | Valor | |:------------------------|:------------------------------|:----------|:------------------------------------------------| | modelName | Nombre del modelo | String | requerido (ej.: users) | | model | Estructura del modelo | Object | requerido (ej.: { id: 0 }) | | models | Lista de modelos | Array | requerido (ej.: []) | | ajax | Habilitar llamadas AJAX | Boolean | opcional, predeterminado: true | | useVuexORM | Usar Vuex ORM | Boolean | opcional, predeterminado: false | | columns | Array de columnas | Array | requerido (ej.: [{ label:"Id", prop: "id", type: "number" }]) | | filter | Filtros de búsqueda | Array | opcional, predeterminado: [] | | enableFilters | Habilitar filtros | Boolean | opcional, predeterminado: false | | infiniteScroll | Desplazamiento infinito | Boolean | opcional, predeterminado: false | | sortable | Habilitar ordenamiento | Boolean | opcional, predeterminado: false | | orderable | Habilitar reordenamiento | Boolean | opcional, predeterminado: false | | validate | Validación de elementos | Boolean | opcional, predeterminado: false | | orderProp | Propiedad de ordenamiento | String | opcional, predeterminado: "order" | | createMultipart | Crear elementos multipart | Boolean | opcional, predeterminado: false | | apiUrl | URL base de la API | String | opcional, predeterminado: "/api" | | search | Término de búsqueda | String | opcional, predeterminado: "" | | hideModalAfterSave | Ocultar modal después de guardar | Boolean | opcional, predeterminado: true | | refreshAfterSave | Actualizar después de guardar | Boolean | opcional, predeterminado: true | | showPaginator | Mostrar paginador | Boolean | opcional, predeterminado: true | | showCreateBtn | Mostrar botón de creación | Boolean | opcional, predeterminado: true | | showSearch | Mostrar campo de búsqueda | Boolean | opcional, predeterminado: true | | showHeader | Mostrar encabezado | Boolean | opcional, predeterminado: true | | showTitle | Mostrar título | Boolean | opcional, predeterminado: true | | limit | Elementos por página | Number | opcional, predeterminado: 20 | | displayMode | Modo de visualización | Number | opcional, predeterminado: 1 | | displayModeToggler | Habilitar cambio de modo | Boolean | opcional, predeterminado: false | | colXs | Columnas en pantallas XS | Number | opcional, predeterminado: 12 | | colSm | Columnas en pantallas SM | Number | opcional, predeterminado: 12 | | colMd | Columnas en pantallas MD | Number | opcional, predeterminado: 6 | | colLg | Columnas en pantallas LG | Number | opcional, predeterminado: 4 | | colXl | Columnas en pantallas XL | Number | opcional, predeterminado: 3 | | selectHover | Seleccionar al pasar el mouse | Boolean | opcional, predeterminado: false | | selectClick | Seleccionar al hacer clic | Boolean | opcional, predeterminado: false | | cardClass | Clase de tarjeta | String | opcional, predeterminado: "" | | listContainerClass | Clase de contenedor de lista | String | opcional, predeterminado: "" | | listItemClass | Clase de elemento de lista | String | opcional, predeterminado: "" | | cardHideFooter | Ocultar pie de tarjeta | Boolean | opcional, predeterminado: false | | searchPlaceholder | Marcador de posición de búsqueda | String | opcional, predeterminado: "Buscar..." | | tableContainerClass | Clase de contenedor de tabla | String | opcional, predeterminado: "" | | tableClass | Clase de tabla | String | opcional, predeterminado: "" | | grouped | Agrupar elementos | Boolean | opcional, predeterminado: false | | groupedAttribute | Atributo de agrupación | String | opcional, predeterminado: "name" | | groupedLabelPre | Etiqueta de grupo anterior | String | opcional, predeterminado: "" | | groupedLabelAfter | Etiqueta de grupo posterior | String | opcional, predeterminado: "" | | draggableGroup | Grupo arrastrable | String | opcional, predeterminado: "people" | | draggableOptions | Opciones de arrastre | Object | opcional, predeterminado: { clone: false } |

Messages

| Propiedad | Descripción | Tipo | Valor | |:------------------------|:------------------------------|:----------|:------------------------------------------------| | messageRemoveConfirm | Mensaje de confirmación de eliminación | String | opcional, predeterminado: "¿Está seguro de borrar este elemento?" | | messageRemove | Mensaje de eliminación | String | opcional, predeterminado: "BORRAR" | | messageNew | Mensaje de nuevo elemento | String | opcional, predeterminado: "Nuevo" | | messageEmptyResults | Mensaje de resultados vacíos | String | opcional, predeterminado: "No se han encontrado resultados" | | messageNoMore | Mensaje de fin de resultados | String | opcional, predeterminado: "No hay más elementos para mostrar." | | messageLoading | Mensaje de carga | String | opcional, predeterminado: "Cargando..." | | messageSave | Mensaje de guardar | String | opcional, predeterminado: "Guardar" | | messageDefaultValidationError | Mensaje de error de validación por defecto | String | opcional, predeterminado: "Por favor controle el formulario, contiene errores." |