UNPKG

jb-national-input

Version:
99 lines (66 loc) 4.65 kB
# jb-national-input [![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/jb-national-input) [![GitHub license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://raw.githubusercontent.com/javadbat/jb-national-input/main/LICENSE) [![NPM Version](https://img.shields.io/npm/v/jb-national-input)](https://www.npmjs.com/package/jb-national-input) ![GitHub Created At](https://img.shields.io/github/created-at/javadbat/jb-national-input) Iranian national code input (`کد ملی`) built on [`jb-input`](https://github.com/javadbat/jb-input). - Accepts Persian and English digits. - Blocks non-digit input. - Truncates input to 10 digits. - Stores `value` as English digits. - Adds ready-to-use Iranian national-code checksum validation. ## When to use Use `jb-national-input` when the field must collect an Iranian national code. Use [`jb-input`](https://github.com/javadbat/jb-input) for generic text fields and [`jb-mobile-input`](https://github.com/javadbat/jb-mobile-input) for Iranian mobile numbers. ## Demo - [CodePen](https://codepen.io/javadbat/pen/PorNxOw) - [Storybook](https://javadbat.github.io/design-system/?path=/story/components-form-elements-inputs-jbnationalinput) ## Using With JS Frameworks - [<img src="https://img.shields.io/badge/React.js-jb--national--input%2Freact-000.svg?logo=react&logoColor=%2361DAFB" height="30" />](https://github.com/javadbat/jb-national-input/tree/main/react) ## Installation ```sh npm install --save jb-national-input ``` ```js import 'jb-national-input'; ``` ```html <jb-national-input label="National code"></jb-national-input> ``` ## API `jb-national-input` extends `JBInputWebComponent`. For inherited attributes, properties, methods, events, slots, CSS parts, validation, and form behavior, see the [`jb-input` API documentation](https://github.com/javadbat/jb-input#api-reference). ## Value format `value` is always normalized to English digits and limited to 10 digits. `displayValue` is the filtered text shown in the input. If the user enters Persian digits, the display can keep Persian digits while `value` is normalized. ```js const nationalInput = document.querySelector('jb-national-input'); nationalInput.value = '۰۰۱۲۳۴۵۶۷۸'; console.log(nationalInput.value); // 0012345678 ``` ## Validation The component adds Iranian national-code checksum validation to the inherited `jb-input` validation flow. Empty value is valid unless `required` is set. ```html <jb-national-input required="National code is required"></jb-national-input> ``` ```js const isValid = document.querySelector('jb-national-input').reportValidity(); ``` ## Styling All styles are inherited from [`jb-input`](https://github.com/javadbat/jb-input) except this variable: | CSS variable name | description | | --- | --- | | `--jb-national-input-input-direction` | Direction of the inner input text. Default is `ltr`. | ## Related Docs - See [`jb-national-input/react`](https://github.com/javadbat/jb-national-input/tree/main/react) if you want to use this component as a React component. - See [`jb-input`](https://github.com/javadbat/jb-input) for inherited input API, events, validation, slots, and styling. - See [All JB Design System Component List](https://javadbat.github.io/design-system/) for more components. - Use [Contribution Guide](https://github.com/javadbat/design-system/blob/main/docs/contribution-guide.md) if you want to contribute to this component. ## AI agent notes - Import `jb-national-input` once before using `<jb-national-input>`. - Use this component for Iranian national codes; use `jb-input` for generic text. - Do not duplicate the inherited `jb-input` API in generated docs; link to [`jb-input` API documentation](https://github.com/javadbat/jb-input#api-reference). - Read `value` for normalized English-digit data. - Do not add custom national-code checksum validation; the component already includes it. - Style with inherited `jb-input` styling plus `--jb-national-input-input-direction`. - This package includes [`custom-elements.json`](./custom-elements.json) and points to it with the package.json `customElements` field. The field is documented by the Custom Elements Manifest project in [Referencing manifests from npm packages](https://github.com/webcomponents/custom-elements-manifest#referencing-manifests-from-npm-packages). - In `custom-elements.json`, `exports.kind: "js"` describes JavaScript/TypeScript exports and `exports.kind: "custom-element-definition"` maps the `jb-national-input` tag name to `JBNationalInputWebComponent`.