A plugin for Strapi that provides the ability to auto slugify a field for any content type

Overview

strapi-plugin-slugify

A plugin for Strapi that provides the ability to auto slugify a field for any content type. It also provides a findOne by slug endpoint as a utility.

Downloads Install size Package version

Requirements

The installation requirements are the same as Strapi itself and can be found in the documentation on the Quick Start page in the Prerequisites info card.

Supported Strapi versions

  • v4.x.x

NOTE: While this plugin may work with the older Strapi versions, they are not supported, it is always recommended to use the latest version of Strapi.

Installation

npm install strapi-plugin-slugify

# or

yarn add strapi-plugin-slugify

Configuration

The plugin configuration is stored in a config file located at ./config/plugins.js.

Please note that the field referenced in the configuration file must exist. You can add it using the Strapi Admin UI. Also note that adding a field at a later point in time will require you to unpublish, change, save and republish the entry/entries in order for this plugin to work correctly.

A sample configuration

module.exports = ({ env }) => ({
  // ...
  slugify: {
    enabled: true,
    config: {
      contentTypes: {
        article: {
          field: 'slug',
          references: 'title',
        },
      },
    },
  },
  // ...
});

This will listen for any record created or updated in the article content type and set a slugified value for the slug field automatically based on the title field.

Note that if you want to rewrite the same field (so title is both a reference and a slug) then you just put title for both the field and references properties.

IMPORTANT NOTE: Make sure any sensitive data is stored in env files.

Additional Requirement for GraphQL

Per #35 please ensure that the slugify plugin configuration is placed after the graphql plugin configuration.

The Complete Plugin Configuration Object

Property Description Type Default Required
contentTypes The Content Types to add auto slugification and search findOne by slug search utility to Object {} No
contentTypes[modelName] The model name of the content type (it is the singularName in the model schema) String N/A Yes
contentTypes[modelName]field The name of the field to add the slug String N/A Yes
contentTypes[modelName]references The name(s) of the field(s) used to build the slug. If an array of fields is set it will result in a compound slug String or Array N/A Yes
slugifyWithCount Duplicate strings will have their occurrence appended to the end of the slug Boolean false No
skipUndefinedReferences Skip reference fields that have no data. Mostly applicable to compound slug Boolean false No
slugifyOptions The options to pass the the slugify function. All options can be found in the slugify docs Object {} No

Usage

Once the plugin has been installed, configured and enabled the configured content types will have the following additional functionality

Slugification

Any time the respective content types have an entity created or updated the slug field defined in the settings will be auto generated based on the provided reference field.

Find One by Slug

Hitting the /api/slugify/slugs/:modelName/:slug endpoint for any configured content types will return the entity type that matches the slug in the url. Additionally the endpoint accepts any of the parameters that can be added to the routes built into Strapi.

IMPORTANT The modelName is case sensitive and must match exactly with the name defined in the configuration.

Additional Requirements

Like all other created API endpoints the findSlug route must be allowed under User & Permissions -> Roles -> Public/Authenticated for the user to be able to access the route.

Examples

Example Request

Making the following request with the sample configuration will look as follows

REST

await fetch(`${API_URL}/api/slugify/slugs/article/lorem-ipsum-dolor`);
// GET /api/slugify/slugs/article/lorem-ipsum-dolor

GraphQL

{
  findSlug(modelName:"article",slug:"lorem-ipsum-dolor"){
    ... on ArticleEntityResponse{
      data{
        id
        attributes{
          title
        }
      }
    }
  }
}

Additionally if draftAndPublish is enabled for the content-type a publicationState arg can be passed to the GraphQL query that accepts either preview or live as input.

IMPORTANT Please beware that the request for an entry in preview will return both draft entries & published entries as per Strapi default.

{
  findSlug(modelName:"article",slug:"lorem-ipsum-dolor",publicationState:"preview"){
    ... on ArticleEntityResponse{
      data{
        id
        attributes{
          title
        }
      }
    }
  }
}

Example Response

If an article with the slug of lorem-ipsum-dolor exists the response will look the same as a single entity response

REST

Successful Response
{
  "data": {
    "id": 1,
    "attributes":{
      "title": "lorem ipsum dolor",
      "slug": "lorem-ipsum-dolor",
      "createdAt": "2022-02-17T01:49:31.961Z",
      "updatedAt": "2022-02-17T03:47:09.950Z",
      "publishedAt": null
    }
  }
}
Error Response

To be inline with Strapi's default behavior for single types if an article with the slug of lorem-ipsum-dolor does not exist a 404 error will be returned.

{
  "data": null,
  "error": { 
    "status": 404, 
    "name": "NotFoundError", 
    "message": "Not Found", 
    "details": {} 
  }
}

GraphQL

Successful Response
{
  "data": {
    "findSlug": {
      "data": {
        "id": "1",
        "attributes": {
          "title": "lorem ipsum dolor"
        }
      }
    }
  }
}
Error Response

To be inline with Strapi's default behavior for single types if an article with the slug of lorem-ipsum-dolor does not exist the data will be null.

{
  "data": {
    "findSlug": {
      "data": null
    }
  }
}

Bugs

If any bugs are found please report them as a Github Issue

Comments
  • slugification: unique slug field respected

    slugification: unique slug field respected

    I have this plugin setup like so.

    enabled: true,
        config: {
          contentTypes: {
            jam: {
              field: 'slug',
              references: 'title',
            }
          },
        },
    

    I do not want the title field to be unique. But I do want the slug fields to be so when I generate the slug field using the strapi content type builder I check the unique field.

    This is not respected when using this plugin and allows duplicate slugs to be generated.

    In order to allow for this situation I would recommend the following:

    If the field designated for the slug is flagged as unique provide a configuration option that allows the user to decide if a validation error should be thrown or if slugifyWithCounter() should be used .

    wontfix 
    opened by selected-pixel-jameson 15
  • slug with count

    slug with count

    When I add a slug with count, with references: title, for exemple. it changes the number each time I save the content, any field, so if someone bookmarks it, the link will not work if I update the content ...

    opened by spenya 10
  • Slugify and Strapiv4.1.2 with GraphQL -  'admin::permission' of undefined

    Slugify and Strapiv4.1.2 with GraphQL - 'admin::permission' of undefined

    • Error message:
    [2022-03-03 17:10:02.429] info: [slugify] graphql detected, registering queries
    [2022-03-03 17:10:03.035] debug: ⛔️ Server wasn't able to start properly.
    [2022-03-03 17:10:03.035] error: Cannot read property 'admin::permission' of undefined
    TypeError: Cannot read property 'admin::permission' of undefined
    at <folder>/node_modules/strapi-plugin-slugify/server/graphql/types.js:18:13
    at <folder>/node_modules/lodash/lodash.js:4967:15
    at baseForOwn (<folder>/node_modules/lodash/lodash.js:3032:24)
    at <folder>/node_modules/lodash/lodash.js:4936:18
    at Function.forEach (<folder>/node_modules/lodash/lodash.js:9410:14)
    at getCustomTypes (<folder>/node_modules/strapi-plugin-slugify/server/graphql/types.js:17:4)
    at extension (<folder>/node_modules/strapi-plugin-slugify/server/graphql/index.js:10:10)
    at resolveConfig (<folder>/node_modules/@strapi/plugin-graphql/server/services/extension/extension.js:54:47)
    at <folder>/node_modules/@strapi/plugin-graphql/server/services/extension/extension.js:59:74
    at Array.reduce (<anonymous>)
    at Object.generate (<folder>/node_modules/@strapi/plugin-graphql/server/services/extension/extension.js:58:22)
    at buildMergedSchema (<folder>/node_modules/@strapi/plugin-graphql/server/services/content-api/index.js:103:55)
    at Object.buildSchema (<folder>/node_modules/@strapi/plugin-graphql/server/services/content-api/index.js:54:20)
    at Object.module.exports [as bootstrap] (<folder>/node_modules/@strapi/plugin-graphql/server/bootstrap.js:26:6)
    at Object.bootstrap (<folder>/node_modules/@strapi/strapi/lib/core/domain/module/index.js:40:47)
    at Object.bootstrap (<folder>/node_modules/@strapi/strapi/lib/core/registries/modules.js:28:19)
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    
    • Sample package.json
        "@strapi/plugin-graphql": "^4.1.2",
        "@strapi/plugin-i18n": "4.1.2",
        "@strapi/plugin-users-permissions": "4.1.2",
        "@strapi/strapi": "4.1.2",
        "sqlite3": "5.0.2",
        "strapi-plugin-slugify": "^2.1.1"
    
    • No additional plugin configuration.

    • Sample repo: https://github.com/vmptk/strapi-slug

    opened by vmptk 10
  • Bug: SlugifyWithCount will continue to increase the count when saving models via the Admin

    Bug: SlugifyWithCount will continue to increase the count when saving models via the Admin

    I believe this pull request should resolve this issue.

    Note this will prevent the slug from changing at all once it's been generated, which is how this should work in my opinion. Once a slug has been generated the only way it should be able to be updated is manually since it could result in 404 errors if a redirect is not put in place.

    I've tested it when updating the referenced fields and when creating a new entity and it seems to be working correctly.

    This is the referenced issue. https://github.com/ComfortablyCoding/strapi-plugin-slugify/issues/60

    opened by selected-pixel-jameson 7
  • Can we override the API request for `slugify/slugs`

    Can we override the API request for `slugify/slugs`

    Is there a way to override the slugify/slugs endpoint? I have a specific use case where I want to perform additional security checks before returning a response.

    enhancement 
    opened by selected-pixel-jameson 7
  • The

    The "path" argument must be of type string. Received undefined

    Hello, I've been trying to setup the plugin, and it keeps failinf when running yarn develop

    I'm using Yarn version 4.1.3, and have Node 16.14.0

    Here is how I set up the configuration:

    slugify: {
      enabled: true,
      config: {
        contentTypes: {
          article: {
            field: 'slug',
            references: 'title',
          },
        },
      },
    },
    

    I also installed graphql, and tried to set the configuration before and after gql's configuration, but in vain.

    I get the following error:

    [2022-03-15 19:41:03.263] debug: ⛔️ Server wasn't able to start properly.
    [2022-03-15 19:41:03.264] error: The "path" argument must be of type string. Received undefined
    TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
        at new NodeError (node:internal/errors:371:5)
        at validateString (node:internal/validators:120:11)
        at join (node:path:1172:7)
        at Object.loadPlugins (/Users/joseph/DEV/overlord/api/node_modules/@strapi/strapi/lib/core/loaders/plugins/index.js:89:34)
        at async Strapi.loadPlugins (/Users/joseph/DEV/overlord/api/node_modules/@strapi/strapi/lib/Strapi.js:277:5)
        at async Promise.all (index 1)
        at async Strapi.register (/Users/joseph/DEV/overlord/api/node_modules/@strapi/strapi/lib/Strapi.js:309:5)
        at async Strapi.load (/Users/joseph/DEV/overlord/api/node_modules/@strapi/strapi/lib/Strapi.js:407:5)
        at async Strapi.start (/Users/joseph/DEV/overlord/api/node_modules/@strapi/strapi/lib/Strapi.js:161:9)
    error Command failed with exit code 1.
    

    I don't really know what I should do, if I need to delete my content type or if the error is from somewhere else?

    Thank you in advance

    opened by Drillan767 6
  • [enhancement] Compound slug

    [enhancement] Compound slug

    Add an option in the plugin config where you could add fields to put togheter for a slug. Maybe an array with fieldnames. The order of they are in the array should be how the compund slug is made.

    enhancement 
    opened by christher-lenander 6
  • slugifyWithCount is non persistent between project restarts

    slugifyWithCount is non persistent between project restarts

    I don't want duplicate slugs to be allowed in any capacity. However, I'm noticing that when the first duplicate slug is generated it doesn't append the correct -1 to it. For example:

    Title = "Test" Slug = "test"

    Title = "Test" ( In this case the slug should be generated as test-1, but it's not.) Slug = "test"

    Title = "Test" ( In this case the slug should come out as test-2) Slug = "test-2"

    So for some reason the first time a duplicate slug is generated the count is not getting attached to the generated slug. However, the next time a duplicate slug is generated the count is attached correctly.

    These are the setting I have `` slugify: { enabled: true, config: { slugifyWithCount: true, contentTypes: { jam: { field: 'slug', references: 'title', }, track: { field: 'slug', references: 'title' }, }, }, },

    
    I'm using the latest version `2.3.1`
    bug 
    opened by selected-pixel-jameson 5
  • When I use I18N, how should I use Slugify

    When I use I18N, how should I use Slugify

    I have content type.

    image

    The slug filed must be unique.But in different language environments, some words are spelled the same.

    For example, the spelling of English marketing is the same as that of German marketing. In this case, the slug should be the same, but the rules restrict that the slug can only be a unique value

    opened by NidMo 5
  • When calling the `slugify/slug` endpoint  with populate query values the data structure does not match the `findOne` endpoint.

    When calling the `slugify/slug` endpoint with populate query values the data structure does not match the `findOne` endpoint.

    If I pass 'populate' values into the query for relational values or component lists the values that come back do not have the same structure as the 'findOne' endpoint.

    For example if I call `/api/:model/:id?populate[0]=owner I get the following structure

    {
        "data": {
            "id": 45,
            "attributes": {
                "title": "Test Jam 1",
                "createdAt": "2022-02-28T21:26:16.504Z",
                "updatedAt": "2022-03-14T15:59:39.206Z",
                "publishedAt": "2022-02-28T21:26:16.478Z",
                "streamId": null,
                "status": null,
                "isPublic": false,
                "slug": "test-jam-1",
                "deletedOn": null,
                "deleted": false,
                "owner": {
                    "data": {
                        "id": 1,
                        "attributes": {
                            "username": "selectedpixel",
                            "email": "[email protected]",
                            "provider": "local",
                            "confirmed": true,
                            "blocked": false,
                            "createdAt": "2022-02-03T11:12:57.855Z",
                            "updatedAt": "2022-02-08T13:53:28.715Z",
                            "country": null
                        }
                    }
                }
            }
        },
        "meta": {}
    }
    

    If I make the same request using the slugify/slug endpoint I get the following:

    {
        "data": {
            "id": 45,
            "attributes": {
                "title": "Test Jam 1",
                "createdAt": "2022-02-28T21:26:16.504Z",
                "updatedAt": "2022-03-14T15:59:39.206Z",
                "publishedAt": "2022-02-28T21:26:16.478Z",
                "streamId": null,
                "status": null,
                "isPublic": false,
                "slug": "test-jam-1",
                "deletedOn": null,
                "deleted": false,
                "owner": {
                    "id": 1,
                    "username": "selectedpixel",
                    "email": "[email protected]",
                    "provider": "local",
                    "confirmed": true,
                    "blocked": false,
                    "createdAt": "2022-02-03T11:12:57.855Z",
                    "updatedAt": "2022-02-08T13:53:28.715Z",
                    "country": null
                }
            }
        },
        "meta": {}
    }
    

    Notice how the data and attributes fields are missing on the owner when using the slugify/slug endpoint? This will cause the need to create a completely separate response models on the client side for this endpoint vs. the standard findOne endpoint.

    bug 
    opened by selected-pixel-jameson 5
  • Localized slug bug?

    Localized slug bug?

    I note that if I enter the translated slug it does not find it, I think it would be a good idea to include this.

    Example: /api/slugify/slugs/article/dogs

    {
      "data": {
        "id": 1,
        "attributes":{
          "title": "LIttle dogs",
          "slug": "dogs",
          //....
        }
      }
    }
    
    

    Localized Example /api/slugify/slugs/article/perros

    {
      "data": null,
      "error": { 
        "status": 404, 
        "name": "NotFoundError", 
        "message": "Not Found", 
        "details": {} 
      }
    }
    
    
    opened by Neyunse 5
  • feat: add locale param option for gql

    feat: add locale param option for gql

    When translating my categories, quite a few are the same across different languages.

    Would it be possible to have an option to allow duplicated slugs and a "locale" option in the findSlug graphql method?

    enhancement 
    opened by gregghawes 5
Releases(2.3.2)
  • 2.3.2(Dec 8, 2022)

    What's Changed

    • fix(engines): incorrect engine range by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/87
    • fix(slugifyWithCount): persist slug count by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/82

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.3.1...2.3.2

    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Oct 25, 2022)

    What's Changed

    • feat(isValidModelField): add support for non model id field by @ComfortablyCoding
    • refactor: cleanup slug service and lifecycle functions by @ComfortablyCoding
    • fix(register): do not pass strapi instance to getPluginService by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/79

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.2.3...2.3.1

    Source code(tar.gz)
    Source code(zip)
  • 2.2.3(Aug 9, 2022)

    What's Changed

    • fix(slugification): do not update slug once generated by @selected-pixel-jameson in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/68

    New Contributors

    • @selected-pixel-jameson made their first contribution in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/68

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.2.2...2.2.3

    Source code(tar.gz)
    Source code(zip)
  • 2.2.2(Apr 8, 2022)

    What's Changed

    • fix(README): plugin order for gql should state before not after by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/48
    • fix(registration): error on install with gql by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/52

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.2.1...2.2.2

    Source code(tar.gz)
    Source code(zip)
  • 2.2.1(Mar 16, 2022)

    What's Changed

    • feat(graphql): add publicationState filter support by @DomDew in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/23
    • fix: broken check for draftAndPublished by @DomDew in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/36
    • chore(README): add plugin order note for gql by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/37
    • fix(slugController): incorrect relation response by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/42

    New Contributors

    • @DomDew made their first contribution in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/23

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.1.1...2.2.1

    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Mar 3, 2022)

    What's Changed

    • fix(findSlug utility): respect foreign model permissions by @ComfortablyCoding and @Convly in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/33

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.1.0...2.1.1

    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Mar 1, 2022)

    What's Changed

    • refactor(transformResponse): import from strapi by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/18
    • fix(slugController): sanitize response by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/19
    • feat(slugification): add slugify with count by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/21
    • feat(slugification): add compound references by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/22
    • chore(README): incorrect casing for slugifyWithCount setting by @ComfortablyCoding in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/26

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/2.0.0...2.1.0

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Feb 23, 2022)

    This release introduces the following changes:

    • feat: add graphql support
    • fix (findSlug query): default live publication state - BREAKING CHANGE
    • fix(README): format REST error response
    • chore(README) format examples
    • fix(graphql): error on invalid model
    • fix(findSlug REST): incorrect response format

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/1.0.1...2.0.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Feb 18, 2022)

    This release introduces the following changes:

    • some readme clarifications by @tpiros in https://github.com/ComfortablyCoding/strapi-plugin-slugify/pull/1
    • chore(README): add badges
    • refactor(slug-controller): error messages

    Full Changelog: https://github.com/ComfortablyCoding/strapi-plugin-slugify/compare/1.0.0...1.0.1

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Feb 17, 2022)

A plugin for Strapi Headless CMS that provides ability to sign-in/sign-up to an application by link had sent to email.

Strapi PasswordLess Plugin A plugin for Strapi Headless CMS that provides ability to sign-in/sign-up to an application by link had sent to email. A pl

Andrey Kucherenko 51 Dec 12, 2022
A plugin for Strapi Headless CMS that provides the ability to transform the API request or response.

strapi-plugin-transformer A plugin for Strapi that provides the ability to transform the API request and/or response. Requirements The installation re

daedalus 71 Jan 6, 2023
A JavaScript library allows showing/hiding "dependent" field(s) if the value of the “dependee” field matches the right condition.

MF Conditional Fields A JavaScript library that show/hide form elements based on the value of one field or many. Advantages Lightweight & fast. Comes

Ali Khallad 11 Aug 11, 2022
This web application is a type of a scoreboard showing the names and current scores of the leading competitors in any field which is using API's to get and set data

Leaderboard-project This web application is a type of a scoreboard showing the names and current scores of the leading competitors in any field which

Ravi Teja 5 Feb 11, 2022
A plugin for Strapi CMS that adds a preview button and live view button to the content manager edit view.

Strapi Preview Button A plugin for Strapi CMS that adds a preview button and live view button to the content manager edit view. Get Started Features I

Matt Milburn 53 Dec 30, 2022
☁️ Application using Node.js, AdonisJs, Adonis ACL, Adonis Kue Provider, Adonis Mail, Adonis Lucid Slugify, Adonis Validator, AdonisJs Redis, ESLint and pg

Node.js - SaaS ☁️ Application using Node.js, AdonisJs, Adonis ACL, Adonis Kue Provider, Adonis Mail, Adonis Lucid Slugify, Adonis Validator, AdonisJs

null 4 Aug 19, 2022
Visualize your Strapi content in month, week or daily view

Strapi Plugin Calendar Visualize your content in a map with month, weekly and daily view Demo Strapi Calendar Demo - Watch Video How to Install Copy t

Offset Development 20 Dec 9, 2022
The iofod SDK provides developers with the ability to interact with the main iofod interface within the Web worker, enabling rapid development of iofod extensions through the SDK.

iofod-sdk English | 简体中文 The iofod SDK provides developers with the ability to interact with the main iofod interface within the Web worker, enabling

iofod, Inc. 47 Oct 17, 2022
100% type-safe query builder for node-postgres :: Generated types, call any function, tree-shakable, implicit type casts, and more

⚠️ This library is currently in alpha. Contributors wanted! tusken Postgres client from a galaxy far, far away. your database is the source-of-truth f

alloc 54 Dec 29, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A Jquery plugin that allows user to enter multiple emails using one input field

multi-emails A Jquery plugin that allows user to enter multiple emails using one input field Usage $("...").multiEmails() Options color textColor font

null 1 Aug 26, 2022
A jquery plugin to determine when a user has stopped typing in a text field.

The official home for the TypeWatch jQuery plugin. TypeWatch calls a function when a user has typed text in an input, textarea and changes in div from

Denny Ferrassoli 221 Nov 3, 2022
This plugin integrates by default with Twitter bootstrap using badges to display the maximum lenght of the field where the user is inserting text. Uses the HTML5 attribute "maxlength" to work.

Bootstrap MaxLength This plugin integrates by default with Twitter bootstrap using badges to display the maximum length of the field where the user is

Maurizio 772 Dec 25, 2022
Strapi V4 Plugin to schedule publish and depublish actions

Strapi plugin scheduler This plugin allows you to publish and depublish collection types in the future. There are a couple of steps necessary to get t

Webbio 12 Nov 24, 2022
Basic types & utilities for Strapi v4 and plugin creators

Strapi v4 - Types & utilities Basic set of types and utilities for Strapi v4 and plugins creators A developers goodie for Strapi Headless CMS which pr

 VirtusLab Open-Source 7 Oct 14, 2022
a vscode extension for http response data auto transform ts type.

Api2ts 这是一个自动将 http 的响应数据转化为 ts 的类型,使用 json-to-ts 做的。 Features 框选配置项后,使用快捷键 alt+Q : 请求参数配置文件 在根目录下创建 Api2ts.config.json 文件,配置项如下: { "baseURL": "http

phy-lei 6 Jun 30, 2022