Bỏ qua, đến nội dung

@digiforce-nc/plugin-field-advanced

Plugin mở rộng các field nâng cao cho hệ thống — bổ sung giao diện number với pretty format, percent, hiển thị QR code, cùng nhiều cải tiến cho input/textarea/URL.

Plugin này làm gì?

Hãy hình dung: hệ thống đã có các field cơ bản (string, number...), nhưng thiếu những tùy chỉnh nâng cao như hiển thị số theo format đẹp (1,000,000), phần trăm với thanh progress, hay hiển thị giá trị dưới dạng QR code. Plugin này bổ sung tất cả — hoàn toàn ở phía client, không cần server xử lý thêm.

Ba khả năng chính

#Khả năngChi tiết
1Number pretty formatHiển thị số có separator (1,000,000), tuỳ locale, precision
2Percent fieldInput phần trăm với thanh progress hoặc badge
3Display as QR codeBiến giá trị field (URL, mã code...) thành hình QR để quét

Kiến trúc

Tổng quan

Plugin này là client-only — phần server hoàn toàn rỗng (empty plugin class). Toàn bộ logic nằm ở client: đăng ký field interface, component, settings form và hook.

Luồng hiển thị field nâng cao

Field Interfaces đăng ký

InterfaceMô tảComponent mặc định
input (mở rộng)Input chuỗi với các tuỳ chỉnh nâng caoInput
inputNumber (mở rộng)Số với pretty format, min/max, precisionInputNumber
percentPhần trăm — kế thừa từ inputNumberPercent
displayAsQRHiển thị giá trị dưới dạng QR codeQR Display

Components

ComponentChức năng
InputInput chuỗi nâng cao (hỗ trợ prefix, suffix, character count)
InputNumberInput số với format separator, precision, đơn vị
PercentInput phần trăm — tự nhân/chia 100 khi lưu/hiển thị
QR DisplayRender giá trị field thành QR code image

Custom Hooks

HookMô tả
useNumberPrettyFormatNhận giá trị số, trả về chuỗi format đẹp theo locale (1,000,000 hoặc 1.000.000)
useDisplayAsQRCodeNhận giá trị chuỗi, trả về QR code data URL để render hình ảnh

Settings forms

Plugin đăng ký settings form cho từng loại field, cho phép admin tuỳ chỉnh hành vi:

Settings groupCác tuỳ chọn
inputMax length, placeholder, prefix/suffix
textareaRows, max length, auto resize
urlValidate URL format, open in new tab
numberMin, max, precision, step, separator style
percentTương tự number + hiển thị progress bar
display-as-QRQR size, error correction level, foreground color

Ví dụ sử dụng

Cấu hình field number với pretty format

typescript
// Trong schema JSON, field price sẽ hiển thị theo format đẹp
const priceField = {
  name: 'price',
  type: 'double',
  interface: 'inputNumber',
  uiSchema: {
    'x-component': 'InputNumber',
    'x-component-props': {
      stringMode: true,
      step: '0.01',
      addonAfter: 'VND',
    },
  },
};

Thành phần client

Thành phầnMô tả
InputInput chuỗi nâng cao
InputNumberInput số với separator
PercentInput phần trăm
QR DisplayRender giá trị thành mã QR
useNumberPrettyFormatHook format số theo locale
useDisplayAsQRCodeHook chuyển giá trị thành QR

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework — đăng ký component và interface
@digiforce-nc/serverServer framework (peer) — plugin class rỗng

Mục lục chi tiết